[53/55] rs6000: Update altivec.h for automated interfaces

Message ID 73472f2fd31f8f848789c121708110d5cfb25494.1623941442.git.wschmidt@linux.ibm.com
State Superseded
Headers show
Series
  • Replace the Power target-specific builtin machinery
Related show

Commit Message

Jakub Jelinek via Gcc-patches June 17, 2021, 3:19 p.m.
2021-06-10  Bill Schmidt  <wschmidt@linux.ibm.com>

gcc/
	* config/rs6000/altivec.h: Delete a number of #defines that are
	now superfluous; include rs6000-vecdefines.h; include some
	synonyms.
---
 gcc/config/rs6000/altivec.h | 522 +++---------------------------------
 1 file changed, 41 insertions(+), 481 deletions(-)

-- 
2.27.0

Comments

Jakub Jelinek via Gcc-patches July 27, 2021, 9:07 p.m. | #1
On Thu, 2021-06-17 at 10:19 -0500, Bill Schmidt via Gcc-patches wrote:
> 2021-06-10  Bill Schmidt  <wschmidt@linux.ibm.com>

> 

> gcc/

> 	* config/rs6000/altivec.h: Delete a number of #defines that are

> 	now superfluous; include rs6000-vecdefines.h; include some

> 	synonyms.

> ---

>  gcc/config/rs6000/altivec.h | 522 +++-------------------------------

> --

>  1 file changed, 41 insertions(+), 481 deletions(-)

> 

> diff --git a/gcc/config/rs6000/altivec.h

> b/gcc/config/rs6000/altivec.h

> index 5b631c7ebaf..8daf933e53e 100644

> --- a/gcc/config/rs6000/altivec.h

> +++ b/gcc/config/rs6000/altivec.h

> @@ -55,32 +55,36 @@

>  #define __CR6_LT		2

>  #define __CR6_LT_REV		3

> 

> -/* Synonyms.  */

> +#include "rs6000-vecdefines.h"

> +

> +/* Deprecated interfaces.  */

> +#define vec_lvx vec_ld

> +#define vec_lvxl vec_ldl

> +#define vec_stvx vec_st

> +#define vec_stvxl vec_stl

>  #define vec_vaddcuw vec_addc

>  #define vec_vand vec_and

>  #define vec_vandc vec_andc

> -#define vec_vrfip vec_ceil

>  #define vec_vcmpbfp vec_cmpb

>  #define vec_vcmpgefp vec_cmpge

>  #define vec_vctsxs vec_cts

>  #define vec_vctuxs vec_ctu

>  #define vec_vexptefp vec_expte

> -#define vec_vrfim vec_floor

> -#define vec_lvx vec_ld

> -#define vec_lvxl vec_ldl

>  #define vec_vlogefp vec_loge

>  #define vec_vmaddfp vec_madd

>  #define vec_vmhaddshs vec_madds

> -#define vec_vmladduhm vec_mladd

>  #define vec_vmhraddshs vec_mradds

> +#define vec_vmladduhm vec_mladd

>  #define vec_vnmsubfp vec_nmsub

>  #define vec_vnor vec_nor

>  #define vec_vor vec_or

> -#define vec_vpkpx vec_packpx

>  #define vec_vperm vec_perm

> -#define vec_permxor __builtin_vec_vpermxor

> +#define vec_vpkpx vec_packpx

>  #define vec_vrefp vec_re

> +#define vec_vrfim vec_floor

>  #define vec_vrfin vec_round

> +#define vec_vrfip vec_ceil

> +#define vec_vrfiz vec_trunc

>  #define vec_vrsqrtefp vec_rsqrte

>  #define vec_vsel vec_sel

>  #define vec_vsldoi vec_sld

> @@ -91,440 +95,56 @@

>  #define vec_vspltisw vec_splat_s32

>  #define vec_vsr vec_srl

>  #define vec_vsro vec_sro

> -#define vec_stvx vec_st

> -#define vec_stvxl vec_stl

>  #define vec_vsubcuw vec_subc

>  #define vec_vsum2sws vec_sum2s

>  #define vec_vsumsws vec_sums

> -#define vec_vrfiz vec_trunc

>  #define vec_vxor vec_xor


Appears to be rearranged/alphabetized.. OK.

> +#ifdef _ARCH_PWR8

> +#define vec_vclz vec_cntlz

> +#define vec_vgbbd vec_gb

> +#define vec_vmrgew vec_mergee

> +#define vec_vmrgow vec_mergeo

> +#define vec_vpopcntu vec_popcnt

> +#define vec_vrld vec_rl

> +#define vec_vsld vec_sl

> +#define vec_vsrd vec_sr

> +#define vec_vsrad vec_sra

> +#endif



Does anything bad happen if these are simply defined, without the 
#ifdef/#endif protection? 
I'm wondering if there is some scenario with
pragma GCC target "cpu=powerX" where we may want them defined
anyway.  


Everything else appeears straightforward on this one, appears to be
mostly deletions. 

lgtm,
thanks
-Will


> +

> +#ifdef _ARCH_PWR9

> +#define vec_extract_fp_from_shorth vec_extract_fp32_from_shorth

> +#define vec_extract_fp_from_shortl vec_extract_fp32_from_shortl

> +#define vec_vctz vec_cnttz

> +#endif

> +

> +/* Synonyms.  */

>  /* Functions that are resolved by the backend to one of the

>     typed builtins.  */

> -#define vec_vaddfp __builtin_vec_vaddfp

> -#define vec_addc __builtin_vec_addc

> -#define vec_adde __builtin_vec_adde

> -#define vec_addec __builtin_vec_addec

> -#define vec_vaddsws __builtin_vec_vaddsws

> -#define vec_vaddshs __builtin_vec_vaddshs

> -#define vec_vaddsbs __builtin_vec_vaddsbs

> -#define vec_vavgsw __builtin_vec_vavgsw

> -#define vec_vavguw __builtin_vec_vavguw

> -#define vec_vavgsh __builtin_vec_vavgsh

> -#define vec_vavguh __builtin_vec_vavguh

> -#define vec_vavgsb __builtin_vec_vavgsb

> -#define vec_vavgub __builtin_vec_vavgub

> -#define vec_ceil __builtin_vec_ceil

> -#define vec_cmpb __builtin_vec_cmpb

> -#define vec_vcmpeqfp __builtin_vec_vcmpeqfp

> -#define vec_cmpge __builtin_vec_cmpge

> -#define vec_vcmpgtfp __builtin_vec_vcmpgtfp

> -#define vec_vcmpgtsw __builtin_vec_vcmpgtsw

> -#define vec_vcmpgtuw __builtin_vec_vcmpgtuw

> -#define vec_vcmpgtsh __builtin_vec_vcmpgtsh

> -#define vec_vcmpgtuh __builtin_vec_vcmpgtuh

> -#define vec_vcmpgtsb __builtin_vec_vcmpgtsb

> -#define vec_vcmpgtub __builtin_vec_vcmpgtub

> -#define vec_vcfsx __builtin_vec_vcfsx

> -#define vec_vcfux __builtin_vec_vcfux

> -#define vec_cts __builtin_vec_cts

> -#define vec_ctu __builtin_vec_ctu

> -#define vec_cpsgn __builtin_vec_copysign

> -#define vec_double __builtin_vec_double

> -#define vec_doublee __builtin_vec_doublee

> -#define vec_doubleo __builtin_vec_doubleo

> -#define vec_doublel __builtin_vec_doublel

> -#define vec_doubleh __builtin_vec_doubleh

> -#define vec_expte __builtin_vec_expte

> -#define vec_float __builtin_vec_float

> -#define vec_float2 __builtin_vec_float2

> -#define vec_floate __builtin_vec_floate

> -#define vec_floato __builtin_vec_floato

> -#define vec_floor __builtin_vec_floor

> -#define vec_loge __builtin_vec_loge

> -#define vec_madd __builtin_vec_madd

> -#define vec_madds __builtin_vec_madds

> -#define vec_mtvscr __builtin_vec_mtvscr

> -#define vec_reve __builtin_vec_vreve

> -#define vec_vmaxfp __builtin_vec_vmaxfp

> -#define vec_vmaxsw __builtin_vec_vmaxsw

> -#define vec_vmaxsh __builtin_vec_vmaxsh

> -#define vec_vmaxsb __builtin_vec_vmaxsb

> -#define vec_vminfp __builtin_vec_vminfp

> -#define vec_vminsw __builtin_vec_vminsw

> -#define vec_vminsh __builtin_vec_vminsh

> -#define vec_vminsb __builtin_vec_vminsb

> -#define vec_mradds __builtin_vec_mradds

> -#define vec_vmsumshm __builtin_vec_vmsumshm

> -#define vec_vmsumuhm __builtin_vec_vmsumuhm

> -#define vec_vmsummbm __builtin_vec_vmsummbm

> -#define vec_vmsumubm __builtin_vec_vmsumubm

> -#define vec_vmsumshs __builtin_vec_vmsumshs

> -#define vec_vmsumuhs __builtin_vec_vmsumuhs

> -#define vec_vmsumudm __builtin_vec_vmsumudm

> -#define vec_vmulesb __builtin_vec_vmulesb

> -#define vec_vmulesh __builtin_vec_vmulesh

> -#define vec_vmuleuh __builtin_vec_vmuleuh

> -#define vec_vmuleub __builtin_vec_vmuleub

> -#define vec_vmulosh __builtin_vec_vmulosh

> -#define vec_vmulouh __builtin_vec_vmulouh

> -#define vec_vmulosb __builtin_vec_vmulosb

> -#define vec_vmuloub __builtin_vec_vmuloub

> -#define vec_nmsub __builtin_vec_nmsub

> -#define vec_packpx __builtin_vec_packpx

> -#define vec_vpkswss __builtin_vec_vpkswss

> -#define vec_vpkuwus __builtin_vec_vpkuwus

> -#define vec_vpkshss __builtin_vec_vpkshss

> -#define vec_vpkuhus __builtin_vec_vpkuhus

> -#define vec_vpkswus __builtin_vec_vpkswus

> -#define vec_vpkshus __builtin_vec_vpkshus

> -#define vec_re __builtin_vec_re

> -#define vec_round __builtin_vec_round

> -#define vec_recipdiv __builtin_vec_recipdiv

> -#define vec_rlmi __builtin_vec_rlmi

> -#define vec_vrlnm __builtin_vec_rlnm

>  #define vec_rlnm(a,b,c) (__builtin_vec_rlnm((a),((c)<<8)|(b)))

> -#define vec_rsqrt __builtin_vec_rsqrt

> -#define vec_rsqrte __builtin_vec_rsqrte

> -#define vec_signed __builtin_vec_vsigned

> -#define vec_signed2 __builtin_vec_vsigned2

> -#define vec_signede __builtin_vec_vsignede

> -#define vec_signedo __builtin_vec_vsignedo

> -#define vec_unsigned __builtin_vec_vunsigned

> -#define vec_unsigned2 __builtin_vec_vunsigned2

> -#define vec_unsignede __builtin_vec_vunsignede

> -#define vec_unsignedo __builtin_vec_vunsignedo

> -#define vec_vsubfp __builtin_vec_vsubfp

> -#define vec_subc __builtin_vec_subc

> -#define vec_sube __builtin_vec_sube

> -#define vec_subec __builtin_vec_subec

> -#define vec_vsubsws __builtin_vec_vsubsws

> -#define vec_vsubshs __builtin_vec_vsubshs

> -#define vec_vsubsbs __builtin_vec_vsubsbs

> -#define vec_sum4s __builtin_vec_sum4s

> -#define vec_vsum4shs __builtin_vec_vsum4shs

> -#define vec_vsum4sbs __builtin_vec_vsum4sbs

> -#define vec_vsum4ubs __builtin_vec_vsum4ubs

> -#define vec_sum2s __builtin_vec_sum2s

> -#define vec_sums __builtin_vec_sums

> -#define vec_trunc __builtin_vec_trunc

> -#define vec_vupkhpx __builtin_vec_vupkhpx

> -#define vec_vupkhsh __builtin_vec_vupkhsh

> -#define vec_vupkhsb __builtin_vec_vupkhsb

> -#define vec_vupklpx __builtin_vec_vupklpx

> -#define vec_vupklsh __builtin_vec_vupklsh

> -#define vec_vupklsb __builtin_vec_vupklsb

> -#define vec_abs __builtin_vec_abs

> -#define vec_nabs __builtin_vec_nabs

> -#define vec_abss __builtin_vec_abss

> -#define vec_add __builtin_vec_add

> -#define vec_adds __builtin_vec_adds

> -#define vec_and __builtin_vec_and

> -#define vec_andc __builtin_vec_andc

> -#define vec_avg __builtin_vec_avg

> -#define vec_cmpeq __builtin_vec_cmpeq

> -#define vec_cmpne __builtin_vec_cmpne

> -#define vec_cmpgt __builtin_vec_cmpgt

> -#define vec_ctf __builtin_vec_ctf

> -#define vec_dst __builtin_vec_dst

> -#define vec_dstst __builtin_vec_dstst

> -#define vec_dststt __builtin_vec_dststt

> -#define vec_dstt __builtin_vec_dstt

> -#define vec_ld __builtin_vec_ld

> -#define vec_lde __builtin_vec_lde

> -#define vec_ldl __builtin_vec_ldl

> -#define vec_lvebx __builtin_vec_lvebx

> -#define vec_lvehx __builtin_vec_lvehx

> -#define vec_lvewx __builtin_vec_lvewx

> -#define vec_xl_zext __builtin_vec_ze_lxvrx

> -#define vec_xl_sext __builtin_vec_se_lxvrx

> -#define vec_xst_trunc __builtin_vec_tr_stxvrx

> -#define vec_neg __builtin_vec_neg

> -#define vec_pmsum_be __builtin_vec_vpmsum

> -#define vec_shasigma_be __builtin_crypto_vshasigma

> -/* Cell only intrinsics.  */

> -#ifdef __PPU__

> -#define vec_lvlx __builtin_vec_lvlx

> -#define vec_lvlxl __builtin_vec_lvlxl

> -#define vec_lvrx __builtin_vec_lvrx

> -#define vec_lvrxl __builtin_vec_lvrxl

> -#endif

> -#define vec_lvsl __builtin_vec_lvsl

> -#define vec_lvsr __builtin_vec_lvsr

> -#define vec_max __builtin_vec_max

> -#define vec_mergee __builtin_vec_vmrgew

> -#define vec_mergeh __builtin_vec_mergeh

> -#define vec_mergel __builtin_vec_mergel

> -#define vec_mergeo __builtin_vec_vmrgow

> -#define vec_min __builtin_vec_min

> -#define vec_mladd __builtin_vec_mladd

> -#define vec_msum __builtin_vec_msum

> -#define vec_msums __builtin_vec_msums

> -#define vec_mul __builtin_vec_mul

> -#define vec_mule __builtin_vec_mule

> -#define vec_mulo __builtin_vec_mulo

> -#define vec_nor __builtin_vec_nor

> -#define vec_or __builtin_vec_or

> -#define vec_pack __builtin_vec_pack

> -#define vec_packs __builtin_vec_packs

> -#define vec_packsu __builtin_vec_packsu

> -#define vec_perm __builtin_vec_perm

> -#define vec_rl __builtin_vec_rl

> -#define vec_sel __builtin_vec_sel

> -#define vec_sl __builtin_vec_sl

> -#define vec_sld __builtin_vec_sld

> -#define vec_sldw __builtin_vsx_xxsldwi

> -#define vec_sll __builtin_vec_sll

> -#define vec_slo __builtin_vec_slo

> -#define vec_splat __builtin_vec_splat

> -#define vec_sr __builtin_vec_sr

> -#define vec_sra __builtin_vec_sra

> -#define vec_srl __builtin_vec_srl

> -#define vec_sro __builtin_vec_sro

> -#define vec_st __builtin_vec_st

> -#define vec_ste __builtin_vec_ste

> -#define vec_stl __builtin_vec_stl

> -#define vec_stvebx __builtin_vec_stvebx

> -#define vec_stvehx __builtin_vec_stvehx

> -#define vec_stvewx __builtin_vec_stvewx

> -/* Cell only intrinsics.  */

> -#ifdef __PPU__

> -#define vec_stvlx __builtin_vec_stvlx

> -#define vec_stvlxl __builtin_vec_stvlxl

> -#define vec_stvrx __builtin_vec_stvrx

> -#define vec_stvrxl __builtin_vec_stvrxl

> -#endif

> -#define vec_sub __builtin_vec_sub

> -#define vec_subs __builtin_vec_subs

> -#define vec_sum __builtin_vec_sum

> -#define vec_unpackh __builtin_vec_unpackh

> -#define vec_unpackl __builtin_vec_unpackl

> -#define vec_vaddubm __builtin_vec_vaddubm

> -#define vec_vaddubs __builtin_vec_vaddubs

> -#define vec_vadduhm __builtin_vec_vadduhm

> -#define vec_vadduhs __builtin_vec_vadduhs

> -#define vec_vadduwm __builtin_vec_vadduwm

> -#define vec_vadduws __builtin_vec_vadduws

> -#define vec_vcmpequb __builtin_vec_vcmpequb

> -#define vec_vcmpequh __builtin_vec_vcmpequh

> -#define vec_vcmpequw __builtin_vec_vcmpequw

> -#define vec_vmaxub __builtin_vec_vmaxub

> -#define vec_vmaxuh __builtin_vec_vmaxuh

> -#define vec_vmaxuw __builtin_vec_vmaxuw

> -#define vec_vminub __builtin_vec_vminub

> -#define vec_vminuh __builtin_vec_vminuh

> -#define vec_vminuw __builtin_vec_vminuw

> -#define vec_vmrghb __builtin_vec_vmrghb

> -#define vec_vmrghh __builtin_vec_vmrghh

> -#define vec_vmrghw __builtin_vec_vmrghw

> -#define vec_vmrglb __builtin_vec_vmrglb

> -#define vec_vmrglh __builtin_vec_vmrglh

> -#define vec_vmrglw __builtin_vec_vmrglw

> -#define vec_vpkuhum __builtin_vec_vpkuhum

> -#define vec_vpkuwum __builtin_vec_vpkuwum

> -#define vec_vrlb __builtin_vec_vrlb

> -#define vec_vrlh __builtin_vec_vrlh

> -#define vec_vrlw __builtin_vec_vrlw

> -#define vec_vslb __builtin_vec_vslb

> -#define vec_vslh __builtin_vec_vslh

> -#define vec_vslw __builtin_vec_vslw

> -#define vec_vspltb __builtin_vec_vspltb

> -#define vec_vsplth __builtin_vec_vsplth

> -#define vec_vspltw __builtin_vec_vspltw

> -#define vec_vsrab __builtin_vec_vsrab

> -#define vec_vsrah __builtin_vec_vsrah

> -#define vec_vsraw __builtin_vec_vsraw

> -#define vec_vsrb __builtin_vec_vsrb

> -#define vec_vsrh __builtin_vec_vsrh

> -#define vec_vsrw __builtin_vec_vsrw

> -#define vec_vsububs __builtin_vec_vsububs

> -#define vec_vsububm __builtin_vec_vsububm

> -#define vec_vsubuhm __builtin_vec_vsubuhm

> -#define vec_vsubuhs __builtin_vec_vsubuhs

> -#define vec_vsubuwm __builtin_vec_vsubuwm

> -#define vec_vsubuws __builtin_vec_vsubuws

> -#define vec_xor __builtin_vec_xor

> -

> -#define vec_extract __builtin_vec_extract

> -#define vec_insert __builtin_vec_insert

> -#define vec_splats __builtin_vec_splats

> -#define vec_promote __builtin_vec_promote

> 

>  #ifdef __VSX__

>  /* VSX additions */

> -#define vec_div __builtin_vec_div

> -#define vec_mul __builtin_vec_mul

> -#define vec_msub __builtin_vec_msub

> -#define vec_nmadd __builtin_vec_nmadd

> -#define vec_nearbyint __builtin_vec_nearbyint

> -#define vec_rint __builtin_vec_rint

> -#define vec_sqrt __builtin_vec_sqrt

>  #define vec_vsx_ld __builtin_vec_vsx_ld

>  #define vec_vsx_st __builtin_vec_vsx_st

> -#define vec_xl __builtin_vec_vsx_ld

> -#define vec_xl_be __builtin_vec_xl_be

> -#define vec_xst __builtin_vec_vsx_st

> -#define vec_xst_be __builtin_vec_xst_be

> -

> -/* Note, xxsldi and xxpermdi were added as __builtin_vsx_<xxx>

> functions

> -   instead of __builtin_vec_<xxx>  */

> -#define vec_xxsldwi __builtin_vsx_xxsldwi

> -#define vec_xxpermdi __builtin_vsx_xxpermdi

> -#endif

> -

> -#ifdef _ARCH_PWR8

> -/* Vector additions added in ISA 2.07.  */

> -#define vec_eqv __builtin_vec_eqv

> -#define vec_nand __builtin_vec_nand

> -#define vec_orc __builtin_vec_orc

> -#define vec_vaddcuq __builtin_vec_vaddcuq

> -#define vec_vaddudm __builtin_vec_vaddudm

> -#define vec_vadduqm __builtin_vec_vadduqm

> -#define vec_vbpermq __builtin_vec_vbpermq

> -#define vec_bperm __builtin_vec_vbperm_api

> -#define vec_vclz __builtin_vec_vclz

> -#define vec_cntlz __builtin_vec_vclz

> -#define vec_vclzb __builtin_vec_vclzb

> -#define vec_vclzd __builtin_vec_vclzd

> -#define vec_vclzh __builtin_vec_vclzh

> -#define vec_vclzw __builtin_vec_vclzw

> -#define vec_vaddecuq __builtin_vec_vaddecuq

> -#define vec_vaddeuqm __builtin_vec_vaddeuqm

> -#define vec_vsubecuq __builtin_vec_vsubecuq

> -#define vec_vsubeuqm __builtin_vec_vsubeuqm

> -#define vec_vgbbd __builtin_vec_vgbbd

> -#define vec_gb __builtin_vec_vgbbd

> -#define vec_vmaxsd __builtin_vec_vmaxsd

> -#define vec_vmaxud __builtin_vec_vmaxud

> -#define vec_vminsd __builtin_vec_vminsd

> -#define vec_vminud __builtin_vec_vminud

> -#define vec_vmrgew __builtin_vec_vmrgew

> -#define vec_vmrgow __builtin_vec_vmrgow

> -#define vec_vpksdss __builtin_vec_vpksdss

> -#define vec_vpksdus __builtin_vec_vpksdus

> -#define vec_vpkudum __builtin_vec_vpkudum

> -#define vec_vpkudus __builtin_vec_vpkudus

> -#define vec_vpopcnt __builtin_vec_vpopcnt

> -#define vec_vpopcntb __builtin_vec_vpopcntb

> -#define vec_vpopcntd __builtin_vec_vpopcntd

> -#define vec_vpopcnth __builtin_vec_vpopcnth

> -#define vec_vpopcntw __builtin_vec_vpopcntw

> -#define vec_popcnt __builtin_vec_vpopcntu

> -#define vec_vrld __builtin_vec_vrld

> -#define vec_vsld __builtin_vec_vsld

> -#define vec_vsrad __builtin_vec_vsrad

> -#define vec_vsrd __builtin_vec_vsrd

> -#define vec_vsubcuq __builtin_vec_vsubcuq

> -#define vec_vsubudm __builtin_vec_vsubudm

> -#define vec_vsubuqm __builtin_vec_vsubuqm

> -#define vec_vupkhsw __builtin_vec_vupkhsw

> -#define vec_vupklsw __builtin_vec_vupklsw

> -#define vec_revb __builtin_vec_revb

> -#define vec_sbox_be __builtin_crypto_vsbox_be

> -#define vec_cipher_be __builtin_crypto_vcipher_be

> -#define vec_cipherlast_be __builtin_crypto_vcipherlast_be

> -#define vec_ncipher_be __builtin_crypto_vncipher_be

> -#define vec_ncipherlast_be __builtin_crypto_vncipherlast_be

> -#endif

> -

> -#ifdef __POWER9_VECTOR__

> -/* Vector additions added in ISA 3.0.  */

> -#define vec_first_match_index __builtin_vec_first_match_index

> -#define vec_first_match_or_eos_index

> __builtin_vec_first_match_or_eos_index

> -#define vec_first_mismatch_index __builtin_vec_first_mismatch_index

> -#define vec_first_mismatch_or_eos_index

> __builtin_vec_first_mismatch_or_eos_index

> -#define vec_pack_to_short_fp32 __builtin_vec_convert_4f32_8f16

> -#define vec_parity_lsbb __builtin_vec_vparity_lsbb

> -#define vec_vctz __builtin_vec_vctz

> -#define vec_cnttz __builtin_vec_vctz

> -#define vec_vctzb __builtin_vec_vctzb

> -#define vec_vctzd __builtin_vec_vctzd

> -#define vec_vctzh __builtin_vec_vctzh

> -#define vec_vctzw __builtin_vec_vctzw

> -#define vec_extract4b __builtin_vec_extract4b

> -#define vec_insert4b __builtin_vec_insert4b

> -#define vec_vprtyb __builtin_vec_vprtyb

> -#define vec_vprtybd __builtin_vec_vprtybd

> -#define vec_vprtybw __builtin_vec_vprtybw

> -

> -#ifdef _ARCH_PPC64

> -#define vec_vprtybq __builtin_vec_vprtybq

> -#endif

> -

> -#define vec_absd __builtin_vec_vadu

> -#define vec_absdb __builtin_vec_vadub

> -#define vec_absdh __builtin_vec_vaduh

> -#define vec_absdw __builtin_vec_vaduw

> -

> -#define vec_slv __builtin_vec_vslv

> -#define vec_srv __builtin_vec_vsrv

> -

> -#define vec_extract_exp __builtin_vec_extract_exp

> -#define vec_extract_sig __builtin_vec_extract_sig

> -#define vec_insert_exp __builtin_vec_insert_exp

> -#define vec_test_data_class __builtin_vec_test_data_class

> -

> -#define vec_extract_fp_from_shorth

> __builtin_vec_vextract_fp_from_shorth

> -#define vec_extract_fp_from_shortl

> __builtin_vec_vextract_fp_from_shortl

> -#define vec_extract_fp32_from_shorth

> __builtin_vec_vextract_fp_from_shorth

> -#define vec_extract_fp32_from_shortl

> __builtin_vec_vextract_fp_from_shortl

> -

> -#define scalar_extract_exp __builtin_vec_scalar_extract_exp

> -#define scalar_extract_sig __builtin_vec_scalar_extract_sig

> -#define scalar_insert_exp __builtin_vec_scalar_insert_exp

> -#define scalar_test_data_class __builtin_vec_scalar_test_data_class

> -#define scalar_test_neg __builtin_vec_scalar_test_neg

> -

> -#define scalar_cmp_exp_gt __builtin_vec_scalar_cmp_exp_gt

> -#define scalar_cmp_exp_lt __builtin_vec_scalar_cmp_exp_lt

> -#define scalar_cmp_exp_eq __builtin_vec_scalar_cmp_exp_eq

> -#define scalar_cmp_exp_unordered

> __builtin_vec_scalar_cmp_exp_unordered

> -

> -#ifdef _ARCH_PPC64

> -#define vec_xl_len __builtin_vec_lxvl

> -#define vec_xst_len __builtin_vec_stxvl

> -#define vec_xl_len_r __builtin_vec_xl_len_r

> -#define vec_xst_len_r __builtin_vec_xst_len_r

> -#endif

> +#define __builtin_vec_xl __builtin_vec_vsx_ld

> +#define __builtin_vec_xst __builtin_vec_vsx_st

> 

> -#define vec_cmpnez __builtin_vec_vcmpnez

> -

> -#define vec_cntlz_lsbb __builtin_vec_vclzlsbb

> -#define vec_cnttz_lsbb __builtin_vec_vctzlsbb

> -

> -#define vec_test_lsbb_all_ones __builtin_vec_xvtlsbb_all_ones

> -#define vec_test_lsbb_all_zeros __builtin_vec_xvtlsbb_all_zeros

> -

> -#define vec_xlx __builtin_vec_vextulx

> -#define vec_xrx __builtin_vec_vexturx

> -#define vec_signexti  __builtin_vec_vsignexti

> -#define vec_signextll __builtin_vec_vsignextll

> -

> -#endif

> -

> -/* BCD builtins, map ABI builtin name to existing builtin name.  */

> -#define __builtin_bcdadd     __builtin_vec_bcdadd

> -#define __builtin_bcdadd_lt  __builtin_vec_bcdadd_lt

> -#define __builtin_bcdadd_eq  __builtin_vec_bcdadd_eq

> -#define __builtin_bcdadd_gt  __builtin_vec_bcdadd_gt

>  #define __builtin_bcdadd_ofl __builtin_vec_bcdadd_ov

> -#define __builtin_bcdadd_ov  __builtin_vec_bcdadd_ov

> -#define __builtin_bcdsub     __builtin_vec_bcdsub

> -#define __builtin_bcdsub_lt  __builtin_vec_bcdsub_lt

> -#define __builtin_bcdsub_eq  __builtin_vec_bcdsub_eq

> -#define __builtin_bcdsub_gt  __builtin_vec_bcdsub_gt

>  #define __builtin_bcdsub_ofl __builtin_vec_bcdsub_ov

> -#define __builtin_bcdsub_ov  __builtin_vec_bcdsub_ov

> -#define __builtin_bcdinvalid __builtin_vec_bcdinvalid

> -#define __builtin_bcdmul10   __builtin_vec_bcdmul10

> -#define __builtin_bcddiv10   __builtin_vec_bcddiv10

> -#define __builtin_bcd2dfp    __builtin_vec_denb2dfp

>  #define __builtin_bcdcmpeq(a,b)   __builtin_vec_bcdsub_eq(a,b,0)

>  #define __builtin_bcdcmpgt(a,b)   __builtin_vec_bcdsub_gt(a,b,0)

>  #define __builtin_bcdcmplt(a,b)   __builtin_vec_bcdsub_lt(a,b,0)

>  #define __builtin_bcdcmpge(a,b)   __builtin_vec_bcdsub_ge(a,b,0)

>  #define __builtin_bcdcmple(a,b)   __builtin_vec_bcdsub_le(a,b,0)

> +#endif

> 

> +#ifdef _ARCH_PWR10

> +#define __builtin_vec_se_lxvrx __builtin_vec_xl_sext

> +#define __builtin_vec_tr_stxvrx __builtin_vec_xst_trunc

> +#define __builtin_vec_ze_lxvrx __builtin_vec_xl_zext

> +#define __builtin_vsx_xxpermx __builtin_vec_xxpermx

> +#endif

> 

>  /* Predicates.

>     For C++, we use templates in order to allow non-parenthesized

> arguments.

> @@ -700,14 +320,9 @@ __altivec_scalar_pred(vec_any_nle,

>  #define vec_any_nle(a1, a2) __builtin_vec_vcmpge_p (__CR6_LT_REV,

> (a2), (a1))

>  #endif

> 



> -/* These do not accept vectors, so they do not have a

> __builtin_vec_*

> -   counterpart.  */

> +/* Miscellaneous definitions.  */

>  #define vec_dss(x) __builtin_altivec_dss((x))

>  #define vec_dssall() __builtin_altivec_dssall ()

> -#define vec_mfvscr() ((__vector unsigned short)

> __builtin_altivec_mfvscr ())

> -#define vec_splat_s8(x) __builtin_altivec_vspltisb ((x))

> -#define vec_splat_s16(x) __builtin_altivec_vspltish ((x))

> -#define vec_splat_s32(x) __builtin_altivec_vspltisw ((x))

>  #define vec_splat_u8(x) ((__vector unsigned char) vec_splat_s8

> ((x)))

>  #define vec_splat_u16(x) ((__vector unsigned short) vec_splat_s16

> ((x)))

>  #define vec_splat_u32(x) ((__vector unsigned int) vec_splat_s32

> ((x)))

> @@ -716,59 +331,4 @@ __altivec_scalar_pred(vec_any_nle,

>     to #define vec_step to __builtin_vec_step.  */

>  #define vec_step(x) __builtin_vec_step (* (__typeof__ (x) *) 0)

> 

> -#ifdef _ARCH_PWR10

> -#define vec_signextq  __builtin_vec_vsignextq

> -#define vec_dive __builtin_vec_dive

> -#define vec_mod  __builtin_vec_mod

> -

> -/* May modify these macro definitions if future capabilities

> overload

> -   with support for different vector argument and result types.  */

> -#define vec_cntlzm(a, b)	__builtin_altivec_vclzdm (a, b)

> -#define vec_cnttzm(a, b)	__builtin_altivec_vctzdm (a, b)

> -#define vec_pdep(a, b)	__builtin_altivec_vpdepd (a, b)

> -#define vec_pext(a, b)	__builtin_altivec_vpextd (a, b)

> -#define vec_cfuge(a, b)	__builtin_altivec_vcfuged (a, b)

> -#define vec_genpcvm(a, b)	__builtin_vec_xxgenpcvm (a, b)

> -

> -/* Overloaded built-in functions for ISA 3.1.  */

> -#define vec_extractl(a, b, c)	__builtin_vec_extractl (a, b,

> c)

> -#define vec_extracth(a, b, c)	__builtin_vec_extracth (a, b,

> c)

> -#define vec_insertl(a, b, c)   __builtin_vec_insertl (a, b, c)

> -#define vec_inserth(a, b, c)   __builtin_vec_inserth (a, b, c)

> -#define vec_replace_elt(a, b, c)       __builtin_vec_replace_elt (a,

> b, c)

> -#define vec_replace_unaligned(a, b, c) __builtin_vec_replace_un (a,

> b, c)

> -#define vec_sldb(a, b, c)      __builtin_vec_sldb (a, b, c)

> -#define vec_srdb(a, b, c)      __builtin_vec_srdb (a, b, c)

> -#define vec_splati(a)  __builtin_vec_xxspltiw (a)

> -#define vec_splatid(a) __builtin_vec_xxspltid (a)

> -#define vec_splati_ins(a, b, c)        __builtin_vec_xxsplti32dx (a,

> b, c)

> -#define vec_blendv(a, b, c)    __builtin_vec_xxblend (a, b, c)

> -#define vec_permx(a, b, c, d)  __builtin_vec_xxpermx (a, b, c, d)

> -

> -#define vec_gnb(a, b)	__builtin_vec_gnb (a, b)

> -#define vec_clrl(a, b)	__builtin_vec_clrl (a, b)

> -#define vec_clrr(a, b)	__builtin_vec_clrr (a, b)

> -#define vec_ternarylogic(a, b, c, d)	__builtin_vec_xxeval (a, b, c,

> d)

> -

> -#define vec_strir(a)	__builtin_vec_strir (a)

> -#define vec_stril(a)	__builtin_vec_stril (a)

> -

> -#define vec_strir_p(a)	__builtin_vec_strir_p (a)

> -#define vec_stril_p(a)	__builtin_vec_stril_p (a)

> -

> -#define vec_mulh(a, b) __builtin_vec_mulh ((a), (b))

> -#define vec_dive(a, b) __builtin_vec_dive ((a), (b))

> -#define vec_mod(a, b) __builtin_vec_mod ((a), (b))

> -

> -/* VSX Mask Manipulation builtin. */

> -#define vec_genbm __builtin_vec_mtvsrbm

> -#define vec_genhm __builtin_vec_mtvsrhm

> -#define vec_genwm __builtin_vec_mtvsrwm

> -#define vec_gendm __builtin_vec_mtvsrdm

> -#define vec_genqm __builtin_vec_mtvsrqm

> -#define vec_cntm __builtin_vec_cntm

> -#define vec_expandm __builtin_vec_vexpandm

> -#define vec_extractm __builtin_vec_vextractm

> -#endif

> -

>  #endif /* _ALTIVEC_H */
Jakub Jelinek via Gcc-patches July 28, 2021, 8:58 p.m. | #2
Hi Will,

On 7/27/21 4:07 PM, will schmidt wrote:
> On Thu, 2021-06-17 at 10:19 -0500, Bill Schmidt via Gcc-patches wrote:

>> 2021-06-10  Bill Schmidt  <wschmidt@linux.ibm.com>

>>

>> gcc/

>> 	* config/rs6000/altivec.h: Delete a number of #defines that are

>> 	now superfluous; include rs6000-vecdefines.h; include some

>> 	synonyms.

>> ---

>>   gcc/config/rs6000/altivec.h | 522 +++-------------------------------

>> --

>>   1 file changed, 41 insertions(+), 481 deletions(-)

>>

>> diff --git a/gcc/config/rs6000/altivec.h

>> b/gcc/config/rs6000/altivec.h

>> index 5b631c7ebaf..8daf933e53e 100644

>> --- a/gcc/config/rs6000/altivec.h

>> +++ b/gcc/config/rs6000/altivec.h

>> @@ -55,32 +55,36 @@

>>   #define __CR6_LT		2

>>   #define __CR6_LT_REV		3

>>

>> -/* Synonyms.  */

>> +#include "rs6000-vecdefines.h"

>> +

>> +/* Deprecated interfaces.  */

>> +#define vec_lvx vec_ld

>> +#define vec_lvxl vec_ldl

>> +#define vec_stvx vec_st

>> +#define vec_stvxl vec_stl

>>   #define vec_vaddcuw vec_addc

>>   #define vec_vand vec_and

>>   #define vec_vandc vec_andc

>> -#define vec_vrfip vec_ceil

>>   #define vec_vcmpbfp vec_cmpb

>>   #define vec_vcmpgefp vec_cmpge

>>   #define vec_vctsxs vec_cts

>>   #define vec_vctuxs vec_ctu

>>   #define vec_vexptefp vec_expte

>> -#define vec_vrfim vec_floor

>> -#define vec_lvx vec_ld

>> -#define vec_lvxl vec_ldl

>>   #define vec_vlogefp vec_loge

>>   #define vec_vmaddfp vec_madd

>>   #define vec_vmhaddshs vec_madds

>> -#define vec_vmladduhm vec_mladd

>>   #define vec_vmhraddshs vec_mradds

>> +#define vec_vmladduhm vec_mladd

>>   #define vec_vnmsubfp vec_nmsub

>>   #define vec_vnor vec_nor

>>   #define vec_vor vec_or

>> -#define vec_vpkpx vec_packpx

>>   #define vec_vperm vec_perm

>> -#define vec_permxor __builtin_vec_vpermxor

>> +#define vec_vpkpx vec_packpx

>>   #define vec_vrefp vec_re

>> +#define vec_vrfim vec_floor

>>   #define vec_vrfin vec_round

>> +#define vec_vrfip vec_ceil

>> +#define vec_vrfiz vec_trunc

>>   #define vec_vrsqrtefp vec_rsqrte

>>   #define vec_vsel vec_sel

>>   #define vec_vsldoi vec_sld

>> @@ -91,440 +95,56 @@

>>   #define vec_vspltisw vec_splat_s32

>>   #define vec_vsr vec_srl

>>   #define vec_vsro vec_sro

>> -#define vec_stvx vec_st

>> -#define vec_stvxl vec_stl

>>   #define vec_vsubcuw vec_subc

>>   #define vec_vsum2sws vec_sum2s

>>   #define vec_vsumsws vec_sums

>> -#define vec_vrfiz vec_trunc

>>   #define vec_vxor vec_xor

> Appears to be rearranged/alphabetized.. OK.

>

>> +#ifdef _ARCH_PWR8

>> +#define vec_vclz vec_cntlz

>> +#define vec_vgbbd vec_gb

>> +#define vec_vmrgew vec_mergee

>> +#define vec_vmrgow vec_mergeo

>> +#define vec_vpopcntu vec_popcnt

>> +#define vec_vrld vec_rl

>> +#define vec_vsld vec_sl

>> +#define vec_vsrd vec_sr

>> +#define vec_vsrad vec_sra

>> +#endif

>

> Does anything bad happen if these are simply defined, without the

> #ifdef/#endif protection?

> I'm wondering if there is some scenario with

> pragma GCC target "cpu=powerX" where we may want them defined

> anyway.



Yes, you're right about that.  We could run into such problems, I 
think.  I think it's best to always define these.  If the builtin isn't 
supported for the specific target configuration, it'll be flagged during 
the lookup process.

Good catch!  Thanks for the review!
Bill

>

>

> Everything else appeears straightforward on this one, appears to be

> mostly deletions.

>

> lgtm,

> thanks

> -Will

>

>

>> +

>> +#ifdef _ARCH_PWR9

>> +#define vec_extract_fp_from_shorth vec_extract_fp32_from_shorth

>> +#define vec_extract_fp_from_shortl vec_extract_fp32_from_shortl

>> +#define vec_vctz vec_cnttz

>> +#endif

>> +

>> +/* Synonyms.  */

>>   /* Functions that are resolved by the backend to one of the

>>      typed builtins.  */

>> -#define vec_vaddfp __builtin_vec_vaddfp

>> -#define vec_addc __builtin_vec_addc

>> -#define vec_adde __builtin_vec_adde

>> -#define vec_addec __builtin_vec_addec

>> -#define vec_vaddsws __builtin_vec_vaddsws

>> -#define vec_vaddshs __builtin_vec_vaddshs

>> -#define vec_vaddsbs __builtin_vec_vaddsbs

>> -#define vec_vavgsw __builtin_vec_vavgsw

>> -#define vec_vavguw __builtin_vec_vavguw

>> -#define vec_vavgsh __builtin_vec_vavgsh

>> -#define vec_vavguh __builtin_vec_vavguh

>> -#define vec_vavgsb __builtin_vec_vavgsb

>> -#define vec_vavgub __builtin_vec_vavgub

>> -#define vec_ceil __builtin_vec_ceil

>> -#define vec_cmpb __builtin_vec_cmpb

>> -#define vec_vcmpeqfp __builtin_vec_vcmpeqfp

>> -#define vec_cmpge __builtin_vec_cmpge

>> -#define vec_vcmpgtfp __builtin_vec_vcmpgtfp

>> -#define vec_vcmpgtsw __builtin_vec_vcmpgtsw

>> -#define vec_vcmpgtuw __builtin_vec_vcmpgtuw

>> -#define vec_vcmpgtsh __builtin_vec_vcmpgtsh

>> -#define vec_vcmpgtuh __builtin_vec_vcmpgtuh

>> -#define vec_vcmpgtsb __builtin_vec_vcmpgtsb

>> -#define vec_vcmpgtub __builtin_vec_vcmpgtub

>> -#define vec_vcfsx __builtin_vec_vcfsx

>> -#define vec_vcfux __builtin_vec_vcfux

>> -#define vec_cts __builtin_vec_cts

>> -#define vec_ctu __builtin_vec_ctu

>> -#define vec_cpsgn __builtin_vec_copysign

>> -#define vec_double __builtin_vec_double

>> -#define vec_doublee __builtin_vec_doublee

>> -#define vec_doubleo __builtin_vec_doubleo

>> -#define vec_doublel __builtin_vec_doublel

>> -#define vec_doubleh __builtin_vec_doubleh

>> -#define vec_expte __builtin_vec_expte

>> -#define vec_float __builtin_vec_float

>> -#define vec_float2 __builtin_vec_float2

>> -#define vec_floate __builtin_vec_floate

>> -#define vec_floato __builtin_vec_floato

>> -#define vec_floor __builtin_vec_floor

>> -#define vec_loge __builtin_vec_loge

>> -#define vec_madd __builtin_vec_madd

>> -#define vec_madds __builtin_vec_madds

>> -#define vec_mtvscr __builtin_vec_mtvscr

>> -#define vec_reve __builtin_vec_vreve

>> -#define vec_vmaxfp __builtin_vec_vmaxfp

>> -#define vec_vmaxsw __builtin_vec_vmaxsw

>> -#define vec_vmaxsh __builtin_vec_vmaxsh

>> -#define vec_vmaxsb __builtin_vec_vmaxsb

>> -#define vec_vminfp __builtin_vec_vminfp

>> -#define vec_vminsw __builtin_vec_vminsw

>> -#define vec_vminsh __builtin_vec_vminsh

>> -#define vec_vminsb __builtin_vec_vminsb

>> -#define vec_mradds __builtin_vec_mradds

>> -#define vec_vmsumshm __builtin_vec_vmsumshm

>> -#define vec_vmsumuhm __builtin_vec_vmsumuhm

>> -#define vec_vmsummbm __builtin_vec_vmsummbm

>> -#define vec_vmsumubm __builtin_vec_vmsumubm

>> -#define vec_vmsumshs __builtin_vec_vmsumshs

>> -#define vec_vmsumuhs __builtin_vec_vmsumuhs

>> -#define vec_vmsumudm __builtin_vec_vmsumudm

>> -#define vec_vmulesb __builtin_vec_vmulesb

>> -#define vec_vmulesh __builtin_vec_vmulesh

>> -#define vec_vmuleuh __builtin_vec_vmuleuh

>> -#define vec_vmuleub __builtin_vec_vmuleub

>> -#define vec_vmulosh __builtin_vec_vmulosh

>> -#define vec_vmulouh __builtin_vec_vmulouh

>> -#define vec_vmulosb __builtin_vec_vmulosb

>> -#define vec_vmuloub __builtin_vec_vmuloub

>> -#define vec_nmsub __builtin_vec_nmsub

>> -#define vec_packpx __builtin_vec_packpx

>> -#define vec_vpkswss __builtin_vec_vpkswss

>> -#define vec_vpkuwus __builtin_vec_vpkuwus

>> -#define vec_vpkshss __builtin_vec_vpkshss

>> -#define vec_vpkuhus __builtin_vec_vpkuhus

>> -#define vec_vpkswus __builtin_vec_vpkswus

>> -#define vec_vpkshus __builtin_vec_vpkshus

>> -#define vec_re __builtin_vec_re

>> -#define vec_round __builtin_vec_round

>> -#define vec_recipdiv __builtin_vec_recipdiv

>> -#define vec_rlmi __builtin_vec_rlmi

>> -#define vec_vrlnm __builtin_vec_rlnm

>>   #define vec_rlnm(a,b,c) (__builtin_vec_rlnm((a),((c)<<8)|(b)))

>> -#define vec_rsqrt __builtin_vec_rsqrt

>> -#define vec_rsqrte __builtin_vec_rsqrte

>> -#define vec_signed __builtin_vec_vsigned

>> -#define vec_signed2 __builtin_vec_vsigned2

>> -#define vec_signede __builtin_vec_vsignede

>> -#define vec_signedo __builtin_vec_vsignedo

>> -#define vec_unsigned __builtin_vec_vunsigned

>> -#define vec_unsigned2 __builtin_vec_vunsigned2

>> -#define vec_unsignede __builtin_vec_vunsignede

>> -#define vec_unsignedo __builtin_vec_vunsignedo

>> -#define vec_vsubfp __builtin_vec_vsubfp

>> -#define vec_subc __builtin_vec_subc

>> -#define vec_sube __builtin_vec_sube

>> -#define vec_subec __builtin_vec_subec

>> -#define vec_vsubsws __builtin_vec_vsubsws

>> -#define vec_vsubshs __builtin_vec_vsubshs

>> -#define vec_vsubsbs __builtin_vec_vsubsbs

>> -#define vec_sum4s __builtin_vec_sum4s

>> -#define vec_vsum4shs __builtin_vec_vsum4shs

>> -#define vec_vsum4sbs __builtin_vec_vsum4sbs

>> -#define vec_vsum4ubs __builtin_vec_vsum4ubs

>> -#define vec_sum2s __builtin_vec_sum2s

>> -#define vec_sums __builtin_vec_sums

>> -#define vec_trunc __builtin_vec_trunc

>> -#define vec_vupkhpx __builtin_vec_vupkhpx

>> -#define vec_vupkhsh __builtin_vec_vupkhsh

>> -#define vec_vupkhsb __builtin_vec_vupkhsb

>> -#define vec_vupklpx __builtin_vec_vupklpx

>> -#define vec_vupklsh __builtin_vec_vupklsh

>> -#define vec_vupklsb __builtin_vec_vupklsb

>> -#define vec_abs __builtin_vec_abs

>> -#define vec_nabs __builtin_vec_nabs

>> -#define vec_abss __builtin_vec_abss

>> -#define vec_add __builtin_vec_add

>> -#define vec_adds __builtin_vec_adds

>> -#define vec_and __builtin_vec_and

>> -#define vec_andc __builtin_vec_andc

>> -#define vec_avg __builtin_vec_avg

>> -#define vec_cmpeq __builtin_vec_cmpeq

>> -#define vec_cmpne __builtin_vec_cmpne

>> -#define vec_cmpgt __builtin_vec_cmpgt

>> -#define vec_ctf __builtin_vec_ctf

>> -#define vec_dst __builtin_vec_dst

>> -#define vec_dstst __builtin_vec_dstst

>> -#define vec_dststt __builtin_vec_dststt

>> -#define vec_dstt __builtin_vec_dstt

>> -#define vec_ld __builtin_vec_ld

>> -#define vec_lde __builtin_vec_lde

>> -#define vec_ldl __builtin_vec_ldl

>> -#define vec_lvebx __builtin_vec_lvebx

>> -#define vec_lvehx __builtin_vec_lvehx

>> -#define vec_lvewx __builtin_vec_lvewx

>> -#define vec_xl_zext __builtin_vec_ze_lxvrx

>> -#define vec_xl_sext __builtin_vec_se_lxvrx

>> -#define vec_xst_trunc __builtin_vec_tr_stxvrx

>> -#define vec_neg __builtin_vec_neg

>> -#define vec_pmsum_be __builtin_vec_vpmsum

>> -#define vec_shasigma_be __builtin_crypto_vshasigma

>> -/* Cell only intrinsics.  */

>> -#ifdef __PPU__

>> -#define vec_lvlx __builtin_vec_lvlx

>> -#define vec_lvlxl __builtin_vec_lvlxl

>> -#define vec_lvrx __builtin_vec_lvrx

>> -#define vec_lvrxl __builtin_vec_lvrxl

>> -#endif

>> -#define vec_lvsl __builtin_vec_lvsl

>> -#define vec_lvsr __builtin_vec_lvsr

>> -#define vec_max __builtin_vec_max

>> -#define vec_mergee __builtin_vec_vmrgew

>> -#define vec_mergeh __builtin_vec_mergeh

>> -#define vec_mergel __builtin_vec_mergel

>> -#define vec_mergeo __builtin_vec_vmrgow

>> -#define vec_min __builtin_vec_min

>> -#define vec_mladd __builtin_vec_mladd

>> -#define vec_msum __builtin_vec_msum

>> -#define vec_msums __builtin_vec_msums

>> -#define vec_mul __builtin_vec_mul

>> -#define vec_mule __builtin_vec_mule

>> -#define vec_mulo __builtin_vec_mulo

>> -#define vec_nor __builtin_vec_nor

>> -#define vec_or __builtin_vec_or

>> -#define vec_pack __builtin_vec_pack

>> -#define vec_packs __builtin_vec_packs

>> -#define vec_packsu __builtin_vec_packsu

>> -#define vec_perm __builtin_vec_perm

>> -#define vec_rl __builtin_vec_rl

>> -#define vec_sel __builtin_vec_sel

>> -#define vec_sl __builtin_vec_sl

>> -#define vec_sld __builtin_vec_sld

>> -#define vec_sldw __builtin_vsx_xxsldwi

>> -#define vec_sll __builtin_vec_sll

>> -#define vec_slo __builtin_vec_slo

>> -#define vec_splat __builtin_vec_splat

>> -#define vec_sr __builtin_vec_sr

>> -#define vec_sra __builtin_vec_sra

>> -#define vec_srl __builtin_vec_srl

>> -#define vec_sro __builtin_vec_sro

>> -#define vec_st __builtin_vec_st

>> -#define vec_ste __builtin_vec_ste

>> -#define vec_stl __builtin_vec_stl

>> -#define vec_stvebx __builtin_vec_stvebx

>> -#define vec_stvehx __builtin_vec_stvehx

>> -#define vec_stvewx __builtin_vec_stvewx

>> -/* Cell only intrinsics.  */

>> -#ifdef __PPU__

>> -#define vec_stvlx __builtin_vec_stvlx

>> -#define vec_stvlxl __builtin_vec_stvlxl

>> -#define vec_stvrx __builtin_vec_stvrx

>> -#define vec_stvrxl __builtin_vec_stvrxl

>> -#endif

>> -#define vec_sub __builtin_vec_sub

>> -#define vec_subs __builtin_vec_subs

>> -#define vec_sum __builtin_vec_sum

>> -#define vec_unpackh __builtin_vec_unpackh

>> -#define vec_unpackl __builtin_vec_unpackl

>> -#define vec_vaddubm __builtin_vec_vaddubm

>> -#define vec_vaddubs __builtin_vec_vaddubs

>> -#define vec_vadduhm __builtin_vec_vadduhm

>> -#define vec_vadduhs __builtin_vec_vadduhs

>> -#define vec_vadduwm __builtin_vec_vadduwm

>> -#define vec_vadduws __builtin_vec_vadduws

>> -#define vec_vcmpequb __builtin_vec_vcmpequb

>> -#define vec_vcmpequh __builtin_vec_vcmpequh

>> -#define vec_vcmpequw __builtin_vec_vcmpequw

>> -#define vec_vmaxub __builtin_vec_vmaxub

>> -#define vec_vmaxuh __builtin_vec_vmaxuh

>> -#define vec_vmaxuw __builtin_vec_vmaxuw

>> -#define vec_vminub __builtin_vec_vminub

>> -#define vec_vminuh __builtin_vec_vminuh

>> -#define vec_vminuw __builtin_vec_vminuw

>> -#define vec_vmrghb __builtin_vec_vmrghb

>> -#define vec_vmrghh __builtin_vec_vmrghh

>> -#define vec_vmrghw __builtin_vec_vmrghw

>> -#define vec_vmrglb __builtin_vec_vmrglb

>> -#define vec_vmrglh __builtin_vec_vmrglh

>> -#define vec_vmrglw __builtin_vec_vmrglw

>> -#define vec_vpkuhum __builtin_vec_vpkuhum

>> -#define vec_vpkuwum __builtin_vec_vpkuwum

>> -#define vec_vrlb __builtin_vec_vrlb

>> -#define vec_vrlh __builtin_vec_vrlh

>> -#define vec_vrlw __builtin_vec_vrlw

>> -#define vec_vslb __builtin_vec_vslb

>> -#define vec_vslh __builtin_vec_vslh

>> -#define vec_vslw __builtin_vec_vslw

>> -#define vec_vspltb __builtin_vec_vspltb

>> -#define vec_vsplth __builtin_vec_vsplth

>> -#define vec_vspltw __builtin_vec_vspltw

>> -#define vec_vsrab __builtin_vec_vsrab

>> -#define vec_vsrah __builtin_vec_vsrah

>> -#define vec_vsraw __builtin_vec_vsraw

>> -#define vec_vsrb __builtin_vec_vsrb

>> -#define vec_vsrh __builtin_vec_vsrh

>> -#define vec_vsrw __builtin_vec_vsrw

>> -#define vec_vsububs __builtin_vec_vsububs

>> -#define vec_vsububm __builtin_vec_vsububm

>> -#define vec_vsubuhm __builtin_vec_vsubuhm

>> -#define vec_vsubuhs __builtin_vec_vsubuhs

>> -#define vec_vsubuwm __builtin_vec_vsubuwm

>> -#define vec_vsubuws __builtin_vec_vsubuws

>> -#define vec_xor __builtin_vec_xor

>> -

>> -#define vec_extract __builtin_vec_extract

>> -#define vec_insert __builtin_vec_insert

>> -#define vec_splats __builtin_vec_splats

>> -#define vec_promote __builtin_vec_promote

>>

>>   #ifdef __VSX__

>>   /* VSX additions */

>> -#define vec_div __builtin_vec_div

>> -#define vec_mul __builtin_vec_mul

>> -#define vec_msub __builtin_vec_msub

>> -#define vec_nmadd __builtin_vec_nmadd

>> -#define vec_nearbyint __builtin_vec_nearbyint

>> -#define vec_rint __builtin_vec_rint

>> -#define vec_sqrt __builtin_vec_sqrt

>>   #define vec_vsx_ld __builtin_vec_vsx_ld

>>   #define vec_vsx_st __builtin_vec_vsx_st

>> -#define vec_xl __builtin_vec_vsx_ld

>> -#define vec_xl_be __builtin_vec_xl_be

>> -#define vec_xst __builtin_vec_vsx_st

>> -#define vec_xst_be __builtin_vec_xst_be

>> -

>> -/* Note, xxsldi and xxpermdi were added as __builtin_vsx_<xxx>

>> functions

>> -   instead of __builtin_vec_<xxx>  */

>> -#define vec_xxsldwi __builtin_vsx_xxsldwi

>> -#define vec_xxpermdi __builtin_vsx_xxpermdi

>> -#endif

>> -

>> -#ifdef _ARCH_PWR8

>> -/* Vector additions added in ISA 2.07.  */

>> -#define vec_eqv __builtin_vec_eqv

>> -#define vec_nand __builtin_vec_nand

>> -#define vec_orc __builtin_vec_orc

>> -#define vec_vaddcuq __builtin_vec_vaddcuq

>> -#define vec_vaddudm __builtin_vec_vaddudm

>> -#define vec_vadduqm __builtin_vec_vadduqm

>> -#define vec_vbpermq __builtin_vec_vbpermq

>> -#define vec_bperm __builtin_vec_vbperm_api

>> -#define vec_vclz __builtin_vec_vclz

>> -#define vec_cntlz __builtin_vec_vclz

>> -#define vec_vclzb __builtin_vec_vclzb

>> -#define vec_vclzd __builtin_vec_vclzd

>> -#define vec_vclzh __builtin_vec_vclzh

>> -#define vec_vclzw __builtin_vec_vclzw

>> -#define vec_vaddecuq __builtin_vec_vaddecuq

>> -#define vec_vaddeuqm __builtin_vec_vaddeuqm

>> -#define vec_vsubecuq __builtin_vec_vsubecuq

>> -#define vec_vsubeuqm __builtin_vec_vsubeuqm

>> -#define vec_vgbbd __builtin_vec_vgbbd

>> -#define vec_gb __builtin_vec_vgbbd

>> -#define vec_vmaxsd __builtin_vec_vmaxsd

>> -#define vec_vmaxud __builtin_vec_vmaxud

>> -#define vec_vminsd __builtin_vec_vminsd

>> -#define vec_vminud __builtin_vec_vminud

>> -#define vec_vmrgew __builtin_vec_vmrgew

>> -#define vec_vmrgow __builtin_vec_vmrgow

>> -#define vec_vpksdss __builtin_vec_vpksdss

>> -#define vec_vpksdus __builtin_vec_vpksdus

>> -#define vec_vpkudum __builtin_vec_vpkudum

>> -#define vec_vpkudus __builtin_vec_vpkudus

>> -#define vec_vpopcnt __builtin_vec_vpopcnt

>> -#define vec_vpopcntb __builtin_vec_vpopcntb

>> -#define vec_vpopcntd __builtin_vec_vpopcntd

>> -#define vec_vpopcnth __builtin_vec_vpopcnth

>> -#define vec_vpopcntw __builtin_vec_vpopcntw

>> -#define vec_popcnt __builtin_vec_vpopcntu

>> -#define vec_vrld __builtin_vec_vrld

>> -#define vec_vsld __builtin_vec_vsld

>> -#define vec_vsrad __builtin_vec_vsrad

>> -#define vec_vsrd __builtin_vec_vsrd

>> -#define vec_vsubcuq __builtin_vec_vsubcuq

>> -#define vec_vsubudm __builtin_vec_vsubudm

>> -#define vec_vsubuqm __builtin_vec_vsubuqm

>> -#define vec_vupkhsw __builtin_vec_vupkhsw

>> -#define vec_vupklsw __builtin_vec_vupklsw

>> -#define vec_revb __builtin_vec_revb

>> -#define vec_sbox_be __builtin_crypto_vsbox_be

>> -#define vec_cipher_be __builtin_crypto_vcipher_be

>> -#define vec_cipherlast_be __builtin_crypto_vcipherlast_be

>> -#define vec_ncipher_be __builtin_crypto_vncipher_be

>> -#define vec_ncipherlast_be __builtin_crypto_vncipherlast_be

>> -#endif

>> -

>> -#ifdef __POWER9_VECTOR__

>> -/* Vector additions added in ISA 3.0.  */

>> -#define vec_first_match_index __builtin_vec_first_match_index

>> -#define vec_first_match_or_eos_index

>> __builtin_vec_first_match_or_eos_index

>> -#define vec_first_mismatch_index __builtin_vec_first_mismatch_index

>> -#define vec_first_mismatch_or_eos_index

>> __builtin_vec_first_mismatch_or_eos_index

>> -#define vec_pack_to_short_fp32 __builtin_vec_convert_4f32_8f16

>> -#define vec_parity_lsbb __builtin_vec_vparity_lsbb

>> -#define vec_vctz __builtin_vec_vctz

>> -#define vec_cnttz __builtin_vec_vctz

>> -#define vec_vctzb __builtin_vec_vctzb

>> -#define vec_vctzd __builtin_vec_vctzd

>> -#define vec_vctzh __builtin_vec_vctzh

>> -#define vec_vctzw __builtin_vec_vctzw

>> -#define vec_extract4b __builtin_vec_extract4b

>> -#define vec_insert4b __builtin_vec_insert4b

>> -#define vec_vprtyb __builtin_vec_vprtyb

>> -#define vec_vprtybd __builtin_vec_vprtybd

>> -#define vec_vprtybw __builtin_vec_vprtybw

>> -

>> -#ifdef _ARCH_PPC64

>> -#define vec_vprtybq __builtin_vec_vprtybq

>> -#endif

>> -

>> -#define vec_absd __builtin_vec_vadu

>> -#define vec_absdb __builtin_vec_vadub

>> -#define vec_absdh __builtin_vec_vaduh

>> -#define vec_absdw __builtin_vec_vaduw

>> -

>> -#define vec_slv __builtin_vec_vslv

>> -#define vec_srv __builtin_vec_vsrv

>> -

>> -#define vec_extract_exp __builtin_vec_extract_exp

>> -#define vec_extract_sig __builtin_vec_extract_sig

>> -#define vec_insert_exp __builtin_vec_insert_exp

>> -#define vec_test_data_class __builtin_vec_test_data_class

>> -

>> -#define vec_extract_fp_from_shorth

>> __builtin_vec_vextract_fp_from_shorth

>> -#define vec_extract_fp_from_shortl

>> __builtin_vec_vextract_fp_from_shortl

>> -#define vec_extract_fp32_from_shorth

>> __builtin_vec_vextract_fp_from_shorth

>> -#define vec_extract_fp32_from_shortl

>> __builtin_vec_vextract_fp_from_shortl

>> -

>> -#define scalar_extract_exp __builtin_vec_scalar_extract_exp

>> -#define scalar_extract_sig __builtin_vec_scalar_extract_sig

>> -#define scalar_insert_exp __builtin_vec_scalar_insert_exp

>> -#define scalar_test_data_class __builtin_vec_scalar_test_data_class

>> -#define scalar_test_neg __builtin_vec_scalar_test_neg

>> -

>> -#define scalar_cmp_exp_gt __builtin_vec_scalar_cmp_exp_gt

>> -#define scalar_cmp_exp_lt __builtin_vec_scalar_cmp_exp_lt

>> -#define scalar_cmp_exp_eq __builtin_vec_scalar_cmp_exp_eq

>> -#define scalar_cmp_exp_unordered

>> __builtin_vec_scalar_cmp_exp_unordered

>> -

>> -#ifdef _ARCH_PPC64

>> -#define vec_xl_len __builtin_vec_lxvl

>> -#define vec_xst_len __builtin_vec_stxvl

>> -#define vec_xl_len_r __builtin_vec_xl_len_r

>> -#define vec_xst_len_r __builtin_vec_xst_len_r

>> -#endif

>> +#define __builtin_vec_xl __builtin_vec_vsx_ld

>> +#define __builtin_vec_xst __builtin_vec_vsx_st

>>

>> -#define vec_cmpnez __builtin_vec_vcmpnez

>> -

>> -#define vec_cntlz_lsbb __builtin_vec_vclzlsbb

>> -#define vec_cnttz_lsbb __builtin_vec_vctzlsbb

>> -

>> -#define vec_test_lsbb_all_ones __builtin_vec_xvtlsbb_all_ones

>> -#define vec_test_lsbb_all_zeros __builtin_vec_xvtlsbb_all_zeros

>> -

>> -#define vec_xlx __builtin_vec_vextulx

>> -#define vec_xrx __builtin_vec_vexturx

>> -#define vec_signexti  __builtin_vec_vsignexti

>> -#define vec_signextll __builtin_vec_vsignextll

>> -

>> -#endif

>> -

>> -/* BCD builtins, map ABI builtin name to existing builtin name.  */

>> -#define __builtin_bcdadd     __builtin_vec_bcdadd

>> -#define __builtin_bcdadd_lt  __builtin_vec_bcdadd_lt

>> -#define __builtin_bcdadd_eq  __builtin_vec_bcdadd_eq

>> -#define __builtin_bcdadd_gt  __builtin_vec_bcdadd_gt

>>   #define __builtin_bcdadd_ofl __builtin_vec_bcdadd_ov

>> -#define __builtin_bcdadd_ov  __builtin_vec_bcdadd_ov

>> -#define __builtin_bcdsub     __builtin_vec_bcdsub

>> -#define __builtin_bcdsub_lt  __builtin_vec_bcdsub_lt

>> -#define __builtin_bcdsub_eq  __builtin_vec_bcdsub_eq

>> -#define __builtin_bcdsub_gt  __builtin_vec_bcdsub_gt

>>   #define __builtin_bcdsub_ofl __builtin_vec_bcdsub_ov

>> -#define __builtin_bcdsub_ov  __builtin_vec_bcdsub_ov

>> -#define __builtin_bcdinvalid __builtin_vec_bcdinvalid

>> -#define __builtin_bcdmul10   __builtin_vec_bcdmul10

>> -#define __builtin_bcddiv10   __builtin_vec_bcddiv10

>> -#define __builtin_bcd2dfp    __builtin_vec_denb2dfp

>>   #define __builtin_bcdcmpeq(a,b)   __builtin_vec_bcdsub_eq(a,b,0)

>>   #define __builtin_bcdcmpgt(a,b)   __builtin_vec_bcdsub_gt(a,b,0)

>>   #define __builtin_bcdcmplt(a,b)   __builtin_vec_bcdsub_lt(a,b,0)

>>   #define __builtin_bcdcmpge(a,b)   __builtin_vec_bcdsub_ge(a,b,0)

>>   #define __builtin_bcdcmple(a,b)   __builtin_vec_bcdsub_le(a,b,0)

>> +#endif

>>

>> +#ifdef _ARCH_PWR10

>> +#define __builtin_vec_se_lxvrx __builtin_vec_xl_sext

>> +#define __builtin_vec_tr_stxvrx __builtin_vec_xst_trunc

>> +#define __builtin_vec_ze_lxvrx __builtin_vec_xl_zext

>> +#define __builtin_vsx_xxpermx __builtin_vec_xxpermx

>> +#endif

>>

>>   /* Predicates.

>>      For C++, we use templates in order to allow non-parenthesized

>> arguments.

>> @@ -700,14 +320,9 @@ __altivec_scalar_pred(vec_any_nle,

>>   #define vec_any_nle(a1, a2) __builtin_vec_vcmpge_p (__CR6_LT_REV,

>> (a2), (a1))

>>   #endif

>>

>

>> -/* These do not accept vectors, so they do not have a

>> __builtin_vec_*

>> -   counterpart.  */

>> +/* Miscellaneous definitions.  */

>>   #define vec_dss(x) __builtin_altivec_dss((x))

>>   #define vec_dssall() __builtin_altivec_dssall ()

>> -#define vec_mfvscr() ((__vector unsigned short)

>> __builtin_altivec_mfvscr ())

>> -#define vec_splat_s8(x) __builtin_altivec_vspltisb ((x))

>> -#define vec_splat_s16(x) __builtin_altivec_vspltish ((x))

>> -#define vec_splat_s32(x) __builtin_altivec_vspltisw ((x))

>>   #define vec_splat_u8(x) ((__vector unsigned char) vec_splat_s8

>> ((x)))

>>   #define vec_splat_u16(x) ((__vector unsigned short) vec_splat_s16

>> ((x)))

>>   #define vec_splat_u32(x) ((__vector unsigned int) vec_splat_s32

>> ((x)))

>> @@ -716,59 +331,4 @@ __altivec_scalar_pred(vec_any_nle,

>>      to #define vec_step to __builtin_vec_step.  */

>>   #define vec_step(x) __builtin_vec_step (* (__typeof__ (x) *) 0)

>>

>> -#ifdef _ARCH_PWR10

>> -#define vec_signextq  __builtin_vec_vsignextq

>> -#define vec_dive __builtin_vec_dive

>> -#define vec_mod  __builtin_vec_mod

>> -

>> -/* May modify these macro definitions if future capabilities

>> overload

>> -   with support for different vector argument and result types.  */

>> -#define vec_cntlzm(a, b)	__builtin_altivec_vclzdm (a, b)

>> -#define vec_cnttzm(a, b)	__builtin_altivec_vctzdm (a, b)

>> -#define vec_pdep(a, b)	__builtin_altivec_vpdepd (a, b)

>> -#define vec_pext(a, b)	__builtin_altivec_vpextd (a, b)

>> -#define vec_cfuge(a, b)	__builtin_altivec_vcfuged (a, b)

>> -#define vec_genpcvm(a, b)	__builtin_vec_xxgenpcvm (a, b)

>> -

>> -/* Overloaded built-in functions for ISA 3.1.  */

>> -#define vec_extractl(a, b, c)	__builtin_vec_extractl (a, b,

>> c)

>> -#define vec_extracth(a, b, c)	__builtin_vec_extracth (a, b,

>> c)

>> -#define vec_insertl(a, b, c)   __builtin_vec_insertl (a, b, c)

>> -#define vec_inserth(a, b, c)   __builtin_vec_inserth (a, b, c)

>> -#define vec_replace_elt(a, b, c)       __builtin_vec_replace_elt (a,

>> b, c)

>> -#define vec_replace_unaligned(a, b, c) __builtin_vec_replace_un (a,

>> b, c)

>> -#define vec_sldb(a, b, c)      __builtin_vec_sldb (a, b, c)

>> -#define vec_srdb(a, b, c)      __builtin_vec_srdb (a, b, c)

>> -#define vec_splati(a)  __builtin_vec_xxspltiw (a)

>> -#define vec_splatid(a) __builtin_vec_xxspltid (a)

>> -#define vec_splati_ins(a, b, c)        __builtin_vec_xxsplti32dx (a,

>> b, c)

>> -#define vec_blendv(a, b, c)    __builtin_vec_xxblend (a, b, c)

>> -#define vec_permx(a, b, c, d)  __builtin_vec_xxpermx (a, b, c, d)

>> -

>> -#define vec_gnb(a, b)	__builtin_vec_gnb (a, b)

>> -#define vec_clrl(a, b)	__builtin_vec_clrl (a, b)

>> -#define vec_clrr(a, b)	__builtin_vec_clrr (a, b)

>> -#define vec_ternarylogic(a, b, c, d)	__builtin_vec_xxeval (a, b, c,

>> d)

>> -

>> -#define vec_strir(a)	__builtin_vec_strir (a)

>> -#define vec_stril(a)	__builtin_vec_stril (a)

>> -

>> -#define vec_strir_p(a)	__builtin_vec_strir_p (a)

>> -#define vec_stril_p(a)	__builtin_vec_stril_p (a)

>> -

>> -#define vec_mulh(a, b) __builtin_vec_mulh ((a), (b))

>> -#define vec_dive(a, b) __builtin_vec_dive ((a), (b))

>> -#define vec_mod(a, b) __builtin_vec_mod ((a), (b))

>> -

>> -/* VSX Mask Manipulation builtin. */

>> -#define vec_genbm __builtin_vec_mtvsrbm

>> -#define vec_genhm __builtin_vec_mtvsrhm

>> -#define vec_genwm __builtin_vec_mtvsrwm

>> -#define vec_gendm __builtin_vec_mtvsrdm

>> -#define vec_genqm __builtin_vec_mtvsrqm

>> -#define vec_cntm __builtin_vec_cntm

>> -#define vec_expandm __builtin_vec_vexpandm

>> -#define vec_extractm __builtin_vec_vextractm

>> -#endif

>> -

>>   #endif /* _ALTIVEC_H */
Segher Boessenkool Aug. 4, 2021, 12:58 a.m. | #3
On Wed, Jul 28, 2021 at 03:58:02PM -0500, Bill Schmidt wrote:
> On 7/27/21 4:07 PM, will schmidt wrote:

> >On Thu, 2021-06-17 at 10:19 -0500, Bill Schmidt via Gcc-patches wrote:

> >>+#ifdef _ARCH_PWR8

> >>+#define vec_vclz vec_cntlz

> >>+#define vec_vgbbd vec_gb

> >>+#define vec_vmrgew vec_mergee

> >>+#define vec_vmrgow vec_mergeo

> >>+#define vec_vpopcntu vec_popcnt

> >>+#define vec_vrld vec_rl

> >>+#define vec_vsld vec_sl

> >>+#define vec_vsrd vec_sr

> >>+#define vec_vsrad vec_sra

> >>+#endif

> >

> >Does anything bad happen if these are simply defined, without the

> >#ifdef/#endif protection?

> >I'm wondering if there is some scenario with

> >pragma GCC target "cpu=powerX" where we may want them defined

> >anyway.

> 

> Yes, you're right about that.  We could run into such problems, I 

> think.  I think it's best to always define these.  If the builtin isn't 

> supported for the specific target configuration, it'll be flagged during 

> the lookup process.


I don't think it will ever cause problems.  But yes, it certainly is not
the best place to do it here, and it is done elsewhere already, as you
say.

It does make a user-visible difference though: without the #if user code
using the name "vec_vgbbd" for some other purpose will stop working
(when building for older machines, it already will break on power8).
These aren't reserved names.  We don't really care though I guess ;-)


Segher

Patch

diff --git a/gcc/config/rs6000/altivec.h b/gcc/config/rs6000/altivec.h
index 5b631c7ebaf..8daf933e53e 100644
--- a/gcc/config/rs6000/altivec.h
+++ b/gcc/config/rs6000/altivec.h
@@ -55,32 +55,36 @@ 
 #define __CR6_LT		2
 #define __CR6_LT_REV		3
 
-/* Synonyms.  */
+#include "rs6000-vecdefines.h"
+
+/* Deprecated interfaces.  */
+#define vec_lvx vec_ld
+#define vec_lvxl vec_ldl
+#define vec_stvx vec_st
+#define vec_stvxl vec_stl
 #define vec_vaddcuw vec_addc
 #define vec_vand vec_and
 #define vec_vandc vec_andc
-#define vec_vrfip vec_ceil
 #define vec_vcmpbfp vec_cmpb
 #define vec_vcmpgefp vec_cmpge
 #define vec_vctsxs vec_cts
 #define vec_vctuxs vec_ctu
 #define vec_vexptefp vec_expte
-#define vec_vrfim vec_floor
-#define vec_lvx vec_ld
-#define vec_lvxl vec_ldl
 #define vec_vlogefp vec_loge
 #define vec_vmaddfp vec_madd
 #define vec_vmhaddshs vec_madds
-#define vec_vmladduhm vec_mladd
 #define vec_vmhraddshs vec_mradds
+#define vec_vmladduhm vec_mladd
 #define vec_vnmsubfp vec_nmsub
 #define vec_vnor vec_nor
 #define vec_vor vec_or
-#define vec_vpkpx vec_packpx
 #define vec_vperm vec_perm
-#define vec_permxor __builtin_vec_vpermxor
+#define vec_vpkpx vec_packpx
 #define vec_vrefp vec_re
+#define vec_vrfim vec_floor
 #define vec_vrfin vec_round
+#define vec_vrfip vec_ceil
+#define vec_vrfiz vec_trunc
 #define vec_vrsqrtefp vec_rsqrte
 #define vec_vsel vec_sel
 #define vec_vsldoi vec_sld
@@ -91,440 +95,56 @@ 
 #define vec_vspltisw vec_splat_s32
 #define vec_vsr vec_srl
 #define vec_vsro vec_sro
-#define vec_stvx vec_st
-#define vec_stvxl vec_stl
 #define vec_vsubcuw vec_subc
 #define vec_vsum2sws vec_sum2s
 #define vec_vsumsws vec_sums
-#define vec_vrfiz vec_trunc
 #define vec_vxor vec_xor
 
+#ifdef _ARCH_PWR8
+#define vec_vclz vec_cntlz
+#define vec_vgbbd vec_gb
+#define vec_vmrgew vec_mergee
+#define vec_vmrgow vec_mergeo
+#define vec_vpopcntu vec_popcnt
+#define vec_vrld vec_rl
+#define vec_vsld vec_sl
+#define vec_vsrd vec_sr
+#define vec_vsrad vec_sra
+#endif
+
+#ifdef _ARCH_PWR9
+#define vec_extract_fp_from_shorth vec_extract_fp32_from_shorth
+#define vec_extract_fp_from_shortl vec_extract_fp32_from_shortl
+#define vec_vctz vec_cnttz
+#endif
+
+/* Synonyms.  */
 /* Functions that are resolved by the backend to one of the
    typed builtins.  */
-#define vec_vaddfp __builtin_vec_vaddfp
-#define vec_addc __builtin_vec_addc
-#define vec_adde __builtin_vec_adde
-#define vec_addec __builtin_vec_addec
-#define vec_vaddsws __builtin_vec_vaddsws
-#define vec_vaddshs __builtin_vec_vaddshs
-#define vec_vaddsbs __builtin_vec_vaddsbs
-#define vec_vavgsw __builtin_vec_vavgsw
-#define vec_vavguw __builtin_vec_vavguw
-#define vec_vavgsh __builtin_vec_vavgsh
-#define vec_vavguh __builtin_vec_vavguh
-#define vec_vavgsb __builtin_vec_vavgsb
-#define vec_vavgub __builtin_vec_vavgub
-#define vec_ceil __builtin_vec_ceil
-#define vec_cmpb __builtin_vec_cmpb
-#define vec_vcmpeqfp __builtin_vec_vcmpeqfp
-#define vec_cmpge __builtin_vec_cmpge
-#define vec_vcmpgtfp __builtin_vec_vcmpgtfp
-#define vec_vcmpgtsw __builtin_vec_vcmpgtsw
-#define vec_vcmpgtuw __builtin_vec_vcmpgtuw
-#define vec_vcmpgtsh __builtin_vec_vcmpgtsh
-#define vec_vcmpgtuh __builtin_vec_vcmpgtuh
-#define vec_vcmpgtsb __builtin_vec_vcmpgtsb
-#define vec_vcmpgtub __builtin_vec_vcmpgtub
-#define vec_vcfsx __builtin_vec_vcfsx
-#define vec_vcfux __builtin_vec_vcfux
-#define vec_cts __builtin_vec_cts
-#define vec_ctu __builtin_vec_ctu
-#define vec_cpsgn __builtin_vec_copysign
-#define vec_double __builtin_vec_double
-#define vec_doublee __builtin_vec_doublee
-#define vec_doubleo __builtin_vec_doubleo
-#define vec_doublel __builtin_vec_doublel
-#define vec_doubleh __builtin_vec_doubleh
-#define vec_expte __builtin_vec_expte
-#define vec_float __builtin_vec_float
-#define vec_float2 __builtin_vec_float2
-#define vec_floate __builtin_vec_floate
-#define vec_floato __builtin_vec_floato
-#define vec_floor __builtin_vec_floor
-#define vec_loge __builtin_vec_loge
-#define vec_madd __builtin_vec_madd
-#define vec_madds __builtin_vec_madds
-#define vec_mtvscr __builtin_vec_mtvscr
-#define vec_reve __builtin_vec_vreve
-#define vec_vmaxfp __builtin_vec_vmaxfp
-#define vec_vmaxsw __builtin_vec_vmaxsw
-#define vec_vmaxsh __builtin_vec_vmaxsh
-#define vec_vmaxsb __builtin_vec_vmaxsb
-#define vec_vminfp __builtin_vec_vminfp
-#define vec_vminsw __builtin_vec_vminsw
-#define vec_vminsh __builtin_vec_vminsh
-#define vec_vminsb __builtin_vec_vminsb
-#define vec_mradds __builtin_vec_mradds
-#define vec_vmsumshm __builtin_vec_vmsumshm
-#define vec_vmsumuhm __builtin_vec_vmsumuhm
-#define vec_vmsummbm __builtin_vec_vmsummbm
-#define vec_vmsumubm __builtin_vec_vmsumubm
-#define vec_vmsumshs __builtin_vec_vmsumshs
-#define vec_vmsumuhs __builtin_vec_vmsumuhs
-#define vec_vmsumudm __builtin_vec_vmsumudm
-#define vec_vmulesb __builtin_vec_vmulesb
-#define vec_vmulesh __builtin_vec_vmulesh
-#define vec_vmuleuh __builtin_vec_vmuleuh
-#define vec_vmuleub __builtin_vec_vmuleub
-#define vec_vmulosh __builtin_vec_vmulosh
-#define vec_vmulouh __builtin_vec_vmulouh
-#define vec_vmulosb __builtin_vec_vmulosb
-#define vec_vmuloub __builtin_vec_vmuloub
-#define vec_nmsub __builtin_vec_nmsub
-#define vec_packpx __builtin_vec_packpx
-#define vec_vpkswss __builtin_vec_vpkswss
-#define vec_vpkuwus __builtin_vec_vpkuwus
-#define vec_vpkshss __builtin_vec_vpkshss
-#define vec_vpkuhus __builtin_vec_vpkuhus
-#define vec_vpkswus __builtin_vec_vpkswus
-#define vec_vpkshus __builtin_vec_vpkshus
-#define vec_re __builtin_vec_re
-#define vec_round __builtin_vec_round
-#define vec_recipdiv __builtin_vec_recipdiv
-#define vec_rlmi __builtin_vec_rlmi
-#define vec_vrlnm __builtin_vec_rlnm
 #define vec_rlnm(a,b,c) (__builtin_vec_rlnm((a),((c)<<8)|(b)))
-#define vec_rsqrt __builtin_vec_rsqrt
-#define vec_rsqrte __builtin_vec_rsqrte
-#define vec_signed __builtin_vec_vsigned
-#define vec_signed2 __builtin_vec_vsigned2
-#define vec_signede __builtin_vec_vsignede
-#define vec_signedo __builtin_vec_vsignedo
-#define vec_unsigned __builtin_vec_vunsigned
-#define vec_unsigned2 __builtin_vec_vunsigned2
-#define vec_unsignede __builtin_vec_vunsignede
-#define vec_unsignedo __builtin_vec_vunsignedo
-#define vec_vsubfp __builtin_vec_vsubfp
-#define vec_subc __builtin_vec_subc
-#define vec_sube __builtin_vec_sube
-#define vec_subec __builtin_vec_subec
-#define vec_vsubsws __builtin_vec_vsubsws
-#define vec_vsubshs __builtin_vec_vsubshs
-#define vec_vsubsbs __builtin_vec_vsubsbs
-#define vec_sum4s __builtin_vec_sum4s
-#define vec_vsum4shs __builtin_vec_vsum4shs
-#define vec_vsum4sbs __builtin_vec_vsum4sbs
-#define vec_vsum4ubs __builtin_vec_vsum4ubs
-#define vec_sum2s __builtin_vec_sum2s
-#define vec_sums __builtin_vec_sums
-#define vec_trunc __builtin_vec_trunc
-#define vec_vupkhpx __builtin_vec_vupkhpx
-#define vec_vupkhsh __builtin_vec_vupkhsh
-#define vec_vupkhsb __builtin_vec_vupkhsb
-#define vec_vupklpx __builtin_vec_vupklpx
-#define vec_vupklsh __builtin_vec_vupklsh
-#define vec_vupklsb __builtin_vec_vupklsb
-#define vec_abs __builtin_vec_abs
-#define vec_nabs __builtin_vec_nabs
-#define vec_abss __builtin_vec_abss
-#define vec_add __builtin_vec_add
-#define vec_adds __builtin_vec_adds
-#define vec_and __builtin_vec_and
-#define vec_andc __builtin_vec_andc
-#define vec_avg __builtin_vec_avg
-#define vec_cmpeq __builtin_vec_cmpeq
-#define vec_cmpne __builtin_vec_cmpne
-#define vec_cmpgt __builtin_vec_cmpgt
-#define vec_ctf __builtin_vec_ctf
-#define vec_dst __builtin_vec_dst
-#define vec_dstst __builtin_vec_dstst
-#define vec_dststt __builtin_vec_dststt
-#define vec_dstt __builtin_vec_dstt
-#define vec_ld __builtin_vec_ld
-#define vec_lde __builtin_vec_lde
-#define vec_ldl __builtin_vec_ldl
-#define vec_lvebx __builtin_vec_lvebx
-#define vec_lvehx __builtin_vec_lvehx
-#define vec_lvewx __builtin_vec_lvewx
-#define vec_xl_zext __builtin_vec_ze_lxvrx
-#define vec_xl_sext __builtin_vec_se_lxvrx
-#define vec_xst_trunc __builtin_vec_tr_stxvrx
-#define vec_neg __builtin_vec_neg
-#define vec_pmsum_be __builtin_vec_vpmsum
-#define vec_shasigma_be __builtin_crypto_vshasigma
-/* Cell only intrinsics.  */
-#ifdef __PPU__
-#define vec_lvlx __builtin_vec_lvlx
-#define vec_lvlxl __builtin_vec_lvlxl
-#define vec_lvrx __builtin_vec_lvrx
-#define vec_lvrxl __builtin_vec_lvrxl
-#endif
-#define vec_lvsl __builtin_vec_lvsl
-#define vec_lvsr __builtin_vec_lvsr
-#define vec_max __builtin_vec_max
-#define vec_mergee __builtin_vec_vmrgew
-#define vec_mergeh __builtin_vec_mergeh
-#define vec_mergel __builtin_vec_mergel
-#define vec_mergeo __builtin_vec_vmrgow
-#define vec_min __builtin_vec_min
-#define vec_mladd __builtin_vec_mladd
-#define vec_msum __builtin_vec_msum
-#define vec_msums __builtin_vec_msums
-#define vec_mul __builtin_vec_mul
-#define vec_mule __builtin_vec_mule
-#define vec_mulo __builtin_vec_mulo
-#define vec_nor __builtin_vec_nor
-#define vec_or __builtin_vec_or
-#define vec_pack __builtin_vec_pack
-#define vec_packs __builtin_vec_packs
-#define vec_packsu __builtin_vec_packsu
-#define vec_perm __builtin_vec_perm
-#define vec_rl __builtin_vec_rl
-#define vec_sel __builtin_vec_sel
-#define vec_sl __builtin_vec_sl
-#define vec_sld __builtin_vec_sld
-#define vec_sldw __builtin_vsx_xxsldwi
-#define vec_sll __builtin_vec_sll
-#define vec_slo __builtin_vec_slo
-#define vec_splat __builtin_vec_splat
-#define vec_sr __builtin_vec_sr
-#define vec_sra __builtin_vec_sra
-#define vec_srl __builtin_vec_srl
-#define vec_sro __builtin_vec_sro
-#define vec_st __builtin_vec_st
-#define vec_ste __builtin_vec_ste
-#define vec_stl __builtin_vec_stl
-#define vec_stvebx __builtin_vec_stvebx
-#define vec_stvehx __builtin_vec_stvehx
-#define vec_stvewx __builtin_vec_stvewx
-/* Cell only intrinsics.  */
-#ifdef __PPU__
-#define vec_stvlx __builtin_vec_stvlx
-#define vec_stvlxl __builtin_vec_stvlxl
-#define vec_stvrx __builtin_vec_stvrx
-#define vec_stvrxl __builtin_vec_stvrxl
-#endif
-#define vec_sub __builtin_vec_sub
-#define vec_subs __builtin_vec_subs
-#define vec_sum __builtin_vec_sum
-#define vec_unpackh __builtin_vec_unpackh
-#define vec_unpackl __builtin_vec_unpackl
-#define vec_vaddubm __builtin_vec_vaddubm
-#define vec_vaddubs __builtin_vec_vaddubs
-#define vec_vadduhm __builtin_vec_vadduhm
-#define vec_vadduhs __builtin_vec_vadduhs
-#define vec_vadduwm __builtin_vec_vadduwm
-#define vec_vadduws __builtin_vec_vadduws
-#define vec_vcmpequb __builtin_vec_vcmpequb
-#define vec_vcmpequh __builtin_vec_vcmpequh
-#define vec_vcmpequw __builtin_vec_vcmpequw
-#define vec_vmaxub __builtin_vec_vmaxub
-#define vec_vmaxuh __builtin_vec_vmaxuh
-#define vec_vmaxuw __builtin_vec_vmaxuw
-#define vec_vminub __builtin_vec_vminub
-#define vec_vminuh __builtin_vec_vminuh
-#define vec_vminuw __builtin_vec_vminuw
-#define vec_vmrghb __builtin_vec_vmrghb
-#define vec_vmrghh __builtin_vec_vmrghh
-#define vec_vmrghw __builtin_vec_vmrghw
-#define vec_vmrglb __builtin_vec_vmrglb
-#define vec_vmrglh __builtin_vec_vmrglh
-#define vec_vmrglw __builtin_vec_vmrglw
-#define vec_vpkuhum __builtin_vec_vpkuhum
-#define vec_vpkuwum __builtin_vec_vpkuwum
-#define vec_vrlb __builtin_vec_vrlb
-#define vec_vrlh __builtin_vec_vrlh
-#define vec_vrlw __builtin_vec_vrlw
-#define vec_vslb __builtin_vec_vslb
-#define vec_vslh __builtin_vec_vslh
-#define vec_vslw __builtin_vec_vslw
-#define vec_vspltb __builtin_vec_vspltb
-#define vec_vsplth __builtin_vec_vsplth
-#define vec_vspltw __builtin_vec_vspltw
-#define vec_vsrab __builtin_vec_vsrab
-#define vec_vsrah __builtin_vec_vsrah
-#define vec_vsraw __builtin_vec_vsraw
-#define vec_vsrb __builtin_vec_vsrb
-#define vec_vsrh __builtin_vec_vsrh
-#define vec_vsrw __builtin_vec_vsrw
-#define vec_vsububs __builtin_vec_vsububs
-#define vec_vsububm __builtin_vec_vsububm
-#define vec_vsubuhm __builtin_vec_vsubuhm
-#define vec_vsubuhs __builtin_vec_vsubuhs
-#define vec_vsubuwm __builtin_vec_vsubuwm
-#define vec_vsubuws __builtin_vec_vsubuws
-#define vec_xor __builtin_vec_xor
-
-#define vec_extract __builtin_vec_extract
-#define vec_insert __builtin_vec_insert
-#define vec_splats __builtin_vec_splats
-#define vec_promote __builtin_vec_promote
 
 #ifdef __VSX__
 /* VSX additions */
-#define vec_div __builtin_vec_div
-#define vec_mul __builtin_vec_mul
-#define vec_msub __builtin_vec_msub
-#define vec_nmadd __builtin_vec_nmadd
-#define vec_nearbyint __builtin_vec_nearbyint
-#define vec_rint __builtin_vec_rint
-#define vec_sqrt __builtin_vec_sqrt
 #define vec_vsx_ld __builtin_vec_vsx_ld
 #define vec_vsx_st __builtin_vec_vsx_st
-#define vec_xl __builtin_vec_vsx_ld
-#define vec_xl_be __builtin_vec_xl_be
-#define vec_xst __builtin_vec_vsx_st
-#define vec_xst_be __builtin_vec_xst_be
-
-/* Note, xxsldi and xxpermdi were added as __builtin_vsx_<xxx> functions
-   instead of __builtin_vec_<xxx>  */
-#define vec_xxsldwi __builtin_vsx_xxsldwi
-#define vec_xxpermdi __builtin_vsx_xxpermdi
-#endif
-
-#ifdef _ARCH_PWR8
-/* Vector additions added in ISA 2.07.  */
-#define vec_eqv __builtin_vec_eqv
-#define vec_nand __builtin_vec_nand
-#define vec_orc __builtin_vec_orc
-#define vec_vaddcuq __builtin_vec_vaddcuq
-#define vec_vaddudm __builtin_vec_vaddudm
-#define vec_vadduqm __builtin_vec_vadduqm
-#define vec_vbpermq __builtin_vec_vbpermq
-#define vec_bperm __builtin_vec_vbperm_api
-#define vec_vclz __builtin_vec_vclz
-#define vec_cntlz __builtin_vec_vclz
-#define vec_vclzb __builtin_vec_vclzb
-#define vec_vclzd __builtin_vec_vclzd
-#define vec_vclzh __builtin_vec_vclzh
-#define vec_vclzw __builtin_vec_vclzw
-#define vec_vaddecuq __builtin_vec_vaddecuq
-#define vec_vaddeuqm __builtin_vec_vaddeuqm
-#define vec_vsubecuq __builtin_vec_vsubecuq
-#define vec_vsubeuqm __builtin_vec_vsubeuqm
-#define vec_vgbbd __builtin_vec_vgbbd
-#define vec_gb __builtin_vec_vgbbd
-#define vec_vmaxsd __builtin_vec_vmaxsd
-#define vec_vmaxud __builtin_vec_vmaxud
-#define vec_vminsd __builtin_vec_vminsd
-#define vec_vminud __builtin_vec_vminud
-#define vec_vmrgew __builtin_vec_vmrgew
-#define vec_vmrgow __builtin_vec_vmrgow
-#define vec_vpksdss __builtin_vec_vpksdss
-#define vec_vpksdus __builtin_vec_vpksdus
-#define vec_vpkudum __builtin_vec_vpkudum
-#define vec_vpkudus __builtin_vec_vpkudus
-#define vec_vpopcnt __builtin_vec_vpopcnt
-#define vec_vpopcntb __builtin_vec_vpopcntb
-#define vec_vpopcntd __builtin_vec_vpopcntd
-#define vec_vpopcnth __builtin_vec_vpopcnth
-#define vec_vpopcntw __builtin_vec_vpopcntw
-#define vec_popcnt __builtin_vec_vpopcntu
-#define vec_vrld __builtin_vec_vrld
-#define vec_vsld __builtin_vec_vsld
-#define vec_vsrad __builtin_vec_vsrad
-#define vec_vsrd __builtin_vec_vsrd
-#define vec_vsubcuq __builtin_vec_vsubcuq
-#define vec_vsubudm __builtin_vec_vsubudm
-#define vec_vsubuqm __builtin_vec_vsubuqm
-#define vec_vupkhsw __builtin_vec_vupkhsw
-#define vec_vupklsw __builtin_vec_vupklsw
-#define vec_revb __builtin_vec_revb
-#define vec_sbox_be __builtin_crypto_vsbox_be
-#define vec_cipher_be __builtin_crypto_vcipher_be
-#define vec_cipherlast_be __builtin_crypto_vcipherlast_be
-#define vec_ncipher_be __builtin_crypto_vncipher_be
-#define vec_ncipherlast_be __builtin_crypto_vncipherlast_be
-#endif
-
-#ifdef __POWER9_VECTOR__
-/* Vector additions added in ISA 3.0.  */
-#define vec_first_match_index __builtin_vec_first_match_index
-#define vec_first_match_or_eos_index __builtin_vec_first_match_or_eos_index
-#define vec_first_mismatch_index __builtin_vec_first_mismatch_index
-#define vec_first_mismatch_or_eos_index __builtin_vec_first_mismatch_or_eos_index
-#define vec_pack_to_short_fp32 __builtin_vec_convert_4f32_8f16
-#define vec_parity_lsbb __builtin_vec_vparity_lsbb
-#define vec_vctz __builtin_vec_vctz
-#define vec_cnttz __builtin_vec_vctz
-#define vec_vctzb __builtin_vec_vctzb
-#define vec_vctzd __builtin_vec_vctzd
-#define vec_vctzh __builtin_vec_vctzh
-#define vec_vctzw __builtin_vec_vctzw
-#define vec_extract4b __builtin_vec_extract4b
-#define vec_insert4b __builtin_vec_insert4b
-#define vec_vprtyb __builtin_vec_vprtyb
-#define vec_vprtybd __builtin_vec_vprtybd
-#define vec_vprtybw __builtin_vec_vprtybw
-
-#ifdef _ARCH_PPC64
-#define vec_vprtybq __builtin_vec_vprtybq
-#endif
-
-#define vec_absd __builtin_vec_vadu
-#define vec_absdb __builtin_vec_vadub
-#define vec_absdh __builtin_vec_vaduh
-#define vec_absdw __builtin_vec_vaduw
-
-#define vec_slv __builtin_vec_vslv
-#define vec_srv __builtin_vec_vsrv
-
-#define vec_extract_exp __builtin_vec_extract_exp
-#define vec_extract_sig __builtin_vec_extract_sig
-#define vec_insert_exp __builtin_vec_insert_exp
-#define vec_test_data_class __builtin_vec_test_data_class
-
-#define vec_extract_fp_from_shorth __builtin_vec_vextract_fp_from_shorth
-#define vec_extract_fp_from_shortl __builtin_vec_vextract_fp_from_shortl
-#define vec_extract_fp32_from_shorth __builtin_vec_vextract_fp_from_shorth
-#define vec_extract_fp32_from_shortl __builtin_vec_vextract_fp_from_shortl
-
-#define scalar_extract_exp __builtin_vec_scalar_extract_exp
-#define scalar_extract_sig __builtin_vec_scalar_extract_sig
-#define scalar_insert_exp __builtin_vec_scalar_insert_exp
-#define scalar_test_data_class __builtin_vec_scalar_test_data_class
-#define scalar_test_neg __builtin_vec_scalar_test_neg
-
-#define scalar_cmp_exp_gt __builtin_vec_scalar_cmp_exp_gt
-#define scalar_cmp_exp_lt __builtin_vec_scalar_cmp_exp_lt
-#define scalar_cmp_exp_eq __builtin_vec_scalar_cmp_exp_eq
-#define scalar_cmp_exp_unordered __builtin_vec_scalar_cmp_exp_unordered
-
-#ifdef _ARCH_PPC64
-#define vec_xl_len __builtin_vec_lxvl
-#define vec_xst_len __builtin_vec_stxvl
-#define vec_xl_len_r __builtin_vec_xl_len_r
-#define vec_xst_len_r __builtin_vec_xst_len_r
-#endif
+#define __builtin_vec_xl __builtin_vec_vsx_ld
+#define __builtin_vec_xst __builtin_vec_vsx_st
 
-#define vec_cmpnez __builtin_vec_vcmpnez
-
-#define vec_cntlz_lsbb __builtin_vec_vclzlsbb
-#define vec_cnttz_lsbb __builtin_vec_vctzlsbb
-
-#define vec_test_lsbb_all_ones __builtin_vec_xvtlsbb_all_ones
-#define vec_test_lsbb_all_zeros __builtin_vec_xvtlsbb_all_zeros
-
-#define vec_xlx __builtin_vec_vextulx
-#define vec_xrx __builtin_vec_vexturx
-#define vec_signexti  __builtin_vec_vsignexti
-#define vec_signextll __builtin_vec_vsignextll
-
-#endif
-
-/* BCD builtins, map ABI builtin name to existing builtin name.  */
-#define __builtin_bcdadd     __builtin_vec_bcdadd
-#define __builtin_bcdadd_lt  __builtin_vec_bcdadd_lt
-#define __builtin_bcdadd_eq  __builtin_vec_bcdadd_eq
-#define __builtin_bcdadd_gt  __builtin_vec_bcdadd_gt
 #define __builtin_bcdadd_ofl __builtin_vec_bcdadd_ov
-#define __builtin_bcdadd_ov  __builtin_vec_bcdadd_ov
-#define __builtin_bcdsub     __builtin_vec_bcdsub
-#define __builtin_bcdsub_lt  __builtin_vec_bcdsub_lt
-#define __builtin_bcdsub_eq  __builtin_vec_bcdsub_eq
-#define __builtin_bcdsub_gt  __builtin_vec_bcdsub_gt
 #define __builtin_bcdsub_ofl __builtin_vec_bcdsub_ov
-#define __builtin_bcdsub_ov  __builtin_vec_bcdsub_ov
-#define __builtin_bcdinvalid __builtin_vec_bcdinvalid
-#define __builtin_bcdmul10   __builtin_vec_bcdmul10
-#define __builtin_bcddiv10   __builtin_vec_bcddiv10
-#define __builtin_bcd2dfp    __builtin_vec_denb2dfp
 #define __builtin_bcdcmpeq(a,b)   __builtin_vec_bcdsub_eq(a,b,0)
 #define __builtin_bcdcmpgt(a,b)   __builtin_vec_bcdsub_gt(a,b,0)
 #define __builtin_bcdcmplt(a,b)   __builtin_vec_bcdsub_lt(a,b,0)
 #define __builtin_bcdcmpge(a,b)   __builtin_vec_bcdsub_ge(a,b,0)
 #define __builtin_bcdcmple(a,b)   __builtin_vec_bcdsub_le(a,b,0)
+#endif
 
+#ifdef _ARCH_PWR10
+#define __builtin_vec_se_lxvrx __builtin_vec_xl_sext
+#define __builtin_vec_tr_stxvrx __builtin_vec_xst_trunc
+#define __builtin_vec_ze_lxvrx __builtin_vec_xl_zext
+#define __builtin_vsx_xxpermx __builtin_vec_xxpermx
+#endif
 
 /* Predicates.
    For C++, we use templates in order to allow non-parenthesized arguments.
@@ -700,14 +320,9 @@  __altivec_scalar_pred(vec_any_nle,
 #define vec_any_nle(a1, a2) __builtin_vec_vcmpge_p (__CR6_LT_REV, (a2), (a1))
 #endif
 
-/* These do not accept vectors, so they do not have a __builtin_vec_*
-   counterpart.  */
+/* Miscellaneous definitions.  */
 #define vec_dss(x) __builtin_altivec_dss((x))
 #define vec_dssall() __builtin_altivec_dssall ()
-#define vec_mfvscr() ((__vector unsigned short) __builtin_altivec_mfvscr ())
-#define vec_splat_s8(x) __builtin_altivec_vspltisb ((x))
-#define vec_splat_s16(x) __builtin_altivec_vspltish ((x))
-#define vec_splat_s32(x) __builtin_altivec_vspltisw ((x))
 #define vec_splat_u8(x) ((__vector unsigned char) vec_splat_s8 ((x)))
 #define vec_splat_u16(x) ((__vector unsigned short) vec_splat_s16 ((x)))
 #define vec_splat_u32(x) ((__vector unsigned int) vec_splat_s32 ((x)))
@@ -716,59 +331,4 @@  __altivec_scalar_pred(vec_any_nle,
    to #define vec_step to __builtin_vec_step.  */
 #define vec_step(x) __builtin_vec_step (* (__typeof__ (x) *) 0)
 
-#ifdef _ARCH_PWR10
-#define vec_signextq  __builtin_vec_vsignextq
-#define vec_dive __builtin_vec_dive
-#define vec_mod  __builtin_vec_mod
-
-/* May modify these macro definitions if future capabilities overload
-   with support for different vector argument and result types.  */
-#define vec_cntlzm(a, b)	__builtin_altivec_vclzdm (a, b)
-#define vec_cnttzm(a, b)	__builtin_altivec_vctzdm (a, b)
-#define vec_pdep(a, b)	__builtin_altivec_vpdepd (a, b)
-#define vec_pext(a, b)	__builtin_altivec_vpextd (a, b)
-#define vec_cfuge(a, b)	__builtin_altivec_vcfuged (a, b)
-#define vec_genpcvm(a, b)	__builtin_vec_xxgenpcvm (a, b)
-
-/* Overloaded built-in functions for ISA 3.1.  */
-#define vec_extractl(a, b, c)	__builtin_vec_extractl (a, b, c)
-#define vec_extracth(a, b, c)	__builtin_vec_extracth (a, b, c)
-#define vec_insertl(a, b, c)   __builtin_vec_insertl (a, b, c)
-#define vec_inserth(a, b, c)   __builtin_vec_inserth (a, b, c)
-#define vec_replace_elt(a, b, c)       __builtin_vec_replace_elt (a, b, c)
-#define vec_replace_unaligned(a, b, c) __builtin_vec_replace_un (a, b, c)
-#define vec_sldb(a, b, c)      __builtin_vec_sldb (a, b, c)
-#define vec_srdb(a, b, c)      __builtin_vec_srdb (a, b, c)
-#define vec_splati(a)  __builtin_vec_xxspltiw (a)
-#define vec_splatid(a) __builtin_vec_xxspltid (a)
-#define vec_splati_ins(a, b, c)        __builtin_vec_xxsplti32dx (a, b, c)
-#define vec_blendv(a, b, c)    __builtin_vec_xxblend (a, b, c)
-#define vec_permx(a, b, c, d)  __builtin_vec_xxpermx (a, b, c, d)
-
-#define vec_gnb(a, b)	__builtin_vec_gnb (a, b)
-#define vec_clrl(a, b)	__builtin_vec_clrl (a, b)
-#define vec_clrr(a, b)	__builtin_vec_clrr (a, b)
-#define vec_ternarylogic(a, b, c, d)	__builtin_vec_xxeval (a, b, c, d)
-
-#define vec_strir(a)	__builtin_vec_strir (a)
-#define vec_stril(a)	__builtin_vec_stril (a)
-
-#define vec_strir_p(a)	__builtin_vec_strir_p (a)
-#define vec_stril_p(a)	__builtin_vec_stril_p (a)
-
-#define vec_mulh(a, b) __builtin_vec_mulh ((a), (b))
-#define vec_dive(a, b) __builtin_vec_dive ((a), (b))
-#define vec_mod(a, b) __builtin_vec_mod ((a), (b))
-
-/* VSX Mask Manipulation builtin. */
-#define vec_genbm __builtin_vec_mtvsrbm
-#define vec_genhm __builtin_vec_mtvsrhm
-#define vec_genwm __builtin_vec_mtvsrwm
-#define vec_gendm __builtin_vec_mtvsrdm
-#define vec_genqm __builtin_vec_mtvsrqm
-#define vec_cntm __builtin_vec_cntm
-#define vec_expandm __builtin_vec_vexpandm
-#define vec_extractm __builtin_vec_vextractm
-#endif
-
 #endif /* _ALTIVEC_H */