public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: will schmidt <will_schmidt@vnet.ibm.com>
To: Bill Schmidt <wschmidt@linux.ibm.com>, gcc-patches@gcc.gnu.org
Cc: segher@kernel.crashing.org
Subject: Re: [PATCH 53/55] rs6000: Update altivec.h for automated interfaces
Date: Tue, 27 Jul 2021 16:07:33 -0500	[thread overview]
Message-ID: <2ee50a9bc2d8c7b1b4453a269c0d9679910d3e38.camel@vnet.ibm.com> (raw)
In-Reply-To: <73472f2fd31f8f848789c121708110d5cfb25494.1623941442.git.wschmidt@linux.ibm.com>

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 */


  reply	other threads:[~2021-07-27 21:07 UTC|newest]

Thread overview: 110+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-17 15:18 [PATCHv3 00/55] Replace the Power target-specific builtin machinery Bill Schmidt
2021-06-17 15:18 ` [PATCH 01/55] Support scanning of build-time GC roots in gengtype Bill Schmidt
2021-06-17 15:18 ` [PATCH 02/55] rs6000: Initial create of rs6000-gen-builtins.c Bill Schmidt
2021-06-17 15:18 ` [PATCH 03/55] rs6000: Add initial input files Bill Schmidt
2021-06-17 15:18 ` [PATCH 04/55] rs6000: Add file support and functions for diagnostic support Bill Schmidt
2021-06-17 15:18 ` [PATCH 05/55] rs6000: Add helper functions for parsing Bill Schmidt
2021-07-09 19:32   ` will schmidt
2021-07-14 22:58     ` Segher Boessenkool
2021-07-14 23:32   ` Segher Boessenkool
2021-06-17 15:18 ` [PATCH 06/55] rs6000: Add functions for matching types, part 1 of 3 Bill Schmidt
2021-06-17 15:18 ` [PATCH 07/55] rs6000: Add functions for matching types, part 2 " Bill Schmidt
2021-06-17 15:18 ` [PATCH 08/55] rs6000: Add functions for matching types, part 3 " Bill Schmidt
2021-06-17 15:18 ` [PATCH 09/55] rs6000: Red-black tree implementation for balanced tree search Bill Schmidt
2021-06-17 15:18 ` [PATCH 10/55] rs6000: Main function with stubs for parsing and output Bill Schmidt
2021-07-19 19:15   ` Segher Boessenkool
2021-07-20 22:19     ` Bill Schmidt
2021-07-20 23:22       ` Segher Boessenkool
2021-07-21  1:51         ` Bill Schmidt
2021-07-21 15:43           ` Segher Boessenkool
2021-07-21 16:08             ` Bill Schmidt
2021-07-21 16:16               ` Bill Schmidt
2021-06-17 15:18 ` [PATCH 11/55] rs6000: Parsing built-in input file, part 1 of 3 Bill Schmidt
2021-07-19 20:39   ` Segher Boessenkool
2021-06-17 15:18 ` [PATCH 12/55] rs6000: Parsing built-in input file, part 2 " Bill Schmidt
2021-07-19 22:07   ` Segher Boessenkool
2021-06-17 15:18 ` [PATCH 13/55] rs6000: Parsing built-in input file, part 3 " Bill Schmidt
2021-07-19 22:13   ` Segher Boessenkool
2021-06-17 15:18 ` [PATCH 14/55] rs6000: Parsing of overload input file Bill Schmidt
2021-07-19 23:09   ` Segher Boessenkool
2021-06-17 15:18 ` [PATCH 15/55] rs6000: Build and store function type identifiers Bill Schmidt
2021-07-20  0:04   ` Segher Boessenkool
2021-06-17 15:19 ` [PATCH 16/55] rs6000: Write output to the builtin definition include file Bill Schmidt
2021-07-20 23:27   ` Segher Boessenkool
2021-06-17 15:19 ` [PATCH 17/55] rs6000: Write output to the builtins header file Bill Schmidt
2021-07-20 23:40   ` Segher Boessenkool
2021-06-17 15:19 ` [PATCH 18/55] rs6000: Write output to the builtins init file, part 1 of 3 Bill Schmidt
2021-07-20 23:51   ` Segher Boessenkool
2021-06-17 15:19 ` [PATCH 19/55] rs6000: Write output to the builtins init file, part 2 " Bill Schmidt
2021-07-20 23:53   ` Segher Boessenkool
2021-06-17 15:19 ` [PATCH 20/55] rs6000: Write output to the builtins init file, part 3 " Bill Schmidt
2021-07-21 17:08   ` Segher Boessenkool
2021-06-17 15:19 ` [PATCH 21/55] rs6000: Write static initializations for built-in table Bill Schmidt
2021-07-21 17:14   ` Segher Boessenkool
2021-06-17 15:19 ` [PATCH 22/55] rs6000: Write static initializations for overload tables Bill Schmidt
2021-07-21 17:40   ` Segher Boessenkool
2021-06-17 15:19 ` [PATCH 23/55] rs6000: Incorporate new builtins code into the build machinery Bill Schmidt
2021-07-21 18:58   ` Segher Boessenkool
2021-07-27  3:26     ` Bill Schmidt
2021-07-27 14:23       ` Segher Boessenkool
2021-07-27 17:38         ` Bill Schmidt
2021-06-17 15:19 ` [PATCH 24/55] rs6000: Add gengtype handling to " Bill Schmidt
2021-06-17 15:19 ` [PATCH 25/55] rs6000: Add the rest of the [altivec] stanza to the builtins file Bill Schmidt
2021-06-17 15:19 ` [PATCH 26/55] rs6000: Add VSX builtins Bill Schmidt
2021-06-17 15:19 ` [PATCH 27/55] rs6000: Add available-everywhere and ancient builtins Bill Schmidt
2021-06-17 15:19 ` [PATCH 28/55] rs6000: Add power7 and power7-64 builtins Bill Schmidt
2021-06-17 15:19 ` [PATCH 29/55] rs6000: Add power8-vector builtins Bill Schmidt
2021-06-17 15:19 ` [PATCH 30/55] rs6000: Add Power9 builtins Bill Schmidt
2021-06-17 15:19 ` [PATCH 31/55] rs6000: Add more type nodes to support builtin processing Bill Schmidt
2021-06-17 15:19 ` [PATCH 32/55] rs6000: Add Power10 builtins Bill Schmidt
2021-06-17 15:19 ` [PATCH 33/55] rs6000: Add MMA builtins Bill Schmidt
2021-06-17 15:19 ` [PATCH 34/55] rs6000: Add miscellaneous builtins Bill Schmidt
2021-06-17 15:19 ` [PATCH 35/55] rs6000: Add Cell builtins Bill Schmidt
2021-06-17 15:19 ` [PATCH 36/55] rs6000: Add remaining overloads Bill Schmidt
2021-06-17 15:19 ` [PATCH 37/55] rs6000: Execute the automatic built-in initialization code Bill Schmidt
2021-06-17 15:19 ` [PATCH 38/55] rs6000: Darwin builtin support Bill Schmidt
2021-06-17 15:19 ` [PATCH 39/55] rs6000: Add sanity to V2DI_type_node definitions Bill Schmidt
2021-06-17 15:19 ` [PATCH 40/55] rs6000: Always initialize vector_pair and vector_quad nodes Bill Schmidt
2021-06-17 15:19 ` [PATCH 41/55] rs6000: Handle overloads during program parsing Bill Schmidt
2021-06-17 15:19 ` [PATCH 42/55] rs6000: Handle gimple folding of target built-ins Bill Schmidt
2021-07-28 21:21   ` will schmidt
2021-07-29 12:42     ` Bill Schmidt
2021-08-02 13:31       ` Bill Schmidt
2021-08-02 23:43         ` Segher Boessenkool
2021-06-17 15:19 ` [PATCH 43/55] rs6000: Support for vectorizing built-in functions Bill Schmidt
2021-06-17 15:19 ` [PATCH 44/55] rs6000: Builtin expansion, part 1 Bill Schmidt
2021-07-27 21:06   ` will schmidt
2021-07-28  3:30     ` Bill Schmidt
2021-06-17 15:19 ` [PATCH 45/55] rs6000: Builtin expansion, part 2 Bill Schmidt
2021-07-27 21:06   ` will schmidt
2021-06-17 15:19 ` [PATCH 46/55] rs6000: Builtin expansion, part 3 Bill Schmidt
2021-07-27 21:06   ` will schmidt
2021-08-03 23:40     ` Segher Boessenkool
2021-06-17 15:19 ` [PATCH 47/55] rs6000: Builtin expansion, part 4 Bill Schmidt
2021-07-27 21:06   ` will schmidt
2021-08-03 23:46     ` Segher Boessenkool
2021-08-04  0:34     ` Segher Boessenkool
2021-08-12 16:17       ` Bill Schmidt
2021-06-17 15:19 ` [PATCH 48/55] rs6000: Builtin expansion, part 5 Bill Schmidt
2021-07-27 21:07   ` will schmidt
2021-06-17 15:19 ` [PATCH 49/55] rs6000: Builtin expansion, part 6 Bill Schmidt
2021-07-27 21:07   ` will schmidt
2021-07-28 20:38     ` Bill Schmidt
2021-06-17 15:19 ` [PATCH 50/55] rs6000: Update rs6000_builtin_decl Bill Schmidt
2021-07-27 21:08   ` will schmidt
2021-08-04  0:38     ` Segher Boessenkool
2021-06-17 15:19 ` [PATCH 51/55] rs6000: Miscellaneous uses of rs6000_builtin_decls_x Bill Schmidt
2021-07-27 21:08   ` will schmidt
2021-06-17 15:19 ` [PATCH 52/55] rs6000: Debug support Bill Schmidt
2021-07-27 21:07   ` will schmidt
2021-08-04  0:49     ` Segher Boessenkool
2021-06-17 15:19 ` [PATCH 53/55] rs6000: Update altivec.h for automated interfaces Bill Schmidt
2021-07-27 21:07   ` will schmidt [this message]
2021-07-28 20:58     ` Bill Schmidt
2021-08-04  0:58       ` Segher Boessenkool
2021-06-17 15:19 ` [PATCH 54/55] rs6000: Test case adjustments Bill Schmidt
2021-06-17 15:19 ` [PATCH 55/55] rs6000: Enable the new builtin support Bill Schmidt
2021-07-27 21:07   ` will schmidt
2021-06-25 15:25 ` [PATCHv3 00/55] Replace the Power target-specific builtin machinery Bill Schmidt
2021-07-13 13:52   ` Bill Schmidt
  -- strict thread matches above, loose matches on Subject: below --
2021-06-08 18:26 [PATCHv2 " Bill Schmidt
2021-06-08 18:27 ` [PATCH 53/55] rs6000: Update altivec.h for automated interfaces Bill Schmidt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2ee50a9bc2d8c7b1b4453a269c0d9679910d3e38.camel@vnet.ibm.com \
    --to=will_schmidt@vnet.ibm.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=segher@kernel.crashing.org \
    --cc=wschmidt@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).