From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id 4417D398382F for ; Tue, 27 Jul 2021 21:07:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 4417D398382F Received: from pps.filterd (m0098393.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 16RL7Cuc014354; Tue, 27 Jul 2021 17:07:38 -0400 Received: from ppma01wdc.us.ibm.com (fd.55.37a9.ip4.static.sl-reverse.com [169.55.85.253]) by mx0a-001b2d01.pphosted.com with ESMTP id 3a2s6qgybn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 27 Jul 2021 17:07:37 -0400 Received: from pps.filterd (ppma01wdc.us.ibm.com [127.0.0.1]) by ppma01wdc.us.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 16RL2NXr026420; Tue, 27 Jul 2021 21:07:36 GMT Received: from b01cxnp22036.gho.pok.ibm.com (b01cxnp22036.gho.pok.ibm.com [9.57.198.26]) by ppma01wdc.us.ibm.com with ESMTP id 3a2361becj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 27 Jul 2021 21:07:36 +0000 Received: from b01ledav006.gho.pok.ibm.com (b01ledav006.gho.pok.ibm.com [9.57.199.111]) by b01cxnp22036.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 16RL7Zqc13959634 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 27 Jul 2021 21:07:35 GMT Received: from b01ledav006.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A9676AC05B; Tue, 27 Jul 2021 21:07:35 +0000 (GMT) Received: from b01ledav006.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8AD49AC05E; Tue, 27 Jul 2021 21:07:34 +0000 (GMT) Received: from lexx (unknown [9.171.17.235]) by b01ledav006.gho.pok.ibm.com (Postfix) with ESMTP; Tue, 27 Jul 2021 21:07:34 +0000 (GMT) Message-ID: <2ee50a9bc2d8c7b1b4453a269c0d9679910d3e38.camel@vnet.ibm.com> Subject: Re: [PATCH 53/55] rs6000: Update altivec.h for automated interfaces From: will schmidt To: Bill Schmidt , gcc-patches@gcc.gnu.org Cc: segher@kernel.crashing.org Date: Tue, 27 Jul 2021 16:07:33 -0500 In-Reply-To: <73472f2fd31f8f848789c121708110d5cfb25494.1623941442.git.wschmidt@linux.ibm.com> References: <73472f2fd31f8f848789c121708110d5cfb25494.1623941442.git.wschmidt@linux.ibm.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.28.5 (3.28.5-10.el7) Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: mw2MRwtLGtuGsB2Yf7A9WVSc3ly0UQte X-Proofpoint-GUID: mw2MRwtLGtuGsB2Yf7A9WVSc3ly0UQte X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391, 18.0.790 definitions=2021-07-27_14:2021-07-27, 2021-07-27 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 mlxscore=0 lowpriorityscore=0 spamscore=0 clxscore=1015 priorityscore=1501 impostorscore=0 phishscore=0 suspectscore=0 malwarescore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2107140000 definitions=main-2107270123 X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jul 2021 21:07:42 -0000 On Thu, 2021-06-17 at 10:19 -0500, Bill Schmidt via Gcc-patches wrote: > 2021-06-10 Bill Schmidt > > 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_ > functions > - instead of __builtin_vec_ */ > -#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 */