public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/wschmidt/heads/builtins4)] rs6000: Add Power10 builtins
@ 2020-11-24 16:44 William Schmidt
0 siblings, 0 replies; 4+ messages in thread
From: William Schmidt @ 2020-11-24 16:44 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:fdb1f58953b3985361bae796bcf5dbe00d970482
commit fdb1f58953b3985361bae796bcf5dbe00d970482
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Mon Nov 2 09:35:57 2020 -0500
rs6000: Add Power10 builtins
2020-11-02 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Add power10 and power10-64
builtins.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 378 +++++++++++++++++++++++++++++++
1 file changed, 378 insertions(+)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index 0f924e1142e..6bda0aba4ec 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -2787,3 +2787,381 @@
pure vuc __builtin_vsx_xl_len_r (void *, unsigned long long);
XL_LEN_R xl_len_r {}
+
+
+[power10]
+ const unsigned long long __builtin_altivec_cntmbb (vuc, const int<1>);
+ VCNTMBB vec_cntmb_v16qi {}
+
+ const unsigned long long __builtin_altivec_cntmbd (vull, const int<1>);
+ VCNTMBD vec_cntmb_v2di {}
+
+ const unsigned long long __builtin_altivec_cntmbh (vus, const int<1>);
+ VCNTMBH vec_cntmb_v8hi {}
+
+ const unsigned long long __builtin_altivec_cntmbw (vui, const int<1>);
+ VCNTMBW vec_cntmb_v4si {}
+
+ const vuc __builtin_altivec_mtvsrbm (unsigned long long);
+ MTVSRBM vec_mtvsr_v16qi {}
+
+ const vull __builtin_altivec_mtvsrdm (unsigned long long);
+ MTVSRDM vec_mtvsr_v2di {}
+
+ const vus __builtin_altivec_mtvsrhm (unsigned long long);
+ MTVSRHM vec_mtvsr_v8hi {}
+
+ const vuq __builtin_altivec_mtvsrqm (unsigned long long);
+ MTVSRQM vec_mtvsr_v1ti {}
+
+ const vui __builtin_altivec_mtvsrwm (unsigned long long);
+ MTVSRWM vec_mtvsr_v4si {}
+
+ pure vsq __builtin_altivec_se_lxvrbx (signed long long, signed char *);
+ SE_LXVRBX nothing {lxvr}
+
+ pure vsq __builtin_altivec_se_lxvrhx (signed long long, signed short *);
+ SE_LXVRHX nothing {lxvr}
+
+ pure vsq __builtin_altivec_se_lxvrwx (signed long long, signed int *);
+ SE_LXVRWX nothing {lxvr}
+
+ pure vsq __builtin_altivec_se_lxvrdx (signed long long, signed long long *);
+ SE_LXVRDX nothing {lxvr}
+
+ void __builtin_altivec_tr_stxvrbx (vsq, signed long long, signed char *);
+ TR_STXVRBX nothing {stvec}
+
+ void __builtin_altivec_tr_stxvrhx (vsq, signed long long, signed int *);
+ TR_STXVRHX nothing {stvec}
+
+ void __builtin_altivec_tr_stxvrwx (vsq, signed long long, signed short *);
+ TR_STXVRWX nothing {stvec}
+
+ void __builtin_altivec_tr_stxvrdx (vsq, signed long long, signed long long *);
+ TR_STXVRDX nothing {stvec}
+
+ const vull __builtin_altivec_vcfuged (vull, vull);
+ VCFUGED vcfuged {}
+
+ const vsc __builtin_altivec_vclrlb (vsc, unsigned int);
+ VCLRLB vclrlb {}
+
+ const vsc __builtin_altivec_vclrrb (vsc, unsigned int);
+ VCLRRB vclrrb {}
+
+ const vull __builtin_altivec_vclzdm (vull, vull);
+ VCLZDM vclzdm {}
+
+ const vull __builtin_altivec_vctzdm (vull, vull);
+ VCTZDM vctzdm {}
+
+ const vuc __builtin_altivec_vexpandmb (vuc);
+ VEXPANDMB vec_expand_v16qi {}
+
+ const vull __builtin_altivec_vexpandmd (vull);
+ VEXPANDMD vec_expand_v2di {}
+
+ const vus __builtin_altivec_vexpandmh (vus);
+ VEXPANDMH vec_expand_v8hi {}
+
+ const vuq __builtin_altivec_vexpandmq (vuq);
+ VEXPANDMQ vec_expand_v1ti {}
+
+ const vui __builtin_altivec_vexpandmw (vui);
+ VEXPANDMW vec_expand_v4si {}
+
+ const vull __builtin_altivec_vextddvhx (vull, vull, unsigned char);
+ VEXTRACTDR vextractrv2di {}
+
+ const vull __builtin_altivec_vextddvlx (vull, vull, unsigned char);
+ VEXTRACTDL vextractlv2di {}
+
+ const vull __builtin_altivec_vextdubvhx (vuc, vuc, unsigned char);
+ VEXTRACTBR vextractrv16qi {}
+
+ const vull __builtin_altivec_vextdubvlx (vuc, vuc, unsigned char);
+ VEXTRACTBL vextractlv16qi {}
+
+ const vull __builtin_altivec_vextduhvhx (vus, vus, unsigned char);
+ VEXTRACTHR vextractrv8hi {}
+
+ const vull __builtin_altivec_vextduhvlx (vus, vus, unsigned char);
+ VEXTRACTHL vextractlv8hi {}
+
+ const vull __builtin_altivec_vextduwvhx (vui, vui, unsigned char);
+ VEXTRACTWR vextractrv4si {}
+
+ const vull __builtin_altivec_vextduwvlx (vui, vui, unsigned char);
+ VEXTRACTWL vextractlv4si {}
+
+ const signed int __builtin_altivec_vextractmb (vuc);
+ VEXTRACTMB vec_extract_v16qi {}
+
+ const signed int __builtin_altivec_vextractmd (vull);
+ VEXTRACTMD vec_extract_v2di {}
+
+ const signed int __builtin_altivec_vextractmh (vus);
+ VEXTRACTMH vec_extract_v8hi {}
+
+ const signed int __builtin_altivec_vextractmq (vuq);
+ VEXTRACTMQ vec_extract_v1ti {}
+
+ const signed int __builtin_altivec_vextractmw (vui);
+ VEXTRACTMW vec_extract_v4si {}
+
+ const unsigned long long __builtin_altivec_vgnb (vuq, const int <2,7>);
+ VGNB vgnb {}
+
+ const vuc __builtin_altivec_vinsgubvlx (unsigned char, vuc, unsigned int);
+ VINSERTGPRBL vinsertgl_v16qi {}
+
+ const vuc __builtin_altivec_vinsgubvrx (unsigned char, vuc, unsigned int);
+ VINSERTGPRBR vinsertgr_v16qi {}
+
+ const vull __builtin_altivec_vinsgudvlx (unsigned long long, vull, unsigned int);
+ VINSERTGPRDL vinsertgl_v2di {}
+
+ const vull __builtin_altivec_vinsgudvrx (unsigned long long, vull, unsigned int);
+ VINSERTGPRDR vinsertgr_v2di {}
+
+ const vus __builtin_altivec_vinsguhvlx (unsigned short, vus, unsigned int);
+ VINSERTGPRHL vinsertgl_v8hi {}
+
+ const vus __builtin_altivec_vinsguhvrx (unsigned short, vus, unsigned int);
+ VINSERTGPRHR vinsertgr_v8hi {}
+
+ const vui __builtin_altivec_vinsguwvlx (unsigned int, vui, unsigned int);
+ VINSERTGPRWL vinsertgl_v4si {}
+
+ const vui __builtin_altivec_vinsguwvrx (unsigned int, vui, unsigned int);
+ VINSERTGPRWR vinsertgr_v4si {}
+
+ const vuc __builtin_altivec_vinsvubvlx (vuc, vuc, unsigned int);
+ VINSERTVPRBL vinsertvl_v16qi {}
+
+ const vuc __builtin_altivec_vinsvubvrx (vuc, vuc, unsigned int);
+ VINSERTVPRBR vinsertvr_v16qi {}
+
+ const vus __builtin_altivec_vinsvuhvlx (vus, vus, unsigned int);
+ VINSERTVPRHL vinsertvl_v8hi {}
+
+ const vus __builtin_altivec_vinsvuhvrx (vus, vus, unsigned int);
+ VINSERTVPRHR vinsertvr_v8hi {}
+
+ const vui __builtin_altivec_vinsvuwvlx (vui, vui, unsigned int);
+ VINSERTVPRWL vinsertvl_v4si {}
+
+ const vui __builtin_altivec_vinsvuwvrx (vui, vui, unsigned int);
+ VINSERTVPRWR vinsertvr_v4si {}
+
+ const vull __builtin_altivec_vpdepd (vull, vull);
+ VPDEPD vpdepd {}
+
+ const vull __builtin_altivec_vpextd (vull, vull);
+ VPEXTD vpextd {}
+
+ const vull __builtin_altivec_vreplace_un_uv2di (vull, unsigned long long, const int<4>);
+ VREPLACE_UN_UV2DI vreplace_un_v2di {}
+
+ const vui __builtin_altivec_vreplace_un_uv4si (vui, unsigned int, const int<4>);
+ VREPLACE_UN_UV4SI vreplace_un_v4si {}
+
+ const vd __builtin_altivec_vreplace_un_v2df (vd, double, const int<4>);
+ VREPLACE_UN_V2DF vreplace_un_v2df {}
+
+ const vsll __builtin_altivec_vreplace_un_v2di (vsll, unsigned long long, const int<4>);
+ VREPLACE_UN_V2DI vreplace_un_v2di {}
+
+ const vf __builtin_altivec_vreplace_un_v4sf (vf, float, const int<4>);
+ VREPLACE_UN_V4SF vreplace_un_v4sf {}
+
+ const vsi __builtin_altivec_vreplace_un_v4si (vsi, signed int, const int<4>);
+ VREPLACE_UN_V4SI vreplace_un_v4si {}
+
+ const vull __builtin_altivec_vreplace_uv2di (vull, unsigned long long, const int<1>);
+ VREPLACE_ELT_UV2DI vreplace_elt_v2di {}
+
+ const vui __builtin_altivec_vreplace_uv4si (vui, unsigned int, const int<2>);
+ VREPLACE_ELT_UV4SI vreplace_elt_v4si {}
+
+ const vd __builtin_altivec_vreplace_v2df (vd, double, const int<1>);
+ VREPLACE_ELT_V2DF vreplace_elt_v2df {}
+
+ const vsll __builtin_altivec_vreplace_v2di (vsll, unsigned long long, const int<1>);
+ VREPLACE_ELT_V2DI vreplace_elt_v2di {}
+
+ const vf __builtin_altivec_vreplace_v4sf (vf, float, const int<2>);
+ VREPLACE_ELT_V4SF vreplace_elt_v4sf {}
+
+ const vsi __builtin_altivec_vreplace_v4si (vsi, signed int, const int<2>);
+ VREPLACE_ELT_V4SI vreplace_elt_v4si {}
+
+ const vsc __builtin_altivec_vsldb_v16qi (vsc, vsc, const int<3>);
+ VSLDB_V16QI vsldb_v16qi {}
+
+ const vsll __builtin_altivec_vsldb_v2di (vsll, vsll, const int<3>);
+ VSLDB_V2DI vsldb_v2di {}
+
+ const vsi __builtin_altivec_vsldb_v4si (vsi, vsi, const int<3>);
+ VSLDB_V4SI vsldb_v4si {}
+
+ const vss __builtin_altivec_vsldb_v8hi (vss, vss, const int<3>);
+ VSLDB_V8HI vsldb_v8hi {}
+
+ const vsc __builtin_altivec_vsrdb_v16qi (vsc, vsc, const int<3>);
+ VSRDB_V16QI vsrdb_v16qi {}
+
+ const vsll __builtin_altivec_vsrdb_v2di (vsll, vsll, const int<3>);
+ VSRDB_V2DI vsrdb_v2di {}
+
+ const vsi __builtin_altivec_vsrdb_v4si (vsi, vsi, const int<3>);
+ VSRDB_V4SI vsrdb_v4si {}
+
+ const vss __builtin_altivec_vsrdb_v8hi (vss, vss, const int<3>);
+ VSRDB_V8HI vsrdb_v8hi {}
+
+ const vsc __builtin_altivec_vstribl (vsc);
+ VSTRIBL vstril_v16qi {}
+
+ const signed int __builtin_altivec_vstribl_p (vsc);
+ VSTRIBL_P vstril_p_v16qi {}
+
+ const vsc __builtin_altivec_vstribr (vsc);
+ VSTRIBR vstrir_v16qi {}
+
+ const signed int __builtin_altivec_vstribr_p (vsc);
+ VSTRIBR_P vstrir_p_v16qi {}
+
+ const vss __builtin_altivec_vstrihl (vss);
+ VSTRIHL vstril_v8hi {}
+
+ const signed int __builtin_altivec_vstrihl_p (vss);
+ VSTRIHL_P vstril_p_v8hi {}
+
+ const vss __builtin_altivec_vstrihr (vss);
+ VSTRIHR vstrir_v8hi {}
+
+ const signed int __builtin_altivec_vstrihr_p (vss);
+ VSTRIHR_P vstrir_p_v8hi {}
+
+ const signed int __builtin_vsx_xvtlsbb_all_ones (vuc);
+ XVTLSBB_ONES xvtlsbbo {}
+
+ const signed int __builtin_vsx_xvtlsbb_all_zeros (vuc);
+ XVTLSBB_ZEROS xvtlsbbz {}
+
+ const vf __builtin_vsx_vxxsplti32dx_v4sf (vf, const int<1>, float);
+ VXXSPLTI32DX_V4SF xxsplti32dx_v4sf {}
+
+ const vsi __builtin_vsx_vxxsplti32dx_v4si (vsi, const int<1>, signed int);
+ VXXSPLTI32DX_V4SI xxsplti32dx_v4si {}
+
+ const vd __builtin_vsx_vxxspltidp (float);
+ VXXSPLTIDP xxspltidp_v2df {}
+
+ const vf __builtin_vsx_vxxspltiw_v4sf (float);
+ VXXSPLTIW_V4SF xxspltiw_v4sf {}
+
+ const vsi __builtin_vsx_vxxspltiw_v4si (signed int);
+ VXXSPLTIW_V4SI xxspltiw_v4si {}
+
+ const vuc __builtin_vsx_xvcvbf16spn (vuc);
+ XVCVBF16SPN vsx_xvcvbf16spn {}
+
+ const vuc __builtin_vsx_xvcvspbf16 (vuc);
+ XVCVSPBF16 vsx_xvcvspbf16 {}
+
+ const vuc __builtin_vsx_xxblend_v16qi (vuc, vuc, vuc);
+ VXXBLEND_V16QI xxblend_v16qi {}
+
+ const vd __builtin_vsx_xxblend_v2df (vd, vd, vull);
+ VXXBLEND_V2DF xxblend_v2df {}
+
+ const vull __builtin_vsx_xxblend_v2di (vull, vull, vull);
+ VXXBLEND_V2DI xxblend_v2di {}
+
+ const vf __builtin_vsx_xxblend_v4sf (vf, vf, vui);
+ VXXBLEND_V4SF xxblend_v4sf {}
+
+ const vui __builtin_vsx_xxblend_v4si (vui, vui, vui);
+ VXXBLEND_V4SI xxblend_v4si {}
+
+ const vus __builtin_vsx_xxblend_v8hi (vus, vus, vus);
+ VXXBLEND_V8HI xxblend_v8hi {}
+
+ const vop __builtin_vsx_xxeval (vop, vop, vop, const int <8>);
+ XXEVAL xxeval {}
+
+ const vuc __builtin_vsx_xxgenpcvm_v16qi (vuc, const int <2>);
+ XXGENPCVM_V16QI xxgenpcvm_v16qi {}
+
+ const vull __builtin_vsx_xxgenpcvm_v2di (vull, const int <2>);
+ XXGENPCVM_V2DI xxgenpcvm_v2di {}
+
+ const vui __builtin_vsx_xxgenpcvm_v4si (vui, const int <2>);
+ XXGENPCVM_V4SI xxgenpcvm_v4si {}
+
+ const vus __builtin_vsx_xxgenpcvm_v8hi (vus, const int <2>);
+ XXGENPCVM_V8HI xxgenpcvm_v8hi {}
+
+; TODO: This was quite hackish in the original code, and we may need to add
+; mode-specific expansions rather than using CODE_FOR_xxpermx throughout.
+ const vuc __builtin_vsx_xxpermx_uv16qi (vuc, vuc, vuc, const int<3>);
+ XXPERMX_UV16QI xxpermx {}
+
+ const vull __builtin_vsx_xxpermx_uv2di (vull, vull, vuc, const int<3>);
+ XXPERMX_UV2DI xxpermx {}
+
+ const vui __builtin_vsx_xxpermx_uv4si (vui, vui, vuc, const int<3>);
+ XXPERMX_UV4SI xxpermx {}
+
+ const vus __builtin_vsx_xxpermx_uv8hi (vus, vus, vuc, const int<3>);
+ XXPERMX_UV8HI xxpermx {}
+
+ const vsc __builtin_vsx_xxpermx_v16qi (vsc, vsc, vuc, const int<3>);
+ XXPERMX_V16QI xxpermx {}
+
+ const vd __builtin_vsx_xxpermx_v2df (vd, vd, vuc, const int<3>);
+ XXPERMX_V2DF xxpermx {}
+
+ const vsll __builtin_vsx_xxpermx_v2di (vsll, vsll, vuc, const int<3>);
+ XXPERMX_V2DI xxpermx {}
+
+ const vf __builtin_vsx_xxpermx_v4sf (vf, vf, vuc, const int<3>);
+ XXPERMX_V4SF xxpermx {}
+
+ const vsi __builtin_vsx_xxpermx_v4si (vsi, vsi, vuc, const int<3>);
+ XXPERMX_V4SI xxpermx {}
+
+ const vss __builtin_vsx_xxpermx_v8hi (vss, vss, vuc, const int<3>);
+ XXPERMX_V8HI xxpermx {}
+
+ pure vuq __builtin_altivec_ze_lxvrbx (signed long long, unsigned char *);
+ ZE_LXVRBX nothing {lxvr}
+
+ pure vuq __builtin_altivec_ze_lxvrhx (signed long long, unsigned short *);
+ ZE_LXVRHX nothing {lxvr}
+
+ pure vuq __builtin_altivec_ze_lxvrwx (signed long long, unsigned int *);
+ ZE_LXVRWX nothing {lxvr}
+
+ pure vuq __builtin_altivec_ze_lxvrdx (signed long long, unsigned long long *);
+ ZE_LXVRDX nothing {lxvr}
+
+
+[power10-64]
+ const unsigned long long __builtin_cfuged (unsigned long long, unsigned long long);
+ CFUGED cfuged {}
+
+ const unsigned long long __builtin_cntlzdm (unsigned long long, unsigned long long);
+ CNTLZDM cntlzdm {}
+
+ const unsigned long long __builtin_cnttzdm (unsigned long long, unsigned long long);
+ CNTTZDM cnttzdm {}
+
+ const unsigned long long __builtin_pdepd (unsigned long long, unsigned long long);
+ PDEPD pdepd {}
+
+ const unsigned long long __builtin_pextd (unsigned long long, unsigned long long);
+ PEXTD pextd {}
^ permalink raw reply [flat|nested] 4+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins4)] rs6000: Add Power10 builtins
@ 2021-02-07 18:13 William Schmidt
0 siblings, 0 replies; 4+ messages in thread
From: William Schmidt @ 2021-02-07 18:13 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:a4282be4c5d346e3988a2b04b1517e107fccf33e
commit a4282be4c5d346e3988a2b04b1517e107fccf33e
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Mon Nov 2 09:35:57 2020 -0500
rs6000: Add Power10 builtins
2020-11-02 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Add power10 and power10-64
builtins.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 378 +++++++++++++++++++++++++++++++
1 file changed, 378 insertions(+)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index 0f924e1142e..6bda0aba4ec 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -2787,3 +2787,381 @@
pure vuc __builtin_vsx_xl_len_r (void *, unsigned long long);
XL_LEN_R xl_len_r {}
+
+
+[power10]
+ const unsigned long long __builtin_altivec_cntmbb (vuc, const int<1>);
+ VCNTMBB vec_cntmb_v16qi {}
+
+ const unsigned long long __builtin_altivec_cntmbd (vull, const int<1>);
+ VCNTMBD vec_cntmb_v2di {}
+
+ const unsigned long long __builtin_altivec_cntmbh (vus, const int<1>);
+ VCNTMBH vec_cntmb_v8hi {}
+
+ const unsigned long long __builtin_altivec_cntmbw (vui, const int<1>);
+ VCNTMBW vec_cntmb_v4si {}
+
+ const vuc __builtin_altivec_mtvsrbm (unsigned long long);
+ MTVSRBM vec_mtvsr_v16qi {}
+
+ const vull __builtin_altivec_mtvsrdm (unsigned long long);
+ MTVSRDM vec_mtvsr_v2di {}
+
+ const vus __builtin_altivec_mtvsrhm (unsigned long long);
+ MTVSRHM vec_mtvsr_v8hi {}
+
+ const vuq __builtin_altivec_mtvsrqm (unsigned long long);
+ MTVSRQM vec_mtvsr_v1ti {}
+
+ const vui __builtin_altivec_mtvsrwm (unsigned long long);
+ MTVSRWM vec_mtvsr_v4si {}
+
+ pure vsq __builtin_altivec_se_lxvrbx (signed long long, signed char *);
+ SE_LXVRBX nothing {lxvr}
+
+ pure vsq __builtin_altivec_se_lxvrhx (signed long long, signed short *);
+ SE_LXVRHX nothing {lxvr}
+
+ pure vsq __builtin_altivec_se_lxvrwx (signed long long, signed int *);
+ SE_LXVRWX nothing {lxvr}
+
+ pure vsq __builtin_altivec_se_lxvrdx (signed long long, signed long long *);
+ SE_LXVRDX nothing {lxvr}
+
+ void __builtin_altivec_tr_stxvrbx (vsq, signed long long, signed char *);
+ TR_STXVRBX nothing {stvec}
+
+ void __builtin_altivec_tr_stxvrhx (vsq, signed long long, signed int *);
+ TR_STXVRHX nothing {stvec}
+
+ void __builtin_altivec_tr_stxvrwx (vsq, signed long long, signed short *);
+ TR_STXVRWX nothing {stvec}
+
+ void __builtin_altivec_tr_stxvrdx (vsq, signed long long, signed long long *);
+ TR_STXVRDX nothing {stvec}
+
+ const vull __builtin_altivec_vcfuged (vull, vull);
+ VCFUGED vcfuged {}
+
+ const vsc __builtin_altivec_vclrlb (vsc, unsigned int);
+ VCLRLB vclrlb {}
+
+ const vsc __builtin_altivec_vclrrb (vsc, unsigned int);
+ VCLRRB vclrrb {}
+
+ const vull __builtin_altivec_vclzdm (vull, vull);
+ VCLZDM vclzdm {}
+
+ const vull __builtin_altivec_vctzdm (vull, vull);
+ VCTZDM vctzdm {}
+
+ const vuc __builtin_altivec_vexpandmb (vuc);
+ VEXPANDMB vec_expand_v16qi {}
+
+ const vull __builtin_altivec_vexpandmd (vull);
+ VEXPANDMD vec_expand_v2di {}
+
+ const vus __builtin_altivec_vexpandmh (vus);
+ VEXPANDMH vec_expand_v8hi {}
+
+ const vuq __builtin_altivec_vexpandmq (vuq);
+ VEXPANDMQ vec_expand_v1ti {}
+
+ const vui __builtin_altivec_vexpandmw (vui);
+ VEXPANDMW vec_expand_v4si {}
+
+ const vull __builtin_altivec_vextddvhx (vull, vull, unsigned char);
+ VEXTRACTDR vextractrv2di {}
+
+ const vull __builtin_altivec_vextddvlx (vull, vull, unsigned char);
+ VEXTRACTDL vextractlv2di {}
+
+ const vull __builtin_altivec_vextdubvhx (vuc, vuc, unsigned char);
+ VEXTRACTBR vextractrv16qi {}
+
+ const vull __builtin_altivec_vextdubvlx (vuc, vuc, unsigned char);
+ VEXTRACTBL vextractlv16qi {}
+
+ const vull __builtin_altivec_vextduhvhx (vus, vus, unsigned char);
+ VEXTRACTHR vextractrv8hi {}
+
+ const vull __builtin_altivec_vextduhvlx (vus, vus, unsigned char);
+ VEXTRACTHL vextractlv8hi {}
+
+ const vull __builtin_altivec_vextduwvhx (vui, vui, unsigned char);
+ VEXTRACTWR vextractrv4si {}
+
+ const vull __builtin_altivec_vextduwvlx (vui, vui, unsigned char);
+ VEXTRACTWL vextractlv4si {}
+
+ const signed int __builtin_altivec_vextractmb (vuc);
+ VEXTRACTMB vec_extract_v16qi {}
+
+ const signed int __builtin_altivec_vextractmd (vull);
+ VEXTRACTMD vec_extract_v2di {}
+
+ const signed int __builtin_altivec_vextractmh (vus);
+ VEXTRACTMH vec_extract_v8hi {}
+
+ const signed int __builtin_altivec_vextractmq (vuq);
+ VEXTRACTMQ vec_extract_v1ti {}
+
+ const signed int __builtin_altivec_vextractmw (vui);
+ VEXTRACTMW vec_extract_v4si {}
+
+ const unsigned long long __builtin_altivec_vgnb (vuq, const int <2,7>);
+ VGNB vgnb {}
+
+ const vuc __builtin_altivec_vinsgubvlx (unsigned char, vuc, unsigned int);
+ VINSERTGPRBL vinsertgl_v16qi {}
+
+ const vuc __builtin_altivec_vinsgubvrx (unsigned char, vuc, unsigned int);
+ VINSERTGPRBR vinsertgr_v16qi {}
+
+ const vull __builtin_altivec_vinsgudvlx (unsigned long long, vull, unsigned int);
+ VINSERTGPRDL vinsertgl_v2di {}
+
+ const vull __builtin_altivec_vinsgudvrx (unsigned long long, vull, unsigned int);
+ VINSERTGPRDR vinsertgr_v2di {}
+
+ const vus __builtin_altivec_vinsguhvlx (unsigned short, vus, unsigned int);
+ VINSERTGPRHL vinsertgl_v8hi {}
+
+ const vus __builtin_altivec_vinsguhvrx (unsigned short, vus, unsigned int);
+ VINSERTGPRHR vinsertgr_v8hi {}
+
+ const vui __builtin_altivec_vinsguwvlx (unsigned int, vui, unsigned int);
+ VINSERTGPRWL vinsertgl_v4si {}
+
+ const vui __builtin_altivec_vinsguwvrx (unsigned int, vui, unsigned int);
+ VINSERTGPRWR vinsertgr_v4si {}
+
+ const vuc __builtin_altivec_vinsvubvlx (vuc, vuc, unsigned int);
+ VINSERTVPRBL vinsertvl_v16qi {}
+
+ const vuc __builtin_altivec_vinsvubvrx (vuc, vuc, unsigned int);
+ VINSERTVPRBR vinsertvr_v16qi {}
+
+ const vus __builtin_altivec_vinsvuhvlx (vus, vus, unsigned int);
+ VINSERTVPRHL vinsertvl_v8hi {}
+
+ const vus __builtin_altivec_vinsvuhvrx (vus, vus, unsigned int);
+ VINSERTVPRHR vinsertvr_v8hi {}
+
+ const vui __builtin_altivec_vinsvuwvlx (vui, vui, unsigned int);
+ VINSERTVPRWL vinsertvl_v4si {}
+
+ const vui __builtin_altivec_vinsvuwvrx (vui, vui, unsigned int);
+ VINSERTVPRWR vinsertvr_v4si {}
+
+ const vull __builtin_altivec_vpdepd (vull, vull);
+ VPDEPD vpdepd {}
+
+ const vull __builtin_altivec_vpextd (vull, vull);
+ VPEXTD vpextd {}
+
+ const vull __builtin_altivec_vreplace_un_uv2di (vull, unsigned long long, const int<4>);
+ VREPLACE_UN_UV2DI vreplace_un_v2di {}
+
+ const vui __builtin_altivec_vreplace_un_uv4si (vui, unsigned int, const int<4>);
+ VREPLACE_UN_UV4SI vreplace_un_v4si {}
+
+ const vd __builtin_altivec_vreplace_un_v2df (vd, double, const int<4>);
+ VREPLACE_UN_V2DF vreplace_un_v2df {}
+
+ const vsll __builtin_altivec_vreplace_un_v2di (vsll, unsigned long long, const int<4>);
+ VREPLACE_UN_V2DI vreplace_un_v2di {}
+
+ const vf __builtin_altivec_vreplace_un_v4sf (vf, float, const int<4>);
+ VREPLACE_UN_V4SF vreplace_un_v4sf {}
+
+ const vsi __builtin_altivec_vreplace_un_v4si (vsi, signed int, const int<4>);
+ VREPLACE_UN_V4SI vreplace_un_v4si {}
+
+ const vull __builtin_altivec_vreplace_uv2di (vull, unsigned long long, const int<1>);
+ VREPLACE_ELT_UV2DI vreplace_elt_v2di {}
+
+ const vui __builtin_altivec_vreplace_uv4si (vui, unsigned int, const int<2>);
+ VREPLACE_ELT_UV4SI vreplace_elt_v4si {}
+
+ const vd __builtin_altivec_vreplace_v2df (vd, double, const int<1>);
+ VREPLACE_ELT_V2DF vreplace_elt_v2df {}
+
+ const vsll __builtin_altivec_vreplace_v2di (vsll, unsigned long long, const int<1>);
+ VREPLACE_ELT_V2DI vreplace_elt_v2di {}
+
+ const vf __builtin_altivec_vreplace_v4sf (vf, float, const int<2>);
+ VREPLACE_ELT_V4SF vreplace_elt_v4sf {}
+
+ const vsi __builtin_altivec_vreplace_v4si (vsi, signed int, const int<2>);
+ VREPLACE_ELT_V4SI vreplace_elt_v4si {}
+
+ const vsc __builtin_altivec_vsldb_v16qi (vsc, vsc, const int<3>);
+ VSLDB_V16QI vsldb_v16qi {}
+
+ const vsll __builtin_altivec_vsldb_v2di (vsll, vsll, const int<3>);
+ VSLDB_V2DI vsldb_v2di {}
+
+ const vsi __builtin_altivec_vsldb_v4si (vsi, vsi, const int<3>);
+ VSLDB_V4SI vsldb_v4si {}
+
+ const vss __builtin_altivec_vsldb_v8hi (vss, vss, const int<3>);
+ VSLDB_V8HI vsldb_v8hi {}
+
+ const vsc __builtin_altivec_vsrdb_v16qi (vsc, vsc, const int<3>);
+ VSRDB_V16QI vsrdb_v16qi {}
+
+ const vsll __builtin_altivec_vsrdb_v2di (vsll, vsll, const int<3>);
+ VSRDB_V2DI vsrdb_v2di {}
+
+ const vsi __builtin_altivec_vsrdb_v4si (vsi, vsi, const int<3>);
+ VSRDB_V4SI vsrdb_v4si {}
+
+ const vss __builtin_altivec_vsrdb_v8hi (vss, vss, const int<3>);
+ VSRDB_V8HI vsrdb_v8hi {}
+
+ const vsc __builtin_altivec_vstribl (vsc);
+ VSTRIBL vstril_v16qi {}
+
+ const signed int __builtin_altivec_vstribl_p (vsc);
+ VSTRIBL_P vstril_p_v16qi {}
+
+ const vsc __builtin_altivec_vstribr (vsc);
+ VSTRIBR vstrir_v16qi {}
+
+ const signed int __builtin_altivec_vstribr_p (vsc);
+ VSTRIBR_P vstrir_p_v16qi {}
+
+ const vss __builtin_altivec_vstrihl (vss);
+ VSTRIHL vstril_v8hi {}
+
+ const signed int __builtin_altivec_vstrihl_p (vss);
+ VSTRIHL_P vstril_p_v8hi {}
+
+ const vss __builtin_altivec_vstrihr (vss);
+ VSTRIHR vstrir_v8hi {}
+
+ const signed int __builtin_altivec_vstrihr_p (vss);
+ VSTRIHR_P vstrir_p_v8hi {}
+
+ const signed int __builtin_vsx_xvtlsbb_all_ones (vuc);
+ XVTLSBB_ONES xvtlsbbo {}
+
+ const signed int __builtin_vsx_xvtlsbb_all_zeros (vuc);
+ XVTLSBB_ZEROS xvtlsbbz {}
+
+ const vf __builtin_vsx_vxxsplti32dx_v4sf (vf, const int<1>, float);
+ VXXSPLTI32DX_V4SF xxsplti32dx_v4sf {}
+
+ const vsi __builtin_vsx_vxxsplti32dx_v4si (vsi, const int<1>, signed int);
+ VXXSPLTI32DX_V4SI xxsplti32dx_v4si {}
+
+ const vd __builtin_vsx_vxxspltidp (float);
+ VXXSPLTIDP xxspltidp_v2df {}
+
+ const vf __builtin_vsx_vxxspltiw_v4sf (float);
+ VXXSPLTIW_V4SF xxspltiw_v4sf {}
+
+ const vsi __builtin_vsx_vxxspltiw_v4si (signed int);
+ VXXSPLTIW_V4SI xxspltiw_v4si {}
+
+ const vuc __builtin_vsx_xvcvbf16spn (vuc);
+ XVCVBF16SPN vsx_xvcvbf16spn {}
+
+ const vuc __builtin_vsx_xvcvspbf16 (vuc);
+ XVCVSPBF16 vsx_xvcvspbf16 {}
+
+ const vuc __builtin_vsx_xxblend_v16qi (vuc, vuc, vuc);
+ VXXBLEND_V16QI xxblend_v16qi {}
+
+ const vd __builtin_vsx_xxblend_v2df (vd, vd, vull);
+ VXXBLEND_V2DF xxblend_v2df {}
+
+ const vull __builtin_vsx_xxblend_v2di (vull, vull, vull);
+ VXXBLEND_V2DI xxblend_v2di {}
+
+ const vf __builtin_vsx_xxblend_v4sf (vf, vf, vui);
+ VXXBLEND_V4SF xxblend_v4sf {}
+
+ const vui __builtin_vsx_xxblend_v4si (vui, vui, vui);
+ VXXBLEND_V4SI xxblend_v4si {}
+
+ const vus __builtin_vsx_xxblend_v8hi (vus, vus, vus);
+ VXXBLEND_V8HI xxblend_v8hi {}
+
+ const vop __builtin_vsx_xxeval (vop, vop, vop, const int <8>);
+ XXEVAL xxeval {}
+
+ const vuc __builtin_vsx_xxgenpcvm_v16qi (vuc, const int <2>);
+ XXGENPCVM_V16QI xxgenpcvm_v16qi {}
+
+ const vull __builtin_vsx_xxgenpcvm_v2di (vull, const int <2>);
+ XXGENPCVM_V2DI xxgenpcvm_v2di {}
+
+ const vui __builtin_vsx_xxgenpcvm_v4si (vui, const int <2>);
+ XXGENPCVM_V4SI xxgenpcvm_v4si {}
+
+ const vus __builtin_vsx_xxgenpcvm_v8hi (vus, const int <2>);
+ XXGENPCVM_V8HI xxgenpcvm_v8hi {}
+
+; TODO: This was quite hackish in the original code, and we may need to add
+; mode-specific expansions rather than using CODE_FOR_xxpermx throughout.
+ const vuc __builtin_vsx_xxpermx_uv16qi (vuc, vuc, vuc, const int<3>);
+ XXPERMX_UV16QI xxpermx {}
+
+ const vull __builtin_vsx_xxpermx_uv2di (vull, vull, vuc, const int<3>);
+ XXPERMX_UV2DI xxpermx {}
+
+ const vui __builtin_vsx_xxpermx_uv4si (vui, vui, vuc, const int<3>);
+ XXPERMX_UV4SI xxpermx {}
+
+ const vus __builtin_vsx_xxpermx_uv8hi (vus, vus, vuc, const int<3>);
+ XXPERMX_UV8HI xxpermx {}
+
+ const vsc __builtin_vsx_xxpermx_v16qi (vsc, vsc, vuc, const int<3>);
+ XXPERMX_V16QI xxpermx {}
+
+ const vd __builtin_vsx_xxpermx_v2df (vd, vd, vuc, const int<3>);
+ XXPERMX_V2DF xxpermx {}
+
+ const vsll __builtin_vsx_xxpermx_v2di (vsll, vsll, vuc, const int<3>);
+ XXPERMX_V2DI xxpermx {}
+
+ const vf __builtin_vsx_xxpermx_v4sf (vf, vf, vuc, const int<3>);
+ XXPERMX_V4SF xxpermx {}
+
+ const vsi __builtin_vsx_xxpermx_v4si (vsi, vsi, vuc, const int<3>);
+ XXPERMX_V4SI xxpermx {}
+
+ const vss __builtin_vsx_xxpermx_v8hi (vss, vss, vuc, const int<3>);
+ XXPERMX_V8HI xxpermx {}
+
+ pure vuq __builtin_altivec_ze_lxvrbx (signed long long, unsigned char *);
+ ZE_LXVRBX nothing {lxvr}
+
+ pure vuq __builtin_altivec_ze_lxvrhx (signed long long, unsigned short *);
+ ZE_LXVRHX nothing {lxvr}
+
+ pure vuq __builtin_altivec_ze_lxvrwx (signed long long, unsigned int *);
+ ZE_LXVRWX nothing {lxvr}
+
+ pure vuq __builtin_altivec_ze_lxvrdx (signed long long, unsigned long long *);
+ ZE_LXVRDX nothing {lxvr}
+
+
+[power10-64]
+ const unsigned long long __builtin_cfuged (unsigned long long, unsigned long long);
+ CFUGED cfuged {}
+
+ const unsigned long long __builtin_cntlzdm (unsigned long long, unsigned long long);
+ CNTLZDM cntlzdm {}
+
+ const unsigned long long __builtin_cnttzdm (unsigned long long, unsigned long long);
+ CNTTZDM cnttzdm {}
+
+ const unsigned long long __builtin_pdepd (unsigned long long, unsigned long long);
+ PDEPD pdepd {}
+
+ const unsigned long long __builtin_pextd (unsigned long long, unsigned long long);
+ PEXTD pextd {}
^ permalink raw reply [flat|nested] 4+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins4)] rs6000: Add Power10 builtins
@ 2020-12-16 18:06 William Schmidt
0 siblings, 0 replies; 4+ messages in thread
From: William Schmidt @ 2020-12-16 18:06 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:ddb0ee3d36c925f21e5a3c259a2c91743dce2807
commit ddb0ee3d36c925f21e5a3c259a2c91743dce2807
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Mon Nov 2 09:35:57 2020 -0500
rs6000: Add Power10 builtins
2020-11-02 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Add power10 and power10-64
builtins.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 378 +++++++++++++++++++++++++++++++
1 file changed, 378 insertions(+)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index 0f924e1142e..6bda0aba4ec 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -2787,3 +2787,381 @@
pure vuc __builtin_vsx_xl_len_r (void *, unsigned long long);
XL_LEN_R xl_len_r {}
+
+
+[power10]
+ const unsigned long long __builtin_altivec_cntmbb (vuc, const int<1>);
+ VCNTMBB vec_cntmb_v16qi {}
+
+ const unsigned long long __builtin_altivec_cntmbd (vull, const int<1>);
+ VCNTMBD vec_cntmb_v2di {}
+
+ const unsigned long long __builtin_altivec_cntmbh (vus, const int<1>);
+ VCNTMBH vec_cntmb_v8hi {}
+
+ const unsigned long long __builtin_altivec_cntmbw (vui, const int<1>);
+ VCNTMBW vec_cntmb_v4si {}
+
+ const vuc __builtin_altivec_mtvsrbm (unsigned long long);
+ MTVSRBM vec_mtvsr_v16qi {}
+
+ const vull __builtin_altivec_mtvsrdm (unsigned long long);
+ MTVSRDM vec_mtvsr_v2di {}
+
+ const vus __builtin_altivec_mtvsrhm (unsigned long long);
+ MTVSRHM vec_mtvsr_v8hi {}
+
+ const vuq __builtin_altivec_mtvsrqm (unsigned long long);
+ MTVSRQM vec_mtvsr_v1ti {}
+
+ const vui __builtin_altivec_mtvsrwm (unsigned long long);
+ MTVSRWM vec_mtvsr_v4si {}
+
+ pure vsq __builtin_altivec_se_lxvrbx (signed long long, signed char *);
+ SE_LXVRBX nothing {lxvr}
+
+ pure vsq __builtin_altivec_se_lxvrhx (signed long long, signed short *);
+ SE_LXVRHX nothing {lxvr}
+
+ pure vsq __builtin_altivec_se_lxvrwx (signed long long, signed int *);
+ SE_LXVRWX nothing {lxvr}
+
+ pure vsq __builtin_altivec_se_lxvrdx (signed long long, signed long long *);
+ SE_LXVRDX nothing {lxvr}
+
+ void __builtin_altivec_tr_stxvrbx (vsq, signed long long, signed char *);
+ TR_STXVRBX nothing {stvec}
+
+ void __builtin_altivec_tr_stxvrhx (vsq, signed long long, signed int *);
+ TR_STXVRHX nothing {stvec}
+
+ void __builtin_altivec_tr_stxvrwx (vsq, signed long long, signed short *);
+ TR_STXVRWX nothing {stvec}
+
+ void __builtin_altivec_tr_stxvrdx (vsq, signed long long, signed long long *);
+ TR_STXVRDX nothing {stvec}
+
+ const vull __builtin_altivec_vcfuged (vull, vull);
+ VCFUGED vcfuged {}
+
+ const vsc __builtin_altivec_vclrlb (vsc, unsigned int);
+ VCLRLB vclrlb {}
+
+ const vsc __builtin_altivec_vclrrb (vsc, unsigned int);
+ VCLRRB vclrrb {}
+
+ const vull __builtin_altivec_vclzdm (vull, vull);
+ VCLZDM vclzdm {}
+
+ const vull __builtin_altivec_vctzdm (vull, vull);
+ VCTZDM vctzdm {}
+
+ const vuc __builtin_altivec_vexpandmb (vuc);
+ VEXPANDMB vec_expand_v16qi {}
+
+ const vull __builtin_altivec_vexpandmd (vull);
+ VEXPANDMD vec_expand_v2di {}
+
+ const vus __builtin_altivec_vexpandmh (vus);
+ VEXPANDMH vec_expand_v8hi {}
+
+ const vuq __builtin_altivec_vexpandmq (vuq);
+ VEXPANDMQ vec_expand_v1ti {}
+
+ const vui __builtin_altivec_vexpandmw (vui);
+ VEXPANDMW vec_expand_v4si {}
+
+ const vull __builtin_altivec_vextddvhx (vull, vull, unsigned char);
+ VEXTRACTDR vextractrv2di {}
+
+ const vull __builtin_altivec_vextddvlx (vull, vull, unsigned char);
+ VEXTRACTDL vextractlv2di {}
+
+ const vull __builtin_altivec_vextdubvhx (vuc, vuc, unsigned char);
+ VEXTRACTBR vextractrv16qi {}
+
+ const vull __builtin_altivec_vextdubvlx (vuc, vuc, unsigned char);
+ VEXTRACTBL vextractlv16qi {}
+
+ const vull __builtin_altivec_vextduhvhx (vus, vus, unsigned char);
+ VEXTRACTHR vextractrv8hi {}
+
+ const vull __builtin_altivec_vextduhvlx (vus, vus, unsigned char);
+ VEXTRACTHL vextractlv8hi {}
+
+ const vull __builtin_altivec_vextduwvhx (vui, vui, unsigned char);
+ VEXTRACTWR vextractrv4si {}
+
+ const vull __builtin_altivec_vextduwvlx (vui, vui, unsigned char);
+ VEXTRACTWL vextractlv4si {}
+
+ const signed int __builtin_altivec_vextractmb (vuc);
+ VEXTRACTMB vec_extract_v16qi {}
+
+ const signed int __builtin_altivec_vextractmd (vull);
+ VEXTRACTMD vec_extract_v2di {}
+
+ const signed int __builtin_altivec_vextractmh (vus);
+ VEXTRACTMH vec_extract_v8hi {}
+
+ const signed int __builtin_altivec_vextractmq (vuq);
+ VEXTRACTMQ vec_extract_v1ti {}
+
+ const signed int __builtin_altivec_vextractmw (vui);
+ VEXTRACTMW vec_extract_v4si {}
+
+ const unsigned long long __builtin_altivec_vgnb (vuq, const int <2,7>);
+ VGNB vgnb {}
+
+ const vuc __builtin_altivec_vinsgubvlx (unsigned char, vuc, unsigned int);
+ VINSERTGPRBL vinsertgl_v16qi {}
+
+ const vuc __builtin_altivec_vinsgubvrx (unsigned char, vuc, unsigned int);
+ VINSERTGPRBR vinsertgr_v16qi {}
+
+ const vull __builtin_altivec_vinsgudvlx (unsigned long long, vull, unsigned int);
+ VINSERTGPRDL vinsertgl_v2di {}
+
+ const vull __builtin_altivec_vinsgudvrx (unsigned long long, vull, unsigned int);
+ VINSERTGPRDR vinsertgr_v2di {}
+
+ const vus __builtin_altivec_vinsguhvlx (unsigned short, vus, unsigned int);
+ VINSERTGPRHL vinsertgl_v8hi {}
+
+ const vus __builtin_altivec_vinsguhvrx (unsigned short, vus, unsigned int);
+ VINSERTGPRHR vinsertgr_v8hi {}
+
+ const vui __builtin_altivec_vinsguwvlx (unsigned int, vui, unsigned int);
+ VINSERTGPRWL vinsertgl_v4si {}
+
+ const vui __builtin_altivec_vinsguwvrx (unsigned int, vui, unsigned int);
+ VINSERTGPRWR vinsertgr_v4si {}
+
+ const vuc __builtin_altivec_vinsvubvlx (vuc, vuc, unsigned int);
+ VINSERTVPRBL vinsertvl_v16qi {}
+
+ const vuc __builtin_altivec_vinsvubvrx (vuc, vuc, unsigned int);
+ VINSERTVPRBR vinsertvr_v16qi {}
+
+ const vus __builtin_altivec_vinsvuhvlx (vus, vus, unsigned int);
+ VINSERTVPRHL vinsertvl_v8hi {}
+
+ const vus __builtin_altivec_vinsvuhvrx (vus, vus, unsigned int);
+ VINSERTVPRHR vinsertvr_v8hi {}
+
+ const vui __builtin_altivec_vinsvuwvlx (vui, vui, unsigned int);
+ VINSERTVPRWL vinsertvl_v4si {}
+
+ const vui __builtin_altivec_vinsvuwvrx (vui, vui, unsigned int);
+ VINSERTVPRWR vinsertvr_v4si {}
+
+ const vull __builtin_altivec_vpdepd (vull, vull);
+ VPDEPD vpdepd {}
+
+ const vull __builtin_altivec_vpextd (vull, vull);
+ VPEXTD vpextd {}
+
+ const vull __builtin_altivec_vreplace_un_uv2di (vull, unsigned long long, const int<4>);
+ VREPLACE_UN_UV2DI vreplace_un_v2di {}
+
+ const vui __builtin_altivec_vreplace_un_uv4si (vui, unsigned int, const int<4>);
+ VREPLACE_UN_UV4SI vreplace_un_v4si {}
+
+ const vd __builtin_altivec_vreplace_un_v2df (vd, double, const int<4>);
+ VREPLACE_UN_V2DF vreplace_un_v2df {}
+
+ const vsll __builtin_altivec_vreplace_un_v2di (vsll, unsigned long long, const int<4>);
+ VREPLACE_UN_V2DI vreplace_un_v2di {}
+
+ const vf __builtin_altivec_vreplace_un_v4sf (vf, float, const int<4>);
+ VREPLACE_UN_V4SF vreplace_un_v4sf {}
+
+ const vsi __builtin_altivec_vreplace_un_v4si (vsi, signed int, const int<4>);
+ VREPLACE_UN_V4SI vreplace_un_v4si {}
+
+ const vull __builtin_altivec_vreplace_uv2di (vull, unsigned long long, const int<1>);
+ VREPLACE_ELT_UV2DI vreplace_elt_v2di {}
+
+ const vui __builtin_altivec_vreplace_uv4si (vui, unsigned int, const int<2>);
+ VREPLACE_ELT_UV4SI vreplace_elt_v4si {}
+
+ const vd __builtin_altivec_vreplace_v2df (vd, double, const int<1>);
+ VREPLACE_ELT_V2DF vreplace_elt_v2df {}
+
+ const vsll __builtin_altivec_vreplace_v2di (vsll, unsigned long long, const int<1>);
+ VREPLACE_ELT_V2DI vreplace_elt_v2di {}
+
+ const vf __builtin_altivec_vreplace_v4sf (vf, float, const int<2>);
+ VREPLACE_ELT_V4SF vreplace_elt_v4sf {}
+
+ const vsi __builtin_altivec_vreplace_v4si (vsi, signed int, const int<2>);
+ VREPLACE_ELT_V4SI vreplace_elt_v4si {}
+
+ const vsc __builtin_altivec_vsldb_v16qi (vsc, vsc, const int<3>);
+ VSLDB_V16QI vsldb_v16qi {}
+
+ const vsll __builtin_altivec_vsldb_v2di (vsll, vsll, const int<3>);
+ VSLDB_V2DI vsldb_v2di {}
+
+ const vsi __builtin_altivec_vsldb_v4si (vsi, vsi, const int<3>);
+ VSLDB_V4SI vsldb_v4si {}
+
+ const vss __builtin_altivec_vsldb_v8hi (vss, vss, const int<3>);
+ VSLDB_V8HI vsldb_v8hi {}
+
+ const vsc __builtin_altivec_vsrdb_v16qi (vsc, vsc, const int<3>);
+ VSRDB_V16QI vsrdb_v16qi {}
+
+ const vsll __builtin_altivec_vsrdb_v2di (vsll, vsll, const int<3>);
+ VSRDB_V2DI vsrdb_v2di {}
+
+ const vsi __builtin_altivec_vsrdb_v4si (vsi, vsi, const int<3>);
+ VSRDB_V4SI vsrdb_v4si {}
+
+ const vss __builtin_altivec_vsrdb_v8hi (vss, vss, const int<3>);
+ VSRDB_V8HI vsrdb_v8hi {}
+
+ const vsc __builtin_altivec_vstribl (vsc);
+ VSTRIBL vstril_v16qi {}
+
+ const signed int __builtin_altivec_vstribl_p (vsc);
+ VSTRIBL_P vstril_p_v16qi {}
+
+ const vsc __builtin_altivec_vstribr (vsc);
+ VSTRIBR vstrir_v16qi {}
+
+ const signed int __builtin_altivec_vstribr_p (vsc);
+ VSTRIBR_P vstrir_p_v16qi {}
+
+ const vss __builtin_altivec_vstrihl (vss);
+ VSTRIHL vstril_v8hi {}
+
+ const signed int __builtin_altivec_vstrihl_p (vss);
+ VSTRIHL_P vstril_p_v8hi {}
+
+ const vss __builtin_altivec_vstrihr (vss);
+ VSTRIHR vstrir_v8hi {}
+
+ const signed int __builtin_altivec_vstrihr_p (vss);
+ VSTRIHR_P vstrir_p_v8hi {}
+
+ const signed int __builtin_vsx_xvtlsbb_all_ones (vuc);
+ XVTLSBB_ONES xvtlsbbo {}
+
+ const signed int __builtin_vsx_xvtlsbb_all_zeros (vuc);
+ XVTLSBB_ZEROS xvtlsbbz {}
+
+ const vf __builtin_vsx_vxxsplti32dx_v4sf (vf, const int<1>, float);
+ VXXSPLTI32DX_V4SF xxsplti32dx_v4sf {}
+
+ const vsi __builtin_vsx_vxxsplti32dx_v4si (vsi, const int<1>, signed int);
+ VXXSPLTI32DX_V4SI xxsplti32dx_v4si {}
+
+ const vd __builtin_vsx_vxxspltidp (float);
+ VXXSPLTIDP xxspltidp_v2df {}
+
+ const vf __builtin_vsx_vxxspltiw_v4sf (float);
+ VXXSPLTIW_V4SF xxspltiw_v4sf {}
+
+ const vsi __builtin_vsx_vxxspltiw_v4si (signed int);
+ VXXSPLTIW_V4SI xxspltiw_v4si {}
+
+ const vuc __builtin_vsx_xvcvbf16spn (vuc);
+ XVCVBF16SPN vsx_xvcvbf16spn {}
+
+ const vuc __builtin_vsx_xvcvspbf16 (vuc);
+ XVCVSPBF16 vsx_xvcvspbf16 {}
+
+ const vuc __builtin_vsx_xxblend_v16qi (vuc, vuc, vuc);
+ VXXBLEND_V16QI xxblend_v16qi {}
+
+ const vd __builtin_vsx_xxblend_v2df (vd, vd, vull);
+ VXXBLEND_V2DF xxblend_v2df {}
+
+ const vull __builtin_vsx_xxblend_v2di (vull, vull, vull);
+ VXXBLEND_V2DI xxblend_v2di {}
+
+ const vf __builtin_vsx_xxblend_v4sf (vf, vf, vui);
+ VXXBLEND_V4SF xxblend_v4sf {}
+
+ const vui __builtin_vsx_xxblend_v4si (vui, vui, vui);
+ VXXBLEND_V4SI xxblend_v4si {}
+
+ const vus __builtin_vsx_xxblend_v8hi (vus, vus, vus);
+ VXXBLEND_V8HI xxblend_v8hi {}
+
+ const vop __builtin_vsx_xxeval (vop, vop, vop, const int <8>);
+ XXEVAL xxeval {}
+
+ const vuc __builtin_vsx_xxgenpcvm_v16qi (vuc, const int <2>);
+ XXGENPCVM_V16QI xxgenpcvm_v16qi {}
+
+ const vull __builtin_vsx_xxgenpcvm_v2di (vull, const int <2>);
+ XXGENPCVM_V2DI xxgenpcvm_v2di {}
+
+ const vui __builtin_vsx_xxgenpcvm_v4si (vui, const int <2>);
+ XXGENPCVM_V4SI xxgenpcvm_v4si {}
+
+ const vus __builtin_vsx_xxgenpcvm_v8hi (vus, const int <2>);
+ XXGENPCVM_V8HI xxgenpcvm_v8hi {}
+
+; TODO: This was quite hackish in the original code, and we may need to add
+; mode-specific expansions rather than using CODE_FOR_xxpermx throughout.
+ const vuc __builtin_vsx_xxpermx_uv16qi (vuc, vuc, vuc, const int<3>);
+ XXPERMX_UV16QI xxpermx {}
+
+ const vull __builtin_vsx_xxpermx_uv2di (vull, vull, vuc, const int<3>);
+ XXPERMX_UV2DI xxpermx {}
+
+ const vui __builtin_vsx_xxpermx_uv4si (vui, vui, vuc, const int<3>);
+ XXPERMX_UV4SI xxpermx {}
+
+ const vus __builtin_vsx_xxpermx_uv8hi (vus, vus, vuc, const int<3>);
+ XXPERMX_UV8HI xxpermx {}
+
+ const vsc __builtin_vsx_xxpermx_v16qi (vsc, vsc, vuc, const int<3>);
+ XXPERMX_V16QI xxpermx {}
+
+ const vd __builtin_vsx_xxpermx_v2df (vd, vd, vuc, const int<3>);
+ XXPERMX_V2DF xxpermx {}
+
+ const vsll __builtin_vsx_xxpermx_v2di (vsll, vsll, vuc, const int<3>);
+ XXPERMX_V2DI xxpermx {}
+
+ const vf __builtin_vsx_xxpermx_v4sf (vf, vf, vuc, const int<3>);
+ XXPERMX_V4SF xxpermx {}
+
+ const vsi __builtin_vsx_xxpermx_v4si (vsi, vsi, vuc, const int<3>);
+ XXPERMX_V4SI xxpermx {}
+
+ const vss __builtin_vsx_xxpermx_v8hi (vss, vss, vuc, const int<3>);
+ XXPERMX_V8HI xxpermx {}
+
+ pure vuq __builtin_altivec_ze_lxvrbx (signed long long, unsigned char *);
+ ZE_LXVRBX nothing {lxvr}
+
+ pure vuq __builtin_altivec_ze_lxvrhx (signed long long, unsigned short *);
+ ZE_LXVRHX nothing {lxvr}
+
+ pure vuq __builtin_altivec_ze_lxvrwx (signed long long, unsigned int *);
+ ZE_LXVRWX nothing {lxvr}
+
+ pure vuq __builtin_altivec_ze_lxvrdx (signed long long, unsigned long long *);
+ ZE_LXVRDX nothing {lxvr}
+
+
+[power10-64]
+ const unsigned long long __builtin_cfuged (unsigned long long, unsigned long long);
+ CFUGED cfuged {}
+
+ const unsigned long long __builtin_cntlzdm (unsigned long long, unsigned long long);
+ CNTLZDM cntlzdm {}
+
+ const unsigned long long __builtin_cnttzdm (unsigned long long, unsigned long long);
+ CNTTZDM cnttzdm {}
+
+ const unsigned long long __builtin_pdepd (unsigned long long, unsigned long long);
+ PDEPD pdepd {}
+
+ const unsigned long long __builtin_pextd (unsigned long long, unsigned long long);
+ PEXTD pextd {}
^ permalink raw reply [flat|nested] 4+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins4)] rs6000: Add Power10 builtins
@ 2020-11-02 14:36 William Schmidt
0 siblings, 0 replies; 4+ messages in thread
From: William Schmidt @ 2020-11-02 14:36 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:8bdfc7c56f4056b9c0657ffd52889c52e37be00c
commit 8bdfc7c56f4056b9c0657ffd52889c52e37be00c
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Mon Nov 2 09:35:57 2020 -0500
rs6000: Add Power10 builtins
2020-11-02 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Add power10 and power10-64
builtins.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 378 +++++++++++++++++++++++++++++++
1 file changed, 378 insertions(+)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index 0f924e1142e..6bda0aba4ec 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -2787,3 +2787,381 @@
pure vuc __builtin_vsx_xl_len_r (void *, unsigned long long);
XL_LEN_R xl_len_r {}
+
+
+[power10]
+ const unsigned long long __builtin_altivec_cntmbb (vuc, const int<1>);
+ VCNTMBB vec_cntmb_v16qi {}
+
+ const unsigned long long __builtin_altivec_cntmbd (vull, const int<1>);
+ VCNTMBD vec_cntmb_v2di {}
+
+ const unsigned long long __builtin_altivec_cntmbh (vus, const int<1>);
+ VCNTMBH vec_cntmb_v8hi {}
+
+ const unsigned long long __builtin_altivec_cntmbw (vui, const int<1>);
+ VCNTMBW vec_cntmb_v4si {}
+
+ const vuc __builtin_altivec_mtvsrbm (unsigned long long);
+ MTVSRBM vec_mtvsr_v16qi {}
+
+ const vull __builtin_altivec_mtvsrdm (unsigned long long);
+ MTVSRDM vec_mtvsr_v2di {}
+
+ const vus __builtin_altivec_mtvsrhm (unsigned long long);
+ MTVSRHM vec_mtvsr_v8hi {}
+
+ const vuq __builtin_altivec_mtvsrqm (unsigned long long);
+ MTVSRQM vec_mtvsr_v1ti {}
+
+ const vui __builtin_altivec_mtvsrwm (unsigned long long);
+ MTVSRWM vec_mtvsr_v4si {}
+
+ pure vsq __builtin_altivec_se_lxvrbx (signed long long, signed char *);
+ SE_LXVRBX nothing {lxvr}
+
+ pure vsq __builtin_altivec_se_lxvrhx (signed long long, signed short *);
+ SE_LXVRHX nothing {lxvr}
+
+ pure vsq __builtin_altivec_se_lxvrwx (signed long long, signed int *);
+ SE_LXVRWX nothing {lxvr}
+
+ pure vsq __builtin_altivec_se_lxvrdx (signed long long, signed long long *);
+ SE_LXVRDX nothing {lxvr}
+
+ void __builtin_altivec_tr_stxvrbx (vsq, signed long long, signed char *);
+ TR_STXVRBX nothing {stvec}
+
+ void __builtin_altivec_tr_stxvrhx (vsq, signed long long, signed int *);
+ TR_STXVRHX nothing {stvec}
+
+ void __builtin_altivec_tr_stxvrwx (vsq, signed long long, signed short *);
+ TR_STXVRWX nothing {stvec}
+
+ void __builtin_altivec_tr_stxvrdx (vsq, signed long long, signed long long *);
+ TR_STXVRDX nothing {stvec}
+
+ const vull __builtin_altivec_vcfuged (vull, vull);
+ VCFUGED vcfuged {}
+
+ const vsc __builtin_altivec_vclrlb (vsc, unsigned int);
+ VCLRLB vclrlb {}
+
+ const vsc __builtin_altivec_vclrrb (vsc, unsigned int);
+ VCLRRB vclrrb {}
+
+ const vull __builtin_altivec_vclzdm (vull, vull);
+ VCLZDM vclzdm {}
+
+ const vull __builtin_altivec_vctzdm (vull, vull);
+ VCTZDM vctzdm {}
+
+ const vuc __builtin_altivec_vexpandmb (vuc);
+ VEXPANDMB vec_expand_v16qi {}
+
+ const vull __builtin_altivec_vexpandmd (vull);
+ VEXPANDMD vec_expand_v2di {}
+
+ const vus __builtin_altivec_vexpandmh (vus);
+ VEXPANDMH vec_expand_v8hi {}
+
+ const vuq __builtin_altivec_vexpandmq (vuq);
+ VEXPANDMQ vec_expand_v1ti {}
+
+ const vui __builtin_altivec_vexpandmw (vui);
+ VEXPANDMW vec_expand_v4si {}
+
+ const vull __builtin_altivec_vextddvhx (vull, vull, unsigned char);
+ VEXTRACTDR vextractrv2di {}
+
+ const vull __builtin_altivec_vextddvlx (vull, vull, unsigned char);
+ VEXTRACTDL vextractlv2di {}
+
+ const vull __builtin_altivec_vextdubvhx (vuc, vuc, unsigned char);
+ VEXTRACTBR vextractrv16qi {}
+
+ const vull __builtin_altivec_vextdubvlx (vuc, vuc, unsigned char);
+ VEXTRACTBL vextractlv16qi {}
+
+ const vull __builtin_altivec_vextduhvhx (vus, vus, unsigned char);
+ VEXTRACTHR vextractrv8hi {}
+
+ const vull __builtin_altivec_vextduhvlx (vus, vus, unsigned char);
+ VEXTRACTHL vextractlv8hi {}
+
+ const vull __builtin_altivec_vextduwvhx (vui, vui, unsigned char);
+ VEXTRACTWR vextractrv4si {}
+
+ const vull __builtin_altivec_vextduwvlx (vui, vui, unsigned char);
+ VEXTRACTWL vextractlv4si {}
+
+ const signed int __builtin_altivec_vextractmb (vuc);
+ VEXTRACTMB vec_extract_v16qi {}
+
+ const signed int __builtin_altivec_vextractmd (vull);
+ VEXTRACTMD vec_extract_v2di {}
+
+ const signed int __builtin_altivec_vextractmh (vus);
+ VEXTRACTMH vec_extract_v8hi {}
+
+ const signed int __builtin_altivec_vextractmq (vuq);
+ VEXTRACTMQ vec_extract_v1ti {}
+
+ const signed int __builtin_altivec_vextractmw (vui);
+ VEXTRACTMW vec_extract_v4si {}
+
+ const unsigned long long __builtin_altivec_vgnb (vuq, const int <2,7>);
+ VGNB vgnb {}
+
+ const vuc __builtin_altivec_vinsgubvlx (unsigned char, vuc, unsigned int);
+ VINSERTGPRBL vinsertgl_v16qi {}
+
+ const vuc __builtin_altivec_vinsgubvrx (unsigned char, vuc, unsigned int);
+ VINSERTGPRBR vinsertgr_v16qi {}
+
+ const vull __builtin_altivec_vinsgudvlx (unsigned long long, vull, unsigned int);
+ VINSERTGPRDL vinsertgl_v2di {}
+
+ const vull __builtin_altivec_vinsgudvrx (unsigned long long, vull, unsigned int);
+ VINSERTGPRDR vinsertgr_v2di {}
+
+ const vus __builtin_altivec_vinsguhvlx (unsigned short, vus, unsigned int);
+ VINSERTGPRHL vinsertgl_v8hi {}
+
+ const vus __builtin_altivec_vinsguhvrx (unsigned short, vus, unsigned int);
+ VINSERTGPRHR vinsertgr_v8hi {}
+
+ const vui __builtin_altivec_vinsguwvlx (unsigned int, vui, unsigned int);
+ VINSERTGPRWL vinsertgl_v4si {}
+
+ const vui __builtin_altivec_vinsguwvrx (unsigned int, vui, unsigned int);
+ VINSERTGPRWR vinsertgr_v4si {}
+
+ const vuc __builtin_altivec_vinsvubvlx (vuc, vuc, unsigned int);
+ VINSERTVPRBL vinsertvl_v16qi {}
+
+ const vuc __builtin_altivec_vinsvubvrx (vuc, vuc, unsigned int);
+ VINSERTVPRBR vinsertvr_v16qi {}
+
+ const vus __builtin_altivec_vinsvuhvlx (vus, vus, unsigned int);
+ VINSERTVPRHL vinsertvl_v8hi {}
+
+ const vus __builtin_altivec_vinsvuhvrx (vus, vus, unsigned int);
+ VINSERTVPRHR vinsertvr_v8hi {}
+
+ const vui __builtin_altivec_vinsvuwvlx (vui, vui, unsigned int);
+ VINSERTVPRWL vinsertvl_v4si {}
+
+ const vui __builtin_altivec_vinsvuwvrx (vui, vui, unsigned int);
+ VINSERTVPRWR vinsertvr_v4si {}
+
+ const vull __builtin_altivec_vpdepd (vull, vull);
+ VPDEPD vpdepd {}
+
+ const vull __builtin_altivec_vpextd (vull, vull);
+ VPEXTD vpextd {}
+
+ const vull __builtin_altivec_vreplace_un_uv2di (vull, unsigned long long, const int<4>);
+ VREPLACE_UN_UV2DI vreplace_un_v2di {}
+
+ const vui __builtin_altivec_vreplace_un_uv4si (vui, unsigned int, const int<4>);
+ VREPLACE_UN_UV4SI vreplace_un_v4si {}
+
+ const vd __builtin_altivec_vreplace_un_v2df (vd, double, const int<4>);
+ VREPLACE_UN_V2DF vreplace_un_v2df {}
+
+ const vsll __builtin_altivec_vreplace_un_v2di (vsll, unsigned long long, const int<4>);
+ VREPLACE_UN_V2DI vreplace_un_v2di {}
+
+ const vf __builtin_altivec_vreplace_un_v4sf (vf, float, const int<4>);
+ VREPLACE_UN_V4SF vreplace_un_v4sf {}
+
+ const vsi __builtin_altivec_vreplace_un_v4si (vsi, signed int, const int<4>);
+ VREPLACE_UN_V4SI vreplace_un_v4si {}
+
+ const vull __builtin_altivec_vreplace_uv2di (vull, unsigned long long, const int<1>);
+ VREPLACE_ELT_UV2DI vreplace_elt_v2di {}
+
+ const vui __builtin_altivec_vreplace_uv4si (vui, unsigned int, const int<2>);
+ VREPLACE_ELT_UV4SI vreplace_elt_v4si {}
+
+ const vd __builtin_altivec_vreplace_v2df (vd, double, const int<1>);
+ VREPLACE_ELT_V2DF vreplace_elt_v2df {}
+
+ const vsll __builtin_altivec_vreplace_v2di (vsll, unsigned long long, const int<1>);
+ VREPLACE_ELT_V2DI vreplace_elt_v2di {}
+
+ const vf __builtin_altivec_vreplace_v4sf (vf, float, const int<2>);
+ VREPLACE_ELT_V4SF vreplace_elt_v4sf {}
+
+ const vsi __builtin_altivec_vreplace_v4si (vsi, signed int, const int<2>);
+ VREPLACE_ELT_V4SI vreplace_elt_v4si {}
+
+ const vsc __builtin_altivec_vsldb_v16qi (vsc, vsc, const int<3>);
+ VSLDB_V16QI vsldb_v16qi {}
+
+ const vsll __builtin_altivec_vsldb_v2di (vsll, vsll, const int<3>);
+ VSLDB_V2DI vsldb_v2di {}
+
+ const vsi __builtin_altivec_vsldb_v4si (vsi, vsi, const int<3>);
+ VSLDB_V4SI vsldb_v4si {}
+
+ const vss __builtin_altivec_vsldb_v8hi (vss, vss, const int<3>);
+ VSLDB_V8HI vsldb_v8hi {}
+
+ const vsc __builtin_altivec_vsrdb_v16qi (vsc, vsc, const int<3>);
+ VSRDB_V16QI vsrdb_v16qi {}
+
+ const vsll __builtin_altivec_vsrdb_v2di (vsll, vsll, const int<3>);
+ VSRDB_V2DI vsrdb_v2di {}
+
+ const vsi __builtin_altivec_vsrdb_v4si (vsi, vsi, const int<3>);
+ VSRDB_V4SI vsrdb_v4si {}
+
+ const vss __builtin_altivec_vsrdb_v8hi (vss, vss, const int<3>);
+ VSRDB_V8HI vsrdb_v8hi {}
+
+ const vsc __builtin_altivec_vstribl (vsc);
+ VSTRIBL vstril_v16qi {}
+
+ const signed int __builtin_altivec_vstribl_p (vsc);
+ VSTRIBL_P vstril_p_v16qi {}
+
+ const vsc __builtin_altivec_vstribr (vsc);
+ VSTRIBR vstrir_v16qi {}
+
+ const signed int __builtin_altivec_vstribr_p (vsc);
+ VSTRIBR_P vstrir_p_v16qi {}
+
+ const vss __builtin_altivec_vstrihl (vss);
+ VSTRIHL vstril_v8hi {}
+
+ const signed int __builtin_altivec_vstrihl_p (vss);
+ VSTRIHL_P vstril_p_v8hi {}
+
+ const vss __builtin_altivec_vstrihr (vss);
+ VSTRIHR vstrir_v8hi {}
+
+ const signed int __builtin_altivec_vstrihr_p (vss);
+ VSTRIHR_P vstrir_p_v8hi {}
+
+ const signed int __builtin_vsx_xvtlsbb_all_ones (vuc);
+ XVTLSBB_ONES xvtlsbbo {}
+
+ const signed int __builtin_vsx_xvtlsbb_all_zeros (vuc);
+ XVTLSBB_ZEROS xvtlsbbz {}
+
+ const vf __builtin_vsx_vxxsplti32dx_v4sf (vf, const int<1>, float);
+ VXXSPLTI32DX_V4SF xxsplti32dx_v4sf {}
+
+ const vsi __builtin_vsx_vxxsplti32dx_v4si (vsi, const int<1>, signed int);
+ VXXSPLTI32DX_V4SI xxsplti32dx_v4si {}
+
+ const vd __builtin_vsx_vxxspltidp (float);
+ VXXSPLTIDP xxspltidp_v2df {}
+
+ const vf __builtin_vsx_vxxspltiw_v4sf (float);
+ VXXSPLTIW_V4SF xxspltiw_v4sf {}
+
+ const vsi __builtin_vsx_vxxspltiw_v4si (signed int);
+ VXXSPLTIW_V4SI xxspltiw_v4si {}
+
+ const vuc __builtin_vsx_xvcvbf16spn (vuc);
+ XVCVBF16SPN vsx_xvcvbf16spn {}
+
+ const vuc __builtin_vsx_xvcvspbf16 (vuc);
+ XVCVSPBF16 vsx_xvcvspbf16 {}
+
+ const vuc __builtin_vsx_xxblend_v16qi (vuc, vuc, vuc);
+ VXXBLEND_V16QI xxblend_v16qi {}
+
+ const vd __builtin_vsx_xxblend_v2df (vd, vd, vull);
+ VXXBLEND_V2DF xxblend_v2df {}
+
+ const vull __builtin_vsx_xxblend_v2di (vull, vull, vull);
+ VXXBLEND_V2DI xxblend_v2di {}
+
+ const vf __builtin_vsx_xxblend_v4sf (vf, vf, vui);
+ VXXBLEND_V4SF xxblend_v4sf {}
+
+ const vui __builtin_vsx_xxblend_v4si (vui, vui, vui);
+ VXXBLEND_V4SI xxblend_v4si {}
+
+ const vus __builtin_vsx_xxblend_v8hi (vus, vus, vus);
+ VXXBLEND_V8HI xxblend_v8hi {}
+
+ const vop __builtin_vsx_xxeval (vop, vop, vop, const int <8>);
+ XXEVAL xxeval {}
+
+ const vuc __builtin_vsx_xxgenpcvm_v16qi (vuc, const int <2>);
+ XXGENPCVM_V16QI xxgenpcvm_v16qi {}
+
+ const vull __builtin_vsx_xxgenpcvm_v2di (vull, const int <2>);
+ XXGENPCVM_V2DI xxgenpcvm_v2di {}
+
+ const vui __builtin_vsx_xxgenpcvm_v4si (vui, const int <2>);
+ XXGENPCVM_V4SI xxgenpcvm_v4si {}
+
+ const vus __builtin_vsx_xxgenpcvm_v8hi (vus, const int <2>);
+ XXGENPCVM_V8HI xxgenpcvm_v8hi {}
+
+; TODO: This was quite hackish in the original code, and we may need to add
+; mode-specific expansions rather than using CODE_FOR_xxpermx throughout.
+ const vuc __builtin_vsx_xxpermx_uv16qi (vuc, vuc, vuc, const int<3>);
+ XXPERMX_UV16QI xxpermx {}
+
+ const vull __builtin_vsx_xxpermx_uv2di (vull, vull, vuc, const int<3>);
+ XXPERMX_UV2DI xxpermx {}
+
+ const vui __builtin_vsx_xxpermx_uv4si (vui, vui, vuc, const int<3>);
+ XXPERMX_UV4SI xxpermx {}
+
+ const vus __builtin_vsx_xxpermx_uv8hi (vus, vus, vuc, const int<3>);
+ XXPERMX_UV8HI xxpermx {}
+
+ const vsc __builtin_vsx_xxpermx_v16qi (vsc, vsc, vuc, const int<3>);
+ XXPERMX_V16QI xxpermx {}
+
+ const vd __builtin_vsx_xxpermx_v2df (vd, vd, vuc, const int<3>);
+ XXPERMX_V2DF xxpermx {}
+
+ const vsll __builtin_vsx_xxpermx_v2di (vsll, vsll, vuc, const int<3>);
+ XXPERMX_V2DI xxpermx {}
+
+ const vf __builtin_vsx_xxpermx_v4sf (vf, vf, vuc, const int<3>);
+ XXPERMX_V4SF xxpermx {}
+
+ const vsi __builtin_vsx_xxpermx_v4si (vsi, vsi, vuc, const int<3>);
+ XXPERMX_V4SI xxpermx {}
+
+ const vss __builtin_vsx_xxpermx_v8hi (vss, vss, vuc, const int<3>);
+ XXPERMX_V8HI xxpermx {}
+
+ pure vuq __builtin_altivec_ze_lxvrbx (signed long long, unsigned char *);
+ ZE_LXVRBX nothing {lxvr}
+
+ pure vuq __builtin_altivec_ze_lxvrhx (signed long long, unsigned short *);
+ ZE_LXVRHX nothing {lxvr}
+
+ pure vuq __builtin_altivec_ze_lxvrwx (signed long long, unsigned int *);
+ ZE_LXVRWX nothing {lxvr}
+
+ pure vuq __builtin_altivec_ze_lxvrdx (signed long long, unsigned long long *);
+ ZE_LXVRDX nothing {lxvr}
+
+
+[power10-64]
+ const unsigned long long __builtin_cfuged (unsigned long long, unsigned long long);
+ CFUGED cfuged {}
+
+ const unsigned long long __builtin_cntlzdm (unsigned long long, unsigned long long);
+ CNTLZDM cntlzdm {}
+
+ const unsigned long long __builtin_cnttzdm (unsigned long long, unsigned long long);
+ CNTTZDM cnttzdm {}
+
+ const unsigned long long __builtin_pdepd (unsigned long long, unsigned long long);
+ PDEPD pdepd {}
+
+ const unsigned long long __builtin_pextd (unsigned long long, unsigned long long);
+ PEXTD pextd {}
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-02-07 18:13 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-24 16:44 [gcc(refs/users/wschmidt/heads/builtins4)] rs6000: Add Power10 builtins William Schmidt
-- strict thread matches above, loose matches on Subject: below --
2021-02-07 18:13 William Schmidt
2020-12-16 18:06 William Schmidt
2020-11-02 14:36 William Schmidt
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).