public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/wschmidt/heads/builtins3)] rs6000: More progress on the overload table
@ 2020-10-29 19:53 William Schmidt
0 siblings, 0 replies; 15+ messages in thread
From: William Schmidt @ 2020-10-29 19:53 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:fe2ac13a05a1d2fa8787c70178eaacd2b8016f7f
commit fe2ac13a05a1d2fa8787c70178eaacd2b8016f7f
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Wed Oct 21 09:02:59 2020 -0500
rs6000: More progress on the overload table
2020-10-21 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Small fixes.
* config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add
deprecation comments.
* config/rs6000/rs6000-overload.def: Add more entries.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 14 +-
gcc/config/rs6000/rs6000-call.c | 13 +-
gcc/config/rs6000/rs6000-overload.def | 1043 ++++++++++++++++++++++++++++++
3 files changed, 1062 insertions(+), 8 deletions(-)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index d6a93e6b279..08f6cdffdf8 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -361,7 +361,7 @@
STVEBX altivec_stvebx {stvec}
void __builtin_altivec_stvehx (vss, signed long long, void *);
- STVEHX_VSS altivec_stvehx {stvec}
+ STVEHX altivec_stvehx {stvec}
void __builtin_altivec_stvewx (vsi, signed long long, void *);
STVEWX altivec_stvewx {stvec}
@@ -1950,22 +1950,22 @@
const vus __builtin_vsx_xxsel_8hi_uns (vus, vus, vus);
XXSEL_8HI_UNS vector_select_v8hi_uns {}
- const vsc __builtin_vsx_xxsldwi_16qi (vsc, vsc, const int<5>);
+ const vsc __builtin_vsx_xxsldwi_16qi (vsc, vsc, const int<2>);
XXSLDWI_16QI vsx_xxsldwi_v16qi {}
- const vd __builtin_vsx_xxsldwi_2df (vd, vd, const int<5>);
+ const vd __builtin_vsx_xxsldwi_2df (vd, vd, const int<2>);
XXSLDWI_2DF vsx_xxsldwi_v2df {}
- const vsll __builtin_vsx_xxsldwi_2di (vsll, vsll, const int<5>);
+ const vsll __builtin_vsx_xxsldwi_2di (vsll, vsll, const int<2>);
XXSLDWI_2DI vsx_xxsldwi_v2di {}
- const vf __builtin_vsx_xxsldwi_4sf (vf, vf, const int<5>);
+ const vf __builtin_vsx_xxsldwi_4sf (vf, vf, const int<2>);
XXSLDWI_4SF vsx_xxsldwi_v4sf {}
- const vsi __builtin_vsx_xxsldwi_4si (vsi, vsi, const int<5>);
+ const vsi __builtin_vsx_xxsldwi_4si (vsi, vsi, const int<2>);
XXSLDWI_4SI vsx_xxsldwi_v4si {}
- const vss __builtin_vsx_xxsldwi_8hi (vss, vss, const int<5>);
+ const vss __builtin_vsx_xxsldwi_8hi (vss, vss, const int<2>);
XXSLDWI_8HI vsx_xxsldwi_v8hi {}
const vd __builtin_vsx_xxspltd_2df (vd, const int<1>);
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 10464f6df8d..1c16dffacdf 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -2864,6 +2864,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBSWS,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSUB* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSUBSWS, ALTIVEC_BUILTIN_VSUBSWS,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VSUBSWS, ALTIVEC_BUILTIN_VSUBSWS,
@@ -2918,6 +2920,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SI, RS6000_BTI_V16QI, RS6000_BTI_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_SUM4S, ALTIVEC_BUILTIN_VSUM4SHS,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V4SI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSUM4* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSUM4SHS, ALTIVEC_BUILTIN_VSUM4SHS,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VSUM4SBS, ALTIVEC_BUILTIN_VSUM4SBS,
@@ -3322,6 +3326,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ ALTIVEC_BUILTIN_VEC_MSUM, ALTIVEC_BUILTIN_VMSUMUDM,
RS6000_BTI_unsigned_V1TI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V1TI },
+ /* All ALTIVEC_BUILTIN_VEC_VMSUM* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMSUMSHM, ALTIVEC_BUILTIN_VMSUMSHM,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V4SI },
{ ALTIVEC_BUILTIN_VEC_VMSUMUHM, ALTIVEC_BUILTIN_VMSUMUHM,
@@ -3334,6 +3340,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI },
{ ALTIVEC_BUILTIN_VEC_MSUMS, ALTIVEC_BUILTIN_VMSUMSHS,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V4SI },
+ /* All ALTIVEC_BUILTIN_VEC_VMSUM* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMSUMSHS, ALTIVEC_BUILTIN_VMSUMSHS,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V4SI },
{ ALTIVEC_BUILTIN_VEC_VMSUMUHS, ALTIVEC_BUILTIN_VMSUMUHS,
@@ -3373,12 +3381,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_unsigned_V16QI },
{ ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI },
+ /* Next 1 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI },
{ ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI,
RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI },
{ ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI,
RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI },
+ /* Next 1 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI,
RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI },
@@ -3541,7 +3551,6 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI,
RS6000_BTI_void, RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI,
~RS6000_BTI_long_long },
- /* Next 1 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI,
RS6000_BTI_void, RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI,
~RS6000_BTI_unsigned_long_long },
@@ -3623,6 +3632,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI },
{ ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_STVEWX,
RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI },
+ /* All ALTIVEC_BUILTIN_VEC_STVE* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_STVEWX, ALTIVEC_BUILTIN_STVEWX,
RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float },
{ ALTIVEC_BUILTIN_VEC_STVEWX, ALTIVEC_BUILTIN_STVEWX,
diff --git a/gcc/config/rs6000/rs6000-overload.def b/gcc/config/rs6000/rs6000-overload.def
index 33e12121b45..ad50d8add27 100644
--- a/gcc/config/rs6000/rs6000-overload.def
+++ b/gcc/config/rs6000/rs6000-overload.def
@@ -376,6 +376,174 @@
vd __builtin_vec_doubleo (vf);
DOUBLEO_V4SF
+[VEC_DST, vec_dst, __builtin_vec_dst]
+ void __builtin_vec_dst (unsigned char *, const int, const int);
+ DST DST_UC
+ void __builtin_vec_dst (signed char *, const int, const int);
+ DST DST_SC
+ void __builtin_vec_dst (unsigned short *, const int, const int);
+ DST DST_US
+ void __builtin_vec_dst (signed short *, const int, const int);
+ DST DST_SS
+ void __builtin_vec_dst (unsigned int *, const int, const int);
+ DST DST_UI
+ void __builtin_vec_dst (signed int *, const int, const int);
+ DST DST_SI
+ void __builtin_vec_dst (unsigned long long *, const int, const int);
+ DST DST_ULL
+ void __builtin_vec_dst (signed long long *, const int, const int);
+ DST DST_SLL
+ void __builtin_vec_dst (float *, const int, const int);
+ DST DST_F
+ void __builtin_vec_dst (vuc *, const int, const int);
+ DST DST_VUC
+ void __builtin_vec_dst (vsc *, const int, const int);
+ DST DST_VSC
+ void __builtin_vec_dst (vbc *, const int, const int);
+ DST DST_VBC
+ void __builtin_vec_dst (vus *, const int, const int);
+ DST DST_VUS
+ void __builtin_vec_dst (vss *, const int, const int);
+ DST DST_VSS
+ void __builtin_vec_dst (vbs *, const int, const int);
+ DST DST_VBS
+ void __builtin_vec_dst (vp *, const int, const int);
+ DST DST_VP
+ void __builtin_vec_dst (vui *, const int, const int);
+ DST DST_VUI
+ void __builtin_vec_dst (vsi *, const int, const int);
+ DST DST_VSI
+ void __builtin_vec_dst (vbi *, const int, const int);
+ DST DST_VBI
+ void __builtin_vec_dst (vf *, const int, const int);
+ DST DST_VF
+
+[VEC_DSTST, vec_dstst, __builtin_vec_dstst]
+ void __builtin_vec_dstst (unsigned char *, const int, const int);
+ DSTST DSTST_UC
+ void __builtin_vec_dstst (signed char *, const int, const int);
+ DSTST DSTST_SC
+ void __builtin_vec_dstst (unsigned short *, const int, const int);
+ DSTST DSTST_US
+ void __builtin_vec_dstst (signed short *, const int, const int);
+ DSTST DSTST_SS
+ void __builtin_vec_dstst (unsigned int *, const int, const int);
+ DSTST DSTST_UI
+ void __builtin_vec_dstst (signed int *, const int, const int);
+ DSTST DSTST_SI
+ void __builtin_vec_dstst (unsigned long long *, const int, const int);
+ DSTST DSTST_ULL
+ void __builtin_vec_dstst (signed long long *, const int, const int);
+ DSTST DSTST_SLL
+ void __builtin_vec_dstst (float *, const int, const int);
+ DSTST DSTST_F
+ void __builtin_vec_dstst (vuc *, const int, const int);
+ DSTST DSTST_VUC
+ void __builtin_vec_dstst (vsc *, const int, const int);
+ DSTST DSTST_VSC
+ void __builtin_vec_dstst (vbc *, const int, const int);
+ DSTST DSTST_VBC
+ void __builtin_vec_dstst (vus *, const int, const int);
+ DSTST DSTST_VUS
+ void __builtin_vec_dstst (vss *, const int, const int);
+ DSTST DSTST_VSS
+ void __builtin_vec_dstst (vbs *, const int, const int);
+ DSTST DSTST_VBS
+ void __builtin_vec_dstst (vp *, const int, const int);
+ DSTST DSTST_VP
+ void __builtin_vec_dstst (vui *, const int, const int);
+ DSTST DSTST_VUI
+ void __builtin_vec_dstst (vsi *, const int, const int);
+ DSTST DSTST_VSI
+ void __builtin_vec_dstst (vbi *, const int, const int);
+ DSTST DSTST_VBI
+ void __builtin_vec_dstst (vf *, const int, const int);
+ DSTST DSTST_VF
+
+[VEC_DSTSTT, vec_dststt, __builtin_vec_dststt]
+ void __builtin_vec_dststt (unsigned char *, const int, const int);
+ DSTSTT DSTSTT_UC
+ void __builtin_vec_dststt (signed char *, const int, const int);
+ DSTSTT DSTSTT_SC
+ void __builtin_vec_dststt (unsigned short *, const int, const int);
+ DSTSTT DSTSTT_US
+ void __builtin_vec_dststt (signed short *, const int, const int);
+ DSTSTT DSTSTT_SS
+ void __builtin_vec_dststt (unsigned int *, const int, const int);
+ DSTSTT DSTSTT_UI
+ void __builtin_vec_dststt (signed int *, const int, const int);
+ DSTSTT DSTSTT_SI
+ void __builtin_vec_dststt (unsigned long long *, const int, const int);
+ DSTSTT DSTSTT_ULL
+ void __builtin_vec_dststt (signed long long *, const int, const int);
+ DSTSTT DSTSTT_SLL
+ void __builtin_vec_dststt (float *, const int, const int);
+ DSTSTT DSTSTT_F
+ void __builtin_vec_dststt (vuc *, const int, const int);
+ DSTSTT DSTSTT_VUC
+ void __builtin_vec_dststt (vsc *, const int, const int);
+ DSTSTT DSTSTT_VSC
+ void __builtin_vec_dststt (vbc *, const int, const int);
+ DSTSTT DSTSTT_VBC
+ void __builtin_vec_dststt (vus *, const int, const int);
+ DSTSTT DSTSTT_VUS
+ void __builtin_vec_dststt (vss *, const int, const int);
+ DSTSTT DSTSTT_VSS
+ void __builtin_vec_dststt (vbs *, const int, const int);
+ DSTSTT DSTSTT_VBS
+ void __builtin_vec_dststt (vp *, const int, const int);
+ DSTSTT DSTSTT_VP
+ void __builtin_vec_dststt (vui *, const int, const int);
+ DSTSTT DSTSTT_VUI
+ void __builtin_vec_dststt (vsi *, const int, const int);
+ DSTSTT DSTSTT_VSI
+ void __builtin_vec_dststt (vbi *, const int, const int);
+ DSTSTT DSTSTT_VBI
+ void __builtin_vec_dststt (vf *, const int, const int);
+ DSTSTT DSTSTT_VF
+
+[VEC_DSTT, vec_dstt, __builtin_vec_dstt]
+ void __builtin_vec_dstt (unsigned char *, const int, const int);
+ DSTT DSTT_UC
+ void __builtin_vec_dstt (signed char *, const int, const int);
+ DSTT DSTT_SC
+ void __builtin_vec_dstt (unsigned short *, const int, const int);
+ DSTT DSTT_US
+ void __builtin_vec_dstt (signed short *, const int, const int);
+ DSTT DSTT_SS
+ void __builtin_vec_dstt (unsigned int *, const int, const int);
+ DSTT DSTT_UI
+ void __builtin_vec_dstt (signed int *, const int, const int);
+ DSTT DSTT_SI
+ void __builtin_vec_dstt (unsigned long long *, const int, const int);
+ DSTT DSTT_ULL
+ void __builtin_vec_dstt (signed long long *, const int, const int);
+ DSTT DSTT_SLL
+ void __builtin_vec_dstt (float *, const int, const int);
+ DSTT DSTT_F
+ void __builtin_vec_dstt (vuc *, const int, const int);
+ DSTT DSTT_VUC
+ void __builtin_vec_dstt (vsc *, const int, const int);
+ DSTT DSTT_VSC
+ void __builtin_vec_dstt (vbc *, const int, const int);
+ DSTT DSTT_VBC
+ void __builtin_vec_dstt (vus *, const int, const int);
+ DSTT DSTT_VUS
+ void __builtin_vec_dstt (vss *, const int, const int);
+ DSTT DSTT_VSS
+ void __builtin_vec_dstt (vbs *, const int, const int);
+ DSTT DSTT_VBS
+ void __builtin_vec_dstt (vp *, const int, const int);
+ DSTT DSTT_VP
+ void __builtin_vec_dstt (vui *, const int, const int);
+ DSTT DSTT_VUI
+ void __builtin_vec_dstt (vsi *, const int, const int);
+ DSTT DSTT_VSI
+ void __builtin_vec_dstt (vbi *, const int, const int);
+ DSTT DSTT_VBI
+ void __builtin_vec_dstt (vf *, const int, const int);
+ DSTT DSTT_VF
+
[VEC_EXPTE, vec_expte, __builtin_vec_expte]
vf __builtin_vec_expte (vf);
VEXPTEFP
@@ -776,6 +944,24 @@
vuc __builtin_vec_lvsr (signed long long, signed char *);
LVSR LVSR_SC
+[VEC_MADD, vec_madd, __builtin_vec_madd]
+ vss __builtin_vec_madd (vss, vss, vss);
+ VMLADDUHM VMLADDUHM_VSS
+ vss __builtin_vec_madd (vss, vus, vus);
+ VMLADDUHM VMLADDUHM_VSSVUS
+ vss __builtin_vec_madd (vus, vss, vss);
+ VMLADDUHM VMLADDUHM_VUSVSS
+ vus __builtin_vec_madd (vss, vus, vus);
+ VMLADDUHM VMLADDUHM_VUS
+ vf __builtin_vec_madd (vf, vf, vf);
+ XVMADDSP
+ vd __builtin_vec_madd (vd, vd, vd);
+ XVMADDDP
+
+[VEC_MADDS, vec_madds, __builtin_vec_madds]
+ vss __builtin_vec_madds (vss, vss, vss);
+ VMHADDSHS
+
[VEC_MAX, vec_max, __builtin_vec_max]
vsc __builtin_vec_max (vsc, vsc);
VMAXSB
@@ -884,6 +1070,46 @@
vd __builtin_vec_min (vd, vd);
XVMINDP
+[VEC_MLADD, vec_mladd, __builtin_vec_mladd]
+ vss __builtin_vec_mladd (vss, vss, vss);
+ VMLADDUHM VMLADDUHM_VSS2
+ vss __builtin_vec_mladd (vss, vus, vus);
+ VMLADDUHM VMLADDUHM_VSSVUS2
+ vss __builtin_vec_mladd (vus, vss, vss);
+ VMLADDUHM VMLADDUHM_VUSVSS2
+ vus __builtin_vec_mladd (vus, vus, vus);
+ VMLADDUHM VMLADDUHM_VUS2
+
+[VEC_MRADDS, vec_mradds, __builtin_vec_mradds]
+ vss __builtin_vec_mradds (vss, vss, vss);
+ VMHRADDSHS
+
+[VEC_MSUB, vec_msub, __builtin_vec_msub]
+ vf __builtin_vec_msub (vf, vf, vf);
+ XVMSUBSP
+ vd __builtin_vec_msub (vd, vd, vd);
+ XVMSUBDP
+
+[VEC_MSUM, vec_msum, __builtin_vec_msum]
+ vui __builtin_vec_msum (vuc, vuc, vui);
+ VMSUMUBM
+ vsi __builtin_vec_msum (vsc, vuc, vsi);
+ VMSUMMBM
+ vui __builtin_vec_msum (vus, vus, vui);
+ VMSUMUHM
+ vsi __builtin_vec_msum (vss, vss, vsi);
+ VMSUMSHM
+ vsq __builtin_vec_msum (vsll, vsll, vsq);
+ VMSUMUDM VMSUMUDM_S
+ vuq __builtin_vec_msum (vull, vull, vuq);
+ VMSUMUDM VMSUMUDM_U
+
+[VEC_MSUMS, vec_msums, __builtin_vec_msums]
+ vui __builtin_vec_msums (vus, vus, vui);
+ VMSUMUHS
+ vsi __builtin_vec_msums (vss, vss, vsi);
+ VMSUMSHS
+
[VEC_MTVSCR, vec_mtvscr, __builtin_vec_mtvscr]
void __builtin_vec_mtvscr (vbc);
MTVSCR MTVSCR_VBC
@@ -968,6 +1194,18 @@
vd __builtin_vec_neg (vd);
NEG_V2DF
+[VEC_NMADD, vec_nmadd, __builtin_vec_nmadd]
+ vf __builtin_vec_nmadd (vf, vf, vf);
+ XVNMADDSP
+ vd __builtin_vec_nmadd (vd, vd, vd);
+ XVNMADDDP
+
+[VEC_NMSUB, vec_nmsub, __builtin_vec_nmsub]
+ vf __builtin_vec_nmsub (vf, vf, vf);
+ XVNMSUBSP
+ vd __builtin_vec_nmsub (vd, vd, vd);
+ XVNMSUBDP
+
[VEC_NOR, vec_nor, __builtin_vec_nor]
vsc __builtin_vec_nor (vsc, vsc);
VNOR_V16QI
@@ -1068,6 +1306,47 @@
vsi __builtin_vec_packs (vsll, vsll);
VPKSDSS
+[VEC_PERM, vec_perm, __builtin_vec_perm]
+ vsc __builtin_vec_perm (vsc, vsc, vuc);
+ VPERM_16QI
+ vuc __builtin_vec_perm (vuc, vuc, vuc);
+ VPERM_16QI_UNS VPERM_16QI_VUC
+ vbc __builtin_vec_perm (vbc, vbc, vuc);
+ VPERM_16QI_UNS VPERM_16QI_VBC
+ vss __builtin_vec_perm (vss, vss, vuc);
+ VPERM_8HI
+ vus __builtin_vec_perm (vus, vus, vuc);
+ VPERM_8HI_UNS VPERM_8HI_VUS
+ vbs __builtin_vec_perm (vbs, vbs, vuc);
+ VPERM_8HI_UNS VPERM_8HI_VBS
+ vp __builtin_vec_perm (vp, vp, vuc);
+ VPERM_8HI_UNS VPERM_8HI_VP
+ vsi __builtin_vec_perm (vsi, vsi, vuc);
+ VPERM_4SI
+ vui __builtin_vec_perm (vui, vui, vuc);
+ VPERM_4SI_UNS VPERM_4SI_VUI
+ vbi __builtin_vec_perm (vbi, vbi, vuc);
+ VPERM_4SI_UNS VPERM_4SI_VBI
+ vsll __builtin_vec_perm (vsll, vsll, vuc);
+ VPERM_2DI
+ vull __builtin_vec_perm (vull, vull, vuc);
+ VPERM_2DI_UNS VPERM_2DI_VULL
+ vbll __builtin_vec_perm (vbll, vbll, vuc);
+ VPERM_2DI_UNS VPERM_2DI_VBLL
+ vf __builtin_vec_perm (vf, vf, vuc);
+ VPERM_4SF
+ vd __builtin_vec_perm (vd, vd, vuc);
+ VPERM_2DF
+
+; TODO: There will be a separate CRYPTO_PERMXOR set with a SKIP directive
+[VEC_PERMXOR, vec_permxor, __builtin_vec_vpermxor]
+ vsc __builtin_vec_vpermxor (vsc, vsc, vsc);
+ VPERMXOR VPERMXOR_VSC
+ vuc __builtin_vec_vpermxor (vuc, vuc, vuc);
+ VPERMXOR VPERMXOR_VUC
+ vbc __builtin_vec_vpermxor (vbc, vbc, vbc);
+ VPERMXOR VPERMXOR_VBC
+
[VEC_RE, vec_re, __builtin_vec_re]
vf __builtin_vec_re (vf);
XVRESP
@@ -1134,6 +1413,64 @@
vd __builtin_vec_rsqrte (vd);
XVRSQRTEDP
+[VEC_SEL, vec_sel, __builtin_vec_sel]
+ vsc __builtin_vec_sel (vsc, vsc, vbc);
+ VSEL_16QI VSEL_16QI_B
+ vsc __builtin_vec_sel (vsc, vsc, vuc);
+ VSEL_16QI VSEL_16QI_U
+ vuc __builtin_vec_sel (vuc, vuc, vbc);
+ VSEL_16QI_UNS VSEL_16QI_UB
+ vuc __builtin_vec_sel (vuc, vuc, vuc);
+ VSEL_16QI_UNS VSEL_16QI_UU
+ vbc __builtin_vec_sel (vbc, vbc, vbc);
+ VSEL_16QI_UNS VSEL_16QI_BB
+ vbc __builtin_vec_sel (vbc, vbc, vuc);
+ VSEL_16QI_UNS VSEL_16QI_BU
+ vss __builtin_vec_sel (vss, vss, vbs);
+ VSEL_8HI VSEL_8HI_B
+ vss __builtin_vec_sel (vss, vss, vus);
+ VSEL_8HI VSEL_8HI_U
+ vus __builtin_vec_sel (vus, vus, vbs);
+ VSEL_8HI_UNS VSEL_8HI_UB
+ vus __builtin_vec_sel (vus, vus, vus);
+ VSEL_8HI_UNS VSEL_8HI_UU
+ vbs __builtin_vec_sel (vbs, vbs, vbs);
+ VSEL_8HI_UNS VSEL_8HI_BB
+ vbs __builtin_vec_sel (vbs, vbs, vus);
+ VSEL_8HI_UNS VSEL_8HI_BU
+ vsi __builtin_vec_sel (vsi, vsi, vbi);
+ VSEL_4SI VSEL_4SI_B
+ vsi __builtin_vec_sel (vsi, vsi, vui);
+ VSEL_4SI VSEL_4SI_U
+ vui __builtin_vec_sel (vui, vui, vbi);
+ VSEL_4SI_UNS VSEL_4SI_UB
+ vui __builtin_vec_sel (vui, vui, vui);
+ VSEL_4SI_UNS VSEL_4SI_UU
+ vbi __builtin_vec_sel (vbi, vbi, vbi);
+ VSEL_4SI_UNS VSEL_4SI_BB
+ vbi __builtin_vec_sel (vbi, vbi, vui);
+ VSEL_4SI_UNS VSEL_4SI_BU
+ vsll __builtin_vec_sel (vsll, vsll, vbll);
+ VSEL_2DI_B VSEL_2DI_B
+ vsll __builtin_vec_sel (vsll, vsll, vull);
+ VSEL_2DI_B VSEL_2DI_U
+ vull __builtin_vec_sel (vull, vull, vbll);
+ VSEL_2DI_UNS VSEL_2DI_UB
+ vull __builtin_vec_sel (vull, vull, vull);
+ VSEL_2DI_UNS VSEL_2DI_UU
+ vbll __builtin_vec_sel (vbll, vbll, vbll);
+ VSEL_2DI_UNS VSEL_2DI_BB
+ vbll __builtin_vec_sel (vbll, vbll, vull);
+ VSEL_2DI_UNS VSEL_2DI_BU
+ vf __builtin_vec_sel (vf, vf, vbll);
+ VSEL_4SF VSEL_4SF_B
+ vf __builtin_vec_sel (vf, vf, vull);
+ VSEL_4SF VSEL_4SF_U
+ vd __builtin_vec_sel (vd, vd, vbll);
+ VSEL_2DF VSEL_2DF_B
+ vd __builtin_vec_sel (vd, vd, vull);
+ VSEL_2DF VSEL_2DF_U
+
[VEC_SL, vec_sl, __builtin_vec_sl]
vsc __builtin_vec_sl (vsc, vuc);
VSLB VSLB_VSC
@@ -1152,6 +1489,56 @@
vull __builtin_vec_sl (vull, vull);
VSLD VSLD_VULL
+[VEC_SLD, vec_sld, __builtin_vec_sld]
+ vsc __builtin_vec_sld (vsc, vsc, const int);
+ VSLDOI_16QI VSLDOI_VSC
+ vbc __builtin_vec_sld (vbc, vbc, const int);
+ VSLDOI_16QI VSLDOI_VBC
+ vuc __builtin_vec_sld (vuc, vuc, const int);
+ VSLDOI_16QI VSLDOI_VUC
+ vss __builtin_vec_sld (vss, vss, const int);
+ VSLDOI_8HI VSLDOI_VSS
+ vbs __builtin_vec_sld (vbs, vbs, const int);
+ VSLDOI_8HI VSLDOI_VBS
+ vus __builtin_vec_sld (vus, vus, const int);
+ VSLDOI_8HI VSLDOI_VUS
+ vp __builtin_vec_sld (vp, vp, const int);
+ VSLDOI_8HI VSLDOI_VP
+ vsi __builtin_vec_sld (vsi, vsi, const int);
+ VSLDOI_4SI VSLDOI_VSI
+ vbi __builtin_vec_sld (vbi, vbi, const int);
+ VSLDOI_4SI VSLDOI_VBI
+ vui __builtin_vec_sld (vui, vui, const int);
+ VSLDOI_4SI VSLDOI_VUI
+ vsll __builtin_vec_sld (vsll, vsll, const int);
+ VSLDOI_2DI VSLDOI_VSLL
+ vbll __builtin_vec_sld (vbll, vbll, const int);
+ VSLDOI_2DI VSLDOI_VBLL
+ vull __builtin_vec_sld (vull, vull, const int);
+ VSLDOI_2DI VSLDOI_VULL
+ vf __builtin_vec_sld (vf, vf, const int);
+ VSLDOI_4SF
+ vd __builtin_vec_sld (vd, vd, const int);
+ VSLDOI_2DF
+
+[VEC_SLDW, vec_sldw, __builtin_vec_sldw]
+ vsc __builtin_vec_sldw (vsc, vsc, const int);
+ XXSLDWI_16QI XXSLDWI_VSC
+ vuc __builtin_vec_sldw (vuc, vuc, const int);
+ XXSLDWI_16QI XXSLDWI_VUC
+ vss __builtin_vec_sldw (vss, vss, const int);
+ XXSLDWI_16QI XXSLDWI_VSS
+ vus __builtin_vec_sldw (vus, vus, const int);
+ XXSLDWI_16QI XXSLDWI_VUS
+ vsi __builtin_vec_sldw (vsi, vsi, const int);
+ XXSLDWI_16QI XXSLDWI_VSI
+ vui __builtin_vec_sldw (vui, vui, const int);
+ XXSLDWI_16QI XXSLDWI_VUI
+ vsll __builtin_vec_sldw (vsll, vsll, const int);
+ XXSLDWI_16QI XXSLDWI_VSLL
+ vull __builtin_vec_sldw (vull, vull, const int);
+ XXSLDWI_16QI XXSLDWI_VULL
+
[VEC_SLL, vec_sll, __builtin_vec_sll]
vsc __builtin_vec_sll (vsc, vuc);
VSL VSL_VSC
@@ -1350,6 +1737,326 @@
vf __builtin_vec_sro (vf, vuc);
VSRO VSRO_VFU
+[VEC_ST, vec_st, __builtin_vec_st]
+ void __builtin_vec_st (vsc, signed long long, vsc *);
+ STVX_V16QI STVX_VSC
+ void __builtin_vec_st (vsc, signed long long, signed char *);
+ STVX_V16QI STVX_SC
+ void __builtin_vec_st (vuc, signed long long, vuc *);
+ STVX_V16QI STVX_VUC
+ void __builtin_vec_st (vuc, signed long long, unsigned char *);
+ STVX_V16QI STVX_UC
+ void __builtin_vec_st (vbc, signed long long, vbc *);
+ STVX_V16QI STVX_VBC
+ void __builtin_vec_st (vbc, signed long long, signed char *);
+ STVX_V16QI STVX_SC_B
+ void __builtin_vec_st (vbc, signed long long, unsigned char *);
+ STVX_V16QI STVX_UC_B
+ void __builtin_vec_st (vss, signed long long, vss *);
+ STVX_V8HI STVX_VSS
+ void __builtin_vec_st (vss, signed long long, signed short *);
+ STVX_V8HI STVX_SS
+ void __builtin_vec_st (vus, signed long long, vus *);
+ STVX_V8HI STVX_VUS
+ void __builtin_vec_st (vus, signed long long, unsigned short *);
+ STVX_V8HI STVX_US
+ void __builtin_vec_st (vbs, signed long long, vbs *);
+ STVX_V8HI STVX_VBS
+ void __builtin_vec_st (vbs, signed long long, signed short *);
+ STVX_V8HI STVX_SS_B
+ void __builtin_vec_st (vbs, signed long long, unsigned short *);
+ STVX_V8HI STVX_US_B
+ void __builtin_vec_st (vp, signed long long, vp *);
+ STVX_V8HI STVX_P
+ void __builtin_vec_st (vsi, signed long long, vsi *);
+ STVX_V4SI STVX_VSI
+ void __builtin_vec_st (vsi, signed long long, signed int *);
+ STVX_V4SI STVX_SI
+ void __builtin_vec_st (vui, signed long long, vui *);
+ STVX_V4SI STVX_VUI
+ void __builtin_vec_st (vui, signed long long, unsigned int *);
+ STVX_V4SI STVX_UI
+ void __builtin_vec_st (vbi, signed long long, vbi *);
+ STVX_V4SI STVX_VBI
+ void __builtin_vec_st (vbi, signed long long, signed int *);
+ STVX_V4SI STVX_SI_B
+ void __builtin_vec_st (vbi, signed long long, unsigned int *);
+ STVX_V4SI STVX_UI_B
+ void __builtin_vec_st (vsll, signed long long, vsll *);
+ STVX_V2DI STVX_VSLL
+ void __builtin_vec_st (vsll, signed long long, signed long long *);
+ STVX_V2DI STVX_SLL
+ void __builtin_vec_st (vull, signed long long, vull *);
+ STVX_V2DI STVX_VULL
+ void __builtin_vec_st (vull, signed long long, unsigned long long *);
+ STVX_V2DI STVX_ULL
+ void __builtin_vec_st (vbll, signed long long, vbll *);
+ STVX_V2DI STVX_VBLL
+ void __builtin_vec_st (vbll, signed long long, signed long long *);
+ STVX_V2DI STVX_SLL_B
+ void __builtin_vec_st (vbll, signed long long, unsigned long long *);
+ STVX_V2DI STVX_ULL_B
+ void __builtin_vec_st (vf, signed long long, vf *);
+ STVX_V4SF STVX_VF
+ void __builtin_vec_st (vf, signed long long, float *);
+ STVX_V4SF STVX_F
+ void __builtin_vec_st (vd, signed long long, vd *);
+ STVX_V2DF STVX_VD
+ void __builtin_vec_st (vd, signed long long, double *);
+ STVX_V2DF STVX_D
+
+[VEC_STE, vec_ste, __builtin_vec_ste]
+ void __builtin_vec_ste (vsc, signed long long, signed char *);
+ STVEBX STVEBX_S
+ void __builtin_vec_ste (vuc, signed long long, unsigned char *);
+ STVEBX STVEBX_U
+ void __builtin_vec_ste (vbc, signed long long, signed char *);
+ STVEBX STVEBX_BS
+ void __builtin_vec_ste (vbc, signed long long, unsigned char *);
+ STVEBX STVEBX_BU
+ void __builtin_vec_ste (vss, signed long long, signed short *);
+ STVEHX STVEHX_S
+ void __builtin_vec_ste (vus, signed long long, unsigned short *);
+ STVEHX STVEHX_U
+ void __builtin_vec_ste (vbs, signed long long, signed short *);
+ STVEHX STVEHX_BS
+ void __builtin_vec_ste (vbs, signed long long, unsigned short *);
+ STVEHX STVEHX_BU
+ void __builtin_vec_ste (vp, signed long long, signed short *);
+ STVEHX STVEHX_PS
+ void __builtin_vec_ste (vp, signed long long, unsigned short *);
+ STVEHX STVEHX_PU
+ void __builtin_vec_ste (vsi, signed long long, signed int *);
+ STVEWX STVEHWX_S
+ void __builtin_vec_ste (vui, signed long long, unsigned int *);
+ STVEWX STVEWX_U
+ void __builtin_vec_ste (vbi, signed long long, signed int *);
+ STVEWX STVEWX_BS
+ void __builtin_vec_ste (vbi, signed long long, unsigned int *);
+ STVEWX STVEWX_BU
+ void __builtin_vec_ste (vf, signed long long, float *);
+ STVEWX STVEWX_F
+
+[VEC_STL, vec_stl, __builtin_vec_stl]
+ void __builtin_vec_stl (vsc, signed long long, vsc *);
+ STVXL_V16QI STVXL_VSC
+ void __builtin_vec_stl (vsc, signed long long, signed char *);
+ STVXL_V16QI STVXL_SC
+ void __builtin_vec_stl (vuc, signed long long, vuc *);
+ STVXL_V16QI STVXL_VUC
+ void __builtin_vec_stl (vuc, signed long long, unsigned char *);
+ STVXL_V16QI STVXL_UC
+ void __builtin_vec_stl (vbc, signed long long, vbc *);
+ STVXL_V16QI STVXL_VBC
+ void __builtin_vec_stl (vbc, signed long long, signed char *);
+ STVXL_V16QI STVXL_SC_B
+ void __builtin_vec_stl (vbc, signed long long, unsigned char *);
+ STVXL_V16QI STVXL_UC_B
+ void __builtin_vec_stl (vss, signed long long, vss *);
+ STVXL_V8HI STVXL_VSS
+ void __builtin_vec_stl (vss, signed long long, signed short *);
+ STVXL_V8HI STVXL_SS
+ void __builtin_vec_stl (vus, signed long long, vus *);
+ STVXL_V8HI STVXL_VUS
+ void __builtin_vec_stl (vus, signed long long, unsigned short *);
+ STVXL_V8HI STVXL_US
+ void __builtin_vec_stl (vbs, signed long long, vbs *);
+ STVXL_V8HI STVXL_VBS
+ void __builtin_vec_stl (vbs, signed long long, signed short *);
+ STVXL_V8HI STVXL_SS_B
+ void __builtin_vec_stl (vbs, signed long long, unsigned short *);
+ STVXL_V8HI STVXL_US_B
+ void __builtin_vec_stl (vp, signed long long, vp *);
+ STVXL_V8HI STVXL_P
+ void __builtin_vec_stl (vsi, signed long long, vsi *);
+ STVXL_V4SI STVXL_VSI
+ void __builtin_vec_stl (vsi, signed long long, signed int *);
+ STVXL_V4SI STVXL_SI
+ void __builtin_vec_stl (vui, signed long long, vui *);
+ STVXL_V4SI STVXL_VUI
+ void __builtin_vec_stl (vui, signed long long, unsigned int *);
+ STVXL_V4SI STVXL_UI
+ void __builtin_vec_stl (vbi, signed long long, vbi *);
+ STVXL_V4SI STVXL_VBI
+ void __builtin_vec_stl (vbi, signed long long, signed int *);
+ STVXL_V4SI STVXL_SI_B
+ void __builtin_vec_stl (vbi, signed long long, unsigned int *);
+ STVXL_V4SI STVXL_UI_B
+ void __builtin_vec_stl (vsll, signed long long, vsll *);
+ STVXL_V2DI STVXL_VSLL
+ void __builtin_vec_stl (vsll, signed long long, signed long long *);
+ STVXL_V2DI STVXL_SLL
+ void __builtin_vec_stl (vull, signed long long, vull *);
+ STVXL_V2DI STVXL_VULL
+ void __builtin_vec_stl (vull, signed long long, unsigned long long *);
+ STVXL_V2DI STVXL_ULL
+ void __builtin_vec_stl (vbll, signed long long, vbll *);
+ STVXL_V2DI STVXL_VBLL
+ void __builtin_vec_stl (vbll, signed long long, signed long long *);
+ STVXL_V2DI STVXL_SLL_B
+ void __builtin_vec_stl (vbll, signed long long, unsigned long long *);
+ STVXL_V2DI STVXL_ULL_B
+ void __builtin_vec_stl (vf, signed long long, vf *);
+ STVXL_V4SF STVXL_VF
+ void __builtin_vec_stl (vf, signed long long, float *);
+ STVXL_V4SF STVXL_F
+ void __builtin_vec_stl (vd, signed long long, vd *);
+ STVXL_V2DF STVXL_VD
+ void __builtin_vec_stl (vd, signed long long, double *);
+ STVXL_V2DF STVXL_D
+
+[VEC_STVLX, vec_stvlx, __builtin_vec_stvlx]
+ void __builtin_vec_stvlx (vbc, signed long long, vbc *);
+ STVLX STVLX_VBC
+ void __builtin_vec_stvlx (vsc, signed long long, vsc *);
+ STVLX STVLX_VSC
+ void __builtin_vec_stvlx (vsc, signed long long, signed char *);
+ STVLX STVLX_SC
+ void __builtin_vec_stvlx (vuc, signed long long, vuc *);
+ STVLX STVLX_VUC
+ void __builtin_vec_stvlx (vuc, signed long long, unsigned char *);
+ STVLX STVLX_UC
+ void __builtin_vec_stvlx (vbs, signed long long, vbs *);
+ STVLX STVLX_VBS
+ void __builtin_vec_stvlx (vss, signed long long, vss *);
+ STVLX STVLX_VSS
+ void __builtin_vec_stvlx (vss, signed long long, signed short *);
+ STVLX STVLX_SS
+ void __builtin_vec_stvlx (vus, signed long long, vus *);
+ STVLX STVLX_VUS
+ void __builtin_vec_stvlx (vus, signed long long, unsigned short *);
+ STVLX STVLX_US
+ void __builtin_vec_stvlx (vp, signed long long, vp *);
+ STVLX STVLX_VP
+ void __builtin_vec_stvlx (vbi, signed long long, vbi *);
+ STVLX STVLX_VBI
+ void __builtin_vec_stvlx (vsi, signed long long, vsi *);
+ STVLX STVLX_VSI
+ void __builtin_vec_stvlx (vsi, signed long long, signed int *);
+ STVLX STVLX_SI
+ void __builtin_vec_stvlx (vui, signed long long, vui *);
+ STVLX STVLX_VUI
+ void __builtin_vec_stvlx (vui, signed long long, unsigned int *);
+ STVLX STVLX_UI
+ void __builtin_vec_stvlx (vf, signed long long, vf *);
+ STVLX STVLX_VF
+ void __builtin_vec_stvlx (vf, signed long long, float *);
+ STVLX STVLX_F
+
+[VEC_STVLXL, vec_stvlxl, __builtin_vec_stvlxl]
+ void __builtin_vec_stvlxl (vbc, signed long long, vbc *);
+ STVLXL STVLXL_VBC
+ void __builtin_vec_stvlxl (vsc, signed long long, vsc *);
+ STVLXL STVLXL_VSC
+ void __builtin_vec_stvlxl (vsc, signed long long, signed char *);
+ STVLXL STVLXL_SC
+ void __builtin_vec_stvlxl (vuc, signed long long, vuc *);
+ STVLXL STVLXL_VUC
+ void __builtin_vec_stvlxl (vuc, signed long long, unsigned char *);
+ STVLXL STVLXL_UC
+ void __builtin_vec_stvlxl (vbs, signed long long, vbs *);
+ STVLXL STVLXL_VBS
+ void __builtin_vec_stvlxl (vss, signed long long, vss *);
+ STVLXL STVLXL_VSS
+ void __builtin_vec_stvlxl (vss, signed long long, signed short *);
+ STVLXL STVLXL_SS
+ void __builtin_vec_stvlxl (vus, signed long long, vus *);
+ STVLXL STVLXL_VUS
+ void __builtin_vec_stvlxl (vus, signed long long, unsigned short *);
+ STVLXL STVLXL_US
+ void __builtin_vec_stvlxl (vp, signed long long, vp *);
+ STVLXL STVLXL_VP
+ void __builtin_vec_stvlxl (vbi, signed long long, vbi *);
+ STVLXL STVLXL_VBI
+ void __builtin_vec_stvlxl (vsi, signed long long, vsi *);
+ STVLXL STVLXL_VSI
+ void __builtin_vec_stvlxl (vsi, signed long long, signed int *);
+ STVLXL STVLXL_SI
+ void __builtin_vec_stvlxl (vui, signed long long, vui *);
+ STVLXL STVLXL_VUI
+ void __builtin_vec_stvlxl (vui, signed long long, unsigned int *);
+ STVLXL STVLXL_UI
+ void __builtin_vec_stvlxl (vf, signed long long, vf *);
+ STVLXL STVLXL_VF
+ void __builtin_vec_stvlxl (vf, signed long long, float *);
+ STVLXL STVLXL_F
+
+[VEC_STVRX, vec_stvrx, __builtin_vec_stvrx]
+ void __builtin_vec_stvrx (vbc, signed long long, vbc *);
+ STVRX STVRX_VBC
+ void __builtin_vec_stvrx (vsc, signed long long, vsc *);
+ STVRX STVRX_VSC
+ void __builtin_vec_stvrx (vsc, signed long long, signed char *);
+ STVRX STVRX_SC
+ void __builtin_vec_stvrx (vuc, signed long long, vuc *);
+ STVRX STVRX_VUC
+ void __builtin_vec_stvrx (vuc, signed long long, unsigned char *);
+ STVRX STVRX_UC
+ void __builtin_vec_stvrx (vbs, signed long long, vbs *);
+ STVRX STVRX_VBS
+ void __builtin_vec_stvrx (vss, signed long long, vss *);
+ STVRX STVRX_VSS
+ void __builtin_vec_stvrx (vss, signed long long, signed short *);
+ STVRX STVRX_SS
+ void __builtin_vec_stvrx (vus, signed long long, vus *);
+ STVRX STVRX_VUS
+ void __builtin_vec_stvrx (vus, signed long long, unsigned short *);
+ STVRX STVRX_US
+ void __builtin_vec_stvrx (vp, signed long long, vp *);
+ STVRX STVRX_VP
+ void __builtin_vec_stvrx (vbi, signed long long, vbi *);
+ STVRX STVRX_VBI
+ void __builtin_vec_stvrx (vsi, signed long long, vsi *);
+ STVRX STVRX_VSI
+ void __builtin_vec_stvrx (vsi, signed long long, signed int *);
+ STVRX STVRX_SI
+ void __builtin_vec_stvrx (vui, signed long long, vui *);
+ STVRX STVRX_VUI
+ void __builtin_vec_stvrx (vui, signed long long, unsigned int *);
+ STVRX STVRX_UI
+ void __builtin_vec_stvrx (vf, signed long long, vf *);
+ STVRX STVRX_VF
+ void __builtin_vec_stvrx (vf, signed long long, float *);
+ STVRX STVRX_F
+
+[VEC_STVRXL, vec_stvrxl, __builtin_vec_stvrxl]
+ void __builtin_vec_stvrxl (vbc, signed long long, vbc *);
+ STVRXL STVRXL_VBC
+ void __builtin_vec_stvrxl (vsc, signed long long, vsc *);
+ STVRXL STVRXL_VSC
+ void __builtin_vec_stvrxl (vsc, signed long long, signed char *);
+ STVRXL STVRXL_SC
+ void __builtin_vec_stvrxl (vuc, signed long long, vuc *);
+ STVRXL STVRXL_VUC
+ void __builtin_vec_stvrxl (vuc, signed long long, unsigned char *);
+ STVRXL STVRXL_UC
+ void __builtin_vec_stvrxl (vbs, signed long long, vbs *);
+ STVRXL STVRXL_VBS
+ void __builtin_vec_stvrxl (vss, signed long long, vss *);
+ STVRXL STVRXL_VSS
+ void __builtin_vec_stvrxl (vss, signed long long, signed short *);
+ STVRXL STVRXL_SS
+ void __builtin_vec_stvrxl (vus, signed long long, vus *);
+ STVRXL STVRXL_VUS
+ void __builtin_vec_stvrxl (vus, signed long long, unsigned short *);
+ STVRXL STVRXL_US
+ void __builtin_vec_stvrxl (vp, signed long long, vp *);
+ STVRXL STVRXL_VP
+ void __builtin_vec_stvrxl (vbi, signed long long, vbi *);
+ STVRXL STVRXL_VBI
+ void __builtin_vec_stvrxl (vsi, signed long long, vsi *);
+ STVRXL STVRXL_VSI
+ void __builtin_vec_stvrxl (vsi, signed long long, signed int *);
+ STVRXL STVRXL_SI
+ void __builtin_vec_stvrxl (vui, signed long long, vui *);
+ STVRXL STVRXL_VUI
+ void __builtin_vec_stvrxl (vui, signed long long, unsigned int *);
+ STVRXL STVRXL_UI
+ void __builtin_vec_stvrxl (vf, signed long long, vf *);
+ STVRXL STVRXL_VF
+ void __builtin_vec_stvrxl (vf, signed long long, float *);
+ STVRXL STVRXL_F
+
[VEC_SUB, vec_sub, __builtin_vec_sub]
vsc __builtin_vec_sub (vsc, vsc);
VSUBUBM VSUBUBM_VSC
@@ -1376,6 +2083,46 @@
vd __builtin_vec_sub (vd, vd);
XVSUBDP
+[VEC_SUBC, vec_subc, __builtin_vec_subc]
+ vsi __builtin_vec_subc (vsi, vsi);
+ VSUBCUW VSUBCUW_VSI
+ vui __builtin_vec_subc (vui, vui);
+ VSUBCUW VSUBCUW_VUI
+ vsq __builtin_vec_subc (vsq, vsq);
+ VSUBCUQ VSUBCUQ_VSQ
+ vuq __builtin_vec_subc (vuq, vuq);
+ VSUBCUQ VSUBCUQ_VUQ
+
+[VEC_SUBS, vec_subs, __builtin_vec_subs]
+ vuc __builtin_vec_subs (vuc, vuc);
+ VSUBUBS
+ vsc __builtin_vec_subs (vsc, vsc);
+ VSUBSBS
+ vus __builtin_vec_subs (vus, vus);
+ VSUBUHS
+ vss __builtin_vec_subs (vss, vss);
+ VSUBSHS
+ vui __builtin_vec_subs (vui, vui);
+ VSUBUWS
+ vsi __builtin_vec_subs (vsi, vsi);
+ VSUBSWS
+
+[VEC_SUM2S, vec_sum2s, __builtin_vec_sum2s]
+ vsi __builtin_vec_sum2s (vsi, vsi);
+ VSUM2SWS
+
+[VEC_SUM4S, vec_sum4s, __builtin_vec_sum4s]
+ vui __builtin_vec_sum4s (vuc, vui);
+ VSUM4UBS
+ vsi __builtin_vec_sum4s (vsc, vui);
+ VSUM4SBS
+ vsi __builtin_vec_sum4s (vss, vsi);
+ VSUM4SHS
+
+[VEC_SUMS, vec_sums, __builtin_vec_sums]
+ vsi __builtin_vec_sums (vsi, vsi);
+ VSUMSWS
+
[VEC_TRUNC, vec_trunc, __builtin_vec_trunc]
vf __builtin_vec_trunc (vf);
XVRSPIZ
@@ -1417,3 +2164,299 @@
VUPKLSW VUPKLSW_VBI
vd __builtin_vec_unpackl (vf);
DOUBLEL_V4SF VUPKLF
+
+[VEC_XL, vec_xl, __builtin_vec_vsx_ld]
+ vsc __builtin_vec_vsx_ld (signed long long, vsc *);
+ LXVW4X_V4SI LXVW4X_VSC
+ vsc __builtin_vec_vsx_ld (signed long long, signed char *);
+ LXVW4X_V4SI LXVW4X_SC
+ vuc __builtin_vec_vsx_ld (signed long long, vuc *);
+ LXVW4X_V4SI LXVW4X_VUC
+ vuc __builtin_vec_vsx_ld (signed long long, unsigned char *);
+ LXVW4X_V4SI LXVW4X_UC
+ vss __builtin_vec_vsx_ld (signed long long, vss *);
+ LXVW4X_V4SI LXVW4X_VSS
+ vss __builtin_vec_vsx_ld (signed long long, signed short *);
+ LXVW4X_V4SI LXVW4X_SS
+ vus __builtin_vec_vsx_ld (signed long long, vus *);
+ LXVW4X_V4SI LXVW4X_VUS
+ vus __builtin_vec_vsx_ld (signed long long, unsigned short *);
+ LXVW4X_V4SI LXVW4X_US
+ vsi __builtin_vec_vsx_ld (signed long long, vsi *);
+ LXVW4X_V4SI LXVW4X_VSI
+ vsi __builtin_vec_vsx_ld (signed long long, signed int *);
+ LXVW4X_V4SI LXVW4X_SI
+ vui __builtin_vec_vsx_ld (signed long long, vui *);
+ LXVW4X_V4SI LXVW4X_VUI
+ vui __builtin_vec_vsx_ld (signed long long, unsigned int *);
+ LXVW4X_V4SI LXVW4X_UI
+ vsll __builtin_vec_vsx_ld (signed long long, vsll *);
+ LXVD2X_V2DI LXVD2X_VSLL
+ vsll __builtin_vec_vsx_ld (signed long long, signed long long *);
+ LXVD2X_V2DI LXVD2X_SLL
+ vull __builtin_vec_vsx_ld (signed long long, vull *);
+ LXVD2X_V2DI LXVD2X_VULL
+ vull __builtin_vec_vsx_ld (signed long long, unsigned long long *);
+ LXVD2X_V2DI LXVD2X_ULL
+ vsq __builtin_vec_vsx_ld (signed long long, vsq *);
+ LXVD2X_V1TI LXVD2X_VSQ
+ vsq __builtin_vec_vsx_ld (signed long long, signed __int128 *);
+ LXVD2X_V1TI LXVD2X_SQ
+ vuq __builtin_vec_vsx_ld (signed long long, unsigned __int128 *);
+ LXVD2X_V1TI LXVD2X_UQ
+ vf __builtin_vec_vsx_ld (signed long long, vf *);
+ LXVW4X_V4SF LXVW4X_VF
+ vf __builtin_vec_vsx_ld (signed long long, float *);
+ LXVW4X_V4SF LXVW4X_F
+ vd __builtin_vec_vsx_ld (signed long long, vd *);
+ LXVD2X_V2DF LXVD2X_VD
+ vd __builtin_vec_vsx_ld (signed long long, double *);
+ LXVD2X_V2DF LXVD2X_D
+
+[VEC_XL_BE, vec_xl_be, __builtin_vec_xl_be]
+ vsc __builtin_vec_xl_be (signed long long, vsc *);
+ LD_ELEMREV_V16QI LD_ELEMREV_VSC
+ vsc __builtin_vec_xl_be (signed long long, signed char *);
+ LD_ELEMREV_V16QI LD_ELEMREV_SC
+ vuc __builtin_vec_xl_be (signed long long, vuc *);
+ LD_ELEMREV_V16QI LD_ELEMREV_VUC
+ vuc __builtin_vec_xl_be (signed long long, unsigned char *);
+ LD_ELEMREV_V16QI LD_ELEMREV_UC
+ vss __builtin_vec_xl_be (signed long long, vss *);
+ LD_ELEMREV_V8HI LD_ELEMREV_VSS
+ vss __builtin_vec_xl_be (signed long long, signed short *);
+ LD_ELEMREV_V8HI LD_ELEMREV_SS
+ vus __builtin_vec_xl_be (signed long long, vus *);
+ LD_ELEMREV_V8HI LD_ELEMREV_VUS
+ vus __builtin_vec_xl_be (signed long long, unsigned short *);
+ LD_ELEMREV_V8HI LD_ELEMREV_US
+ vsi __builtin_vec_xl_be (signed long long, vsi *);
+ LD_ELEMREV_V4SI LD_ELEMREV_VSI
+ vsi __builtin_vec_xl_be (signed long long, signed int *);
+ LD_ELEMREV_V4SI LD_ELEMREV_SI
+ vui __builtin_vec_xl_be (signed long long, vui *);
+ LD_ELEMREV_V4SI LD_ELEMREV_VUI
+ vui __builtin_vec_xl_be (signed long long, unsigned int *);
+ LD_ELEMREV_V4SI LD_ELEMREV_UI
+ vsll __builtin_vec_xl_be (signed long long, vsll *);
+ LD_ELEMREV_V2DI LD_ELEMREV_VSLL
+ vsll __builtin_vec_xl_be (signed long long, signed long long *);
+ LD_ELEMREV_V2DI LD_ELEMREV_SLL
+ vull __builtin_vec_xl_be (signed long long, vull *);
+ LD_ELEMREV_V2DI LD_ELEMREV_VULL
+ vull __builtin_vec_xl_be (signed long long, unsigned long long *);
+ LD_ELEMREV_V2DI LD_ELEMREV_ULL
+ vsq __builtin_vec_xl_be (signed long long, signed __int128 *);
+ LD_ELEMREV_V1TI LD_ELEMREV_SQ
+ vuq __builtin_vec_xl_be (signed long long, unsigned __int128 *);
+ LD_ELEMREV_V1TI LD_ELEMREV_UQ
+ vf __builtin_vec_xl_be (signed long long, vf *);
+ LD_ELEMREV_V4SF LD_ELEMREV_VF
+ vf __builtin_vec_xl_be (signed long long, float *);
+ LD_ELEMREV_V4SF LD_ELEMREV_F
+ vd __builtin_vec_xl_be (signed long long, vd *);
+ LD_ELEMREV_V2DF LD_ELEMREV_VD
+ vd __builtin_vec_xl_be (signed long long, double *);
+ LD_ELEMREV_V2DF LD_ELEMREV_DD
+
+[VEC_XOR, vec_xor, __builtin_vec_xor]
+ vsc __builtin_vec_xor (vsc, vsc);
+ VXOR_V16QI
+ vuc __builtin_vec_xor (vuc, vuc);
+ VXOR_V16QI_UNS VXOR_VUC
+ vbc __builtin_vec_xor (vbc, vbc);
+ VXOR_V16QI_UNS VXOR_VBC
+ vss __builtin_vec_xor (vss, vss);
+ VXOR_V8HI
+ vus __builtin_vec_xor (vus, vus);
+ VXOR_V8HI_UNS VXOR_VUS
+ vbs __builtin_vec_xor (vbs, vbs);
+ VXOR_V8HI_UNS VXOR_VBS
+ vsi __builtin_vec_xor (vsi, vsi);
+ VXOR_V4SI
+ vui __builtin_vec_xor (vui, vui);
+ VXOR_V4SI_UNS VXOR_VUI
+ vbi __builtin_vec_xor (vbi, vbi);
+ VXOR_V4SI_UNS VXOR_VBI
+ vsll __builtin_vec_xor (vsll, vsll);
+ VXOR_V2DI
+ vull __builtin_vec_xor (vull, vull);
+ VXOR_V2DI_UNS VXOR_VULL
+ vbll __builtin_vec_xor (vbll, vbll);
+ VXOR_V2DI_UNS VXOR_VBLL
+ vf __builtin_vec_xor (vf, vf);
+ VXOR_V4SF
+ vd __builtin_vec_xor (vd, vd);
+ VXOR_V2DF
+
+[VEC_XST, vec_xst, __builtin_vec_vsx_st]
+ void __builtin_vec_vsx_st (vsc, signed long long, vsc *);
+ STXVW4X_V16QI STXVW4X_VSC
+ void __builtin_vec_vsx_st (vsc, signed long long, signed char *);
+ STXVW4X_V16QI STXVW4X_SC
+ void __builtin_vec_vsx_st (vuc, signed long long, vuc *);
+ STXVW4X_V16QI STXVW4X_VUC
+ void __builtin_vec_vsx_st (vuc, signed long long, unsigned char *);
+ STXVW4X_V16QI STXVW4X_UC
+ void __builtin_vec_vsx_st (vbc, signed long long, vbc *);
+ STXVW4X_V16QI STXVW4X_VBC
+ void __builtin_vec_vsx_st (vbc, signed long long, signed char *);
+ STXVW4X_V16QI STXVW4X_VBC_S
+ void __builtin_vec_vsx_st (vbc, signed long long, unsigned char *);
+ STXVW4X_V16QI STXVW4X_VBC_U
+ void __builtin_vec_vsx_st (vss, signed long long, vss *);
+ STXVW4X_V8HI STXVW4X_VSS
+ void __builtin_vec_vsx_st (vss, signed long long, signed short *);
+ STXVW4X_V8HI STXVW4X_SS
+ void __builtin_vec_vsx_st (vus, signed long long, vus *);
+ STXVW4X_V8HI STXVW4X_VUS
+ void __builtin_vec_vsx_st (vus, signed long long, unsigned short *);
+ STXVW4X_V8HI STXVW4X_US
+ void __builtin_vec_vsx_st (vbs, signed long long, vbs *);
+ STXVW4X_V8HI STXVW4X_VBS
+ void __builtin_vec_vsx_st (vbs, signed long long, signed short *);
+ STXVW4X_V8HI STXVW4X_VBS_S
+ void __builtin_vec_vsx_st (vbs, signed long long, unsigned short *);
+ STXVW4X_V8HI STXVW4X_VBS_U
+ void __builtin_vec_vsx_st (vp, signed long long, vp *);
+ STXVW4X_V8HI STXVW4X_VP
+ void __builtin_vec_vsx_st (vsi, signed long long, vsi *);
+ STXVW4X_V4SI STXVW4X_VSI
+ void __builtin_vec_vsx_st (vsi, signed long long, signed int *);
+ STXVW4X_V4SI STXVW4X_SI
+ void __builtin_vec_vsx_st (vui, signed long long, vui *);
+ STXVW4X_V4SI STXVW4X_VUI
+ void __builtin_vec_vsx_st (vui, signed long long, unsigned int *);
+ STXVW4X_V4SI STXVW4X_UI
+ void __builtin_vec_vsx_st (vbi, signed long long, vbi *);
+ STXVW4X_V4SI STXVW4X_VBI
+ void __builtin_vec_vsx_st (vbi, signed long long, signed int *);
+ STXVW4X_V4SI STXVW4X_VBI_S
+ void __builtin_vec_vsx_st (vbi, signed long long, unsigned int *);
+ STXVW4X_V4SI STXVW4X_VBI_U
+ void __builtin_vec_vsx_st (vsll, signed long long, vsll *);
+ STXVD2X_V2DI STXVD2X_VSLL
+ void __builtin_vec_vsx_st (vsll, signed long long, signed long long *);
+ STXVD2X_V2DI STXVD2X_SLL
+ void __builtin_vec_vsx_st (vull, signed long long, vull *);
+ STXVD2X_V2DI STXVD2X_VULL
+ void __builtin_vec_vsx_st (vull, signed long long, unsigned long long *);
+ STXVD2X_V2DI STXVD2X_ULL
+ void __builtin_vec_vsx_st (vbll, signed long long, vbll *);
+ STXVD2X_V2DI STXVD2X_VBLL
+ void __builtin_vec_vsx_st (vf, signed long long, vf *);
+ STXVW4X_V4SF STXVW4X_VF
+ void __builtin_vec_vsx_st (vf, signed long long, float *);
+ STXVW4X_V4SF STXVW4X_F
+ void __builtin_vec_vsx_st (vd, signed long long, vd *);
+ STXVD2X_V2DF STXVD2X_VD
+ void __builtin_vec_vsx_st (vd, signed long long, double *);
+ STXVD2X_V2DF STXVD2X_D
+
+[VEC_XST_BE, vec_xst_be, __builtin_vec_xst_be]
+ void __builtin_vec_xst_be (vsc, signed long long, vsc *);
+ STXVW4X_V16QI STXVW4X_VSC_BE
+ void __builtin_vec_xst_be (vsc, signed long long, signed char *);
+ STXVW4X_V16QI STXVW4X_SC_BE
+ void __builtin_vec_xst_be (vuc, signed long long, vuc *);
+ STXVW4X_V16QI STXVW4X_VUC_BE
+ void __builtin_vec_xst_be (vuc, signed long long, unsigned char *);
+ STXVW4X_V16QI STXVW4X_UC_BE
+ void __builtin_vec_xst_be (vbc, signed long long, vbc *);
+ STXVW4X_V16QI STXVW4X_VBC_BE
+ void __builtin_vec_xst_be (vbc, signed long long, signed char *);
+ STXVW4X_V16QI STXVW4X_VBC_S_BE
+ void __builtin_vec_xst_be (vbc, signed long long, unsigned char *);
+ STXVW4X_V16QI STXVW4X_VBC_U_BE
+ void __builtin_vec_xst_be (vss, signed long long, vss *);
+ STXVW4X_V8HI STXVW4X_VSS_BE
+ void __builtin_vec_xst_be (vss, signed long long, signed short *);
+ STXVW4X_V8HI STXVW4X_SS_BE
+ void __builtin_vec_xst_be (vus, signed long long, vus *);
+ STXVW4X_V8HI STXVW4X_VUS_BE
+ void __builtin_vec_xst_be (vus, signed long long, unsigned short *);
+ STXVW4X_V8HI STXVW4X_US_BE
+ void __builtin_vec_xst_be (vbs, signed long long, vbs *);
+ STXVW4X_V8HI STXVW4X_VBS_BE
+ void __builtin_vec_xst_be (vbs, signed long long, signed short *);
+ STXVW4X_V8HI STXVW4X_VBS_S_BE
+ void __builtin_vec_xst_be (vbs, signed long long, unsigned short *);
+ STXVW4X_V8HI STXVW4X_VBS_U_BE
+ void __builtin_vec_xst_be (vp, signed long long, vp *);
+ STXVW4X_V8HI STXVW4X_VP_BE
+ void __builtin_vec_xst_be (vsi, signed long long, vsi *);
+ STXVW4X_V4SI STXVW4X_VSI_BE
+ void __builtin_vec_xst_be (vsi, signed long long, signed int *);
+ STXVW4X_V4SI STXVW4X_SI_BE
+ void __builtin_vec_xst_be (vui, signed long long, vui *);
+ STXVW4X_V4SI STXVW4X_VUI_BE
+ void __builtin_vec_xst_be (vui, signed long long, unsigned int *);
+ STXVW4X_V4SI STXVW4X_UI_BE
+ void __builtin_vec_xst_be (vbi, signed long long, vbi *);
+ STXVW4X_V4SI STXVW4X_VBI_BE
+ void __builtin_vec_xst_be (vbi, signed long long, signed int *);
+ STXVW4X_V4SI STXVW4X_VBI_S_BE
+ void __builtin_vec_xst_be (vbi, signed long long, unsigned int *);
+ STXVW4X_V4SI STXVW4X_VBI_U_BE
+ void __builtin_vec_xst_be (vsll, signed long long, vsll *);
+ STXVD2X_V2DI STXVD2X_VSLL_BE
+ void __builtin_vec_xst_be (vsll, signed long long, signed long long *);
+ STXVD2X_V2DI STXVD2X_SLL_BE
+ void __builtin_vec_xst_be (vull, signed long long, vull *);
+ STXVD2X_V2DI STXVD2X_VULL_BE
+ void __builtin_vec_xst_be (vull, signed long long, unsigned long long *);
+ STXVD2X_V2DI STXVD2X_ULL_BE
+ void __builtin_vec_xst_be (vbll, signed long long, vbll *);
+ STXVD2X_V2DI STXVD2X_VBLL_BE
+ void __builtin_vec_xst_be (vf, signed long long, vf *);
+ STXVW4X_V4SF STXVW4X_VF_BE
+ void __builtin_vec_xst_be (vf, signed long long, float *);
+ STXVW4X_V4SF STXVW4X_F_BE
+ void __builtin_vec_xst_be (vd, signed long long, vd *);
+ STXVD2X_V2DF STXVD2X_VD_BE
+ void __builtin_vec_xst_be (vd, signed long long, double *);
+ STXVD2X_V2DF STXVD2X_D_BE
+
+[VEC_XXPERMDI, vec_xxpermdi, __builtin_vsx_xxpermdi]
+ vsc __builtin_vsx_xxpermdi (vsc, vsc, const int);
+ XXPERMDI_16QI XXPERMDI_VSC
+ vuc __builtin_vsx_xxpermdi (vuc, vuc, const int);
+ XXPERMDI_16QI XXPERMDI_VUC
+ vss __builtin_vsx_xxpermdi (vss, vss, const int);
+ XXPERMDI_8HI XXPERMDI_VSS
+ vus __builtin_vsx_xxpermdi (vus, vus, const int);
+ XXPERMDI_8HI XXPERMDI_VUS
+ vsi __builtin_vsx_xxpermdi (vsi, vsi, const int);
+ XXPERMDI_4SI XXPERMDI_VSI
+ vui __builtin_vsx_xxpermdi (vui, vui, const int);
+ XXPERMDI_4SI XXPERMDI_VUI
+ vsll __builtin_vsx_xxpermdi (vsll, vsll, const int);
+ XXPERMDI_2DI XXPERMDI_VSLL
+ vull __builtin_vsx_xxpermdi (vull, vull, const int);
+ XXPERMDI_2DI XXPERMDI_VULL
+ vf __builtin_vsx_xxpermdi (vf, vf, const int);
+ XXPERMDI_4SF XXPERMDI_VF
+ vd __builtin_vsx_xxpermdi (vd, vd, const int);
+ XXPERMDI_2DF XXPERMDI_VD
+
+[VEC_XXSLDWI, vec_xxsldwi, __builtin_vsx_xxsldwi]
+ vsc __builtin_vsx_xxsldwi (vsc, vsc, const int);
+ XXSLDWI_16QI XXSLDWI_VSC2
+ vuc __builtin_vsx_xxsldwi (vuc, vuc, const int);
+ XXSLDWI_16QI XXSLDWI_VUC2
+ vss __builtin_vsx_xxsldwi (vss, vss, const int);
+ XXSLDWI_8HI XXSLDWI_VSS2
+ vus __builtin_vsx_xxsldwi (vus, vus, const int);
+ XXSLDWI_8HI XXSLDWI_VUS2
+ vsi __builtin_vsx_xxsldwi (vsi, vsi, const int);
+ XXSLDWI_4SI XXSLDWI_VSI2
+ vui __builtin_vsx_xxsldwi (vui, vui, const int);
+ XXSLDWI_4SI XXSLDWI_VUI2
+ vsll __builtin_vsx_xxsldwi (vsll, vsll, const int);
+ XXSLDWI_2DI XXSLDWI_VSLL2
+ vull __builtin_vsx_xxsldwi (vull, vull, const int);
+ XXSLDWI_2DI XXSLDWI_VULL2
+ vf __builtin_vsx_xxsldwi (vf, vf, const int);
+ XXSLDWI_4SF XXSLDWI_VF2
+ vd __builtin_vsx_xxsldwi (vd, vd, const int);
+ XXSLDWI_2DF XXSLDWI_VD2
^ permalink raw reply [flat|nested] 15+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins3)] rs6000: More progress on the overload table
@ 2020-10-29 19:53 William Schmidt
0 siblings, 0 replies; 15+ messages in thread
From: William Schmidt @ 2020-10-29 19:53 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:9186b787316cd703efe2fae2c68daa230a28d125
commit 9186b787316cd703efe2fae2c68daa230a28d125
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Fri Oct 23 16:23:35 2020 -0500
rs6000: More progress on the overload table
2020-10-23 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Small fixes.
* config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add
deprecation comments.
* config/rs6000/rs6000-overload.def: Add more entries.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 10 +-
gcc/config/rs6000/rs6000-call.c | 56 +++-
gcc/config/rs6000/rs6000-overload.def | 455 +++++++++++++++++++++++++++++++
3 files changed, 515 insertions(+), 6 deletions(-)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index 08f6cdffdf8..a9b152053e0 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -2178,7 +2178,7 @@
const vsq __builtin_altivec_vadduqm (vsq, vsq);
VADDUQM altivec_vadduqm {}
- const vsll __builtin_altivec_vbpermq (vsc, vsc);
+ const vull __builtin_altivec_vbpermq (vuq, vuc);
VBPERMQ altivec_vbpermq {}
const vuc __builtin_altivec_vbpermq2 (vuc, vuc);
@@ -2543,7 +2543,7 @@
VCMPAEW_P vector_ae_v4si_p {pred}
const vsc __builtin_altivec_vcmpneb (vsc, vsc);
- CMPNEB vcmpneb {}
+ VCMPNEB vcmpneb {}
const signed int __builtin_altivec_vcmpneb_p (vsc, vsc);
VCMPNEB_P vector_ne_v16qi_p {pred}
@@ -2558,13 +2558,13 @@
VCMPNEFP_P vector_ne_v4sf_p {pred}
const vss __builtin_altivec_vcmpneh (vss, vss);
- CMPNEH vcmpneh {}
+ VCMPNEH vcmpneh {}
const signed int __builtin_altivec_vcmpneh_p (vss, vss);
VCMPNEH_P vector_ne_v8hi_p {pred}
const vsi __builtin_altivec_vcmpnew (vsi, vsi);
- CMPNEW vcmpnew {}
+ VCMPNEW vcmpnew {}
const signed int __builtin_altivec_vcmpnew_p (vsi, vsi);
VCMPNEW_P vector_ne_v4si_p {pred}
@@ -2662,7 +2662,7 @@
const vd __builtin_vsx_insert_exp_dp (vop, vull);
VIEDP xviexpdp {}
- const vf __builtin_vsx_insert_exp_sp (vop, vull);
+ const vf __builtin_vsx_insert_exp_sp (vop, vui);
VIESP xviexpsp {}
const signed int __builtin_vsx_scalar_cmp_exp_dp_eq (double, double);
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 1c16dffacdf..61eb85d9c7c 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -4233,23 +4233,25 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTUW_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI },
- /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTUW_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTUW_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTSW_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTSW_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTSW_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V4SI, RS6000_BTI_V4SI },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, P8V_BUILTIN_VCMPGTUD_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, P8V_BUILTIN_VCMPGTUD_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, P8V_BUILTIN_VCMPGTUD_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, P8V_BUILTIN_VCMPGTSD_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, P8V_BUILTIN_VCMPGTSD_P,
@@ -4417,6 +4419,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V16QI_UNS,
RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI,
RS6000_BTI_unsigned_V16QI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 },
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V8HI,
@@ -4425,6 +4428,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 },
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V8HI_UNS,
RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V8HI_UNS,
RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI,
RS6000_BTI_unsigned_V8HI, 0 },
@@ -4434,6 +4438,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V8HI_UNS,
RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI,
RS6000_BTI_unsigned_V8HI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 },
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V4SI,
@@ -4442,6 +4447,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V4SI_UNS,
RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V4SI_UNS,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI,
RS6000_BTI_unsigned_V4SI, 0 },
@@ -4451,6 +4457,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V4SI_UNS,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI,
RS6000_BTI_unsigned_V4SI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V2DI,
@@ -4459,6 +4466,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V2DI_UNS,
RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V2DI_UNS,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI,
RS6000_BTI_unsigned_V2DI, 0 },
@@ -4473,12 +4481,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V2DF,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V16QI,
RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V16QI,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V16QI,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V16QI_UNS,
RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI,
RS6000_BTI_unsigned_V16QI, 0 },
@@ -4490,12 +4500,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V16QI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V16QI_UNS,
RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V8HI_UNS,
RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI,
RS6000_BTI_unsigned_V8HI, 0 },
@@ -4507,12 +4519,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V8HI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V8HI_UNS,
RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V4SI_UNS,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI,
RS6000_BTI_unsigned_V4SI, 0 },
@@ -4524,12 +4538,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V4SI_UNS,
RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V2DI_UNS,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI,
RS6000_BTI_unsigned_V2DI, 0 },
@@ -4546,12 +4562,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V2DF,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V16QI,
RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V16QI,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V16QI,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V16QI_UNS,
RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI,
RS6000_BTI_unsigned_V16QI, 0 },
@@ -4563,12 +4581,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V16QI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V16QI_UNS,
RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V8HI_UNS,
RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI,
RS6000_BTI_unsigned_V8HI, 0 },
@@ -4580,12 +4600,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V8HI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V8HI_UNS,
RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V4SI_UNS,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI,
RS6000_BTI_unsigned_V4SI, 0 },
@@ -4597,12 +4619,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V4SI_UNS,
RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V2DI_UNS,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI,
RS6000_BTI_unsigned_V2DI, 0 },
@@ -4619,12 +4643,16 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V2DF,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 },
+ /* These are redundant with VEC_ADDC, not included in
+ rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_VADDCUQ, P8V_BUILTIN_VADDCUQ,
RS6000_BTI_V1TI, RS6000_BTI_V1TI, RS6000_BTI_V1TI, 0 },
{ P8V_BUILTIN_VEC_VADDCUQ, P8V_BUILTIN_VADDCUQ,
RS6000_BTI_unsigned_V1TI, RS6000_BTI_unsigned_V1TI,
RS6000_BTI_unsigned_V1TI, 0 },
+ /* These are redundant with VEC_ADD, not included in
+ rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_VADDUDM, P8V_BUILTIN_VADDUDM,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ P8V_BUILTIN_VEC_VADDUDM, P8V_BUILTIN_VADDUDM,
@@ -4683,6 +4711,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_VCLZ, P8V_BUILTIN_VCLZD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0, 0 },
+ /* The VEC_VCLZ<length> variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_VCLZB, P8V_BUILTIN_VCLZB,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0, 0 },
{ P8V_BUILTIN_VEC_VCLZB, P8V_BUILTIN_VCLZB,
@@ -4708,6 +4738,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9_BUILTIN_DFP_TSTSFI_LT, MISC_BUILTIN_TSTSFI_LT_DD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat64, 0 },
+ /* These individual overloads are deprecated, not included in
+ rs6000-builtin-new.def. */
{ P9_BUILTIN_DFP_TSTSFI_LT_TD, MISC_BUILTIN_TSTSFI_LT_TD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat128, 0 },
{ P9_BUILTIN_DFP_TSTSFI_LT_DD, MISC_BUILTIN_TSTSFI_LT_DD,
@@ -4718,6 +4750,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9_BUILTIN_DFP_TSTSFI_EQ, MISC_BUILTIN_TSTSFI_EQ_DD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat64, 0 },
+ /* These individual overloads are deprecated, not included in
+ rs6000-builtin-new.def. */
{ P9_BUILTIN_DFP_TSTSFI_EQ_TD, MISC_BUILTIN_TSTSFI_EQ_TD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat128, 0 },
{ P9_BUILTIN_DFP_TSTSFI_EQ_DD, MISC_BUILTIN_TSTSFI_EQ_DD,
@@ -4728,6 +4762,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9_BUILTIN_DFP_TSTSFI_GT, MISC_BUILTIN_TSTSFI_GT_DD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat64, 0 },
+ /* These individual overloads are deprecated, not included in
+ rs6000-builtin-new.def. */
{ P9_BUILTIN_DFP_TSTSFI_GT_TD, MISC_BUILTIN_TSTSFI_GT_TD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat128, 0 },
{ P9_BUILTIN_DFP_TSTSFI_GT_DD, MISC_BUILTIN_TSTSFI_GT_DD,
@@ -4738,6 +4774,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9_BUILTIN_DFP_TSTSFI_OV, MISC_BUILTIN_TSTSFI_OV_DD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat64, 0 },
+ /* These individual overloads are deprecated, not included in
+ rs6000-builtin-new.def. */
{ P9_BUILTIN_DFP_TSTSFI_OV_TD, MISC_BUILTIN_TSTSFI_OV_TD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat128, 0 },
{ P9_BUILTIN_DFP_TSTSFI_OV_DD, MISC_BUILTIN_TSTSFI_OV_DD,
@@ -4760,6 +4798,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VCTZ, P9V_BUILTIN_VCTZD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0, 0 },
+ /* The VEC_VCTZ<length> variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VCTZB, P9V_BUILTIN_VCTZB,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0, 0 },
{ P9V_BUILTIN_VEC_VCTZB, P9V_BUILTIN_VCTZB,
@@ -4790,6 +4830,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI,
RS6000_BTI_unsigned_V4SI, 0 },
+ /* The VEC_VADU<length> variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VADUB, P9V_BUILTIN_VADUB,
RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI,
RS6000_BTI_unsigned_V16QI, 0 },
@@ -4807,6 +4849,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VES, P9V_BUILTIN_VESDP,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_V2DF, 0, 0 },
+ /* The VEC_VES* variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VESSP, P9V_BUILTIN_VESSP,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SF, 0, 0 },
{ P9V_BUILTIN_VEC_VESDP, P9V_BUILTIN_VESDP,
@@ -4817,6 +4861,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VEE, P9V_BUILTIN_VEEDP,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_V2DF, 0, 0 },
+ /* The VEC_VEE* variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VEESP, P9V_BUILTIN_VEESP,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SF, 0, 0 },
{ P9V_BUILTIN_VEC_VEEDP, P9V_BUILTIN_VEEDP,
@@ -4827,6 +4873,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VTDC, P9V_BUILTIN_VTDCDP,
RS6000_BTI_bool_V2DI, RS6000_BTI_V2DF, RS6000_BTI_INTSI, 0 },
+ /* The VEC_VTDC* variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VTDCSP, P9V_BUILTIN_VTDCSP,
RS6000_BTI_bool_V4SI, RS6000_BTI_V4SF, RS6000_BTI_INTSI, 0 },
{ P9V_BUILTIN_VEC_VTDCDP, P9V_BUILTIN_VTDCDP,
@@ -4842,6 +4890,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VIE, P9V_BUILTIN_VIEDP,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_unsigned_V2DI, 0 },
+ /* The VEC_VIE* variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VIESP, P9V_BUILTIN_VIESP,
RS6000_BTI_V4SF, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ P9V_BUILTIN_VEC_VIESP, P9V_BUILTIN_VIESP,
@@ -4859,6 +4909,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VSTDC, P9V_BUILTIN_VSTDCQP,
RS6000_BTI_bool_int, RS6000_BTI_ieee128_float, RS6000_BTI_INTSI, 0 },
+ /* The VEC_VSTDC* variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VSTDCSP, P9V_BUILTIN_VSTDCSP,
RS6000_BTI_bool_int, RS6000_BTI_float, RS6000_BTI_INTSI, 0 },
{ P9V_BUILTIN_VEC_VSTDCDP, P9V_BUILTIN_VSTDCDP,
@@ -4873,6 +4925,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VSTDCN, P9V_BUILTIN_VSTDCNQP,
RS6000_BTI_bool_int, RS6000_BTI_ieee128_float, 0, 0 },
+ /* The VEC_VSTDCN* variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VSTDCNSP, P9V_BUILTIN_VSTDCNSP,
RS6000_BTI_bool_int, RS6000_BTI_float, 0, 0 },
{ P9V_BUILTIN_VEC_VSTDCNDP, P9V_BUILTIN_VSTDCNDP,
diff --git a/gcc/config/rs6000/rs6000-overload.def b/gcc/config/rs6000/rs6000-overload.def
index ad50d8add27..9cc8f0382b8 100644
--- a/gcc/config/rs6000/rs6000-overload.def
+++ b/gcc/config/rs6000/rs6000-overload.def
@@ -88,6 +88,14 @@
vd __builtin_vec_abs (vd);
XVABSDP
+[VEC_ABSD, vec_absd, __builtin_vec_vadu]
+ vuc __builtin_vec_vadu (vuc, vuc);
+ VADUB
+ vus __builtin_vec_vadu (vus, vus);
+ VADUH
+ vui __builtin_vec_vadu (vui, vui);
+ VADUW
+
[VEC_ABSS, vec_abss, __builtin_vec_abss]
vsc __builtin_vec_abss (vsc);
ABSS_V16QI
@@ -202,6 +210,14 @@
vui __builtin_vec_avg (vui, vui);
VAVGUW
+[VEC_BPERM, vec_bperm, __builtin_vec_vbperm_api]
+ vull __builtin_vec_vbperm_api (vull, vuc);
+ VBPERMD VBPERMD_VULL
+ vull __builtin_vec_vbperm_api (vuq, vuc);
+ VBPERMD VBPERMD_VUQ
+ vuc __builtin_vec_vbperm_api (vuc, vuc);
+ VBPERMQ2
+
[VEC_CEIL, vec_ceil, __builtin_vec_ceil]
vf __builtin_vec_ceil (vf);
XVRSPIP
@@ -242,6 +258,40 @@
vbll __builtin_vec_cmpeq (vd, vd);
XVCMPEQDP
+; We skip generating a #define because of the C-versus-C++ complexity
+; in altivec.h. Look there for the template-y details.
+[VEC_CMPEQ_P, SKIP, __builtin_vec_vcmpeq_p]
+ signed int __builtin_vec_vcmpeq_p (signed int, vuc, vuc);
+ VCMPEQUB_P VCMPEQUB_PU
+ signed int __builtin_vec_vcmpeq_p (signed int, vsc, vsc);
+ VCMPEQUB_P VCMPEQUB_PS
+ signed int __builtin_vec_vcmpeq_p (signed int, vbc, vbc);
+ VCMPEQUB_P VCMPEQUB_PB
+ signed int __builtin_vec_vcmpeq_p (signed int, vus, vus);
+ VCMPEQUH_P VCMPEQUH_PU
+ signed int __builtin_vec_vcmpeq_p (signed int, vss, vss);
+ VCMPEQUH_P VCMPEQUH_PS
+ signed int __builtin_vec_vcmpeq_p (signed int, vbs, vbs);
+ VCMPEQUH_P VCMPEQUH_PB
+ signed int __builtin_vec_vcmpeq_p (signed int, vp, vp);
+ VCMPEQUH_P VCMPEQUH_PP
+ signed int __builtin_vec_vcmpeq_p (signed int, vui, vui);
+ VCMPEQUW_P VCMPEQUW_PU
+ signed int __builtin_vec_vcmpeq_p (signed int, vsi, vsi);
+ VCMPEQUW_P VCMPEQUW_PS
+ signed int __builtin_vec_vcmpeq_p (signed int, vbi, vbi);
+ VCMPEQUW_P VCMPEQUW_PB
+ signed int __builtin_vec_vcmpeq_p (signed int, vull, vull);
+ VCMPEQUD_P VCMPEQUD_PU
+ signed int __builtin_vec_vcmpeq_p (signed int, vsll, vsll);
+ VCMPEQUD_P VCMPEQUD_PS
+ signed int __builtin_vec_vcmpeq_p (signed int, vbll, vbll);
+ VCMPEQUD_P VCMPEQUD_PB
+ signed int __builtin_vec_vcmpeq_p (signed int, vf, vf);
+ XVCMPEQSP_P
+ signed int __builtin_vec_vcmpeq_p (signed int, vd, vd);
+ XVCMPEQDP_P
+
[VEC_CMPGE, vec_cmpge, __builtin_vec_cmpge]
vbc __builtin_vec_cmpge (vsc, vsc);
CMPGE_16QI CMPGE_16QI_VSC
@@ -264,6 +314,33 @@
vbll __builtin_vec_cmpge (vd, vd);
XVCMPGEDP
+; We skip generating a #define because of the C-versus-C++ complexity
+; in altivec.h. Look there for the template-y details.
+; Also, cmpge is the same as cmpgt for all cases except floating point.
+; There is further code to deal with this special case in
+; altivec_build_resolved_builtin. TODO: Make sure this is still true.
+[VEC_CMPGE_P, SKIP, __builtin_vec_vcmpgt_p]
+ signed int __builtin_vec_vcmpgt_p (signed int, vuc, vuc);
+ VCMPGTUB_P VCMPGTUB_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vsc, vsc);
+ VCMPGTSB_P VCMPGTSB_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vus, vus);
+ VCMPGTUH_P VCMPGTUH_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vss, vss);
+ VCMPGTSH_P VCMPGTSH_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vui, vui);
+ VCMPGTUW_P VCMPGTUW_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vsi, vsi);
+ VCMPGTSW_P VCMPGTSW_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vull, vull);
+ VCMPGTUD_P VCMPGTUD_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vsll, vsll);
+ VCMPGTSD_P VCMPGTSD_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vf, vf);
+ XVCMPGESP_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vd, vd);
+ XVCMPGEDP_P
+
[VEC_CMPGT, vec_cmpgt, __builtin_vec_cmpgt]
vbc __builtin_vec_cmpgt (vsc, vsc);
VCMPGTSB
@@ -286,12 +363,126 @@
vbll __builtin_vec_cmpgt (vd, vd);
XVCMPGTDP
+; We skip generating a #define because of the C-versus-C++ complexity
+; in altivec.h. Look there for the template-y details.
+[VEC_CMPGT_P, SKIP, __builtin_vec_vcmpgt_p]
+ signed int __builtin_vec_vcmpgt_p (signed int, vuc, vuc);
+ VCMPGTUB_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vsc, vsc);
+ VCMPGTSB_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vus, vus);
+ VCMPGTUH_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vss, vss);
+ VCMPGTSH_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vui, vui);
+ VCMPGTUW_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vsi, vsi);
+ VCMPGTSW_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vull, vull);
+ VCMPGTUD_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vsll, vsll);
+ VCMPGTSD_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vf, vf);
+ XVCMPGTSP_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vd, vd);
+ XVCMPGTDP_P
+
; Note that there is no entry for VEC_CMPLE. VEC_CMPLE is implemented
; using VEC_CMPGE with reversed arguments in altivec.h.
; Note that there is no entry for VEC_CMPLT. VEC_CMPLT is implemented
; using VEC_CMPGT with reversed arguments in altivec.h.
+[VEC_CMPNE, vec_cmpne, __builtin_vec_cmpne]
+ vbc __builtin_vec_cmpne (vbc, vbc);
+ VCMPNEB VCMPNEB_VBC
+ vbc __builtin_vec_cmpne (vsc, vsc);
+ VCMPNEB VCMPNEB_VSC
+ vbc __builtin_vec_cmpne (vuc, vuc);
+ VCMPNEB VCMPNEB_VUC
+ vbs __builtin_vec_cmpne (vbs, vbs);
+ VCMPNEH VCMPNEH_VBS
+ vbs __builtin_vec_cmpne (vss, vss);
+ VCMPNEH VCMPNEH_VSS
+ vbs __builtin_vec_cmpne (vus, vus);
+ VCMPNEH VCMPNEH_VUS
+ vbi __builtin_vec_cmpne (vbi, vbi);
+ VCMPNEW VCMPNEW_VBI
+ vbi __builtin_vec_cmpne (vsi, vsi);
+ VCMPNEW VCMPNEW_VSI
+ vbi __builtin_vec_cmpne (vui, vui);
+ VCMPNEW VCMPNEW_VUI
+
+; We skip generating a #define because of the C-versus-C++ complexity
+; in altivec.h. Look there for the template-y details.
+[VEC_CMPNE_P, SKIP, __builtin_vec_vcmpne_p]
+ signed int __builtin_vec_vcmpne_p (vsc, vsc);
+ VCMPNEB_P VCMPNEB_VSC_P
+ signed int __builtin_vec_vcmpne_p (vuc, vuc);
+ VCMPNEB_P VCMPNEB_VUC_P
+ signed int __builtin_vec_vcmpne_p (vbc, vbc);
+ VCMPNEB_P VCMPNEB_VBC_P
+ signed int __builtin_vec_vcmpne_p (vss, vss);
+ VCMPNEH_P VCMPNEH_VSS_P
+ signed int __builtin_vec_vcmpne_p (vus, vus);
+ VCMPNEH_P VCMPNEH_VUS_P
+ signed int __builtin_vec_vcmpne_p (vbs, vbs);
+ VCMPNEH_P VCMPNEH_VBS_P
+ signed int __builtin_vec_vcmpne_p (vp, vp);
+ VCMPNEH_P VCMPNEH_VP_P
+ signed int __builtin_vec_vcmpne_p (vsi, vsi);
+ VCMPNEW_P VCMPNEW_VSI_P
+ signed int __builtin_vec_vcmpne_p (vui, vui);
+ VCMPNEW_P VCMPNEW_VUI_P
+ signed int __builtin_vec_vcmpne_p (vbi, vbi);
+ VCMPNEW_P VCMPNEW_VBI_P
+ signed int __builtin_vec_vcmpne_p (vsll, vsll);
+ VCMPNED_P VCMPNED_VSLL_P
+ signed int __builtin_vec_vcmpne_p (vull, vull);
+ VCMPNED_P VCMPNED_VULL_P
+ signed int __builtin_vec_vcmpne_p (vbll, vbll);
+ VCMPNED_P VCMPNED_VBLL_P
+ signed int __builtin_vec_vcmpne_p (vf, vf);
+ VCMPNEFP_P
+ signed int __builtin_vec_vcmpne_p (vd, vd);
+ VCMPNEDP_P
+
+[VEC_CNTLZ, vec_cntlz, __builtin_vec_vclz]
+ vsc __builtin_vec_vclz (vsc);
+ VCLZB VCLZB_S
+ vuc __builtin_vec_vclz (vuc);
+ VCLZB VCLZB_U
+ vss __builtin_vec_vclz (vss);
+ VCLZH VCLZH_S
+ vus __builtin_vec_vclz (vus);
+ VCLZH VCLZH_U
+ vsi __builtin_vec_vclz (vsi);
+ VCLZW VCLZW_S
+ vui __builtin_vec_vclz (vui);
+ VCLZW VCLZW_U
+ vsll __builtin_vec_vclz (vsll);
+ VCLZD VCLZD_S
+ vull __builtin_vec_vclz (vull);
+ VCLZD VCLZD_U
+
+[VEC_CNTTZ, vec_cnttz, __builtin_vec_vctz]
+ vsc __builtin_vec_vctz (vsc);
+ VCTZB VCTZB_S
+ vuc __builtin_vec_vctz (vuc);
+ VCTZB VCTZB_U
+ vss __builtin_vec_vctz (vss);
+ VCTZH VCTZH_S
+ vus __builtin_vec_vctz (vus);
+ VCTZH VCTZH_U
+ vsi __builtin_vec_vctz (vsi);
+ VCTZW VCTZW_S
+ vui __builtin_vec_vctz (vui);
+ VCTZW VCTZW_U
+ vsll __builtin_vec_vctz (vsll);
+ VCTZD VCTZD_S
+ vull __builtin_vec_vctz (vull);
+ VCTZD VCTZD_U
+
[VEC_CONVERT_4F32_8I16, SKIP, __builtin_vec_convert_4f32_8i16]
vus __builtin_vec_convert_4f32_8i16 (vf, vf);
CONVERT_4F32_8I16
@@ -544,6 +735,36 @@
void __builtin_vec_dstt (vf *, const int, const int);
DSTT DSTT_VF
+[VEC_EQV, vec_eqv, __builtin_vec_eqv]
+ vsc __builtin_vec_eqv (vsc, vsc);
+ EQV_V16QI
+ vuc __builtin_vec_eqv (vuc, vuc);
+ EQV_V16QI_UNS EQV_V16QI_VUC
+ vbc __builtin_vec_eqv (vbc, vbc);
+ EQV_V16QI_UNS EQV_V16QI_VBC
+ vss __builtin_vec_eqv (vss, vss);
+ EQV_V8HI
+ vus __builtin_vec_eqv (vus, vus);
+ EQV_V8HI_UNS EQV_V8HI_VUS
+ vbs __builtin_vec_eqv (vbs, vbs);
+ EQV_V8HI_UNS EQV_V8HI_VBS
+ vsi __builtin_vec_eqv (vsi, vsi);
+ EQV_V4SI
+ vui __builtin_vec_eqv (vui, vui);
+ EQV_V4SI_UNS EQV_V4SI_VUI
+ vbi __builtin_vec_eqv (vbi, vbi);
+ EQV_V4SI_UNS EQV_V4SI_VBI
+ vsll __builtin_vec_eqv (vsll, vsll);
+ EQV_V2DI
+ vull __builtin_vec_eqv (vull, vull);
+ EQV_V2DI_UNS EQV_V2DI_VULL
+ vbll __builtin_vec_eqv (vbll, vbll);
+ EQV_V2DI_UNS EQV_V2DI_VBLL
+ vf __builtin_vec_eqv (vf, vf);
+ EQV_V4SF
+ vd __builtin_vec_eqv (vd, vd);
+ EQV_V2DF
+
[VEC_EXPTE, vec_expte, __builtin_vec_expte]
vf __builtin_vec_expte (vf);
VEXPTEFP
@@ -944,6 +1165,32 @@
vuc __builtin_vec_lvsr (signed long long, signed char *);
LVSR LVSR_SC
+[VEC_LXVL, vec_xl_len, __builtin_vec_lxvl]
+ vsc __builtin_vec_lxvl (signed char *, unsigned long long);
+ LXVL LXVL_VSC
+ vuc __builtin_vec_lxvl (unsigned char *, unsigned long long);
+ LXVL LXVL_VUC
+ vss __builtin_vec_lxvl (signed short *, unsigned long long);
+ LXVL LXVL_VSS
+ vus __builtin_vec_lxvl (unsigned short *, unsigned long long);
+ LXVL LXVL_VUS
+ vsi __builtin_vec_lxvl (signed int *, unsigned long long);
+ LXVL LXVL_VSI
+ vui __builtin_vec_lxvl (unsigned int *, unsigned long long);
+ LXVL LXVL_VUI
+ vsll __builtin_vec_lxvl (signed long long *, unsigned long long);
+ LXVL LXVL_VSLL
+ vull __builtin_vec_lxvl (unsigned long long *, unsigned long long);
+ LXVL LXVL_VULL
+ vsq __builtin_vec_lxvl (signed __int128 *, unsigned long long);
+ LXVL LXVL_VSQ
+ vuq __builtin_vec_lxvl (unsigned __int128 *, unsigned long long);
+ LXVL LXVL_VUQ
+ vf __builtin_vec_lxvl (float *, unsigned long long);
+ LXVL LXVL_VF
+ vd __builtin_vec_lxvl (double *, unsigned long long);
+ LXVL LXVL_VD
+
[VEC_MADD, vec_madd, __builtin_vec_madd]
vss __builtin_vec_madd (vss, vss, vss);
VMLADDUHM VMLADDUHM_VSS
@@ -1174,6 +1421,36 @@
vd __builtin_vec_nabs (vd);
NABS_V2DF
+[VEC_NAND, vec_nand, __builtin_vec_nand]
+ vsc __builtin_vec_nand (vsc, vsc);
+ NAND_V16QI
+ vuc __builtin_vec_nand (vuc, vuc);
+ NAND_V16QI_UNS NAND_VUC
+ vbc __builtin_vec_nand (vbc, vbc);
+ NAND_V16QI_UNS NAND_VBC
+ vss __builtin_vec_nand (vss, vss);
+ NAND_V8HI
+ vus __builtin_vec_nand (vus, vus);
+ NAND_V8HI_UNS NAND_VUS
+ vbs __builtin_vec_nand (vbs, vbs);
+ NAND_V8HI_UNS NAND_VBS
+ vsi __builtin_vec_nand (vsi, vsi);
+ NAND_V4SI
+ vui __builtin_vec_nand (vui, vui);
+ NAND_V4SI_UNS NAND_VUI
+ vbi __builtin_vec_nand (vbi, vbi);
+ NAND_V4SI_UNS NAND_VBI
+ vsll __builtin_vec_nand (vsll, vsll);
+ NAND_V2DI
+ vull __builtin_vec_nand (vull, vull);
+ NAND_V2DI_UNS NAND_VULL
+ vbll __builtin_vec_nand (vbll, vbll);
+ NAND_V2DI_UNS NAND_VBLL
+ vf __builtin_vec_nand (vf, vf);
+ NAND_V4SF
+ vd __builtin_vec_nand (vd, vd);
+ NAND_V2DF
+
[VEC_NEARBYINT, vec_nearbyint, __builtin_vec_nearbyint]
vf __builtin_vec_nearbyint (vf);
XVRSPI XVRSPI_NBI
@@ -1266,6 +1543,36 @@
vd __builtin_vec_or (vd, vd);
VOR_V2DF
+[VEC_ORC, vec_orc, __builtin_vec_orc]
+ vsc __builtin_vec_orc (vsc, vsc);
+ ORC_V16QI
+ vuc __builtin_vec_orc (vuc, vuc);
+ ORC_V16QI_UNS ORC_VUC
+ vbc __builtin_vec_orc (vbc, vbc);
+ ORC_V16QI_UNS ORC_VBC
+ vss __builtin_vec_orc (vss, vss);
+ ORC_V8HI
+ vus __builtin_vec_orc (vus, vus);
+ ORC_V8HI_UNS ORC_VUS
+ vbs __builtin_vec_orc (vbs, vbs);
+ ORC_V8HI_UNS ORC_VBS
+ vsi __builtin_vec_orc (vsi, vsi);
+ ORC_V4SI
+ vui __builtin_vec_orc (vui, vui);
+ ORC_V4SI_UNS ORC_VUI
+ vbi __builtin_vec_orc (vbi, vbi);
+ ORC_V4SI_UNS ORC_VBI
+ vsll __builtin_vec_orc (vsll, vsll);
+ ORC_V2DI
+ vull __builtin_vec_orc (vull, vull);
+ ORC_V2DI_UNS ORC_VULL
+ vbll __builtin_vec_orc (vbll, vbll);
+ ORC_V2DI_UNS ORC_VBLL
+ vf __builtin_vec_orc (vf, vf);
+ ORC_V4SF
+ vd __builtin_vec_orc (vd, vd);
+ ORC_V2DF
+
[VEC_PACK, vec_pack, __builtin_vec_pack]
vsc __builtin_vec_pack (vss, vss);
VPKUHUM VPKUHUM_VSS
@@ -2057,6 +2364,32 @@
void __builtin_vec_stvrxl (vf, signed long long, float *);
STVRXL STVRXL_F
+[VEC_STXVL, vec_xst_len, __builtin_vec_stxvl]
+ void __builtin_vec_stxvl (vsc, signed char *, unsigned long long);
+ STXVL STXVL_VSC
+ void __builtin_vec_stxvl (vuc, unsigned char *, unsigned long long);
+ STXVL STXVL_VUC
+ void __builtin_vec_stxvl (vss, signed short *, unsigned long long);
+ STXVL STXVL_VSS
+ void __builtin_vec_stxvl (vus, unsigned short *, unsigned long long);
+ STXVL STXVL_VUS
+ void __builtin_vec_stxvl (vsi, signed int *, unsigned long long);
+ STXVL STXVL_VSI
+ void __builtin_vec_stxvl (vui, unsigned int *, unsigned long long);
+ STXVL STXVL_VUI
+ void __builtin_vec_stxvl (vsll, signed long long *, unsigned long long);
+ STXVL STXVL_VSLL
+ void __builtin_vec_stxvl (vull, unsigned long long *, unsigned long long);
+ STXVL STXVL_VULL
+ void __builtin_vec_stxvl (vsq, signed __int128 *, unsigned long long);
+ STXVL STXVL_VSQ
+ void __builtin_vec_stxvl (vuq, unsigned __int128 *, unsigned long long);
+ STXVL STXVL_VUQ
+ void __builtin_vec_stxvl (vf, float *, unsigned long long);
+ STXVL STXVL_VF
+ void __builtin_vec_stxvl (vd, double *, unsigned long long);
+ STXVL STXVL_VD
+
[VEC_SUB, vec_sub, __builtin_vec_sub]
vsc __builtin_vec_sub (vsc, vsc);
VSUBUBM VSUBUBM_VSC
@@ -2129,6 +2462,30 @@
vd __builtin_vec_trunc (vd);
XVRDPIZ
+[VEC_TSTSFI_GT, SKIP, __builtin_dfp_dtstsfi_gt]
+ signed int __builtin_dfp_dtstsfi_gt (unsigned int, _Decimal64);
+ TSTSFI_GT_DD
+ signed int __builtin_dfp_dtstsfi_gt (unsigned int, _Decimal128);
+ TSTSFI_GT_TD
+
+[VEC_TSTSFI_EQ, SKIP, __builtin_dfp_dtstsfi_eq]
+ signed int __builtin_dfp_dtstsfi_eq (unsigned int, _Decimal64);
+ TSTSFI_EQ_DD
+ signed int __builtin_dfp_dtstsfi_eq (unsigned int, _Decimal128);
+ TSTSFI_EQ_TD
+
+[VEC_TSTSFI_LT, SKIP, __builtin_dfp_dtstsfi_lt]
+ signed int __builtin_dfp_dtstsfi_lt (unsigned int, _Decimal64);
+ TSTSFI_LT_DD
+ signed int __builtin_dfp_dtstsfi_lt (unsigned int, _Decimal128);
+ TSTSFI_LT_TD
+
+[VEC_TSTSFI_OV, SKIP, __builtin_dfp_dtstsfi_ov]
+ signed int __builtin_dfp_dtstsfi_ov (unsigned int, _Decimal64);
+ TSTSFI_OV_DD
+ signed int __builtin_dfp_dtstsfi_ov (unsigned int, _Decimal128);
+ TSTSFI_OV_TD
+
[VEC_UNPACKH, vec_unpackh, __builtin_vec_unpackh]
vss __builtin_vec_unpackh (vsc);
VUPKHSB VUPKHSB_VSC
@@ -2165,6 +2522,96 @@
vd __builtin_vec_unpackl (vf);
DOUBLEL_V4SF VUPKLF
+[VEC_VEE, vec_extract_exp, __builtin_vec_extract_exp]
+ vui __builtin_vec_extract_exp (vf);
+ VEESP
+ vull __builtin_vec_extract_exp (vd);
+ VEEDP
+
+[VEC_VES, vec_extract_sig, __builtin_vec_extract_sig]
+ vui __builtin_vec_extract_sig (vf);
+ VESSP
+ vull __builtin_vec_extract_sig (vd);
+ VESDP
+
+[VEC_VIE, vec_insert_exp, __builtin_vec_insert_exp]
+ vf __builtin_vec_insert_exp (vf, vui);
+ VIESP VIESP_VF
+ vf __builtin_vec_insert_exp (vui, vui);
+ VIESP VIESP_VUI
+ vd __builtin_vec_insert_exp (vd, vull);
+ VIEDP VIEDP_VD
+ vd __builtin_vec_insert_exp (vull, vull);
+ VIEDP VIEDP_VULL
+
+[VEC_VSCEEQ, scalar_cmp_exp_eq, __builtin_vec_scalar_cmp_exp_eq]
+ signed int __builtin_vec_scalar_cmp_exp_eq (double, double);
+ VSCEDPEQ
+ signed int __builtin_vec_scalar_cmp_exp_eq (_Float128, _Float128);
+ VSCEQPEQ
+
+[VEC_VSCEGT, scalar_cmp_exp_gt, __builtin_vec_scalar_cmp_exp_gt]
+ signed int __builtin_vec_scalar_cmp_exp_gt (double, double);
+ VSCEDPGT
+ signed int __builtin_vec_scalar_cmp_exp_gt (_Float128, _Float128);
+ VSCEQPGT
+
+[VEC_VSCELT, scalar_cmp_exp_lt, __builtin_vec_scalar_cmp_exp_lt]
+ signed int __builtin_vec_scalar_cmp_exp_lt (double, double);
+ VSCEDPLT
+ signed int __builtin_vec_scalar_cmp_exp_lt (_Float128, _Float128);
+ VSCEQPLT
+
+[VEC_VSCEUO, scalar_cmp_exp_unordered, __builtin_vec_scalar_cmp_exp_unordered]
+ signed int __builtin_vec_scalar_cmp_exp_unordered (double, double);
+ VSCEDPUO
+ signed int __builtin_vec_scalar_cmp_exp_unordered (_Float128, _Float128);
+ VSCEQPUO
+
+[VEC_VSEE, scalar_extract_exp, __builtin_vec_scalar_extract_exp]
+ unsigned int __builtin_vec_scalar_extract_exp (double);
+ VSEEDP
+ unsigned int __builtin_vec_scalar_extract_exp (_Float128);
+ VSEEQP
+
+[VEC_VSES, scalar_extract_sig, __builtin_vec_scalar_extract_sig]
+ unsigned int __builtin_vec_scalar_extract_sig (double);
+ VSESDP
+ unsigned int __builtin_vec_scalar_extract_sig (_Float128);
+ VSESQP
+
+[VEC_VSIE, scalar_insert_exp, __builtin_vec_scalar_insert_exp]
+ double __builtin_vec_scalar_insert_exp (unsigned int, unsigned int);
+ VSIEDP VSIEDP_UI
+ double __builtin_vec_scalar_insert_exp (double, unsigned int);
+ VSIEDP VSIEDP_D
+ _Float128 __builtin_vec_scalar_insert_exp (unsigned long long, unsigned long long);
+ VSIEQP VSIEQP_ULL
+ _Float128 __builtin_vec_scalar_insert_exp (_Float128, unsigned long long);
+ VSIEQP VSIEQP_F128
+
+[VEC_VSTDC, scalar_test_data_class, __builtin_vec_scalar_test_data_class]
+ bool __builtin_vec_scalar_test_data_class (float, signed int);
+ VSTDCSP
+ bool __builtin_vec_scalar_test_data_class (double, signed int);
+ VSTDCDP
+ bool __builtin_vec_scalar_test_data_class (_Float128, signed int);
+ VSTDCQP
+
+[VEC_VSTDCN, scalar_test_neg, __builtin_vec_scalar_test_neg]
+ bool __builtin_vec_scalar_test_neg (float);
+ VSTDCNSP
+ bool __builtin_vec_scalar_test_neg (double);
+ VSTDCNDP
+ bool __builtin_vec_scalar_test_neg (_Float128);
+ VSTDCNQP
+
+[VEC_VTDC, vec_test_data_class, __builtin_vec_test_data_class]
+ vbi __builtin_vec_test_data_class (vf, signed int);
+ VTDCSP
+ vbll __builtin_vec_test_data_class (vd, signed int);
+ VTDCDP
+
[VEC_XL, vec_xl, __builtin_vec_vsx_ld]
vsc __builtin_vec_vsx_ld (signed long long, vsc *);
LXVW4X_V4SI LXVW4X_VSC
@@ -2259,6 +2706,10 @@
vd __builtin_vec_xl_be (signed long long, double *);
LD_ELEMREV_V2DF LD_ELEMREV_DD
+[VEC_XL_LEN_R, vec_xl_len_r, __builtin_vec_xl_len_r]
+ vuc __builtin_vsx_xl_len_r (unsigned char *, unsigned long long);
+ XL_LEN_R
+
[VEC_XOR, vec_xor, __builtin_vec_xor]
vsc __builtin_vec_xor (vsc, vsc);
VXOR_V16QI
@@ -2417,6 +2868,10 @@
void __builtin_vec_xst_be (vd, signed long long, double *);
STXVD2X_V2DF STXVD2X_D_BE
+[VEC_XST_LEN_R, vec_xst_len_r, __builtin_vec_xst_len_r]
+ void __builtin_vsx_xst_len_r (vuc, unsigned char *, unsigned long long);
+ XST_LEN_R
+
[VEC_XXPERMDI, vec_xxpermdi, __builtin_vsx_xxpermdi]
vsc __builtin_vsx_xxpermdi (vsc, vsc, const int);
XXPERMDI_16QI XXPERMDI_VSC
^ permalink raw reply [flat|nested] 15+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins3)] rs6000: More progress on the overload table
@ 2020-10-29 19:53 William Schmidt
0 siblings, 0 replies; 15+ messages in thread
From: William Schmidt @ 2020-10-29 19:53 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:22adff0314c872454254b9f092a54fcd4013b22a
commit 22adff0314c872454254b9f092a54fcd4013b22a
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Tue Oct 13 16:41:20 2020 -0500
rs6000: More progress on the overload table
2020-10-13 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add
deprecation comments.
* config/rs6000/rs6000-overload.def: Add more entries.
Diff:
---
gcc/config/rs6000/rs6000-call.c | 12 ++-
gcc/config/rs6000/rs6000-overload.def | 198 ++++++++++++++++++++++++++++++++++
2 files changed, 209 insertions(+), 1 deletion(-)
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 7f31e8a11dd..10464f6df8d 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -2497,6 +2497,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, 0 },
{ ALTIVEC_BUILTIN_VEC_SPLAT, VSX_BUILTIN_XXSPLTD_V2DI,
RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSPLT* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSPLTW, ALTIVEC_BUILTIN_VSPLTW,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_INTSI, 0 },
{ ALTIVEC_BUILTIN_VEC_VSPLTW, ALTIVEC_BUILTIN_VSPLTW,
@@ -2535,6 +2537,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_SR, P8V_BUILTIN_VSRD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSR* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSRW, ALTIVEC_BUILTIN_VSRW,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VSRW, ALTIVEC_BUILTIN_VSRW,
@@ -2563,6 +2567,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_SRA, P8V_BUILTIN_VSRAD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSRA* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSRAW, ALTIVEC_BUILTIN_VSRAW,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VSRAW, ALTIVEC_BUILTIN_VSRAW,
@@ -2589,7 +2595,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, 0 },
{ ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V16QI, 0 },
- /* Next 3 deprecated, not in rs6000-builtin-new.def. */
+ /* Next 5 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR,
RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR,
@@ -2730,12 +2736,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUWM,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
+ /* Next two deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_SUB, P8V_BUILTIN_VSUBUDM,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_SUB, P8V_BUILTIN_VSUBUDM,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_SUB, P8V_BUILTIN_VSUBUDM,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
+ /* Next two deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_SUB, P8V_BUILTIN_VSUBUDM,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_SUB, P8V_BUILTIN_VSUBUDM,
@@ -2751,6 +2759,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ ALTIVEC_BUILTIN_VEC_SUB, P8V_BUILTIN_VSUBUQM,
RS6000_BTI_unsigned_V1TI, RS6000_BTI_unsigned_V1TI,
RS6000_BTI_unsigned_V1TI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSUB* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSUBFP, ALTIVEC_BUILTIN_VSUBFP,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_VSUBUWM, ALTIVEC_BUILTIN_VSUBUWM,
diff --git a/gcc/config/rs6000/rs6000-overload.def b/gcc/config/rs6000/rs6000-overload.def
index 10d5e9b38f8..33e12121b45 100644
--- a/gcc/config/rs6000/rs6000-overload.def
+++ b/gcc/config/rs6000/rs6000-overload.def
@@ -1172,12 +1172,210 @@
vull __builtin_vec_sll (vull, vuc);
VSL VSL_VULL
+[VEC_SLO, vec_slo, __builtin_vec_slo]
+ vsc __builtin_vec_slo (vsc, vsc);
+ VSLO VSLO_VSCS
+ vsc __builtin_vec_slo (vsc, vuc);
+ VSLO VSLO_VSCU
+ vuc __builtin_vec_slo (vuc, vsc);
+ VSLO VSLO_VUCS
+ vuc __builtin_vec_slo (vuc, vuc);
+ VSLO VSLO_VUCU
+ vss __builtin_vec_slo (vss, vsc);
+ VSLO VSLO_VSSS
+ vss __builtin_vec_slo (vss, vuc);
+ VSLO VSLO_VSSU
+ vus __builtin_vec_slo (vus, vsc);
+ VSLO VSLO_VUSS
+ vus __builtin_vec_slo (vus, vuc);
+ VSLO VSLO_VUSU
+ vp __builtin_vec_slo (vp, vsc);
+ VSLO VSLO_VPS
+ vp __builtin_vec_slo (vp, vuc);
+ VSLO VSLO_VPU
+ vsi __builtin_vec_slo (vsi, vsc);
+ VSLO VSLO_VSIS
+ vsi __builtin_vec_slo (vsi, vuc);
+ VSLO VSLO_VSIU
+ vui __builtin_vec_slo (vui, vsc);
+ VSLO VSLO_VUIS
+ vui __builtin_vec_slo (vui, vuc);
+ VSLO VSLO_VUIU
+ vsll __builtin_vec_slo (vsll, vsc);
+ VSLO VSLO_VSLLS
+ vsll __builtin_vec_slo (vsll, vuc);
+ VSLO VSLO_VSLLU
+ vull __builtin_vec_slo (vull, vsc);
+ VSLO VSLO_VULLS
+ vull __builtin_vec_slo (vull, vuc);
+ VSLO VSLO_VULLU
+ vf __builtin_vec_slo (vf, vsc);
+ VSLO VSLO_VFS
+ vf __builtin_vec_slo (vf, vuc);
+ VSLO VSLO_VFU
+
+[VEC_SPLAT, vec_splat, __builtin_vec_splat]
+ vsc __builtin_vec_splat (vsc, signed int);
+ VSPLTB VSPLTB_VSC
+ vuc __builtin_vec_splat (vuc, signed int);
+ VSPLTB VSPLTB_VUC
+ vbc __builtin_vec_splat (vbc, signed int);
+ VSPLTB VSPLTB_VBC
+ vss __builtin_vec_splat (vss, signed int);
+ VSPLTH VSPLTH_VSS
+ vus __builtin_vec_splat (vus, signed int);
+ VSPLTH VSPLTH_VUS
+ vbs __builtin_vec_splat (vbs, signed int);
+ VSPLTH VSPLTH_VBS
+ vp __builtin_vec_splat (vp, signed int);
+ VSPLTH VSPLTH_VP
+ vf __builtin_vec_splat (vf, signed int);
+ VSPLTW VSPLTW_VF
+ vsi __builtin_vec_splat (vsi, signed int);
+ VSPLTW VSPLTW_VSI
+ vui __builtin_vec_splat (vui, signed int);
+ VSPLTW VSPLTW_VUI
+ vbi __builtin_vec_splat (vbi, signed int);
+ VSPLTW VSPLTW_VBI
+ vd __builtin_vec_splat (vd, signed int);
+ XXSPLTD_V2DF
+ vsll __builtin_vec_splat (vsll, signed int);
+ XXSPLTD_V2DI XXSPLTD_VSLL
+ vull __builtin_vec_splat (vull, signed int);
+ XXSPLTD_V2DI XXSPLTD_VULL
+ vbll __builtin_vec_splat (vbll, signed int);
+ XXSPLTD_V2DI XXSPLTD_VBLL
+
[VEC_SQRT, vec_sqrt, __builtin_vec_sqrt]
vf __builtin_vec_sqrt (vf);
XVSQRTSP
vd __builtin_vec_sqrt (vd);
XVSQRTDP
+[VEC_SR, vec_sr, __builtin_vec_sr]
+ vsc __builtin_vec_sr (vsc, vuc);
+ VSRB VSRB_VSC
+ vuc __builtin_vec_sr (vuc, vuc);
+ VSRB VSRB_VUC
+ vss __builtin_vec_sr (vss, vus);
+ VSRH VSRH_VSS
+ vus __builtin_vec_sr (vus, vus);
+ VSRH VSRH_VUS
+ vsi __builtin_vec_sr (vsi, vui);
+ VSRW VSRW_VSI
+ vui __builtin_vec_sr (vui, vui);
+ VSRW VSRW_VUI
+ vsll __builtin_vec_sr (vsll, vull);
+ VSRD VSRD_VSLL
+ vull __builtin_vec_sr (vull, vull);
+ VSRD VSRD_VULL
+
+[VEC_SRA, vec_sra, __builtin_vec_sra]
+ vsc __builtin_vec_sra (vsc, vuc);
+ VSRAB VSRAB_VSC
+ vuc __builtin_vec_sra (vuc, vuc);
+ VSRAB VSRAB_VUC
+ vss __builtin_vec_sra (vss, vus);
+ VSRAH VSRAH_VSS
+ vus __builtin_vec_sra (vus, vus);
+ VSRAH VSRAH_VUS
+ vsi __builtin_vec_sra (vsi, vui);
+ VSRAW VSRAW_VSI
+ vui __builtin_vec_sra (vui, vui);
+ VSRAW VSRAW_VUI
+ vsll __builtin_vec_sra (vsll, vull);
+ VSRAD VSRAD_VSLL
+ vull __builtin_vec_sra (vull, vull);
+ VSRAD VSRAD_VULL
+
+[VEC_SRL, vec_srl, __builtin_vec_srl]
+ vsc __builtin_vec_srl (vsc, vuc);
+ VSR VSR_VSC
+ vuc __builtin_vec_srl (vuc, vuc);
+ VSR VSR_VUC
+ vss __builtin_vec_srl (vss, vuc);
+ VSR VSR_VSS
+ vus __builtin_vec_srl (vus, vuc);
+ VSR VSR_VUS
+ vp __builtin_vec_srl (vp, vuc);
+ VSR VSR_VP
+ vsi __builtin_vec_srl (vsi, vuc);
+ VSR VSR_VSI
+ vui __builtin_vec_srl (vui, vuc);
+ VSR VSR_VUI
+ vsll __builtin_vec_srl (vsll, vuc);
+ VSR VSR_VSLL
+ vull __builtin_vec_srl (vull, vuc);
+ VSR VSR_VULL
+
+[VEC_SRO, vec_sro, __builtin_vec_sro]
+ vsc __builtin_vec_sro (vsc, vsc);
+ VSRO VSRO_VSCS
+ vsc __builtin_vec_sro (vsc, vuc);
+ VSRO VSRO_VSCU
+ vuc __builtin_vec_sro (vuc, vsc);
+ VSRO VSRO_VUCS
+ vuc __builtin_vec_sro (vuc, vuc);
+ VSRO VSRO_VUCU
+ vss __builtin_vec_sro (vss, vsc);
+ VSRO VSRO_VSSS
+ vss __builtin_vec_sro (vss, vuc);
+ VSRO VSRO_VSSU
+ vus __builtin_vec_sro (vus, vsc);
+ VSRO VSRO_VUSS
+ vus __builtin_vec_sro (vus, vuc);
+ VSRO VSRO_VUSU
+ vp __builtin_vec_sro (vp, vsc);
+ VSRO VSRO_VPS
+ vp __builtin_vec_sro (vp, vuc);
+ VSRO VSRO_VPU
+ vsi __builtin_vec_sro (vsi, vsc);
+ VSRO VSRO_VSIS
+ vsi __builtin_vec_sro (vsi, vuc);
+ VSRO VSRO_VSIU
+ vui __builtin_vec_sro (vui, vsc);
+ VSRO VSRO_VUIS
+ vui __builtin_vec_sro (vui, vuc);
+ VSRO VSRO_VUIU
+ vsll __builtin_vec_sro (vsll, vsc);
+ VSRO VSRO_VSLLS
+ vsll __builtin_vec_sro (vsll, vuc);
+ VSRO VSRO_VSLLU
+ vull __builtin_vec_sro (vull, vsc);
+ VSRO VSRO_VULLS
+ vull __builtin_vec_sro (vull, vuc);
+ VSRO VSRO_VULLU
+ vf __builtin_vec_sro (vf, vsc);
+ VSRO VSRO_VFS
+ vf __builtin_vec_sro (vf, vuc);
+ VSRO VSRO_VFU
+
+[VEC_SUB, vec_sub, __builtin_vec_sub]
+ vsc __builtin_vec_sub (vsc, vsc);
+ VSUBUBM VSUBUBM_VSC
+ vuc __builtin_vec_sub (vuc, vuc);
+ VSUBUBM VSUBUBM_VUC
+ vss __builtin_vec_sub (vss, vss);
+ VSUBUHM VSUBUHM_VSS
+ vus __builtin_vec_sub (vus, vus);
+ VSUBUHM VSUBUHM_VUS
+ vsi __builtin_vec_sub (vsi, vsi);
+ VSUBUWM VSUBUWM_VSI
+ vui __builtin_vec_sub (vui, vui);
+ VSUBUWM VSUBUWM_VUI
+ vsll __builtin_vec_sub (vsll, vsll);
+ VSUBUDM VSUBUDM_VSLL
+ vull __builtin_vec_sub (vull, vull);
+ VSUBUDM VSUBUDM_VULL
+ vsq __builtin_vec_sub (vsq, vsq);
+ VSUBUQM VSUBUQM_VSQ
+ vuq __builtin_vec_sub (vuq, vuq);
+ VSUBUQM VSUBUQM_VUQ
+ vf __builtin_vec_sub (vf, vf);
+ XVSUBSP
+ vd __builtin_vec_sub (vd, vd);
+ XVSUBDP
+
[VEC_TRUNC, vec_trunc, __builtin_vec_trunc]
vf __builtin_vec_trunc (vf);
XVRSPIZ
^ permalink raw reply [flat|nested] 15+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins3)] rs6000: More progress on the overload table
@ 2020-10-29 19:53 William Schmidt
0 siblings, 0 replies; 15+ messages in thread
From: William Schmidt @ 2020-10-29 19:53 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:9e4269e3f7b5ab329234be0ab8f9150e296443e4
commit 9e4269e3f7b5ab329234be0ab8f9150e296443e4
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Mon Oct 12 17:04:43 2020 -0500
rs6000: More progress on the overload table
2020-10-12 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Minor updates.
* config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add
deprecation comments.
* config/rs6000/rs6000-gen-builtins.c (write_defines_file): Handle
SKIP directive.
* config/rs6000/rs6000-overload.def: Add more entries.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 10 +-
gcc/config/rs6000/rs6000-call.c | 25 ++
gcc/config/rs6000/rs6000-gen-builtins.c | 7 +-
gcc/config/rs6000/rs6000-overload.def | 395 ++++++++++++++++++++++++++++++-
4 files changed, 428 insertions(+), 9 deletions(-)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index 5f6eccc82e7..d6a93e6b279 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -706,7 +706,7 @@
VNMSUBFP nfmsv4sf4 {}
const vsc __builtin_altivec_vnor_v16qi (vsc, vsc);
- VNOR_V16QIS norv16qi3 {}
+ VNOR_V16QI norv16qi3 {}
const vuc __builtin_altivec_vnor_v16qi_uns (vuc, vuc);
VNOR_V16QI_UNS norv16qi3 {}
@@ -2617,16 +2617,16 @@
const vsi __builtin_altivec_vprtybw (vsi);
VPRTYBW parityv4si2 {}
- const vsll __builtin_altivec_vrldmi (vsll, vsll, vsll);
+ const vull __builtin_altivec_vrldmi (vull, vull, vull);
VRLDMI altivec_vrldmi {}
- const vsll __builtin_altivec_vrldnm (vsll, vsll);
+ const vull __builtin_altivec_vrldnm (vull, vull);
VRLDNM altivec_vrldnm {}
- const vsi __builtin_altivec_vrlwmi (vsi, vsi, vsi);
+ const vui __builtin_altivec_vrlwmi (vui, vui, vui);
VRLWMI altivec_vrlwmi {}
- const vsi __builtin_altivec_vrlwnm (vsi, vsi);
+ const vui __builtin_altivec_vrlwnm (vui, vui);
VRLWNM altivec_vrlwnm {}
const vuc __builtin_altivec_vslv (vuc, vuc);
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index d99c90905e4..7f31e8a11dd 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -1616,12 +1616,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXSW,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_MAX, P8V_BUILTIN_VMAXUD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MAX, P8V_BUILTIN_VMAXUD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MAX, P8V_BUILTIN_VMAXUD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_MAX, P8V_BUILTIN_VMAXSD,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MAX, P8V_BUILTIN_VMAXSD,
@@ -1632,6 +1634,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_MAX, VSX_BUILTIN_XVMAXDP,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VMAX* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMAXFP, ALTIVEC_BUILTIN_VMAXFP,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_VMAXSW, ALTIVEC_BUILTIN_VMAXSW,
@@ -1708,18 +1712,22 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 },
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VMRGH* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMRGHW, ALTIVEC_BUILTIN_VMRGHW,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_VMRGHW, ALTIVEC_BUILTIN_VMRGHW,
@@ -1782,6 +1790,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MERGEL, VSX_BUILTIN_VEC_MERGEL_V2DI,
RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VMRGL* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMRGLW, ALTIVEC_BUILTIN_VMRGLW,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_VMRGLW, ALTIVEC_BUILTIN_VMRGLW,
@@ -1846,6 +1856,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINSW,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_MIN, P8V_BUILTIN_VMINUD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MIN, P8V_BUILTIN_VMINUD,
@@ -1863,6 +1874,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_MIN, VSX_BUILTIN_XVMINDP,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VMIN* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMINFP, ALTIVEC_BUILTIN_VMINFP,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_VMINSW, ALTIVEC_BUILTIN_VMINSW,
@@ -1926,6 +1939,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ ALTIVEC_BUILTIN_VEC_MULE, P8V_BUILTIN_VMULEUW,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V4SI,
RS6000_BTI_unsigned_V4SI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VMULE* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMULEUB, ALTIVEC_BUILTIN_VMULEUB,
RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 },
{ ALTIVEC_BUILTIN_VEC_VMULESB, ALTIVEC_BUILTIN_VMULESB,
@@ -1951,6 +1966,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_MULO, ALTIVEC_BUILTIN_VMULOSH,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VMULO* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMULOSH, ALTIVEC_BUILTIN_VMULOSH,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 },
{ ALTIVEC_BUILTIN_VEC_VMULOUH, ALTIVEC_BUILTIN_VMULOUH,
@@ -2195,6 +2212,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
P9V_BUILTIN_VFIRSTMISMATCHOREOSINDEX_V4SI,
RS6000_BTI_UINTSI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VPK* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VPKUWUM, ALTIVEC_BUILTIN_VPKUWUM,
RS6000_BTI_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VPKUWUM, ALTIVEC_BUILTIN_VPKUWUM,
@@ -2221,6 +2240,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_PACKS, P8V_BUILTIN_VPKSDSS,
RS6000_BTI_V4SI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VPK* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VPKSWSS, ALTIVEC_BUILTIN_VPKSWSS,
RS6000_BTI_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VPKUWUS, ALTIVEC_BUILTIN_VPKUWUS,
@@ -2265,6 +2286,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_RL, P8V_BUILTIN_VRLD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VRL* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VRLW, ALTIVEC_BUILTIN_VRLW,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VRLW, ALTIVEC_BUILTIN_VRLW,
@@ -2309,6 +2332,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0, 0 },
{ ALTIVEC_BUILTIN_VEC_SQRT, VSX_BUILTIN_XVSQRTSP,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSL* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSLW, ALTIVEC_BUILTIN_VSLW,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VSLW, ALTIVEC_BUILTIN_VSLW,
diff --git a/gcc/config/rs6000/rs6000-gen-builtins.c b/gcc/config/rs6000/rs6000-gen-builtins.c
index 822a2912a32..dfd943bc3d7 100644
--- a/gcc/config/rs6000/rs6000-gen-builtins.c
+++ b/gcc/config/rs6000/rs6000-gen-builtins.c
@@ -2614,9 +2614,10 @@ static int
write_defines_file ()
{
for (int i = 0; i < num_ovld_stanzas; i++)
- fprintf (defines_file, "#define %s %s\n",
- ovld_stanzas[i].extern_name,
- ovld_stanzas[i].intern_name);
+ if (strcmp (ovld_stanzas[i].extern_name, "SKIP"))
+ fprintf (defines_file, "#define %s %s\n",
+ ovld_stanzas[i].extern_name,
+ ovld_stanzas[i].intern_name);
return 1;
}
diff --git a/gcc/config/rs6000/rs6000-overload.def b/gcc/config/rs6000/rs6000-overload.def
index 104c23b1ead..10d5e9b38f8 100644
--- a/gcc/config/rs6000/rs6000-overload.def
+++ b/gcc/config/rs6000/rs6000-overload.def
@@ -29,7 +29,8 @@
; unique internal identifier for the overload that will be used as part
; of an enumeration of all overloaded functions; <abi-name> is the name
; that will appear as a #define in altivec.h; and <builtin-name> is the
-; name that is overloaded in the back end.
+; name that is overloaded in the back end. If no #define is desired,
+; the <abi-name> should be replaced with the token SKIP.
;
; Each function entry has two lines. The first line is a prototype line.
; See rs6000-builtin-new.def for a description of the prototype line.
@@ -291,6 +292,14 @@
; Note that there is no entry for VEC_CMPLT. VEC_CMPLT is implemented
; using VEC_CMPGT with reversed arguments in altivec.h.
+[VEC_CONVERT_4F32_8I16, SKIP, __builtin_vec_convert_4f32_8i16]
+ vus __builtin_vec_convert_4f32_8i16 (vf, vf);
+ CONVERT_4F32_8I16
+
+[VEC_CONVERT_4F32_8F16, SKIP, __builtin_vec_convert_4f32_8f16]
+ vus __builtin_vec_convert_4f32_8f16 (vf, vf);
+ CONVERT_4F32_8F16
+
[VEC_COPYSIGN, vec_cpsgn, __builtin_vec_copysign]
vf __builtin_vec_copysign (vf, vf);
CPSGNSP
@@ -371,6 +380,62 @@
vf __builtin_vec_expte (vf);
VEXPTEFP
+[VEC_FIRSTMATCHINDEX, vec_first_match_index, __builtin_vec_first_match_index]
+ unsigned int __builtin_vec_first_match_index (vsc, vsc);
+ VFIRSTMATCHINDEX_V16QI FIRSTMATCHINDEX_VSC
+ unsigned int __builtin_vec_first_match_index (vuc, vuc);
+ VFIRSTMATCHINDEX_V16QI FIRSTMATCHINDEX_VUC
+ unsigned int __builtin_vec_first_match_index (vss, vss);
+ VFIRSTMATCHINDEX_V8HI FIRSTMATCHINDEX_VSS
+ unsigned int __builtin_vec_first_match_index (vus, vus);
+ VFIRSTMATCHINDEX_V8HI FIRSTMATCHINDEX_VUS
+ unsigned int __builtin_vec_first_match_index (vsi, vsi);
+ VFIRSTMATCHINDEX_V4SI FIRSTMATCHINDEX_VSI
+ unsigned int __builtin_vec_first_match_index (vui, vui);
+ VFIRSTMATCHINDEX_V4SI FIRSTMATCHINDEX_VUI
+
+[VEC_FIRSTMATCHOREOSINDEX, vec_first_match_or_eos_index, __builtin_vec_first_match_or_eos_index]
+ unsigned int __builtin_vec_first_match_or_eos_index (vsc, vsc);
+ VFIRSTMATCHOREOSINDEX_V16QI FIRSTMATCHOREOSINDEX_VSC
+ unsigned int __builtin_vec_first_match_or_eos_index (vuc, vuc);
+ VFIRSTMATCHOREOSINDEX_V16QI FIRSTMATCHOREOSINDEX_VUC
+ unsigned int __builtin_vec_first_match_or_eos_index (vss, vss);
+ VFIRSTMATCHOREOSINDEX_V8HI FIRSTMATCHOREOSINDEX_VSS
+ unsigned int __builtin_vec_first_match_or_eos_index (vus, vus);
+ VFIRSTMATCHOREOSINDEX_V8HI FIRSTMATCHOREOSINDEX_VUS
+ unsigned int __builtin_vec_first_match_or_eos_index (vsi, vsi);
+ VFIRSTMATCHOREOSINDEX_V4SI FIRSTMATCHOREOSINDEX_VSI
+ unsigned int __builtin_vec_first_match_or_eos_index (vui, vui);
+ VFIRSTMATCHOREOSINDEX_V4SI FIRSTMATCHOREOSINDEX_VUI
+
+[VEC_FIRSTMISMATCHINDEX, vec_first_mismatch_index, __builtin_vec_first_mismatch_index]
+ unsigned int __builtin_vec_first_mismatch_index (vsc, vsc);
+ VFIRSTMISMATCHINDEX_V16QI FIRSTMISMATCHINDEX_VSC
+ unsigned int __builtin_vec_first_mismatch_index (vuc, vuc);
+ VFIRSTMISMATCHINDEX_V16QI FIRSTMISMATCHINDEX_VUC
+ unsigned int __builtin_vec_first_mismatch_index (vss, vss);
+ VFIRSTMISMATCHINDEX_V8HI FIRSTMISMATCHINDEX_VSS
+ unsigned int __builtin_vec_first_mismatch_index (vus, vus);
+ VFIRSTMISMATCHINDEX_V8HI FIRSTMISMATCHINDEX_VUS
+ unsigned int __builtin_vec_first_mismatch_index (vsi, vsi);
+ VFIRSTMISMATCHINDEX_V4SI FIRSTMISMATCHINDEX_VSI
+ unsigned int __builtin_vec_first_mismatch_index (vui, vui);
+ VFIRSTMISMATCHINDEX_V4SI FIRSTMISMATCHINDEX_VUI
+
+[VEC_FIRSTMISMATCHOREOSINDEX, vec_first_mismatch_or_eos_index, __builtin_vec_first_mismatch_or_eos_index]
+ unsigned int __builtin_vec_first_mismatch_or_eos_index (vsc, vsc);
+ VFIRSTMISMATCHOREOSINDEX_V16QI FIRSTMISMATCHOREOSINDEX_VSC
+ unsigned int __builtin_vec_first_mismatch_or_eos_index (vuc, vuc);
+ VFIRSTMISMATCHOREOSINDEX_V16QI FIRSTMISMATCHOREOSINDEX_VUC
+ unsigned int __builtin_vec_first_mismatch_or_eos_index (vss, vss);
+ VFIRSTMISMATCHOREOSINDEX_V8HI FIRSTMISMATCHOREOSINDEX_VSS
+ unsigned int __builtin_vec_first_mismatch_or_eos_index (vus, vus);
+ VFIRSTMISMATCHOREOSINDEX_V8HI FIRSTMISMATCHOREOSINDEX_VUS
+ unsigned int __builtin_vec_first_mismatch_or_eos_index (vsi, vsi);
+ VFIRSTMISMATCHOREOSINDEX_V4SI FIRSTMISMATCHOREOSINDEX_VSI
+ unsigned int __builtin_vec_first_mismatch_or_eos_index (vui, vui);
+ VFIRSTMISMATCHOREOSINDEX_V4SI FIRSTMISMATCHOREOSINDEX_VUI
+
[VEC_FLOAT, vec_float, __builtin_vec_float]
vf __builtin_vec_float (vsi);
XVCVSXWSP_V4SF
@@ -733,6 +798,92 @@
vd __builtin_vec_max (vd, vd);
XVMAXDP
+[VEC_MERGEH, vec_mergeh, __builtin_vec_mergeh]
+ vbc __builtin_vec_mergeh (vbc, vbc);
+ VMRGHB VMRGHB_VBC
+ vsc __builtin_vec_mergeh (vsc, vsc);
+ VMRGHB VMRGHB_VSC
+ vuc __builtin_vec_mergeh (vuc, vuc);
+ VMRGHB VMRGHB_VUC
+ vbs __builtin_vec_mergeh (vbs, vbs);
+ VMRGHH VMRGHH_VBS
+ vss __builtin_vec_mergeh (vss, vss);
+ VMRGHH VMRGHH_VSS
+ vus __builtin_vec_mergeh (vus, vus);
+ VMRGHH VMRGHH_VUS
+ vp __builtin_vec_mergeh (vp, vp);
+ VMRGHH VMRGHH_VP
+ vbi __builtin_vec_mergeh (vbi, vbi);
+ VMRGHW VMRGHW_VBI
+ vsi __builtin_vec_mergeh (vsi, vsi);
+ VMRGHW VMRGHW_VSI
+ vui __builtin_vec_mergeh (vui, vui);
+ VMRGHW VMRGHW_VUI
+ vbll __builtin_vec_mergeh (vbll, vbll);
+ VEC_MERGEH_V2DI VEC_MERGEH_VBLL
+ vsll __builtin_vec_mergeh (vsll, vsll);
+ VEC_MERGEH_V2DI VEC_MERGEH_VSLL
+ vull __builtin_vec_mergeh (vull, vull);
+ VEC_MERGEH_V2DI VEC_MERGEH_VULL
+ vf __builtin_vec_mergeh (vf, vf);
+ VMRGHW VMRGHW_VF
+ vd __builtin_vec_mergeh (vd, vd);
+ VEC_MERGEH_V2DF
+
+[VEC_MERGEL, vec_mergel, __builtin_vec_mergel]
+ vbc __builtin_vec_mergel (vbc, vbc);
+ VMRGLB VMRGLB_VBC
+ vsc __builtin_vec_mergel (vsc, vsc);
+ VMRGLB VMRGLB_VSC
+ vuc __builtin_vec_mergel (vuc, vuc);
+ VMRGLB VMRGLB_VUC
+ vbs __builtin_vec_mergel (vbs, vbs);
+ VMRGLH VMRGLH_VBS
+ vss __builtin_vec_mergel (vss, vss);
+ VMRGLH VMRGLH_VSS
+ vus __builtin_vec_mergel (vus, vus);
+ VMRGLH VMRGLH_VUS
+ vp __builtin_vec_mergel (vp, vp);
+ VMRGLH VMRGLH_VP
+ vbi __builtin_vec_mergel (vbi, vbi);
+ VMRGLW VMRGLW_VBI
+ vsi __builtin_vec_mergel (vsi, vsi);
+ VMRGLW VMRGLW_VSI
+ vui __builtin_vec_mergel (vui, vui);
+ VMRGLW VMRGLW_VUI
+ vbll __builtin_vec_mergel (vbll, vbll);
+ VEC_MERGEL_V2DI VEC_MERGEL_VBLL
+ vsll __builtin_vec_mergel (vsll, vsll);
+ VEC_MERGEL_V2DI VEC_MERGEL_VSLL
+ vull __builtin_vec_mergel (vull, vull);
+ VEC_MERGEL_V2DI VEC_MERGEL_VULL
+ vf __builtin_vec_mergel (vf, vf);
+ VMRGLW VMRGLW_VF
+ vd __builtin_vec_mergel (vd, vd);
+ VEC_MERGEL_V2DF
+
+[VEC_MIN, vec_min, __builtin_vec_min]
+ vsc __builtin_vec_min (vsc, vsc);
+ VMINSB
+ vuc __builtin_vec_min (vuc, vuc);
+ VMINUB
+ vss __builtin_vec_min (vss, vss);
+ VMINSH
+ vus __builtin_vec_min (vus, vus);
+ VMINUH
+ vsi __builtin_vec_min (vsi, vsi);
+ VMINSW
+ vui __builtin_vec_min (vui, vui);
+ VMINUW
+ vsll __builtin_vec_min (vsll, vsll);
+ VMINSD
+ vull __builtin_vec_min (vull, vull);
+ VMINUD
+ vf __builtin_vec_min (vf, vf);
+ XVMINSP
+ vd __builtin_vec_min (vd, vd);
+ XVMINDP
+
[VEC_MTVSCR, vec_mtvscr, __builtin_vec_mtvscr]
void __builtin_vec_mtvscr (vbc);
MTVSCR MTVSCR_VBC
@@ -755,6 +906,168 @@
void __builtin_vec_mtvscr (vui);
MTVSCR MTVSCR_VUI
+[VEC_MULE, vec_mule, __builtin_vec_mule]
+ vss __builtin_vec_mule (vsc, vsc);
+ VMULESB
+ vus __builtin_vec_mule (vuc, vuc);
+ VMULEUB
+ vsi __builtin_vec_mule (vss, vss);
+ VMULESH
+ vui __builtin_vec_mule (vus, vus);
+ VMULEUH
+ vsll __builtin_vec_mule (vsi, vsi);
+ VMULESW
+ vull __builtin_vec_mule (vui, vui);
+ VMULEUW
+
+[VEC_MULO, vec_mulo, __builtin_vec_mulo]
+ vss __builtin_vec_mulo (vsc, vsc);
+ VMULOSB
+ vus __builtin_vec_mulo (vuc, vuc);
+ VMULOUB
+ vsi __builtin_vec_mulo (vss, vss);
+ VMULOSH
+ vui __builtin_vec_mulo (vus, vus);
+ VMULOUH
+ vsll __builtin_vec_mulo (vsi, vsi);
+ VMULOSW
+ vull __builtin_vec_mulo (vui, vui);
+ VMULOUW
+
+[VEC_NABS, vec_nabs, __builtin_vec_nabs]
+ vsc __builtin_vec_nabs (vsc);
+ NABS_V16QI
+ vss __builtin_vec_nabs (vss);
+ NABS_V8HI
+ vsi __builtin_vec_nabs (vsi);
+ NABS_V4SI
+ vsll __builtin_vec_nabs (vsll);
+ NABS_V2DI
+ vf __builtin_vec_nabs (vf);
+ NABS_V4SF
+ vd __builtin_vec_nabs (vd);
+ NABS_V2DF
+
+[VEC_NEARBYINT, vec_nearbyint, __builtin_vec_nearbyint]
+ vf __builtin_vec_nearbyint (vf);
+ XVRSPI XVRSPI_NBI
+ vd __builtin_vec_nearbyint (vd);
+ XVRDPI XVRDPI_NBI
+
+[VEC_NEG, vec_neg, __builtin_vec_neg]
+ vsc __builtin_vec_neg (vsc);
+ NEG_V16QI
+ vss __builtin_vec_neg (vss);
+ NEG_V8HI
+ vsi __builtin_vec_neg (vsi);
+ NEG_V4SI
+ vsll __builtin_vec_neg (vsll);
+ NEG_V2DI
+ vf __builtin_vec_neg (vf);
+ NEG_V4SF
+ vd __builtin_vec_neg (vd);
+ NEG_V2DF
+
+[VEC_NOR, vec_nor, __builtin_vec_nor]
+ vsc __builtin_vec_nor (vsc, vsc);
+ VNOR_V16QI
+ vuc __builtin_vec_nor (vuc, vuc);
+ VNOR_V16QI_UNS VNOR_V16QI_U
+ vbc __builtin_vec_nor (vbc, vbc);
+ VNOR_V16QI_UNS VNOR_V16QI_B
+ vss __builtin_vec_nor (vss, vss);
+ VNOR_V8HI
+ vus __builtin_vec_nor (vus, vus);
+ VNOR_V8HI_UNS VNOR_V8HI_U
+ vbs __builtin_vec_nor (vbs, vbs);
+ VNOR_V8HI_UNS VNOR_V8HI_B
+ vsi __builtin_vec_nor (vsi, vsi);
+ VNOR_V4SI
+ vui __builtin_vec_nor (vui, vui);
+ VNOR_V4SI_UNS VNOR_V4SI_U
+ vbi __builtin_vec_nor (vbi, vbi);
+ VNOR_V4SI_UNS VNOR_V4SI_B
+ vsll __builtin_vec_nor (vsll, vsll);
+ VNOR_V2DI
+ vull __builtin_vec_nor (vull, vull);
+ VNOR_V2DI_UNS VNOR_V2DI_U
+ vbll __builtin_vec_nor (vbll, vbll);
+ VNOR_V2DI_UNS VNOR_V2DI_B
+ vf __builtin_vec_nor (vf, vf);
+ VNOR_V4SF
+ vd __builtin_vec_nor (vd, vd);
+ VNOR_V2DF
+
+[VEC_OR, vec_or, __builtin_vec_or]
+ vsc __builtin_vec_or (vsc, vsc);
+ VOR_V16QI
+ vuc __builtin_vec_or (vuc, vuc);
+ VOR_V16QI_UNS VOR_V16QI_U
+ vbc __builtin_vec_or (vbc, vbc);
+ VOR_V16QI_UNS VOR_V16QI_B
+ vss __builtin_vec_or (vss, vss);
+ VOR_V8HI
+ vus __builtin_vec_or (vus, vus);
+ VOR_V8HI_UNS VOR_V8HI_U
+ vbs __builtin_vec_or (vbs, vbs);
+ VOR_V8HI_UNS VOR_V8HI_B
+ vsi __builtin_vec_or (vsi, vsi);
+ VOR_V4SI
+ vui __builtin_vec_or (vui, vui);
+ VOR_V4SI_UNS VOR_V4SI_U
+ vbi __builtin_vec_or (vbi, vbi);
+ VOR_V4SI_UNS VOR_V4SI_B
+ vsll __builtin_vec_or (vsll, vsll);
+ VOR_V2DI
+ vull __builtin_vec_or (vull, vull);
+ VOR_V2DI_UNS VOR_V2DI_U
+ vbll __builtin_vec_or (vbll, vbll);
+ VOR_V2DI_UNS VOR_V2DI_B
+ vf __builtin_vec_or (vf, vf);
+ VOR_V4SF
+ vd __builtin_vec_or (vd, vd);
+ VOR_V2DF
+
+[VEC_PACK, vec_pack, __builtin_vec_pack]
+ vsc __builtin_vec_pack (vss, vss);
+ VPKUHUM VPKUHUM_VSS
+ vuc __builtin_vec_pack (vus, vus);
+ VPKUHUM VPKUHUM_VUS
+ vbc __builtin_vec_pack (vbs, vbs);
+ VPKUHUM VPKUHUM_VBS
+ vss __builtin_vec_pack (vsi, vsi);
+ VPKUWUM VPKUWUM_VSI
+ vus __builtin_vec_pack (vui, vui);
+ VPKUWUM VPKUWUM_VUI
+ vbs __builtin_vec_pack (vbi, vbi);
+ VPKUWUM VPKUWUM_VBI
+ vsi __builtin_vec_pack (vsll, vsll);
+ VPKUDUM VPKUDUM_VSLL
+ vui __builtin_vec_pack (vull, vull);
+ VPKUDUM VPKUDUM_VULL
+ vbi __builtin_vec_pack (vbll, vbll);
+ VPKUDUM VPKUDUM_VBLL
+ vf __builtin_vec_pack (vd, vd);
+ FLOAT2_V2DF FLOAT2_V2DF_PACK
+
+[VEC_PACKPX, vec_packpx, __builtin_vec_packpx]
+ vp __builtin_vec_packpx (vui, vui);
+ VPKPX
+
+[VEC_PACKS, vec_packs, __builtin_vec_packs]
+ vuc __builtin_vec_packs (vus, vus);
+ VPKUHUS
+ vsc __builtin_vec_packs (vss, vss);
+ VPKSHSS
+ vus __builtin_vec_packs (vui, vui);
+ VPKUWUS
+ vss __builtin_vec_packs (vsi, vsi);
+ VPKSWSS
+ vui __builtin_vec_packs (vull, vull);
+ VPKUDUS
+ vsi __builtin_vec_packs (vsll, vsll);
+ VPKSDSS
+
[VEC_RE, vec_re, __builtin_vec_re]
vf __builtin_vec_re (vf);
XVRESP
@@ -767,6 +1080,42 @@
vd __builtin_vec_recipdiv (vd, vd);
RECIP_V2DF
+[VEC_RINT, vec_rint, __builtin_vec_rint]
+ vf __builtin_vec_rint (vf);
+ XVRSPIC
+ vd __builtin_vec_rint (vd);
+ XVRDPIC
+
+[VEC_RL, vec_rl, __builtin_vec_rl]
+ vsc __builtin_vec_rl (vsc, vuc);
+ VRLB VRLB_VSC
+ vuc __builtin_vec_rl (vuc, vuc);
+ VRLB VRLB_VUC
+ vss __builtin_vec_rl (vss, vus);
+ VRLH VRLH_VSS
+ vus __builtin_vec_rl (vus, vus);
+ VRLH VRLH_VUS
+ vsi __builtin_vec_rl (vsi, vui);
+ VRLW VRLW_VSI
+ vui __builtin_vec_rl (vui, vui);
+ VRLW VRLW_VUI
+ vsll __builtin_vec_rl (vsll, vull);
+ VRLD VRLD_VSLL
+ vull __builtin_vec_rl (vull, vull);
+ VRLD VRLD_VULL
+
+[VEC_RLMI, vec_rlmi, __builtin_vec_rlmi]
+ vui __builtin_vec_rlmi (vui, vui, vui);
+ VRLWMI
+ vull __builtin_vec_rlmi (vull, vull, vull);
+ VRLDMI
+
+[VEC_RLNM, vec_rlnm, __builtin_vec_rlnm]
+ vui __builtin_vec_rlnm (vui, vui);
+ VRLWNM
+ vull __builtin_vec_rlnm (vull, vull);
+ VRLDNM
+
[VEC_ROUND, vec_round, __builtin_vec_round]
vf __builtin_vec_round (vf);
XVRSPI
@@ -785,6 +1134,50 @@
vd __builtin_vec_rsqrte (vd);
XVRSQRTEDP
+[VEC_SL, vec_sl, __builtin_vec_sl]
+ vsc __builtin_vec_sl (vsc, vuc);
+ VSLB VSLB_VSC
+ vuc __builtin_vec_sl (vuc, vuc);
+ VSLB VSLB_VUC
+ vss __builtin_vec_sl (vss, vus);
+ VSLH VSLH_VSS
+ vus __builtin_vec_sl (vus, vus);
+ VSLH VSLH_VUS
+ vsi __builtin_vec_sl (vsi, vui);
+ VSLW VSLW_VSI
+ vui __builtin_vec_sl (vui, vui);
+ VSLW VSLW_VUI
+ vsll __builtin_vec_sl (vsll, vull);
+ VSLD VSLD_VSLL
+ vull __builtin_vec_sl (vull, vull);
+ VSLD VSLD_VULL
+
+[VEC_SLL, vec_sll, __builtin_vec_sll]
+ vsc __builtin_vec_sll (vsc, vuc);
+ VSL VSL_VSC
+ vuc __builtin_vec_sll (vuc, vuc);
+ VSL VSL_VUC
+ vss __builtin_vec_sll (vss, vuc);
+ VSL VSL_VSS
+ vus __builtin_vec_sll (vus, vuc);
+ VSL VSL_VUS
+ vp __builtin_vec_sll (vp, vuc);
+ VSL VSL_VP
+ vsi __builtin_vec_sll (vsi, vuc);
+ VSL VSL_VSI
+ vui __builtin_vec_sll (vui, vuc);
+ VSL VSL_VUI
+ vsll __builtin_vec_sll (vsll, vuc);
+ VSL VSL_VSLL
+ vull __builtin_vec_sll (vull, vuc);
+ VSL VSL_VULL
+
+[VEC_SQRT, vec_sqrt, __builtin_vec_sqrt]
+ vf __builtin_vec_sqrt (vf);
+ XVSQRTSP
+ vd __builtin_vec_sqrt (vd);
+ XVSQRTDP
+
[VEC_TRUNC, vec_trunc, __builtin_vec_trunc]
vf __builtin_vec_trunc (vf);
XVRSPIZ
^ permalink raw reply [flat|nested] 15+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins3)] rs6000: More progress on the overload table
@ 2020-10-29 19:53 William Schmidt
0 siblings, 0 replies; 15+ messages in thread
From: William Schmidt @ 2020-10-29 19:53 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:b56f35012bcdb05ae12918a820f3b9147358ee5d
commit b56f35012bcdb05ae12918a820f3b9147358ee5d
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Mon Oct 12 09:12:59 2020 -0500
rs6000: More progress on the overload table
2020-10-12 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Move Cell builtins to
their own stanza; add LVXL_V1TI.
* config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add
deprecation comments.
(rs6000_expand_builtin): Add ENB_CELL handling.
* config/rs6000/rs6000-gen-builtins.c (bif_stanza): Add BSTZ_CELL.
(stanza_map): Add "cell" entry mapping to BSTZ_CELL.
(enable_string): Add ENB_CELL.
(write_decls): Write ENB_CELL entry.
* config/rs6000/rs6000-overload.def: Add more entries.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 54 +++---
gcc/config/rs6000/rs6000-call.c | 6 +
gcc/config/rs6000/rs6000-gen-builtins.c | 4 +
gcc/config/rs6000/rs6000-overload.def | 320 ++++++++++++++++++++++++++++++-
4 files changed, 359 insertions(+), 25 deletions(-)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index bb5d9b6f87c..5f6eccc82e7 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -300,18 +300,6 @@
pure vop __builtin_altivec_lvewx (signed long long, const void *);
LVEWX altivec_lvewx {ldvec}
- pure vop __builtin_altivec_lvlx (signed long long, const void *);
- LVLX altivec_lvlx {ldvec}
-
- pure vop __builtin_altivec_lvlxl (signed long long, const void *);
- LVLXL altivec_lvlxl {ldvec}
-
- pure vop __builtin_altivec_lvrx (signed long long, const void *);
- LVRX altivec_lvrx {ldvec}
-
- pure vop __builtin_altivec_lvrxl (signed long long, const void *);
- LVRXL altivec_lvrxl {ldvec}
-
pure vuc __builtin_altivec_lvsl (signed long long, const void *);
LVSL altivec_lvsl {ldvec}
@@ -378,18 +366,6 @@
void __builtin_altivec_stvewx (vsi, signed long long, void *);
STVEWX altivec_stvewx {stvec}
- void __builtin_altivec_stvlx (vop, signed long long, void *);
- STVLX altivec_stvlx {stvec}
-
- void __builtin_altivec_stvlxl (vop, signed long long, void *);
- STVLXL altivec_stvlxl {stvec}
-
- void __builtin_altivec_stvrx (vop, signed long long, void *);
- STVRX altivec_stvrx {stvec}
-
- void __builtin_altivec_stvrxl (vop, signed long long, void *);
- STVRXL altivec_stvrxl {stvec}
-
void __builtin_altivec_stvx (vsi, signed long long, void *);
STVX altivec_stvx_v4si {stvec}
@@ -1093,6 +1069,33 @@
VEC_SET_V8HI nothing {set}
+; Cell builtins.
+[cell]
+ pure vop __builtin_altivec_lvlx (signed long long, const void *);
+ LVLX altivec_lvlx {ldvec}
+
+ pure vop __builtin_altivec_lvlxl (signed long long, const void *);
+ LVLXL altivec_lvlxl {ldvec}
+
+ pure vop __builtin_altivec_lvrx (signed long long, const void *);
+ LVRX altivec_lvrx {ldvec}
+
+ pure vop __builtin_altivec_lvrxl (signed long long, const void *);
+ LVRXL altivec_lvrxl {ldvec}
+
+ void __builtin_altivec_stvlx (vop, signed long long, void *);
+ STVLX altivec_stvlx {stvec}
+
+ void __builtin_altivec_stvlxl (vop, signed long long, void *);
+ STVLXL altivec_stvlxl {stvec}
+
+ void __builtin_altivec_stvrx (vop, signed long long, void *);
+ STVRX altivec_stvrx {stvec}
+
+ void __builtin_altivec_stvrxl (vop, signed long long, void *);
+ STVRXL altivec_stvrxl {stvec}
+
+
; VSX builtins.
[vsx]
pure vsq __builtin_altivec_lvx_v1ti (signed long long, const void *);
@@ -1104,6 +1107,9 @@
pure vsll __builtin_altivec_lvx_v2di (signed long long, const void *);
LVX_V2DI altivec_lvx_v2di {ldvec}
+ pure vuq __builtin_altivec_lvxl_v1ti (signed long long, const void *);
+ LVXL_V1TI altivec_lvxl_v1ti {ldvec}
+
pure vd __builtin_altivec_lvxl_v2df (signed long long, const void *);
LVXL_V2DF altivec_lvxl_v2df {ldvec}
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 293c4661235..d99c90905e4 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -1188,6 +1188,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_long, 0 },
{ ALTIVEC_BUILTIN_VEC_LDE, ALTIVEC_BUILTIN_LVEWX,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_long, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_LVE* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_LVEWX, ALTIVEC_BUILTIN_LVEWX,
RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float, 0 },
{ ALTIVEC_BUILTIN_VEC_LVEWX, ALTIVEC_BUILTIN_LVEWX,
@@ -13530,6 +13532,10 @@ rs6000_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
if (!TARGET_ALTIVEC)
return const0_rtx;
break;
+ case ENB_CELL:
+ if (!TARGET_ALTIVEC || rs6000_cpu != PROCESSOR_CELL)
+ return const0_rtx;
+ break;
case ENB_VSX:
if (!TARGET_VSX)
return const0_rtx;
diff --git a/gcc/config/rs6000/rs6000-gen-builtins.c b/gcc/config/rs6000/rs6000-gen-builtins.c
index e5e63b29667..822a2912a32 100644
--- a/gcc/config/rs6000/rs6000-gen-builtins.c
+++ b/gcc/config/rs6000/rs6000-gen-builtins.c
@@ -183,6 +183,7 @@ enum bif_stanza {
BSTZ_P5,
BSTZ_P6,
BSTZ_ALTIVEC,
+ BSTZ_CELL,
BSTZ_VSX,
BSTZ_P7,
BSTZ_P7_64,
@@ -215,6 +216,7 @@ static stanza_entry stanza_map[NUMBIFSTANZAS] =
{ "power5", BSTZ_P5 },
{ "power6", BSTZ_P6 },
{ "altivec", BSTZ_ALTIVEC },
+ { "cell", BSTZ_CELL },
{ "vsx", BSTZ_VSX },
{ "power7", BSTZ_P7 },
{ "power7-64", BSTZ_P7_64 },
@@ -238,6 +240,7 @@ static const char *enable_string[NUMBIFSTANZAS] =
"ENB_P5",
"ENB_P6",
"ENB_ALTIVEC",
+ "ENB_CELL",
"ENB_VSX",
"ENB_P7",
"ENB_P7_64",
@@ -2067,6 +2070,7 @@ write_decls ()
fprintf (header_file, " ENB_P5,\n");
fprintf (header_file, " ENB_P6,\n");
fprintf (header_file, " ENB_ALTIVEC,\n");
+ fprintf (header_file, " ENB_CELL,\n");
fprintf (header_file, " ENB_VSX,\n");
fprintf (header_file, " ENB_P7,\n");
fprintf (header_file, " ENB_P7_64,\n");
diff --git a/gcc/config/rs6000/rs6000-overload.def b/gcc/config/rs6000/rs6000-overload.def
index 6e21385c0f1..104c23b1ead 100644
--- a/gcc/config/rs6000/rs6000-overload.def
+++ b/gcc/config/rs6000/rs6000-overload.def
@@ -408,13 +408,331 @@
XVRDPIM
[VEC_LD, vec_ld, __builtin_vec_ld]
+ vsc __builtin_vec_ld (signed long long, vsc *);
+ LVX_V16QI LVX_V16QI_VSC
+ vsc __builtin_vec_ld (signed long long, signed char *);
+ LVX_V16QI LVX_V16QI_SC
+ vuc __builtin_vec_ld (signed long long, vuc *);
+ LVX_V16QI LVX_V16QI_VUC
+ vuc __builtin_vec_ld (signed long long, unsigned char *);
+ LVX_V16QI LVX_V16QI_UC
+ vbc __builtin_vec_ld (signed long long, vbc *);
+ LVX_V16QI LVX_V16QI_VBC
+ vss __builtin_vec_ld (signed long long, vss *);
+ LVX_V8HI LVX_V8HI_VSS
+ vss __builtin_vec_ld (signed long long, signed short *);
+ LVX_V8HI LVX_V8HI_SS
+ vus __builtin_vec_ld (signed long long, vus *);
+ LVX_V8HI LVX_V8HI_VUS
+ vus __builtin_vec_ld (signed long long, unsigned short *);
+ LVX_V8HI LVX_V8HI_US
+ vbs __builtin_vec_ld (signed long long, vbs *);
+ LVX_V8HI LVX_V8HI_VBS
+ vp __builtin_vec_ld (signed long long, vp *);
+ LVX_V8HI LVX_V8HI_VP
+ vsi __builtin_vec_ld (signed long long, vsi *);
+ LVX_V4SI LVX_V4SI_VSI
+ vsi __builtin_vec_ld (signed long long, signed int *);
+ LVX_V4SI LVX_V4SI_SI
+ vui __builtin_vec_ld (signed long long, vui *);
+ LVX_V4SI LVX_V4SI_VUI
+ vui __builtin_vec_ld (signed long long, unsigned int *);
+ LVX_V4SI LVX_V4SI_UI
+ vbi __builtin_vec_ld (signed long long, vbi *);
+ LVX_V4SI LVX_V4SI_VBI
+ vsll __builtin_vec_ld (signed long long, vsll *);
+ LVX_V2DI LVX_V2DI_VSLL
+ vsll __builtin_vec_ld (signed long long, signed long long *);
+ LVX_V2DI LVX_V2DI_SLL
+ vull __builtin_vec_ld (signed long long, vull *);
+ LVX_V2DI LVX_V2DI_VULL
+ vull __builtin_vec_ld (signed long long, unsigned long long *);
+ LVX_V2DI LVX_V2DI_ULL
+ vbll __builtin_vec_ld (signed long long, vbll *);
+ LVX_V2DI LVX_V2DI_VBLL
vsq __builtin_vec_ld (signed long long, const vsq *);
- LVX_V1TI
+ LVX_V1TI LVX_V1TI_VSQ
+ vuq __builtin_vec_ld (signed long long, const vuq *);
+ LVX_V1TI LVX_V1TI_VUQ
+ vsq __builtin_vec_ld (signed long long, __int128 *);
+ LVX_V1TI LVX_V1TI_TI
+ vuq __builtin_vec_ld (signed long long, unsigned __int128 *);
+ LVX_V1TI LVX_V1TI_UTI
+ vf __builtin_vec_ld (signed long long, vf *);
+ LVX_V4SF LVX_V4SF_VF
+ vf __builtin_vec_ld (signed long long, float *);
+ LVX_V4SF LVX_V4SF_F
+ vd __builtin_vec_ld (signed long long, vd *);
+ LVX_V2DF LVX_V2DF_VD
+ vd __builtin_vec_ld (signed long long, double *);
+ LVX_V2DF LVX_V2DF_D
+
+[VEC_LDE, vec_lde, __builtin_vec_lde]
+ vsc __builtin_vec_lde (signed long long, signed char *);
+ LVEBX LVEBX_SC
+ vuc __builtin_vec_lde (signed long long, unsigned char *);
+ LVEBX LVEBX_UC
+ vss __builtin_vec_lde (signed long long, signed short *);
+ LVEHX LVEHX_SS
+ vus __builtin_vec_lde (signed long long, unsigned short *);
+ LVEHX LVEHX_US
+ vsi __builtin_vec_lde (signed long long, signed int *);
+ LVEWX LVEWX_SI
+ vui __builtin_vec_lde (signed long long, unsigned int *);
+ LVEWX LVEWX_UI
+ vf __builtin_vec_lde (signed long long, float *);
+ LVEWX LVEWX_F
+
+[VEC_LDL, vec_ldl, __builtin_vec_ldl]
+ vsc __builtin_vec_ldl (signed long long, vsc *);
+ LVXL_V16QI LVXL_V16QI_VSC
+ vsc __builtin_vec_ldl (signed long long, signed char *);
+ LVXL_V16QI LVXL_V16QI_SC
+ vuc __builtin_vec_ldl (signed long long, vuc *);
+ LVXL_V16QI LVXL_V16QI_VUC
+ vuc __builtin_vec_ldl (signed long long, unsigned char *);
+ LVXL_V16QI LVXL_V16QI_UC
+ vbc __builtin_vec_ldl (signed long long, vbc *);
+ LVXL_V16QI LVXL_V16QI_VBC
+ vss __builtin_vec_ldl (signed long long, vss *);
+ LVXL_V8HI LVXL_V8HI_VSS
+ vss __builtin_vec_ldl (signed long long, signed short *);
+ LVXL_V8HI LVXL_V8HI_SS
+ vus __builtin_vec_ldl (signed long long, vus *);
+ LVXL_V8HI LVXL_V8HI_VUS
+ vus __builtin_vec_ldl (signed long long, unsigned short *);
+ LVXL_V8HI LVXL_V8HI_US
+ vbs __builtin_vec_ldl (signed long long, vbs *);
+ LVXL_V8HI LVXL_V8HI_VBS
+ vp __builtin_vec_ldl (signed long long, vp *);
+ LVXL_V8HI LVXL_V8HI_VP
+ vsi __builtin_vec_ldl (signed long long, vsi *);
+ LVXL_V4SI LVXL_V4SI_VSI
+ vsi __builtin_vec_ldl (signed long long, signed int *);
+ LVXL_V4SI LVXL_V4SI_SI
+ vui __builtin_vec_ldl (signed long long, vui *);
+ LVXL_V4SI LVXL_V4SI_VUI
+ vui __builtin_vec_ldl (signed long long, unsigned int *);
+ LVXL_V4SI LVXL_V4SI_UI
+ vbi __builtin_vec_ldl (signed long long, vbi *);
+ LVXL_V4SI LVXL_V4SI_VBI
+ vsll __builtin_vec_ldl (signed long long, vsll *);
+ LVXL_V2DI LVXL_V2DI_VSLL
+ vsll __builtin_vec_ldl (signed long long, signed long long *);
+ LVXL_V2DI LVXL_V2DI_SLL
+ vull __builtin_vec_ldl (signed long long, vull *);
+ LVXL_V2DI LVXL_V2DI_VULL
+ vull __builtin_vec_ldl (signed long long, unsigned long long *);
+ LVXL_V2DI LVXL_V2DI_ULL
+ vbll __builtin_vec_ldl (signed long long, vbll *);
+ LVXL_V2DI LVXL_V2DI_VBLL
+ vsq __builtin_vec_ldl (signed long long, const vsq *);
+ LVXL_V1TI LVXL_V1TI_VSQ
+ vuq __builtin_vec_ldl (signed long long, const vuq *);
+ LVXL_V1TI LVXL_V1TI_VUQ
+ vsq __builtin_vec_ldl (signed long long, __int128 *);
+ LVXL_V1TI LVXL_V1TI_TI
+ vuq __builtin_vec_ldl (signed long long, unsigned __int128 *);
+ LVXL_V1TI LVXL_V1TI_UTI
+ vf __builtin_vec_ldl (signed long long, vf *);
+ LVXL_V4SF LVXL_V4SF_VF
+ vf __builtin_vec_ldl (signed long long, float *);
+ LVXL_V4SF LVXL_V4SF_F
+ vd __builtin_vec_ldl (signed long long, vd *);
+ LVXL_V2DF LVXL_V2DF_VD
+ vd __builtin_vec_ldl (signed long long, double *);
+ LVXL_V2DF LVXL_V2DF_D
[VEC_LOGE, vec_loge, __builtin_vec_loge]
vf __builtin_vec_loge (vf);
VLOGEFP
+[VEC_LVLX, vec_lvlx, __builtin_vec_lvlx]
+ vbc __builtin_vec_lvlx (signed long long, vbc *);
+ LVLX LVLX_VBC
+ vsc __builtin_vec_lvlx (signed long long, vsc *);
+ LVLX LVLX_VSC
+ vsc __builtin_vec_lvlx (signed long long, signed char *);
+ LVLX LVLX_SC
+ vuc __builtin_vec_lvlx (signed long long, vuc *);
+ LVLX LVLX_VUC
+ vuc __builtin_vec_lvlx (signed long long, unsigned char *);
+ LVLX LVLX_UC
+ vbs __builtin_vec_lvlx (signed long long, vbs *);
+ LVLX LVLX_VBS
+ vss __builtin_vec_lvlx (signed long long, vss *);
+ LVLX LVLX_VSS
+ vss __builtin_vec_lvlx (signed long long, signed short *);
+ LVLX LVLX_SS
+ vus __builtin_vec_lvlx (signed long long, vus *);
+ LVLX LVLX_VUS
+ vus __builtin_vec_lvlx (signed long long, unsigned short *);
+ LVLX LVLX_US
+ vp __builtin_vec_lvlx (signed long long, vp *);
+ LVLX LVLX_VP
+ vbi __builtin_vec_lvlx (signed long long, vbi *);
+ LVLX LVLX_VBI
+ vsi __builtin_vec_lvlx (signed long long, vsi *);
+ LVLX LVLX_VSI
+ vsi __builtin_vec_lvlx (signed long long, signed int *);
+ LVLX LVLX_SI
+ vui __builtin_vec_lvlx (signed long long, vui *);
+ LVLX LVLX_VUI
+ vui __builtin_vec_lvlx (signed long long, unsigned int *);
+ LVLX LVLX_UI
+ vf __builtin_vec_lvlx (signed long long, vf *);
+ LVLX LVLX_VF
+ vf __builtin_vec_lvlx (signed long long, float *);
+ LVLX LVLX_F
+
+[VEC_LVLXL, vec_lvlxl, __builtin_vec_lvlxl]
+ vbc __builtin_vec_lvlxl (signed long long, vbc *);
+ LVLXL LVLXL_VBC
+ vsc __builtin_vec_lvlxl (signed long long, vsc *);
+ LVLXL LVLXL_VSC
+ vsc __builtin_vec_lvlxl (signed long long, signed char *);
+ LVLXL LVLXL_SC
+ vuc __builtin_vec_lvlxl (signed long long, vuc *);
+ LVLXL LVLXL_VUC
+ vuc __builtin_vec_lvlxl (signed long long, unsigned char *);
+ LVLXL LVLXL_UC
+ vbs __builtin_vec_lvlxl (signed long long, vbs *);
+ LVLXL LVLXL_VBS
+ vss __builtin_vec_lvlxl (signed long long, vss *);
+ LVLXL LVLXL_VSS
+ vss __builtin_vec_lvlxl (signed long long, signed short *);
+ LVLXL LVLXL_SS
+ vus __builtin_vec_lvlxl (signed long long, vus *);
+ LVLXL LVLXL_VUS
+ vus __builtin_vec_lvlxl (signed long long, unsigned short *);
+ LVLXL LVLXL_US
+ vp __builtin_vec_lvlxl (signed long long, vp *);
+ LVLXL LVLXL_VP
+ vbi __builtin_vec_lvlxl (signed long long, vbi *);
+ LVLXL LVLXL_VBI
+ vsi __builtin_vec_lvlxl (signed long long, vsi *);
+ LVLXL LVLXL_VSI
+ vsi __builtin_vec_lvlxl (signed long long, signed int *);
+ LVLXL LVLXL_SI
+ vui __builtin_vec_lvlxl (signed long long, vui *);
+ LVLXL LVLXL_VUI
+ vui __builtin_vec_lvlxl (signed long long, unsigned int *);
+ LVLXL LVLXL_UI
+ vf __builtin_vec_lvlxl (signed long long, vf *);
+ LVLXL LVLXL_VF
+ vf __builtin_vec_lvlxl (signed long long, float *);
+ LVLXL LVLXL_F
+
+[VEC_LVRX, vec_lvrx, __builtin_vec_lvrx]
+ vbc __builtin_vec_lvrx (signed long long, vbc *);
+ LVRX LVRX_VBC
+ vsc __builtin_vec_lvrx (signed long long, vsc *);
+ LVRX LVRX_VSC
+ vsc __builtin_vec_lvrx (signed long long, signed char *);
+ LVRX LVRX_SC
+ vuc __builtin_vec_lvrx (signed long long, vuc *);
+ LVRX LVRX_VUC
+ vuc __builtin_vec_lvrx (signed long long, unsigned char *);
+ LVRX LVRX_UC
+ vbs __builtin_vec_lvrx (signed long long, vbs *);
+ LVRX LVRX_VBS
+ vss __builtin_vec_lvrx (signed long long, vss *);
+ LVRX LVRX_VSS
+ vss __builtin_vec_lvrx (signed long long, signed short *);
+ LVRX LVRX_SS
+ vus __builtin_vec_lvrx (signed long long, vus *);
+ LVRX LVRX_VUS
+ vus __builtin_vec_lvrx (signed long long, unsigned short *);
+ LVRX LVRX_US
+ vp __builtin_vec_lvrx (signed long long, vp *);
+ LVRX LVRX_VP
+ vbi __builtin_vec_lvrx (signed long long, vbi *);
+ LVRX LVRX_VBI
+ vsi __builtin_vec_lvrx (signed long long, vsi *);
+ LVRX LVRX_VSI
+ vsi __builtin_vec_lvrx (signed long long, signed int *);
+ LVRX LVRX_SI
+ vui __builtin_vec_lvrx (signed long long, vui *);
+ LVRX LVRX_VUI
+ vui __builtin_vec_lvrx (signed long long, unsigned int *);
+ LVRX LVRX_UI
+ vf __builtin_vec_lvrx (signed long long, vf *);
+ LVRX LVRX_VF
+ vf __builtin_vec_lvrx (signed long long, float *);
+ LVRX LVRX_F
+
+[VEC_LVRXL, vec_lvrxl, __builtin_vec_lvrxl]
+ vbc __builtin_vec_lvrxl (signed long long, vbc *);
+ LVRXL LVRXL_VBC
+ vsc __builtin_vec_lvrxl (signed long long, vsc *);
+ LVRXL LVRXL_VSC
+ vsc __builtin_vec_lvrxl (signed long long, signed char *);
+ LVRXL LVRXL_SC
+ vuc __builtin_vec_lvrxl (signed long long, vuc *);
+ LVRXL LVRXL_VUC
+ vuc __builtin_vec_lvrxl (signed long long, unsigned char *);
+ LVRXL LVRXL_UC
+ vbs __builtin_vec_lvrxl (signed long long, vbs *);
+ LVRXL LVRXL_VBS
+ vss __builtin_vec_lvrxl (signed long long, vss *);
+ LVRXL LVRXL_VSS
+ vss __builtin_vec_lvrxl (signed long long, signed short *);
+ LVRXL LVRXL_SS
+ vus __builtin_vec_lvrxl (signed long long, vus *);
+ LVRXL LVRXL_VUS
+ vus __builtin_vec_lvrxl (signed long long, unsigned short *);
+ LVRXL LVRXL_US
+ vp __builtin_vec_lvrxl (signed long long, vp *);
+ LVRXL LVRXL_VP
+ vbi __builtin_vec_lvrxl (signed long long, vbi *);
+ LVRXL LVRXL_VBI
+ vsi __builtin_vec_lvrxl (signed long long, vsi *);
+ LVRXL LVRXL_VSI
+ vsi __builtin_vec_lvrxl (signed long long, signed int *);
+ LVRXL LVRXL_SI
+ vui __builtin_vec_lvrxl (signed long long, vui *);
+ LVRXL LVRXL_VUI
+ vui __builtin_vec_lvrxl (signed long long, unsigned int *);
+ LVRXL LVRXL_UI
+ vf __builtin_vec_lvrxl (signed long long, vf *);
+ LVRXL LVRXL_VF
+ vf __builtin_vec_lvrxl (signed long long, float *);
+ LVRXL LVRXL_F
+
+[VEC_LVSL, vec_lvsl, __builtin_vec_lvsl]
+ vuc __builtin_vec_lvsl (signed long long, unsigned char *);
+ LVSL LVSL_UC
+ vuc __builtin_vec_lvsl (signed long long, signed char *);
+ LVSL LVSL_SC
+
+[VEC_LVSR, vec_lvsr, __builtin_vec_lvsr]
+ vuc __builtin_vec_lvsr (signed long long, unsigned char *);
+ LVSR LVSR_UC
+ vuc __builtin_vec_lvsr (signed long long, signed char *);
+ LVSR LVSR_SC
+
+[VEC_MAX, vec_max, __builtin_vec_max]
+ vsc __builtin_vec_max (vsc, vsc);
+ VMAXSB
+ vuc __builtin_vec_max (vuc, vuc);
+ VMAXUB
+ vss __builtin_vec_max (vss, vss);
+ VMAXSH
+ vus __builtin_vec_max (vus, vus);
+ VMAXUH
+ vsi __builtin_vec_max (vsi, vsi);
+ VMAXSW
+ vui __builtin_vec_max (vui, vui);
+ VMAXUW
+ vsll __builtin_vec_max (vsll, vsll);
+ VMAXSD
+ vull __builtin_vec_max (vull, vull);
+ VMAXUD
+ vf __builtin_vec_max (vf, vf);
+ XVMAXSP
+ vd __builtin_vec_max (vd, vd);
+ XVMAXDP
+
[VEC_MTVSCR, vec_mtvscr, __builtin_vec_mtvscr]
void __builtin_vec_mtvscr (vbc);
MTVSCR MTVSCR_VBC
^ permalink raw reply [flat|nested] 15+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins3)] rs6000: More progress on the overload table
@ 2020-10-27 16:31 William Schmidt
0 siblings, 0 replies; 15+ messages in thread
From: William Schmidt @ 2020-10-27 16:31 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:e687b996807d3de0ca950877fcc6f7d92ddd4cdf
commit e687b996807d3de0ca950877fcc6f7d92ddd4cdf
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Fri Oct 23 16:23:35 2020 -0500
rs6000: More progress on the overload table
2020-10-23 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Small fixes.
* config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add
deprecation comments.
* config/rs6000/rs6000-overload.def: Add more entries.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 10 +-
gcc/config/rs6000/rs6000-call.c | 56 +++-
gcc/config/rs6000/rs6000-overload.def | 455 +++++++++++++++++++++++++++++++
3 files changed, 515 insertions(+), 6 deletions(-)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index 08f6cdffdf8..a9b152053e0 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -2178,7 +2178,7 @@
const vsq __builtin_altivec_vadduqm (vsq, vsq);
VADDUQM altivec_vadduqm {}
- const vsll __builtin_altivec_vbpermq (vsc, vsc);
+ const vull __builtin_altivec_vbpermq (vuq, vuc);
VBPERMQ altivec_vbpermq {}
const vuc __builtin_altivec_vbpermq2 (vuc, vuc);
@@ -2543,7 +2543,7 @@
VCMPAEW_P vector_ae_v4si_p {pred}
const vsc __builtin_altivec_vcmpneb (vsc, vsc);
- CMPNEB vcmpneb {}
+ VCMPNEB vcmpneb {}
const signed int __builtin_altivec_vcmpneb_p (vsc, vsc);
VCMPNEB_P vector_ne_v16qi_p {pred}
@@ -2558,13 +2558,13 @@
VCMPNEFP_P vector_ne_v4sf_p {pred}
const vss __builtin_altivec_vcmpneh (vss, vss);
- CMPNEH vcmpneh {}
+ VCMPNEH vcmpneh {}
const signed int __builtin_altivec_vcmpneh_p (vss, vss);
VCMPNEH_P vector_ne_v8hi_p {pred}
const vsi __builtin_altivec_vcmpnew (vsi, vsi);
- CMPNEW vcmpnew {}
+ VCMPNEW vcmpnew {}
const signed int __builtin_altivec_vcmpnew_p (vsi, vsi);
VCMPNEW_P vector_ne_v4si_p {pred}
@@ -2662,7 +2662,7 @@
const vd __builtin_vsx_insert_exp_dp (vop, vull);
VIEDP xviexpdp {}
- const vf __builtin_vsx_insert_exp_sp (vop, vull);
+ const vf __builtin_vsx_insert_exp_sp (vop, vui);
VIESP xviexpsp {}
const signed int __builtin_vsx_scalar_cmp_exp_dp_eq (double, double);
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 1c16dffacdf..61eb85d9c7c 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -4233,23 +4233,25 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTUW_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI },
- /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTUW_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTUW_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTSW_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTSW_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTSW_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V4SI, RS6000_BTI_V4SI },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, P8V_BUILTIN_VCMPGTUD_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, P8V_BUILTIN_VCMPGTUD_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, P8V_BUILTIN_VCMPGTUD_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, P8V_BUILTIN_VCMPGTSD_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, P8V_BUILTIN_VCMPGTSD_P,
@@ -4417,6 +4419,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V16QI_UNS,
RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI,
RS6000_BTI_unsigned_V16QI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 },
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V8HI,
@@ -4425,6 +4428,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 },
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V8HI_UNS,
RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V8HI_UNS,
RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI,
RS6000_BTI_unsigned_V8HI, 0 },
@@ -4434,6 +4438,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V8HI_UNS,
RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI,
RS6000_BTI_unsigned_V8HI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 },
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V4SI,
@@ -4442,6 +4447,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V4SI_UNS,
RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V4SI_UNS,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI,
RS6000_BTI_unsigned_V4SI, 0 },
@@ -4451,6 +4457,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V4SI_UNS,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI,
RS6000_BTI_unsigned_V4SI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V2DI,
@@ -4459,6 +4466,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V2DI_UNS,
RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V2DI_UNS,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI,
RS6000_BTI_unsigned_V2DI, 0 },
@@ -4473,12 +4481,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V2DF,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V16QI,
RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V16QI,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V16QI,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V16QI_UNS,
RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI,
RS6000_BTI_unsigned_V16QI, 0 },
@@ -4490,12 +4500,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V16QI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V16QI_UNS,
RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V8HI_UNS,
RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI,
RS6000_BTI_unsigned_V8HI, 0 },
@@ -4507,12 +4519,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V8HI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V8HI_UNS,
RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V4SI_UNS,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI,
RS6000_BTI_unsigned_V4SI, 0 },
@@ -4524,12 +4538,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V4SI_UNS,
RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V2DI_UNS,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI,
RS6000_BTI_unsigned_V2DI, 0 },
@@ -4546,12 +4562,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V2DF,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V16QI,
RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V16QI,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V16QI,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V16QI_UNS,
RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI,
RS6000_BTI_unsigned_V16QI, 0 },
@@ -4563,12 +4581,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V16QI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V16QI_UNS,
RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V8HI_UNS,
RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI,
RS6000_BTI_unsigned_V8HI, 0 },
@@ -4580,12 +4600,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V8HI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V8HI_UNS,
RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V4SI_UNS,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI,
RS6000_BTI_unsigned_V4SI, 0 },
@@ -4597,12 +4619,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V4SI_UNS,
RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V2DI_UNS,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI,
RS6000_BTI_unsigned_V2DI, 0 },
@@ -4619,12 +4643,16 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V2DF,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 },
+ /* These are redundant with VEC_ADDC, not included in
+ rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_VADDCUQ, P8V_BUILTIN_VADDCUQ,
RS6000_BTI_V1TI, RS6000_BTI_V1TI, RS6000_BTI_V1TI, 0 },
{ P8V_BUILTIN_VEC_VADDCUQ, P8V_BUILTIN_VADDCUQ,
RS6000_BTI_unsigned_V1TI, RS6000_BTI_unsigned_V1TI,
RS6000_BTI_unsigned_V1TI, 0 },
+ /* These are redundant with VEC_ADD, not included in
+ rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_VADDUDM, P8V_BUILTIN_VADDUDM,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ P8V_BUILTIN_VEC_VADDUDM, P8V_BUILTIN_VADDUDM,
@@ -4683,6 +4711,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_VCLZ, P8V_BUILTIN_VCLZD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0, 0 },
+ /* The VEC_VCLZ<length> variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_VCLZB, P8V_BUILTIN_VCLZB,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0, 0 },
{ P8V_BUILTIN_VEC_VCLZB, P8V_BUILTIN_VCLZB,
@@ -4708,6 +4738,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9_BUILTIN_DFP_TSTSFI_LT, MISC_BUILTIN_TSTSFI_LT_DD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat64, 0 },
+ /* These individual overloads are deprecated, not included in
+ rs6000-builtin-new.def. */
{ P9_BUILTIN_DFP_TSTSFI_LT_TD, MISC_BUILTIN_TSTSFI_LT_TD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat128, 0 },
{ P9_BUILTIN_DFP_TSTSFI_LT_DD, MISC_BUILTIN_TSTSFI_LT_DD,
@@ -4718,6 +4750,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9_BUILTIN_DFP_TSTSFI_EQ, MISC_BUILTIN_TSTSFI_EQ_DD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat64, 0 },
+ /* These individual overloads are deprecated, not included in
+ rs6000-builtin-new.def. */
{ P9_BUILTIN_DFP_TSTSFI_EQ_TD, MISC_BUILTIN_TSTSFI_EQ_TD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat128, 0 },
{ P9_BUILTIN_DFP_TSTSFI_EQ_DD, MISC_BUILTIN_TSTSFI_EQ_DD,
@@ -4728,6 +4762,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9_BUILTIN_DFP_TSTSFI_GT, MISC_BUILTIN_TSTSFI_GT_DD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat64, 0 },
+ /* These individual overloads are deprecated, not included in
+ rs6000-builtin-new.def. */
{ P9_BUILTIN_DFP_TSTSFI_GT_TD, MISC_BUILTIN_TSTSFI_GT_TD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat128, 0 },
{ P9_BUILTIN_DFP_TSTSFI_GT_DD, MISC_BUILTIN_TSTSFI_GT_DD,
@@ -4738,6 +4774,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9_BUILTIN_DFP_TSTSFI_OV, MISC_BUILTIN_TSTSFI_OV_DD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat64, 0 },
+ /* These individual overloads are deprecated, not included in
+ rs6000-builtin-new.def. */
{ P9_BUILTIN_DFP_TSTSFI_OV_TD, MISC_BUILTIN_TSTSFI_OV_TD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat128, 0 },
{ P9_BUILTIN_DFP_TSTSFI_OV_DD, MISC_BUILTIN_TSTSFI_OV_DD,
@@ -4760,6 +4798,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VCTZ, P9V_BUILTIN_VCTZD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0, 0 },
+ /* The VEC_VCTZ<length> variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VCTZB, P9V_BUILTIN_VCTZB,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0, 0 },
{ P9V_BUILTIN_VEC_VCTZB, P9V_BUILTIN_VCTZB,
@@ -4790,6 +4830,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI,
RS6000_BTI_unsigned_V4SI, 0 },
+ /* The VEC_VADU<length> variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VADUB, P9V_BUILTIN_VADUB,
RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI,
RS6000_BTI_unsigned_V16QI, 0 },
@@ -4807,6 +4849,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VES, P9V_BUILTIN_VESDP,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_V2DF, 0, 0 },
+ /* The VEC_VES* variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VESSP, P9V_BUILTIN_VESSP,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SF, 0, 0 },
{ P9V_BUILTIN_VEC_VESDP, P9V_BUILTIN_VESDP,
@@ -4817,6 +4861,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VEE, P9V_BUILTIN_VEEDP,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_V2DF, 0, 0 },
+ /* The VEC_VEE* variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VEESP, P9V_BUILTIN_VEESP,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SF, 0, 0 },
{ P9V_BUILTIN_VEC_VEEDP, P9V_BUILTIN_VEEDP,
@@ -4827,6 +4873,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VTDC, P9V_BUILTIN_VTDCDP,
RS6000_BTI_bool_V2DI, RS6000_BTI_V2DF, RS6000_BTI_INTSI, 0 },
+ /* The VEC_VTDC* variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VTDCSP, P9V_BUILTIN_VTDCSP,
RS6000_BTI_bool_V4SI, RS6000_BTI_V4SF, RS6000_BTI_INTSI, 0 },
{ P9V_BUILTIN_VEC_VTDCDP, P9V_BUILTIN_VTDCDP,
@@ -4842,6 +4890,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VIE, P9V_BUILTIN_VIEDP,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_unsigned_V2DI, 0 },
+ /* The VEC_VIE* variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VIESP, P9V_BUILTIN_VIESP,
RS6000_BTI_V4SF, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ P9V_BUILTIN_VEC_VIESP, P9V_BUILTIN_VIESP,
@@ -4859,6 +4909,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VSTDC, P9V_BUILTIN_VSTDCQP,
RS6000_BTI_bool_int, RS6000_BTI_ieee128_float, RS6000_BTI_INTSI, 0 },
+ /* The VEC_VSTDC* variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VSTDCSP, P9V_BUILTIN_VSTDCSP,
RS6000_BTI_bool_int, RS6000_BTI_float, RS6000_BTI_INTSI, 0 },
{ P9V_BUILTIN_VEC_VSTDCDP, P9V_BUILTIN_VSTDCDP,
@@ -4873,6 +4925,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VSTDCN, P9V_BUILTIN_VSTDCNQP,
RS6000_BTI_bool_int, RS6000_BTI_ieee128_float, 0, 0 },
+ /* The VEC_VSTDCN* variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VSTDCNSP, P9V_BUILTIN_VSTDCNSP,
RS6000_BTI_bool_int, RS6000_BTI_float, 0, 0 },
{ P9V_BUILTIN_VEC_VSTDCNDP, P9V_BUILTIN_VSTDCNDP,
diff --git a/gcc/config/rs6000/rs6000-overload.def b/gcc/config/rs6000/rs6000-overload.def
index ad50d8add27..9cc8f0382b8 100644
--- a/gcc/config/rs6000/rs6000-overload.def
+++ b/gcc/config/rs6000/rs6000-overload.def
@@ -88,6 +88,14 @@
vd __builtin_vec_abs (vd);
XVABSDP
+[VEC_ABSD, vec_absd, __builtin_vec_vadu]
+ vuc __builtin_vec_vadu (vuc, vuc);
+ VADUB
+ vus __builtin_vec_vadu (vus, vus);
+ VADUH
+ vui __builtin_vec_vadu (vui, vui);
+ VADUW
+
[VEC_ABSS, vec_abss, __builtin_vec_abss]
vsc __builtin_vec_abss (vsc);
ABSS_V16QI
@@ -202,6 +210,14 @@
vui __builtin_vec_avg (vui, vui);
VAVGUW
+[VEC_BPERM, vec_bperm, __builtin_vec_vbperm_api]
+ vull __builtin_vec_vbperm_api (vull, vuc);
+ VBPERMD VBPERMD_VULL
+ vull __builtin_vec_vbperm_api (vuq, vuc);
+ VBPERMD VBPERMD_VUQ
+ vuc __builtin_vec_vbperm_api (vuc, vuc);
+ VBPERMQ2
+
[VEC_CEIL, vec_ceil, __builtin_vec_ceil]
vf __builtin_vec_ceil (vf);
XVRSPIP
@@ -242,6 +258,40 @@
vbll __builtin_vec_cmpeq (vd, vd);
XVCMPEQDP
+; We skip generating a #define because of the C-versus-C++ complexity
+; in altivec.h. Look there for the template-y details.
+[VEC_CMPEQ_P, SKIP, __builtin_vec_vcmpeq_p]
+ signed int __builtin_vec_vcmpeq_p (signed int, vuc, vuc);
+ VCMPEQUB_P VCMPEQUB_PU
+ signed int __builtin_vec_vcmpeq_p (signed int, vsc, vsc);
+ VCMPEQUB_P VCMPEQUB_PS
+ signed int __builtin_vec_vcmpeq_p (signed int, vbc, vbc);
+ VCMPEQUB_P VCMPEQUB_PB
+ signed int __builtin_vec_vcmpeq_p (signed int, vus, vus);
+ VCMPEQUH_P VCMPEQUH_PU
+ signed int __builtin_vec_vcmpeq_p (signed int, vss, vss);
+ VCMPEQUH_P VCMPEQUH_PS
+ signed int __builtin_vec_vcmpeq_p (signed int, vbs, vbs);
+ VCMPEQUH_P VCMPEQUH_PB
+ signed int __builtin_vec_vcmpeq_p (signed int, vp, vp);
+ VCMPEQUH_P VCMPEQUH_PP
+ signed int __builtin_vec_vcmpeq_p (signed int, vui, vui);
+ VCMPEQUW_P VCMPEQUW_PU
+ signed int __builtin_vec_vcmpeq_p (signed int, vsi, vsi);
+ VCMPEQUW_P VCMPEQUW_PS
+ signed int __builtin_vec_vcmpeq_p (signed int, vbi, vbi);
+ VCMPEQUW_P VCMPEQUW_PB
+ signed int __builtin_vec_vcmpeq_p (signed int, vull, vull);
+ VCMPEQUD_P VCMPEQUD_PU
+ signed int __builtin_vec_vcmpeq_p (signed int, vsll, vsll);
+ VCMPEQUD_P VCMPEQUD_PS
+ signed int __builtin_vec_vcmpeq_p (signed int, vbll, vbll);
+ VCMPEQUD_P VCMPEQUD_PB
+ signed int __builtin_vec_vcmpeq_p (signed int, vf, vf);
+ XVCMPEQSP_P
+ signed int __builtin_vec_vcmpeq_p (signed int, vd, vd);
+ XVCMPEQDP_P
+
[VEC_CMPGE, vec_cmpge, __builtin_vec_cmpge]
vbc __builtin_vec_cmpge (vsc, vsc);
CMPGE_16QI CMPGE_16QI_VSC
@@ -264,6 +314,33 @@
vbll __builtin_vec_cmpge (vd, vd);
XVCMPGEDP
+; We skip generating a #define because of the C-versus-C++ complexity
+; in altivec.h. Look there for the template-y details.
+; Also, cmpge is the same as cmpgt for all cases except floating point.
+; There is further code to deal with this special case in
+; altivec_build_resolved_builtin. TODO: Make sure this is still true.
+[VEC_CMPGE_P, SKIP, __builtin_vec_vcmpgt_p]
+ signed int __builtin_vec_vcmpgt_p (signed int, vuc, vuc);
+ VCMPGTUB_P VCMPGTUB_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vsc, vsc);
+ VCMPGTSB_P VCMPGTSB_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vus, vus);
+ VCMPGTUH_P VCMPGTUH_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vss, vss);
+ VCMPGTSH_P VCMPGTSH_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vui, vui);
+ VCMPGTUW_P VCMPGTUW_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vsi, vsi);
+ VCMPGTSW_P VCMPGTSW_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vull, vull);
+ VCMPGTUD_P VCMPGTUD_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vsll, vsll);
+ VCMPGTSD_P VCMPGTSD_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vf, vf);
+ XVCMPGESP_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vd, vd);
+ XVCMPGEDP_P
+
[VEC_CMPGT, vec_cmpgt, __builtin_vec_cmpgt]
vbc __builtin_vec_cmpgt (vsc, vsc);
VCMPGTSB
@@ -286,12 +363,126 @@
vbll __builtin_vec_cmpgt (vd, vd);
XVCMPGTDP
+; We skip generating a #define because of the C-versus-C++ complexity
+; in altivec.h. Look there for the template-y details.
+[VEC_CMPGT_P, SKIP, __builtin_vec_vcmpgt_p]
+ signed int __builtin_vec_vcmpgt_p (signed int, vuc, vuc);
+ VCMPGTUB_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vsc, vsc);
+ VCMPGTSB_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vus, vus);
+ VCMPGTUH_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vss, vss);
+ VCMPGTSH_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vui, vui);
+ VCMPGTUW_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vsi, vsi);
+ VCMPGTSW_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vull, vull);
+ VCMPGTUD_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vsll, vsll);
+ VCMPGTSD_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vf, vf);
+ XVCMPGTSP_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vd, vd);
+ XVCMPGTDP_P
+
; Note that there is no entry for VEC_CMPLE. VEC_CMPLE is implemented
; using VEC_CMPGE with reversed arguments in altivec.h.
; Note that there is no entry for VEC_CMPLT. VEC_CMPLT is implemented
; using VEC_CMPGT with reversed arguments in altivec.h.
+[VEC_CMPNE, vec_cmpne, __builtin_vec_cmpne]
+ vbc __builtin_vec_cmpne (vbc, vbc);
+ VCMPNEB VCMPNEB_VBC
+ vbc __builtin_vec_cmpne (vsc, vsc);
+ VCMPNEB VCMPNEB_VSC
+ vbc __builtin_vec_cmpne (vuc, vuc);
+ VCMPNEB VCMPNEB_VUC
+ vbs __builtin_vec_cmpne (vbs, vbs);
+ VCMPNEH VCMPNEH_VBS
+ vbs __builtin_vec_cmpne (vss, vss);
+ VCMPNEH VCMPNEH_VSS
+ vbs __builtin_vec_cmpne (vus, vus);
+ VCMPNEH VCMPNEH_VUS
+ vbi __builtin_vec_cmpne (vbi, vbi);
+ VCMPNEW VCMPNEW_VBI
+ vbi __builtin_vec_cmpne (vsi, vsi);
+ VCMPNEW VCMPNEW_VSI
+ vbi __builtin_vec_cmpne (vui, vui);
+ VCMPNEW VCMPNEW_VUI
+
+; We skip generating a #define because of the C-versus-C++ complexity
+; in altivec.h. Look there for the template-y details.
+[VEC_CMPNE_P, SKIP, __builtin_vec_vcmpne_p]
+ signed int __builtin_vec_vcmpne_p (vsc, vsc);
+ VCMPNEB_P VCMPNEB_VSC_P
+ signed int __builtin_vec_vcmpne_p (vuc, vuc);
+ VCMPNEB_P VCMPNEB_VUC_P
+ signed int __builtin_vec_vcmpne_p (vbc, vbc);
+ VCMPNEB_P VCMPNEB_VBC_P
+ signed int __builtin_vec_vcmpne_p (vss, vss);
+ VCMPNEH_P VCMPNEH_VSS_P
+ signed int __builtin_vec_vcmpne_p (vus, vus);
+ VCMPNEH_P VCMPNEH_VUS_P
+ signed int __builtin_vec_vcmpne_p (vbs, vbs);
+ VCMPNEH_P VCMPNEH_VBS_P
+ signed int __builtin_vec_vcmpne_p (vp, vp);
+ VCMPNEH_P VCMPNEH_VP_P
+ signed int __builtin_vec_vcmpne_p (vsi, vsi);
+ VCMPNEW_P VCMPNEW_VSI_P
+ signed int __builtin_vec_vcmpne_p (vui, vui);
+ VCMPNEW_P VCMPNEW_VUI_P
+ signed int __builtin_vec_vcmpne_p (vbi, vbi);
+ VCMPNEW_P VCMPNEW_VBI_P
+ signed int __builtin_vec_vcmpne_p (vsll, vsll);
+ VCMPNED_P VCMPNED_VSLL_P
+ signed int __builtin_vec_vcmpne_p (vull, vull);
+ VCMPNED_P VCMPNED_VULL_P
+ signed int __builtin_vec_vcmpne_p (vbll, vbll);
+ VCMPNED_P VCMPNED_VBLL_P
+ signed int __builtin_vec_vcmpne_p (vf, vf);
+ VCMPNEFP_P
+ signed int __builtin_vec_vcmpne_p (vd, vd);
+ VCMPNEDP_P
+
+[VEC_CNTLZ, vec_cntlz, __builtin_vec_vclz]
+ vsc __builtin_vec_vclz (vsc);
+ VCLZB VCLZB_S
+ vuc __builtin_vec_vclz (vuc);
+ VCLZB VCLZB_U
+ vss __builtin_vec_vclz (vss);
+ VCLZH VCLZH_S
+ vus __builtin_vec_vclz (vus);
+ VCLZH VCLZH_U
+ vsi __builtin_vec_vclz (vsi);
+ VCLZW VCLZW_S
+ vui __builtin_vec_vclz (vui);
+ VCLZW VCLZW_U
+ vsll __builtin_vec_vclz (vsll);
+ VCLZD VCLZD_S
+ vull __builtin_vec_vclz (vull);
+ VCLZD VCLZD_U
+
+[VEC_CNTTZ, vec_cnttz, __builtin_vec_vctz]
+ vsc __builtin_vec_vctz (vsc);
+ VCTZB VCTZB_S
+ vuc __builtin_vec_vctz (vuc);
+ VCTZB VCTZB_U
+ vss __builtin_vec_vctz (vss);
+ VCTZH VCTZH_S
+ vus __builtin_vec_vctz (vus);
+ VCTZH VCTZH_U
+ vsi __builtin_vec_vctz (vsi);
+ VCTZW VCTZW_S
+ vui __builtin_vec_vctz (vui);
+ VCTZW VCTZW_U
+ vsll __builtin_vec_vctz (vsll);
+ VCTZD VCTZD_S
+ vull __builtin_vec_vctz (vull);
+ VCTZD VCTZD_U
+
[VEC_CONVERT_4F32_8I16, SKIP, __builtin_vec_convert_4f32_8i16]
vus __builtin_vec_convert_4f32_8i16 (vf, vf);
CONVERT_4F32_8I16
@@ -544,6 +735,36 @@
void __builtin_vec_dstt (vf *, const int, const int);
DSTT DSTT_VF
+[VEC_EQV, vec_eqv, __builtin_vec_eqv]
+ vsc __builtin_vec_eqv (vsc, vsc);
+ EQV_V16QI
+ vuc __builtin_vec_eqv (vuc, vuc);
+ EQV_V16QI_UNS EQV_V16QI_VUC
+ vbc __builtin_vec_eqv (vbc, vbc);
+ EQV_V16QI_UNS EQV_V16QI_VBC
+ vss __builtin_vec_eqv (vss, vss);
+ EQV_V8HI
+ vus __builtin_vec_eqv (vus, vus);
+ EQV_V8HI_UNS EQV_V8HI_VUS
+ vbs __builtin_vec_eqv (vbs, vbs);
+ EQV_V8HI_UNS EQV_V8HI_VBS
+ vsi __builtin_vec_eqv (vsi, vsi);
+ EQV_V4SI
+ vui __builtin_vec_eqv (vui, vui);
+ EQV_V4SI_UNS EQV_V4SI_VUI
+ vbi __builtin_vec_eqv (vbi, vbi);
+ EQV_V4SI_UNS EQV_V4SI_VBI
+ vsll __builtin_vec_eqv (vsll, vsll);
+ EQV_V2DI
+ vull __builtin_vec_eqv (vull, vull);
+ EQV_V2DI_UNS EQV_V2DI_VULL
+ vbll __builtin_vec_eqv (vbll, vbll);
+ EQV_V2DI_UNS EQV_V2DI_VBLL
+ vf __builtin_vec_eqv (vf, vf);
+ EQV_V4SF
+ vd __builtin_vec_eqv (vd, vd);
+ EQV_V2DF
+
[VEC_EXPTE, vec_expte, __builtin_vec_expte]
vf __builtin_vec_expte (vf);
VEXPTEFP
@@ -944,6 +1165,32 @@
vuc __builtin_vec_lvsr (signed long long, signed char *);
LVSR LVSR_SC
+[VEC_LXVL, vec_xl_len, __builtin_vec_lxvl]
+ vsc __builtin_vec_lxvl (signed char *, unsigned long long);
+ LXVL LXVL_VSC
+ vuc __builtin_vec_lxvl (unsigned char *, unsigned long long);
+ LXVL LXVL_VUC
+ vss __builtin_vec_lxvl (signed short *, unsigned long long);
+ LXVL LXVL_VSS
+ vus __builtin_vec_lxvl (unsigned short *, unsigned long long);
+ LXVL LXVL_VUS
+ vsi __builtin_vec_lxvl (signed int *, unsigned long long);
+ LXVL LXVL_VSI
+ vui __builtin_vec_lxvl (unsigned int *, unsigned long long);
+ LXVL LXVL_VUI
+ vsll __builtin_vec_lxvl (signed long long *, unsigned long long);
+ LXVL LXVL_VSLL
+ vull __builtin_vec_lxvl (unsigned long long *, unsigned long long);
+ LXVL LXVL_VULL
+ vsq __builtin_vec_lxvl (signed __int128 *, unsigned long long);
+ LXVL LXVL_VSQ
+ vuq __builtin_vec_lxvl (unsigned __int128 *, unsigned long long);
+ LXVL LXVL_VUQ
+ vf __builtin_vec_lxvl (float *, unsigned long long);
+ LXVL LXVL_VF
+ vd __builtin_vec_lxvl (double *, unsigned long long);
+ LXVL LXVL_VD
+
[VEC_MADD, vec_madd, __builtin_vec_madd]
vss __builtin_vec_madd (vss, vss, vss);
VMLADDUHM VMLADDUHM_VSS
@@ -1174,6 +1421,36 @@
vd __builtin_vec_nabs (vd);
NABS_V2DF
+[VEC_NAND, vec_nand, __builtin_vec_nand]
+ vsc __builtin_vec_nand (vsc, vsc);
+ NAND_V16QI
+ vuc __builtin_vec_nand (vuc, vuc);
+ NAND_V16QI_UNS NAND_VUC
+ vbc __builtin_vec_nand (vbc, vbc);
+ NAND_V16QI_UNS NAND_VBC
+ vss __builtin_vec_nand (vss, vss);
+ NAND_V8HI
+ vus __builtin_vec_nand (vus, vus);
+ NAND_V8HI_UNS NAND_VUS
+ vbs __builtin_vec_nand (vbs, vbs);
+ NAND_V8HI_UNS NAND_VBS
+ vsi __builtin_vec_nand (vsi, vsi);
+ NAND_V4SI
+ vui __builtin_vec_nand (vui, vui);
+ NAND_V4SI_UNS NAND_VUI
+ vbi __builtin_vec_nand (vbi, vbi);
+ NAND_V4SI_UNS NAND_VBI
+ vsll __builtin_vec_nand (vsll, vsll);
+ NAND_V2DI
+ vull __builtin_vec_nand (vull, vull);
+ NAND_V2DI_UNS NAND_VULL
+ vbll __builtin_vec_nand (vbll, vbll);
+ NAND_V2DI_UNS NAND_VBLL
+ vf __builtin_vec_nand (vf, vf);
+ NAND_V4SF
+ vd __builtin_vec_nand (vd, vd);
+ NAND_V2DF
+
[VEC_NEARBYINT, vec_nearbyint, __builtin_vec_nearbyint]
vf __builtin_vec_nearbyint (vf);
XVRSPI XVRSPI_NBI
@@ -1266,6 +1543,36 @@
vd __builtin_vec_or (vd, vd);
VOR_V2DF
+[VEC_ORC, vec_orc, __builtin_vec_orc]
+ vsc __builtin_vec_orc (vsc, vsc);
+ ORC_V16QI
+ vuc __builtin_vec_orc (vuc, vuc);
+ ORC_V16QI_UNS ORC_VUC
+ vbc __builtin_vec_orc (vbc, vbc);
+ ORC_V16QI_UNS ORC_VBC
+ vss __builtin_vec_orc (vss, vss);
+ ORC_V8HI
+ vus __builtin_vec_orc (vus, vus);
+ ORC_V8HI_UNS ORC_VUS
+ vbs __builtin_vec_orc (vbs, vbs);
+ ORC_V8HI_UNS ORC_VBS
+ vsi __builtin_vec_orc (vsi, vsi);
+ ORC_V4SI
+ vui __builtin_vec_orc (vui, vui);
+ ORC_V4SI_UNS ORC_VUI
+ vbi __builtin_vec_orc (vbi, vbi);
+ ORC_V4SI_UNS ORC_VBI
+ vsll __builtin_vec_orc (vsll, vsll);
+ ORC_V2DI
+ vull __builtin_vec_orc (vull, vull);
+ ORC_V2DI_UNS ORC_VULL
+ vbll __builtin_vec_orc (vbll, vbll);
+ ORC_V2DI_UNS ORC_VBLL
+ vf __builtin_vec_orc (vf, vf);
+ ORC_V4SF
+ vd __builtin_vec_orc (vd, vd);
+ ORC_V2DF
+
[VEC_PACK, vec_pack, __builtin_vec_pack]
vsc __builtin_vec_pack (vss, vss);
VPKUHUM VPKUHUM_VSS
@@ -2057,6 +2364,32 @@
void __builtin_vec_stvrxl (vf, signed long long, float *);
STVRXL STVRXL_F
+[VEC_STXVL, vec_xst_len, __builtin_vec_stxvl]
+ void __builtin_vec_stxvl (vsc, signed char *, unsigned long long);
+ STXVL STXVL_VSC
+ void __builtin_vec_stxvl (vuc, unsigned char *, unsigned long long);
+ STXVL STXVL_VUC
+ void __builtin_vec_stxvl (vss, signed short *, unsigned long long);
+ STXVL STXVL_VSS
+ void __builtin_vec_stxvl (vus, unsigned short *, unsigned long long);
+ STXVL STXVL_VUS
+ void __builtin_vec_stxvl (vsi, signed int *, unsigned long long);
+ STXVL STXVL_VSI
+ void __builtin_vec_stxvl (vui, unsigned int *, unsigned long long);
+ STXVL STXVL_VUI
+ void __builtin_vec_stxvl (vsll, signed long long *, unsigned long long);
+ STXVL STXVL_VSLL
+ void __builtin_vec_stxvl (vull, unsigned long long *, unsigned long long);
+ STXVL STXVL_VULL
+ void __builtin_vec_stxvl (vsq, signed __int128 *, unsigned long long);
+ STXVL STXVL_VSQ
+ void __builtin_vec_stxvl (vuq, unsigned __int128 *, unsigned long long);
+ STXVL STXVL_VUQ
+ void __builtin_vec_stxvl (vf, float *, unsigned long long);
+ STXVL STXVL_VF
+ void __builtin_vec_stxvl (vd, double *, unsigned long long);
+ STXVL STXVL_VD
+
[VEC_SUB, vec_sub, __builtin_vec_sub]
vsc __builtin_vec_sub (vsc, vsc);
VSUBUBM VSUBUBM_VSC
@@ -2129,6 +2462,30 @@
vd __builtin_vec_trunc (vd);
XVRDPIZ
+[VEC_TSTSFI_GT, SKIP, __builtin_dfp_dtstsfi_gt]
+ signed int __builtin_dfp_dtstsfi_gt (unsigned int, _Decimal64);
+ TSTSFI_GT_DD
+ signed int __builtin_dfp_dtstsfi_gt (unsigned int, _Decimal128);
+ TSTSFI_GT_TD
+
+[VEC_TSTSFI_EQ, SKIP, __builtin_dfp_dtstsfi_eq]
+ signed int __builtin_dfp_dtstsfi_eq (unsigned int, _Decimal64);
+ TSTSFI_EQ_DD
+ signed int __builtin_dfp_dtstsfi_eq (unsigned int, _Decimal128);
+ TSTSFI_EQ_TD
+
+[VEC_TSTSFI_LT, SKIP, __builtin_dfp_dtstsfi_lt]
+ signed int __builtin_dfp_dtstsfi_lt (unsigned int, _Decimal64);
+ TSTSFI_LT_DD
+ signed int __builtin_dfp_dtstsfi_lt (unsigned int, _Decimal128);
+ TSTSFI_LT_TD
+
+[VEC_TSTSFI_OV, SKIP, __builtin_dfp_dtstsfi_ov]
+ signed int __builtin_dfp_dtstsfi_ov (unsigned int, _Decimal64);
+ TSTSFI_OV_DD
+ signed int __builtin_dfp_dtstsfi_ov (unsigned int, _Decimal128);
+ TSTSFI_OV_TD
+
[VEC_UNPACKH, vec_unpackh, __builtin_vec_unpackh]
vss __builtin_vec_unpackh (vsc);
VUPKHSB VUPKHSB_VSC
@@ -2165,6 +2522,96 @@
vd __builtin_vec_unpackl (vf);
DOUBLEL_V4SF VUPKLF
+[VEC_VEE, vec_extract_exp, __builtin_vec_extract_exp]
+ vui __builtin_vec_extract_exp (vf);
+ VEESP
+ vull __builtin_vec_extract_exp (vd);
+ VEEDP
+
+[VEC_VES, vec_extract_sig, __builtin_vec_extract_sig]
+ vui __builtin_vec_extract_sig (vf);
+ VESSP
+ vull __builtin_vec_extract_sig (vd);
+ VESDP
+
+[VEC_VIE, vec_insert_exp, __builtin_vec_insert_exp]
+ vf __builtin_vec_insert_exp (vf, vui);
+ VIESP VIESP_VF
+ vf __builtin_vec_insert_exp (vui, vui);
+ VIESP VIESP_VUI
+ vd __builtin_vec_insert_exp (vd, vull);
+ VIEDP VIEDP_VD
+ vd __builtin_vec_insert_exp (vull, vull);
+ VIEDP VIEDP_VULL
+
+[VEC_VSCEEQ, scalar_cmp_exp_eq, __builtin_vec_scalar_cmp_exp_eq]
+ signed int __builtin_vec_scalar_cmp_exp_eq (double, double);
+ VSCEDPEQ
+ signed int __builtin_vec_scalar_cmp_exp_eq (_Float128, _Float128);
+ VSCEQPEQ
+
+[VEC_VSCEGT, scalar_cmp_exp_gt, __builtin_vec_scalar_cmp_exp_gt]
+ signed int __builtin_vec_scalar_cmp_exp_gt (double, double);
+ VSCEDPGT
+ signed int __builtin_vec_scalar_cmp_exp_gt (_Float128, _Float128);
+ VSCEQPGT
+
+[VEC_VSCELT, scalar_cmp_exp_lt, __builtin_vec_scalar_cmp_exp_lt]
+ signed int __builtin_vec_scalar_cmp_exp_lt (double, double);
+ VSCEDPLT
+ signed int __builtin_vec_scalar_cmp_exp_lt (_Float128, _Float128);
+ VSCEQPLT
+
+[VEC_VSCEUO, scalar_cmp_exp_unordered, __builtin_vec_scalar_cmp_exp_unordered]
+ signed int __builtin_vec_scalar_cmp_exp_unordered (double, double);
+ VSCEDPUO
+ signed int __builtin_vec_scalar_cmp_exp_unordered (_Float128, _Float128);
+ VSCEQPUO
+
+[VEC_VSEE, scalar_extract_exp, __builtin_vec_scalar_extract_exp]
+ unsigned int __builtin_vec_scalar_extract_exp (double);
+ VSEEDP
+ unsigned int __builtin_vec_scalar_extract_exp (_Float128);
+ VSEEQP
+
+[VEC_VSES, scalar_extract_sig, __builtin_vec_scalar_extract_sig]
+ unsigned int __builtin_vec_scalar_extract_sig (double);
+ VSESDP
+ unsigned int __builtin_vec_scalar_extract_sig (_Float128);
+ VSESQP
+
+[VEC_VSIE, scalar_insert_exp, __builtin_vec_scalar_insert_exp]
+ double __builtin_vec_scalar_insert_exp (unsigned int, unsigned int);
+ VSIEDP VSIEDP_UI
+ double __builtin_vec_scalar_insert_exp (double, unsigned int);
+ VSIEDP VSIEDP_D
+ _Float128 __builtin_vec_scalar_insert_exp (unsigned long long, unsigned long long);
+ VSIEQP VSIEQP_ULL
+ _Float128 __builtin_vec_scalar_insert_exp (_Float128, unsigned long long);
+ VSIEQP VSIEQP_F128
+
+[VEC_VSTDC, scalar_test_data_class, __builtin_vec_scalar_test_data_class]
+ bool __builtin_vec_scalar_test_data_class (float, signed int);
+ VSTDCSP
+ bool __builtin_vec_scalar_test_data_class (double, signed int);
+ VSTDCDP
+ bool __builtin_vec_scalar_test_data_class (_Float128, signed int);
+ VSTDCQP
+
+[VEC_VSTDCN, scalar_test_neg, __builtin_vec_scalar_test_neg]
+ bool __builtin_vec_scalar_test_neg (float);
+ VSTDCNSP
+ bool __builtin_vec_scalar_test_neg (double);
+ VSTDCNDP
+ bool __builtin_vec_scalar_test_neg (_Float128);
+ VSTDCNQP
+
+[VEC_VTDC, vec_test_data_class, __builtin_vec_test_data_class]
+ vbi __builtin_vec_test_data_class (vf, signed int);
+ VTDCSP
+ vbll __builtin_vec_test_data_class (vd, signed int);
+ VTDCDP
+
[VEC_XL, vec_xl, __builtin_vec_vsx_ld]
vsc __builtin_vec_vsx_ld (signed long long, vsc *);
LXVW4X_V4SI LXVW4X_VSC
@@ -2259,6 +2706,10 @@
vd __builtin_vec_xl_be (signed long long, double *);
LD_ELEMREV_V2DF LD_ELEMREV_DD
+[VEC_XL_LEN_R, vec_xl_len_r, __builtin_vec_xl_len_r]
+ vuc __builtin_vsx_xl_len_r (unsigned char *, unsigned long long);
+ XL_LEN_R
+
[VEC_XOR, vec_xor, __builtin_vec_xor]
vsc __builtin_vec_xor (vsc, vsc);
VXOR_V16QI
@@ -2417,6 +2868,10 @@
void __builtin_vec_xst_be (vd, signed long long, double *);
STXVD2X_V2DF STXVD2X_D_BE
+[VEC_XST_LEN_R, vec_xst_len_r, __builtin_vec_xst_len_r]
+ void __builtin_vsx_xst_len_r (vuc, unsigned char *, unsigned long long);
+ XST_LEN_R
+
[VEC_XXPERMDI, vec_xxpermdi, __builtin_vsx_xxpermdi]
vsc __builtin_vsx_xxpermdi (vsc, vsc, const int);
XXPERMDI_16QI XXPERMDI_VSC
^ permalink raw reply [flat|nested] 15+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins3)] rs6000: More progress on the overload table
@ 2020-10-27 16:31 William Schmidt
0 siblings, 0 replies; 15+ messages in thread
From: William Schmidt @ 2020-10-27 16:31 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:ec6842c88b01c8bb932bd51bcc478d6f99256321
commit ec6842c88b01c8bb932bd51bcc478d6f99256321
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Wed Oct 21 09:02:59 2020 -0500
rs6000: More progress on the overload table
2020-10-21 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Small fixes.
* config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add
deprecation comments.
* config/rs6000/rs6000-overload.def: Add more entries.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 14 +-
gcc/config/rs6000/rs6000-call.c | 13 +-
gcc/config/rs6000/rs6000-overload.def | 1043 ++++++++++++++++++++++++++++++
3 files changed, 1062 insertions(+), 8 deletions(-)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index d6a93e6b279..08f6cdffdf8 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -361,7 +361,7 @@
STVEBX altivec_stvebx {stvec}
void __builtin_altivec_stvehx (vss, signed long long, void *);
- STVEHX_VSS altivec_stvehx {stvec}
+ STVEHX altivec_stvehx {stvec}
void __builtin_altivec_stvewx (vsi, signed long long, void *);
STVEWX altivec_stvewx {stvec}
@@ -1950,22 +1950,22 @@
const vus __builtin_vsx_xxsel_8hi_uns (vus, vus, vus);
XXSEL_8HI_UNS vector_select_v8hi_uns {}
- const vsc __builtin_vsx_xxsldwi_16qi (vsc, vsc, const int<5>);
+ const vsc __builtin_vsx_xxsldwi_16qi (vsc, vsc, const int<2>);
XXSLDWI_16QI vsx_xxsldwi_v16qi {}
- const vd __builtin_vsx_xxsldwi_2df (vd, vd, const int<5>);
+ const vd __builtin_vsx_xxsldwi_2df (vd, vd, const int<2>);
XXSLDWI_2DF vsx_xxsldwi_v2df {}
- const vsll __builtin_vsx_xxsldwi_2di (vsll, vsll, const int<5>);
+ const vsll __builtin_vsx_xxsldwi_2di (vsll, vsll, const int<2>);
XXSLDWI_2DI vsx_xxsldwi_v2di {}
- const vf __builtin_vsx_xxsldwi_4sf (vf, vf, const int<5>);
+ const vf __builtin_vsx_xxsldwi_4sf (vf, vf, const int<2>);
XXSLDWI_4SF vsx_xxsldwi_v4sf {}
- const vsi __builtin_vsx_xxsldwi_4si (vsi, vsi, const int<5>);
+ const vsi __builtin_vsx_xxsldwi_4si (vsi, vsi, const int<2>);
XXSLDWI_4SI vsx_xxsldwi_v4si {}
- const vss __builtin_vsx_xxsldwi_8hi (vss, vss, const int<5>);
+ const vss __builtin_vsx_xxsldwi_8hi (vss, vss, const int<2>);
XXSLDWI_8HI vsx_xxsldwi_v8hi {}
const vd __builtin_vsx_xxspltd_2df (vd, const int<1>);
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 10464f6df8d..1c16dffacdf 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -2864,6 +2864,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBSWS,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSUB* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSUBSWS, ALTIVEC_BUILTIN_VSUBSWS,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VSUBSWS, ALTIVEC_BUILTIN_VSUBSWS,
@@ -2918,6 +2920,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SI, RS6000_BTI_V16QI, RS6000_BTI_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_SUM4S, ALTIVEC_BUILTIN_VSUM4SHS,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V4SI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSUM4* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSUM4SHS, ALTIVEC_BUILTIN_VSUM4SHS,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VSUM4SBS, ALTIVEC_BUILTIN_VSUM4SBS,
@@ -3322,6 +3326,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ ALTIVEC_BUILTIN_VEC_MSUM, ALTIVEC_BUILTIN_VMSUMUDM,
RS6000_BTI_unsigned_V1TI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V1TI },
+ /* All ALTIVEC_BUILTIN_VEC_VMSUM* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMSUMSHM, ALTIVEC_BUILTIN_VMSUMSHM,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V4SI },
{ ALTIVEC_BUILTIN_VEC_VMSUMUHM, ALTIVEC_BUILTIN_VMSUMUHM,
@@ -3334,6 +3340,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI },
{ ALTIVEC_BUILTIN_VEC_MSUMS, ALTIVEC_BUILTIN_VMSUMSHS,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V4SI },
+ /* All ALTIVEC_BUILTIN_VEC_VMSUM* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMSUMSHS, ALTIVEC_BUILTIN_VMSUMSHS,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V4SI },
{ ALTIVEC_BUILTIN_VEC_VMSUMUHS, ALTIVEC_BUILTIN_VMSUMUHS,
@@ -3373,12 +3381,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_unsigned_V16QI },
{ ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI },
+ /* Next 1 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI },
{ ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI,
RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI },
{ ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI,
RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI },
+ /* Next 1 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI,
RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI },
@@ -3541,7 +3551,6 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI,
RS6000_BTI_void, RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI,
~RS6000_BTI_long_long },
- /* Next 1 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI,
RS6000_BTI_void, RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI,
~RS6000_BTI_unsigned_long_long },
@@ -3623,6 +3632,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI },
{ ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_STVEWX,
RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI },
+ /* All ALTIVEC_BUILTIN_VEC_STVE* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_STVEWX, ALTIVEC_BUILTIN_STVEWX,
RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float },
{ ALTIVEC_BUILTIN_VEC_STVEWX, ALTIVEC_BUILTIN_STVEWX,
diff --git a/gcc/config/rs6000/rs6000-overload.def b/gcc/config/rs6000/rs6000-overload.def
index 33e12121b45..ad50d8add27 100644
--- a/gcc/config/rs6000/rs6000-overload.def
+++ b/gcc/config/rs6000/rs6000-overload.def
@@ -376,6 +376,174 @@
vd __builtin_vec_doubleo (vf);
DOUBLEO_V4SF
+[VEC_DST, vec_dst, __builtin_vec_dst]
+ void __builtin_vec_dst (unsigned char *, const int, const int);
+ DST DST_UC
+ void __builtin_vec_dst (signed char *, const int, const int);
+ DST DST_SC
+ void __builtin_vec_dst (unsigned short *, const int, const int);
+ DST DST_US
+ void __builtin_vec_dst (signed short *, const int, const int);
+ DST DST_SS
+ void __builtin_vec_dst (unsigned int *, const int, const int);
+ DST DST_UI
+ void __builtin_vec_dst (signed int *, const int, const int);
+ DST DST_SI
+ void __builtin_vec_dst (unsigned long long *, const int, const int);
+ DST DST_ULL
+ void __builtin_vec_dst (signed long long *, const int, const int);
+ DST DST_SLL
+ void __builtin_vec_dst (float *, const int, const int);
+ DST DST_F
+ void __builtin_vec_dst (vuc *, const int, const int);
+ DST DST_VUC
+ void __builtin_vec_dst (vsc *, const int, const int);
+ DST DST_VSC
+ void __builtin_vec_dst (vbc *, const int, const int);
+ DST DST_VBC
+ void __builtin_vec_dst (vus *, const int, const int);
+ DST DST_VUS
+ void __builtin_vec_dst (vss *, const int, const int);
+ DST DST_VSS
+ void __builtin_vec_dst (vbs *, const int, const int);
+ DST DST_VBS
+ void __builtin_vec_dst (vp *, const int, const int);
+ DST DST_VP
+ void __builtin_vec_dst (vui *, const int, const int);
+ DST DST_VUI
+ void __builtin_vec_dst (vsi *, const int, const int);
+ DST DST_VSI
+ void __builtin_vec_dst (vbi *, const int, const int);
+ DST DST_VBI
+ void __builtin_vec_dst (vf *, const int, const int);
+ DST DST_VF
+
+[VEC_DSTST, vec_dstst, __builtin_vec_dstst]
+ void __builtin_vec_dstst (unsigned char *, const int, const int);
+ DSTST DSTST_UC
+ void __builtin_vec_dstst (signed char *, const int, const int);
+ DSTST DSTST_SC
+ void __builtin_vec_dstst (unsigned short *, const int, const int);
+ DSTST DSTST_US
+ void __builtin_vec_dstst (signed short *, const int, const int);
+ DSTST DSTST_SS
+ void __builtin_vec_dstst (unsigned int *, const int, const int);
+ DSTST DSTST_UI
+ void __builtin_vec_dstst (signed int *, const int, const int);
+ DSTST DSTST_SI
+ void __builtin_vec_dstst (unsigned long long *, const int, const int);
+ DSTST DSTST_ULL
+ void __builtin_vec_dstst (signed long long *, const int, const int);
+ DSTST DSTST_SLL
+ void __builtin_vec_dstst (float *, const int, const int);
+ DSTST DSTST_F
+ void __builtin_vec_dstst (vuc *, const int, const int);
+ DSTST DSTST_VUC
+ void __builtin_vec_dstst (vsc *, const int, const int);
+ DSTST DSTST_VSC
+ void __builtin_vec_dstst (vbc *, const int, const int);
+ DSTST DSTST_VBC
+ void __builtin_vec_dstst (vus *, const int, const int);
+ DSTST DSTST_VUS
+ void __builtin_vec_dstst (vss *, const int, const int);
+ DSTST DSTST_VSS
+ void __builtin_vec_dstst (vbs *, const int, const int);
+ DSTST DSTST_VBS
+ void __builtin_vec_dstst (vp *, const int, const int);
+ DSTST DSTST_VP
+ void __builtin_vec_dstst (vui *, const int, const int);
+ DSTST DSTST_VUI
+ void __builtin_vec_dstst (vsi *, const int, const int);
+ DSTST DSTST_VSI
+ void __builtin_vec_dstst (vbi *, const int, const int);
+ DSTST DSTST_VBI
+ void __builtin_vec_dstst (vf *, const int, const int);
+ DSTST DSTST_VF
+
+[VEC_DSTSTT, vec_dststt, __builtin_vec_dststt]
+ void __builtin_vec_dststt (unsigned char *, const int, const int);
+ DSTSTT DSTSTT_UC
+ void __builtin_vec_dststt (signed char *, const int, const int);
+ DSTSTT DSTSTT_SC
+ void __builtin_vec_dststt (unsigned short *, const int, const int);
+ DSTSTT DSTSTT_US
+ void __builtin_vec_dststt (signed short *, const int, const int);
+ DSTSTT DSTSTT_SS
+ void __builtin_vec_dststt (unsigned int *, const int, const int);
+ DSTSTT DSTSTT_UI
+ void __builtin_vec_dststt (signed int *, const int, const int);
+ DSTSTT DSTSTT_SI
+ void __builtin_vec_dststt (unsigned long long *, const int, const int);
+ DSTSTT DSTSTT_ULL
+ void __builtin_vec_dststt (signed long long *, const int, const int);
+ DSTSTT DSTSTT_SLL
+ void __builtin_vec_dststt (float *, const int, const int);
+ DSTSTT DSTSTT_F
+ void __builtin_vec_dststt (vuc *, const int, const int);
+ DSTSTT DSTSTT_VUC
+ void __builtin_vec_dststt (vsc *, const int, const int);
+ DSTSTT DSTSTT_VSC
+ void __builtin_vec_dststt (vbc *, const int, const int);
+ DSTSTT DSTSTT_VBC
+ void __builtin_vec_dststt (vus *, const int, const int);
+ DSTSTT DSTSTT_VUS
+ void __builtin_vec_dststt (vss *, const int, const int);
+ DSTSTT DSTSTT_VSS
+ void __builtin_vec_dststt (vbs *, const int, const int);
+ DSTSTT DSTSTT_VBS
+ void __builtin_vec_dststt (vp *, const int, const int);
+ DSTSTT DSTSTT_VP
+ void __builtin_vec_dststt (vui *, const int, const int);
+ DSTSTT DSTSTT_VUI
+ void __builtin_vec_dststt (vsi *, const int, const int);
+ DSTSTT DSTSTT_VSI
+ void __builtin_vec_dststt (vbi *, const int, const int);
+ DSTSTT DSTSTT_VBI
+ void __builtin_vec_dststt (vf *, const int, const int);
+ DSTSTT DSTSTT_VF
+
+[VEC_DSTT, vec_dstt, __builtin_vec_dstt]
+ void __builtin_vec_dstt (unsigned char *, const int, const int);
+ DSTT DSTT_UC
+ void __builtin_vec_dstt (signed char *, const int, const int);
+ DSTT DSTT_SC
+ void __builtin_vec_dstt (unsigned short *, const int, const int);
+ DSTT DSTT_US
+ void __builtin_vec_dstt (signed short *, const int, const int);
+ DSTT DSTT_SS
+ void __builtin_vec_dstt (unsigned int *, const int, const int);
+ DSTT DSTT_UI
+ void __builtin_vec_dstt (signed int *, const int, const int);
+ DSTT DSTT_SI
+ void __builtin_vec_dstt (unsigned long long *, const int, const int);
+ DSTT DSTT_ULL
+ void __builtin_vec_dstt (signed long long *, const int, const int);
+ DSTT DSTT_SLL
+ void __builtin_vec_dstt (float *, const int, const int);
+ DSTT DSTT_F
+ void __builtin_vec_dstt (vuc *, const int, const int);
+ DSTT DSTT_VUC
+ void __builtin_vec_dstt (vsc *, const int, const int);
+ DSTT DSTT_VSC
+ void __builtin_vec_dstt (vbc *, const int, const int);
+ DSTT DSTT_VBC
+ void __builtin_vec_dstt (vus *, const int, const int);
+ DSTT DSTT_VUS
+ void __builtin_vec_dstt (vss *, const int, const int);
+ DSTT DSTT_VSS
+ void __builtin_vec_dstt (vbs *, const int, const int);
+ DSTT DSTT_VBS
+ void __builtin_vec_dstt (vp *, const int, const int);
+ DSTT DSTT_VP
+ void __builtin_vec_dstt (vui *, const int, const int);
+ DSTT DSTT_VUI
+ void __builtin_vec_dstt (vsi *, const int, const int);
+ DSTT DSTT_VSI
+ void __builtin_vec_dstt (vbi *, const int, const int);
+ DSTT DSTT_VBI
+ void __builtin_vec_dstt (vf *, const int, const int);
+ DSTT DSTT_VF
+
[VEC_EXPTE, vec_expte, __builtin_vec_expte]
vf __builtin_vec_expte (vf);
VEXPTEFP
@@ -776,6 +944,24 @@
vuc __builtin_vec_lvsr (signed long long, signed char *);
LVSR LVSR_SC
+[VEC_MADD, vec_madd, __builtin_vec_madd]
+ vss __builtin_vec_madd (vss, vss, vss);
+ VMLADDUHM VMLADDUHM_VSS
+ vss __builtin_vec_madd (vss, vus, vus);
+ VMLADDUHM VMLADDUHM_VSSVUS
+ vss __builtin_vec_madd (vus, vss, vss);
+ VMLADDUHM VMLADDUHM_VUSVSS
+ vus __builtin_vec_madd (vss, vus, vus);
+ VMLADDUHM VMLADDUHM_VUS
+ vf __builtin_vec_madd (vf, vf, vf);
+ XVMADDSP
+ vd __builtin_vec_madd (vd, vd, vd);
+ XVMADDDP
+
+[VEC_MADDS, vec_madds, __builtin_vec_madds]
+ vss __builtin_vec_madds (vss, vss, vss);
+ VMHADDSHS
+
[VEC_MAX, vec_max, __builtin_vec_max]
vsc __builtin_vec_max (vsc, vsc);
VMAXSB
@@ -884,6 +1070,46 @@
vd __builtin_vec_min (vd, vd);
XVMINDP
+[VEC_MLADD, vec_mladd, __builtin_vec_mladd]
+ vss __builtin_vec_mladd (vss, vss, vss);
+ VMLADDUHM VMLADDUHM_VSS2
+ vss __builtin_vec_mladd (vss, vus, vus);
+ VMLADDUHM VMLADDUHM_VSSVUS2
+ vss __builtin_vec_mladd (vus, vss, vss);
+ VMLADDUHM VMLADDUHM_VUSVSS2
+ vus __builtin_vec_mladd (vus, vus, vus);
+ VMLADDUHM VMLADDUHM_VUS2
+
+[VEC_MRADDS, vec_mradds, __builtin_vec_mradds]
+ vss __builtin_vec_mradds (vss, vss, vss);
+ VMHRADDSHS
+
+[VEC_MSUB, vec_msub, __builtin_vec_msub]
+ vf __builtin_vec_msub (vf, vf, vf);
+ XVMSUBSP
+ vd __builtin_vec_msub (vd, vd, vd);
+ XVMSUBDP
+
+[VEC_MSUM, vec_msum, __builtin_vec_msum]
+ vui __builtin_vec_msum (vuc, vuc, vui);
+ VMSUMUBM
+ vsi __builtin_vec_msum (vsc, vuc, vsi);
+ VMSUMMBM
+ vui __builtin_vec_msum (vus, vus, vui);
+ VMSUMUHM
+ vsi __builtin_vec_msum (vss, vss, vsi);
+ VMSUMSHM
+ vsq __builtin_vec_msum (vsll, vsll, vsq);
+ VMSUMUDM VMSUMUDM_S
+ vuq __builtin_vec_msum (vull, vull, vuq);
+ VMSUMUDM VMSUMUDM_U
+
+[VEC_MSUMS, vec_msums, __builtin_vec_msums]
+ vui __builtin_vec_msums (vus, vus, vui);
+ VMSUMUHS
+ vsi __builtin_vec_msums (vss, vss, vsi);
+ VMSUMSHS
+
[VEC_MTVSCR, vec_mtvscr, __builtin_vec_mtvscr]
void __builtin_vec_mtvscr (vbc);
MTVSCR MTVSCR_VBC
@@ -968,6 +1194,18 @@
vd __builtin_vec_neg (vd);
NEG_V2DF
+[VEC_NMADD, vec_nmadd, __builtin_vec_nmadd]
+ vf __builtin_vec_nmadd (vf, vf, vf);
+ XVNMADDSP
+ vd __builtin_vec_nmadd (vd, vd, vd);
+ XVNMADDDP
+
+[VEC_NMSUB, vec_nmsub, __builtin_vec_nmsub]
+ vf __builtin_vec_nmsub (vf, vf, vf);
+ XVNMSUBSP
+ vd __builtin_vec_nmsub (vd, vd, vd);
+ XVNMSUBDP
+
[VEC_NOR, vec_nor, __builtin_vec_nor]
vsc __builtin_vec_nor (vsc, vsc);
VNOR_V16QI
@@ -1068,6 +1306,47 @@
vsi __builtin_vec_packs (vsll, vsll);
VPKSDSS
+[VEC_PERM, vec_perm, __builtin_vec_perm]
+ vsc __builtin_vec_perm (vsc, vsc, vuc);
+ VPERM_16QI
+ vuc __builtin_vec_perm (vuc, vuc, vuc);
+ VPERM_16QI_UNS VPERM_16QI_VUC
+ vbc __builtin_vec_perm (vbc, vbc, vuc);
+ VPERM_16QI_UNS VPERM_16QI_VBC
+ vss __builtin_vec_perm (vss, vss, vuc);
+ VPERM_8HI
+ vus __builtin_vec_perm (vus, vus, vuc);
+ VPERM_8HI_UNS VPERM_8HI_VUS
+ vbs __builtin_vec_perm (vbs, vbs, vuc);
+ VPERM_8HI_UNS VPERM_8HI_VBS
+ vp __builtin_vec_perm (vp, vp, vuc);
+ VPERM_8HI_UNS VPERM_8HI_VP
+ vsi __builtin_vec_perm (vsi, vsi, vuc);
+ VPERM_4SI
+ vui __builtin_vec_perm (vui, vui, vuc);
+ VPERM_4SI_UNS VPERM_4SI_VUI
+ vbi __builtin_vec_perm (vbi, vbi, vuc);
+ VPERM_4SI_UNS VPERM_4SI_VBI
+ vsll __builtin_vec_perm (vsll, vsll, vuc);
+ VPERM_2DI
+ vull __builtin_vec_perm (vull, vull, vuc);
+ VPERM_2DI_UNS VPERM_2DI_VULL
+ vbll __builtin_vec_perm (vbll, vbll, vuc);
+ VPERM_2DI_UNS VPERM_2DI_VBLL
+ vf __builtin_vec_perm (vf, vf, vuc);
+ VPERM_4SF
+ vd __builtin_vec_perm (vd, vd, vuc);
+ VPERM_2DF
+
+; TODO: There will be a separate CRYPTO_PERMXOR set with a SKIP directive
+[VEC_PERMXOR, vec_permxor, __builtin_vec_vpermxor]
+ vsc __builtin_vec_vpermxor (vsc, vsc, vsc);
+ VPERMXOR VPERMXOR_VSC
+ vuc __builtin_vec_vpermxor (vuc, vuc, vuc);
+ VPERMXOR VPERMXOR_VUC
+ vbc __builtin_vec_vpermxor (vbc, vbc, vbc);
+ VPERMXOR VPERMXOR_VBC
+
[VEC_RE, vec_re, __builtin_vec_re]
vf __builtin_vec_re (vf);
XVRESP
@@ -1134,6 +1413,64 @@
vd __builtin_vec_rsqrte (vd);
XVRSQRTEDP
+[VEC_SEL, vec_sel, __builtin_vec_sel]
+ vsc __builtin_vec_sel (vsc, vsc, vbc);
+ VSEL_16QI VSEL_16QI_B
+ vsc __builtin_vec_sel (vsc, vsc, vuc);
+ VSEL_16QI VSEL_16QI_U
+ vuc __builtin_vec_sel (vuc, vuc, vbc);
+ VSEL_16QI_UNS VSEL_16QI_UB
+ vuc __builtin_vec_sel (vuc, vuc, vuc);
+ VSEL_16QI_UNS VSEL_16QI_UU
+ vbc __builtin_vec_sel (vbc, vbc, vbc);
+ VSEL_16QI_UNS VSEL_16QI_BB
+ vbc __builtin_vec_sel (vbc, vbc, vuc);
+ VSEL_16QI_UNS VSEL_16QI_BU
+ vss __builtin_vec_sel (vss, vss, vbs);
+ VSEL_8HI VSEL_8HI_B
+ vss __builtin_vec_sel (vss, vss, vus);
+ VSEL_8HI VSEL_8HI_U
+ vus __builtin_vec_sel (vus, vus, vbs);
+ VSEL_8HI_UNS VSEL_8HI_UB
+ vus __builtin_vec_sel (vus, vus, vus);
+ VSEL_8HI_UNS VSEL_8HI_UU
+ vbs __builtin_vec_sel (vbs, vbs, vbs);
+ VSEL_8HI_UNS VSEL_8HI_BB
+ vbs __builtin_vec_sel (vbs, vbs, vus);
+ VSEL_8HI_UNS VSEL_8HI_BU
+ vsi __builtin_vec_sel (vsi, vsi, vbi);
+ VSEL_4SI VSEL_4SI_B
+ vsi __builtin_vec_sel (vsi, vsi, vui);
+ VSEL_4SI VSEL_4SI_U
+ vui __builtin_vec_sel (vui, vui, vbi);
+ VSEL_4SI_UNS VSEL_4SI_UB
+ vui __builtin_vec_sel (vui, vui, vui);
+ VSEL_4SI_UNS VSEL_4SI_UU
+ vbi __builtin_vec_sel (vbi, vbi, vbi);
+ VSEL_4SI_UNS VSEL_4SI_BB
+ vbi __builtin_vec_sel (vbi, vbi, vui);
+ VSEL_4SI_UNS VSEL_4SI_BU
+ vsll __builtin_vec_sel (vsll, vsll, vbll);
+ VSEL_2DI_B VSEL_2DI_B
+ vsll __builtin_vec_sel (vsll, vsll, vull);
+ VSEL_2DI_B VSEL_2DI_U
+ vull __builtin_vec_sel (vull, vull, vbll);
+ VSEL_2DI_UNS VSEL_2DI_UB
+ vull __builtin_vec_sel (vull, vull, vull);
+ VSEL_2DI_UNS VSEL_2DI_UU
+ vbll __builtin_vec_sel (vbll, vbll, vbll);
+ VSEL_2DI_UNS VSEL_2DI_BB
+ vbll __builtin_vec_sel (vbll, vbll, vull);
+ VSEL_2DI_UNS VSEL_2DI_BU
+ vf __builtin_vec_sel (vf, vf, vbll);
+ VSEL_4SF VSEL_4SF_B
+ vf __builtin_vec_sel (vf, vf, vull);
+ VSEL_4SF VSEL_4SF_U
+ vd __builtin_vec_sel (vd, vd, vbll);
+ VSEL_2DF VSEL_2DF_B
+ vd __builtin_vec_sel (vd, vd, vull);
+ VSEL_2DF VSEL_2DF_U
+
[VEC_SL, vec_sl, __builtin_vec_sl]
vsc __builtin_vec_sl (vsc, vuc);
VSLB VSLB_VSC
@@ -1152,6 +1489,56 @@
vull __builtin_vec_sl (vull, vull);
VSLD VSLD_VULL
+[VEC_SLD, vec_sld, __builtin_vec_sld]
+ vsc __builtin_vec_sld (vsc, vsc, const int);
+ VSLDOI_16QI VSLDOI_VSC
+ vbc __builtin_vec_sld (vbc, vbc, const int);
+ VSLDOI_16QI VSLDOI_VBC
+ vuc __builtin_vec_sld (vuc, vuc, const int);
+ VSLDOI_16QI VSLDOI_VUC
+ vss __builtin_vec_sld (vss, vss, const int);
+ VSLDOI_8HI VSLDOI_VSS
+ vbs __builtin_vec_sld (vbs, vbs, const int);
+ VSLDOI_8HI VSLDOI_VBS
+ vus __builtin_vec_sld (vus, vus, const int);
+ VSLDOI_8HI VSLDOI_VUS
+ vp __builtin_vec_sld (vp, vp, const int);
+ VSLDOI_8HI VSLDOI_VP
+ vsi __builtin_vec_sld (vsi, vsi, const int);
+ VSLDOI_4SI VSLDOI_VSI
+ vbi __builtin_vec_sld (vbi, vbi, const int);
+ VSLDOI_4SI VSLDOI_VBI
+ vui __builtin_vec_sld (vui, vui, const int);
+ VSLDOI_4SI VSLDOI_VUI
+ vsll __builtin_vec_sld (vsll, vsll, const int);
+ VSLDOI_2DI VSLDOI_VSLL
+ vbll __builtin_vec_sld (vbll, vbll, const int);
+ VSLDOI_2DI VSLDOI_VBLL
+ vull __builtin_vec_sld (vull, vull, const int);
+ VSLDOI_2DI VSLDOI_VULL
+ vf __builtin_vec_sld (vf, vf, const int);
+ VSLDOI_4SF
+ vd __builtin_vec_sld (vd, vd, const int);
+ VSLDOI_2DF
+
+[VEC_SLDW, vec_sldw, __builtin_vec_sldw]
+ vsc __builtin_vec_sldw (vsc, vsc, const int);
+ XXSLDWI_16QI XXSLDWI_VSC
+ vuc __builtin_vec_sldw (vuc, vuc, const int);
+ XXSLDWI_16QI XXSLDWI_VUC
+ vss __builtin_vec_sldw (vss, vss, const int);
+ XXSLDWI_16QI XXSLDWI_VSS
+ vus __builtin_vec_sldw (vus, vus, const int);
+ XXSLDWI_16QI XXSLDWI_VUS
+ vsi __builtin_vec_sldw (vsi, vsi, const int);
+ XXSLDWI_16QI XXSLDWI_VSI
+ vui __builtin_vec_sldw (vui, vui, const int);
+ XXSLDWI_16QI XXSLDWI_VUI
+ vsll __builtin_vec_sldw (vsll, vsll, const int);
+ XXSLDWI_16QI XXSLDWI_VSLL
+ vull __builtin_vec_sldw (vull, vull, const int);
+ XXSLDWI_16QI XXSLDWI_VULL
+
[VEC_SLL, vec_sll, __builtin_vec_sll]
vsc __builtin_vec_sll (vsc, vuc);
VSL VSL_VSC
@@ -1350,6 +1737,326 @@
vf __builtin_vec_sro (vf, vuc);
VSRO VSRO_VFU
+[VEC_ST, vec_st, __builtin_vec_st]
+ void __builtin_vec_st (vsc, signed long long, vsc *);
+ STVX_V16QI STVX_VSC
+ void __builtin_vec_st (vsc, signed long long, signed char *);
+ STVX_V16QI STVX_SC
+ void __builtin_vec_st (vuc, signed long long, vuc *);
+ STVX_V16QI STVX_VUC
+ void __builtin_vec_st (vuc, signed long long, unsigned char *);
+ STVX_V16QI STVX_UC
+ void __builtin_vec_st (vbc, signed long long, vbc *);
+ STVX_V16QI STVX_VBC
+ void __builtin_vec_st (vbc, signed long long, signed char *);
+ STVX_V16QI STVX_SC_B
+ void __builtin_vec_st (vbc, signed long long, unsigned char *);
+ STVX_V16QI STVX_UC_B
+ void __builtin_vec_st (vss, signed long long, vss *);
+ STVX_V8HI STVX_VSS
+ void __builtin_vec_st (vss, signed long long, signed short *);
+ STVX_V8HI STVX_SS
+ void __builtin_vec_st (vus, signed long long, vus *);
+ STVX_V8HI STVX_VUS
+ void __builtin_vec_st (vus, signed long long, unsigned short *);
+ STVX_V8HI STVX_US
+ void __builtin_vec_st (vbs, signed long long, vbs *);
+ STVX_V8HI STVX_VBS
+ void __builtin_vec_st (vbs, signed long long, signed short *);
+ STVX_V8HI STVX_SS_B
+ void __builtin_vec_st (vbs, signed long long, unsigned short *);
+ STVX_V8HI STVX_US_B
+ void __builtin_vec_st (vp, signed long long, vp *);
+ STVX_V8HI STVX_P
+ void __builtin_vec_st (vsi, signed long long, vsi *);
+ STVX_V4SI STVX_VSI
+ void __builtin_vec_st (vsi, signed long long, signed int *);
+ STVX_V4SI STVX_SI
+ void __builtin_vec_st (vui, signed long long, vui *);
+ STVX_V4SI STVX_VUI
+ void __builtin_vec_st (vui, signed long long, unsigned int *);
+ STVX_V4SI STVX_UI
+ void __builtin_vec_st (vbi, signed long long, vbi *);
+ STVX_V4SI STVX_VBI
+ void __builtin_vec_st (vbi, signed long long, signed int *);
+ STVX_V4SI STVX_SI_B
+ void __builtin_vec_st (vbi, signed long long, unsigned int *);
+ STVX_V4SI STVX_UI_B
+ void __builtin_vec_st (vsll, signed long long, vsll *);
+ STVX_V2DI STVX_VSLL
+ void __builtin_vec_st (vsll, signed long long, signed long long *);
+ STVX_V2DI STVX_SLL
+ void __builtin_vec_st (vull, signed long long, vull *);
+ STVX_V2DI STVX_VULL
+ void __builtin_vec_st (vull, signed long long, unsigned long long *);
+ STVX_V2DI STVX_ULL
+ void __builtin_vec_st (vbll, signed long long, vbll *);
+ STVX_V2DI STVX_VBLL
+ void __builtin_vec_st (vbll, signed long long, signed long long *);
+ STVX_V2DI STVX_SLL_B
+ void __builtin_vec_st (vbll, signed long long, unsigned long long *);
+ STVX_V2DI STVX_ULL_B
+ void __builtin_vec_st (vf, signed long long, vf *);
+ STVX_V4SF STVX_VF
+ void __builtin_vec_st (vf, signed long long, float *);
+ STVX_V4SF STVX_F
+ void __builtin_vec_st (vd, signed long long, vd *);
+ STVX_V2DF STVX_VD
+ void __builtin_vec_st (vd, signed long long, double *);
+ STVX_V2DF STVX_D
+
+[VEC_STE, vec_ste, __builtin_vec_ste]
+ void __builtin_vec_ste (vsc, signed long long, signed char *);
+ STVEBX STVEBX_S
+ void __builtin_vec_ste (vuc, signed long long, unsigned char *);
+ STVEBX STVEBX_U
+ void __builtin_vec_ste (vbc, signed long long, signed char *);
+ STVEBX STVEBX_BS
+ void __builtin_vec_ste (vbc, signed long long, unsigned char *);
+ STVEBX STVEBX_BU
+ void __builtin_vec_ste (vss, signed long long, signed short *);
+ STVEHX STVEHX_S
+ void __builtin_vec_ste (vus, signed long long, unsigned short *);
+ STVEHX STVEHX_U
+ void __builtin_vec_ste (vbs, signed long long, signed short *);
+ STVEHX STVEHX_BS
+ void __builtin_vec_ste (vbs, signed long long, unsigned short *);
+ STVEHX STVEHX_BU
+ void __builtin_vec_ste (vp, signed long long, signed short *);
+ STVEHX STVEHX_PS
+ void __builtin_vec_ste (vp, signed long long, unsigned short *);
+ STVEHX STVEHX_PU
+ void __builtin_vec_ste (vsi, signed long long, signed int *);
+ STVEWX STVEHWX_S
+ void __builtin_vec_ste (vui, signed long long, unsigned int *);
+ STVEWX STVEWX_U
+ void __builtin_vec_ste (vbi, signed long long, signed int *);
+ STVEWX STVEWX_BS
+ void __builtin_vec_ste (vbi, signed long long, unsigned int *);
+ STVEWX STVEWX_BU
+ void __builtin_vec_ste (vf, signed long long, float *);
+ STVEWX STVEWX_F
+
+[VEC_STL, vec_stl, __builtin_vec_stl]
+ void __builtin_vec_stl (vsc, signed long long, vsc *);
+ STVXL_V16QI STVXL_VSC
+ void __builtin_vec_stl (vsc, signed long long, signed char *);
+ STVXL_V16QI STVXL_SC
+ void __builtin_vec_stl (vuc, signed long long, vuc *);
+ STVXL_V16QI STVXL_VUC
+ void __builtin_vec_stl (vuc, signed long long, unsigned char *);
+ STVXL_V16QI STVXL_UC
+ void __builtin_vec_stl (vbc, signed long long, vbc *);
+ STVXL_V16QI STVXL_VBC
+ void __builtin_vec_stl (vbc, signed long long, signed char *);
+ STVXL_V16QI STVXL_SC_B
+ void __builtin_vec_stl (vbc, signed long long, unsigned char *);
+ STVXL_V16QI STVXL_UC_B
+ void __builtin_vec_stl (vss, signed long long, vss *);
+ STVXL_V8HI STVXL_VSS
+ void __builtin_vec_stl (vss, signed long long, signed short *);
+ STVXL_V8HI STVXL_SS
+ void __builtin_vec_stl (vus, signed long long, vus *);
+ STVXL_V8HI STVXL_VUS
+ void __builtin_vec_stl (vus, signed long long, unsigned short *);
+ STVXL_V8HI STVXL_US
+ void __builtin_vec_stl (vbs, signed long long, vbs *);
+ STVXL_V8HI STVXL_VBS
+ void __builtin_vec_stl (vbs, signed long long, signed short *);
+ STVXL_V8HI STVXL_SS_B
+ void __builtin_vec_stl (vbs, signed long long, unsigned short *);
+ STVXL_V8HI STVXL_US_B
+ void __builtin_vec_stl (vp, signed long long, vp *);
+ STVXL_V8HI STVXL_P
+ void __builtin_vec_stl (vsi, signed long long, vsi *);
+ STVXL_V4SI STVXL_VSI
+ void __builtin_vec_stl (vsi, signed long long, signed int *);
+ STVXL_V4SI STVXL_SI
+ void __builtin_vec_stl (vui, signed long long, vui *);
+ STVXL_V4SI STVXL_VUI
+ void __builtin_vec_stl (vui, signed long long, unsigned int *);
+ STVXL_V4SI STVXL_UI
+ void __builtin_vec_stl (vbi, signed long long, vbi *);
+ STVXL_V4SI STVXL_VBI
+ void __builtin_vec_stl (vbi, signed long long, signed int *);
+ STVXL_V4SI STVXL_SI_B
+ void __builtin_vec_stl (vbi, signed long long, unsigned int *);
+ STVXL_V4SI STVXL_UI_B
+ void __builtin_vec_stl (vsll, signed long long, vsll *);
+ STVXL_V2DI STVXL_VSLL
+ void __builtin_vec_stl (vsll, signed long long, signed long long *);
+ STVXL_V2DI STVXL_SLL
+ void __builtin_vec_stl (vull, signed long long, vull *);
+ STVXL_V2DI STVXL_VULL
+ void __builtin_vec_stl (vull, signed long long, unsigned long long *);
+ STVXL_V2DI STVXL_ULL
+ void __builtin_vec_stl (vbll, signed long long, vbll *);
+ STVXL_V2DI STVXL_VBLL
+ void __builtin_vec_stl (vbll, signed long long, signed long long *);
+ STVXL_V2DI STVXL_SLL_B
+ void __builtin_vec_stl (vbll, signed long long, unsigned long long *);
+ STVXL_V2DI STVXL_ULL_B
+ void __builtin_vec_stl (vf, signed long long, vf *);
+ STVXL_V4SF STVXL_VF
+ void __builtin_vec_stl (vf, signed long long, float *);
+ STVXL_V4SF STVXL_F
+ void __builtin_vec_stl (vd, signed long long, vd *);
+ STVXL_V2DF STVXL_VD
+ void __builtin_vec_stl (vd, signed long long, double *);
+ STVXL_V2DF STVXL_D
+
+[VEC_STVLX, vec_stvlx, __builtin_vec_stvlx]
+ void __builtin_vec_stvlx (vbc, signed long long, vbc *);
+ STVLX STVLX_VBC
+ void __builtin_vec_stvlx (vsc, signed long long, vsc *);
+ STVLX STVLX_VSC
+ void __builtin_vec_stvlx (vsc, signed long long, signed char *);
+ STVLX STVLX_SC
+ void __builtin_vec_stvlx (vuc, signed long long, vuc *);
+ STVLX STVLX_VUC
+ void __builtin_vec_stvlx (vuc, signed long long, unsigned char *);
+ STVLX STVLX_UC
+ void __builtin_vec_stvlx (vbs, signed long long, vbs *);
+ STVLX STVLX_VBS
+ void __builtin_vec_stvlx (vss, signed long long, vss *);
+ STVLX STVLX_VSS
+ void __builtin_vec_stvlx (vss, signed long long, signed short *);
+ STVLX STVLX_SS
+ void __builtin_vec_stvlx (vus, signed long long, vus *);
+ STVLX STVLX_VUS
+ void __builtin_vec_stvlx (vus, signed long long, unsigned short *);
+ STVLX STVLX_US
+ void __builtin_vec_stvlx (vp, signed long long, vp *);
+ STVLX STVLX_VP
+ void __builtin_vec_stvlx (vbi, signed long long, vbi *);
+ STVLX STVLX_VBI
+ void __builtin_vec_stvlx (vsi, signed long long, vsi *);
+ STVLX STVLX_VSI
+ void __builtin_vec_stvlx (vsi, signed long long, signed int *);
+ STVLX STVLX_SI
+ void __builtin_vec_stvlx (vui, signed long long, vui *);
+ STVLX STVLX_VUI
+ void __builtin_vec_stvlx (vui, signed long long, unsigned int *);
+ STVLX STVLX_UI
+ void __builtin_vec_stvlx (vf, signed long long, vf *);
+ STVLX STVLX_VF
+ void __builtin_vec_stvlx (vf, signed long long, float *);
+ STVLX STVLX_F
+
+[VEC_STVLXL, vec_stvlxl, __builtin_vec_stvlxl]
+ void __builtin_vec_stvlxl (vbc, signed long long, vbc *);
+ STVLXL STVLXL_VBC
+ void __builtin_vec_stvlxl (vsc, signed long long, vsc *);
+ STVLXL STVLXL_VSC
+ void __builtin_vec_stvlxl (vsc, signed long long, signed char *);
+ STVLXL STVLXL_SC
+ void __builtin_vec_stvlxl (vuc, signed long long, vuc *);
+ STVLXL STVLXL_VUC
+ void __builtin_vec_stvlxl (vuc, signed long long, unsigned char *);
+ STVLXL STVLXL_UC
+ void __builtin_vec_stvlxl (vbs, signed long long, vbs *);
+ STVLXL STVLXL_VBS
+ void __builtin_vec_stvlxl (vss, signed long long, vss *);
+ STVLXL STVLXL_VSS
+ void __builtin_vec_stvlxl (vss, signed long long, signed short *);
+ STVLXL STVLXL_SS
+ void __builtin_vec_stvlxl (vus, signed long long, vus *);
+ STVLXL STVLXL_VUS
+ void __builtin_vec_stvlxl (vus, signed long long, unsigned short *);
+ STVLXL STVLXL_US
+ void __builtin_vec_stvlxl (vp, signed long long, vp *);
+ STVLXL STVLXL_VP
+ void __builtin_vec_stvlxl (vbi, signed long long, vbi *);
+ STVLXL STVLXL_VBI
+ void __builtin_vec_stvlxl (vsi, signed long long, vsi *);
+ STVLXL STVLXL_VSI
+ void __builtin_vec_stvlxl (vsi, signed long long, signed int *);
+ STVLXL STVLXL_SI
+ void __builtin_vec_stvlxl (vui, signed long long, vui *);
+ STVLXL STVLXL_VUI
+ void __builtin_vec_stvlxl (vui, signed long long, unsigned int *);
+ STVLXL STVLXL_UI
+ void __builtin_vec_stvlxl (vf, signed long long, vf *);
+ STVLXL STVLXL_VF
+ void __builtin_vec_stvlxl (vf, signed long long, float *);
+ STVLXL STVLXL_F
+
+[VEC_STVRX, vec_stvrx, __builtin_vec_stvrx]
+ void __builtin_vec_stvrx (vbc, signed long long, vbc *);
+ STVRX STVRX_VBC
+ void __builtin_vec_stvrx (vsc, signed long long, vsc *);
+ STVRX STVRX_VSC
+ void __builtin_vec_stvrx (vsc, signed long long, signed char *);
+ STVRX STVRX_SC
+ void __builtin_vec_stvrx (vuc, signed long long, vuc *);
+ STVRX STVRX_VUC
+ void __builtin_vec_stvrx (vuc, signed long long, unsigned char *);
+ STVRX STVRX_UC
+ void __builtin_vec_stvrx (vbs, signed long long, vbs *);
+ STVRX STVRX_VBS
+ void __builtin_vec_stvrx (vss, signed long long, vss *);
+ STVRX STVRX_VSS
+ void __builtin_vec_stvrx (vss, signed long long, signed short *);
+ STVRX STVRX_SS
+ void __builtin_vec_stvrx (vus, signed long long, vus *);
+ STVRX STVRX_VUS
+ void __builtin_vec_stvrx (vus, signed long long, unsigned short *);
+ STVRX STVRX_US
+ void __builtin_vec_stvrx (vp, signed long long, vp *);
+ STVRX STVRX_VP
+ void __builtin_vec_stvrx (vbi, signed long long, vbi *);
+ STVRX STVRX_VBI
+ void __builtin_vec_stvrx (vsi, signed long long, vsi *);
+ STVRX STVRX_VSI
+ void __builtin_vec_stvrx (vsi, signed long long, signed int *);
+ STVRX STVRX_SI
+ void __builtin_vec_stvrx (vui, signed long long, vui *);
+ STVRX STVRX_VUI
+ void __builtin_vec_stvrx (vui, signed long long, unsigned int *);
+ STVRX STVRX_UI
+ void __builtin_vec_stvrx (vf, signed long long, vf *);
+ STVRX STVRX_VF
+ void __builtin_vec_stvrx (vf, signed long long, float *);
+ STVRX STVRX_F
+
+[VEC_STVRXL, vec_stvrxl, __builtin_vec_stvrxl]
+ void __builtin_vec_stvrxl (vbc, signed long long, vbc *);
+ STVRXL STVRXL_VBC
+ void __builtin_vec_stvrxl (vsc, signed long long, vsc *);
+ STVRXL STVRXL_VSC
+ void __builtin_vec_stvrxl (vsc, signed long long, signed char *);
+ STVRXL STVRXL_SC
+ void __builtin_vec_stvrxl (vuc, signed long long, vuc *);
+ STVRXL STVRXL_VUC
+ void __builtin_vec_stvrxl (vuc, signed long long, unsigned char *);
+ STVRXL STVRXL_UC
+ void __builtin_vec_stvrxl (vbs, signed long long, vbs *);
+ STVRXL STVRXL_VBS
+ void __builtin_vec_stvrxl (vss, signed long long, vss *);
+ STVRXL STVRXL_VSS
+ void __builtin_vec_stvrxl (vss, signed long long, signed short *);
+ STVRXL STVRXL_SS
+ void __builtin_vec_stvrxl (vus, signed long long, vus *);
+ STVRXL STVRXL_VUS
+ void __builtin_vec_stvrxl (vus, signed long long, unsigned short *);
+ STVRXL STVRXL_US
+ void __builtin_vec_stvrxl (vp, signed long long, vp *);
+ STVRXL STVRXL_VP
+ void __builtin_vec_stvrxl (vbi, signed long long, vbi *);
+ STVRXL STVRXL_VBI
+ void __builtin_vec_stvrxl (vsi, signed long long, vsi *);
+ STVRXL STVRXL_VSI
+ void __builtin_vec_stvrxl (vsi, signed long long, signed int *);
+ STVRXL STVRXL_SI
+ void __builtin_vec_stvrxl (vui, signed long long, vui *);
+ STVRXL STVRXL_VUI
+ void __builtin_vec_stvrxl (vui, signed long long, unsigned int *);
+ STVRXL STVRXL_UI
+ void __builtin_vec_stvrxl (vf, signed long long, vf *);
+ STVRXL STVRXL_VF
+ void __builtin_vec_stvrxl (vf, signed long long, float *);
+ STVRXL STVRXL_F
+
[VEC_SUB, vec_sub, __builtin_vec_sub]
vsc __builtin_vec_sub (vsc, vsc);
VSUBUBM VSUBUBM_VSC
@@ -1376,6 +2083,46 @@
vd __builtin_vec_sub (vd, vd);
XVSUBDP
+[VEC_SUBC, vec_subc, __builtin_vec_subc]
+ vsi __builtin_vec_subc (vsi, vsi);
+ VSUBCUW VSUBCUW_VSI
+ vui __builtin_vec_subc (vui, vui);
+ VSUBCUW VSUBCUW_VUI
+ vsq __builtin_vec_subc (vsq, vsq);
+ VSUBCUQ VSUBCUQ_VSQ
+ vuq __builtin_vec_subc (vuq, vuq);
+ VSUBCUQ VSUBCUQ_VUQ
+
+[VEC_SUBS, vec_subs, __builtin_vec_subs]
+ vuc __builtin_vec_subs (vuc, vuc);
+ VSUBUBS
+ vsc __builtin_vec_subs (vsc, vsc);
+ VSUBSBS
+ vus __builtin_vec_subs (vus, vus);
+ VSUBUHS
+ vss __builtin_vec_subs (vss, vss);
+ VSUBSHS
+ vui __builtin_vec_subs (vui, vui);
+ VSUBUWS
+ vsi __builtin_vec_subs (vsi, vsi);
+ VSUBSWS
+
+[VEC_SUM2S, vec_sum2s, __builtin_vec_sum2s]
+ vsi __builtin_vec_sum2s (vsi, vsi);
+ VSUM2SWS
+
+[VEC_SUM4S, vec_sum4s, __builtin_vec_sum4s]
+ vui __builtin_vec_sum4s (vuc, vui);
+ VSUM4UBS
+ vsi __builtin_vec_sum4s (vsc, vui);
+ VSUM4SBS
+ vsi __builtin_vec_sum4s (vss, vsi);
+ VSUM4SHS
+
+[VEC_SUMS, vec_sums, __builtin_vec_sums]
+ vsi __builtin_vec_sums (vsi, vsi);
+ VSUMSWS
+
[VEC_TRUNC, vec_trunc, __builtin_vec_trunc]
vf __builtin_vec_trunc (vf);
XVRSPIZ
@@ -1417,3 +2164,299 @@
VUPKLSW VUPKLSW_VBI
vd __builtin_vec_unpackl (vf);
DOUBLEL_V4SF VUPKLF
+
+[VEC_XL, vec_xl, __builtin_vec_vsx_ld]
+ vsc __builtin_vec_vsx_ld (signed long long, vsc *);
+ LXVW4X_V4SI LXVW4X_VSC
+ vsc __builtin_vec_vsx_ld (signed long long, signed char *);
+ LXVW4X_V4SI LXVW4X_SC
+ vuc __builtin_vec_vsx_ld (signed long long, vuc *);
+ LXVW4X_V4SI LXVW4X_VUC
+ vuc __builtin_vec_vsx_ld (signed long long, unsigned char *);
+ LXVW4X_V4SI LXVW4X_UC
+ vss __builtin_vec_vsx_ld (signed long long, vss *);
+ LXVW4X_V4SI LXVW4X_VSS
+ vss __builtin_vec_vsx_ld (signed long long, signed short *);
+ LXVW4X_V4SI LXVW4X_SS
+ vus __builtin_vec_vsx_ld (signed long long, vus *);
+ LXVW4X_V4SI LXVW4X_VUS
+ vus __builtin_vec_vsx_ld (signed long long, unsigned short *);
+ LXVW4X_V4SI LXVW4X_US
+ vsi __builtin_vec_vsx_ld (signed long long, vsi *);
+ LXVW4X_V4SI LXVW4X_VSI
+ vsi __builtin_vec_vsx_ld (signed long long, signed int *);
+ LXVW4X_V4SI LXVW4X_SI
+ vui __builtin_vec_vsx_ld (signed long long, vui *);
+ LXVW4X_V4SI LXVW4X_VUI
+ vui __builtin_vec_vsx_ld (signed long long, unsigned int *);
+ LXVW4X_V4SI LXVW4X_UI
+ vsll __builtin_vec_vsx_ld (signed long long, vsll *);
+ LXVD2X_V2DI LXVD2X_VSLL
+ vsll __builtin_vec_vsx_ld (signed long long, signed long long *);
+ LXVD2X_V2DI LXVD2X_SLL
+ vull __builtin_vec_vsx_ld (signed long long, vull *);
+ LXVD2X_V2DI LXVD2X_VULL
+ vull __builtin_vec_vsx_ld (signed long long, unsigned long long *);
+ LXVD2X_V2DI LXVD2X_ULL
+ vsq __builtin_vec_vsx_ld (signed long long, vsq *);
+ LXVD2X_V1TI LXVD2X_VSQ
+ vsq __builtin_vec_vsx_ld (signed long long, signed __int128 *);
+ LXVD2X_V1TI LXVD2X_SQ
+ vuq __builtin_vec_vsx_ld (signed long long, unsigned __int128 *);
+ LXVD2X_V1TI LXVD2X_UQ
+ vf __builtin_vec_vsx_ld (signed long long, vf *);
+ LXVW4X_V4SF LXVW4X_VF
+ vf __builtin_vec_vsx_ld (signed long long, float *);
+ LXVW4X_V4SF LXVW4X_F
+ vd __builtin_vec_vsx_ld (signed long long, vd *);
+ LXVD2X_V2DF LXVD2X_VD
+ vd __builtin_vec_vsx_ld (signed long long, double *);
+ LXVD2X_V2DF LXVD2X_D
+
+[VEC_XL_BE, vec_xl_be, __builtin_vec_xl_be]
+ vsc __builtin_vec_xl_be (signed long long, vsc *);
+ LD_ELEMREV_V16QI LD_ELEMREV_VSC
+ vsc __builtin_vec_xl_be (signed long long, signed char *);
+ LD_ELEMREV_V16QI LD_ELEMREV_SC
+ vuc __builtin_vec_xl_be (signed long long, vuc *);
+ LD_ELEMREV_V16QI LD_ELEMREV_VUC
+ vuc __builtin_vec_xl_be (signed long long, unsigned char *);
+ LD_ELEMREV_V16QI LD_ELEMREV_UC
+ vss __builtin_vec_xl_be (signed long long, vss *);
+ LD_ELEMREV_V8HI LD_ELEMREV_VSS
+ vss __builtin_vec_xl_be (signed long long, signed short *);
+ LD_ELEMREV_V8HI LD_ELEMREV_SS
+ vus __builtin_vec_xl_be (signed long long, vus *);
+ LD_ELEMREV_V8HI LD_ELEMREV_VUS
+ vus __builtin_vec_xl_be (signed long long, unsigned short *);
+ LD_ELEMREV_V8HI LD_ELEMREV_US
+ vsi __builtin_vec_xl_be (signed long long, vsi *);
+ LD_ELEMREV_V4SI LD_ELEMREV_VSI
+ vsi __builtin_vec_xl_be (signed long long, signed int *);
+ LD_ELEMREV_V4SI LD_ELEMREV_SI
+ vui __builtin_vec_xl_be (signed long long, vui *);
+ LD_ELEMREV_V4SI LD_ELEMREV_VUI
+ vui __builtin_vec_xl_be (signed long long, unsigned int *);
+ LD_ELEMREV_V4SI LD_ELEMREV_UI
+ vsll __builtin_vec_xl_be (signed long long, vsll *);
+ LD_ELEMREV_V2DI LD_ELEMREV_VSLL
+ vsll __builtin_vec_xl_be (signed long long, signed long long *);
+ LD_ELEMREV_V2DI LD_ELEMREV_SLL
+ vull __builtin_vec_xl_be (signed long long, vull *);
+ LD_ELEMREV_V2DI LD_ELEMREV_VULL
+ vull __builtin_vec_xl_be (signed long long, unsigned long long *);
+ LD_ELEMREV_V2DI LD_ELEMREV_ULL
+ vsq __builtin_vec_xl_be (signed long long, signed __int128 *);
+ LD_ELEMREV_V1TI LD_ELEMREV_SQ
+ vuq __builtin_vec_xl_be (signed long long, unsigned __int128 *);
+ LD_ELEMREV_V1TI LD_ELEMREV_UQ
+ vf __builtin_vec_xl_be (signed long long, vf *);
+ LD_ELEMREV_V4SF LD_ELEMREV_VF
+ vf __builtin_vec_xl_be (signed long long, float *);
+ LD_ELEMREV_V4SF LD_ELEMREV_F
+ vd __builtin_vec_xl_be (signed long long, vd *);
+ LD_ELEMREV_V2DF LD_ELEMREV_VD
+ vd __builtin_vec_xl_be (signed long long, double *);
+ LD_ELEMREV_V2DF LD_ELEMREV_DD
+
+[VEC_XOR, vec_xor, __builtin_vec_xor]
+ vsc __builtin_vec_xor (vsc, vsc);
+ VXOR_V16QI
+ vuc __builtin_vec_xor (vuc, vuc);
+ VXOR_V16QI_UNS VXOR_VUC
+ vbc __builtin_vec_xor (vbc, vbc);
+ VXOR_V16QI_UNS VXOR_VBC
+ vss __builtin_vec_xor (vss, vss);
+ VXOR_V8HI
+ vus __builtin_vec_xor (vus, vus);
+ VXOR_V8HI_UNS VXOR_VUS
+ vbs __builtin_vec_xor (vbs, vbs);
+ VXOR_V8HI_UNS VXOR_VBS
+ vsi __builtin_vec_xor (vsi, vsi);
+ VXOR_V4SI
+ vui __builtin_vec_xor (vui, vui);
+ VXOR_V4SI_UNS VXOR_VUI
+ vbi __builtin_vec_xor (vbi, vbi);
+ VXOR_V4SI_UNS VXOR_VBI
+ vsll __builtin_vec_xor (vsll, vsll);
+ VXOR_V2DI
+ vull __builtin_vec_xor (vull, vull);
+ VXOR_V2DI_UNS VXOR_VULL
+ vbll __builtin_vec_xor (vbll, vbll);
+ VXOR_V2DI_UNS VXOR_VBLL
+ vf __builtin_vec_xor (vf, vf);
+ VXOR_V4SF
+ vd __builtin_vec_xor (vd, vd);
+ VXOR_V2DF
+
+[VEC_XST, vec_xst, __builtin_vec_vsx_st]
+ void __builtin_vec_vsx_st (vsc, signed long long, vsc *);
+ STXVW4X_V16QI STXVW4X_VSC
+ void __builtin_vec_vsx_st (vsc, signed long long, signed char *);
+ STXVW4X_V16QI STXVW4X_SC
+ void __builtin_vec_vsx_st (vuc, signed long long, vuc *);
+ STXVW4X_V16QI STXVW4X_VUC
+ void __builtin_vec_vsx_st (vuc, signed long long, unsigned char *);
+ STXVW4X_V16QI STXVW4X_UC
+ void __builtin_vec_vsx_st (vbc, signed long long, vbc *);
+ STXVW4X_V16QI STXVW4X_VBC
+ void __builtin_vec_vsx_st (vbc, signed long long, signed char *);
+ STXVW4X_V16QI STXVW4X_VBC_S
+ void __builtin_vec_vsx_st (vbc, signed long long, unsigned char *);
+ STXVW4X_V16QI STXVW4X_VBC_U
+ void __builtin_vec_vsx_st (vss, signed long long, vss *);
+ STXVW4X_V8HI STXVW4X_VSS
+ void __builtin_vec_vsx_st (vss, signed long long, signed short *);
+ STXVW4X_V8HI STXVW4X_SS
+ void __builtin_vec_vsx_st (vus, signed long long, vus *);
+ STXVW4X_V8HI STXVW4X_VUS
+ void __builtin_vec_vsx_st (vus, signed long long, unsigned short *);
+ STXVW4X_V8HI STXVW4X_US
+ void __builtin_vec_vsx_st (vbs, signed long long, vbs *);
+ STXVW4X_V8HI STXVW4X_VBS
+ void __builtin_vec_vsx_st (vbs, signed long long, signed short *);
+ STXVW4X_V8HI STXVW4X_VBS_S
+ void __builtin_vec_vsx_st (vbs, signed long long, unsigned short *);
+ STXVW4X_V8HI STXVW4X_VBS_U
+ void __builtin_vec_vsx_st (vp, signed long long, vp *);
+ STXVW4X_V8HI STXVW4X_VP
+ void __builtin_vec_vsx_st (vsi, signed long long, vsi *);
+ STXVW4X_V4SI STXVW4X_VSI
+ void __builtin_vec_vsx_st (vsi, signed long long, signed int *);
+ STXVW4X_V4SI STXVW4X_SI
+ void __builtin_vec_vsx_st (vui, signed long long, vui *);
+ STXVW4X_V4SI STXVW4X_VUI
+ void __builtin_vec_vsx_st (vui, signed long long, unsigned int *);
+ STXVW4X_V4SI STXVW4X_UI
+ void __builtin_vec_vsx_st (vbi, signed long long, vbi *);
+ STXVW4X_V4SI STXVW4X_VBI
+ void __builtin_vec_vsx_st (vbi, signed long long, signed int *);
+ STXVW4X_V4SI STXVW4X_VBI_S
+ void __builtin_vec_vsx_st (vbi, signed long long, unsigned int *);
+ STXVW4X_V4SI STXVW4X_VBI_U
+ void __builtin_vec_vsx_st (vsll, signed long long, vsll *);
+ STXVD2X_V2DI STXVD2X_VSLL
+ void __builtin_vec_vsx_st (vsll, signed long long, signed long long *);
+ STXVD2X_V2DI STXVD2X_SLL
+ void __builtin_vec_vsx_st (vull, signed long long, vull *);
+ STXVD2X_V2DI STXVD2X_VULL
+ void __builtin_vec_vsx_st (vull, signed long long, unsigned long long *);
+ STXVD2X_V2DI STXVD2X_ULL
+ void __builtin_vec_vsx_st (vbll, signed long long, vbll *);
+ STXVD2X_V2DI STXVD2X_VBLL
+ void __builtin_vec_vsx_st (vf, signed long long, vf *);
+ STXVW4X_V4SF STXVW4X_VF
+ void __builtin_vec_vsx_st (vf, signed long long, float *);
+ STXVW4X_V4SF STXVW4X_F
+ void __builtin_vec_vsx_st (vd, signed long long, vd *);
+ STXVD2X_V2DF STXVD2X_VD
+ void __builtin_vec_vsx_st (vd, signed long long, double *);
+ STXVD2X_V2DF STXVD2X_D
+
+[VEC_XST_BE, vec_xst_be, __builtin_vec_xst_be]
+ void __builtin_vec_xst_be (vsc, signed long long, vsc *);
+ STXVW4X_V16QI STXVW4X_VSC_BE
+ void __builtin_vec_xst_be (vsc, signed long long, signed char *);
+ STXVW4X_V16QI STXVW4X_SC_BE
+ void __builtin_vec_xst_be (vuc, signed long long, vuc *);
+ STXVW4X_V16QI STXVW4X_VUC_BE
+ void __builtin_vec_xst_be (vuc, signed long long, unsigned char *);
+ STXVW4X_V16QI STXVW4X_UC_BE
+ void __builtin_vec_xst_be (vbc, signed long long, vbc *);
+ STXVW4X_V16QI STXVW4X_VBC_BE
+ void __builtin_vec_xst_be (vbc, signed long long, signed char *);
+ STXVW4X_V16QI STXVW4X_VBC_S_BE
+ void __builtin_vec_xst_be (vbc, signed long long, unsigned char *);
+ STXVW4X_V16QI STXVW4X_VBC_U_BE
+ void __builtin_vec_xst_be (vss, signed long long, vss *);
+ STXVW4X_V8HI STXVW4X_VSS_BE
+ void __builtin_vec_xst_be (vss, signed long long, signed short *);
+ STXVW4X_V8HI STXVW4X_SS_BE
+ void __builtin_vec_xst_be (vus, signed long long, vus *);
+ STXVW4X_V8HI STXVW4X_VUS_BE
+ void __builtin_vec_xst_be (vus, signed long long, unsigned short *);
+ STXVW4X_V8HI STXVW4X_US_BE
+ void __builtin_vec_xst_be (vbs, signed long long, vbs *);
+ STXVW4X_V8HI STXVW4X_VBS_BE
+ void __builtin_vec_xst_be (vbs, signed long long, signed short *);
+ STXVW4X_V8HI STXVW4X_VBS_S_BE
+ void __builtin_vec_xst_be (vbs, signed long long, unsigned short *);
+ STXVW4X_V8HI STXVW4X_VBS_U_BE
+ void __builtin_vec_xst_be (vp, signed long long, vp *);
+ STXVW4X_V8HI STXVW4X_VP_BE
+ void __builtin_vec_xst_be (vsi, signed long long, vsi *);
+ STXVW4X_V4SI STXVW4X_VSI_BE
+ void __builtin_vec_xst_be (vsi, signed long long, signed int *);
+ STXVW4X_V4SI STXVW4X_SI_BE
+ void __builtin_vec_xst_be (vui, signed long long, vui *);
+ STXVW4X_V4SI STXVW4X_VUI_BE
+ void __builtin_vec_xst_be (vui, signed long long, unsigned int *);
+ STXVW4X_V4SI STXVW4X_UI_BE
+ void __builtin_vec_xst_be (vbi, signed long long, vbi *);
+ STXVW4X_V4SI STXVW4X_VBI_BE
+ void __builtin_vec_xst_be (vbi, signed long long, signed int *);
+ STXVW4X_V4SI STXVW4X_VBI_S_BE
+ void __builtin_vec_xst_be (vbi, signed long long, unsigned int *);
+ STXVW4X_V4SI STXVW4X_VBI_U_BE
+ void __builtin_vec_xst_be (vsll, signed long long, vsll *);
+ STXVD2X_V2DI STXVD2X_VSLL_BE
+ void __builtin_vec_xst_be (vsll, signed long long, signed long long *);
+ STXVD2X_V2DI STXVD2X_SLL_BE
+ void __builtin_vec_xst_be (vull, signed long long, vull *);
+ STXVD2X_V2DI STXVD2X_VULL_BE
+ void __builtin_vec_xst_be (vull, signed long long, unsigned long long *);
+ STXVD2X_V2DI STXVD2X_ULL_BE
+ void __builtin_vec_xst_be (vbll, signed long long, vbll *);
+ STXVD2X_V2DI STXVD2X_VBLL_BE
+ void __builtin_vec_xst_be (vf, signed long long, vf *);
+ STXVW4X_V4SF STXVW4X_VF_BE
+ void __builtin_vec_xst_be (vf, signed long long, float *);
+ STXVW4X_V4SF STXVW4X_F_BE
+ void __builtin_vec_xst_be (vd, signed long long, vd *);
+ STXVD2X_V2DF STXVD2X_VD_BE
+ void __builtin_vec_xst_be (vd, signed long long, double *);
+ STXVD2X_V2DF STXVD2X_D_BE
+
+[VEC_XXPERMDI, vec_xxpermdi, __builtin_vsx_xxpermdi]
+ vsc __builtin_vsx_xxpermdi (vsc, vsc, const int);
+ XXPERMDI_16QI XXPERMDI_VSC
+ vuc __builtin_vsx_xxpermdi (vuc, vuc, const int);
+ XXPERMDI_16QI XXPERMDI_VUC
+ vss __builtin_vsx_xxpermdi (vss, vss, const int);
+ XXPERMDI_8HI XXPERMDI_VSS
+ vus __builtin_vsx_xxpermdi (vus, vus, const int);
+ XXPERMDI_8HI XXPERMDI_VUS
+ vsi __builtin_vsx_xxpermdi (vsi, vsi, const int);
+ XXPERMDI_4SI XXPERMDI_VSI
+ vui __builtin_vsx_xxpermdi (vui, vui, const int);
+ XXPERMDI_4SI XXPERMDI_VUI
+ vsll __builtin_vsx_xxpermdi (vsll, vsll, const int);
+ XXPERMDI_2DI XXPERMDI_VSLL
+ vull __builtin_vsx_xxpermdi (vull, vull, const int);
+ XXPERMDI_2DI XXPERMDI_VULL
+ vf __builtin_vsx_xxpermdi (vf, vf, const int);
+ XXPERMDI_4SF XXPERMDI_VF
+ vd __builtin_vsx_xxpermdi (vd, vd, const int);
+ XXPERMDI_2DF XXPERMDI_VD
+
+[VEC_XXSLDWI, vec_xxsldwi, __builtin_vsx_xxsldwi]
+ vsc __builtin_vsx_xxsldwi (vsc, vsc, const int);
+ XXSLDWI_16QI XXSLDWI_VSC2
+ vuc __builtin_vsx_xxsldwi (vuc, vuc, const int);
+ XXSLDWI_16QI XXSLDWI_VUC2
+ vss __builtin_vsx_xxsldwi (vss, vss, const int);
+ XXSLDWI_8HI XXSLDWI_VSS2
+ vus __builtin_vsx_xxsldwi (vus, vus, const int);
+ XXSLDWI_8HI XXSLDWI_VUS2
+ vsi __builtin_vsx_xxsldwi (vsi, vsi, const int);
+ XXSLDWI_4SI XXSLDWI_VSI2
+ vui __builtin_vsx_xxsldwi (vui, vui, const int);
+ XXSLDWI_4SI XXSLDWI_VUI2
+ vsll __builtin_vsx_xxsldwi (vsll, vsll, const int);
+ XXSLDWI_2DI XXSLDWI_VSLL2
+ vull __builtin_vsx_xxsldwi (vull, vull, const int);
+ XXSLDWI_2DI XXSLDWI_VULL2
+ vf __builtin_vsx_xxsldwi (vf, vf, const int);
+ XXSLDWI_4SF XXSLDWI_VF2
+ vd __builtin_vsx_xxsldwi (vd, vd, const int);
+ XXSLDWI_2DF XXSLDWI_VD2
^ permalink raw reply [flat|nested] 15+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins3)] rs6000: More progress on the overload table
@ 2020-10-27 16:31 William Schmidt
0 siblings, 0 replies; 15+ messages in thread
From: William Schmidt @ 2020-10-27 16:31 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:2199c7e9f39fa44a340207b6eb86c4a21863377f
commit 2199c7e9f39fa44a340207b6eb86c4a21863377f
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Tue Oct 13 16:41:20 2020 -0500
rs6000: More progress on the overload table
2020-10-13 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add
deprecation comments.
* config/rs6000/rs6000-overload.def: Add more entries.
Diff:
---
gcc/config/rs6000/rs6000-call.c | 12 ++-
gcc/config/rs6000/rs6000-overload.def | 198 ++++++++++++++++++++++++++++++++++
2 files changed, 209 insertions(+), 1 deletion(-)
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 7f31e8a11dd..10464f6df8d 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -2497,6 +2497,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, 0 },
{ ALTIVEC_BUILTIN_VEC_SPLAT, VSX_BUILTIN_XXSPLTD_V2DI,
RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSPLT* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSPLTW, ALTIVEC_BUILTIN_VSPLTW,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_INTSI, 0 },
{ ALTIVEC_BUILTIN_VEC_VSPLTW, ALTIVEC_BUILTIN_VSPLTW,
@@ -2535,6 +2537,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_SR, P8V_BUILTIN_VSRD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSR* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSRW, ALTIVEC_BUILTIN_VSRW,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VSRW, ALTIVEC_BUILTIN_VSRW,
@@ -2563,6 +2567,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_SRA, P8V_BUILTIN_VSRAD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSRA* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSRAW, ALTIVEC_BUILTIN_VSRAW,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VSRAW, ALTIVEC_BUILTIN_VSRAW,
@@ -2589,7 +2595,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, 0 },
{ ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V16QI, 0 },
- /* Next 3 deprecated, not in rs6000-builtin-new.def. */
+ /* Next 5 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR,
RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR,
@@ -2730,12 +2736,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUWM,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
+ /* Next two deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_SUB, P8V_BUILTIN_VSUBUDM,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_SUB, P8V_BUILTIN_VSUBUDM,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_SUB, P8V_BUILTIN_VSUBUDM,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
+ /* Next two deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_SUB, P8V_BUILTIN_VSUBUDM,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_SUB, P8V_BUILTIN_VSUBUDM,
@@ -2751,6 +2759,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ ALTIVEC_BUILTIN_VEC_SUB, P8V_BUILTIN_VSUBUQM,
RS6000_BTI_unsigned_V1TI, RS6000_BTI_unsigned_V1TI,
RS6000_BTI_unsigned_V1TI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSUB* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSUBFP, ALTIVEC_BUILTIN_VSUBFP,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_VSUBUWM, ALTIVEC_BUILTIN_VSUBUWM,
diff --git a/gcc/config/rs6000/rs6000-overload.def b/gcc/config/rs6000/rs6000-overload.def
index 10d5e9b38f8..33e12121b45 100644
--- a/gcc/config/rs6000/rs6000-overload.def
+++ b/gcc/config/rs6000/rs6000-overload.def
@@ -1172,12 +1172,210 @@
vull __builtin_vec_sll (vull, vuc);
VSL VSL_VULL
+[VEC_SLO, vec_slo, __builtin_vec_slo]
+ vsc __builtin_vec_slo (vsc, vsc);
+ VSLO VSLO_VSCS
+ vsc __builtin_vec_slo (vsc, vuc);
+ VSLO VSLO_VSCU
+ vuc __builtin_vec_slo (vuc, vsc);
+ VSLO VSLO_VUCS
+ vuc __builtin_vec_slo (vuc, vuc);
+ VSLO VSLO_VUCU
+ vss __builtin_vec_slo (vss, vsc);
+ VSLO VSLO_VSSS
+ vss __builtin_vec_slo (vss, vuc);
+ VSLO VSLO_VSSU
+ vus __builtin_vec_slo (vus, vsc);
+ VSLO VSLO_VUSS
+ vus __builtin_vec_slo (vus, vuc);
+ VSLO VSLO_VUSU
+ vp __builtin_vec_slo (vp, vsc);
+ VSLO VSLO_VPS
+ vp __builtin_vec_slo (vp, vuc);
+ VSLO VSLO_VPU
+ vsi __builtin_vec_slo (vsi, vsc);
+ VSLO VSLO_VSIS
+ vsi __builtin_vec_slo (vsi, vuc);
+ VSLO VSLO_VSIU
+ vui __builtin_vec_slo (vui, vsc);
+ VSLO VSLO_VUIS
+ vui __builtin_vec_slo (vui, vuc);
+ VSLO VSLO_VUIU
+ vsll __builtin_vec_slo (vsll, vsc);
+ VSLO VSLO_VSLLS
+ vsll __builtin_vec_slo (vsll, vuc);
+ VSLO VSLO_VSLLU
+ vull __builtin_vec_slo (vull, vsc);
+ VSLO VSLO_VULLS
+ vull __builtin_vec_slo (vull, vuc);
+ VSLO VSLO_VULLU
+ vf __builtin_vec_slo (vf, vsc);
+ VSLO VSLO_VFS
+ vf __builtin_vec_slo (vf, vuc);
+ VSLO VSLO_VFU
+
+[VEC_SPLAT, vec_splat, __builtin_vec_splat]
+ vsc __builtin_vec_splat (vsc, signed int);
+ VSPLTB VSPLTB_VSC
+ vuc __builtin_vec_splat (vuc, signed int);
+ VSPLTB VSPLTB_VUC
+ vbc __builtin_vec_splat (vbc, signed int);
+ VSPLTB VSPLTB_VBC
+ vss __builtin_vec_splat (vss, signed int);
+ VSPLTH VSPLTH_VSS
+ vus __builtin_vec_splat (vus, signed int);
+ VSPLTH VSPLTH_VUS
+ vbs __builtin_vec_splat (vbs, signed int);
+ VSPLTH VSPLTH_VBS
+ vp __builtin_vec_splat (vp, signed int);
+ VSPLTH VSPLTH_VP
+ vf __builtin_vec_splat (vf, signed int);
+ VSPLTW VSPLTW_VF
+ vsi __builtin_vec_splat (vsi, signed int);
+ VSPLTW VSPLTW_VSI
+ vui __builtin_vec_splat (vui, signed int);
+ VSPLTW VSPLTW_VUI
+ vbi __builtin_vec_splat (vbi, signed int);
+ VSPLTW VSPLTW_VBI
+ vd __builtin_vec_splat (vd, signed int);
+ XXSPLTD_V2DF
+ vsll __builtin_vec_splat (vsll, signed int);
+ XXSPLTD_V2DI XXSPLTD_VSLL
+ vull __builtin_vec_splat (vull, signed int);
+ XXSPLTD_V2DI XXSPLTD_VULL
+ vbll __builtin_vec_splat (vbll, signed int);
+ XXSPLTD_V2DI XXSPLTD_VBLL
+
[VEC_SQRT, vec_sqrt, __builtin_vec_sqrt]
vf __builtin_vec_sqrt (vf);
XVSQRTSP
vd __builtin_vec_sqrt (vd);
XVSQRTDP
+[VEC_SR, vec_sr, __builtin_vec_sr]
+ vsc __builtin_vec_sr (vsc, vuc);
+ VSRB VSRB_VSC
+ vuc __builtin_vec_sr (vuc, vuc);
+ VSRB VSRB_VUC
+ vss __builtin_vec_sr (vss, vus);
+ VSRH VSRH_VSS
+ vus __builtin_vec_sr (vus, vus);
+ VSRH VSRH_VUS
+ vsi __builtin_vec_sr (vsi, vui);
+ VSRW VSRW_VSI
+ vui __builtin_vec_sr (vui, vui);
+ VSRW VSRW_VUI
+ vsll __builtin_vec_sr (vsll, vull);
+ VSRD VSRD_VSLL
+ vull __builtin_vec_sr (vull, vull);
+ VSRD VSRD_VULL
+
+[VEC_SRA, vec_sra, __builtin_vec_sra]
+ vsc __builtin_vec_sra (vsc, vuc);
+ VSRAB VSRAB_VSC
+ vuc __builtin_vec_sra (vuc, vuc);
+ VSRAB VSRAB_VUC
+ vss __builtin_vec_sra (vss, vus);
+ VSRAH VSRAH_VSS
+ vus __builtin_vec_sra (vus, vus);
+ VSRAH VSRAH_VUS
+ vsi __builtin_vec_sra (vsi, vui);
+ VSRAW VSRAW_VSI
+ vui __builtin_vec_sra (vui, vui);
+ VSRAW VSRAW_VUI
+ vsll __builtin_vec_sra (vsll, vull);
+ VSRAD VSRAD_VSLL
+ vull __builtin_vec_sra (vull, vull);
+ VSRAD VSRAD_VULL
+
+[VEC_SRL, vec_srl, __builtin_vec_srl]
+ vsc __builtin_vec_srl (vsc, vuc);
+ VSR VSR_VSC
+ vuc __builtin_vec_srl (vuc, vuc);
+ VSR VSR_VUC
+ vss __builtin_vec_srl (vss, vuc);
+ VSR VSR_VSS
+ vus __builtin_vec_srl (vus, vuc);
+ VSR VSR_VUS
+ vp __builtin_vec_srl (vp, vuc);
+ VSR VSR_VP
+ vsi __builtin_vec_srl (vsi, vuc);
+ VSR VSR_VSI
+ vui __builtin_vec_srl (vui, vuc);
+ VSR VSR_VUI
+ vsll __builtin_vec_srl (vsll, vuc);
+ VSR VSR_VSLL
+ vull __builtin_vec_srl (vull, vuc);
+ VSR VSR_VULL
+
+[VEC_SRO, vec_sro, __builtin_vec_sro]
+ vsc __builtin_vec_sro (vsc, vsc);
+ VSRO VSRO_VSCS
+ vsc __builtin_vec_sro (vsc, vuc);
+ VSRO VSRO_VSCU
+ vuc __builtin_vec_sro (vuc, vsc);
+ VSRO VSRO_VUCS
+ vuc __builtin_vec_sro (vuc, vuc);
+ VSRO VSRO_VUCU
+ vss __builtin_vec_sro (vss, vsc);
+ VSRO VSRO_VSSS
+ vss __builtin_vec_sro (vss, vuc);
+ VSRO VSRO_VSSU
+ vus __builtin_vec_sro (vus, vsc);
+ VSRO VSRO_VUSS
+ vus __builtin_vec_sro (vus, vuc);
+ VSRO VSRO_VUSU
+ vp __builtin_vec_sro (vp, vsc);
+ VSRO VSRO_VPS
+ vp __builtin_vec_sro (vp, vuc);
+ VSRO VSRO_VPU
+ vsi __builtin_vec_sro (vsi, vsc);
+ VSRO VSRO_VSIS
+ vsi __builtin_vec_sro (vsi, vuc);
+ VSRO VSRO_VSIU
+ vui __builtin_vec_sro (vui, vsc);
+ VSRO VSRO_VUIS
+ vui __builtin_vec_sro (vui, vuc);
+ VSRO VSRO_VUIU
+ vsll __builtin_vec_sro (vsll, vsc);
+ VSRO VSRO_VSLLS
+ vsll __builtin_vec_sro (vsll, vuc);
+ VSRO VSRO_VSLLU
+ vull __builtin_vec_sro (vull, vsc);
+ VSRO VSRO_VULLS
+ vull __builtin_vec_sro (vull, vuc);
+ VSRO VSRO_VULLU
+ vf __builtin_vec_sro (vf, vsc);
+ VSRO VSRO_VFS
+ vf __builtin_vec_sro (vf, vuc);
+ VSRO VSRO_VFU
+
+[VEC_SUB, vec_sub, __builtin_vec_sub]
+ vsc __builtin_vec_sub (vsc, vsc);
+ VSUBUBM VSUBUBM_VSC
+ vuc __builtin_vec_sub (vuc, vuc);
+ VSUBUBM VSUBUBM_VUC
+ vss __builtin_vec_sub (vss, vss);
+ VSUBUHM VSUBUHM_VSS
+ vus __builtin_vec_sub (vus, vus);
+ VSUBUHM VSUBUHM_VUS
+ vsi __builtin_vec_sub (vsi, vsi);
+ VSUBUWM VSUBUWM_VSI
+ vui __builtin_vec_sub (vui, vui);
+ VSUBUWM VSUBUWM_VUI
+ vsll __builtin_vec_sub (vsll, vsll);
+ VSUBUDM VSUBUDM_VSLL
+ vull __builtin_vec_sub (vull, vull);
+ VSUBUDM VSUBUDM_VULL
+ vsq __builtin_vec_sub (vsq, vsq);
+ VSUBUQM VSUBUQM_VSQ
+ vuq __builtin_vec_sub (vuq, vuq);
+ VSUBUQM VSUBUQM_VUQ
+ vf __builtin_vec_sub (vf, vf);
+ XVSUBSP
+ vd __builtin_vec_sub (vd, vd);
+ XVSUBDP
+
[VEC_TRUNC, vec_trunc, __builtin_vec_trunc]
vf __builtin_vec_trunc (vf);
XVRSPIZ
^ permalink raw reply [flat|nested] 15+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins3)] rs6000: More progress on the overload table
@ 2020-10-27 16:31 William Schmidt
0 siblings, 0 replies; 15+ messages in thread
From: William Schmidt @ 2020-10-27 16:31 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:37eb37bae629c782f0ee0ba450de99933b3147d4
commit 37eb37bae629c782f0ee0ba450de99933b3147d4
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Mon Oct 12 17:04:43 2020 -0500
rs6000: More progress on the overload table
2020-10-12 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Minor updates.
* config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add
deprecation comments.
* config/rs6000/rs6000-gen-builtins.c (write_defines_file): Handle
SKIP directive.
* config/rs6000/rs6000-overload.def: Add more entries.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 10 +-
gcc/config/rs6000/rs6000-call.c | 25 ++
gcc/config/rs6000/rs6000-gen-builtins.c | 7 +-
gcc/config/rs6000/rs6000-overload.def | 395 ++++++++++++++++++++++++++++++-
4 files changed, 428 insertions(+), 9 deletions(-)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index 5f6eccc82e7..d6a93e6b279 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -706,7 +706,7 @@
VNMSUBFP nfmsv4sf4 {}
const vsc __builtin_altivec_vnor_v16qi (vsc, vsc);
- VNOR_V16QIS norv16qi3 {}
+ VNOR_V16QI norv16qi3 {}
const vuc __builtin_altivec_vnor_v16qi_uns (vuc, vuc);
VNOR_V16QI_UNS norv16qi3 {}
@@ -2617,16 +2617,16 @@
const vsi __builtin_altivec_vprtybw (vsi);
VPRTYBW parityv4si2 {}
- const vsll __builtin_altivec_vrldmi (vsll, vsll, vsll);
+ const vull __builtin_altivec_vrldmi (vull, vull, vull);
VRLDMI altivec_vrldmi {}
- const vsll __builtin_altivec_vrldnm (vsll, vsll);
+ const vull __builtin_altivec_vrldnm (vull, vull);
VRLDNM altivec_vrldnm {}
- const vsi __builtin_altivec_vrlwmi (vsi, vsi, vsi);
+ const vui __builtin_altivec_vrlwmi (vui, vui, vui);
VRLWMI altivec_vrlwmi {}
- const vsi __builtin_altivec_vrlwnm (vsi, vsi);
+ const vui __builtin_altivec_vrlwnm (vui, vui);
VRLWNM altivec_vrlwnm {}
const vuc __builtin_altivec_vslv (vuc, vuc);
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index d99c90905e4..7f31e8a11dd 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -1616,12 +1616,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXSW,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_MAX, P8V_BUILTIN_VMAXUD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MAX, P8V_BUILTIN_VMAXUD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MAX, P8V_BUILTIN_VMAXUD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_MAX, P8V_BUILTIN_VMAXSD,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MAX, P8V_BUILTIN_VMAXSD,
@@ -1632,6 +1634,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_MAX, VSX_BUILTIN_XVMAXDP,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VMAX* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMAXFP, ALTIVEC_BUILTIN_VMAXFP,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_VMAXSW, ALTIVEC_BUILTIN_VMAXSW,
@@ -1708,18 +1712,22 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 },
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VMRGH* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMRGHW, ALTIVEC_BUILTIN_VMRGHW,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_VMRGHW, ALTIVEC_BUILTIN_VMRGHW,
@@ -1782,6 +1790,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MERGEL, VSX_BUILTIN_VEC_MERGEL_V2DI,
RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VMRGL* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMRGLW, ALTIVEC_BUILTIN_VMRGLW,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_VMRGLW, ALTIVEC_BUILTIN_VMRGLW,
@@ -1846,6 +1856,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINSW,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_MIN, P8V_BUILTIN_VMINUD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MIN, P8V_BUILTIN_VMINUD,
@@ -1863,6 +1874,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_MIN, VSX_BUILTIN_XVMINDP,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VMIN* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMINFP, ALTIVEC_BUILTIN_VMINFP,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_VMINSW, ALTIVEC_BUILTIN_VMINSW,
@@ -1926,6 +1939,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ ALTIVEC_BUILTIN_VEC_MULE, P8V_BUILTIN_VMULEUW,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V4SI,
RS6000_BTI_unsigned_V4SI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VMULE* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMULEUB, ALTIVEC_BUILTIN_VMULEUB,
RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 },
{ ALTIVEC_BUILTIN_VEC_VMULESB, ALTIVEC_BUILTIN_VMULESB,
@@ -1951,6 +1966,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_MULO, ALTIVEC_BUILTIN_VMULOSH,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VMULO* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMULOSH, ALTIVEC_BUILTIN_VMULOSH,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 },
{ ALTIVEC_BUILTIN_VEC_VMULOUH, ALTIVEC_BUILTIN_VMULOUH,
@@ -2195,6 +2212,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
P9V_BUILTIN_VFIRSTMISMATCHOREOSINDEX_V4SI,
RS6000_BTI_UINTSI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VPK* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VPKUWUM, ALTIVEC_BUILTIN_VPKUWUM,
RS6000_BTI_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VPKUWUM, ALTIVEC_BUILTIN_VPKUWUM,
@@ -2221,6 +2240,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_PACKS, P8V_BUILTIN_VPKSDSS,
RS6000_BTI_V4SI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VPK* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VPKSWSS, ALTIVEC_BUILTIN_VPKSWSS,
RS6000_BTI_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VPKUWUS, ALTIVEC_BUILTIN_VPKUWUS,
@@ -2265,6 +2286,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_RL, P8V_BUILTIN_VRLD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VRL* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VRLW, ALTIVEC_BUILTIN_VRLW,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VRLW, ALTIVEC_BUILTIN_VRLW,
@@ -2309,6 +2332,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0, 0 },
{ ALTIVEC_BUILTIN_VEC_SQRT, VSX_BUILTIN_XVSQRTSP,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSL* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSLW, ALTIVEC_BUILTIN_VSLW,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VSLW, ALTIVEC_BUILTIN_VSLW,
diff --git a/gcc/config/rs6000/rs6000-gen-builtins.c b/gcc/config/rs6000/rs6000-gen-builtins.c
index 822a2912a32..dfd943bc3d7 100644
--- a/gcc/config/rs6000/rs6000-gen-builtins.c
+++ b/gcc/config/rs6000/rs6000-gen-builtins.c
@@ -2614,9 +2614,10 @@ static int
write_defines_file ()
{
for (int i = 0; i < num_ovld_stanzas; i++)
- fprintf (defines_file, "#define %s %s\n",
- ovld_stanzas[i].extern_name,
- ovld_stanzas[i].intern_name);
+ if (strcmp (ovld_stanzas[i].extern_name, "SKIP"))
+ fprintf (defines_file, "#define %s %s\n",
+ ovld_stanzas[i].extern_name,
+ ovld_stanzas[i].intern_name);
return 1;
}
diff --git a/gcc/config/rs6000/rs6000-overload.def b/gcc/config/rs6000/rs6000-overload.def
index 104c23b1ead..10d5e9b38f8 100644
--- a/gcc/config/rs6000/rs6000-overload.def
+++ b/gcc/config/rs6000/rs6000-overload.def
@@ -29,7 +29,8 @@
; unique internal identifier for the overload that will be used as part
; of an enumeration of all overloaded functions; <abi-name> is the name
; that will appear as a #define in altivec.h; and <builtin-name> is the
-; name that is overloaded in the back end.
+; name that is overloaded in the back end. If no #define is desired,
+; the <abi-name> should be replaced with the token SKIP.
;
; Each function entry has two lines. The first line is a prototype line.
; See rs6000-builtin-new.def for a description of the prototype line.
@@ -291,6 +292,14 @@
; Note that there is no entry for VEC_CMPLT. VEC_CMPLT is implemented
; using VEC_CMPGT with reversed arguments in altivec.h.
+[VEC_CONVERT_4F32_8I16, SKIP, __builtin_vec_convert_4f32_8i16]
+ vus __builtin_vec_convert_4f32_8i16 (vf, vf);
+ CONVERT_4F32_8I16
+
+[VEC_CONVERT_4F32_8F16, SKIP, __builtin_vec_convert_4f32_8f16]
+ vus __builtin_vec_convert_4f32_8f16 (vf, vf);
+ CONVERT_4F32_8F16
+
[VEC_COPYSIGN, vec_cpsgn, __builtin_vec_copysign]
vf __builtin_vec_copysign (vf, vf);
CPSGNSP
@@ -371,6 +380,62 @@
vf __builtin_vec_expte (vf);
VEXPTEFP
+[VEC_FIRSTMATCHINDEX, vec_first_match_index, __builtin_vec_first_match_index]
+ unsigned int __builtin_vec_first_match_index (vsc, vsc);
+ VFIRSTMATCHINDEX_V16QI FIRSTMATCHINDEX_VSC
+ unsigned int __builtin_vec_first_match_index (vuc, vuc);
+ VFIRSTMATCHINDEX_V16QI FIRSTMATCHINDEX_VUC
+ unsigned int __builtin_vec_first_match_index (vss, vss);
+ VFIRSTMATCHINDEX_V8HI FIRSTMATCHINDEX_VSS
+ unsigned int __builtin_vec_first_match_index (vus, vus);
+ VFIRSTMATCHINDEX_V8HI FIRSTMATCHINDEX_VUS
+ unsigned int __builtin_vec_first_match_index (vsi, vsi);
+ VFIRSTMATCHINDEX_V4SI FIRSTMATCHINDEX_VSI
+ unsigned int __builtin_vec_first_match_index (vui, vui);
+ VFIRSTMATCHINDEX_V4SI FIRSTMATCHINDEX_VUI
+
+[VEC_FIRSTMATCHOREOSINDEX, vec_first_match_or_eos_index, __builtin_vec_first_match_or_eos_index]
+ unsigned int __builtin_vec_first_match_or_eos_index (vsc, vsc);
+ VFIRSTMATCHOREOSINDEX_V16QI FIRSTMATCHOREOSINDEX_VSC
+ unsigned int __builtin_vec_first_match_or_eos_index (vuc, vuc);
+ VFIRSTMATCHOREOSINDEX_V16QI FIRSTMATCHOREOSINDEX_VUC
+ unsigned int __builtin_vec_first_match_or_eos_index (vss, vss);
+ VFIRSTMATCHOREOSINDEX_V8HI FIRSTMATCHOREOSINDEX_VSS
+ unsigned int __builtin_vec_first_match_or_eos_index (vus, vus);
+ VFIRSTMATCHOREOSINDEX_V8HI FIRSTMATCHOREOSINDEX_VUS
+ unsigned int __builtin_vec_first_match_or_eos_index (vsi, vsi);
+ VFIRSTMATCHOREOSINDEX_V4SI FIRSTMATCHOREOSINDEX_VSI
+ unsigned int __builtin_vec_first_match_or_eos_index (vui, vui);
+ VFIRSTMATCHOREOSINDEX_V4SI FIRSTMATCHOREOSINDEX_VUI
+
+[VEC_FIRSTMISMATCHINDEX, vec_first_mismatch_index, __builtin_vec_first_mismatch_index]
+ unsigned int __builtin_vec_first_mismatch_index (vsc, vsc);
+ VFIRSTMISMATCHINDEX_V16QI FIRSTMISMATCHINDEX_VSC
+ unsigned int __builtin_vec_first_mismatch_index (vuc, vuc);
+ VFIRSTMISMATCHINDEX_V16QI FIRSTMISMATCHINDEX_VUC
+ unsigned int __builtin_vec_first_mismatch_index (vss, vss);
+ VFIRSTMISMATCHINDEX_V8HI FIRSTMISMATCHINDEX_VSS
+ unsigned int __builtin_vec_first_mismatch_index (vus, vus);
+ VFIRSTMISMATCHINDEX_V8HI FIRSTMISMATCHINDEX_VUS
+ unsigned int __builtin_vec_first_mismatch_index (vsi, vsi);
+ VFIRSTMISMATCHINDEX_V4SI FIRSTMISMATCHINDEX_VSI
+ unsigned int __builtin_vec_first_mismatch_index (vui, vui);
+ VFIRSTMISMATCHINDEX_V4SI FIRSTMISMATCHINDEX_VUI
+
+[VEC_FIRSTMISMATCHOREOSINDEX, vec_first_mismatch_or_eos_index, __builtin_vec_first_mismatch_or_eos_index]
+ unsigned int __builtin_vec_first_mismatch_or_eos_index (vsc, vsc);
+ VFIRSTMISMATCHOREOSINDEX_V16QI FIRSTMISMATCHOREOSINDEX_VSC
+ unsigned int __builtin_vec_first_mismatch_or_eos_index (vuc, vuc);
+ VFIRSTMISMATCHOREOSINDEX_V16QI FIRSTMISMATCHOREOSINDEX_VUC
+ unsigned int __builtin_vec_first_mismatch_or_eos_index (vss, vss);
+ VFIRSTMISMATCHOREOSINDEX_V8HI FIRSTMISMATCHOREOSINDEX_VSS
+ unsigned int __builtin_vec_first_mismatch_or_eos_index (vus, vus);
+ VFIRSTMISMATCHOREOSINDEX_V8HI FIRSTMISMATCHOREOSINDEX_VUS
+ unsigned int __builtin_vec_first_mismatch_or_eos_index (vsi, vsi);
+ VFIRSTMISMATCHOREOSINDEX_V4SI FIRSTMISMATCHOREOSINDEX_VSI
+ unsigned int __builtin_vec_first_mismatch_or_eos_index (vui, vui);
+ VFIRSTMISMATCHOREOSINDEX_V4SI FIRSTMISMATCHOREOSINDEX_VUI
+
[VEC_FLOAT, vec_float, __builtin_vec_float]
vf __builtin_vec_float (vsi);
XVCVSXWSP_V4SF
@@ -733,6 +798,92 @@
vd __builtin_vec_max (vd, vd);
XVMAXDP
+[VEC_MERGEH, vec_mergeh, __builtin_vec_mergeh]
+ vbc __builtin_vec_mergeh (vbc, vbc);
+ VMRGHB VMRGHB_VBC
+ vsc __builtin_vec_mergeh (vsc, vsc);
+ VMRGHB VMRGHB_VSC
+ vuc __builtin_vec_mergeh (vuc, vuc);
+ VMRGHB VMRGHB_VUC
+ vbs __builtin_vec_mergeh (vbs, vbs);
+ VMRGHH VMRGHH_VBS
+ vss __builtin_vec_mergeh (vss, vss);
+ VMRGHH VMRGHH_VSS
+ vus __builtin_vec_mergeh (vus, vus);
+ VMRGHH VMRGHH_VUS
+ vp __builtin_vec_mergeh (vp, vp);
+ VMRGHH VMRGHH_VP
+ vbi __builtin_vec_mergeh (vbi, vbi);
+ VMRGHW VMRGHW_VBI
+ vsi __builtin_vec_mergeh (vsi, vsi);
+ VMRGHW VMRGHW_VSI
+ vui __builtin_vec_mergeh (vui, vui);
+ VMRGHW VMRGHW_VUI
+ vbll __builtin_vec_mergeh (vbll, vbll);
+ VEC_MERGEH_V2DI VEC_MERGEH_VBLL
+ vsll __builtin_vec_mergeh (vsll, vsll);
+ VEC_MERGEH_V2DI VEC_MERGEH_VSLL
+ vull __builtin_vec_mergeh (vull, vull);
+ VEC_MERGEH_V2DI VEC_MERGEH_VULL
+ vf __builtin_vec_mergeh (vf, vf);
+ VMRGHW VMRGHW_VF
+ vd __builtin_vec_mergeh (vd, vd);
+ VEC_MERGEH_V2DF
+
+[VEC_MERGEL, vec_mergel, __builtin_vec_mergel]
+ vbc __builtin_vec_mergel (vbc, vbc);
+ VMRGLB VMRGLB_VBC
+ vsc __builtin_vec_mergel (vsc, vsc);
+ VMRGLB VMRGLB_VSC
+ vuc __builtin_vec_mergel (vuc, vuc);
+ VMRGLB VMRGLB_VUC
+ vbs __builtin_vec_mergel (vbs, vbs);
+ VMRGLH VMRGLH_VBS
+ vss __builtin_vec_mergel (vss, vss);
+ VMRGLH VMRGLH_VSS
+ vus __builtin_vec_mergel (vus, vus);
+ VMRGLH VMRGLH_VUS
+ vp __builtin_vec_mergel (vp, vp);
+ VMRGLH VMRGLH_VP
+ vbi __builtin_vec_mergel (vbi, vbi);
+ VMRGLW VMRGLW_VBI
+ vsi __builtin_vec_mergel (vsi, vsi);
+ VMRGLW VMRGLW_VSI
+ vui __builtin_vec_mergel (vui, vui);
+ VMRGLW VMRGLW_VUI
+ vbll __builtin_vec_mergel (vbll, vbll);
+ VEC_MERGEL_V2DI VEC_MERGEL_VBLL
+ vsll __builtin_vec_mergel (vsll, vsll);
+ VEC_MERGEL_V2DI VEC_MERGEL_VSLL
+ vull __builtin_vec_mergel (vull, vull);
+ VEC_MERGEL_V2DI VEC_MERGEL_VULL
+ vf __builtin_vec_mergel (vf, vf);
+ VMRGLW VMRGLW_VF
+ vd __builtin_vec_mergel (vd, vd);
+ VEC_MERGEL_V2DF
+
+[VEC_MIN, vec_min, __builtin_vec_min]
+ vsc __builtin_vec_min (vsc, vsc);
+ VMINSB
+ vuc __builtin_vec_min (vuc, vuc);
+ VMINUB
+ vss __builtin_vec_min (vss, vss);
+ VMINSH
+ vus __builtin_vec_min (vus, vus);
+ VMINUH
+ vsi __builtin_vec_min (vsi, vsi);
+ VMINSW
+ vui __builtin_vec_min (vui, vui);
+ VMINUW
+ vsll __builtin_vec_min (vsll, vsll);
+ VMINSD
+ vull __builtin_vec_min (vull, vull);
+ VMINUD
+ vf __builtin_vec_min (vf, vf);
+ XVMINSP
+ vd __builtin_vec_min (vd, vd);
+ XVMINDP
+
[VEC_MTVSCR, vec_mtvscr, __builtin_vec_mtvscr]
void __builtin_vec_mtvscr (vbc);
MTVSCR MTVSCR_VBC
@@ -755,6 +906,168 @@
void __builtin_vec_mtvscr (vui);
MTVSCR MTVSCR_VUI
+[VEC_MULE, vec_mule, __builtin_vec_mule]
+ vss __builtin_vec_mule (vsc, vsc);
+ VMULESB
+ vus __builtin_vec_mule (vuc, vuc);
+ VMULEUB
+ vsi __builtin_vec_mule (vss, vss);
+ VMULESH
+ vui __builtin_vec_mule (vus, vus);
+ VMULEUH
+ vsll __builtin_vec_mule (vsi, vsi);
+ VMULESW
+ vull __builtin_vec_mule (vui, vui);
+ VMULEUW
+
+[VEC_MULO, vec_mulo, __builtin_vec_mulo]
+ vss __builtin_vec_mulo (vsc, vsc);
+ VMULOSB
+ vus __builtin_vec_mulo (vuc, vuc);
+ VMULOUB
+ vsi __builtin_vec_mulo (vss, vss);
+ VMULOSH
+ vui __builtin_vec_mulo (vus, vus);
+ VMULOUH
+ vsll __builtin_vec_mulo (vsi, vsi);
+ VMULOSW
+ vull __builtin_vec_mulo (vui, vui);
+ VMULOUW
+
+[VEC_NABS, vec_nabs, __builtin_vec_nabs]
+ vsc __builtin_vec_nabs (vsc);
+ NABS_V16QI
+ vss __builtin_vec_nabs (vss);
+ NABS_V8HI
+ vsi __builtin_vec_nabs (vsi);
+ NABS_V4SI
+ vsll __builtin_vec_nabs (vsll);
+ NABS_V2DI
+ vf __builtin_vec_nabs (vf);
+ NABS_V4SF
+ vd __builtin_vec_nabs (vd);
+ NABS_V2DF
+
+[VEC_NEARBYINT, vec_nearbyint, __builtin_vec_nearbyint]
+ vf __builtin_vec_nearbyint (vf);
+ XVRSPI XVRSPI_NBI
+ vd __builtin_vec_nearbyint (vd);
+ XVRDPI XVRDPI_NBI
+
+[VEC_NEG, vec_neg, __builtin_vec_neg]
+ vsc __builtin_vec_neg (vsc);
+ NEG_V16QI
+ vss __builtin_vec_neg (vss);
+ NEG_V8HI
+ vsi __builtin_vec_neg (vsi);
+ NEG_V4SI
+ vsll __builtin_vec_neg (vsll);
+ NEG_V2DI
+ vf __builtin_vec_neg (vf);
+ NEG_V4SF
+ vd __builtin_vec_neg (vd);
+ NEG_V2DF
+
+[VEC_NOR, vec_nor, __builtin_vec_nor]
+ vsc __builtin_vec_nor (vsc, vsc);
+ VNOR_V16QI
+ vuc __builtin_vec_nor (vuc, vuc);
+ VNOR_V16QI_UNS VNOR_V16QI_U
+ vbc __builtin_vec_nor (vbc, vbc);
+ VNOR_V16QI_UNS VNOR_V16QI_B
+ vss __builtin_vec_nor (vss, vss);
+ VNOR_V8HI
+ vus __builtin_vec_nor (vus, vus);
+ VNOR_V8HI_UNS VNOR_V8HI_U
+ vbs __builtin_vec_nor (vbs, vbs);
+ VNOR_V8HI_UNS VNOR_V8HI_B
+ vsi __builtin_vec_nor (vsi, vsi);
+ VNOR_V4SI
+ vui __builtin_vec_nor (vui, vui);
+ VNOR_V4SI_UNS VNOR_V4SI_U
+ vbi __builtin_vec_nor (vbi, vbi);
+ VNOR_V4SI_UNS VNOR_V4SI_B
+ vsll __builtin_vec_nor (vsll, vsll);
+ VNOR_V2DI
+ vull __builtin_vec_nor (vull, vull);
+ VNOR_V2DI_UNS VNOR_V2DI_U
+ vbll __builtin_vec_nor (vbll, vbll);
+ VNOR_V2DI_UNS VNOR_V2DI_B
+ vf __builtin_vec_nor (vf, vf);
+ VNOR_V4SF
+ vd __builtin_vec_nor (vd, vd);
+ VNOR_V2DF
+
+[VEC_OR, vec_or, __builtin_vec_or]
+ vsc __builtin_vec_or (vsc, vsc);
+ VOR_V16QI
+ vuc __builtin_vec_or (vuc, vuc);
+ VOR_V16QI_UNS VOR_V16QI_U
+ vbc __builtin_vec_or (vbc, vbc);
+ VOR_V16QI_UNS VOR_V16QI_B
+ vss __builtin_vec_or (vss, vss);
+ VOR_V8HI
+ vus __builtin_vec_or (vus, vus);
+ VOR_V8HI_UNS VOR_V8HI_U
+ vbs __builtin_vec_or (vbs, vbs);
+ VOR_V8HI_UNS VOR_V8HI_B
+ vsi __builtin_vec_or (vsi, vsi);
+ VOR_V4SI
+ vui __builtin_vec_or (vui, vui);
+ VOR_V4SI_UNS VOR_V4SI_U
+ vbi __builtin_vec_or (vbi, vbi);
+ VOR_V4SI_UNS VOR_V4SI_B
+ vsll __builtin_vec_or (vsll, vsll);
+ VOR_V2DI
+ vull __builtin_vec_or (vull, vull);
+ VOR_V2DI_UNS VOR_V2DI_U
+ vbll __builtin_vec_or (vbll, vbll);
+ VOR_V2DI_UNS VOR_V2DI_B
+ vf __builtin_vec_or (vf, vf);
+ VOR_V4SF
+ vd __builtin_vec_or (vd, vd);
+ VOR_V2DF
+
+[VEC_PACK, vec_pack, __builtin_vec_pack]
+ vsc __builtin_vec_pack (vss, vss);
+ VPKUHUM VPKUHUM_VSS
+ vuc __builtin_vec_pack (vus, vus);
+ VPKUHUM VPKUHUM_VUS
+ vbc __builtin_vec_pack (vbs, vbs);
+ VPKUHUM VPKUHUM_VBS
+ vss __builtin_vec_pack (vsi, vsi);
+ VPKUWUM VPKUWUM_VSI
+ vus __builtin_vec_pack (vui, vui);
+ VPKUWUM VPKUWUM_VUI
+ vbs __builtin_vec_pack (vbi, vbi);
+ VPKUWUM VPKUWUM_VBI
+ vsi __builtin_vec_pack (vsll, vsll);
+ VPKUDUM VPKUDUM_VSLL
+ vui __builtin_vec_pack (vull, vull);
+ VPKUDUM VPKUDUM_VULL
+ vbi __builtin_vec_pack (vbll, vbll);
+ VPKUDUM VPKUDUM_VBLL
+ vf __builtin_vec_pack (vd, vd);
+ FLOAT2_V2DF FLOAT2_V2DF_PACK
+
+[VEC_PACKPX, vec_packpx, __builtin_vec_packpx]
+ vp __builtin_vec_packpx (vui, vui);
+ VPKPX
+
+[VEC_PACKS, vec_packs, __builtin_vec_packs]
+ vuc __builtin_vec_packs (vus, vus);
+ VPKUHUS
+ vsc __builtin_vec_packs (vss, vss);
+ VPKSHSS
+ vus __builtin_vec_packs (vui, vui);
+ VPKUWUS
+ vss __builtin_vec_packs (vsi, vsi);
+ VPKSWSS
+ vui __builtin_vec_packs (vull, vull);
+ VPKUDUS
+ vsi __builtin_vec_packs (vsll, vsll);
+ VPKSDSS
+
[VEC_RE, vec_re, __builtin_vec_re]
vf __builtin_vec_re (vf);
XVRESP
@@ -767,6 +1080,42 @@
vd __builtin_vec_recipdiv (vd, vd);
RECIP_V2DF
+[VEC_RINT, vec_rint, __builtin_vec_rint]
+ vf __builtin_vec_rint (vf);
+ XVRSPIC
+ vd __builtin_vec_rint (vd);
+ XVRDPIC
+
+[VEC_RL, vec_rl, __builtin_vec_rl]
+ vsc __builtin_vec_rl (vsc, vuc);
+ VRLB VRLB_VSC
+ vuc __builtin_vec_rl (vuc, vuc);
+ VRLB VRLB_VUC
+ vss __builtin_vec_rl (vss, vus);
+ VRLH VRLH_VSS
+ vus __builtin_vec_rl (vus, vus);
+ VRLH VRLH_VUS
+ vsi __builtin_vec_rl (vsi, vui);
+ VRLW VRLW_VSI
+ vui __builtin_vec_rl (vui, vui);
+ VRLW VRLW_VUI
+ vsll __builtin_vec_rl (vsll, vull);
+ VRLD VRLD_VSLL
+ vull __builtin_vec_rl (vull, vull);
+ VRLD VRLD_VULL
+
+[VEC_RLMI, vec_rlmi, __builtin_vec_rlmi]
+ vui __builtin_vec_rlmi (vui, vui, vui);
+ VRLWMI
+ vull __builtin_vec_rlmi (vull, vull, vull);
+ VRLDMI
+
+[VEC_RLNM, vec_rlnm, __builtin_vec_rlnm]
+ vui __builtin_vec_rlnm (vui, vui);
+ VRLWNM
+ vull __builtin_vec_rlnm (vull, vull);
+ VRLDNM
+
[VEC_ROUND, vec_round, __builtin_vec_round]
vf __builtin_vec_round (vf);
XVRSPI
@@ -785,6 +1134,50 @@
vd __builtin_vec_rsqrte (vd);
XVRSQRTEDP
+[VEC_SL, vec_sl, __builtin_vec_sl]
+ vsc __builtin_vec_sl (vsc, vuc);
+ VSLB VSLB_VSC
+ vuc __builtin_vec_sl (vuc, vuc);
+ VSLB VSLB_VUC
+ vss __builtin_vec_sl (vss, vus);
+ VSLH VSLH_VSS
+ vus __builtin_vec_sl (vus, vus);
+ VSLH VSLH_VUS
+ vsi __builtin_vec_sl (vsi, vui);
+ VSLW VSLW_VSI
+ vui __builtin_vec_sl (vui, vui);
+ VSLW VSLW_VUI
+ vsll __builtin_vec_sl (vsll, vull);
+ VSLD VSLD_VSLL
+ vull __builtin_vec_sl (vull, vull);
+ VSLD VSLD_VULL
+
+[VEC_SLL, vec_sll, __builtin_vec_sll]
+ vsc __builtin_vec_sll (vsc, vuc);
+ VSL VSL_VSC
+ vuc __builtin_vec_sll (vuc, vuc);
+ VSL VSL_VUC
+ vss __builtin_vec_sll (vss, vuc);
+ VSL VSL_VSS
+ vus __builtin_vec_sll (vus, vuc);
+ VSL VSL_VUS
+ vp __builtin_vec_sll (vp, vuc);
+ VSL VSL_VP
+ vsi __builtin_vec_sll (vsi, vuc);
+ VSL VSL_VSI
+ vui __builtin_vec_sll (vui, vuc);
+ VSL VSL_VUI
+ vsll __builtin_vec_sll (vsll, vuc);
+ VSL VSL_VSLL
+ vull __builtin_vec_sll (vull, vuc);
+ VSL VSL_VULL
+
+[VEC_SQRT, vec_sqrt, __builtin_vec_sqrt]
+ vf __builtin_vec_sqrt (vf);
+ XVSQRTSP
+ vd __builtin_vec_sqrt (vd);
+ XVSQRTDP
+
[VEC_TRUNC, vec_trunc, __builtin_vec_trunc]
vf __builtin_vec_trunc (vf);
XVRSPIZ
^ permalink raw reply [flat|nested] 15+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins3)] rs6000: More progress on the overload table
@ 2020-10-27 16:31 William Schmidt
0 siblings, 0 replies; 15+ messages in thread
From: William Schmidt @ 2020-10-27 16:31 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:120f9c92ac2398dcda3f74e253cd68028c3a50ed
commit 120f9c92ac2398dcda3f74e253cd68028c3a50ed
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Mon Oct 12 09:12:59 2020 -0500
rs6000: More progress on the overload table
2020-10-12 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Move Cell builtins to
their own stanza; add LVXL_V1TI.
* config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add
deprecation comments.
(rs6000_expand_builtin): Add ENB_CELL handling.
* config/rs6000/rs6000-gen-builtins.c (bif_stanza): Add BSTZ_CELL.
(stanza_map): Add "cell" entry mapping to BSTZ_CELL.
(enable_string): Add ENB_CELL.
(write_decls): Write ENB_CELL entry.
* config/rs6000/rs6000-overload.def: Add more entries.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 54 +++---
gcc/config/rs6000/rs6000-call.c | 6 +
gcc/config/rs6000/rs6000-gen-builtins.c | 4 +
gcc/config/rs6000/rs6000-overload.def | 320 ++++++++++++++++++++++++++++++-
4 files changed, 359 insertions(+), 25 deletions(-)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index bb5d9b6f87c..5f6eccc82e7 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -300,18 +300,6 @@
pure vop __builtin_altivec_lvewx (signed long long, const void *);
LVEWX altivec_lvewx {ldvec}
- pure vop __builtin_altivec_lvlx (signed long long, const void *);
- LVLX altivec_lvlx {ldvec}
-
- pure vop __builtin_altivec_lvlxl (signed long long, const void *);
- LVLXL altivec_lvlxl {ldvec}
-
- pure vop __builtin_altivec_lvrx (signed long long, const void *);
- LVRX altivec_lvrx {ldvec}
-
- pure vop __builtin_altivec_lvrxl (signed long long, const void *);
- LVRXL altivec_lvrxl {ldvec}
-
pure vuc __builtin_altivec_lvsl (signed long long, const void *);
LVSL altivec_lvsl {ldvec}
@@ -378,18 +366,6 @@
void __builtin_altivec_stvewx (vsi, signed long long, void *);
STVEWX altivec_stvewx {stvec}
- void __builtin_altivec_stvlx (vop, signed long long, void *);
- STVLX altivec_stvlx {stvec}
-
- void __builtin_altivec_stvlxl (vop, signed long long, void *);
- STVLXL altivec_stvlxl {stvec}
-
- void __builtin_altivec_stvrx (vop, signed long long, void *);
- STVRX altivec_stvrx {stvec}
-
- void __builtin_altivec_stvrxl (vop, signed long long, void *);
- STVRXL altivec_stvrxl {stvec}
-
void __builtin_altivec_stvx (vsi, signed long long, void *);
STVX altivec_stvx_v4si {stvec}
@@ -1093,6 +1069,33 @@
VEC_SET_V8HI nothing {set}
+; Cell builtins.
+[cell]
+ pure vop __builtin_altivec_lvlx (signed long long, const void *);
+ LVLX altivec_lvlx {ldvec}
+
+ pure vop __builtin_altivec_lvlxl (signed long long, const void *);
+ LVLXL altivec_lvlxl {ldvec}
+
+ pure vop __builtin_altivec_lvrx (signed long long, const void *);
+ LVRX altivec_lvrx {ldvec}
+
+ pure vop __builtin_altivec_lvrxl (signed long long, const void *);
+ LVRXL altivec_lvrxl {ldvec}
+
+ void __builtin_altivec_stvlx (vop, signed long long, void *);
+ STVLX altivec_stvlx {stvec}
+
+ void __builtin_altivec_stvlxl (vop, signed long long, void *);
+ STVLXL altivec_stvlxl {stvec}
+
+ void __builtin_altivec_stvrx (vop, signed long long, void *);
+ STVRX altivec_stvrx {stvec}
+
+ void __builtin_altivec_stvrxl (vop, signed long long, void *);
+ STVRXL altivec_stvrxl {stvec}
+
+
; VSX builtins.
[vsx]
pure vsq __builtin_altivec_lvx_v1ti (signed long long, const void *);
@@ -1104,6 +1107,9 @@
pure vsll __builtin_altivec_lvx_v2di (signed long long, const void *);
LVX_V2DI altivec_lvx_v2di {ldvec}
+ pure vuq __builtin_altivec_lvxl_v1ti (signed long long, const void *);
+ LVXL_V1TI altivec_lvxl_v1ti {ldvec}
+
pure vd __builtin_altivec_lvxl_v2df (signed long long, const void *);
LVXL_V2DF altivec_lvxl_v2df {ldvec}
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 293c4661235..d99c90905e4 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -1188,6 +1188,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_long, 0 },
{ ALTIVEC_BUILTIN_VEC_LDE, ALTIVEC_BUILTIN_LVEWX,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_long, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_LVE* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_LVEWX, ALTIVEC_BUILTIN_LVEWX,
RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float, 0 },
{ ALTIVEC_BUILTIN_VEC_LVEWX, ALTIVEC_BUILTIN_LVEWX,
@@ -13530,6 +13532,10 @@ rs6000_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
if (!TARGET_ALTIVEC)
return const0_rtx;
break;
+ case ENB_CELL:
+ if (!TARGET_ALTIVEC || rs6000_cpu != PROCESSOR_CELL)
+ return const0_rtx;
+ break;
case ENB_VSX:
if (!TARGET_VSX)
return const0_rtx;
diff --git a/gcc/config/rs6000/rs6000-gen-builtins.c b/gcc/config/rs6000/rs6000-gen-builtins.c
index e5e63b29667..822a2912a32 100644
--- a/gcc/config/rs6000/rs6000-gen-builtins.c
+++ b/gcc/config/rs6000/rs6000-gen-builtins.c
@@ -183,6 +183,7 @@ enum bif_stanza {
BSTZ_P5,
BSTZ_P6,
BSTZ_ALTIVEC,
+ BSTZ_CELL,
BSTZ_VSX,
BSTZ_P7,
BSTZ_P7_64,
@@ -215,6 +216,7 @@ static stanza_entry stanza_map[NUMBIFSTANZAS] =
{ "power5", BSTZ_P5 },
{ "power6", BSTZ_P6 },
{ "altivec", BSTZ_ALTIVEC },
+ { "cell", BSTZ_CELL },
{ "vsx", BSTZ_VSX },
{ "power7", BSTZ_P7 },
{ "power7-64", BSTZ_P7_64 },
@@ -238,6 +240,7 @@ static const char *enable_string[NUMBIFSTANZAS] =
"ENB_P5",
"ENB_P6",
"ENB_ALTIVEC",
+ "ENB_CELL",
"ENB_VSX",
"ENB_P7",
"ENB_P7_64",
@@ -2067,6 +2070,7 @@ write_decls ()
fprintf (header_file, " ENB_P5,\n");
fprintf (header_file, " ENB_P6,\n");
fprintf (header_file, " ENB_ALTIVEC,\n");
+ fprintf (header_file, " ENB_CELL,\n");
fprintf (header_file, " ENB_VSX,\n");
fprintf (header_file, " ENB_P7,\n");
fprintf (header_file, " ENB_P7_64,\n");
diff --git a/gcc/config/rs6000/rs6000-overload.def b/gcc/config/rs6000/rs6000-overload.def
index 6e21385c0f1..104c23b1ead 100644
--- a/gcc/config/rs6000/rs6000-overload.def
+++ b/gcc/config/rs6000/rs6000-overload.def
@@ -408,13 +408,331 @@
XVRDPIM
[VEC_LD, vec_ld, __builtin_vec_ld]
+ vsc __builtin_vec_ld (signed long long, vsc *);
+ LVX_V16QI LVX_V16QI_VSC
+ vsc __builtin_vec_ld (signed long long, signed char *);
+ LVX_V16QI LVX_V16QI_SC
+ vuc __builtin_vec_ld (signed long long, vuc *);
+ LVX_V16QI LVX_V16QI_VUC
+ vuc __builtin_vec_ld (signed long long, unsigned char *);
+ LVX_V16QI LVX_V16QI_UC
+ vbc __builtin_vec_ld (signed long long, vbc *);
+ LVX_V16QI LVX_V16QI_VBC
+ vss __builtin_vec_ld (signed long long, vss *);
+ LVX_V8HI LVX_V8HI_VSS
+ vss __builtin_vec_ld (signed long long, signed short *);
+ LVX_V8HI LVX_V8HI_SS
+ vus __builtin_vec_ld (signed long long, vus *);
+ LVX_V8HI LVX_V8HI_VUS
+ vus __builtin_vec_ld (signed long long, unsigned short *);
+ LVX_V8HI LVX_V8HI_US
+ vbs __builtin_vec_ld (signed long long, vbs *);
+ LVX_V8HI LVX_V8HI_VBS
+ vp __builtin_vec_ld (signed long long, vp *);
+ LVX_V8HI LVX_V8HI_VP
+ vsi __builtin_vec_ld (signed long long, vsi *);
+ LVX_V4SI LVX_V4SI_VSI
+ vsi __builtin_vec_ld (signed long long, signed int *);
+ LVX_V4SI LVX_V4SI_SI
+ vui __builtin_vec_ld (signed long long, vui *);
+ LVX_V4SI LVX_V4SI_VUI
+ vui __builtin_vec_ld (signed long long, unsigned int *);
+ LVX_V4SI LVX_V4SI_UI
+ vbi __builtin_vec_ld (signed long long, vbi *);
+ LVX_V4SI LVX_V4SI_VBI
+ vsll __builtin_vec_ld (signed long long, vsll *);
+ LVX_V2DI LVX_V2DI_VSLL
+ vsll __builtin_vec_ld (signed long long, signed long long *);
+ LVX_V2DI LVX_V2DI_SLL
+ vull __builtin_vec_ld (signed long long, vull *);
+ LVX_V2DI LVX_V2DI_VULL
+ vull __builtin_vec_ld (signed long long, unsigned long long *);
+ LVX_V2DI LVX_V2DI_ULL
+ vbll __builtin_vec_ld (signed long long, vbll *);
+ LVX_V2DI LVX_V2DI_VBLL
vsq __builtin_vec_ld (signed long long, const vsq *);
- LVX_V1TI
+ LVX_V1TI LVX_V1TI_VSQ
+ vuq __builtin_vec_ld (signed long long, const vuq *);
+ LVX_V1TI LVX_V1TI_VUQ
+ vsq __builtin_vec_ld (signed long long, __int128 *);
+ LVX_V1TI LVX_V1TI_TI
+ vuq __builtin_vec_ld (signed long long, unsigned __int128 *);
+ LVX_V1TI LVX_V1TI_UTI
+ vf __builtin_vec_ld (signed long long, vf *);
+ LVX_V4SF LVX_V4SF_VF
+ vf __builtin_vec_ld (signed long long, float *);
+ LVX_V4SF LVX_V4SF_F
+ vd __builtin_vec_ld (signed long long, vd *);
+ LVX_V2DF LVX_V2DF_VD
+ vd __builtin_vec_ld (signed long long, double *);
+ LVX_V2DF LVX_V2DF_D
+
+[VEC_LDE, vec_lde, __builtin_vec_lde]
+ vsc __builtin_vec_lde (signed long long, signed char *);
+ LVEBX LVEBX_SC
+ vuc __builtin_vec_lde (signed long long, unsigned char *);
+ LVEBX LVEBX_UC
+ vss __builtin_vec_lde (signed long long, signed short *);
+ LVEHX LVEHX_SS
+ vus __builtin_vec_lde (signed long long, unsigned short *);
+ LVEHX LVEHX_US
+ vsi __builtin_vec_lde (signed long long, signed int *);
+ LVEWX LVEWX_SI
+ vui __builtin_vec_lde (signed long long, unsigned int *);
+ LVEWX LVEWX_UI
+ vf __builtin_vec_lde (signed long long, float *);
+ LVEWX LVEWX_F
+
+[VEC_LDL, vec_ldl, __builtin_vec_ldl]
+ vsc __builtin_vec_ldl (signed long long, vsc *);
+ LVXL_V16QI LVXL_V16QI_VSC
+ vsc __builtin_vec_ldl (signed long long, signed char *);
+ LVXL_V16QI LVXL_V16QI_SC
+ vuc __builtin_vec_ldl (signed long long, vuc *);
+ LVXL_V16QI LVXL_V16QI_VUC
+ vuc __builtin_vec_ldl (signed long long, unsigned char *);
+ LVXL_V16QI LVXL_V16QI_UC
+ vbc __builtin_vec_ldl (signed long long, vbc *);
+ LVXL_V16QI LVXL_V16QI_VBC
+ vss __builtin_vec_ldl (signed long long, vss *);
+ LVXL_V8HI LVXL_V8HI_VSS
+ vss __builtin_vec_ldl (signed long long, signed short *);
+ LVXL_V8HI LVXL_V8HI_SS
+ vus __builtin_vec_ldl (signed long long, vus *);
+ LVXL_V8HI LVXL_V8HI_VUS
+ vus __builtin_vec_ldl (signed long long, unsigned short *);
+ LVXL_V8HI LVXL_V8HI_US
+ vbs __builtin_vec_ldl (signed long long, vbs *);
+ LVXL_V8HI LVXL_V8HI_VBS
+ vp __builtin_vec_ldl (signed long long, vp *);
+ LVXL_V8HI LVXL_V8HI_VP
+ vsi __builtin_vec_ldl (signed long long, vsi *);
+ LVXL_V4SI LVXL_V4SI_VSI
+ vsi __builtin_vec_ldl (signed long long, signed int *);
+ LVXL_V4SI LVXL_V4SI_SI
+ vui __builtin_vec_ldl (signed long long, vui *);
+ LVXL_V4SI LVXL_V4SI_VUI
+ vui __builtin_vec_ldl (signed long long, unsigned int *);
+ LVXL_V4SI LVXL_V4SI_UI
+ vbi __builtin_vec_ldl (signed long long, vbi *);
+ LVXL_V4SI LVXL_V4SI_VBI
+ vsll __builtin_vec_ldl (signed long long, vsll *);
+ LVXL_V2DI LVXL_V2DI_VSLL
+ vsll __builtin_vec_ldl (signed long long, signed long long *);
+ LVXL_V2DI LVXL_V2DI_SLL
+ vull __builtin_vec_ldl (signed long long, vull *);
+ LVXL_V2DI LVXL_V2DI_VULL
+ vull __builtin_vec_ldl (signed long long, unsigned long long *);
+ LVXL_V2DI LVXL_V2DI_ULL
+ vbll __builtin_vec_ldl (signed long long, vbll *);
+ LVXL_V2DI LVXL_V2DI_VBLL
+ vsq __builtin_vec_ldl (signed long long, const vsq *);
+ LVXL_V1TI LVXL_V1TI_VSQ
+ vuq __builtin_vec_ldl (signed long long, const vuq *);
+ LVXL_V1TI LVXL_V1TI_VUQ
+ vsq __builtin_vec_ldl (signed long long, __int128 *);
+ LVXL_V1TI LVXL_V1TI_TI
+ vuq __builtin_vec_ldl (signed long long, unsigned __int128 *);
+ LVXL_V1TI LVXL_V1TI_UTI
+ vf __builtin_vec_ldl (signed long long, vf *);
+ LVXL_V4SF LVXL_V4SF_VF
+ vf __builtin_vec_ldl (signed long long, float *);
+ LVXL_V4SF LVXL_V4SF_F
+ vd __builtin_vec_ldl (signed long long, vd *);
+ LVXL_V2DF LVXL_V2DF_VD
+ vd __builtin_vec_ldl (signed long long, double *);
+ LVXL_V2DF LVXL_V2DF_D
[VEC_LOGE, vec_loge, __builtin_vec_loge]
vf __builtin_vec_loge (vf);
VLOGEFP
+[VEC_LVLX, vec_lvlx, __builtin_vec_lvlx]
+ vbc __builtin_vec_lvlx (signed long long, vbc *);
+ LVLX LVLX_VBC
+ vsc __builtin_vec_lvlx (signed long long, vsc *);
+ LVLX LVLX_VSC
+ vsc __builtin_vec_lvlx (signed long long, signed char *);
+ LVLX LVLX_SC
+ vuc __builtin_vec_lvlx (signed long long, vuc *);
+ LVLX LVLX_VUC
+ vuc __builtin_vec_lvlx (signed long long, unsigned char *);
+ LVLX LVLX_UC
+ vbs __builtin_vec_lvlx (signed long long, vbs *);
+ LVLX LVLX_VBS
+ vss __builtin_vec_lvlx (signed long long, vss *);
+ LVLX LVLX_VSS
+ vss __builtin_vec_lvlx (signed long long, signed short *);
+ LVLX LVLX_SS
+ vus __builtin_vec_lvlx (signed long long, vus *);
+ LVLX LVLX_VUS
+ vus __builtin_vec_lvlx (signed long long, unsigned short *);
+ LVLX LVLX_US
+ vp __builtin_vec_lvlx (signed long long, vp *);
+ LVLX LVLX_VP
+ vbi __builtin_vec_lvlx (signed long long, vbi *);
+ LVLX LVLX_VBI
+ vsi __builtin_vec_lvlx (signed long long, vsi *);
+ LVLX LVLX_VSI
+ vsi __builtin_vec_lvlx (signed long long, signed int *);
+ LVLX LVLX_SI
+ vui __builtin_vec_lvlx (signed long long, vui *);
+ LVLX LVLX_VUI
+ vui __builtin_vec_lvlx (signed long long, unsigned int *);
+ LVLX LVLX_UI
+ vf __builtin_vec_lvlx (signed long long, vf *);
+ LVLX LVLX_VF
+ vf __builtin_vec_lvlx (signed long long, float *);
+ LVLX LVLX_F
+
+[VEC_LVLXL, vec_lvlxl, __builtin_vec_lvlxl]
+ vbc __builtin_vec_lvlxl (signed long long, vbc *);
+ LVLXL LVLXL_VBC
+ vsc __builtin_vec_lvlxl (signed long long, vsc *);
+ LVLXL LVLXL_VSC
+ vsc __builtin_vec_lvlxl (signed long long, signed char *);
+ LVLXL LVLXL_SC
+ vuc __builtin_vec_lvlxl (signed long long, vuc *);
+ LVLXL LVLXL_VUC
+ vuc __builtin_vec_lvlxl (signed long long, unsigned char *);
+ LVLXL LVLXL_UC
+ vbs __builtin_vec_lvlxl (signed long long, vbs *);
+ LVLXL LVLXL_VBS
+ vss __builtin_vec_lvlxl (signed long long, vss *);
+ LVLXL LVLXL_VSS
+ vss __builtin_vec_lvlxl (signed long long, signed short *);
+ LVLXL LVLXL_SS
+ vus __builtin_vec_lvlxl (signed long long, vus *);
+ LVLXL LVLXL_VUS
+ vus __builtin_vec_lvlxl (signed long long, unsigned short *);
+ LVLXL LVLXL_US
+ vp __builtin_vec_lvlxl (signed long long, vp *);
+ LVLXL LVLXL_VP
+ vbi __builtin_vec_lvlxl (signed long long, vbi *);
+ LVLXL LVLXL_VBI
+ vsi __builtin_vec_lvlxl (signed long long, vsi *);
+ LVLXL LVLXL_VSI
+ vsi __builtin_vec_lvlxl (signed long long, signed int *);
+ LVLXL LVLXL_SI
+ vui __builtin_vec_lvlxl (signed long long, vui *);
+ LVLXL LVLXL_VUI
+ vui __builtin_vec_lvlxl (signed long long, unsigned int *);
+ LVLXL LVLXL_UI
+ vf __builtin_vec_lvlxl (signed long long, vf *);
+ LVLXL LVLXL_VF
+ vf __builtin_vec_lvlxl (signed long long, float *);
+ LVLXL LVLXL_F
+
+[VEC_LVRX, vec_lvrx, __builtin_vec_lvrx]
+ vbc __builtin_vec_lvrx (signed long long, vbc *);
+ LVRX LVRX_VBC
+ vsc __builtin_vec_lvrx (signed long long, vsc *);
+ LVRX LVRX_VSC
+ vsc __builtin_vec_lvrx (signed long long, signed char *);
+ LVRX LVRX_SC
+ vuc __builtin_vec_lvrx (signed long long, vuc *);
+ LVRX LVRX_VUC
+ vuc __builtin_vec_lvrx (signed long long, unsigned char *);
+ LVRX LVRX_UC
+ vbs __builtin_vec_lvrx (signed long long, vbs *);
+ LVRX LVRX_VBS
+ vss __builtin_vec_lvrx (signed long long, vss *);
+ LVRX LVRX_VSS
+ vss __builtin_vec_lvrx (signed long long, signed short *);
+ LVRX LVRX_SS
+ vus __builtin_vec_lvrx (signed long long, vus *);
+ LVRX LVRX_VUS
+ vus __builtin_vec_lvrx (signed long long, unsigned short *);
+ LVRX LVRX_US
+ vp __builtin_vec_lvrx (signed long long, vp *);
+ LVRX LVRX_VP
+ vbi __builtin_vec_lvrx (signed long long, vbi *);
+ LVRX LVRX_VBI
+ vsi __builtin_vec_lvrx (signed long long, vsi *);
+ LVRX LVRX_VSI
+ vsi __builtin_vec_lvrx (signed long long, signed int *);
+ LVRX LVRX_SI
+ vui __builtin_vec_lvrx (signed long long, vui *);
+ LVRX LVRX_VUI
+ vui __builtin_vec_lvrx (signed long long, unsigned int *);
+ LVRX LVRX_UI
+ vf __builtin_vec_lvrx (signed long long, vf *);
+ LVRX LVRX_VF
+ vf __builtin_vec_lvrx (signed long long, float *);
+ LVRX LVRX_F
+
+[VEC_LVRXL, vec_lvrxl, __builtin_vec_lvrxl]
+ vbc __builtin_vec_lvrxl (signed long long, vbc *);
+ LVRXL LVRXL_VBC
+ vsc __builtin_vec_lvrxl (signed long long, vsc *);
+ LVRXL LVRXL_VSC
+ vsc __builtin_vec_lvrxl (signed long long, signed char *);
+ LVRXL LVRXL_SC
+ vuc __builtin_vec_lvrxl (signed long long, vuc *);
+ LVRXL LVRXL_VUC
+ vuc __builtin_vec_lvrxl (signed long long, unsigned char *);
+ LVRXL LVRXL_UC
+ vbs __builtin_vec_lvrxl (signed long long, vbs *);
+ LVRXL LVRXL_VBS
+ vss __builtin_vec_lvrxl (signed long long, vss *);
+ LVRXL LVRXL_VSS
+ vss __builtin_vec_lvrxl (signed long long, signed short *);
+ LVRXL LVRXL_SS
+ vus __builtin_vec_lvrxl (signed long long, vus *);
+ LVRXL LVRXL_VUS
+ vus __builtin_vec_lvrxl (signed long long, unsigned short *);
+ LVRXL LVRXL_US
+ vp __builtin_vec_lvrxl (signed long long, vp *);
+ LVRXL LVRXL_VP
+ vbi __builtin_vec_lvrxl (signed long long, vbi *);
+ LVRXL LVRXL_VBI
+ vsi __builtin_vec_lvrxl (signed long long, vsi *);
+ LVRXL LVRXL_VSI
+ vsi __builtin_vec_lvrxl (signed long long, signed int *);
+ LVRXL LVRXL_SI
+ vui __builtin_vec_lvrxl (signed long long, vui *);
+ LVRXL LVRXL_VUI
+ vui __builtin_vec_lvrxl (signed long long, unsigned int *);
+ LVRXL LVRXL_UI
+ vf __builtin_vec_lvrxl (signed long long, vf *);
+ LVRXL LVRXL_VF
+ vf __builtin_vec_lvrxl (signed long long, float *);
+ LVRXL LVRXL_F
+
+[VEC_LVSL, vec_lvsl, __builtin_vec_lvsl]
+ vuc __builtin_vec_lvsl (signed long long, unsigned char *);
+ LVSL LVSL_UC
+ vuc __builtin_vec_lvsl (signed long long, signed char *);
+ LVSL LVSL_SC
+
+[VEC_LVSR, vec_lvsr, __builtin_vec_lvsr]
+ vuc __builtin_vec_lvsr (signed long long, unsigned char *);
+ LVSR LVSR_UC
+ vuc __builtin_vec_lvsr (signed long long, signed char *);
+ LVSR LVSR_SC
+
+[VEC_MAX, vec_max, __builtin_vec_max]
+ vsc __builtin_vec_max (vsc, vsc);
+ VMAXSB
+ vuc __builtin_vec_max (vuc, vuc);
+ VMAXUB
+ vss __builtin_vec_max (vss, vss);
+ VMAXSH
+ vus __builtin_vec_max (vus, vus);
+ VMAXUH
+ vsi __builtin_vec_max (vsi, vsi);
+ VMAXSW
+ vui __builtin_vec_max (vui, vui);
+ VMAXUW
+ vsll __builtin_vec_max (vsll, vsll);
+ VMAXSD
+ vull __builtin_vec_max (vull, vull);
+ VMAXUD
+ vf __builtin_vec_max (vf, vf);
+ XVMAXSP
+ vd __builtin_vec_max (vd, vd);
+ XVMAXDP
+
[VEC_MTVSCR, vec_mtvscr, __builtin_vec_mtvscr]
void __builtin_vec_mtvscr (vbc);
MTVSCR MTVSCR_VBC
^ permalink raw reply [flat|nested] 15+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins3)] rs6000: More progress on the overload table
@ 2020-10-23 21:24 William Schmidt
0 siblings, 0 replies; 15+ messages in thread
From: William Schmidt @ 2020-10-23 21:24 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:0dad168c410dd91b35ff08530d445168a05255c7
commit 0dad168c410dd91b35ff08530d445168a05255c7
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Fri Oct 23 16:23:35 2020 -0500
rs6000: More progress on the overload table
2020-10-23 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Small fixes.
* config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add
deprecation comments.
* config/rs6000/rs6000-overload.def: Add more entries.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 10 +-
gcc/config/rs6000/rs6000-call.c | 56 +++-
gcc/config/rs6000/rs6000-overload.def | 455 +++++++++++++++++++++++++++++++
3 files changed, 515 insertions(+), 6 deletions(-)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index 08f6cdffdf8..a9b152053e0 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -2178,7 +2178,7 @@
const vsq __builtin_altivec_vadduqm (vsq, vsq);
VADDUQM altivec_vadduqm {}
- const vsll __builtin_altivec_vbpermq (vsc, vsc);
+ const vull __builtin_altivec_vbpermq (vuq, vuc);
VBPERMQ altivec_vbpermq {}
const vuc __builtin_altivec_vbpermq2 (vuc, vuc);
@@ -2543,7 +2543,7 @@
VCMPAEW_P vector_ae_v4si_p {pred}
const vsc __builtin_altivec_vcmpneb (vsc, vsc);
- CMPNEB vcmpneb {}
+ VCMPNEB vcmpneb {}
const signed int __builtin_altivec_vcmpneb_p (vsc, vsc);
VCMPNEB_P vector_ne_v16qi_p {pred}
@@ -2558,13 +2558,13 @@
VCMPNEFP_P vector_ne_v4sf_p {pred}
const vss __builtin_altivec_vcmpneh (vss, vss);
- CMPNEH vcmpneh {}
+ VCMPNEH vcmpneh {}
const signed int __builtin_altivec_vcmpneh_p (vss, vss);
VCMPNEH_P vector_ne_v8hi_p {pred}
const vsi __builtin_altivec_vcmpnew (vsi, vsi);
- CMPNEW vcmpnew {}
+ VCMPNEW vcmpnew {}
const signed int __builtin_altivec_vcmpnew_p (vsi, vsi);
VCMPNEW_P vector_ne_v4si_p {pred}
@@ -2662,7 +2662,7 @@
const vd __builtin_vsx_insert_exp_dp (vop, vull);
VIEDP xviexpdp {}
- const vf __builtin_vsx_insert_exp_sp (vop, vull);
+ const vf __builtin_vsx_insert_exp_sp (vop, vui);
VIESP xviexpsp {}
const signed int __builtin_vsx_scalar_cmp_exp_dp_eq (double, double);
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 8789fb5a94c..927ff1a888d 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -4176,23 +4176,25 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTUW_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI },
- /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTUW_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTUW_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTSW_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTSW_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, ALTIVEC_BUILTIN_VCMPGTSW_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_V4SI, RS6000_BTI_V4SI },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, P8V_BUILTIN_VCMPGTUD_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, P8V_BUILTIN_VCMPGTUD_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, P8V_BUILTIN_VCMPGTUD_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, P8V_BUILTIN_VCMPGTSD_P,
RS6000_BTI_INTSI, RS6000_BTI_INTSI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI },
{ ALTIVEC_BUILTIN_VEC_VCMPGT_P, P8V_BUILTIN_VCMPGTSD_P,
@@ -4360,6 +4362,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V16QI_UNS,
RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI,
RS6000_BTI_unsigned_V16QI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 },
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V8HI,
@@ -4368,6 +4371,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 },
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V8HI_UNS,
RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V8HI_UNS,
RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI,
RS6000_BTI_unsigned_V8HI, 0 },
@@ -4377,6 +4381,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V8HI_UNS,
RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI,
RS6000_BTI_unsigned_V8HI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 },
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V4SI,
@@ -4385,6 +4390,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V4SI_UNS,
RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V4SI_UNS,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI,
RS6000_BTI_unsigned_V4SI, 0 },
@@ -4394,6 +4400,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V4SI_UNS,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI,
RS6000_BTI_unsigned_V4SI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V2DI,
@@ -4402,6 +4409,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V2DI_UNS,
RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V2DI_UNS,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI,
RS6000_BTI_unsigned_V2DI, 0 },
@@ -4416,12 +4424,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_EQV, P8V_BUILTIN_EQV_V2DF,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V16QI,
RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V16QI,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V16QI,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V16QI_UNS,
RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI,
RS6000_BTI_unsigned_V16QI, 0 },
@@ -4433,12 +4443,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V16QI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V16QI_UNS,
RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V8HI_UNS,
RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI,
RS6000_BTI_unsigned_V8HI, 0 },
@@ -4450,12 +4462,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V8HI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V8HI_UNS,
RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V4SI_UNS,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI,
RS6000_BTI_unsigned_V4SI, 0 },
@@ -4467,12 +4481,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V4SI_UNS,
RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, 0 },
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V2DI_UNS,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI,
RS6000_BTI_unsigned_V2DI, 0 },
@@ -4489,12 +4505,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_NAND, P8V_BUILTIN_NAND_V2DF,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V16QI,
RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V16QI,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V16QI,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V16QI_UNS,
RS6000_BTI_unsigned_V16QI, RS6000_BTI_bool_V16QI,
RS6000_BTI_unsigned_V16QI, 0 },
@@ -4506,12 +4524,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V16QI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V16QI_UNS,
RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_bool_V8HI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V8HI,
RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V8HI_UNS,
RS6000_BTI_unsigned_V8HI, RS6000_BTI_bool_V8HI,
RS6000_BTI_unsigned_V8HI, 0 },
@@ -4523,12 +4543,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V8HI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V8HI_UNS,
RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V4SI,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V4SI_UNS,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI,
RS6000_BTI_unsigned_V4SI, 0 },
@@ -4540,12 +4562,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V4SI_UNS,
RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, 0 },
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
+ /* Next 2 are deprecated, not in rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V2DI_UNS,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI,
RS6000_BTI_unsigned_V2DI, 0 },
@@ -4562,12 +4586,16 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_ORC, P8V_BUILTIN_ORC_V2DF,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 },
+ /* These are redundant with VEC_ADDC, not included in
+ rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_VADDCUQ, P8V_BUILTIN_VADDCUQ,
RS6000_BTI_V1TI, RS6000_BTI_V1TI, RS6000_BTI_V1TI, 0 },
{ P8V_BUILTIN_VEC_VADDCUQ, P8V_BUILTIN_VADDCUQ,
RS6000_BTI_unsigned_V1TI, RS6000_BTI_unsigned_V1TI,
RS6000_BTI_unsigned_V1TI, 0 },
+ /* These are redundant with VEC_ADD, not included in
+ rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_VADDUDM, P8V_BUILTIN_VADDUDM,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ P8V_BUILTIN_VEC_VADDUDM, P8V_BUILTIN_VADDUDM,
@@ -4626,6 +4654,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P8V_BUILTIN_VEC_VCLZ, P8V_BUILTIN_VCLZD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0, 0 },
+ /* The VEC_VCLZ<length> variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P8V_BUILTIN_VEC_VCLZB, P8V_BUILTIN_VCLZB,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0, 0 },
{ P8V_BUILTIN_VEC_VCLZB, P8V_BUILTIN_VCLZB,
@@ -4651,6 +4681,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9_BUILTIN_DFP_TSTSFI_LT, MISC_BUILTIN_TSTSFI_LT_DD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat64, 0 },
+ /* These individual overloads are deprecated, not included in
+ rs6000-builtin-new.def. */
{ P9_BUILTIN_DFP_TSTSFI_LT_TD, MISC_BUILTIN_TSTSFI_LT_TD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat128, 0 },
{ P9_BUILTIN_DFP_TSTSFI_LT_DD, MISC_BUILTIN_TSTSFI_LT_DD,
@@ -4661,6 +4693,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9_BUILTIN_DFP_TSTSFI_EQ, MISC_BUILTIN_TSTSFI_EQ_DD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat64, 0 },
+ /* These individual overloads are deprecated, not included in
+ rs6000-builtin-new.def. */
{ P9_BUILTIN_DFP_TSTSFI_EQ_TD, MISC_BUILTIN_TSTSFI_EQ_TD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat128, 0 },
{ P9_BUILTIN_DFP_TSTSFI_EQ_DD, MISC_BUILTIN_TSTSFI_EQ_DD,
@@ -4671,6 +4705,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9_BUILTIN_DFP_TSTSFI_GT, MISC_BUILTIN_TSTSFI_GT_DD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat64, 0 },
+ /* These individual overloads are deprecated, not included in
+ rs6000-builtin-new.def. */
{ P9_BUILTIN_DFP_TSTSFI_GT_TD, MISC_BUILTIN_TSTSFI_GT_TD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat128, 0 },
{ P9_BUILTIN_DFP_TSTSFI_GT_DD, MISC_BUILTIN_TSTSFI_GT_DD,
@@ -4681,6 +4717,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9_BUILTIN_DFP_TSTSFI_OV, MISC_BUILTIN_TSTSFI_OV_DD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat64, 0 },
+ /* These individual overloads are deprecated, not included in
+ rs6000-builtin-new.def. */
{ P9_BUILTIN_DFP_TSTSFI_OV_TD, MISC_BUILTIN_TSTSFI_OV_TD,
RS6000_BTI_INTSI, RS6000_BTI_UINTSI, RS6000_BTI_dfloat128, 0 },
{ P9_BUILTIN_DFP_TSTSFI_OV_DD, MISC_BUILTIN_TSTSFI_OV_DD,
@@ -4703,6 +4741,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VCTZ, P9V_BUILTIN_VCTZD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0, 0 },
+ /* The VEC_VCTZ<length> variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VCTZB, P9V_BUILTIN_VCTZB,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0, 0 },
{ P9V_BUILTIN_VEC_VCTZB, P9V_BUILTIN_VCTZB,
@@ -4733,6 +4773,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI,
RS6000_BTI_unsigned_V4SI, 0 },
+ /* The VEC_VADU<length> variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VADUB, P9V_BUILTIN_VADUB,
RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI,
RS6000_BTI_unsigned_V16QI, 0 },
@@ -4750,6 +4792,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VES, P9V_BUILTIN_VESDP,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_V2DF, 0, 0 },
+ /* The VEC_VES* variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VESSP, P9V_BUILTIN_VESSP,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SF, 0, 0 },
{ P9V_BUILTIN_VEC_VESDP, P9V_BUILTIN_VESDP,
@@ -4760,6 +4804,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VEE, P9V_BUILTIN_VEEDP,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_V2DF, 0, 0 },
+ /* The VEC_VEE* variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VEESP, P9V_BUILTIN_VEESP,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SF, 0, 0 },
{ P9V_BUILTIN_VEC_VEEDP, P9V_BUILTIN_VEEDP,
@@ -4770,6 +4816,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VTDC, P9V_BUILTIN_VTDCDP,
RS6000_BTI_bool_V2DI, RS6000_BTI_V2DF, RS6000_BTI_INTSI, 0 },
+ /* The VEC_VTDC* variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VTDCSP, P9V_BUILTIN_VTDCSP,
RS6000_BTI_bool_V4SI, RS6000_BTI_V4SF, RS6000_BTI_INTSI, 0 },
{ P9V_BUILTIN_VEC_VTDCDP, P9V_BUILTIN_VTDCDP,
@@ -4785,6 +4833,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VIE, P9V_BUILTIN_VIEDP,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_unsigned_V2DI, 0 },
+ /* The VEC_VIE* variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VIESP, P9V_BUILTIN_VIESP,
RS6000_BTI_V4SF, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ P9V_BUILTIN_VEC_VIESP, P9V_BUILTIN_VIESP,
@@ -4802,6 +4852,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VSTDC, P9V_BUILTIN_VSTDCQP,
RS6000_BTI_bool_int, RS6000_BTI_ieee128_float, RS6000_BTI_INTSI, 0 },
+ /* The VEC_VSTDC* variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VSTDCSP, P9V_BUILTIN_VSTDCSP,
RS6000_BTI_bool_int, RS6000_BTI_float, RS6000_BTI_INTSI, 0 },
{ P9V_BUILTIN_VEC_VSTDCDP, P9V_BUILTIN_VSTDCDP,
@@ -4816,6 +4868,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VSTDCN, P9V_BUILTIN_VSTDCNQP,
RS6000_BTI_bool_int, RS6000_BTI_ieee128_float, 0, 0 },
+ /* The VEC_VSTDCN* variants are deprecated and not provided in
+ rs6000-builtin-new.def. */
{ P9V_BUILTIN_VEC_VSTDCNSP, P9V_BUILTIN_VSTDCNSP,
RS6000_BTI_bool_int, RS6000_BTI_float, 0, 0 },
{ P9V_BUILTIN_VEC_VSTDCNDP, P9V_BUILTIN_VSTDCNDP,
diff --git a/gcc/config/rs6000/rs6000-overload.def b/gcc/config/rs6000/rs6000-overload.def
index ad50d8add27..9cc8f0382b8 100644
--- a/gcc/config/rs6000/rs6000-overload.def
+++ b/gcc/config/rs6000/rs6000-overload.def
@@ -88,6 +88,14 @@
vd __builtin_vec_abs (vd);
XVABSDP
+[VEC_ABSD, vec_absd, __builtin_vec_vadu]
+ vuc __builtin_vec_vadu (vuc, vuc);
+ VADUB
+ vus __builtin_vec_vadu (vus, vus);
+ VADUH
+ vui __builtin_vec_vadu (vui, vui);
+ VADUW
+
[VEC_ABSS, vec_abss, __builtin_vec_abss]
vsc __builtin_vec_abss (vsc);
ABSS_V16QI
@@ -202,6 +210,14 @@
vui __builtin_vec_avg (vui, vui);
VAVGUW
+[VEC_BPERM, vec_bperm, __builtin_vec_vbperm_api]
+ vull __builtin_vec_vbperm_api (vull, vuc);
+ VBPERMD VBPERMD_VULL
+ vull __builtin_vec_vbperm_api (vuq, vuc);
+ VBPERMD VBPERMD_VUQ
+ vuc __builtin_vec_vbperm_api (vuc, vuc);
+ VBPERMQ2
+
[VEC_CEIL, vec_ceil, __builtin_vec_ceil]
vf __builtin_vec_ceil (vf);
XVRSPIP
@@ -242,6 +258,40 @@
vbll __builtin_vec_cmpeq (vd, vd);
XVCMPEQDP
+; We skip generating a #define because of the C-versus-C++ complexity
+; in altivec.h. Look there for the template-y details.
+[VEC_CMPEQ_P, SKIP, __builtin_vec_vcmpeq_p]
+ signed int __builtin_vec_vcmpeq_p (signed int, vuc, vuc);
+ VCMPEQUB_P VCMPEQUB_PU
+ signed int __builtin_vec_vcmpeq_p (signed int, vsc, vsc);
+ VCMPEQUB_P VCMPEQUB_PS
+ signed int __builtin_vec_vcmpeq_p (signed int, vbc, vbc);
+ VCMPEQUB_P VCMPEQUB_PB
+ signed int __builtin_vec_vcmpeq_p (signed int, vus, vus);
+ VCMPEQUH_P VCMPEQUH_PU
+ signed int __builtin_vec_vcmpeq_p (signed int, vss, vss);
+ VCMPEQUH_P VCMPEQUH_PS
+ signed int __builtin_vec_vcmpeq_p (signed int, vbs, vbs);
+ VCMPEQUH_P VCMPEQUH_PB
+ signed int __builtin_vec_vcmpeq_p (signed int, vp, vp);
+ VCMPEQUH_P VCMPEQUH_PP
+ signed int __builtin_vec_vcmpeq_p (signed int, vui, vui);
+ VCMPEQUW_P VCMPEQUW_PU
+ signed int __builtin_vec_vcmpeq_p (signed int, vsi, vsi);
+ VCMPEQUW_P VCMPEQUW_PS
+ signed int __builtin_vec_vcmpeq_p (signed int, vbi, vbi);
+ VCMPEQUW_P VCMPEQUW_PB
+ signed int __builtin_vec_vcmpeq_p (signed int, vull, vull);
+ VCMPEQUD_P VCMPEQUD_PU
+ signed int __builtin_vec_vcmpeq_p (signed int, vsll, vsll);
+ VCMPEQUD_P VCMPEQUD_PS
+ signed int __builtin_vec_vcmpeq_p (signed int, vbll, vbll);
+ VCMPEQUD_P VCMPEQUD_PB
+ signed int __builtin_vec_vcmpeq_p (signed int, vf, vf);
+ XVCMPEQSP_P
+ signed int __builtin_vec_vcmpeq_p (signed int, vd, vd);
+ XVCMPEQDP_P
+
[VEC_CMPGE, vec_cmpge, __builtin_vec_cmpge]
vbc __builtin_vec_cmpge (vsc, vsc);
CMPGE_16QI CMPGE_16QI_VSC
@@ -264,6 +314,33 @@
vbll __builtin_vec_cmpge (vd, vd);
XVCMPGEDP
+; We skip generating a #define because of the C-versus-C++ complexity
+; in altivec.h. Look there for the template-y details.
+; Also, cmpge is the same as cmpgt for all cases except floating point.
+; There is further code to deal with this special case in
+; altivec_build_resolved_builtin. TODO: Make sure this is still true.
+[VEC_CMPGE_P, SKIP, __builtin_vec_vcmpgt_p]
+ signed int __builtin_vec_vcmpgt_p (signed int, vuc, vuc);
+ VCMPGTUB_P VCMPGTUB_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vsc, vsc);
+ VCMPGTSB_P VCMPGTSB_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vus, vus);
+ VCMPGTUH_P VCMPGTUH_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vss, vss);
+ VCMPGTSH_P VCMPGTSH_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vui, vui);
+ VCMPGTUW_P VCMPGTUW_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vsi, vsi);
+ VCMPGTSW_P VCMPGTSW_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vull, vull);
+ VCMPGTUD_P VCMPGTUD_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vsll, vsll);
+ VCMPGTSD_P VCMPGTSD_PR
+ signed int __builtin_vec_vcmpgt_p (signed int, vf, vf);
+ XVCMPGESP_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vd, vd);
+ XVCMPGEDP_P
+
[VEC_CMPGT, vec_cmpgt, __builtin_vec_cmpgt]
vbc __builtin_vec_cmpgt (vsc, vsc);
VCMPGTSB
@@ -286,12 +363,126 @@
vbll __builtin_vec_cmpgt (vd, vd);
XVCMPGTDP
+; We skip generating a #define because of the C-versus-C++ complexity
+; in altivec.h. Look there for the template-y details.
+[VEC_CMPGT_P, SKIP, __builtin_vec_vcmpgt_p]
+ signed int __builtin_vec_vcmpgt_p (signed int, vuc, vuc);
+ VCMPGTUB_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vsc, vsc);
+ VCMPGTSB_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vus, vus);
+ VCMPGTUH_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vss, vss);
+ VCMPGTSH_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vui, vui);
+ VCMPGTUW_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vsi, vsi);
+ VCMPGTSW_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vull, vull);
+ VCMPGTUD_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vsll, vsll);
+ VCMPGTSD_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vf, vf);
+ XVCMPGTSP_P
+ signed int __builtin_vec_vcmpgt_p (signed int, vd, vd);
+ XVCMPGTDP_P
+
; Note that there is no entry for VEC_CMPLE. VEC_CMPLE is implemented
; using VEC_CMPGE with reversed arguments in altivec.h.
; Note that there is no entry for VEC_CMPLT. VEC_CMPLT is implemented
; using VEC_CMPGT with reversed arguments in altivec.h.
+[VEC_CMPNE, vec_cmpne, __builtin_vec_cmpne]
+ vbc __builtin_vec_cmpne (vbc, vbc);
+ VCMPNEB VCMPNEB_VBC
+ vbc __builtin_vec_cmpne (vsc, vsc);
+ VCMPNEB VCMPNEB_VSC
+ vbc __builtin_vec_cmpne (vuc, vuc);
+ VCMPNEB VCMPNEB_VUC
+ vbs __builtin_vec_cmpne (vbs, vbs);
+ VCMPNEH VCMPNEH_VBS
+ vbs __builtin_vec_cmpne (vss, vss);
+ VCMPNEH VCMPNEH_VSS
+ vbs __builtin_vec_cmpne (vus, vus);
+ VCMPNEH VCMPNEH_VUS
+ vbi __builtin_vec_cmpne (vbi, vbi);
+ VCMPNEW VCMPNEW_VBI
+ vbi __builtin_vec_cmpne (vsi, vsi);
+ VCMPNEW VCMPNEW_VSI
+ vbi __builtin_vec_cmpne (vui, vui);
+ VCMPNEW VCMPNEW_VUI
+
+; We skip generating a #define because of the C-versus-C++ complexity
+; in altivec.h. Look there for the template-y details.
+[VEC_CMPNE_P, SKIP, __builtin_vec_vcmpne_p]
+ signed int __builtin_vec_vcmpne_p (vsc, vsc);
+ VCMPNEB_P VCMPNEB_VSC_P
+ signed int __builtin_vec_vcmpne_p (vuc, vuc);
+ VCMPNEB_P VCMPNEB_VUC_P
+ signed int __builtin_vec_vcmpne_p (vbc, vbc);
+ VCMPNEB_P VCMPNEB_VBC_P
+ signed int __builtin_vec_vcmpne_p (vss, vss);
+ VCMPNEH_P VCMPNEH_VSS_P
+ signed int __builtin_vec_vcmpne_p (vus, vus);
+ VCMPNEH_P VCMPNEH_VUS_P
+ signed int __builtin_vec_vcmpne_p (vbs, vbs);
+ VCMPNEH_P VCMPNEH_VBS_P
+ signed int __builtin_vec_vcmpne_p (vp, vp);
+ VCMPNEH_P VCMPNEH_VP_P
+ signed int __builtin_vec_vcmpne_p (vsi, vsi);
+ VCMPNEW_P VCMPNEW_VSI_P
+ signed int __builtin_vec_vcmpne_p (vui, vui);
+ VCMPNEW_P VCMPNEW_VUI_P
+ signed int __builtin_vec_vcmpne_p (vbi, vbi);
+ VCMPNEW_P VCMPNEW_VBI_P
+ signed int __builtin_vec_vcmpne_p (vsll, vsll);
+ VCMPNED_P VCMPNED_VSLL_P
+ signed int __builtin_vec_vcmpne_p (vull, vull);
+ VCMPNED_P VCMPNED_VULL_P
+ signed int __builtin_vec_vcmpne_p (vbll, vbll);
+ VCMPNED_P VCMPNED_VBLL_P
+ signed int __builtin_vec_vcmpne_p (vf, vf);
+ VCMPNEFP_P
+ signed int __builtin_vec_vcmpne_p (vd, vd);
+ VCMPNEDP_P
+
+[VEC_CNTLZ, vec_cntlz, __builtin_vec_vclz]
+ vsc __builtin_vec_vclz (vsc);
+ VCLZB VCLZB_S
+ vuc __builtin_vec_vclz (vuc);
+ VCLZB VCLZB_U
+ vss __builtin_vec_vclz (vss);
+ VCLZH VCLZH_S
+ vus __builtin_vec_vclz (vus);
+ VCLZH VCLZH_U
+ vsi __builtin_vec_vclz (vsi);
+ VCLZW VCLZW_S
+ vui __builtin_vec_vclz (vui);
+ VCLZW VCLZW_U
+ vsll __builtin_vec_vclz (vsll);
+ VCLZD VCLZD_S
+ vull __builtin_vec_vclz (vull);
+ VCLZD VCLZD_U
+
+[VEC_CNTTZ, vec_cnttz, __builtin_vec_vctz]
+ vsc __builtin_vec_vctz (vsc);
+ VCTZB VCTZB_S
+ vuc __builtin_vec_vctz (vuc);
+ VCTZB VCTZB_U
+ vss __builtin_vec_vctz (vss);
+ VCTZH VCTZH_S
+ vus __builtin_vec_vctz (vus);
+ VCTZH VCTZH_U
+ vsi __builtin_vec_vctz (vsi);
+ VCTZW VCTZW_S
+ vui __builtin_vec_vctz (vui);
+ VCTZW VCTZW_U
+ vsll __builtin_vec_vctz (vsll);
+ VCTZD VCTZD_S
+ vull __builtin_vec_vctz (vull);
+ VCTZD VCTZD_U
+
[VEC_CONVERT_4F32_8I16, SKIP, __builtin_vec_convert_4f32_8i16]
vus __builtin_vec_convert_4f32_8i16 (vf, vf);
CONVERT_4F32_8I16
@@ -544,6 +735,36 @@
void __builtin_vec_dstt (vf *, const int, const int);
DSTT DSTT_VF
+[VEC_EQV, vec_eqv, __builtin_vec_eqv]
+ vsc __builtin_vec_eqv (vsc, vsc);
+ EQV_V16QI
+ vuc __builtin_vec_eqv (vuc, vuc);
+ EQV_V16QI_UNS EQV_V16QI_VUC
+ vbc __builtin_vec_eqv (vbc, vbc);
+ EQV_V16QI_UNS EQV_V16QI_VBC
+ vss __builtin_vec_eqv (vss, vss);
+ EQV_V8HI
+ vus __builtin_vec_eqv (vus, vus);
+ EQV_V8HI_UNS EQV_V8HI_VUS
+ vbs __builtin_vec_eqv (vbs, vbs);
+ EQV_V8HI_UNS EQV_V8HI_VBS
+ vsi __builtin_vec_eqv (vsi, vsi);
+ EQV_V4SI
+ vui __builtin_vec_eqv (vui, vui);
+ EQV_V4SI_UNS EQV_V4SI_VUI
+ vbi __builtin_vec_eqv (vbi, vbi);
+ EQV_V4SI_UNS EQV_V4SI_VBI
+ vsll __builtin_vec_eqv (vsll, vsll);
+ EQV_V2DI
+ vull __builtin_vec_eqv (vull, vull);
+ EQV_V2DI_UNS EQV_V2DI_VULL
+ vbll __builtin_vec_eqv (vbll, vbll);
+ EQV_V2DI_UNS EQV_V2DI_VBLL
+ vf __builtin_vec_eqv (vf, vf);
+ EQV_V4SF
+ vd __builtin_vec_eqv (vd, vd);
+ EQV_V2DF
+
[VEC_EXPTE, vec_expte, __builtin_vec_expte]
vf __builtin_vec_expte (vf);
VEXPTEFP
@@ -944,6 +1165,32 @@
vuc __builtin_vec_lvsr (signed long long, signed char *);
LVSR LVSR_SC
+[VEC_LXVL, vec_xl_len, __builtin_vec_lxvl]
+ vsc __builtin_vec_lxvl (signed char *, unsigned long long);
+ LXVL LXVL_VSC
+ vuc __builtin_vec_lxvl (unsigned char *, unsigned long long);
+ LXVL LXVL_VUC
+ vss __builtin_vec_lxvl (signed short *, unsigned long long);
+ LXVL LXVL_VSS
+ vus __builtin_vec_lxvl (unsigned short *, unsigned long long);
+ LXVL LXVL_VUS
+ vsi __builtin_vec_lxvl (signed int *, unsigned long long);
+ LXVL LXVL_VSI
+ vui __builtin_vec_lxvl (unsigned int *, unsigned long long);
+ LXVL LXVL_VUI
+ vsll __builtin_vec_lxvl (signed long long *, unsigned long long);
+ LXVL LXVL_VSLL
+ vull __builtin_vec_lxvl (unsigned long long *, unsigned long long);
+ LXVL LXVL_VULL
+ vsq __builtin_vec_lxvl (signed __int128 *, unsigned long long);
+ LXVL LXVL_VSQ
+ vuq __builtin_vec_lxvl (unsigned __int128 *, unsigned long long);
+ LXVL LXVL_VUQ
+ vf __builtin_vec_lxvl (float *, unsigned long long);
+ LXVL LXVL_VF
+ vd __builtin_vec_lxvl (double *, unsigned long long);
+ LXVL LXVL_VD
+
[VEC_MADD, vec_madd, __builtin_vec_madd]
vss __builtin_vec_madd (vss, vss, vss);
VMLADDUHM VMLADDUHM_VSS
@@ -1174,6 +1421,36 @@
vd __builtin_vec_nabs (vd);
NABS_V2DF
+[VEC_NAND, vec_nand, __builtin_vec_nand]
+ vsc __builtin_vec_nand (vsc, vsc);
+ NAND_V16QI
+ vuc __builtin_vec_nand (vuc, vuc);
+ NAND_V16QI_UNS NAND_VUC
+ vbc __builtin_vec_nand (vbc, vbc);
+ NAND_V16QI_UNS NAND_VBC
+ vss __builtin_vec_nand (vss, vss);
+ NAND_V8HI
+ vus __builtin_vec_nand (vus, vus);
+ NAND_V8HI_UNS NAND_VUS
+ vbs __builtin_vec_nand (vbs, vbs);
+ NAND_V8HI_UNS NAND_VBS
+ vsi __builtin_vec_nand (vsi, vsi);
+ NAND_V4SI
+ vui __builtin_vec_nand (vui, vui);
+ NAND_V4SI_UNS NAND_VUI
+ vbi __builtin_vec_nand (vbi, vbi);
+ NAND_V4SI_UNS NAND_VBI
+ vsll __builtin_vec_nand (vsll, vsll);
+ NAND_V2DI
+ vull __builtin_vec_nand (vull, vull);
+ NAND_V2DI_UNS NAND_VULL
+ vbll __builtin_vec_nand (vbll, vbll);
+ NAND_V2DI_UNS NAND_VBLL
+ vf __builtin_vec_nand (vf, vf);
+ NAND_V4SF
+ vd __builtin_vec_nand (vd, vd);
+ NAND_V2DF
+
[VEC_NEARBYINT, vec_nearbyint, __builtin_vec_nearbyint]
vf __builtin_vec_nearbyint (vf);
XVRSPI XVRSPI_NBI
@@ -1266,6 +1543,36 @@
vd __builtin_vec_or (vd, vd);
VOR_V2DF
+[VEC_ORC, vec_orc, __builtin_vec_orc]
+ vsc __builtin_vec_orc (vsc, vsc);
+ ORC_V16QI
+ vuc __builtin_vec_orc (vuc, vuc);
+ ORC_V16QI_UNS ORC_VUC
+ vbc __builtin_vec_orc (vbc, vbc);
+ ORC_V16QI_UNS ORC_VBC
+ vss __builtin_vec_orc (vss, vss);
+ ORC_V8HI
+ vus __builtin_vec_orc (vus, vus);
+ ORC_V8HI_UNS ORC_VUS
+ vbs __builtin_vec_orc (vbs, vbs);
+ ORC_V8HI_UNS ORC_VBS
+ vsi __builtin_vec_orc (vsi, vsi);
+ ORC_V4SI
+ vui __builtin_vec_orc (vui, vui);
+ ORC_V4SI_UNS ORC_VUI
+ vbi __builtin_vec_orc (vbi, vbi);
+ ORC_V4SI_UNS ORC_VBI
+ vsll __builtin_vec_orc (vsll, vsll);
+ ORC_V2DI
+ vull __builtin_vec_orc (vull, vull);
+ ORC_V2DI_UNS ORC_VULL
+ vbll __builtin_vec_orc (vbll, vbll);
+ ORC_V2DI_UNS ORC_VBLL
+ vf __builtin_vec_orc (vf, vf);
+ ORC_V4SF
+ vd __builtin_vec_orc (vd, vd);
+ ORC_V2DF
+
[VEC_PACK, vec_pack, __builtin_vec_pack]
vsc __builtin_vec_pack (vss, vss);
VPKUHUM VPKUHUM_VSS
@@ -2057,6 +2364,32 @@
void __builtin_vec_stvrxl (vf, signed long long, float *);
STVRXL STVRXL_F
+[VEC_STXVL, vec_xst_len, __builtin_vec_stxvl]
+ void __builtin_vec_stxvl (vsc, signed char *, unsigned long long);
+ STXVL STXVL_VSC
+ void __builtin_vec_stxvl (vuc, unsigned char *, unsigned long long);
+ STXVL STXVL_VUC
+ void __builtin_vec_stxvl (vss, signed short *, unsigned long long);
+ STXVL STXVL_VSS
+ void __builtin_vec_stxvl (vus, unsigned short *, unsigned long long);
+ STXVL STXVL_VUS
+ void __builtin_vec_stxvl (vsi, signed int *, unsigned long long);
+ STXVL STXVL_VSI
+ void __builtin_vec_stxvl (vui, unsigned int *, unsigned long long);
+ STXVL STXVL_VUI
+ void __builtin_vec_stxvl (vsll, signed long long *, unsigned long long);
+ STXVL STXVL_VSLL
+ void __builtin_vec_stxvl (vull, unsigned long long *, unsigned long long);
+ STXVL STXVL_VULL
+ void __builtin_vec_stxvl (vsq, signed __int128 *, unsigned long long);
+ STXVL STXVL_VSQ
+ void __builtin_vec_stxvl (vuq, unsigned __int128 *, unsigned long long);
+ STXVL STXVL_VUQ
+ void __builtin_vec_stxvl (vf, float *, unsigned long long);
+ STXVL STXVL_VF
+ void __builtin_vec_stxvl (vd, double *, unsigned long long);
+ STXVL STXVL_VD
+
[VEC_SUB, vec_sub, __builtin_vec_sub]
vsc __builtin_vec_sub (vsc, vsc);
VSUBUBM VSUBUBM_VSC
@@ -2129,6 +2462,30 @@
vd __builtin_vec_trunc (vd);
XVRDPIZ
+[VEC_TSTSFI_GT, SKIP, __builtin_dfp_dtstsfi_gt]
+ signed int __builtin_dfp_dtstsfi_gt (unsigned int, _Decimal64);
+ TSTSFI_GT_DD
+ signed int __builtin_dfp_dtstsfi_gt (unsigned int, _Decimal128);
+ TSTSFI_GT_TD
+
+[VEC_TSTSFI_EQ, SKIP, __builtin_dfp_dtstsfi_eq]
+ signed int __builtin_dfp_dtstsfi_eq (unsigned int, _Decimal64);
+ TSTSFI_EQ_DD
+ signed int __builtin_dfp_dtstsfi_eq (unsigned int, _Decimal128);
+ TSTSFI_EQ_TD
+
+[VEC_TSTSFI_LT, SKIP, __builtin_dfp_dtstsfi_lt]
+ signed int __builtin_dfp_dtstsfi_lt (unsigned int, _Decimal64);
+ TSTSFI_LT_DD
+ signed int __builtin_dfp_dtstsfi_lt (unsigned int, _Decimal128);
+ TSTSFI_LT_TD
+
+[VEC_TSTSFI_OV, SKIP, __builtin_dfp_dtstsfi_ov]
+ signed int __builtin_dfp_dtstsfi_ov (unsigned int, _Decimal64);
+ TSTSFI_OV_DD
+ signed int __builtin_dfp_dtstsfi_ov (unsigned int, _Decimal128);
+ TSTSFI_OV_TD
+
[VEC_UNPACKH, vec_unpackh, __builtin_vec_unpackh]
vss __builtin_vec_unpackh (vsc);
VUPKHSB VUPKHSB_VSC
@@ -2165,6 +2522,96 @@
vd __builtin_vec_unpackl (vf);
DOUBLEL_V4SF VUPKLF
+[VEC_VEE, vec_extract_exp, __builtin_vec_extract_exp]
+ vui __builtin_vec_extract_exp (vf);
+ VEESP
+ vull __builtin_vec_extract_exp (vd);
+ VEEDP
+
+[VEC_VES, vec_extract_sig, __builtin_vec_extract_sig]
+ vui __builtin_vec_extract_sig (vf);
+ VESSP
+ vull __builtin_vec_extract_sig (vd);
+ VESDP
+
+[VEC_VIE, vec_insert_exp, __builtin_vec_insert_exp]
+ vf __builtin_vec_insert_exp (vf, vui);
+ VIESP VIESP_VF
+ vf __builtin_vec_insert_exp (vui, vui);
+ VIESP VIESP_VUI
+ vd __builtin_vec_insert_exp (vd, vull);
+ VIEDP VIEDP_VD
+ vd __builtin_vec_insert_exp (vull, vull);
+ VIEDP VIEDP_VULL
+
+[VEC_VSCEEQ, scalar_cmp_exp_eq, __builtin_vec_scalar_cmp_exp_eq]
+ signed int __builtin_vec_scalar_cmp_exp_eq (double, double);
+ VSCEDPEQ
+ signed int __builtin_vec_scalar_cmp_exp_eq (_Float128, _Float128);
+ VSCEQPEQ
+
+[VEC_VSCEGT, scalar_cmp_exp_gt, __builtin_vec_scalar_cmp_exp_gt]
+ signed int __builtin_vec_scalar_cmp_exp_gt (double, double);
+ VSCEDPGT
+ signed int __builtin_vec_scalar_cmp_exp_gt (_Float128, _Float128);
+ VSCEQPGT
+
+[VEC_VSCELT, scalar_cmp_exp_lt, __builtin_vec_scalar_cmp_exp_lt]
+ signed int __builtin_vec_scalar_cmp_exp_lt (double, double);
+ VSCEDPLT
+ signed int __builtin_vec_scalar_cmp_exp_lt (_Float128, _Float128);
+ VSCEQPLT
+
+[VEC_VSCEUO, scalar_cmp_exp_unordered, __builtin_vec_scalar_cmp_exp_unordered]
+ signed int __builtin_vec_scalar_cmp_exp_unordered (double, double);
+ VSCEDPUO
+ signed int __builtin_vec_scalar_cmp_exp_unordered (_Float128, _Float128);
+ VSCEQPUO
+
+[VEC_VSEE, scalar_extract_exp, __builtin_vec_scalar_extract_exp]
+ unsigned int __builtin_vec_scalar_extract_exp (double);
+ VSEEDP
+ unsigned int __builtin_vec_scalar_extract_exp (_Float128);
+ VSEEQP
+
+[VEC_VSES, scalar_extract_sig, __builtin_vec_scalar_extract_sig]
+ unsigned int __builtin_vec_scalar_extract_sig (double);
+ VSESDP
+ unsigned int __builtin_vec_scalar_extract_sig (_Float128);
+ VSESQP
+
+[VEC_VSIE, scalar_insert_exp, __builtin_vec_scalar_insert_exp]
+ double __builtin_vec_scalar_insert_exp (unsigned int, unsigned int);
+ VSIEDP VSIEDP_UI
+ double __builtin_vec_scalar_insert_exp (double, unsigned int);
+ VSIEDP VSIEDP_D
+ _Float128 __builtin_vec_scalar_insert_exp (unsigned long long, unsigned long long);
+ VSIEQP VSIEQP_ULL
+ _Float128 __builtin_vec_scalar_insert_exp (_Float128, unsigned long long);
+ VSIEQP VSIEQP_F128
+
+[VEC_VSTDC, scalar_test_data_class, __builtin_vec_scalar_test_data_class]
+ bool __builtin_vec_scalar_test_data_class (float, signed int);
+ VSTDCSP
+ bool __builtin_vec_scalar_test_data_class (double, signed int);
+ VSTDCDP
+ bool __builtin_vec_scalar_test_data_class (_Float128, signed int);
+ VSTDCQP
+
+[VEC_VSTDCN, scalar_test_neg, __builtin_vec_scalar_test_neg]
+ bool __builtin_vec_scalar_test_neg (float);
+ VSTDCNSP
+ bool __builtin_vec_scalar_test_neg (double);
+ VSTDCNDP
+ bool __builtin_vec_scalar_test_neg (_Float128);
+ VSTDCNQP
+
+[VEC_VTDC, vec_test_data_class, __builtin_vec_test_data_class]
+ vbi __builtin_vec_test_data_class (vf, signed int);
+ VTDCSP
+ vbll __builtin_vec_test_data_class (vd, signed int);
+ VTDCDP
+
[VEC_XL, vec_xl, __builtin_vec_vsx_ld]
vsc __builtin_vec_vsx_ld (signed long long, vsc *);
LXVW4X_V4SI LXVW4X_VSC
@@ -2259,6 +2706,10 @@
vd __builtin_vec_xl_be (signed long long, double *);
LD_ELEMREV_V2DF LD_ELEMREV_DD
+[VEC_XL_LEN_R, vec_xl_len_r, __builtin_vec_xl_len_r]
+ vuc __builtin_vsx_xl_len_r (unsigned char *, unsigned long long);
+ XL_LEN_R
+
[VEC_XOR, vec_xor, __builtin_vec_xor]
vsc __builtin_vec_xor (vsc, vsc);
VXOR_V16QI
@@ -2417,6 +2868,10 @@
void __builtin_vec_xst_be (vd, signed long long, double *);
STXVD2X_V2DF STXVD2X_D_BE
+[VEC_XST_LEN_R, vec_xst_len_r, __builtin_vec_xst_len_r]
+ void __builtin_vsx_xst_len_r (vuc, unsigned char *, unsigned long long);
+ XST_LEN_R
+
[VEC_XXPERMDI, vec_xxpermdi, __builtin_vsx_xxpermdi]
vsc __builtin_vsx_xxpermdi (vsc, vsc, const int);
XXPERMDI_16QI XXPERMDI_VSC
^ permalink raw reply [flat|nested] 15+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins3)] rs6000: More progress on the overload table
@ 2020-10-21 14:03 William Schmidt
0 siblings, 0 replies; 15+ messages in thread
From: William Schmidt @ 2020-10-21 14:03 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:3956f86bb8d06dd7fad6150a1f4ec4567ae68e13
commit 3956f86bb8d06dd7fad6150a1f4ec4567ae68e13
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Wed Oct 21 09:02:59 2020 -0500
rs6000: More progress on the overload table
2020-10-21 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Small fixes.
* config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add
deprecation comments.
* config/rs6000/rs6000-overload.def: Add more entries.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 14 +-
gcc/config/rs6000/rs6000-call.c | 13 +-
gcc/config/rs6000/rs6000-overload.def | 1043 ++++++++++++++++++++++++++++++
3 files changed, 1062 insertions(+), 8 deletions(-)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index d6a93e6b279..08f6cdffdf8 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -361,7 +361,7 @@
STVEBX altivec_stvebx {stvec}
void __builtin_altivec_stvehx (vss, signed long long, void *);
- STVEHX_VSS altivec_stvehx {stvec}
+ STVEHX altivec_stvehx {stvec}
void __builtin_altivec_stvewx (vsi, signed long long, void *);
STVEWX altivec_stvewx {stvec}
@@ -1950,22 +1950,22 @@
const vus __builtin_vsx_xxsel_8hi_uns (vus, vus, vus);
XXSEL_8HI_UNS vector_select_v8hi_uns {}
- const vsc __builtin_vsx_xxsldwi_16qi (vsc, vsc, const int<5>);
+ const vsc __builtin_vsx_xxsldwi_16qi (vsc, vsc, const int<2>);
XXSLDWI_16QI vsx_xxsldwi_v16qi {}
- const vd __builtin_vsx_xxsldwi_2df (vd, vd, const int<5>);
+ const vd __builtin_vsx_xxsldwi_2df (vd, vd, const int<2>);
XXSLDWI_2DF vsx_xxsldwi_v2df {}
- const vsll __builtin_vsx_xxsldwi_2di (vsll, vsll, const int<5>);
+ const vsll __builtin_vsx_xxsldwi_2di (vsll, vsll, const int<2>);
XXSLDWI_2DI vsx_xxsldwi_v2di {}
- const vf __builtin_vsx_xxsldwi_4sf (vf, vf, const int<5>);
+ const vf __builtin_vsx_xxsldwi_4sf (vf, vf, const int<2>);
XXSLDWI_4SF vsx_xxsldwi_v4sf {}
- const vsi __builtin_vsx_xxsldwi_4si (vsi, vsi, const int<5>);
+ const vsi __builtin_vsx_xxsldwi_4si (vsi, vsi, const int<2>);
XXSLDWI_4SI vsx_xxsldwi_v4si {}
- const vss __builtin_vsx_xxsldwi_8hi (vss, vss, const int<5>);
+ const vss __builtin_vsx_xxsldwi_8hi (vss, vss, const int<2>);
XXSLDWI_8HI vsx_xxsldwi_v8hi {}
const vd __builtin_vsx_xxspltd_2df (vd, const int<1>);
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 0b621ce1498..8789fb5a94c 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -2807,6 +2807,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_SUBS, ALTIVEC_BUILTIN_VSUBSWS,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSUB* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSUBSWS, ALTIVEC_BUILTIN_VSUBSWS,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VSUBSWS, ALTIVEC_BUILTIN_VSUBSWS,
@@ -2861,6 +2863,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SI, RS6000_BTI_V16QI, RS6000_BTI_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_SUM4S, ALTIVEC_BUILTIN_VSUM4SHS,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V4SI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSUM4* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSUM4SHS, ALTIVEC_BUILTIN_VSUM4SHS,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VSUM4SBS, ALTIVEC_BUILTIN_VSUM4SBS,
@@ -3265,6 +3269,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ ALTIVEC_BUILTIN_VEC_MSUM, ALTIVEC_BUILTIN_VMSUMUDM,
RS6000_BTI_unsigned_V1TI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V1TI },
+ /* All ALTIVEC_BUILTIN_VEC_VMSUM* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMSUMSHM, ALTIVEC_BUILTIN_VMSUMSHM,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V4SI },
{ ALTIVEC_BUILTIN_VEC_VMSUMUHM, ALTIVEC_BUILTIN_VMSUMUHM,
@@ -3277,6 +3283,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI },
{ ALTIVEC_BUILTIN_VEC_MSUMS, ALTIVEC_BUILTIN_VMSUMSHS,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V4SI },
+ /* All ALTIVEC_BUILTIN_VEC_VMSUM* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMSUMSHS, ALTIVEC_BUILTIN_VMSUMSHS,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V4SI },
{ ALTIVEC_BUILTIN_VEC_VMSUMUHS, ALTIVEC_BUILTIN_VMSUMUHS,
@@ -3316,12 +3324,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_unsigned_V16QI },
{ ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI },
+ /* Next 1 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI,
RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI },
{ ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI,
RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI },
{ ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI,
RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI },
+ /* Next 1 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI,
RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI },
@@ -3484,7 +3494,6 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI,
RS6000_BTI_void, RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI,
~RS6000_BTI_long_long },
- /* Next 1 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI,
RS6000_BTI_void, RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI,
~RS6000_BTI_unsigned_long_long },
@@ -3566,6 +3575,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI },
{ ALTIVEC_BUILTIN_VEC_STE, ALTIVEC_BUILTIN_STVEWX,
RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI },
+ /* All ALTIVEC_BUILTIN_VEC_STVE* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_STVEWX, ALTIVEC_BUILTIN_STVEWX,
RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float },
{ ALTIVEC_BUILTIN_VEC_STVEWX, ALTIVEC_BUILTIN_STVEWX,
diff --git a/gcc/config/rs6000/rs6000-overload.def b/gcc/config/rs6000/rs6000-overload.def
index 33e12121b45..ad50d8add27 100644
--- a/gcc/config/rs6000/rs6000-overload.def
+++ b/gcc/config/rs6000/rs6000-overload.def
@@ -376,6 +376,174 @@
vd __builtin_vec_doubleo (vf);
DOUBLEO_V4SF
+[VEC_DST, vec_dst, __builtin_vec_dst]
+ void __builtin_vec_dst (unsigned char *, const int, const int);
+ DST DST_UC
+ void __builtin_vec_dst (signed char *, const int, const int);
+ DST DST_SC
+ void __builtin_vec_dst (unsigned short *, const int, const int);
+ DST DST_US
+ void __builtin_vec_dst (signed short *, const int, const int);
+ DST DST_SS
+ void __builtin_vec_dst (unsigned int *, const int, const int);
+ DST DST_UI
+ void __builtin_vec_dst (signed int *, const int, const int);
+ DST DST_SI
+ void __builtin_vec_dst (unsigned long long *, const int, const int);
+ DST DST_ULL
+ void __builtin_vec_dst (signed long long *, const int, const int);
+ DST DST_SLL
+ void __builtin_vec_dst (float *, const int, const int);
+ DST DST_F
+ void __builtin_vec_dst (vuc *, const int, const int);
+ DST DST_VUC
+ void __builtin_vec_dst (vsc *, const int, const int);
+ DST DST_VSC
+ void __builtin_vec_dst (vbc *, const int, const int);
+ DST DST_VBC
+ void __builtin_vec_dst (vus *, const int, const int);
+ DST DST_VUS
+ void __builtin_vec_dst (vss *, const int, const int);
+ DST DST_VSS
+ void __builtin_vec_dst (vbs *, const int, const int);
+ DST DST_VBS
+ void __builtin_vec_dst (vp *, const int, const int);
+ DST DST_VP
+ void __builtin_vec_dst (vui *, const int, const int);
+ DST DST_VUI
+ void __builtin_vec_dst (vsi *, const int, const int);
+ DST DST_VSI
+ void __builtin_vec_dst (vbi *, const int, const int);
+ DST DST_VBI
+ void __builtin_vec_dst (vf *, const int, const int);
+ DST DST_VF
+
+[VEC_DSTST, vec_dstst, __builtin_vec_dstst]
+ void __builtin_vec_dstst (unsigned char *, const int, const int);
+ DSTST DSTST_UC
+ void __builtin_vec_dstst (signed char *, const int, const int);
+ DSTST DSTST_SC
+ void __builtin_vec_dstst (unsigned short *, const int, const int);
+ DSTST DSTST_US
+ void __builtin_vec_dstst (signed short *, const int, const int);
+ DSTST DSTST_SS
+ void __builtin_vec_dstst (unsigned int *, const int, const int);
+ DSTST DSTST_UI
+ void __builtin_vec_dstst (signed int *, const int, const int);
+ DSTST DSTST_SI
+ void __builtin_vec_dstst (unsigned long long *, const int, const int);
+ DSTST DSTST_ULL
+ void __builtin_vec_dstst (signed long long *, const int, const int);
+ DSTST DSTST_SLL
+ void __builtin_vec_dstst (float *, const int, const int);
+ DSTST DSTST_F
+ void __builtin_vec_dstst (vuc *, const int, const int);
+ DSTST DSTST_VUC
+ void __builtin_vec_dstst (vsc *, const int, const int);
+ DSTST DSTST_VSC
+ void __builtin_vec_dstst (vbc *, const int, const int);
+ DSTST DSTST_VBC
+ void __builtin_vec_dstst (vus *, const int, const int);
+ DSTST DSTST_VUS
+ void __builtin_vec_dstst (vss *, const int, const int);
+ DSTST DSTST_VSS
+ void __builtin_vec_dstst (vbs *, const int, const int);
+ DSTST DSTST_VBS
+ void __builtin_vec_dstst (vp *, const int, const int);
+ DSTST DSTST_VP
+ void __builtin_vec_dstst (vui *, const int, const int);
+ DSTST DSTST_VUI
+ void __builtin_vec_dstst (vsi *, const int, const int);
+ DSTST DSTST_VSI
+ void __builtin_vec_dstst (vbi *, const int, const int);
+ DSTST DSTST_VBI
+ void __builtin_vec_dstst (vf *, const int, const int);
+ DSTST DSTST_VF
+
+[VEC_DSTSTT, vec_dststt, __builtin_vec_dststt]
+ void __builtin_vec_dststt (unsigned char *, const int, const int);
+ DSTSTT DSTSTT_UC
+ void __builtin_vec_dststt (signed char *, const int, const int);
+ DSTSTT DSTSTT_SC
+ void __builtin_vec_dststt (unsigned short *, const int, const int);
+ DSTSTT DSTSTT_US
+ void __builtin_vec_dststt (signed short *, const int, const int);
+ DSTSTT DSTSTT_SS
+ void __builtin_vec_dststt (unsigned int *, const int, const int);
+ DSTSTT DSTSTT_UI
+ void __builtin_vec_dststt (signed int *, const int, const int);
+ DSTSTT DSTSTT_SI
+ void __builtin_vec_dststt (unsigned long long *, const int, const int);
+ DSTSTT DSTSTT_ULL
+ void __builtin_vec_dststt (signed long long *, const int, const int);
+ DSTSTT DSTSTT_SLL
+ void __builtin_vec_dststt (float *, const int, const int);
+ DSTSTT DSTSTT_F
+ void __builtin_vec_dststt (vuc *, const int, const int);
+ DSTSTT DSTSTT_VUC
+ void __builtin_vec_dststt (vsc *, const int, const int);
+ DSTSTT DSTSTT_VSC
+ void __builtin_vec_dststt (vbc *, const int, const int);
+ DSTSTT DSTSTT_VBC
+ void __builtin_vec_dststt (vus *, const int, const int);
+ DSTSTT DSTSTT_VUS
+ void __builtin_vec_dststt (vss *, const int, const int);
+ DSTSTT DSTSTT_VSS
+ void __builtin_vec_dststt (vbs *, const int, const int);
+ DSTSTT DSTSTT_VBS
+ void __builtin_vec_dststt (vp *, const int, const int);
+ DSTSTT DSTSTT_VP
+ void __builtin_vec_dststt (vui *, const int, const int);
+ DSTSTT DSTSTT_VUI
+ void __builtin_vec_dststt (vsi *, const int, const int);
+ DSTSTT DSTSTT_VSI
+ void __builtin_vec_dststt (vbi *, const int, const int);
+ DSTSTT DSTSTT_VBI
+ void __builtin_vec_dststt (vf *, const int, const int);
+ DSTSTT DSTSTT_VF
+
+[VEC_DSTT, vec_dstt, __builtin_vec_dstt]
+ void __builtin_vec_dstt (unsigned char *, const int, const int);
+ DSTT DSTT_UC
+ void __builtin_vec_dstt (signed char *, const int, const int);
+ DSTT DSTT_SC
+ void __builtin_vec_dstt (unsigned short *, const int, const int);
+ DSTT DSTT_US
+ void __builtin_vec_dstt (signed short *, const int, const int);
+ DSTT DSTT_SS
+ void __builtin_vec_dstt (unsigned int *, const int, const int);
+ DSTT DSTT_UI
+ void __builtin_vec_dstt (signed int *, const int, const int);
+ DSTT DSTT_SI
+ void __builtin_vec_dstt (unsigned long long *, const int, const int);
+ DSTT DSTT_ULL
+ void __builtin_vec_dstt (signed long long *, const int, const int);
+ DSTT DSTT_SLL
+ void __builtin_vec_dstt (float *, const int, const int);
+ DSTT DSTT_F
+ void __builtin_vec_dstt (vuc *, const int, const int);
+ DSTT DSTT_VUC
+ void __builtin_vec_dstt (vsc *, const int, const int);
+ DSTT DSTT_VSC
+ void __builtin_vec_dstt (vbc *, const int, const int);
+ DSTT DSTT_VBC
+ void __builtin_vec_dstt (vus *, const int, const int);
+ DSTT DSTT_VUS
+ void __builtin_vec_dstt (vss *, const int, const int);
+ DSTT DSTT_VSS
+ void __builtin_vec_dstt (vbs *, const int, const int);
+ DSTT DSTT_VBS
+ void __builtin_vec_dstt (vp *, const int, const int);
+ DSTT DSTT_VP
+ void __builtin_vec_dstt (vui *, const int, const int);
+ DSTT DSTT_VUI
+ void __builtin_vec_dstt (vsi *, const int, const int);
+ DSTT DSTT_VSI
+ void __builtin_vec_dstt (vbi *, const int, const int);
+ DSTT DSTT_VBI
+ void __builtin_vec_dstt (vf *, const int, const int);
+ DSTT DSTT_VF
+
[VEC_EXPTE, vec_expte, __builtin_vec_expte]
vf __builtin_vec_expte (vf);
VEXPTEFP
@@ -776,6 +944,24 @@
vuc __builtin_vec_lvsr (signed long long, signed char *);
LVSR LVSR_SC
+[VEC_MADD, vec_madd, __builtin_vec_madd]
+ vss __builtin_vec_madd (vss, vss, vss);
+ VMLADDUHM VMLADDUHM_VSS
+ vss __builtin_vec_madd (vss, vus, vus);
+ VMLADDUHM VMLADDUHM_VSSVUS
+ vss __builtin_vec_madd (vus, vss, vss);
+ VMLADDUHM VMLADDUHM_VUSVSS
+ vus __builtin_vec_madd (vss, vus, vus);
+ VMLADDUHM VMLADDUHM_VUS
+ vf __builtin_vec_madd (vf, vf, vf);
+ XVMADDSP
+ vd __builtin_vec_madd (vd, vd, vd);
+ XVMADDDP
+
+[VEC_MADDS, vec_madds, __builtin_vec_madds]
+ vss __builtin_vec_madds (vss, vss, vss);
+ VMHADDSHS
+
[VEC_MAX, vec_max, __builtin_vec_max]
vsc __builtin_vec_max (vsc, vsc);
VMAXSB
@@ -884,6 +1070,46 @@
vd __builtin_vec_min (vd, vd);
XVMINDP
+[VEC_MLADD, vec_mladd, __builtin_vec_mladd]
+ vss __builtin_vec_mladd (vss, vss, vss);
+ VMLADDUHM VMLADDUHM_VSS2
+ vss __builtin_vec_mladd (vss, vus, vus);
+ VMLADDUHM VMLADDUHM_VSSVUS2
+ vss __builtin_vec_mladd (vus, vss, vss);
+ VMLADDUHM VMLADDUHM_VUSVSS2
+ vus __builtin_vec_mladd (vus, vus, vus);
+ VMLADDUHM VMLADDUHM_VUS2
+
+[VEC_MRADDS, vec_mradds, __builtin_vec_mradds]
+ vss __builtin_vec_mradds (vss, vss, vss);
+ VMHRADDSHS
+
+[VEC_MSUB, vec_msub, __builtin_vec_msub]
+ vf __builtin_vec_msub (vf, vf, vf);
+ XVMSUBSP
+ vd __builtin_vec_msub (vd, vd, vd);
+ XVMSUBDP
+
+[VEC_MSUM, vec_msum, __builtin_vec_msum]
+ vui __builtin_vec_msum (vuc, vuc, vui);
+ VMSUMUBM
+ vsi __builtin_vec_msum (vsc, vuc, vsi);
+ VMSUMMBM
+ vui __builtin_vec_msum (vus, vus, vui);
+ VMSUMUHM
+ vsi __builtin_vec_msum (vss, vss, vsi);
+ VMSUMSHM
+ vsq __builtin_vec_msum (vsll, vsll, vsq);
+ VMSUMUDM VMSUMUDM_S
+ vuq __builtin_vec_msum (vull, vull, vuq);
+ VMSUMUDM VMSUMUDM_U
+
+[VEC_MSUMS, vec_msums, __builtin_vec_msums]
+ vui __builtin_vec_msums (vus, vus, vui);
+ VMSUMUHS
+ vsi __builtin_vec_msums (vss, vss, vsi);
+ VMSUMSHS
+
[VEC_MTVSCR, vec_mtvscr, __builtin_vec_mtvscr]
void __builtin_vec_mtvscr (vbc);
MTVSCR MTVSCR_VBC
@@ -968,6 +1194,18 @@
vd __builtin_vec_neg (vd);
NEG_V2DF
+[VEC_NMADD, vec_nmadd, __builtin_vec_nmadd]
+ vf __builtin_vec_nmadd (vf, vf, vf);
+ XVNMADDSP
+ vd __builtin_vec_nmadd (vd, vd, vd);
+ XVNMADDDP
+
+[VEC_NMSUB, vec_nmsub, __builtin_vec_nmsub]
+ vf __builtin_vec_nmsub (vf, vf, vf);
+ XVNMSUBSP
+ vd __builtin_vec_nmsub (vd, vd, vd);
+ XVNMSUBDP
+
[VEC_NOR, vec_nor, __builtin_vec_nor]
vsc __builtin_vec_nor (vsc, vsc);
VNOR_V16QI
@@ -1068,6 +1306,47 @@
vsi __builtin_vec_packs (vsll, vsll);
VPKSDSS
+[VEC_PERM, vec_perm, __builtin_vec_perm]
+ vsc __builtin_vec_perm (vsc, vsc, vuc);
+ VPERM_16QI
+ vuc __builtin_vec_perm (vuc, vuc, vuc);
+ VPERM_16QI_UNS VPERM_16QI_VUC
+ vbc __builtin_vec_perm (vbc, vbc, vuc);
+ VPERM_16QI_UNS VPERM_16QI_VBC
+ vss __builtin_vec_perm (vss, vss, vuc);
+ VPERM_8HI
+ vus __builtin_vec_perm (vus, vus, vuc);
+ VPERM_8HI_UNS VPERM_8HI_VUS
+ vbs __builtin_vec_perm (vbs, vbs, vuc);
+ VPERM_8HI_UNS VPERM_8HI_VBS
+ vp __builtin_vec_perm (vp, vp, vuc);
+ VPERM_8HI_UNS VPERM_8HI_VP
+ vsi __builtin_vec_perm (vsi, vsi, vuc);
+ VPERM_4SI
+ vui __builtin_vec_perm (vui, vui, vuc);
+ VPERM_4SI_UNS VPERM_4SI_VUI
+ vbi __builtin_vec_perm (vbi, vbi, vuc);
+ VPERM_4SI_UNS VPERM_4SI_VBI
+ vsll __builtin_vec_perm (vsll, vsll, vuc);
+ VPERM_2DI
+ vull __builtin_vec_perm (vull, vull, vuc);
+ VPERM_2DI_UNS VPERM_2DI_VULL
+ vbll __builtin_vec_perm (vbll, vbll, vuc);
+ VPERM_2DI_UNS VPERM_2DI_VBLL
+ vf __builtin_vec_perm (vf, vf, vuc);
+ VPERM_4SF
+ vd __builtin_vec_perm (vd, vd, vuc);
+ VPERM_2DF
+
+; TODO: There will be a separate CRYPTO_PERMXOR set with a SKIP directive
+[VEC_PERMXOR, vec_permxor, __builtin_vec_vpermxor]
+ vsc __builtin_vec_vpermxor (vsc, vsc, vsc);
+ VPERMXOR VPERMXOR_VSC
+ vuc __builtin_vec_vpermxor (vuc, vuc, vuc);
+ VPERMXOR VPERMXOR_VUC
+ vbc __builtin_vec_vpermxor (vbc, vbc, vbc);
+ VPERMXOR VPERMXOR_VBC
+
[VEC_RE, vec_re, __builtin_vec_re]
vf __builtin_vec_re (vf);
XVRESP
@@ -1134,6 +1413,64 @@
vd __builtin_vec_rsqrte (vd);
XVRSQRTEDP
+[VEC_SEL, vec_sel, __builtin_vec_sel]
+ vsc __builtin_vec_sel (vsc, vsc, vbc);
+ VSEL_16QI VSEL_16QI_B
+ vsc __builtin_vec_sel (vsc, vsc, vuc);
+ VSEL_16QI VSEL_16QI_U
+ vuc __builtin_vec_sel (vuc, vuc, vbc);
+ VSEL_16QI_UNS VSEL_16QI_UB
+ vuc __builtin_vec_sel (vuc, vuc, vuc);
+ VSEL_16QI_UNS VSEL_16QI_UU
+ vbc __builtin_vec_sel (vbc, vbc, vbc);
+ VSEL_16QI_UNS VSEL_16QI_BB
+ vbc __builtin_vec_sel (vbc, vbc, vuc);
+ VSEL_16QI_UNS VSEL_16QI_BU
+ vss __builtin_vec_sel (vss, vss, vbs);
+ VSEL_8HI VSEL_8HI_B
+ vss __builtin_vec_sel (vss, vss, vus);
+ VSEL_8HI VSEL_8HI_U
+ vus __builtin_vec_sel (vus, vus, vbs);
+ VSEL_8HI_UNS VSEL_8HI_UB
+ vus __builtin_vec_sel (vus, vus, vus);
+ VSEL_8HI_UNS VSEL_8HI_UU
+ vbs __builtin_vec_sel (vbs, vbs, vbs);
+ VSEL_8HI_UNS VSEL_8HI_BB
+ vbs __builtin_vec_sel (vbs, vbs, vus);
+ VSEL_8HI_UNS VSEL_8HI_BU
+ vsi __builtin_vec_sel (vsi, vsi, vbi);
+ VSEL_4SI VSEL_4SI_B
+ vsi __builtin_vec_sel (vsi, vsi, vui);
+ VSEL_4SI VSEL_4SI_U
+ vui __builtin_vec_sel (vui, vui, vbi);
+ VSEL_4SI_UNS VSEL_4SI_UB
+ vui __builtin_vec_sel (vui, vui, vui);
+ VSEL_4SI_UNS VSEL_4SI_UU
+ vbi __builtin_vec_sel (vbi, vbi, vbi);
+ VSEL_4SI_UNS VSEL_4SI_BB
+ vbi __builtin_vec_sel (vbi, vbi, vui);
+ VSEL_4SI_UNS VSEL_4SI_BU
+ vsll __builtin_vec_sel (vsll, vsll, vbll);
+ VSEL_2DI_B VSEL_2DI_B
+ vsll __builtin_vec_sel (vsll, vsll, vull);
+ VSEL_2DI_B VSEL_2DI_U
+ vull __builtin_vec_sel (vull, vull, vbll);
+ VSEL_2DI_UNS VSEL_2DI_UB
+ vull __builtin_vec_sel (vull, vull, vull);
+ VSEL_2DI_UNS VSEL_2DI_UU
+ vbll __builtin_vec_sel (vbll, vbll, vbll);
+ VSEL_2DI_UNS VSEL_2DI_BB
+ vbll __builtin_vec_sel (vbll, vbll, vull);
+ VSEL_2DI_UNS VSEL_2DI_BU
+ vf __builtin_vec_sel (vf, vf, vbll);
+ VSEL_4SF VSEL_4SF_B
+ vf __builtin_vec_sel (vf, vf, vull);
+ VSEL_4SF VSEL_4SF_U
+ vd __builtin_vec_sel (vd, vd, vbll);
+ VSEL_2DF VSEL_2DF_B
+ vd __builtin_vec_sel (vd, vd, vull);
+ VSEL_2DF VSEL_2DF_U
+
[VEC_SL, vec_sl, __builtin_vec_sl]
vsc __builtin_vec_sl (vsc, vuc);
VSLB VSLB_VSC
@@ -1152,6 +1489,56 @@
vull __builtin_vec_sl (vull, vull);
VSLD VSLD_VULL
+[VEC_SLD, vec_sld, __builtin_vec_sld]
+ vsc __builtin_vec_sld (vsc, vsc, const int);
+ VSLDOI_16QI VSLDOI_VSC
+ vbc __builtin_vec_sld (vbc, vbc, const int);
+ VSLDOI_16QI VSLDOI_VBC
+ vuc __builtin_vec_sld (vuc, vuc, const int);
+ VSLDOI_16QI VSLDOI_VUC
+ vss __builtin_vec_sld (vss, vss, const int);
+ VSLDOI_8HI VSLDOI_VSS
+ vbs __builtin_vec_sld (vbs, vbs, const int);
+ VSLDOI_8HI VSLDOI_VBS
+ vus __builtin_vec_sld (vus, vus, const int);
+ VSLDOI_8HI VSLDOI_VUS
+ vp __builtin_vec_sld (vp, vp, const int);
+ VSLDOI_8HI VSLDOI_VP
+ vsi __builtin_vec_sld (vsi, vsi, const int);
+ VSLDOI_4SI VSLDOI_VSI
+ vbi __builtin_vec_sld (vbi, vbi, const int);
+ VSLDOI_4SI VSLDOI_VBI
+ vui __builtin_vec_sld (vui, vui, const int);
+ VSLDOI_4SI VSLDOI_VUI
+ vsll __builtin_vec_sld (vsll, vsll, const int);
+ VSLDOI_2DI VSLDOI_VSLL
+ vbll __builtin_vec_sld (vbll, vbll, const int);
+ VSLDOI_2DI VSLDOI_VBLL
+ vull __builtin_vec_sld (vull, vull, const int);
+ VSLDOI_2DI VSLDOI_VULL
+ vf __builtin_vec_sld (vf, vf, const int);
+ VSLDOI_4SF
+ vd __builtin_vec_sld (vd, vd, const int);
+ VSLDOI_2DF
+
+[VEC_SLDW, vec_sldw, __builtin_vec_sldw]
+ vsc __builtin_vec_sldw (vsc, vsc, const int);
+ XXSLDWI_16QI XXSLDWI_VSC
+ vuc __builtin_vec_sldw (vuc, vuc, const int);
+ XXSLDWI_16QI XXSLDWI_VUC
+ vss __builtin_vec_sldw (vss, vss, const int);
+ XXSLDWI_16QI XXSLDWI_VSS
+ vus __builtin_vec_sldw (vus, vus, const int);
+ XXSLDWI_16QI XXSLDWI_VUS
+ vsi __builtin_vec_sldw (vsi, vsi, const int);
+ XXSLDWI_16QI XXSLDWI_VSI
+ vui __builtin_vec_sldw (vui, vui, const int);
+ XXSLDWI_16QI XXSLDWI_VUI
+ vsll __builtin_vec_sldw (vsll, vsll, const int);
+ XXSLDWI_16QI XXSLDWI_VSLL
+ vull __builtin_vec_sldw (vull, vull, const int);
+ XXSLDWI_16QI XXSLDWI_VULL
+
[VEC_SLL, vec_sll, __builtin_vec_sll]
vsc __builtin_vec_sll (vsc, vuc);
VSL VSL_VSC
@@ -1350,6 +1737,326 @@
vf __builtin_vec_sro (vf, vuc);
VSRO VSRO_VFU
+[VEC_ST, vec_st, __builtin_vec_st]
+ void __builtin_vec_st (vsc, signed long long, vsc *);
+ STVX_V16QI STVX_VSC
+ void __builtin_vec_st (vsc, signed long long, signed char *);
+ STVX_V16QI STVX_SC
+ void __builtin_vec_st (vuc, signed long long, vuc *);
+ STVX_V16QI STVX_VUC
+ void __builtin_vec_st (vuc, signed long long, unsigned char *);
+ STVX_V16QI STVX_UC
+ void __builtin_vec_st (vbc, signed long long, vbc *);
+ STVX_V16QI STVX_VBC
+ void __builtin_vec_st (vbc, signed long long, signed char *);
+ STVX_V16QI STVX_SC_B
+ void __builtin_vec_st (vbc, signed long long, unsigned char *);
+ STVX_V16QI STVX_UC_B
+ void __builtin_vec_st (vss, signed long long, vss *);
+ STVX_V8HI STVX_VSS
+ void __builtin_vec_st (vss, signed long long, signed short *);
+ STVX_V8HI STVX_SS
+ void __builtin_vec_st (vus, signed long long, vus *);
+ STVX_V8HI STVX_VUS
+ void __builtin_vec_st (vus, signed long long, unsigned short *);
+ STVX_V8HI STVX_US
+ void __builtin_vec_st (vbs, signed long long, vbs *);
+ STVX_V8HI STVX_VBS
+ void __builtin_vec_st (vbs, signed long long, signed short *);
+ STVX_V8HI STVX_SS_B
+ void __builtin_vec_st (vbs, signed long long, unsigned short *);
+ STVX_V8HI STVX_US_B
+ void __builtin_vec_st (vp, signed long long, vp *);
+ STVX_V8HI STVX_P
+ void __builtin_vec_st (vsi, signed long long, vsi *);
+ STVX_V4SI STVX_VSI
+ void __builtin_vec_st (vsi, signed long long, signed int *);
+ STVX_V4SI STVX_SI
+ void __builtin_vec_st (vui, signed long long, vui *);
+ STVX_V4SI STVX_VUI
+ void __builtin_vec_st (vui, signed long long, unsigned int *);
+ STVX_V4SI STVX_UI
+ void __builtin_vec_st (vbi, signed long long, vbi *);
+ STVX_V4SI STVX_VBI
+ void __builtin_vec_st (vbi, signed long long, signed int *);
+ STVX_V4SI STVX_SI_B
+ void __builtin_vec_st (vbi, signed long long, unsigned int *);
+ STVX_V4SI STVX_UI_B
+ void __builtin_vec_st (vsll, signed long long, vsll *);
+ STVX_V2DI STVX_VSLL
+ void __builtin_vec_st (vsll, signed long long, signed long long *);
+ STVX_V2DI STVX_SLL
+ void __builtin_vec_st (vull, signed long long, vull *);
+ STVX_V2DI STVX_VULL
+ void __builtin_vec_st (vull, signed long long, unsigned long long *);
+ STVX_V2DI STVX_ULL
+ void __builtin_vec_st (vbll, signed long long, vbll *);
+ STVX_V2DI STVX_VBLL
+ void __builtin_vec_st (vbll, signed long long, signed long long *);
+ STVX_V2DI STVX_SLL_B
+ void __builtin_vec_st (vbll, signed long long, unsigned long long *);
+ STVX_V2DI STVX_ULL_B
+ void __builtin_vec_st (vf, signed long long, vf *);
+ STVX_V4SF STVX_VF
+ void __builtin_vec_st (vf, signed long long, float *);
+ STVX_V4SF STVX_F
+ void __builtin_vec_st (vd, signed long long, vd *);
+ STVX_V2DF STVX_VD
+ void __builtin_vec_st (vd, signed long long, double *);
+ STVX_V2DF STVX_D
+
+[VEC_STE, vec_ste, __builtin_vec_ste]
+ void __builtin_vec_ste (vsc, signed long long, signed char *);
+ STVEBX STVEBX_S
+ void __builtin_vec_ste (vuc, signed long long, unsigned char *);
+ STVEBX STVEBX_U
+ void __builtin_vec_ste (vbc, signed long long, signed char *);
+ STVEBX STVEBX_BS
+ void __builtin_vec_ste (vbc, signed long long, unsigned char *);
+ STVEBX STVEBX_BU
+ void __builtin_vec_ste (vss, signed long long, signed short *);
+ STVEHX STVEHX_S
+ void __builtin_vec_ste (vus, signed long long, unsigned short *);
+ STVEHX STVEHX_U
+ void __builtin_vec_ste (vbs, signed long long, signed short *);
+ STVEHX STVEHX_BS
+ void __builtin_vec_ste (vbs, signed long long, unsigned short *);
+ STVEHX STVEHX_BU
+ void __builtin_vec_ste (vp, signed long long, signed short *);
+ STVEHX STVEHX_PS
+ void __builtin_vec_ste (vp, signed long long, unsigned short *);
+ STVEHX STVEHX_PU
+ void __builtin_vec_ste (vsi, signed long long, signed int *);
+ STVEWX STVEHWX_S
+ void __builtin_vec_ste (vui, signed long long, unsigned int *);
+ STVEWX STVEWX_U
+ void __builtin_vec_ste (vbi, signed long long, signed int *);
+ STVEWX STVEWX_BS
+ void __builtin_vec_ste (vbi, signed long long, unsigned int *);
+ STVEWX STVEWX_BU
+ void __builtin_vec_ste (vf, signed long long, float *);
+ STVEWX STVEWX_F
+
+[VEC_STL, vec_stl, __builtin_vec_stl]
+ void __builtin_vec_stl (vsc, signed long long, vsc *);
+ STVXL_V16QI STVXL_VSC
+ void __builtin_vec_stl (vsc, signed long long, signed char *);
+ STVXL_V16QI STVXL_SC
+ void __builtin_vec_stl (vuc, signed long long, vuc *);
+ STVXL_V16QI STVXL_VUC
+ void __builtin_vec_stl (vuc, signed long long, unsigned char *);
+ STVXL_V16QI STVXL_UC
+ void __builtin_vec_stl (vbc, signed long long, vbc *);
+ STVXL_V16QI STVXL_VBC
+ void __builtin_vec_stl (vbc, signed long long, signed char *);
+ STVXL_V16QI STVXL_SC_B
+ void __builtin_vec_stl (vbc, signed long long, unsigned char *);
+ STVXL_V16QI STVXL_UC_B
+ void __builtin_vec_stl (vss, signed long long, vss *);
+ STVXL_V8HI STVXL_VSS
+ void __builtin_vec_stl (vss, signed long long, signed short *);
+ STVXL_V8HI STVXL_SS
+ void __builtin_vec_stl (vus, signed long long, vus *);
+ STVXL_V8HI STVXL_VUS
+ void __builtin_vec_stl (vus, signed long long, unsigned short *);
+ STVXL_V8HI STVXL_US
+ void __builtin_vec_stl (vbs, signed long long, vbs *);
+ STVXL_V8HI STVXL_VBS
+ void __builtin_vec_stl (vbs, signed long long, signed short *);
+ STVXL_V8HI STVXL_SS_B
+ void __builtin_vec_stl (vbs, signed long long, unsigned short *);
+ STVXL_V8HI STVXL_US_B
+ void __builtin_vec_stl (vp, signed long long, vp *);
+ STVXL_V8HI STVXL_P
+ void __builtin_vec_stl (vsi, signed long long, vsi *);
+ STVXL_V4SI STVXL_VSI
+ void __builtin_vec_stl (vsi, signed long long, signed int *);
+ STVXL_V4SI STVXL_SI
+ void __builtin_vec_stl (vui, signed long long, vui *);
+ STVXL_V4SI STVXL_VUI
+ void __builtin_vec_stl (vui, signed long long, unsigned int *);
+ STVXL_V4SI STVXL_UI
+ void __builtin_vec_stl (vbi, signed long long, vbi *);
+ STVXL_V4SI STVXL_VBI
+ void __builtin_vec_stl (vbi, signed long long, signed int *);
+ STVXL_V4SI STVXL_SI_B
+ void __builtin_vec_stl (vbi, signed long long, unsigned int *);
+ STVXL_V4SI STVXL_UI_B
+ void __builtin_vec_stl (vsll, signed long long, vsll *);
+ STVXL_V2DI STVXL_VSLL
+ void __builtin_vec_stl (vsll, signed long long, signed long long *);
+ STVXL_V2DI STVXL_SLL
+ void __builtin_vec_stl (vull, signed long long, vull *);
+ STVXL_V2DI STVXL_VULL
+ void __builtin_vec_stl (vull, signed long long, unsigned long long *);
+ STVXL_V2DI STVXL_ULL
+ void __builtin_vec_stl (vbll, signed long long, vbll *);
+ STVXL_V2DI STVXL_VBLL
+ void __builtin_vec_stl (vbll, signed long long, signed long long *);
+ STVXL_V2DI STVXL_SLL_B
+ void __builtin_vec_stl (vbll, signed long long, unsigned long long *);
+ STVXL_V2DI STVXL_ULL_B
+ void __builtin_vec_stl (vf, signed long long, vf *);
+ STVXL_V4SF STVXL_VF
+ void __builtin_vec_stl (vf, signed long long, float *);
+ STVXL_V4SF STVXL_F
+ void __builtin_vec_stl (vd, signed long long, vd *);
+ STVXL_V2DF STVXL_VD
+ void __builtin_vec_stl (vd, signed long long, double *);
+ STVXL_V2DF STVXL_D
+
+[VEC_STVLX, vec_stvlx, __builtin_vec_stvlx]
+ void __builtin_vec_stvlx (vbc, signed long long, vbc *);
+ STVLX STVLX_VBC
+ void __builtin_vec_stvlx (vsc, signed long long, vsc *);
+ STVLX STVLX_VSC
+ void __builtin_vec_stvlx (vsc, signed long long, signed char *);
+ STVLX STVLX_SC
+ void __builtin_vec_stvlx (vuc, signed long long, vuc *);
+ STVLX STVLX_VUC
+ void __builtin_vec_stvlx (vuc, signed long long, unsigned char *);
+ STVLX STVLX_UC
+ void __builtin_vec_stvlx (vbs, signed long long, vbs *);
+ STVLX STVLX_VBS
+ void __builtin_vec_stvlx (vss, signed long long, vss *);
+ STVLX STVLX_VSS
+ void __builtin_vec_stvlx (vss, signed long long, signed short *);
+ STVLX STVLX_SS
+ void __builtin_vec_stvlx (vus, signed long long, vus *);
+ STVLX STVLX_VUS
+ void __builtin_vec_stvlx (vus, signed long long, unsigned short *);
+ STVLX STVLX_US
+ void __builtin_vec_stvlx (vp, signed long long, vp *);
+ STVLX STVLX_VP
+ void __builtin_vec_stvlx (vbi, signed long long, vbi *);
+ STVLX STVLX_VBI
+ void __builtin_vec_stvlx (vsi, signed long long, vsi *);
+ STVLX STVLX_VSI
+ void __builtin_vec_stvlx (vsi, signed long long, signed int *);
+ STVLX STVLX_SI
+ void __builtin_vec_stvlx (vui, signed long long, vui *);
+ STVLX STVLX_VUI
+ void __builtin_vec_stvlx (vui, signed long long, unsigned int *);
+ STVLX STVLX_UI
+ void __builtin_vec_stvlx (vf, signed long long, vf *);
+ STVLX STVLX_VF
+ void __builtin_vec_stvlx (vf, signed long long, float *);
+ STVLX STVLX_F
+
+[VEC_STVLXL, vec_stvlxl, __builtin_vec_stvlxl]
+ void __builtin_vec_stvlxl (vbc, signed long long, vbc *);
+ STVLXL STVLXL_VBC
+ void __builtin_vec_stvlxl (vsc, signed long long, vsc *);
+ STVLXL STVLXL_VSC
+ void __builtin_vec_stvlxl (vsc, signed long long, signed char *);
+ STVLXL STVLXL_SC
+ void __builtin_vec_stvlxl (vuc, signed long long, vuc *);
+ STVLXL STVLXL_VUC
+ void __builtin_vec_stvlxl (vuc, signed long long, unsigned char *);
+ STVLXL STVLXL_UC
+ void __builtin_vec_stvlxl (vbs, signed long long, vbs *);
+ STVLXL STVLXL_VBS
+ void __builtin_vec_stvlxl (vss, signed long long, vss *);
+ STVLXL STVLXL_VSS
+ void __builtin_vec_stvlxl (vss, signed long long, signed short *);
+ STVLXL STVLXL_SS
+ void __builtin_vec_stvlxl (vus, signed long long, vus *);
+ STVLXL STVLXL_VUS
+ void __builtin_vec_stvlxl (vus, signed long long, unsigned short *);
+ STVLXL STVLXL_US
+ void __builtin_vec_stvlxl (vp, signed long long, vp *);
+ STVLXL STVLXL_VP
+ void __builtin_vec_stvlxl (vbi, signed long long, vbi *);
+ STVLXL STVLXL_VBI
+ void __builtin_vec_stvlxl (vsi, signed long long, vsi *);
+ STVLXL STVLXL_VSI
+ void __builtin_vec_stvlxl (vsi, signed long long, signed int *);
+ STVLXL STVLXL_SI
+ void __builtin_vec_stvlxl (vui, signed long long, vui *);
+ STVLXL STVLXL_VUI
+ void __builtin_vec_stvlxl (vui, signed long long, unsigned int *);
+ STVLXL STVLXL_UI
+ void __builtin_vec_stvlxl (vf, signed long long, vf *);
+ STVLXL STVLXL_VF
+ void __builtin_vec_stvlxl (vf, signed long long, float *);
+ STVLXL STVLXL_F
+
+[VEC_STVRX, vec_stvrx, __builtin_vec_stvrx]
+ void __builtin_vec_stvrx (vbc, signed long long, vbc *);
+ STVRX STVRX_VBC
+ void __builtin_vec_stvrx (vsc, signed long long, vsc *);
+ STVRX STVRX_VSC
+ void __builtin_vec_stvrx (vsc, signed long long, signed char *);
+ STVRX STVRX_SC
+ void __builtin_vec_stvrx (vuc, signed long long, vuc *);
+ STVRX STVRX_VUC
+ void __builtin_vec_stvrx (vuc, signed long long, unsigned char *);
+ STVRX STVRX_UC
+ void __builtin_vec_stvrx (vbs, signed long long, vbs *);
+ STVRX STVRX_VBS
+ void __builtin_vec_stvrx (vss, signed long long, vss *);
+ STVRX STVRX_VSS
+ void __builtin_vec_stvrx (vss, signed long long, signed short *);
+ STVRX STVRX_SS
+ void __builtin_vec_stvrx (vus, signed long long, vus *);
+ STVRX STVRX_VUS
+ void __builtin_vec_stvrx (vus, signed long long, unsigned short *);
+ STVRX STVRX_US
+ void __builtin_vec_stvrx (vp, signed long long, vp *);
+ STVRX STVRX_VP
+ void __builtin_vec_stvrx (vbi, signed long long, vbi *);
+ STVRX STVRX_VBI
+ void __builtin_vec_stvrx (vsi, signed long long, vsi *);
+ STVRX STVRX_VSI
+ void __builtin_vec_stvrx (vsi, signed long long, signed int *);
+ STVRX STVRX_SI
+ void __builtin_vec_stvrx (vui, signed long long, vui *);
+ STVRX STVRX_VUI
+ void __builtin_vec_stvrx (vui, signed long long, unsigned int *);
+ STVRX STVRX_UI
+ void __builtin_vec_stvrx (vf, signed long long, vf *);
+ STVRX STVRX_VF
+ void __builtin_vec_stvrx (vf, signed long long, float *);
+ STVRX STVRX_F
+
+[VEC_STVRXL, vec_stvrxl, __builtin_vec_stvrxl]
+ void __builtin_vec_stvrxl (vbc, signed long long, vbc *);
+ STVRXL STVRXL_VBC
+ void __builtin_vec_stvrxl (vsc, signed long long, vsc *);
+ STVRXL STVRXL_VSC
+ void __builtin_vec_stvrxl (vsc, signed long long, signed char *);
+ STVRXL STVRXL_SC
+ void __builtin_vec_stvrxl (vuc, signed long long, vuc *);
+ STVRXL STVRXL_VUC
+ void __builtin_vec_stvrxl (vuc, signed long long, unsigned char *);
+ STVRXL STVRXL_UC
+ void __builtin_vec_stvrxl (vbs, signed long long, vbs *);
+ STVRXL STVRXL_VBS
+ void __builtin_vec_stvrxl (vss, signed long long, vss *);
+ STVRXL STVRXL_VSS
+ void __builtin_vec_stvrxl (vss, signed long long, signed short *);
+ STVRXL STVRXL_SS
+ void __builtin_vec_stvrxl (vus, signed long long, vus *);
+ STVRXL STVRXL_VUS
+ void __builtin_vec_stvrxl (vus, signed long long, unsigned short *);
+ STVRXL STVRXL_US
+ void __builtin_vec_stvrxl (vp, signed long long, vp *);
+ STVRXL STVRXL_VP
+ void __builtin_vec_stvrxl (vbi, signed long long, vbi *);
+ STVRXL STVRXL_VBI
+ void __builtin_vec_stvrxl (vsi, signed long long, vsi *);
+ STVRXL STVRXL_VSI
+ void __builtin_vec_stvrxl (vsi, signed long long, signed int *);
+ STVRXL STVRXL_SI
+ void __builtin_vec_stvrxl (vui, signed long long, vui *);
+ STVRXL STVRXL_VUI
+ void __builtin_vec_stvrxl (vui, signed long long, unsigned int *);
+ STVRXL STVRXL_UI
+ void __builtin_vec_stvrxl (vf, signed long long, vf *);
+ STVRXL STVRXL_VF
+ void __builtin_vec_stvrxl (vf, signed long long, float *);
+ STVRXL STVRXL_F
+
[VEC_SUB, vec_sub, __builtin_vec_sub]
vsc __builtin_vec_sub (vsc, vsc);
VSUBUBM VSUBUBM_VSC
@@ -1376,6 +2083,46 @@
vd __builtin_vec_sub (vd, vd);
XVSUBDP
+[VEC_SUBC, vec_subc, __builtin_vec_subc]
+ vsi __builtin_vec_subc (vsi, vsi);
+ VSUBCUW VSUBCUW_VSI
+ vui __builtin_vec_subc (vui, vui);
+ VSUBCUW VSUBCUW_VUI
+ vsq __builtin_vec_subc (vsq, vsq);
+ VSUBCUQ VSUBCUQ_VSQ
+ vuq __builtin_vec_subc (vuq, vuq);
+ VSUBCUQ VSUBCUQ_VUQ
+
+[VEC_SUBS, vec_subs, __builtin_vec_subs]
+ vuc __builtin_vec_subs (vuc, vuc);
+ VSUBUBS
+ vsc __builtin_vec_subs (vsc, vsc);
+ VSUBSBS
+ vus __builtin_vec_subs (vus, vus);
+ VSUBUHS
+ vss __builtin_vec_subs (vss, vss);
+ VSUBSHS
+ vui __builtin_vec_subs (vui, vui);
+ VSUBUWS
+ vsi __builtin_vec_subs (vsi, vsi);
+ VSUBSWS
+
+[VEC_SUM2S, vec_sum2s, __builtin_vec_sum2s]
+ vsi __builtin_vec_sum2s (vsi, vsi);
+ VSUM2SWS
+
+[VEC_SUM4S, vec_sum4s, __builtin_vec_sum4s]
+ vui __builtin_vec_sum4s (vuc, vui);
+ VSUM4UBS
+ vsi __builtin_vec_sum4s (vsc, vui);
+ VSUM4SBS
+ vsi __builtin_vec_sum4s (vss, vsi);
+ VSUM4SHS
+
+[VEC_SUMS, vec_sums, __builtin_vec_sums]
+ vsi __builtin_vec_sums (vsi, vsi);
+ VSUMSWS
+
[VEC_TRUNC, vec_trunc, __builtin_vec_trunc]
vf __builtin_vec_trunc (vf);
XVRSPIZ
@@ -1417,3 +2164,299 @@
VUPKLSW VUPKLSW_VBI
vd __builtin_vec_unpackl (vf);
DOUBLEL_V4SF VUPKLF
+
+[VEC_XL, vec_xl, __builtin_vec_vsx_ld]
+ vsc __builtin_vec_vsx_ld (signed long long, vsc *);
+ LXVW4X_V4SI LXVW4X_VSC
+ vsc __builtin_vec_vsx_ld (signed long long, signed char *);
+ LXVW4X_V4SI LXVW4X_SC
+ vuc __builtin_vec_vsx_ld (signed long long, vuc *);
+ LXVW4X_V4SI LXVW4X_VUC
+ vuc __builtin_vec_vsx_ld (signed long long, unsigned char *);
+ LXVW4X_V4SI LXVW4X_UC
+ vss __builtin_vec_vsx_ld (signed long long, vss *);
+ LXVW4X_V4SI LXVW4X_VSS
+ vss __builtin_vec_vsx_ld (signed long long, signed short *);
+ LXVW4X_V4SI LXVW4X_SS
+ vus __builtin_vec_vsx_ld (signed long long, vus *);
+ LXVW4X_V4SI LXVW4X_VUS
+ vus __builtin_vec_vsx_ld (signed long long, unsigned short *);
+ LXVW4X_V4SI LXVW4X_US
+ vsi __builtin_vec_vsx_ld (signed long long, vsi *);
+ LXVW4X_V4SI LXVW4X_VSI
+ vsi __builtin_vec_vsx_ld (signed long long, signed int *);
+ LXVW4X_V4SI LXVW4X_SI
+ vui __builtin_vec_vsx_ld (signed long long, vui *);
+ LXVW4X_V4SI LXVW4X_VUI
+ vui __builtin_vec_vsx_ld (signed long long, unsigned int *);
+ LXVW4X_V4SI LXVW4X_UI
+ vsll __builtin_vec_vsx_ld (signed long long, vsll *);
+ LXVD2X_V2DI LXVD2X_VSLL
+ vsll __builtin_vec_vsx_ld (signed long long, signed long long *);
+ LXVD2X_V2DI LXVD2X_SLL
+ vull __builtin_vec_vsx_ld (signed long long, vull *);
+ LXVD2X_V2DI LXVD2X_VULL
+ vull __builtin_vec_vsx_ld (signed long long, unsigned long long *);
+ LXVD2X_V2DI LXVD2X_ULL
+ vsq __builtin_vec_vsx_ld (signed long long, vsq *);
+ LXVD2X_V1TI LXVD2X_VSQ
+ vsq __builtin_vec_vsx_ld (signed long long, signed __int128 *);
+ LXVD2X_V1TI LXVD2X_SQ
+ vuq __builtin_vec_vsx_ld (signed long long, unsigned __int128 *);
+ LXVD2X_V1TI LXVD2X_UQ
+ vf __builtin_vec_vsx_ld (signed long long, vf *);
+ LXVW4X_V4SF LXVW4X_VF
+ vf __builtin_vec_vsx_ld (signed long long, float *);
+ LXVW4X_V4SF LXVW4X_F
+ vd __builtin_vec_vsx_ld (signed long long, vd *);
+ LXVD2X_V2DF LXVD2X_VD
+ vd __builtin_vec_vsx_ld (signed long long, double *);
+ LXVD2X_V2DF LXVD2X_D
+
+[VEC_XL_BE, vec_xl_be, __builtin_vec_xl_be]
+ vsc __builtin_vec_xl_be (signed long long, vsc *);
+ LD_ELEMREV_V16QI LD_ELEMREV_VSC
+ vsc __builtin_vec_xl_be (signed long long, signed char *);
+ LD_ELEMREV_V16QI LD_ELEMREV_SC
+ vuc __builtin_vec_xl_be (signed long long, vuc *);
+ LD_ELEMREV_V16QI LD_ELEMREV_VUC
+ vuc __builtin_vec_xl_be (signed long long, unsigned char *);
+ LD_ELEMREV_V16QI LD_ELEMREV_UC
+ vss __builtin_vec_xl_be (signed long long, vss *);
+ LD_ELEMREV_V8HI LD_ELEMREV_VSS
+ vss __builtin_vec_xl_be (signed long long, signed short *);
+ LD_ELEMREV_V8HI LD_ELEMREV_SS
+ vus __builtin_vec_xl_be (signed long long, vus *);
+ LD_ELEMREV_V8HI LD_ELEMREV_VUS
+ vus __builtin_vec_xl_be (signed long long, unsigned short *);
+ LD_ELEMREV_V8HI LD_ELEMREV_US
+ vsi __builtin_vec_xl_be (signed long long, vsi *);
+ LD_ELEMREV_V4SI LD_ELEMREV_VSI
+ vsi __builtin_vec_xl_be (signed long long, signed int *);
+ LD_ELEMREV_V4SI LD_ELEMREV_SI
+ vui __builtin_vec_xl_be (signed long long, vui *);
+ LD_ELEMREV_V4SI LD_ELEMREV_VUI
+ vui __builtin_vec_xl_be (signed long long, unsigned int *);
+ LD_ELEMREV_V4SI LD_ELEMREV_UI
+ vsll __builtin_vec_xl_be (signed long long, vsll *);
+ LD_ELEMREV_V2DI LD_ELEMREV_VSLL
+ vsll __builtin_vec_xl_be (signed long long, signed long long *);
+ LD_ELEMREV_V2DI LD_ELEMREV_SLL
+ vull __builtin_vec_xl_be (signed long long, vull *);
+ LD_ELEMREV_V2DI LD_ELEMREV_VULL
+ vull __builtin_vec_xl_be (signed long long, unsigned long long *);
+ LD_ELEMREV_V2DI LD_ELEMREV_ULL
+ vsq __builtin_vec_xl_be (signed long long, signed __int128 *);
+ LD_ELEMREV_V1TI LD_ELEMREV_SQ
+ vuq __builtin_vec_xl_be (signed long long, unsigned __int128 *);
+ LD_ELEMREV_V1TI LD_ELEMREV_UQ
+ vf __builtin_vec_xl_be (signed long long, vf *);
+ LD_ELEMREV_V4SF LD_ELEMREV_VF
+ vf __builtin_vec_xl_be (signed long long, float *);
+ LD_ELEMREV_V4SF LD_ELEMREV_F
+ vd __builtin_vec_xl_be (signed long long, vd *);
+ LD_ELEMREV_V2DF LD_ELEMREV_VD
+ vd __builtin_vec_xl_be (signed long long, double *);
+ LD_ELEMREV_V2DF LD_ELEMREV_DD
+
+[VEC_XOR, vec_xor, __builtin_vec_xor]
+ vsc __builtin_vec_xor (vsc, vsc);
+ VXOR_V16QI
+ vuc __builtin_vec_xor (vuc, vuc);
+ VXOR_V16QI_UNS VXOR_VUC
+ vbc __builtin_vec_xor (vbc, vbc);
+ VXOR_V16QI_UNS VXOR_VBC
+ vss __builtin_vec_xor (vss, vss);
+ VXOR_V8HI
+ vus __builtin_vec_xor (vus, vus);
+ VXOR_V8HI_UNS VXOR_VUS
+ vbs __builtin_vec_xor (vbs, vbs);
+ VXOR_V8HI_UNS VXOR_VBS
+ vsi __builtin_vec_xor (vsi, vsi);
+ VXOR_V4SI
+ vui __builtin_vec_xor (vui, vui);
+ VXOR_V4SI_UNS VXOR_VUI
+ vbi __builtin_vec_xor (vbi, vbi);
+ VXOR_V4SI_UNS VXOR_VBI
+ vsll __builtin_vec_xor (vsll, vsll);
+ VXOR_V2DI
+ vull __builtin_vec_xor (vull, vull);
+ VXOR_V2DI_UNS VXOR_VULL
+ vbll __builtin_vec_xor (vbll, vbll);
+ VXOR_V2DI_UNS VXOR_VBLL
+ vf __builtin_vec_xor (vf, vf);
+ VXOR_V4SF
+ vd __builtin_vec_xor (vd, vd);
+ VXOR_V2DF
+
+[VEC_XST, vec_xst, __builtin_vec_vsx_st]
+ void __builtin_vec_vsx_st (vsc, signed long long, vsc *);
+ STXVW4X_V16QI STXVW4X_VSC
+ void __builtin_vec_vsx_st (vsc, signed long long, signed char *);
+ STXVW4X_V16QI STXVW4X_SC
+ void __builtin_vec_vsx_st (vuc, signed long long, vuc *);
+ STXVW4X_V16QI STXVW4X_VUC
+ void __builtin_vec_vsx_st (vuc, signed long long, unsigned char *);
+ STXVW4X_V16QI STXVW4X_UC
+ void __builtin_vec_vsx_st (vbc, signed long long, vbc *);
+ STXVW4X_V16QI STXVW4X_VBC
+ void __builtin_vec_vsx_st (vbc, signed long long, signed char *);
+ STXVW4X_V16QI STXVW4X_VBC_S
+ void __builtin_vec_vsx_st (vbc, signed long long, unsigned char *);
+ STXVW4X_V16QI STXVW4X_VBC_U
+ void __builtin_vec_vsx_st (vss, signed long long, vss *);
+ STXVW4X_V8HI STXVW4X_VSS
+ void __builtin_vec_vsx_st (vss, signed long long, signed short *);
+ STXVW4X_V8HI STXVW4X_SS
+ void __builtin_vec_vsx_st (vus, signed long long, vus *);
+ STXVW4X_V8HI STXVW4X_VUS
+ void __builtin_vec_vsx_st (vus, signed long long, unsigned short *);
+ STXVW4X_V8HI STXVW4X_US
+ void __builtin_vec_vsx_st (vbs, signed long long, vbs *);
+ STXVW4X_V8HI STXVW4X_VBS
+ void __builtin_vec_vsx_st (vbs, signed long long, signed short *);
+ STXVW4X_V8HI STXVW4X_VBS_S
+ void __builtin_vec_vsx_st (vbs, signed long long, unsigned short *);
+ STXVW4X_V8HI STXVW4X_VBS_U
+ void __builtin_vec_vsx_st (vp, signed long long, vp *);
+ STXVW4X_V8HI STXVW4X_VP
+ void __builtin_vec_vsx_st (vsi, signed long long, vsi *);
+ STXVW4X_V4SI STXVW4X_VSI
+ void __builtin_vec_vsx_st (vsi, signed long long, signed int *);
+ STXVW4X_V4SI STXVW4X_SI
+ void __builtin_vec_vsx_st (vui, signed long long, vui *);
+ STXVW4X_V4SI STXVW4X_VUI
+ void __builtin_vec_vsx_st (vui, signed long long, unsigned int *);
+ STXVW4X_V4SI STXVW4X_UI
+ void __builtin_vec_vsx_st (vbi, signed long long, vbi *);
+ STXVW4X_V4SI STXVW4X_VBI
+ void __builtin_vec_vsx_st (vbi, signed long long, signed int *);
+ STXVW4X_V4SI STXVW4X_VBI_S
+ void __builtin_vec_vsx_st (vbi, signed long long, unsigned int *);
+ STXVW4X_V4SI STXVW4X_VBI_U
+ void __builtin_vec_vsx_st (vsll, signed long long, vsll *);
+ STXVD2X_V2DI STXVD2X_VSLL
+ void __builtin_vec_vsx_st (vsll, signed long long, signed long long *);
+ STXVD2X_V2DI STXVD2X_SLL
+ void __builtin_vec_vsx_st (vull, signed long long, vull *);
+ STXVD2X_V2DI STXVD2X_VULL
+ void __builtin_vec_vsx_st (vull, signed long long, unsigned long long *);
+ STXVD2X_V2DI STXVD2X_ULL
+ void __builtin_vec_vsx_st (vbll, signed long long, vbll *);
+ STXVD2X_V2DI STXVD2X_VBLL
+ void __builtin_vec_vsx_st (vf, signed long long, vf *);
+ STXVW4X_V4SF STXVW4X_VF
+ void __builtin_vec_vsx_st (vf, signed long long, float *);
+ STXVW4X_V4SF STXVW4X_F
+ void __builtin_vec_vsx_st (vd, signed long long, vd *);
+ STXVD2X_V2DF STXVD2X_VD
+ void __builtin_vec_vsx_st (vd, signed long long, double *);
+ STXVD2X_V2DF STXVD2X_D
+
+[VEC_XST_BE, vec_xst_be, __builtin_vec_xst_be]
+ void __builtin_vec_xst_be (vsc, signed long long, vsc *);
+ STXVW4X_V16QI STXVW4X_VSC_BE
+ void __builtin_vec_xst_be (vsc, signed long long, signed char *);
+ STXVW4X_V16QI STXVW4X_SC_BE
+ void __builtin_vec_xst_be (vuc, signed long long, vuc *);
+ STXVW4X_V16QI STXVW4X_VUC_BE
+ void __builtin_vec_xst_be (vuc, signed long long, unsigned char *);
+ STXVW4X_V16QI STXVW4X_UC_BE
+ void __builtin_vec_xst_be (vbc, signed long long, vbc *);
+ STXVW4X_V16QI STXVW4X_VBC_BE
+ void __builtin_vec_xst_be (vbc, signed long long, signed char *);
+ STXVW4X_V16QI STXVW4X_VBC_S_BE
+ void __builtin_vec_xst_be (vbc, signed long long, unsigned char *);
+ STXVW4X_V16QI STXVW4X_VBC_U_BE
+ void __builtin_vec_xst_be (vss, signed long long, vss *);
+ STXVW4X_V8HI STXVW4X_VSS_BE
+ void __builtin_vec_xst_be (vss, signed long long, signed short *);
+ STXVW4X_V8HI STXVW4X_SS_BE
+ void __builtin_vec_xst_be (vus, signed long long, vus *);
+ STXVW4X_V8HI STXVW4X_VUS_BE
+ void __builtin_vec_xst_be (vus, signed long long, unsigned short *);
+ STXVW4X_V8HI STXVW4X_US_BE
+ void __builtin_vec_xst_be (vbs, signed long long, vbs *);
+ STXVW4X_V8HI STXVW4X_VBS_BE
+ void __builtin_vec_xst_be (vbs, signed long long, signed short *);
+ STXVW4X_V8HI STXVW4X_VBS_S_BE
+ void __builtin_vec_xst_be (vbs, signed long long, unsigned short *);
+ STXVW4X_V8HI STXVW4X_VBS_U_BE
+ void __builtin_vec_xst_be (vp, signed long long, vp *);
+ STXVW4X_V8HI STXVW4X_VP_BE
+ void __builtin_vec_xst_be (vsi, signed long long, vsi *);
+ STXVW4X_V4SI STXVW4X_VSI_BE
+ void __builtin_vec_xst_be (vsi, signed long long, signed int *);
+ STXVW4X_V4SI STXVW4X_SI_BE
+ void __builtin_vec_xst_be (vui, signed long long, vui *);
+ STXVW4X_V4SI STXVW4X_VUI_BE
+ void __builtin_vec_xst_be (vui, signed long long, unsigned int *);
+ STXVW4X_V4SI STXVW4X_UI_BE
+ void __builtin_vec_xst_be (vbi, signed long long, vbi *);
+ STXVW4X_V4SI STXVW4X_VBI_BE
+ void __builtin_vec_xst_be (vbi, signed long long, signed int *);
+ STXVW4X_V4SI STXVW4X_VBI_S_BE
+ void __builtin_vec_xst_be (vbi, signed long long, unsigned int *);
+ STXVW4X_V4SI STXVW4X_VBI_U_BE
+ void __builtin_vec_xst_be (vsll, signed long long, vsll *);
+ STXVD2X_V2DI STXVD2X_VSLL_BE
+ void __builtin_vec_xst_be (vsll, signed long long, signed long long *);
+ STXVD2X_V2DI STXVD2X_SLL_BE
+ void __builtin_vec_xst_be (vull, signed long long, vull *);
+ STXVD2X_V2DI STXVD2X_VULL_BE
+ void __builtin_vec_xst_be (vull, signed long long, unsigned long long *);
+ STXVD2X_V2DI STXVD2X_ULL_BE
+ void __builtin_vec_xst_be (vbll, signed long long, vbll *);
+ STXVD2X_V2DI STXVD2X_VBLL_BE
+ void __builtin_vec_xst_be (vf, signed long long, vf *);
+ STXVW4X_V4SF STXVW4X_VF_BE
+ void __builtin_vec_xst_be (vf, signed long long, float *);
+ STXVW4X_V4SF STXVW4X_F_BE
+ void __builtin_vec_xst_be (vd, signed long long, vd *);
+ STXVD2X_V2DF STXVD2X_VD_BE
+ void __builtin_vec_xst_be (vd, signed long long, double *);
+ STXVD2X_V2DF STXVD2X_D_BE
+
+[VEC_XXPERMDI, vec_xxpermdi, __builtin_vsx_xxpermdi]
+ vsc __builtin_vsx_xxpermdi (vsc, vsc, const int);
+ XXPERMDI_16QI XXPERMDI_VSC
+ vuc __builtin_vsx_xxpermdi (vuc, vuc, const int);
+ XXPERMDI_16QI XXPERMDI_VUC
+ vss __builtin_vsx_xxpermdi (vss, vss, const int);
+ XXPERMDI_8HI XXPERMDI_VSS
+ vus __builtin_vsx_xxpermdi (vus, vus, const int);
+ XXPERMDI_8HI XXPERMDI_VUS
+ vsi __builtin_vsx_xxpermdi (vsi, vsi, const int);
+ XXPERMDI_4SI XXPERMDI_VSI
+ vui __builtin_vsx_xxpermdi (vui, vui, const int);
+ XXPERMDI_4SI XXPERMDI_VUI
+ vsll __builtin_vsx_xxpermdi (vsll, vsll, const int);
+ XXPERMDI_2DI XXPERMDI_VSLL
+ vull __builtin_vsx_xxpermdi (vull, vull, const int);
+ XXPERMDI_2DI XXPERMDI_VULL
+ vf __builtin_vsx_xxpermdi (vf, vf, const int);
+ XXPERMDI_4SF XXPERMDI_VF
+ vd __builtin_vsx_xxpermdi (vd, vd, const int);
+ XXPERMDI_2DF XXPERMDI_VD
+
+[VEC_XXSLDWI, vec_xxsldwi, __builtin_vsx_xxsldwi]
+ vsc __builtin_vsx_xxsldwi (vsc, vsc, const int);
+ XXSLDWI_16QI XXSLDWI_VSC2
+ vuc __builtin_vsx_xxsldwi (vuc, vuc, const int);
+ XXSLDWI_16QI XXSLDWI_VUC2
+ vss __builtin_vsx_xxsldwi (vss, vss, const int);
+ XXSLDWI_8HI XXSLDWI_VSS2
+ vus __builtin_vsx_xxsldwi (vus, vus, const int);
+ XXSLDWI_8HI XXSLDWI_VUS2
+ vsi __builtin_vsx_xxsldwi (vsi, vsi, const int);
+ XXSLDWI_4SI XXSLDWI_VSI2
+ vui __builtin_vsx_xxsldwi (vui, vui, const int);
+ XXSLDWI_4SI XXSLDWI_VUI2
+ vsll __builtin_vsx_xxsldwi (vsll, vsll, const int);
+ XXSLDWI_2DI XXSLDWI_VSLL2
+ vull __builtin_vsx_xxsldwi (vull, vull, const int);
+ XXSLDWI_2DI XXSLDWI_VULL2
+ vf __builtin_vsx_xxsldwi (vf, vf, const int);
+ XXSLDWI_4SF XXSLDWI_VF2
+ vd __builtin_vsx_xxsldwi (vd, vd, const int);
+ XXSLDWI_2DF XXSLDWI_VD2
^ permalink raw reply [flat|nested] 15+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins3)] rs6000: More progress on the overload table
@ 2020-10-13 21:41 William Schmidt
0 siblings, 0 replies; 15+ messages in thread
From: William Schmidt @ 2020-10-13 21:41 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:edbb35ace75631cfcb1c99c02724505634b5eb63
commit edbb35ace75631cfcb1c99c02724505634b5eb63
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Tue Oct 13 16:41:20 2020 -0500
rs6000: More progress on the overload table
2020-10-13 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add
deprecation comments.
* config/rs6000/rs6000-overload.def: Add more entries.
Diff:
---
gcc/config/rs6000/rs6000-call.c | 12 ++-
gcc/config/rs6000/rs6000-overload.def | 198 ++++++++++++++++++++++++++++++++++
2 files changed, 209 insertions(+), 1 deletion(-)
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index f45ffde84c2..0b621ce1498 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -2440,6 +2440,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, 0 },
{ ALTIVEC_BUILTIN_VEC_SPLAT, VSX_BUILTIN_XXSPLTD_V2DI,
RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSPLT* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSPLTW, ALTIVEC_BUILTIN_VSPLTW,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_INTSI, 0 },
{ ALTIVEC_BUILTIN_VEC_VSPLTW, ALTIVEC_BUILTIN_VSPLTW,
@@ -2478,6 +2480,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_SR, P8V_BUILTIN_VSRD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSR* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSRW, ALTIVEC_BUILTIN_VSRW,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VSRW, ALTIVEC_BUILTIN_VSRW,
@@ -2506,6 +2510,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_SRA, P8V_BUILTIN_VSRAD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSRA* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSRAW, ALTIVEC_BUILTIN_VSRAW,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VSRAW, ALTIVEC_BUILTIN_VSRAW,
@@ -2532,7 +2538,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, 0 },
{ ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V16QI, 0 },
- /* Next 3 deprecated, not in rs6000-builtin-new.def. */
+ /* Next 5 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR,
RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR,
@@ -2673,12 +2679,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_bool_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUWM,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
+ /* Next two deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_SUB, P8V_BUILTIN_VSUBUDM,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_SUB, P8V_BUILTIN_VSUBUDM,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_SUB, P8V_BUILTIN_VSUBUDM,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
+ /* Next two deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_SUB, P8V_BUILTIN_VSUBUDM,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_SUB, P8V_BUILTIN_VSUBUDM,
@@ -2694,6 +2702,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ ALTIVEC_BUILTIN_VEC_SUB, P8V_BUILTIN_VSUBUQM,
RS6000_BTI_unsigned_V1TI, RS6000_BTI_unsigned_V1TI,
RS6000_BTI_unsigned_V1TI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSUB* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSUBFP, ALTIVEC_BUILTIN_VSUBFP,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_VSUBUWM, ALTIVEC_BUILTIN_VSUBUWM,
diff --git a/gcc/config/rs6000/rs6000-overload.def b/gcc/config/rs6000/rs6000-overload.def
index 10d5e9b38f8..33e12121b45 100644
--- a/gcc/config/rs6000/rs6000-overload.def
+++ b/gcc/config/rs6000/rs6000-overload.def
@@ -1172,12 +1172,210 @@
vull __builtin_vec_sll (vull, vuc);
VSL VSL_VULL
+[VEC_SLO, vec_slo, __builtin_vec_slo]
+ vsc __builtin_vec_slo (vsc, vsc);
+ VSLO VSLO_VSCS
+ vsc __builtin_vec_slo (vsc, vuc);
+ VSLO VSLO_VSCU
+ vuc __builtin_vec_slo (vuc, vsc);
+ VSLO VSLO_VUCS
+ vuc __builtin_vec_slo (vuc, vuc);
+ VSLO VSLO_VUCU
+ vss __builtin_vec_slo (vss, vsc);
+ VSLO VSLO_VSSS
+ vss __builtin_vec_slo (vss, vuc);
+ VSLO VSLO_VSSU
+ vus __builtin_vec_slo (vus, vsc);
+ VSLO VSLO_VUSS
+ vus __builtin_vec_slo (vus, vuc);
+ VSLO VSLO_VUSU
+ vp __builtin_vec_slo (vp, vsc);
+ VSLO VSLO_VPS
+ vp __builtin_vec_slo (vp, vuc);
+ VSLO VSLO_VPU
+ vsi __builtin_vec_slo (vsi, vsc);
+ VSLO VSLO_VSIS
+ vsi __builtin_vec_slo (vsi, vuc);
+ VSLO VSLO_VSIU
+ vui __builtin_vec_slo (vui, vsc);
+ VSLO VSLO_VUIS
+ vui __builtin_vec_slo (vui, vuc);
+ VSLO VSLO_VUIU
+ vsll __builtin_vec_slo (vsll, vsc);
+ VSLO VSLO_VSLLS
+ vsll __builtin_vec_slo (vsll, vuc);
+ VSLO VSLO_VSLLU
+ vull __builtin_vec_slo (vull, vsc);
+ VSLO VSLO_VULLS
+ vull __builtin_vec_slo (vull, vuc);
+ VSLO VSLO_VULLU
+ vf __builtin_vec_slo (vf, vsc);
+ VSLO VSLO_VFS
+ vf __builtin_vec_slo (vf, vuc);
+ VSLO VSLO_VFU
+
+[VEC_SPLAT, vec_splat, __builtin_vec_splat]
+ vsc __builtin_vec_splat (vsc, signed int);
+ VSPLTB VSPLTB_VSC
+ vuc __builtin_vec_splat (vuc, signed int);
+ VSPLTB VSPLTB_VUC
+ vbc __builtin_vec_splat (vbc, signed int);
+ VSPLTB VSPLTB_VBC
+ vss __builtin_vec_splat (vss, signed int);
+ VSPLTH VSPLTH_VSS
+ vus __builtin_vec_splat (vus, signed int);
+ VSPLTH VSPLTH_VUS
+ vbs __builtin_vec_splat (vbs, signed int);
+ VSPLTH VSPLTH_VBS
+ vp __builtin_vec_splat (vp, signed int);
+ VSPLTH VSPLTH_VP
+ vf __builtin_vec_splat (vf, signed int);
+ VSPLTW VSPLTW_VF
+ vsi __builtin_vec_splat (vsi, signed int);
+ VSPLTW VSPLTW_VSI
+ vui __builtin_vec_splat (vui, signed int);
+ VSPLTW VSPLTW_VUI
+ vbi __builtin_vec_splat (vbi, signed int);
+ VSPLTW VSPLTW_VBI
+ vd __builtin_vec_splat (vd, signed int);
+ XXSPLTD_V2DF
+ vsll __builtin_vec_splat (vsll, signed int);
+ XXSPLTD_V2DI XXSPLTD_VSLL
+ vull __builtin_vec_splat (vull, signed int);
+ XXSPLTD_V2DI XXSPLTD_VULL
+ vbll __builtin_vec_splat (vbll, signed int);
+ XXSPLTD_V2DI XXSPLTD_VBLL
+
[VEC_SQRT, vec_sqrt, __builtin_vec_sqrt]
vf __builtin_vec_sqrt (vf);
XVSQRTSP
vd __builtin_vec_sqrt (vd);
XVSQRTDP
+[VEC_SR, vec_sr, __builtin_vec_sr]
+ vsc __builtin_vec_sr (vsc, vuc);
+ VSRB VSRB_VSC
+ vuc __builtin_vec_sr (vuc, vuc);
+ VSRB VSRB_VUC
+ vss __builtin_vec_sr (vss, vus);
+ VSRH VSRH_VSS
+ vus __builtin_vec_sr (vus, vus);
+ VSRH VSRH_VUS
+ vsi __builtin_vec_sr (vsi, vui);
+ VSRW VSRW_VSI
+ vui __builtin_vec_sr (vui, vui);
+ VSRW VSRW_VUI
+ vsll __builtin_vec_sr (vsll, vull);
+ VSRD VSRD_VSLL
+ vull __builtin_vec_sr (vull, vull);
+ VSRD VSRD_VULL
+
+[VEC_SRA, vec_sra, __builtin_vec_sra]
+ vsc __builtin_vec_sra (vsc, vuc);
+ VSRAB VSRAB_VSC
+ vuc __builtin_vec_sra (vuc, vuc);
+ VSRAB VSRAB_VUC
+ vss __builtin_vec_sra (vss, vus);
+ VSRAH VSRAH_VSS
+ vus __builtin_vec_sra (vus, vus);
+ VSRAH VSRAH_VUS
+ vsi __builtin_vec_sra (vsi, vui);
+ VSRAW VSRAW_VSI
+ vui __builtin_vec_sra (vui, vui);
+ VSRAW VSRAW_VUI
+ vsll __builtin_vec_sra (vsll, vull);
+ VSRAD VSRAD_VSLL
+ vull __builtin_vec_sra (vull, vull);
+ VSRAD VSRAD_VULL
+
+[VEC_SRL, vec_srl, __builtin_vec_srl]
+ vsc __builtin_vec_srl (vsc, vuc);
+ VSR VSR_VSC
+ vuc __builtin_vec_srl (vuc, vuc);
+ VSR VSR_VUC
+ vss __builtin_vec_srl (vss, vuc);
+ VSR VSR_VSS
+ vus __builtin_vec_srl (vus, vuc);
+ VSR VSR_VUS
+ vp __builtin_vec_srl (vp, vuc);
+ VSR VSR_VP
+ vsi __builtin_vec_srl (vsi, vuc);
+ VSR VSR_VSI
+ vui __builtin_vec_srl (vui, vuc);
+ VSR VSR_VUI
+ vsll __builtin_vec_srl (vsll, vuc);
+ VSR VSR_VSLL
+ vull __builtin_vec_srl (vull, vuc);
+ VSR VSR_VULL
+
+[VEC_SRO, vec_sro, __builtin_vec_sro]
+ vsc __builtin_vec_sro (vsc, vsc);
+ VSRO VSRO_VSCS
+ vsc __builtin_vec_sro (vsc, vuc);
+ VSRO VSRO_VSCU
+ vuc __builtin_vec_sro (vuc, vsc);
+ VSRO VSRO_VUCS
+ vuc __builtin_vec_sro (vuc, vuc);
+ VSRO VSRO_VUCU
+ vss __builtin_vec_sro (vss, vsc);
+ VSRO VSRO_VSSS
+ vss __builtin_vec_sro (vss, vuc);
+ VSRO VSRO_VSSU
+ vus __builtin_vec_sro (vus, vsc);
+ VSRO VSRO_VUSS
+ vus __builtin_vec_sro (vus, vuc);
+ VSRO VSRO_VUSU
+ vp __builtin_vec_sro (vp, vsc);
+ VSRO VSRO_VPS
+ vp __builtin_vec_sro (vp, vuc);
+ VSRO VSRO_VPU
+ vsi __builtin_vec_sro (vsi, vsc);
+ VSRO VSRO_VSIS
+ vsi __builtin_vec_sro (vsi, vuc);
+ VSRO VSRO_VSIU
+ vui __builtin_vec_sro (vui, vsc);
+ VSRO VSRO_VUIS
+ vui __builtin_vec_sro (vui, vuc);
+ VSRO VSRO_VUIU
+ vsll __builtin_vec_sro (vsll, vsc);
+ VSRO VSRO_VSLLS
+ vsll __builtin_vec_sro (vsll, vuc);
+ VSRO VSRO_VSLLU
+ vull __builtin_vec_sro (vull, vsc);
+ VSRO VSRO_VULLS
+ vull __builtin_vec_sro (vull, vuc);
+ VSRO VSRO_VULLU
+ vf __builtin_vec_sro (vf, vsc);
+ VSRO VSRO_VFS
+ vf __builtin_vec_sro (vf, vuc);
+ VSRO VSRO_VFU
+
+[VEC_SUB, vec_sub, __builtin_vec_sub]
+ vsc __builtin_vec_sub (vsc, vsc);
+ VSUBUBM VSUBUBM_VSC
+ vuc __builtin_vec_sub (vuc, vuc);
+ VSUBUBM VSUBUBM_VUC
+ vss __builtin_vec_sub (vss, vss);
+ VSUBUHM VSUBUHM_VSS
+ vus __builtin_vec_sub (vus, vus);
+ VSUBUHM VSUBUHM_VUS
+ vsi __builtin_vec_sub (vsi, vsi);
+ VSUBUWM VSUBUWM_VSI
+ vui __builtin_vec_sub (vui, vui);
+ VSUBUWM VSUBUWM_VUI
+ vsll __builtin_vec_sub (vsll, vsll);
+ VSUBUDM VSUBUDM_VSLL
+ vull __builtin_vec_sub (vull, vull);
+ VSUBUDM VSUBUDM_VULL
+ vsq __builtin_vec_sub (vsq, vsq);
+ VSUBUQM VSUBUQM_VSQ
+ vuq __builtin_vec_sub (vuq, vuq);
+ VSUBUQM VSUBUQM_VUQ
+ vf __builtin_vec_sub (vf, vf);
+ XVSUBSP
+ vd __builtin_vec_sub (vd, vd);
+ XVSUBDP
+
[VEC_TRUNC, vec_trunc, __builtin_vec_trunc]
vf __builtin_vec_trunc (vf);
XVRSPIZ
^ permalink raw reply [flat|nested] 15+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins3)] rs6000: More progress on the overload table
@ 2020-10-12 22:06 William Schmidt
0 siblings, 0 replies; 15+ messages in thread
From: William Schmidt @ 2020-10-12 22:06 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:0e55f70860c3f377a8f5a7291379a215e88c9a0d
commit 0e55f70860c3f377a8f5a7291379a215e88c9a0d
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Mon Oct 12 17:04:43 2020 -0500
rs6000: More progress on the overload table
2020-10-12 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Minor updates.
* config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add
deprecation comments.
* config/rs6000/rs6000-gen-builtins.c (write_defines_file): Handle
SKIP directive.
* config/rs6000/rs6000-overload.def: Add more entries.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 10 +-
gcc/config/rs6000/rs6000-call.c | 25 ++
gcc/config/rs6000/rs6000-gen-builtins.c | 7 +-
gcc/config/rs6000/rs6000-overload.def | 395 ++++++++++++++++++++++++++++++-
4 files changed, 428 insertions(+), 9 deletions(-)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index 5f6eccc82e7..d6a93e6b279 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -706,7 +706,7 @@
VNMSUBFP nfmsv4sf4 {}
const vsc __builtin_altivec_vnor_v16qi (vsc, vsc);
- VNOR_V16QIS norv16qi3 {}
+ VNOR_V16QI norv16qi3 {}
const vuc __builtin_altivec_vnor_v16qi_uns (vuc, vuc);
VNOR_V16QI_UNS norv16qi3 {}
@@ -2617,16 +2617,16 @@
const vsi __builtin_altivec_vprtybw (vsi);
VPRTYBW parityv4si2 {}
- const vsll __builtin_altivec_vrldmi (vsll, vsll, vsll);
+ const vull __builtin_altivec_vrldmi (vull, vull, vull);
VRLDMI altivec_vrldmi {}
- const vsll __builtin_altivec_vrldnm (vsll, vsll);
+ const vull __builtin_altivec_vrldnm (vull, vull);
VRLDNM altivec_vrldnm {}
- const vsi __builtin_altivec_vrlwmi (vsi, vsi, vsi);
+ const vui __builtin_altivec_vrlwmi (vui, vui, vui);
VRLWMI altivec_vrlwmi {}
- const vsi __builtin_altivec_vrlwnm (vsi, vsi);
+ const vui __builtin_altivec_vrlwnm (vui, vui);
VRLWNM altivec_vrlwnm {}
const vuc __builtin_altivec_vslv (vuc, vuc);
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 71f78ff7146..f45ffde84c2 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -1559,12 +1559,14 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_MAX, ALTIVEC_BUILTIN_VMAXSW,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_MAX, P8V_BUILTIN_VMAXUD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MAX, P8V_BUILTIN_VMAXUD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MAX, P8V_BUILTIN_VMAXUD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_MAX, P8V_BUILTIN_VMAXSD,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MAX, P8V_BUILTIN_VMAXSD,
@@ -1575,6 +1577,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_MAX, VSX_BUILTIN_XVMAXDP,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VMAX* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMAXFP, ALTIVEC_BUILTIN_VMAXFP,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_VMAXSW, ALTIVEC_BUILTIN_VMAXSW,
@@ -1651,18 +1655,22 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 },
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MERGEH, VSX_BUILTIN_VEC_MERGEH_V2DI,
RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VMRGH* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMRGHW, ALTIVEC_BUILTIN_VMRGHW,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_VMRGHW, ALTIVEC_BUILTIN_VMRGHW,
@@ -1725,6 +1733,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MERGEL, VSX_BUILTIN_VEC_MERGEL_V2DI,
RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VMRGL* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMRGLW, ALTIVEC_BUILTIN_VMRGLW,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_VMRGLW, ALTIVEC_BUILTIN_VMRGLW,
@@ -1789,6 +1799,7 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_MIN, ALTIVEC_BUILTIN_VMINSW,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
+ /* Next 2 deprecated, not in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_MIN, P8V_BUILTIN_VMINUD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_MIN, P8V_BUILTIN_VMINUD,
@@ -1806,6 +1817,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_MIN, VSX_BUILTIN_XVMINDP,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VMIN* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMINFP, ALTIVEC_BUILTIN_VMINFP,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 },
{ ALTIVEC_BUILTIN_VEC_VMINSW, ALTIVEC_BUILTIN_VMINSW,
@@ -1869,6 +1882,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ ALTIVEC_BUILTIN_VEC_MULE, P8V_BUILTIN_VMULEUW,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V4SI,
RS6000_BTI_unsigned_V4SI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VMULE* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMULEUB, ALTIVEC_BUILTIN_VMULEUB,
RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 },
{ ALTIVEC_BUILTIN_VEC_VMULESB, ALTIVEC_BUILTIN_VMULESB,
@@ -1894,6 +1909,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_MULO, ALTIVEC_BUILTIN_VMULOSH,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VMULO* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VMULOSH, ALTIVEC_BUILTIN_VMULOSH,
RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 },
{ ALTIVEC_BUILTIN_VEC_VMULOUH, ALTIVEC_BUILTIN_VMULOUH,
@@ -2138,6 +2155,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
P9V_BUILTIN_VFIRSTMISMATCHOREOSINDEX_V4SI,
RS6000_BTI_UINTSI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VPK* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VPKUWUM, ALTIVEC_BUILTIN_VPKUWUM,
RS6000_BTI_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VPKUWUM, ALTIVEC_BUILTIN_VPKUWUM,
@@ -2164,6 +2183,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_PACKS, P8V_BUILTIN_VPKSDSS,
RS6000_BTI_V4SI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VPK* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VPKSWSS, ALTIVEC_BUILTIN_VPKSWSS,
RS6000_BTI_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VPKUWUS, ALTIVEC_BUILTIN_VPKUWUS,
@@ -2208,6 +2229,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ ALTIVEC_BUILTIN_VEC_RL, P8V_BUILTIN_VRLD,
RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VRL* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VRLW, ALTIVEC_BUILTIN_VRLW,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VRLW, ALTIVEC_BUILTIN_VRLW,
@@ -2252,6 +2275,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0, 0 },
{ ALTIVEC_BUILTIN_VEC_SQRT, VSX_BUILTIN_XVSQRTSP,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_VSL* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_VSLW, ALTIVEC_BUILTIN_VSLW,
RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ ALTIVEC_BUILTIN_VEC_VSLW, ALTIVEC_BUILTIN_VSLW,
diff --git a/gcc/config/rs6000/rs6000-gen-builtins.c b/gcc/config/rs6000/rs6000-gen-builtins.c
index 822a2912a32..dfd943bc3d7 100644
--- a/gcc/config/rs6000/rs6000-gen-builtins.c
+++ b/gcc/config/rs6000/rs6000-gen-builtins.c
@@ -2614,9 +2614,10 @@ static int
write_defines_file ()
{
for (int i = 0; i < num_ovld_stanzas; i++)
- fprintf (defines_file, "#define %s %s\n",
- ovld_stanzas[i].extern_name,
- ovld_stanzas[i].intern_name);
+ if (strcmp (ovld_stanzas[i].extern_name, "SKIP"))
+ fprintf (defines_file, "#define %s %s\n",
+ ovld_stanzas[i].extern_name,
+ ovld_stanzas[i].intern_name);
return 1;
}
diff --git a/gcc/config/rs6000/rs6000-overload.def b/gcc/config/rs6000/rs6000-overload.def
index 104c23b1ead..10d5e9b38f8 100644
--- a/gcc/config/rs6000/rs6000-overload.def
+++ b/gcc/config/rs6000/rs6000-overload.def
@@ -29,7 +29,8 @@
; unique internal identifier for the overload that will be used as part
; of an enumeration of all overloaded functions; <abi-name> is the name
; that will appear as a #define in altivec.h; and <builtin-name> is the
-; name that is overloaded in the back end.
+; name that is overloaded in the back end. If no #define is desired,
+; the <abi-name> should be replaced with the token SKIP.
;
; Each function entry has two lines. The first line is a prototype line.
; See rs6000-builtin-new.def for a description of the prototype line.
@@ -291,6 +292,14 @@
; Note that there is no entry for VEC_CMPLT. VEC_CMPLT is implemented
; using VEC_CMPGT with reversed arguments in altivec.h.
+[VEC_CONVERT_4F32_8I16, SKIP, __builtin_vec_convert_4f32_8i16]
+ vus __builtin_vec_convert_4f32_8i16 (vf, vf);
+ CONVERT_4F32_8I16
+
+[VEC_CONVERT_4F32_8F16, SKIP, __builtin_vec_convert_4f32_8f16]
+ vus __builtin_vec_convert_4f32_8f16 (vf, vf);
+ CONVERT_4F32_8F16
+
[VEC_COPYSIGN, vec_cpsgn, __builtin_vec_copysign]
vf __builtin_vec_copysign (vf, vf);
CPSGNSP
@@ -371,6 +380,62 @@
vf __builtin_vec_expte (vf);
VEXPTEFP
+[VEC_FIRSTMATCHINDEX, vec_first_match_index, __builtin_vec_first_match_index]
+ unsigned int __builtin_vec_first_match_index (vsc, vsc);
+ VFIRSTMATCHINDEX_V16QI FIRSTMATCHINDEX_VSC
+ unsigned int __builtin_vec_first_match_index (vuc, vuc);
+ VFIRSTMATCHINDEX_V16QI FIRSTMATCHINDEX_VUC
+ unsigned int __builtin_vec_first_match_index (vss, vss);
+ VFIRSTMATCHINDEX_V8HI FIRSTMATCHINDEX_VSS
+ unsigned int __builtin_vec_first_match_index (vus, vus);
+ VFIRSTMATCHINDEX_V8HI FIRSTMATCHINDEX_VUS
+ unsigned int __builtin_vec_first_match_index (vsi, vsi);
+ VFIRSTMATCHINDEX_V4SI FIRSTMATCHINDEX_VSI
+ unsigned int __builtin_vec_first_match_index (vui, vui);
+ VFIRSTMATCHINDEX_V4SI FIRSTMATCHINDEX_VUI
+
+[VEC_FIRSTMATCHOREOSINDEX, vec_first_match_or_eos_index, __builtin_vec_first_match_or_eos_index]
+ unsigned int __builtin_vec_first_match_or_eos_index (vsc, vsc);
+ VFIRSTMATCHOREOSINDEX_V16QI FIRSTMATCHOREOSINDEX_VSC
+ unsigned int __builtin_vec_first_match_or_eos_index (vuc, vuc);
+ VFIRSTMATCHOREOSINDEX_V16QI FIRSTMATCHOREOSINDEX_VUC
+ unsigned int __builtin_vec_first_match_or_eos_index (vss, vss);
+ VFIRSTMATCHOREOSINDEX_V8HI FIRSTMATCHOREOSINDEX_VSS
+ unsigned int __builtin_vec_first_match_or_eos_index (vus, vus);
+ VFIRSTMATCHOREOSINDEX_V8HI FIRSTMATCHOREOSINDEX_VUS
+ unsigned int __builtin_vec_first_match_or_eos_index (vsi, vsi);
+ VFIRSTMATCHOREOSINDEX_V4SI FIRSTMATCHOREOSINDEX_VSI
+ unsigned int __builtin_vec_first_match_or_eos_index (vui, vui);
+ VFIRSTMATCHOREOSINDEX_V4SI FIRSTMATCHOREOSINDEX_VUI
+
+[VEC_FIRSTMISMATCHINDEX, vec_first_mismatch_index, __builtin_vec_first_mismatch_index]
+ unsigned int __builtin_vec_first_mismatch_index (vsc, vsc);
+ VFIRSTMISMATCHINDEX_V16QI FIRSTMISMATCHINDEX_VSC
+ unsigned int __builtin_vec_first_mismatch_index (vuc, vuc);
+ VFIRSTMISMATCHINDEX_V16QI FIRSTMISMATCHINDEX_VUC
+ unsigned int __builtin_vec_first_mismatch_index (vss, vss);
+ VFIRSTMISMATCHINDEX_V8HI FIRSTMISMATCHINDEX_VSS
+ unsigned int __builtin_vec_first_mismatch_index (vus, vus);
+ VFIRSTMISMATCHINDEX_V8HI FIRSTMISMATCHINDEX_VUS
+ unsigned int __builtin_vec_first_mismatch_index (vsi, vsi);
+ VFIRSTMISMATCHINDEX_V4SI FIRSTMISMATCHINDEX_VSI
+ unsigned int __builtin_vec_first_mismatch_index (vui, vui);
+ VFIRSTMISMATCHINDEX_V4SI FIRSTMISMATCHINDEX_VUI
+
+[VEC_FIRSTMISMATCHOREOSINDEX, vec_first_mismatch_or_eos_index, __builtin_vec_first_mismatch_or_eos_index]
+ unsigned int __builtin_vec_first_mismatch_or_eos_index (vsc, vsc);
+ VFIRSTMISMATCHOREOSINDEX_V16QI FIRSTMISMATCHOREOSINDEX_VSC
+ unsigned int __builtin_vec_first_mismatch_or_eos_index (vuc, vuc);
+ VFIRSTMISMATCHOREOSINDEX_V16QI FIRSTMISMATCHOREOSINDEX_VUC
+ unsigned int __builtin_vec_first_mismatch_or_eos_index (vss, vss);
+ VFIRSTMISMATCHOREOSINDEX_V8HI FIRSTMISMATCHOREOSINDEX_VSS
+ unsigned int __builtin_vec_first_mismatch_or_eos_index (vus, vus);
+ VFIRSTMISMATCHOREOSINDEX_V8HI FIRSTMISMATCHOREOSINDEX_VUS
+ unsigned int __builtin_vec_first_mismatch_or_eos_index (vsi, vsi);
+ VFIRSTMISMATCHOREOSINDEX_V4SI FIRSTMISMATCHOREOSINDEX_VSI
+ unsigned int __builtin_vec_first_mismatch_or_eos_index (vui, vui);
+ VFIRSTMISMATCHOREOSINDEX_V4SI FIRSTMISMATCHOREOSINDEX_VUI
+
[VEC_FLOAT, vec_float, __builtin_vec_float]
vf __builtin_vec_float (vsi);
XVCVSXWSP_V4SF
@@ -733,6 +798,92 @@
vd __builtin_vec_max (vd, vd);
XVMAXDP
+[VEC_MERGEH, vec_mergeh, __builtin_vec_mergeh]
+ vbc __builtin_vec_mergeh (vbc, vbc);
+ VMRGHB VMRGHB_VBC
+ vsc __builtin_vec_mergeh (vsc, vsc);
+ VMRGHB VMRGHB_VSC
+ vuc __builtin_vec_mergeh (vuc, vuc);
+ VMRGHB VMRGHB_VUC
+ vbs __builtin_vec_mergeh (vbs, vbs);
+ VMRGHH VMRGHH_VBS
+ vss __builtin_vec_mergeh (vss, vss);
+ VMRGHH VMRGHH_VSS
+ vus __builtin_vec_mergeh (vus, vus);
+ VMRGHH VMRGHH_VUS
+ vp __builtin_vec_mergeh (vp, vp);
+ VMRGHH VMRGHH_VP
+ vbi __builtin_vec_mergeh (vbi, vbi);
+ VMRGHW VMRGHW_VBI
+ vsi __builtin_vec_mergeh (vsi, vsi);
+ VMRGHW VMRGHW_VSI
+ vui __builtin_vec_mergeh (vui, vui);
+ VMRGHW VMRGHW_VUI
+ vbll __builtin_vec_mergeh (vbll, vbll);
+ VEC_MERGEH_V2DI VEC_MERGEH_VBLL
+ vsll __builtin_vec_mergeh (vsll, vsll);
+ VEC_MERGEH_V2DI VEC_MERGEH_VSLL
+ vull __builtin_vec_mergeh (vull, vull);
+ VEC_MERGEH_V2DI VEC_MERGEH_VULL
+ vf __builtin_vec_mergeh (vf, vf);
+ VMRGHW VMRGHW_VF
+ vd __builtin_vec_mergeh (vd, vd);
+ VEC_MERGEH_V2DF
+
+[VEC_MERGEL, vec_mergel, __builtin_vec_mergel]
+ vbc __builtin_vec_mergel (vbc, vbc);
+ VMRGLB VMRGLB_VBC
+ vsc __builtin_vec_mergel (vsc, vsc);
+ VMRGLB VMRGLB_VSC
+ vuc __builtin_vec_mergel (vuc, vuc);
+ VMRGLB VMRGLB_VUC
+ vbs __builtin_vec_mergel (vbs, vbs);
+ VMRGLH VMRGLH_VBS
+ vss __builtin_vec_mergel (vss, vss);
+ VMRGLH VMRGLH_VSS
+ vus __builtin_vec_mergel (vus, vus);
+ VMRGLH VMRGLH_VUS
+ vp __builtin_vec_mergel (vp, vp);
+ VMRGLH VMRGLH_VP
+ vbi __builtin_vec_mergel (vbi, vbi);
+ VMRGLW VMRGLW_VBI
+ vsi __builtin_vec_mergel (vsi, vsi);
+ VMRGLW VMRGLW_VSI
+ vui __builtin_vec_mergel (vui, vui);
+ VMRGLW VMRGLW_VUI
+ vbll __builtin_vec_mergel (vbll, vbll);
+ VEC_MERGEL_V2DI VEC_MERGEL_VBLL
+ vsll __builtin_vec_mergel (vsll, vsll);
+ VEC_MERGEL_V2DI VEC_MERGEL_VSLL
+ vull __builtin_vec_mergel (vull, vull);
+ VEC_MERGEL_V2DI VEC_MERGEL_VULL
+ vf __builtin_vec_mergel (vf, vf);
+ VMRGLW VMRGLW_VF
+ vd __builtin_vec_mergel (vd, vd);
+ VEC_MERGEL_V2DF
+
+[VEC_MIN, vec_min, __builtin_vec_min]
+ vsc __builtin_vec_min (vsc, vsc);
+ VMINSB
+ vuc __builtin_vec_min (vuc, vuc);
+ VMINUB
+ vss __builtin_vec_min (vss, vss);
+ VMINSH
+ vus __builtin_vec_min (vus, vus);
+ VMINUH
+ vsi __builtin_vec_min (vsi, vsi);
+ VMINSW
+ vui __builtin_vec_min (vui, vui);
+ VMINUW
+ vsll __builtin_vec_min (vsll, vsll);
+ VMINSD
+ vull __builtin_vec_min (vull, vull);
+ VMINUD
+ vf __builtin_vec_min (vf, vf);
+ XVMINSP
+ vd __builtin_vec_min (vd, vd);
+ XVMINDP
+
[VEC_MTVSCR, vec_mtvscr, __builtin_vec_mtvscr]
void __builtin_vec_mtvscr (vbc);
MTVSCR MTVSCR_VBC
@@ -755,6 +906,168 @@
void __builtin_vec_mtvscr (vui);
MTVSCR MTVSCR_VUI
+[VEC_MULE, vec_mule, __builtin_vec_mule]
+ vss __builtin_vec_mule (vsc, vsc);
+ VMULESB
+ vus __builtin_vec_mule (vuc, vuc);
+ VMULEUB
+ vsi __builtin_vec_mule (vss, vss);
+ VMULESH
+ vui __builtin_vec_mule (vus, vus);
+ VMULEUH
+ vsll __builtin_vec_mule (vsi, vsi);
+ VMULESW
+ vull __builtin_vec_mule (vui, vui);
+ VMULEUW
+
+[VEC_MULO, vec_mulo, __builtin_vec_mulo]
+ vss __builtin_vec_mulo (vsc, vsc);
+ VMULOSB
+ vus __builtin_vec_mulo (vuc, vuc);
+ VMULOUB
+ vsi __builtin_vec_mulo (vss, vss);
+ VMULOSH
+ vui __builtin_vec_mulo (vus, vus);
+ VMULOUH
+ vsll __builtin_vec_mulo (vsi, vsi);
+ VMULOSW
+ vull __builtin_vec_mulo (vui, vui);
+ VMULOUW
+
+[VEC_NABS, vec_nabs, __builtin_vec_nabs]
+ vsc __builtin_vec_nabs (vsc);
+ NABS_V16QI
+ vss __builtin_vec_nabs (vss);
+ NABS_V8HI
+ vsi __builtin_vec_nabs (vsi);
+ NABS_V4SI
+ vsll __builtin_vec_nabs (vsll);
+ NABS_V2DI
+ vf __builtin_vec_nabs (vf);
+ NABS_V4SF
+ vd __builtin_vec_nabs (vd);
+ NABS_V2DF
+
+[VEC_NEARBYINT, vec_nearbyint, __builtin_vec_nearbyint]
+ vf __builtin_vec_nearbyint (vf);
+ XVRSPI XVRSPI_NBI
+ vd __builtin_vec_nearbyint (vd);
+ XVRDPI XVRDPI_NBI
+
+[VEC_NEG, vec_neg, __builtin_vec_neg]
+ vsc __builtin_vec_neg (vsc);
+ NEG_V16QI
+ vss __builtin_vec_neg (vss);
+ NEG_V8HI
+ vsi __builtin_vec_neg (vsi);
+ NEG_V4SI
+ vsll __builtin_vec_neg (vsll);
+ NEG_V2DI
+ vf __builtin_vec_neg (vf);
+ NEG_V4SF
+ vd __builtin_vec_neg (vd);
+ NEG_V2DF
+
+[VEC_NOR, vec_nor, __builtin_vec_nor]
+ vsc __builtin_vec_nor (vsc, vsc);
+ VNOR_V16QI
+ vuc __builtin_vec_nor (vuc, vuc);
+ VNOR_V16QI_UNS VNOR_V16QI_U
+ vbc __builtin_vec_nor (vbc, vbc);
+ VNOR_V16QI_UNS VNOR_V16QI_B
+ vss __builtin_vec_nor (vss, vss);
+ VNOR_V8HI
+ vus __builtin_vec_nor (vus, vus);
+ VNOR_V8HI_UNS VNOR_V8HI_U
+ vbs __builtin_vec_nor (vbs, vbs);
+ VNOR_V8HI_UNS VNOR_V8HI_B
+ vsi __builtin_vec_nor (vsi, vsi);
+ VNOR_V4SI
+ vui __builtin_vec_nor (vui, vui);
+ VNOR_V4SI_UNS VNOR_V4SI_U
+ vbi __builtin_vec_nor (vbi, vbi);
+ VNOR_V4SI_UNS VNOR_V4SI_B
+ vsll __builtin_vec_nor (vsll, vsll);
+ VNOR_V2DI
+ vull __builtin_vec_nor (vull, vull);
+ VNOR_V2DI_UNS VNOR_V2DI_U
+ vbll __builtin_vec_nor (vbll, vbll);
+ VNOR_V2DI_UNS VNOR_V2DI_B
+ vf __builtin_vec_nor (vf, vf);
+ VNOR_V4SF
+ vd __builtin_vec_nor (vd, vd);
+ VNOR_V2DF
+
+[VEC_OR, vec_or, __builtin_vec_or]
+ vsc __builtin_vec_or (vsc, vsc);
+ VOR_V16QI
+ vuc __builtin_vec_or (vuc, vuc);
+ VOR_V16QI_UNS VOR_V16QI_U
+ vbc __builtin_vec_or (vbc, vbc);
+ VOR_V16QI_UNS VOR_V16QI_B
+ vss __builtin_vec_or (vss, vss);
+ VOR_V8HI
+ vus __builtin_vec_or (vus, vus);
+ VOR_V8HI_UNS VOR_V8HI_U
+ vbs __builtin_vec_or (vbs, vbs);
+ VOR_V8HI_UNS VOR_V8HI_B
+ vsi __builtin_vec_or (vsi, vsi);
+ VOR_V4SI
+ vui __builtin_vec_or (vui, vui);
+ VOR_V4SI_UNS VOR_V4SI_U
+ vbi __builtin_vec_or (vbi, vbi);
+ VOR_V4SI_UNS VOR_V4SI_B
+ vsll __builtin_vec_or (vsll, vsll);
+ VOR_V2DI
+ vull __builtin_vec_or (vull, vull);
+ VOR_V2DI_UNS VOR_V2DI_U
+ vbll __builtin_vec_or (vbll, vbll);
+ VOR_V2DI_UNS VOR_V2DI_B
+ vf __builtin_vec_or (vf, vf);
+ VOR_V4SF
+ vd __builtin_vec_or (vd, vd);
+ VOR_V2DF
+
+[VEC_PACK, vec_pack, __builtin_vec_pack]
+ vsc __builtin_vec_pack (vss, vss);
+ VPKUHUM VPKUHUM_VSS
+ vuc __builtin_vec_pack (vus, vus);
+ VPKUHUM VPKUHUM_VUS
+ vbc __builtin_vec_pack (vbs, vbs);
+ VPKUHUM VPKUHUM_VBS
+ vss __builtin_vec_pack (vsi, vsi);
+ VPKUWUM VPKUWUM_VSI
+ vus __builtin_vec_pack (vui, vui);
+ VPKUWUM VPKUWUM_VUI
+ vbs __builtin_vec_pack (vbi, vbi);
+ VPKUWUM VPKUWUM_VBI
+ vsi __builtin_vec_pack (vsll, vsll);
+ VPKUDUM VPKUDUM_VSLL
+ vui __builtin_vec_pack (vull, vull);
+ VPKUDUM VPKUDUM_VULL
+ vbi __builtin_vec_pack (vbll, vbll);
+ VPKUDUM VPKUDUM_VBLL
+ vf __builtin_vec_pack (vd, vd);
+ FLOAT2_V2DF FLOAT2_V2DF_PACK
+
+[VEC_PACKPX, vec_packpx, __builtin_vec_packpx]
+ vp __builtin_vec_packpx (vui, vui);
+ VPKPX
+
+[VEC_PACKS, vec_packs, __builtin_vec_packs]
+ vuc __builtin_vec_packs (vus, vus);
+ VPKUHUS
+ vsc __builtin_vec_packs (vss, vss);
+ VPKSHSS
+ vus __builtin_vec_packs (vui, vui);
+ VPKUWUS
+ vss __builtin_vec_packs (vsi, vsi);
+ VPKSWSS
+ vui __builtin_vec_packs (vull, vull);
+ VPKUDUS
+ vsi __builtin_vec_packs (vsll, vsll);
+ VPKSDSS
+
[VEC_RE, vec_re, __builtin_vec_re]
vf __builtin_vec_re (vf);
XVRESP
@@ -767,6 +1080,42 @@
vd __builtin_vec_recipdiv (vd, vd);
RECIP_V2DF
+[VEC_RINT, vec_rint, __builtin_vec_rint]
+ vf __builtin_vec_rint (vf);
+ XVRSPIC
+ vd __builtin_vec_rint (vd);
+ XVRDPIC
+
+[VEC_RL, vec_rl, __builtin_vec_rl]
+ vsc __builtin_vec_rl (vsc, vuc);
+ VRLB VRLB_VSC
+ vuc __builtin_vec_rl (vuc, vuc);
+ VRLB VRLB_VUC
+ vss __builtin_vec_rl (vss, vus);
+ VRLH VRLH_VSS
+ vus __builtin_vec_rl (vus, vus);
+ VRLH VRLH_VUS
+ vsi __builtin_vec_rl (vsi, vui);
+ VRLW VRLW_VSI
+ vui __builtin_vec_rl (vui, vui);
+ VRLW VRLW_VUI
+ vsll __builtin_vec_rl (vsll, vull);
+ VRLD VRLD_VSLL
+ vull __builtin_vec_rl (vull, vull);
+ VRLD VRLD_VULL
+
+[VEC_RLMI, vec_rlmi, __builtin_vec_rlmi]
+ vui __builtin_vec_rlmi (vui, vui, vui);
+ VRLWMI
+ vull __builtin_vec_rlmi (vull, vull, vull);
+ VRLDMI
+
+[VEC_RLNM, vec_rlnm, __builtin_vec_rlnm]
+ vui __builtin_vec_rlnm (vui, vui);
+ VRLWNM
+ vull __builtin_vec_rlnm (vull, vull);
+ VRLDNM
+
[VEC_ROUND, vec_round, __builtin_vec_round]
vf __builtin_vec_round (vf);
XVRSPI
@@ -785,6 +1134,50 @@
vd __builtin_vec_rsqrte (vd);
XVRSQRTEDP
+[VEC_SL, vec_sl, __builtin_vec_sl]
+ vsc __builtin_vec_sl (vsc, vuc);
+ VSLB VSLB_VSC
+ vuc __builtin_vec_sl (vuc, vuc);
+ VSLB VSLB_VUC
+ vss __builtin_vec_sl (vss, vus);
+ VSLH VSLH_VSS
+ vus __builtin_vec_sl (vus, vus);
+ VSLH VSLH_VUS
+ vsi __builtin_vec_sl (vsi, vui);
+ VSLW VSLW_VSI
+ vui __builtin_vec_sl (vui, vui);
+ VSLW VSLW_VUI
+ vsll __builtin_vec_sl (vsll, vull);
+ VSLD VSLD_VSLL
+ vull __builtin_vec_sl (vull, vull);
+ VSLD VSLD_VULL
+
+[VEC_SLL, vec_sll, __builtin_vec_sll]
+ vsc __builtin_vec_sll (vsc, vuc);
+ VSL VSL_VSC
+ vuc __builtin_vec_sll (vuc, vuc);
+ VSL VSL_VUC
+ vss __builtin_vec_sll (vss, vuc);
+ VSL VSL_VSS
+ vus __builtin_vec_sll (vus, vuc);
+ VSL VSL_VUS
+ vp __builtin_vec_sll (vp, vuc);
+ VSL VSL_VP
+ vsi __builtin_vec_sll (vsi, vuc);
+ VSL VSL_VSI
+ vui __builtin_vec_sll (vui, vuc);
+ VSL VSL_VUI
+ vsll __builtin_vec_sll (vsll, vuc);
+ VSL VSL_VSLL
+ vull __builtin_vec_sll (vull, vuc);
+ VSL VSL_VULL
+
+[VEC_SQRT, vec_sqrt, __builtin_vec_sqrt]
+ vf __builtin_vec_sqrt (vf);
+ XVSQRTSP
+ vd __builtin_vec_sqrt (vd);
+ XVSQRTDP
+
[VEC_TRUNC, vec_trunc, __builtin_vec_trunc]
vf __builtin_vec_trunc (vf);
XVRSPIZ
^ permalink raw reply [flat|nested] 15+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins3)] rs6000: More progress on the overload table
@ 2020-10-12 14:13 William Schmidt
0 siblings, 0 replies; 15+ messages in thread
From: William Schmidt @ 2020-10-12 14:13 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:e500df729dcefbbff7a567b3660031b8eb330475
commit e500df729dcefbbff7a567b3660031b8eb330475
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Mon Oct 12 09:12:59 2020 -0500
rs6000: More progress on the overload table
2020-10-12 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Move Cell builtins to
their own stanza; add LVXL_V1TI.
* config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add
deprecation comments.
(rs6000_expand_builtin): Add ENB_CELL handling.
* config/rs6000/rs6000-gen-builtins.c (bif_stanza): Add BSTZ_CELL.
(stanza_map): Add "cell" entry mapping to BSTZ_CELL.
(enable_string): Add ENB_CELL.
(write_decls): Write ENB_CELL entry.
* config/rs6000/rs6000-overload.def: Add more entries.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 54 +++---
gcc/config/rs6000/rs6000-call.c | 6 +
gcc/config/rs6000/rs6000-gen-builtins.c | 4 +
gcc/config/rs6000/rs6000-overload.def | 320 ++++++++++++++++++++++++++++++-
4 files changed, 359 insertions(+), 25 deletions(-)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index bb5d9b6f87c..5f6eccc82e7 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -300,18 +300,6 @@
pure vop __builtin_altivec_lvewx (signed long long, const void *);
LVEWX altivec_lvewx {ldvec}
- pure vop __builtin_altivec_lvlx (signed long long, const void *);
- LVLX altivec_lvlx {ldvec}
-
- pure vop __builtin_altivec_lvlxl (signed long long, const void *);
- LVLXL altivec_lvlxl {ldvec}
-
- pure vop __builtin_altivec_lvrx (signed long long, const void *);
- LVRX altivec_lvrx {ldvec}
-
- pure vop __builtin_altivec_lvrxl (signed long long, const void *);
- LVRXL altivec_lvrxl {ldvec}
-
pure vuc __builtin_altivec_lvsl (signed long long, const void *);
LVSL altivec_lvsl {ldvec}
@@ -378,18 +366,6 @@
void __builtin_altivec_stvewx (vsi, signed long long, void *);
STVEWX altivec_stvewx {stvec}
- void __builtin_altivec_stvlx (vop, signed long long, void *);
- STVLX altivec_stvlx {stvec}
-
- void __builtin_altivec_stvlxl (vop, signed long long, void *);
- STVLXL altivec_stvlxl {stvec}
-
- void __builtin_altivec_stvrx (vop, signed long long, void *);
- STVRX altivec_stvrx {stvec}
-
- void __builtin_altivec_stvrxl (vop, signed long long, void *);
- STVRXL altivec_stvrxl {stvec}
-
void __builtin_altivec_stvx (vsi, signed long long, void *);
STVX altivec_stvx_v4si {stvec}
@@ -1093,6 +1069,33 @@
VEC_SET_V8HI nothing {set}
+; Cell builtins.
+[cell]
+ pure vop __builtin_altivec_lvlx (signed long long, const void *);
+ LVLX altivec_lvlx {ldvec}
+
+ pure vop __builtin_altivec_lvlxl (signed long long, const void *);
+ LVLXL altivec_lvlxl {ldvec}
+
+ pure vop __builtin_altivec_lvrx (signed long long, const void *);
+ LVRX altivec_lvrx {ldvec}
+
+ pure vop __builtin_altivec_lvrxl (signed long long, const void *);
+ LVRXL altivec_lvrxl {ldvec}
+
+ void __builtin_altivec_stvlx (vop, signed long long, void *);
+ STVLX altivec_stvlx {stvec}
+
+ void __builtin_altivec_stvlxl (vop, signed long long, void *);
+ STVLXL altivec_stvlxl {stvec}
+
+ void __builtin_altivec_stvrx (vop, signed long long, void *);
+ STVRX altivec_stvrx {stvec}
+
+ void __builtin_altivec_stvrxl (vop, signed long long, void *);
+ STVRXL altivec_stvrxl {stvec}
+
+
; VSX builtins.
[vsx]
pure vsq __builtin_altivec_lvx_v1ti (signed long long, const void *);
@@ -1104,6 +1107,9 @@
pure vsll __builtin_altivec_lvx_v2di (signed long long, const void *);
LVX_V2DI altivec_lvx_v2di {ldvec}
+ pure vuq __builtin_altivec_lvxl_v1ti (signed long long, const void *);
+ LVXL_V1TI altivec_lvxl_v1ti {ldvec}
+
pure vd __builtin_altivec_lvxl_v2df (signed long long, const void *);
LVXL_V2DF altivec_lvxl_v2df {ldvec}
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 098089129f1..71f78ff7146 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -1190,6 +1190,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_long, 0 },
{ ALTIVEC_BUILTIN_VEC_LDE, ALTIVEC_BUILTIN_LVEWX,
RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_long, 0 },
+ /* All ALTIVEC_BUILTIN_VEC_LVE* are deprecated and not included
+ in rs6000-builtin-new.def. */
{ ALTIVEC_BUILTIN_VEC_LVEWX, ALTIVEC_BUILTIN_LVEWX,
RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float, 0 },
{ ALTIVEC_BUILTIN_VEC_LVEWX, ALTIVEC_BUILTIN_LVEWX,
@@ -13341,6 +13343,10 @@ rs6000_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
if (!TARGET_ALTIVEC)
return const0_rtx;
break;
+ case ENB_CELL:
+ if (!TARGET_ALTIVEC || rs6000_cpu != PROCESSOR_CELL)
+ return const0_rtx;
+ break;
case ENB_VSX:
if (!TARGET_VSX)
return const0_rtx;
diff --git a/gcc/config/rs6000/rs6000-gen-builtins.c b/gcc/config/rs6000/rs6000-gen-builtins.c
index e5e63b29667..822a2912a32 100644
--- a/gcc/config/rs6000/rs6000-gen-builtins.c
+++ b/gcc/config/rs6000/rs6000-gen-builtins.c
@@ -183,6 +183,7 @@ enum bif_stanza {
BSTZ_P5,
BSTZ_P6,
BSTZ_ALTIVEC,
+ BSTZ_CELL,
BSTZ_VSX,
BSTZ_P7,
BSTZ_P7_64,
@@ -215,6 +216,7 @@ static stanza_entry stanza_map[NUMBIFSTANZAS] =
{ "power5", BSTZ_P5 },
{ "power6", BSTZ_P6 },
{ "altivec", BSTZ_ALTIVEC },
+ { "cell", BSTZ_CELL },
{ "vsx", BSTZ_VSX },
{ "power7", BSTZ_P7 },
{ "power7-64", BSTZ_P7_64 },
@@ -238,6 +240,7 @@ static const char *enable_string[NUMBIFSTANZAS] =
"ENB_P5",
"ENB_P6",
"ENB_ALTIVEC",
+ "ENB_CELL",
"ENB_VSX",
"ENB_P7",
"ENB_P7_64",
@@ -2067,6 +2070,7 @@ write_decls ()
fprintf (header_file, " ENB_P5,\n");
fprintf (header_file, " ENB_P6,\n");
fprintf (header_file, " ENB_ALTIVEC,\n");
+ fprintf (header_file, " ENB_CELL,\n");
fprintf (header_file, " ENB_VSX,\n");
fprintf (header_file, " ENB_P7,\n");
fprintf (header_file, " ENB_P7_64,\n");
diff --git a/gcc/config/rs6000/rs6000-overload.def b/gcc/config/rs6000/rs6000-overload.def
index 6e21385c0f1..104c23b1ead 100644
--- a/gcc/config/rs6000/rs6000-overload.def
+++ b/gcc/config/rs6000/rs6000-overload.def
@@ -408,13 +408,331 @@
XVRDPIM
[VEC_LD, vec_ld, __builtin_vec_ld]
+ vsc __builtin_vec_ld (signed long long, vsc *);
+ LVX_V16QI LVX_V16QI_VSC
+ vsc __builtin_vec_ld (signed long long, signed char *);
+ LVX_V16QI LVX_V16QI_SC
+ vuc __builtin_vec_ld (signed long long, vuc *);
+ LVX_V16QI LVX_V16QI_VUC
+ vuc __builtin_vec_ld (signed long long, unsigned char *);
+ LVX_V16QI LVX_V16QI_UC
+ vbc __builtin_vec_ld (signed long long, vbc *);
+ LVX_V16QI LVX_V16QI_VBC
+ vss __builtin_vec_ld (signed long long, vss *);
+ LVX_V8HI LVX_V8HI_VSS
+ vss __builtin_vec_ld (signed long long, signed short *);
+ LVX_V8HI LVX_V8HI_SS
+ vus __builtin_vec_ld (signed long long, vus *);
+ LVX_V8HI LVX_V8HI_VUS
+ vus __builtin_vec_ld (signed long long, unsigned short *);
+ LVX_V8HI LVX_V8HI_US
+ vbs __builtin_vec_ld (signed long long, vbs *);
+ LVX_V8HI LVX_V8HI_VBS
+ vp __builtin_vec_ld (signed long long, vp *);
+ LVX_V8HI LVX_V8HI_VP
+ vsi __builtin_vec_ld (signed long long, vsi *);
+ LVX_V4SI LVX_V4SI_VSI
+ vsi __builtin_vec_ld (signed long long, signed int *);
+ LVX_V4SI LVX_V4SI_SI
+ vui __builtin_vec_ld (signed long long, vui *);
+ LVX_V4SI LVX_V4SI_VUI
+ vui __builtin_vec_ld (signed long long, unsigned int *);
+ LVX_V4SI LVX_V4SI_UI
+ vbi __builtin_vec_ld (signed long long, vbi *);
+ LVX_V4SI LVX_V4SI_VBI
+ vsll __builtin_vec_ld (signed long long, vsll *);
+ LVX_V2DI LVX_V2DI_VSLL
+ vsll __builtin_vec_ld (signed long long, signed long long *);
+ LVX_V2DI LVX_V2DI_SLL
+ vull __builtin_vec_ld (signed long long, vull *);
+ LVX_V2DI LVX_V2DI_VULL
+ vull __builtin_vec_ld (signed long long, unsigned long long *);
+ LVX_V2DI LVX_V2DI_ULL
+ vbll __builtin_vec_ld (signed long long, vbll *);
+ LVX_V2DI LVX_V2DI_VBLL
vsq __builtin_vec_ld (signed long long, const vsq *);
- LVX_V1TI
+ LVX_V1TI LVX_V1TI_VSQ
+ vuq __builtin_vec_ld (signed long long, const vuq *);
+ LVX_V1TI LVX_V1TI_VUQ
+ vsq __builtin_vec_ld (signed long long, __int128 *);
+ LVX_V1TI LVX_V1TI_TI
+ vuq __builtin_vec_ld (signed long long, unsigned __int128 *);
+ LVX_V1TI LVX_V1TI_UTI
+ vf __builtin_vec_ld (signed long long, vf *);
+ LVX_V4SF LVX_V4SF_VF
+ vf __builtin_vec_ld (signed long long, float *);
+ LVX_V4SF LVX_V4SF_F
+ vd __builtin_vec_ld (signed long long, vd *);
+ LVX_V2DF LVX_V2DF_VD
+ vd __builtin_vec_ld (signed long long, double *);
+ LVX_V2DF LVX_V2DF_D
+
+[VEC_LDE, vec_lde, __builtin_vec_lde]
+ vsc __builtin_vec_lde (signed long long, signed char *);
+ LVEBX LVEBX_SC
+ vuc __builtin_vec_lde (signed long long, unsigned char *);
+ LVEBX LVEBX_UC
+ vss __builtin_vec_lde (signed long long, signed short *);
+ LVEHX LVEHX_SS
+ vus __builtin_vec_lde (signed long long, unsigned short *);
+ LVEHX LVEHX_US
+ vsi __builtin_vec_lde (signed long long, signed int *);
+ LVEWX LVEWX_SI
+ vui __builtin_vec_lde (signed long long, unsigned int *);
+ LVEWX LVEWX_UI
+ vf __builtin_vec_lde (signed long long, float *);
+ LVEWX LVEWX_F
+
+[VEC_LDL, vec_ldl, __builtin_vec_ldl]
+ vsc __builtin_vec_ldl (signed long long, vsc *);
+ LVXL_V16QI LVXL_V16QI_VSC
+ vsc __builtin_vec_ldl (signed long long, signed char *);
+ LVXL_V16QI LVXL_V16QI_SC
+ vuc __builtin_vec_ldl (signed long long, vuc *);
+ LVXL_V16QI LVXL_V16QI_VUC
+ vuc __builtin_vec_ldl (signed long long, unsigned char *);
+ LVXL_V16QI LVXL_V16QI_UC
+ vbc __builtin_vec_ldl (signed long long, vbc *);
+ LVXL_V16QI LVXL_V16QI_VBC
+ vss __builtin_vec_ldl (signed long long, vss *);
+ LVXL_V8HI LVXL_V8HI_VSS
+ vss __builtin_vec_ldl (signed long long, signed short *);
+ LVXL_V8HI LVXL_V8HI_SS
+ vus __builtin_vec_ldl (signed long long, vus *);
+ LVXL_V8HI LVXL_V8HI_VUS
+ vus __builtin_vec_ldl (signed long long, unsigned short *);
+ LVXL_V8HI LVXL_V8HI_US
+ vbs __builtin_vec_ldl (signed long long, vbs *);
+ LVXL_V8HI LVXL_V8HI_VBS
+ vp __builtin_vec_ldl (signed long long, vp *);
+ LVXL_V8HI LVXL_V8HI_VP
+ vsi __builtin_vec_ldl (signed long long, vsi *);
+ LVXL_V4SI LVXL_V4SI_VSI
+ vsi __builtin_vec_ldl (signed long long, signed int *);
+ LVXL_V4SI LVXL_V4SI_SI
+ vui __builtin_vec_ldl (signed long long, vui *);
+ LVXL_V4SI LVXL_V4SI_VUI
+ vui __builtin_vec_ldl (signed long long, unsigned int *);
+ LVXL_V4SI LVXL_V4SI_UI
+ vbi __builtin_vec_ldl (signed long long, vbi *);
+ LVXL_V4SI LVXL_V4SI_VBI
+ vsll __builtin_vec_ldl (signed long long, vsll *);
+ LVXL_V2DI LVXL_V2DI_VSLL
+ vsll __builtin_vec_ldl (signed long long, signed long long *);
+ LVXL_V2DI LVXL_V2DI_SLL
+ vull __builtin_vec_ldl (signed long long, vull *);
+ LVXL_V2DI LVXL_V2DI_VULL
+ vull __builtin_vec_ldl (signed long long, unsigned long long *);
+ LVXL_V2DI LVXL_V2DI_ULL
+ vbll __builtin_vec_ldl (signed long long, vbll *);
+ LVXL_V2DI LVXL_V2DI_VBLL
+ vsq __builtin_vec_ldl (signed long long, const vsq *);
+ LVXL_V1TI LVXL_V1TI_VSQ
+ vuq __builtin_vec_ldl (signed long long, const vuq *);
+ LVXL_V1TI LVXL_V1TI_VUQ
+ vsq __builtin_vec_ldl (signed long long, __int128 *);
+ LVXL_V1TI LVXL_V1TI_TI
+ vuq __builtin_vec_ldl (signed long long, unsigned __int128 *);
+ LVXL_V1TI LVXL_V1TI_UTI
+ vf __builtin_vec_ldl (signed long long, vf *);
+ LVXL_V4SF LVXL_V4SF_VF
+ vf __builtin_vec_ldl (signed long long, float *);
+ LVXL_V4SF LVXL_V4SF_F
+ vd __builtin_vec_ldl (signed long long, vd *);
+ LVXL_V2DF LVXL_V2DF_VD
+ vd __builtin_vec_ldl (signed long long, double *);
+ LVXL_V2DF LVXL_V2DF_D
[VEC_LOGE, vec_loge, __builtin_vec_loge]
vf __builtin_vec_loge (vf);
VLOGEFP
+[VEC_LVLX, vec_lvlx, __builtin_vec_lvlx]
+ vbc __builtin_vec_lvlx (signed long long, vbc *);
+ LVLX LVLX_VBC
+ vsc __builtin_vec_lvlx (signed long long, vsc *);
+ LVLX LVLX_VSC
+ vsc __builtin_vec_lvlx (signed long long, signed char *);
+ LVLX LVLX_SC
+ vuc __builtin_vec_lvlx (signed long long, vuc *);
+ LVLX LVLX_VUC
+ vuc __builtin_vec_lvlx (signed long long, unsigned char *);
+ LVLX LVLX_UC
+ vbs __builtin_vec_lvlx (signed long long, vbs *);
+ LVLX LVLX_VBS
+ vss __builtin_vec_lvlx (signed long long, vss *);
+ LVLX LVLX_VSS
+ vss __builtin_vec_lvlx (signed long long, signed short *);
+ LVLX LVLX_SS
+ vus __builtin_vec_lvlx (signed long long, vus *);
+ LVLX LVLX_VUS
+ vus __builtin_vec_lvlx (signed long long, unsigned short *);
+ LVLX LVLX_US
+ vp __builtin_vec_lvlx (signed long long, vp *);
+ LVLX LVLX_VP
+ vbi __builtin_vec_lvlx (signed long long, vbi *);
+ LVLX LVLX_VBI
+ vsi __builtin_vec_lvlx (signed long long, vsi *);
+ LVLX LVLX_VSI
+ vsi __builtin_vec_lvlx (signed long long, signed int *);
+ LVLX LVLX_SI
+ vui __builtin_vec_lvlx (signed long long, vui *);
+ LVLX LVLX_VUI
+ vui __builtin_vec_lvlx (signed long long, unsigned int *);
+ LVLX LVLX_UI
+ vf __builtin_vec_lvlx (signed long long, vf *);
+ LVLX LVLX_VF
+ vf __builtin_vec_lvlx (signed long long, float *);
+ LVLX LVLX_F
+
+[VEC_LVLXL, vec_lvlxl, __builtin_vec_lvlxl]
+ vbc __builtin_vec_lvlxl (signed long long, vbc *);
+ LVLXL LVLXL_VBC
+ vsc __builtin_vec_lvlxl (signed long long, vsc *);
+ LVLXL LVLXL_VSC
+ vsc __builtin_vec_lvlxl (signed long long, signed char *);
+ LVLXL LVLXL_SC
+ vuc __builtin_vec_lvlxl (signed long long, vuc *);
+ LVLXL LVLXL_VUC
+ vuc __builtin_vec_lvlxl (signed long long, unsigned char *);
+ LVLXL LVLXL_UC
+ vbs __builtin_vec_lvlxl (signed long long, vbs *);
+ LVLXL LVLXL_VBS
+ vss __builtin_vec_lvlxl (signed long long, vss *);
+ LVLXL LVLXL_VSS
+ vss __builtin_vec_lvlxl (signed long long, signed short *);
+ LVLXL LVLXL_SS
+ vus __builtin_vec_lvlxl (signed long long, vus *);
+ LVLXL LVLXL_VUS
+ vus __builtin_vec_lvlxl (signed long long, unsigned short *);
+ LVLXL LVLXL_US
+ vp __builtin_vec_lvlxl (signed long long, vp *);
+ LVLXL LVLXL_VP
+ vbi __builtin_vec_lvlxl (signed long long, vbi *);
+ LVLXL LVLXL_VBI
+ vsi __builtin_vec_lvlxl (signed long long, vsi *);
+ LVLXL LVLXL_VSI
+ vsi __builtin_vec_lvlxl (signed long long, signed int *);
+ LVLXL LVLXL_SI
+ vui __builtin_vec_lvlxl (signed long long, vui *);
+ LVLXL LVLXL_VUI
+ vui __builtin_vec_lvlxl (signed long long, unsigned int *);
+ LVLXL LVLXL_UI
+ vf __builtin_vec_lvlxl (signed long long, vf *);
+ LVLXL LVLXL_VF
+ vf __builtin_vec_lvlxl (signed long long, float *);
+ LVLXL LVLXL_F
+
+[VEC_LVRX, vec_lvrx, __builtin_vec_lvrx]
+ vbc __builtin_vec_lvrx (signed long long, vbc *);
+ LVRX LVRX_VBC
+ vsc __builtin_vec_lvrx (signed long long, vsc *);
+ LVRX LVRX_VSC
+ vsc __builtin_vec_lvrx (signed long long, signed char *);
+ LVRX LVRX_SC
+ vuc __builtin_vec_lvrx (signed long long, vuc *);
+ LVRX LVRX_VUC
+ vuc __builtin_vec_lvrx (signed long long, unsigned char *);
+ LVRX LVRX_UC
+ vbs __builtin_vec_lvrx (signed long long, vbs *);
+ LVRX LVRX_VBS
+ vss __builtin_vec_lvrx (signed long long, vss *);
+ LVRX LVRX_VSS
+ vss __builtin_vec_lvrx (signed long long, signed short *);
+ LVRX LVRX_SS
+ vus __builtin_vec_lvrx (signed long long, vus *);
+ LVRX LVRX_VUS
+ vus __builtin_vec_lvrx (signed long long, unsigned short *);
+ LVRX LVRX_US
+ vp __builtin_vec_lvrx (signed long long, vp *);
+ LVRX LVRX_VP
+ vbi __builtin_vec_lvrx (signed long long, vbi *);
+ LVRX LVRX_VBI
+ vsi __builtin_vec_lvrx (signed long long, vsi *);
+ LVRX LVRX_VSI
+ vsi __builtin_vec_lvrx (signed long long, signed int *);
+ LVRX LVRX_SI
+ vui __builtin_vec_lvrx (signed long long, vui *);
+ LVRX LVRX_VUI
+ vui __builtin_vec_lvrx (signed long long, unsigned int *);
+ LVRX LVRX_UI
+ vf __builtin_vec_lvrx (signed long long, vf *);
+ LVRX LVRX_VF
+ vf __builtin_vec_lvrx (signed long long, float *);
+ LVRX LVRX_F
+
+[VEC_LVRXL, vec_lvrxl, __builtin_vec_lvrxl]
+ vbc __builtin_vec_lvrxl (signed long long, vbc *);
+ LVRXL LVRXL_VBC
+ vsc __builtin_vec_lvrxl (signed long long, vsc *);
+ LVRXL LVRXL_VSC
+ vsc __builtin_vec_lvrxl (signed long long, signed char *);
+ LVRXL LVRXL_SC
+ vuc __builtin_vec_lvrxl (signed long long, vuc *);
+ LVRXL LVRXL_VUC
+ vuc __builtin_vec_lvrxl (signed long long, unsigned char *);
+ LVRXL LVRXL_UC
+ vbs __builtin_vec_lvrxl (signed long long, vbs *);
+ LVRXL LVRXL_VBS
+ vss __builtin_vec_lvrxl (signed long long, vss *);
+ LVRXL LVRXL_VSS
+ vss __builtin_vec_lvrxl (signed long long, signed short *);
+ LVRXL LVRXL_SS
+ vus __builtin_vec_lvrxl (signed long long, vus *);
+ LVRXL LVRXL_VUS
+ vus __builtin_vec_lvrxl (signed long long, unsigned short *);
+ LVRXL LVRXL_US
+ vp __builtin_vec_lvrxl (signed long long, vp *);
+ LVRXL LVRXL_VP
+ vbi __builtin_vec_lvrxl (signed long long, vbi *);
+ LVRXL LVRXL_VBI
+ vsi __builtin_vec_lvrxl (signed long long, vsi *);
+ LVRXL LVRXL_VSI
+ vsi __builtin_vec_lvrxl (signed long long, signed int *);
+ LVRXL LVRXL_SI
+ vui __builtin_vec_lvrxl (signed long long, vui *);
+ LVRXL LVRXL_VUI
+ vui __builtin_vec_lvrxl (signed long long, unsigned int *);
+ LVRXL LVRXL_UI
+ vf __builtin_vec_lvrxl (signed long long, vf *);
+ LVRXL LVRXL_VF
+ vf __builtin_vec_lvrxl (signed long long, float *);
+ LVRXL LVRXL_F
+
+[VEC_LVSL, vec_lvsl, __builtin_vec_lvsl]
+ vuc __builtin_vec_lvsl (signed long long, unsigned char *);
+ LVSL LVSL_UC
+ vuc __builtin_vec_lvsl (signed long long, signed char *);
+ LVSL LVSL_SC
+
+[VEC_LVSR, vec_lvsr, __builtin_vec_lvsr]
+ vuc __builtin_vec_lvsr (signed long long, unsigned char *);
+ LVSR LVSR_UC
+ vuc __builtin_vec_lvsr (signed long long, signed char *);
+ LVSR LVSR_SC
+
+[VEC_MAX, vec_max, __builtin_vec_max]
+ vsc __builtin_vec_max (vsc, vsc);
+ VMAXSB
+ vuc __builtin_vec_max (vuc, vuc);
+ VMAXUB
+ vss __builtin_vec_max (vss, vss);
+ VMAXSH
+ vus __builtin_vec_max (vus, vus);
+ VMAXUH
+ vsi __builtin_vec_max (vsi, vsi);
+ VMAXSW
+ vui __builtin_vec_max (vui, vui);
+ VMAXUW
+ vsll __builtin_vec_max (vsll, vsll);
+ VMAXSD
+ vull __builtin_vec_max (vull, vull);
+ VMAXUD
+ vf __builtin_vec_max (vf, vf);
+ XVMAXSP
+ vd __builtin_vec_max (vd, vd);
+ XVMAXDP
+
[VEC_MTVSCR, vec_mtvscr, __builtin_vec_mtvscr]
void __builtin_vec_mtvscr (vbc);
MTVSCR MTVSCR_VBC
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2020-10-29 19:53 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-29 19:53 [gcc(refs/users/wschmidt/heads/builtins3)] rs6000: More progress on the overload table William Schmidt
-- strict thread matches above, loose matches on Subject: below --
2020-10-29 19:53 William Schmidt
2020-10-29 19:53 William Schmidt
2020-10-29 19:53 William Schmidt
2020-10-29 19:53 William Schmidt
2020-10-27 16:31 William Schmidt
2020-10-27 16:31 William Schmidt
2020-10-27 16:31 William Schmidt
2020-10-27 16:31 William Schmidt
2020-10-27 16:31 William Schmidt
2020-10-23 21:24 William Schmidt
2020-10-21 14:03 William Schmidt
2020-10-13 21:41 William Schmidt
2020-10-12 22:06 William Schmidt
2020-10-12 14:13 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).