public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/wschmidt/heads/builtins10)] rs6000: **split and squash me**
@ 2021-03-30 23:07 William Schmidt
0 siblings, 0 replies; 2+ messages in thread
From: William Schmidt @ 2021-03-30 23:07 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:1f3eee9c45e0d0acdc5de7962a63798bb1bfe1e8
commit 1f3eee9c45e0d0acdc5de7962a63798bb1bfe1e8
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Tue Mar 30 18:07:00 2021 -0500
rs6000: **split and squash me**
Fix disparities between old and new builtins.
2021-03-30 Bill Schmidt <wschmidt@linux.ibm.com>
gcc/
* config/rs6000/altivec.h: Fix disparities.
* config/rs6000-builtin-new.def: Likewise.
* config/rs6000-call.c (rs6000_debug_type): Handle long long
types.
* config/rs6000-overload.def: Fix disparities.
Diff:
---
gcc/config/rs6000/altivec.h | 6 +
gcc/config/rs6000/rs6000-builtin-new.def | 479 ++++++++++++++++---------------
gcc/config/rs6000/rs6000-call.c | 4 +
gcc/config/rs6000/rs6000-overload.def | 97 ++++++-
4 files changed, 341 insertions(+), 245 deletions(-)
diff --git a/gcc/config/rs6000/altivec.h b/gcc/config/rs6000/altivec.h
index 3d68b787a75..8daf933e53e 100644
--- a/gcc/config/rs6000/altivec.h
+++ b/gcc/config/rs6000/altivec.h
@@ -139,6 +139,12 @@
#define __builtin_bcdcmple(a,b) __builtin_vec_bcdsub_le(a,b,0)
#endif
+#ifdef _ARCH_PWR10
+#define __builtin_vec_se_lxvrx __builtin_vec_xl_sext
+#define __builtin_vec_tr_stxvrx __builtin_vec_xst_trunc
+#define __builtin_vec_ze_lxvrx __builtin_vec_xl_zext
+#define __builtin_vsx_xxpermx __builtin_vec_xxpermx
+#endif
/* Predicates.
For C++, we use templates in order to allow non-parenthesized arguments.
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index f574c97bb93..cbe9813883f 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -252,10 +252,10 @@
; Power6 builtins.
[power6]
- const unsigned long long __builtin_p6_cmpb (unsigned long long, unsigned long long);
+ const signed long __builtin_p6_cmpb (signed long, signed long);
CMPB cmpbdi3 {}
- const unsigned int __builtin_p6_cmpb_32 (unsigned int, unsigned int);
+ const signed int __builtin_p6_cmpb_32 (signed int, signed int);
CMPB_32 cmpbsi3 {}
@@ -321,10 +321,10 @@
pure vsi __builtin_altivec_lvewx (signed long, const void *);
LVEWX altivec_lvewx {ldvec}
- pure vuc __builtin_altivec_lvsl (signed long, const void *);
+ pure vsc __builtin_altivec_lvsl (signed long, const void *);
LVSL altivec_lvsl {ldvec}
- pure vuc __builtin_altivec_lvsr (signed long, const void *);
+ pure vsc __builtin_altivec_lvsr (signed long, const void *);
LVSR altivec_lvsr {ldvec}
pure vsi __builtin_altivec_lvx (signed long, const void *);
@@ -432,7 +432,7 @@
fpmath vf __builtin_altivec_uns_float_sisf (vui);
UNSFLOAT_V4SI_V4SF floatunsv4siv4sf2 {}
- const vui __builtin_altivec_vaddcuw (vui, vui);
+ const vsi __builtin_altivec_vaddcuw (vsi, vsi);
VADDCUW altivec_vaddcuw {}
const vf __builtin_altivec_vaddfp (vf, vf);
@@ -447,22 +447,22 @@
const vsi __builtin_altivec_vaddsws (vsi, vsi);
VADDSWS altivec_vaddsws {}
- const vuc __builtin_altivec_vaddubm (vuc, vuc);
+ const vsc __builtin_altivec_vaddubm (vsc, vsc);
VADDUBM addv16qi3 {}
- const vuc __builtin_altivec_vaddubs (vuc, vuc);
+ const vsc __builtin_altivec_vaddubs (vsc, vsc);
VADDUBS altivec_vaddubs {}
- const vus __builtin_altivec_vadduhm (vus, vus);
+ const vss __builtin_altivec_vadduhm (vss, vss);
VADDUHM addv8hi3 {}
- const vus __builtin_altivec_vadduhs (vus, vus);
+ const vss __builtin_altivec_vadduhs (vss, vss);
VADDUHS altivec_vadduhs {}
const vsi __builtin_altivec_vadduwm (vsi, vsi);
VADDUWM addv4si3 {}
- const vui __builtin_altivec_vadduws (vui, vui);
+ const vsi __builtin_altivec_vadduws (vsi, vsi);
VADDUWS altivec_vadduws {}
const vsc __builtin_altivec_vand_v16qi (vsc, vsc);
@@ -516,19 +516,19 @@
const vsi __builtin_altivec_vavgsw (vsi, vsi);
VAVGSW avgv4si3_ceil {}
- const vuc __builtin_altivec_vavgub (vuc, vuc);
+ const vsc __builtin_altivec_vavgub (vsc, vsc);
VAVGUB uavgv16qi3_ceil {}
- const vus __builtin_altivec_vavguh (vus, vus);
+ const vss __builtin_altivec_vavguh (vss, vss);
VAVGUH uavgv8hi3_ceil {}
- const vui __builtin_altivec_vavguw (vui, vui);
+ const vsi __builtin_altivec_vavguw (vsi, vsi);
VAVGUW uavgv4si3_ceil {}
const vf __builtin_altivec_vcfsx (vsi, const int<5>);
VCFSX altivec_vcfsx {}
- const vf __builtin_altivec_vcfux (vui, const int<5>);
+ const vf __builtin_altivec_vcfux (vsi, const int<5>);
VCFUX altivec_vcfux {}
const vsi __builtin_altivec_vcmpbfp (vf, vf);
@@ -612,7 +612,7 @@
const vsi __builtin_altivec_vctsxs (vf, const int<5>);
VCTSXS altivec_vctsxs {}
- const vui __builtin_altivec_vctuxs (vf, const int<5>);
+ const vsi __builtin_altivec_vctuxs (vf, const int<5>);
VCTUXS altivec_vctuxs {}
fpmath vf __builtin_altivec_vexptefp (vf);
@@ -693,22 +693,22 @@
const vsi __builtin_altivec_vmrglw (vsi, vsi);
VMRGLW altivec_vmrglw {}
- const vsi __builtin_altivec_vmsummbm (vsc, vuc, vsi);
+ const vsi __builtin_altivec_vmsummbm (vsc, vsc, vsi);
VMSUMMBM altivec_vmsummbm {}
const vsi __builtin_altivec_vmsumshm (vss, vss, vsi);
VMSUMSHM altivec_vmsumshm {}
- vsi __builtin_altivec_vmsumshs (vss, vss, vsi);
+ const vsi __builtin_altivec_vmsumshs (vss, vss, vsi);
VMSUMSHS altivec_vmsumshs {}
- const vui __builtin_altivec_vmsumubm (vuc, vuc, vui);
+ const vsi __builtin_altivec_vmsumubm (vsc, vsc, vsi);
VMSUMUBM altivec_vmsumubm {}
- const vui __builtin_altivec_vmsumuhm (vus, vus, vui);
+ const vsi __builtin_altivec_vmsumuhm (vss, vss, vsi);
VMSUMUHM altivec_vmsumuhm {}
- vui __builtin_altivec_vmsumuhs (vus, vus, vui);
+ const vsi __builtin_altivec_vmsumuhs (vss, vss, vsi);
VMSUMUHS altivec_vmsumuhs {}
const vss __builtin_altivec_vmulesb (vsc, vsc);
@@ -786,10 +786,10 @@
const vuc __builtin_altivec_vperm_16qi_uns (vuc, vuc, vuc);
VPERM_16QI_UNS altivec_vperm_v16qi_uns {}
- const vsq __builtin_altivec_vperm_1ti (vsq, vsq, vuc);
+ const vsq __builtin_altivec_vperm_1ti (vsq, vsq, vsc);
VPERM_1TI altivec_vperm_v1ti {}
- const vuq __builtin_altivec_vperm_1ti_uns (vuq, vuq, vuc);
+ const vsq __builtin_altivec_vperm_1ti_uns (vsq, vsq, vsc);
VPERM_1TI_UNS altivec_vperm_v1ti_uns {}
const vf __builtin_altivec_vperm_4sf (vf, vf, vuc);
@@ -807,31 +807,31 @@
const vus __builtin_altivec_vperm_8hi_uns (vus, vus, vuc);
VPERM_8HI_UNS altivec_vperm_v8hi_uns {}
- const vp __builtin_altivec_vpkpx (vui, vui);
+ const vss __builtin_altivec_vpkpx (vsi, vsi);
VPKPX altivec_vpkpx {}
const vsc __builtin_altivec_vpkshss (vss, vss);
VPKSHSS altivec_vpkshss {}
- const vuc __builtin_altivec_vpkshus (vss, vss);
+ const vsc __builtin_altivec_vpkshus (vss, vss);
VPKSHUS altivec_vpkshus {}
const vss __builtin_altivec_vpkswss (vsi, vsi);
VPKSWSS altivec_vpkswss {}
- const vus __builtin_altivec_vpkswus (vsi, vsi);
+ const vss __builtin_altivec_vpkswus (vsi, vsi);
VPKSWUS altivec_vpkswus {}
const vsc __builtin_altivec_vpkuhum (vss, vss);
VPKUHUM altivec_vpkuhum {}
- const vuc __builtin_altivec_vpkuhus (vus, vus);
+ const vsc __builtin_altivec_vpkuhus (vss, vss);
VPKUHUS altivec_vpkuhus {}
const vss __builtin_altivec_vpkuwum (vsi, vsi);
VPKUWUM altivec_vpkuwum {}
- const vus __builtin_altivec_vpkuwus (vui, vui);
+ const vss __builtin_altivec_vpkuwus (vsi, vsi);
VPKUWUS altivec_vpkuwus {}
const vf __builtin_altivec_vrecipdivfp (vf, vf);
@@ -879,28 +879,28 @@
fpmath vf __builtin_altivec_vrsqrtfp (vf);
VRSQRTFP rsqrtv4sf2 {}
- const vsc __builtin_altivec_vsel_16qi (vsc, vsc, vuc);
+ const vsc __builtin_altivec_vsel_16qi (vsc, vsc, vsc);
VSEL_16QI vector_select_v16qi {}
const vuc __builtin_altivec_vsel_16qi_uns (vuc, vuc, vuc);
VSEL_16QI_UNS vector_select_v16qi_uns {}
- const vsq __builtin_altivec_vsel_1ti (vsq, vsq, vuq);
+ const vsq __builtin_altivec_vsel_1ti (vsq, vsq, vsq);
VSEL_1TI vector_select_v1ti {}
- const vuq __builtin_altivec_vsel_1ti_uns (vuq, vuq, vuq);
+ const vsq __builtin_altivec_vsel_1ti_uns (vsq, vsq, vsq);
VSEL_1TI_UNS vector_select_v1ti_uns {}
const vf __builtin_altivec_vsel_4sf (vf, vf, vf);
VSEL_4SF vector_select_v4sf {}
- const vsi __builtin_altivec_vsel_4si (vsi, vsi, vui);
+ const vsi __builtin_altivec_vsel_4si (vsi, vsi, vsi);
VSEL_4SI vector_select_v4si {}
const vui __builtin_altivec_vsel_4si_uns (vui, vui, vui);
VSEL_4SI_UNS vector_select_v4si_uns {}
- const vss __builtin_altivec_vsel_8hi (vss, vss, vus);
+ const vss __builtin_altivec_vsel_8hi (vss, vss, vss);
VSEL_8HI vector_select_v8hi {}
const vus __builtin_altivec_vsel_8hi_uns (vus, vus, vus);
@@ -909,7 +909,7 @@
const vsi __builtin_altivec_vsl (vsi, vsi);
VSL altivec_vsl {}
- const vsc __builtin_altivec_vslb (vsc, vuc);
+ const vsc __builtin_altivec_vslb (vsc, vsc);
VSLB vashlv16qi3 {}
const vsc __builtin_altivec_vsldoi_16qi (vsc, vsc, const int<4>);
@@ -924,13 +924,13 @@
const vss __builtin_altivec_vsldoi_8hi (vss, vss, const int<4>);
VSLDOI_8HI altivec_vsldoi_v8hi {}
- const vss __builtin_altivec_vslh (vss, vus);
+ const vss __builtin_altivec_vslh (vss, vss);
VSLH vashlv8hi3 {}
const vsi __builtin_altivec_vslo (vsi, vsi);
VSLO altivec_vslo {}
- const vsi __builtin_altivec_vslw (vsi, vui);
+ const vsi __builtin_altivec_vslw (vsi, vsi);
VSLW vashlv4si3 {}
const vsc __builtin_altivec_vspltb (vsc, const int<4>);
@@ -954,13 +954,13 @@
const vsi __builtin_altivec_vsr (vsi, vsi);
VSR altivec_vsr {}
- const vsc __builtin_altivec_vsrab (vsc, vuc);
+ const vsc __builtin_altivec_vsrab (vsc, vsc);
VSRAB vashrv16qi3 {}
- const vss __builtin_altivec_vsrah (vss, vus);
+ const vss __builtin_altivec_vsrah (vss, vss);
VSRAH vashrv8hi3 {}
- const vsi __builtin_altivec_vsraw (vsi, vui);
+ const vsi __builtin_altivec_vsraw (vsi, vsi);
VSRAW vashrv4si3 {}
const vsc __builtin_altivec_vsrb (vsc, vuc);
@@ -990,22 +990,22 @@
const vsi __builtin_altivec_vsubsws (vsi, vsi);
VSUBSWS altivec_vsubsws {}
- const vuc __builtin_altivec_vsububm (vuc, vuc);
+ const vsc __builtin_altivec_vsububm (vsc, vsc);
VSUBUBM subv16qi3 {}
- const vuc __builtin_altivec_vsububs (vuc, vuc);
+ const vsc __builtin_altivec_vsububs (vsc, vsc);
VSUBUBS altivec_vsububs {}
- const vus __builtin_altivec_vsubuhm (vus, vus);
+ const vss __builtin_altivec_vsubuhm (vss, vss);
VSUBUHM subv8hi3 {}
- const vus __builtin_altivec_vsubuhs (vus, vus);
+ const vss __builtin_altivec_vsubuhs (vss, vss);
VSUBUHS altivec_vsubuhs {}
- const vui __builtin_altivec_vsubuwm (vui, vui);
+ const vsi __builtin_altivec_vsubuwm (vsi, vsi);
VSUBUWM subv4si3 {}
- const vui __builtin_altivec_vsubuws (vui, vui);
+ const vsi __builtin_altivec_vsubuws (vsi, vsi);
VSUBUWS altivec_vsubuws {}
const vsi __builtin_altivec_vsum2sws (vsi, vsi);
@@ -1017,7 +1017,7 @@
const vsi __builtin_altivec_vsum4shs (vss, vsi);
VSUM4SHS altivec_vsum4shs {}
- const vui __builtin_altivec_vsum4ubs (vuc, vui);
+ const vsi __builtin_altivec_vsum4ubs (vsc, vsi);
VSUM4UBS altivec_vsum4ubs {}
const vsi __builtin_altivec_vsumsws (vsi, vsi);
@@ -1026,7 +1026,7 @@
const vsi __builtin_altivec_vsumsws_be (vsi, vsi);
VSUMSWS_BE altivec_vsumsws_direct {}
- const vui __builtin_altivec_vupkhpx (vp);
+ const vsi __builtin_altivec_vupkhpx (vss);
VUPKHPX altivec_vupkhpx {}
const vss __builtin_altivec_vupkhsb (vsc);
@@ -1035,7 +1035,7 @@
const vsi __builtin_altivec_vupkhsh (vss);
VUPKHSH altivec_vupkhsh {}
- const vui __builtin_altivec_vupklpx (vp);
+ const vsi __builtin_altivec_vupklpx (vss);
VUPKLPX altivec_vupklpx {}
const vss __builtin_altivec_vupklsb (vsc);
@@ -1131,22 +1131,23 @@
; VSX builtins.
[vsx]
- pure vsq __builtin_altivec_lvx_v1ti (signed long long, const void *);
+ pure vsq __builtin_altivec_lvx_v1ti (signed long, const void *);
LVX_V1TI altivec_lvx_v1ti {ldvec}
- pure vd __builtin_altivec_lvx_v2df (signed long long, const void *);
+ pure vd __builtin_altivec_lvx_v2df (signed long, const void *);
LVX_V2DF altivec_lvx_v2df {ldvec}
- pure vsll __builtin_altivec_lvx_v2di (signed long long, const void *);
+ pure vsll __builtin_altivec_lvx_v2di (signed 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}
+;; Not present previously; why did I add this?
+; pure vuq __builtin_altivec_lvxl_v1ti (signed long, const void *);
+; LVXL_V1TI altivec_lvxl_v1ti {ldvec}
- pure vd __builtin_altivec_lvxl_v2df (signed long long, const void *);
+ pure vd __builtin_altivec_lvxl_v2df (signed long, const void *);
LVXL_V2DF altivec_lvxl_v2df {ldvec}
- pure vsll __builtin_altivec_lvxl_v2di (signed long long, const void *);
+ pure vsll __builtin_altivec_lvxl_v2di (signed long, const void *);
LVXL_V2DI altivec_lvxl_v2di {ldvec}
const vd __builtin_altivec_nabs_v2df (vd);
@@ -1185,7 +1186,7 @@
const vull __builtin_altivec_vandc_v2di_uns (vull, vull);
VANDC_V2DI_UNS andcv2di3 {}
- const vbll __builtin_altivec_vcmpequd (vull, vull);
+ const vsll __builtin_altivec_vcmpequd (vull, vull);
VCMPEQUD vector_eqv2di {}
const int __builtin_altivec_vcmpequd_p (int, vsll, vsll);
@@ -1200,7 +1201,7 @@
const vsll __builtin_altivec_vcmpgtud (vull, vull);
VCMPGTUD vector_gtuv2di {}
- const int __builtin_altivec_vcmpgtud_p (int, vull, vull);
+ const int __builtin_altivec_vcmpgtud_p (int, vsll, vsll);
VCMPGTUD_P vector_gtu_v2di_p {pred}
const vd __builtin_altivec_vnor_v2df (vd, vd);
@@ -1239,7 +1240,7 @@
const vd __builtin_altivec_vsel_2df (vd, vd, vd);
VSEL_2DF vector_select_v2df {}
- const vsll __builtin_altivec_vsel_2di (vsll, vsll, vull);
+ const vsll __builtin_altivec_vsel_2di (vsll, vsll, vsll);
VSEL_2DI_B vector_select_v2di {}
const vull __builtin_altivec_vsel_2di_uns (vull, vull, vull);
@@ -1266,7 +1267,7 @@
const double __builtin_vec_ext_v2df (vd, signed int);
VEC_EXT_V2DF nothing {extract}
- const signed long long __builtin_vec_ext_v2di (vsll, signed int);
+ const signed long __builtin_vec_ext_v2di (vsll, signed int);
VEC_EXT_V2DI nothing {extract}
const vsq __builtin_vec_init_v1ti (signed __int128);
@@ -1287,52 +1288,52 @@
const vsll __builtin_vec_set_v2di (vsll, signed long long, const int<1>);
VEC_SET_V2DI nothing {set}
- const vbc __builtin_vsx_cmpge_16qi (vsc, vsc);
+ const vsc __builtin_vsx_cmpge_16qi (vsc, vsc);
CMPGE_16QI vector_nltv16qi {}
- const vbll __builtin_vsx_cmpge_2di (vsll, vsll);
+ const vsll __builtin_vsx_cmpge_2di (vsll, vsll);
CMPGE_2DI vector_nltv2di {}
- const vbi __builtin_vsx_cmpge_4si (vsi, vsi);
+ const vsi __builtin_vsx_cmpge_4si (vsi, vsi);
CMPGE_4SI vector_nltv4si {}
- const vbs __builtin_vsx_cmpge_8hi (vss, vss);
+ const vss __builtin_vsx_cmpge_8hi (vss, vss);
CMPGE_8HI vector_nltv8hi {}
- const vbc __builtin_vsx_cmpge_u16qi (vuc, vuc);
+ const vsc __builtin_vsx_cmpge_u16qi (vuc, vuc);
CMPGE_U16QI vector_nltuv16qi {}
- const vbll __builtin_vsx_cmpge_u2di (vull, vull);
+ const vsll __builtin_vsx_cmpge_u2di (vull, vull);
CMPGE_U2DI vector_nltuv2di {}
- const vbi __builtin_vsx_cmpge_u4si (vui, vui);
+ const vsi __builtin_vsx_cmpge_u4si (vui, vui);
CMPGE_U4SI vector_nltuv4si {}
- const vbs __builtin_vsx_cmpge_u8hi (vus, vus);
+ const vss __builtin_vsx_cmpge_u8hi (vus, vus);
CMPGE_U8HI vector_nltuv8hi {}
- const vbc __builtin_vsx_cmple_16qi (vsc, vsc);
+ const vsc __builtin_vsx_cmple_16qi (vsc, vsc);
CMPLE_16QI vector_ngtv16qi {}
- const vbll __builtin_vsx_cmple_2di (vsll, vsll);
+ const vsll __builtin_vsx_cmple_2di (vsll, vsll);
CMPLE_2DI vector_ngtv2di {}
- const vbi __builtin_vsx_cmple_4si (vsi, vsi);
+ const vsi __builtin_vsx_cmple_4si (vsi, vsi);
CMPLE_4SI vector_ngtv4si {}
- const vbs __builtin_vsx_cmple_8hi (vss, vss);
+ const vss __builtin_vsx_cmple_8hi (vss, vss);
CMPLE_8HI vector_ngtv8hi {}
- const vbc __builtin_vsx_cmple_u16qi (vuc, vuc);
+ const vsc __builtin_vsx_cmple_u16qi (vsc, vsc);
CMPLE_U16QI vector_ngtuv16qi {}
- const vbll __builtin_vsx_cmple_u2di (vull, vull);
+ const vsll __builtin_vsx_cmple_u2di (vsll, vsll);
CMPLE_U2DI vector_ngtuv2di {}
- const vbi __builtin_vsx_cmple_u4si (vui, vui);
+ const vsi __builtin_vsx_cmple_u4si (vsi, vsi);
CMPLE_U4SI vector_ngtuv4si {}
- const vbs __builtin_vsx_cmple_u8hi (vus, vus);
+ const vss __builtin_vsx_cmple_u8hi (vss, vss);
CMPLE_U8HI vector_ngtuv8hi {}
const vd __builtin_vsx_concat_2df (double, double);
@@ -1341,8 +1342,9 @@
const vsll __builtin_vsx_concat_2di (signed long long, signed long long);
CONCAT_2DI vsx_concat_v2di {}
- const vull __builtin_vsx_concat_2di_uns (unsigned long long, unsigned long long);
- CONCAT_2DI_UNS vsx_concat_v2di {}
+;; Not present previously; why did I add this?
+; const vull __builtin_vsx_concat_2di_uns (unsigned long long, unsigned long long);
+; CONCAT_2DI_UNS vsx_concat_v2di {}
const vd __builtin_vsx_cpsgndp (vd, vd);
CPSGNDP vector_copysignv2df3 {}
@@ -1454,8 +1456,9 @@
const vsq __builtin_vsx_set_1ti (vsq, signed __int128, const int<0,0>);
SET_1TI vsx_set_v1ti {set}
- const vuq __builtin_vsx_set_1ti_uns (vuq, unsigned __int128, const int<0,0>);
- SET_1TI_UNS vsx_set_v1ti {set}
+;; Not present previously; why did I add this?
+; const vuq __builtin_vsx_set_1ti_uns (vuq, unsigned __int128, const int<0,0>);
+; SET_1TI_UNS vsx_set_v1ti {set}
const vd __builtin_vsx_set_2df (vd, double, const int<0,1>);
SET_2DF vsx_set_v2df {set}
@@ -1463,8 +1466,9 @@
const vsll __builtin_vsx_set_2di (vsll, signed long long, const int<0,1>);
SET_2DI vsx_set_v2di {set}
- const vull __builtin_vsx_set_2di_uns (vull, unsigned long long, const int<0,1>);
- SET_2DI_UNS vsx_set_v2di {set}
+;; Not present previously; why did I add this?
+; const vull __builtin_vsx_set_2di_uns (vull, unsigned long long, const int<0,1>);
+; SET_2DI_UNS vsx_set_v2di {set}
const vd __builtin_vsx_splat_2df (double);
SPLAT_2DF vsx_splat_v2df {}
@@ -1472,8 +1476,9 @@
const vsll __builtin_vsx_splat_2di (signed long long);
SPLAT_2DI vsx_splat_v2di {}
- const vull __builtin_vsx_splat_2di_uns (unsigned long long);
- SPLAT_2DI_UNS vsx_splat_v2di {}
+;; Not present previously; why did I add this?
+; const vull __builtin_vsx_splat_2di_uns (unsigned long long);
+; SPLAT_2DI_UNS vsx_splat_v2di {}
void __builtin_vsx_st_elemrev_v1ti (vsq, signed long, void *);
ST_ELEMREV_V1TI vsx_st_elemrev_v1ti {stvec,endian}
@@ -1520,22 +1525,22 @@
const vull __builtin_vsx_udiv_2di (vull, vull);
UDIV_V2DI vsx_udiv_v2di {}
- const vd __builtin_vsx_uns_doublee_v4si (vui);
+ const vd __builtin_vsx_uns_doublee_v4si (vsi);
UNS_DOUBLEE_V4SI unsdoubleev4si2 {}
- const vd __builtin_vsx_uns_doubleh_v4si (vui);
+ const vd __builtin_vsx_uns_doubleh_v4si (vsi);
UNS_DOUBLEH_V4SI unsdoublehv4si2 {}
- const vd __builtin_vsx_uns_doublel_v4si (vui);
+ const vd __builtin_vsx_uns_doublel_v4si (vsi);
UNS_DOUBLEL_V4SI unsdoublelv4si2 {}
- const vd __builtin_vsx_uns_doubleo_v4si (vui);
+ const vd __builtin_vsx_uns_doubleo_v4si (vsi);
UNS_DOUBLEO_V4SI unsdoubleov4si2 {}
- const vf __builtin_vsx_uns_floate_v2di (vull);
+ const vf __builtin_vsx_uns_floate_v2di (vsll);
UNS_FLOATE_V2DI unsfloatev2di {}
- const vf __builtin_vsx_uns_floato_v2di (vull);
+ const vf __builtin_vsx_uns_floato_v2di (vsll);
UNS_FLOATO_V2DI unsfloatov2di {}
; I have no idea why we have __builtin_vsx_* duplicates of these when
@@ -1547,10 +1552,10 @@
const vuc __builtin_vsx_vperm_16qi_uns (vuc, vuc, vuc);
VPERM_16QI_UNS_X altivec_vperm_v16qi_uns {}
- const vsq __builtin_vsx_vperm_1ti (vsq, vsq, vuc);
+ const vsq __builtin_vsx_vperm_1ti (vsq, vsq, vsc);
VPERM_1TI_X altivec_vperm_v1ti {}
- const vuq __builtin_vsx_vperm_1ti_uns (vuq, vuq, vuc);
+ const vsq __builtin_vsx_vperm_1ti_uns (vsq, vsq, vsc);
VPERM_1TI_UNS_X altivec_vperm_v1ti_uns {}
const vd __builtin_vsx_vperm_2df (vd, vd, vuc);
@@ -1589,16 +1594,16 @@
const vsi __builtin_vsx_vsignedo_v2df (vd);
VEC_VSIGNEDO_V2DF vsignedo_v2df {}
- const vull __builtin_vsx_vunsigned_v2df (vd);
+ const vsll __builtin_vsx_vunsigned_v2df (vd);
VEC_VUNSIGNED_V2DF vsx_xvcvdpsxds {}
- const vui __builtin_vsx_vunsigned_v4sf (vf);
+ const vsi __builtin_vsx_vunsigned_v4sf (vf);
VEC_VUNSIGNED_V4SF vsx_xvcvspsxws {}
- const vull __builtin_vsx_vunsignede_v2df (vd);
+ const vsi __builtin_vsx_vunsignede_v2df (vd);
VEC_VUNSIGNEDE_V2DF vunsignede_v2df {}
- const vull __builtin_vsx_vunsignedo_v2df (vd);
+ const vsi __builtin_vsx_vunsignedo_v2df (vd);
VEC_VUNSIGNEDO_V2DF vunsignedo_v2df {}
const vf __builtin_vsx_xscvdpsp (double);
@@ -1628,16 +1633,16 @@
const double __builtin_vsx_xsrdpiz (double);
XSRDPIZ btruncdf2 {}
- const unsigned int __builtin_vsx_xstdivdp_fe (double, double);
+ const signed int __builtin_vsx_xstdivdp_fe (double, double);
XSTDIVDP_FE vsx_tdivdf3_fe {}
- const unsigned int __builtin_vsx_xstdivdp_fg (double, double);
+ const signed int __builtin_vsx_xstdivdp_fg (double, double);
XSTDIVDP_FG vsx_tdivdf3_fg {}
- const unsigned int __builtin_vsx_xstsqrtdp_fe (double);
+ const signed int __builtin_vsx_xstsqrtdp_fe (double);
XSTSQRTDP_FE vsx_tsqrtdf2_fe {}
- const unsigned int __builtin_vsx_xstsqrtdp_fg (double);
+ const signed int __builtin_vsx_xstsqrtdp_fg (double);
XSTSQRTDP_FG vsx_tsqrtdf2_fg {}
const vd __builtin_vsx_xvabsdp (vd);
@@ -1700,7 +1705,7 @@
const vsi __builtin_vsx_xvcvdpsxws (vd);
XVCVDPSXWS vsx_xvcvdpsxws {}
- const vull __builtin_vsx_xvcvdpuxds (vd);
+ const vsll __builtin_vsx_xvcvdpuxds (vd);
XVCVDPUXDS vsx_fixuns_truncv2dfv2di2 {}
const vsll __builtin_vsx_xvcvdpuxds_scale (vd, const int);
@@ -1710,7 +1715,7 @@
const vull __builtin_vsx_xvcvdpuxds_uns (vd);
XVCVDPUXDS_UNS vsx_fixuns_truncv2dfv2di2 {}
- const vui __builtin_vsx_xvcvdpuxws (vd);
+ const vsi __builtin_vsx_xvcvdpuxws (vd);
XVCVDPUXWS vsx_xvcvdpuxws {}
const vd __builtin_vsx_xvcvspdp (vf);
@@ -1722,10 +1727,10 @@
const vsi __builtin_vsx_xvcvspsxws (vf);
XVCVSPSXWS vsx_fix_truncv4sfv4si2 {}
- const vull __builtin_vsx_xvcvspuxds (vf);
+ const vsll __builtin_vsx_xvcvspuxds (vf);
XVCVSPUXDS vsx_xvcvspuxds {}
- const vui __builtin_vsx_xvcvspuxws (vf);
+ const vsi __builtin_vsx_xvcvspuxws (vf);
XVCVSPUXWS vsx_fixuns_truncv4sfv4si2 {}
const vd __builtin_vsx_xvcvsxddp (vsll);
@@ -1743,10 +1748,10 @@
const vf __builtin_vsx_xvcvsxwsp (vsi);
XVCVSXWSP vsx_floatv4siv4sf2 {}
- const vd __builtin_vsx_xvcvuxddp (vull);
+ const vd __builtin_vsx_xvcvuxddp (vsll);
XVCVUXDDP vsx_floatunsv2div2df2 {}
- const vd __builtin_vsx_xvcvuxddp_scale (vull, const int<5>);
+ const vd __builtin_vsx_xvcvuxddp_scale (vsll, const int<5>);
XVCVUXDDP_SCALE vsx_xvcvuxddp_scale {}
; Redundant with __builtin_vsx_xvcvuxddp
@@ -1759,7 +1764,7 @@
const vd __builtin_vsx_xvcvuxwdp (vsi);
XVCVUXWDP vsx_xvcvuxwdp {}
- const vf __builtin_vsx_xvcvuxwsp (vui);
+ const vf __builtin_vsx_xvcvuxwsp (vsi);
XVCVUXWSP vsx_floatunsv4siv4sf2 {}
fpmath vd __builtin_vsx_xvdivdp (vd, vd);
@@ -1888,28 +1893,28 @@
fpmath vf __builtin_vsx_xvsubsp (vf, vf);
XVSUBSP subv4sf3 {}
- const unsigned int __builtin_vsx_xvtdivdp_fe (vd, vd);
+ const signed int __builtin_vsx_xvtdivdp_fe (vd, vd);
XVTDIVDP_FE vsx_tdivv2df3_fe {}
- const unsigned int __builtin_vsx_xvtdivdp_fg (vd, vd);
+ const signed int __builtin_vsx_xvtdivdp_fg (vd, vd);
XVTDIVDP_FG vsx_tdivv2df3_fg {}
- const unsigned int __builtin_vsx_xvtdivsp_fe (vf, vf);
+ const signed int __builtin_vsx_xvtdivsp_fe (vf, vf);
XVTDIVSP_FE vsx_tdivv4sf3_fe {}
- const unsigned int __builtin_vsx_xvtdivsp_fg (vf, vf);
+ const signed int __builtin_vsx_xvtdivsp_fg (vf, vf);
XVTDIVSP_FG vsx_tdivv4sf3_fg {}
- const unsigned int __builtin_vsx_xvtsqrtdp_fe (vd);
+ const signed int __builtin_vsx_xvtsqrtdp_fe (vd);
XVTSQRTDP_FE vsx_tsqrtv2df2_fe {}
- const unsigned int __builtin_vsx_xvtsqrtdp_fg (vd);
+ const signed int __builtin_vsx_xvtsqrtdp_fg (vd);
XVTSQRTDP_FG vsx_tsqrtv2df2_fg {}
- const unsigned int __builtin_vsx_xvtsqrtsp_fe (vf);
+ const signed int __builtin_vsx_xvtsqrtsp_fe (vf);
XVTSQRTSP_FE vsx_tsqrtv4sf2_fe {}
- const unsigned int __builtin_vsx_xvtsqrtsp_fg (vf);
+ const signed int __builtin_vsx_xvtsqrtsp_fg (vf);
XVTSQRTSP_FG vsx_tsqrtv4sf2_fg {}
const vf __builtin_vsx_xxmrghw (vf, vf);
@@ -1954,7 +1959,7 @@
const vsq __builtin_vsx_xxsel_1ti (vsq, vsq, vsq);
XXSEL_1TI vector_select_v1ti {}
- const vuq __builtin_vsx_xxsel_1ti_uns (vuq, vuq, vuq);
+ const vsq __builtin_vsx_xxsel_1ti_uns (vsq, vsq, vsq);
XXSEL_1TI_UNS vector_select_v1ti_uns {}
const vd __builtin_vsx_xxsel_2df (vd, vd, vd);
@@ -2035,7 +2040,7 @@
void __builtin_ppc_speculation_barrier ();
SPECBARR speculation_barrier {}
- const unsigned long long __builtin_unpack_vector_int128 (vsq, const int<1>);
+ const unsigned long __builtin_unpack_vector_int128 (vsq, const int<1>);
UNPACK_V1TI unpackv1ti {}
@@ -2053,6 +2058,12 @@
const vsll __builtin_altivec_abs_v2di (vsll);
ABS_V2DI absv2di2 {}
+ const vsc __builtin_altivec_bcddiv10_v16qi (vsc);
+ BCDDIV10_V16QI bcddiv10_v16qi {}
+
+ const vsc __builtin_altivec_bcdmul10_v16qi (vsc);
+ BCDMUL10_V16QI bcdmul10_v16qi {}
+
const vsc __builtin_altivec_eqv_v16qi (vsc, vsc);
EQV_V16QI eqvv16qi3 {}
@@ -2200,7 +2211,7 @@
const vsq __builtin_altivec_vaddecuq (vsq, vsq, vsq);
VADDECUQ altivec_vaddecuq {}
- const vuq __builtin_altivec_vaddeuqm (vuq, vuq, vuq);
+ const vsq __builtin_altivec_vaddeuqm (vsq, vsq, vsq);
VADDEUQM altivec_vaddeuqm {}
const vsll __builtin_altivec_vaddudm (vsll, vsll);
@@ -2209,10 +2220,10 @@
const vsq __builtin_altivec_vadduqm (vsq, vsq);
VADDUQM altivec_vadduqm {}
- const vull __builtin_altivec_vbpermq (vuc, vuc);
+ const vsll __builtin_altivec_vbpermq (vsc, vsc);
VBPERMQ altivec_vbpermq {}
- const vuc __builtin_altivec_vbpermq2 (vuc, vuc);
+ const vsc __builtin_altivec_vbpermq2 (vsc, vsc);
VBPERMQ2 altivec_vbpermq2 {}
const vsll __builtin_altivec_vmaxsd (vsll, vsll);
@@ -2257,25 +2268,25 @@
const vsi __builtin_altivec_vpksdss (vsll, vsll);
VPKSDSS altivec_vpksdss {}
- const vui __builtin_altivec_vpksdus (vsll, vsll);
+ const vsi __builtin_altivec_vpksdus (vsll, vsll);
VPKSDUS altivec_vpksdus {}
const vsi __builtin_altivec_vpkudum (vsll, vsll);
VPKUDUM altivec_vpkudum {}
- const vui __builtin_altivec_vpkudus (vull, vull);
+ const vsi __builtin_altivec_vpkudus (vsll, vsll);
VPKUDUS altivec_vpkudus {}
- const vus __builtin_altivec_vpmsumb (vuc, vuc);
+ const vsc __builtin_altivec_vpmsumb (vsc, vsc);
VPMSUMB_A crypto_vpmsumb {}
- const vuq __builtin_altivec_vpmsumd (vull, vull);
+ const vsll __builtin_altivec_vpmsumd (vsll, vsll);
VPMSUMD_A crypto_vpmsumd {}
- const vui __builtin_altivec_vpmsumh (vus, vus);
+ const vss __builtin_altivec_vpmsumh (vss, vss);
VPMSUMH_A crypto_vpmsumh {}
- const vull __builtin_altivec_vpmsumw (vui, vui);
+ const vsi __builtin_altivec_vpmsumw (vsi, vsi);
VPMSUMW_A crypto_vpmsumw {}
const vsc __builtin_altivec_vpopcntb (vsc);
@@ -2287,16 +2298,16 @@
const vss __builtin_altivec_vpopcnth (vss);
VPOPCNTH popcountv8hi2 {}
- const vuc __builtin_altivec_vpopcntub (vuc);
+ const vsc __builtin_altivec_vpopcntub (vsc);
VPOPCNTUB popcountv16qi2 {}
- const vull __builtin_altivec_vpopcntud (vull);
+ const vsll __builtin_altivec_vpopcntud (vsll);
VPOPCNTUD popcountv2di2 {}
- const vus __builtin_altivec_vpopcntuh (vus);
+ const vss __builtin_altivec_vpopcntuh (vss);
VPOPCNTUH popcountv8hi2 {}
- const vui __builtin_altivec_vpopcntuw (vui);
+ const vsi __builtin_altivec_vpopcntuw (vsi);
VPOPCNTUW popcountv4si2 {}
const vsi __builtin_altivec_vpopcntw (vsi);
@@ -2314,19 +2325,19 @@
const vsll __builtin_altivec_vsrd (vsll, vull);
VSRD vlshrv2di3 {}
- const vuq __builtin_altivec_vsubcuq (vuq, vuq);
+ const vsq __builtin_altivec_vsubcuq (vsq, vsq);
VSUBCUQ altivec_vsubcuq {}
const vsq __builtin_altivec_vsubecuq (vsq, vsq, vsq);
VSUBECUQ altivec_vsubecuq {}
- const vuq __builtin_altivec_vsubeuqm (vuq, vuq, vuq);
+ const vsq __builtin_altivec_vsubeuqm (vsq, vsq, vsq);
VSUBEUQM altivec_vsubeuqm {}
const vsll __builtin_altivec_vsubudm (vsll, vsll);
VSUBUDM subv2di3 {}
- const vuq __builtin_altivec_vsubuqm (vuq, vuq);
+ const vsq __builtin_altivec_vsubuqm (vsq, vsq);
VSUBUQM altivec_vsubuqm {}
const vsll __builtin_altivec_vupkhsw (vsi);
@@ -2338,85 +2349,79 @@
const vsq __builtin_bcdadd_v1ti (vsq, vsq, const int<1>);
BCDADD_V1TI bcdadd_v1ti {}
- const vuc __builtin_bcdadd_v16qi (vuc, vuc, const int<1>);
+ const vsc __builtin_bcdadd_v16qi (vsc, vsc, const int<1>);
BCDADD_V16QI bcdadd_v16qi {}
const signed int __builtin_bcdadd_eq_v1ti (vsq, vsq, const int<1>);
BCDADD_EQ_V1TI bcdadd_eq_v1ti {}
- const signed int __builtin_bcdadd_eq_v16qi (vuc, vuc, const int<1>);
+ const signed int __builtin_bcdadd_eq_v16qi (vsc, vsc, const int<1>);
BCDADD_EQ_V16QI bcdadd_eq_v16qi {}
const signed int __builtin_bcdadd_gt_v1ti (vsq, vsq, const int<1>);
BCDADD_GT_V1TI bcdadd_gt_v1ti {}
- const signed int __builtin_bcdadd_gt_v16qi (vuc, vuc, const int<1>);
+ const signed int __builtin_bcdadd_gt_v16qi (vsc, vsc, const int<1>);
BCDADD_GT_V16QI bcdadd_gt_v16qi {}
const signed int __builtin_bcdadd_lt_v1ti (vsq, vsq, const int<1>);
BCDADD_LT_V1TI bcdadd_lt_v1ti {}
- const signed int __builtin_bcdadd_lt_v16qi (vuc, vuc, const int<1>);
+ const signed int __builtin_bcdadd_lt_v16qi (vsc, vsc, const int<1>);
BCDADD_LT_V16QI bcdadd_lt_v16qi {}
const signed int __builtin_bcdadd_ov_v1ti (vsq, vsq, const int<1>);
BCDADD_OV_V1TI bcdadd_unordered_v1ti {}
- const signed int __builtin_bcdadd_ov_v16qi (vuc, vuc, const int<1>);
+ const signed int __builtin_bcdadd_ov_v16qi (vsc, vsc, const int<1>);
BCDADD_OV_V16QI bcdadd_unordered_v16qi {}
- const vuc __builtin_bcddiv10_v16qi (vuc);
- BCDDIV10_V16QI bcddiv10_v16qi {}
-
const signed int __builtin_bcdinvalid_v1ti (vsq);
BCDINVALID_V1TI bcdinvalid_v1ti {}
- const signed int __builtin_bcdinvalid_v16qi (vuc);
+ const signed int __builtin_bcdinvalid_v16qi (vsc);
BCDINVALID_V16QI bcdinvalid_v16qi {}
- const vuc __builtin_bcdmul10_v16qi (vuc);
- BCDMUL10_V16QI bcdmul10_v16qi {}
-
const vsq __builtin_bcdsub_v1ti (vsq, vsq, const int<1>);
BCDSUB_V1TI bcdsub_v1ti {}
- const vuc __builtin_bcdsub_v16qi (vuc, vuc, const int<1>);
+ const vsc __builtin_bcdsub_v16qi (vsc, vsc, const int<1>);
BCDSUB_V16QI bcdsub_v16qi {}
const signed int __builtin_bcdsub_eq_v1ti (vsq, vsq, const int<1>);
BCDSUB_EQ_V1TI bcdsub_eq_v1ti {}
- const signed int __builtin_bcdsub_eq_v16qi (vuc, vuc, const int<1>);
+ const signed int __builtin_bcdsub_eq_v16qi (vsc, vsc, const int<1>);
BCDSUB_EQ_V16QI bcdsub_eq_v16qi {}
const signed int __builtin_bcdsub_ge_v1ti (vsq, vsq, const int<1>);
BCDSUB_GE_V1TI bcdsub_ge_v1ti {}
- const signed int __builtin_bcdsub_ge_v16qi (vuc, vuc, const int<1>);
+ const signed int __builtin_bcdsub_ge_v16qi (vsc, vsc, const int<1>);
BCDSUB_GE_V16QI bcdsub_ge_v16qi {}
const signed int __builtin_bcdsub_gt_v1ti (vsq, vsq, const int<1>);
BCDSUB_GT_V1TI bcdsub_gt_v1ti {}
- const signed int __builtin_bcdsub_gt_v16qi (vuc, vuc, const int<1>);
+ const signed int __builtin_bcdsub_gt_v16qi (vsc, vsc, const int<1>);
BCDSUB_GT_V16QI bcdsub_gt_v16qi {}
const signed int __builtin_bcdsub_le_v1ti (vsq, vsq, const int<1>);
BCDSUB_LE_V1TI bcdsub_le_v1ti {}
- const signed int __builtin_bcdsub_le_v16qi (vuc, vuc, const int<1>);
+ const signed int __builtin_bcdsub_le_v16qi (vsc, vsc, const int<1>);
BCDSUB_LE_V16QI bcdsub_le_v16qi {}
const signed int __builtin_bcdsub_lt_v1ti (vsq, vsq, const int<1>);
BCDSUB_LT_V1TI bcdsub_lt_v1ti {}
- const signed int __builtin_bcdsub_lt_v16qi (vuc, vuc, const int<1>);
+ const signed int __builtin_bcdsub_lt_v16qi (vsc, vsc, const int<1>);
BCDSUB_LT_V16QI bcdsub_lt_v16qi {}
const signed int __builtin_bcdsub_ov_v1ti (vsq, vsq, const int<1>);
BCDSUB_OV_V1TI bcdsub_unordered_v1ti {}
- const signed int __builtin_bcdsub_ov_v16qi (vuc, vuc, const int<1>);
+ const signed int __builtin_bcdsub_ov_v16qi (vsc, vsc, const int<1>);
BCDSUB_OV_V16QI bcdsub_unordered_v16qi {}
const vuc __builtin_crypto_vpermxor_v16qi (vuc, vuc, vuc);
@@ -2470,13 +2475,13 @@
const vss __builtin_vsx_revb_v8hi (vss);
REVB_V8HI revb_v8hi {}
- const vf __builtin_vsx_uns_float2_v2di (vull, vull);
+ const vf __builtin_vsx_uns_float2_v2di (vsll, vsll);
UNS_FLOAT2_V2DI uns_float2_v2di {}
const vsi __builtin_vsx_vsigned2_v2df (vd, vd);
VEC_VSIGNED2_V2DF vsigned2_v2df {}
- const vui __builtin_vsx_vunsigned2_v2df (vd, vd);
+ const vsi __builtin_vsx_vunsigned2_v2df (vd, vd);
VEC_VUNSIGNED2_V2DF vunsigned2_v2df {}
const vf __builtin_vsx_xscvdpspn (double);
@@ -2488,58 +2493,58 @@
; Power9 vector builtins.
[power9-vector]
- const vus __builtin_altivec_convert_4f32_8f16 (vf, vf);
+ const vss __builtin_altivec_convert_4f32_8f16 (vf, vf);
CONVERT_4F32_8F16 convert_4f32_8f16 {}
- const vus __builtin_altivec_convert_4f32_8i16 (vf, vf);
+ const vss __builtin_altivec_convert_4f32_8i16 (vf, vf);
CONVERT_4F32_8I16 convert_4f32_8i16 {}
- const unsigned int __builtin_altivec_first_match_index_v16qi (vsc, vsc);
+ const signed int __builtin_altivec_first_match_index_v16qi (vsc, vsc);
VFIRSTMATCHINDEX_V16QI first_match_index_v16qi {}
- const unsigned int __builtin_altivec_first_match_index_v8hi (vss, vss);
+ const signed int __builtin_altivec_first_match_index_v8hi (vss, vss);
VFIRSTMATCHINDEX_V8HI first_match_index_v8hi {}
- const unsigned int __builtin_altivec_first_match_index_v4si (vsi, vsi);
+ const signed int __builtin_altivec_first_match_index_v4si (vsi, vsi);
VFIRSTMATCHINDEX_V4SI first_match_index_v4si {}
- const unsigned int __builtin_altivec_first_match_or_eos_index_v16qi (vsc, vsc);
+ const signed int __builtin_altivec_first_match_or_eos_index_v16qi (vsc, vsc);
VFIRSTMATCHOREOSINDEX_V16QI first_match_or_eos_index_v16qi {}
- const unsigned int __builtin_altivec_first_match_or_eos_index_v8hi (vss, vss);
+ const signed int __builtin_altivec_first_match_or_eos_index_v8hi (vss, vss);
VFIRSTMATCHOREOSINDEX_V8HI first_match_or_eos_index_v8hi {}
- const unsigned int __builtin_altivec_first_match_or_eos_index_v4si (vsi, vsi);
+ const signed int __builtin_altivec_first_match_or_eos_index_v4si (vsi, vsi);
VFIRSTMATCHOREOSINDEX_V4SI first_match_or_eos_index_v4si {}
- const unsigned int __builtin_altivec_first_mismatch_index_v16qi (vsc, vsc);
+ const signed int __builtin_altivec_first_mismatch_index_v16qi (vsc, vsc);
VFIRSTMISMATCHINDEX_V16QI first_mismatch_index_v16qi {}
- const unsigned int __builtin_altivec_first_mismatch_index_v8hi (vss, vss);
+ const signed int __builtin_altivec_first_mismatch_index_v8hi (vss, vss);
VFIRSTMISMATCHINDEX_V8HI first_mismatch_index_v8hi {}
- const unsigned int __builtin_altivec_first_mismatch_index_v4si (vsi, vsi);
+ const signed int __builtin_altivec_first_mismatch_index_v4si (vsi, vsi);
VFIRSTMISMATCHINDEX_V4SI first_mismatch_index_v4si {}
- const unsigned int __builtin_altivec_first_mismatch_or_eos_index_v16qi (vsc, vsc);
+ const signed int __builtin_altivec_first_mismatch_or_eos_index_v16qi (vsc, vsc);
VFIRSTMISMATCHOREOSINDEX_V16QI first_mismatch_or_eos_index_v16qi {}
- const unsigned int __builtin_altivec_first_mismatch_or_eos_index_v8hi (vss, vss);
+ const signed int __builtin_altivec_first_mismatch_or_eos_index_v8hi (vss, vss);
VFIRSTMISMATCHOREOSINDEX_V8HI first_mismatch_or_eos_index_v8hi {}
- const unsigned int __builtin_altivec_first_mismatch_or_eos_index_v4si (vsi, vsi);
+ const signed int __builtin_altivec_first_mismatch_or_eos_index_v4si (vsi, vsi);
VFIRSTMISMATCHOREOSINDEX_V4SI first_mismatch_or_eos_index_v4si {}
- const vuc __builtin_altivec_vadub (vuc, vuc);
+ const vsc __builtin_altivec_vadub (vsc, vsc);
VADUB vaduv16qi3 {}
- const vus __builtin_altivec_vaduh (vus, vus);
+ const vss __builtin_altivec_vaduh (vss, vss);
VADUH vaduv8hi3 {}
- const vui __builtin_altivec_vaduw (vui, vui);
+ const vsi __builtin_altivec_vaduw (vsi, vsi);
VADUW vaduv4si3 {}
- const vull __builtin_altivec_vbpermd (vull, vuc);
+ const vsll __builtin_altivec_vbpermd (vsll, vsc);
VBPERMD altivec_vbpermd {}
const signed int __builtin_altivec_vclzlsbb_v16qi (vsc);
@@ -2635,22 +2640,22 @@
const signed int __builtin_altivec_vcmpnezw_p (signed int, vsi, vsi);
VCMPNEZW_P vector_nez_v4si_p {pred}
- const unsigned char __builtin_altivec_vextublx (unsigned int, vuc);
+ const signed int __builtin_altivec_vextublx (signed int, vsc);
VEXTUBLX vextublx {}
- const unsigned char __builtin_altivec_vextubrx (unsigned int, vuc);
+ const signed int __builtin_altivec_vextubrx (signed int, vsc);
VEXTUBRX vextubrx {}
- const unsigned short __builtin_altivec_vextuhlx (unsigned int, vus);
+ const signed int __builtin_altivec_vextuhlx (signed int, vss);
VEXTUHLX vextuhlx {}
- const unsigned short __builtin_altivec_vextuhrx (unsigned int, vus);
+ const signed int __builtin_altivec_vextuhrx (signed int, vss);
VEXTUHRX vextuhrx {}
- const unsigned int __builtin_altivec_vextuwlx (unsigned int, vui);
+ const signed int __builtin_altivec_vextuwlx (signed int, vsi);
VEXTUWLX vextuwlx {}
- const unsigned int __builtin_altivec_vextuwrx (unsigned int, vui);
+ const signed int __builtin_altivec_vextuwrx (signed int, vsi);
VEXTUWRX vextuwrx {}
const vsq __builtin_altivec_vmsumudm (vsll, vsll, vsq);
@@ -2665,46 +2670,46 @@
const vsi __builtin_altivec_vprtybw (vsi);
VPRTYBW parityv4si2 {}
- const vull __builtin_altivec_vrldmi (vull, vull, vull);
+ const vsll __builtin_altivec_vrldmi (vsll, vsll, vsll);
VRLDMI altivec_vrldmi {}
- const vull __builtin_altivec_vrldnm (vull, vull);
+ const vsll __builtin_altivec_vrldnm (vsll, vsll);
VRLDNM altivec_vrldnm {}
- const vui __builtin_altivec_vrlwmi (vui, vui, vui);
+ const vsi __builtin_altivec_vrlwmi (vsi, vsi, vsi);
VRLWMI altivec_vrlwmi {}
- const vui __builtin_altivec_vrlwnm (vui, vui);
+ const vsi __builtin_altivec_vrlwnm (vsi, vsi);
VRLWNM altivec_vrlwnm {}
- const vuc __builtin_altivec_vslv (vuc, vuc);
+ const vsc __builtin_altivec_vslv (vsc, vsc);
VSLV vslv {}
- const vuc __builtin_altivec_vsrv (vuc, vuc);
+ const vsc __builtin_altivec_vsrv (vsc, vsc);
VSRV vsrv {}
- const signed int __builtin_scalar_byte_in_range (unsigned int, unsigned int);
+ const signed int __builtin_scalar_byte_in_range (signed int, signed int);
CMPRB cmprb {}
- const signed int __builtin_scalar_byte_in_either_range (unsigned int, unsigned int);
+ const signed int __builtin_scalar_byte_in_either_range (signed int, signed int);
CMPRB2 cmprb2 {}
- const vull __builtin_vsx_extract4b (vuc, const int[0,12]);
+ const vsll __builtin_vsx_extract4b (vsc, const int[0,12]);
EXTRACT4B extract4b {}
- const vull __builtin_vsx_extract_exp_dp (vd);
+ const vd __builtin_vsx_extract_exp_dp (vd);
VEEDP xvxexpdp {}
- const vui __builtin_vsx_extract_exp_sp (vf);
+ const vf __builtin_vsx_extract_exp_sp (vf);
VEESP xvxexpsp {}
- const vull __builtin_vsx_extract_sig_dp (vd);
+ const vd __builtin_vsx_extract_sig_dp (vd);
VESDP xvxsigdp {}
- const vui __builtin_vsx_extract_sig_sp (vf);
+ const vf __builtin_vsx_extract_sig_sp (vf);
VESSP xvxsigsp {}
- const vuc __builtin_vsx_insert4b (vsi, vuc, const int[0,12]);
+ const vsc __builtin_vsx_insert4b (vsi, vsc, const int[0,12]);
INSERT4B insert4b {}
const vd __builtin_vsx_insert_exp_dp (vd, vd);
@@ -2725,28 +2730,28 @@
const signed int __builtin_vsx_scalar_cmp_exp_dp_unordered (double, double);
VSCEDPUO xscmpexpdp_unordered {}
- const unsigned int __builtin_vsx_scalar_test_data_class_dp (double, const int<7>);
+ const signed int __builtin_vsx_scalar_test_data_class_dp (double, const int<7>);
VSTDCDP xststdcdp {}
- const unsigned int __builtin_vsx_scalar_test_data_class_sp (float, const int<7>);
+ const signed int __builtin_vsx_scalar_test_data_class_sp (float, const int<7>);
VSTDCSP xststdcsp {}
- const unsigned int __builtin_vsx_scalar_test_neg_dp (double);
+ const signed int __builtin_vsx_scalar_test_neg_dp (double);
VSTDCNDP xststdcnegdp {}
- const unsigned int __builtin_vsx_scalar_test_neg_sp (float);
+ const signed int __builtin_vsx_scalar_test_neg_sp (float);
VSTDCNSP xststdcnegsp {}
- const vbll __builtin_vsx_test_data_class_dp (vd, const int<7>);
+ const vsll __builtin_vsx_test_data_class_dp (vd, const int<7>);
VTDCDP xvtstdcdp {}
- const vbi __builtin_vsx_test_data_class_sp (vf, const int<7>);
+ const vsi __builtin_vsx_test_data_class_sp (vf, const int<7>);
VTDCSP xvtstdcsp {}
- const vf __builtin_vsx_vextract_fp_from_shorth (vus);
+ const vf __builtin_vsx_vextract_fp_from_shorth (vss);
VEXTRACT_FP_FROM_SHORTH vextract_fp_from_shorth {}
- const vf __builtin_vsx_vextract_fp_from_shortl (vus);
+ const vf __builtin_vsx_vextract_fp_from_shortl (vss);
VEXTRACT_FP_FROM_SHORTL vextract_fp_from_shortl {}
const vd __builtin_vsx_xxbrd_v2df (vd);
@@ -2818,22 +2823,22 @@
; 32 bits, and the return value is DImode, so it seems that
; TARGET_64BIT (actually TARGET_POWERPC64) is justified. TBD. ####
[power9-64]
- void __builtin_altivec_xst_len_r (vsc, void *, long long);
+ void __builtin_altivec_xst_len_r (vsc, void *, long);
XST_LEN_R xst_len_r {}
- void __builtin_altivec_stxvl (vuc, void *, long long);
+ void __builtin_altivec_stxvl (vsc, void *, long);
STXVL stxvl {}
- const signed int __builtin_scalar_byte_in_set (unsigned int, unsigned long long);
+ const signed int __builtin_scalar_byte_in_set (signed int, signed long long);
CMPEQB cmpeqb {}
- pure vuc __builtin_vsx_lxvl (const void *, unsigned long long);
+ pure vsc __builtin_vsx_lxvl (const void *, signed long);
LXVL lxvl {}
- const unsigned int __builtin_vsx_scalar_extract_exp (double);
+ const signed long __builtin_vsx_scalar_extract_exp (double);
VSEEDP xsxexpdp {}
- const unsigned long long __builtin_vsx_scalar_extract_sig (double);
+ const signed long __builtin_vsx_scalar_extract_sig (double);
VSESDP xsxsigdp {}
const double __builtin_vsx_scalar_insert_exp (unsigned long long, unsigned long long);
@@ -2842,7 +2847,7 @@
const double __builtin_vsx_scalar_insert_exp_dp (double, unsigned long long);
VSIEDPF xsiexpdpf {}
- pure vuc __builtin_vsx_xl_len_r (void *, unsigned long long);
+ pure vsc __builtin_vsx_xl_len_r (void *, signed long);
XL_LEN_R xl_len_r {}
@@ -2881,10 +2886,10 @@
fpmath double __builtin_truncf128_round_to_odd (_Float128);
TRUNCF128_ODD trunckfdf2_odd {}
- const unsigned long long __builtin_vsx_scalar_extract_expq (_Float128);
+ const signed long long __builtin_vsx_scalar_extract_expq (_Float128);
VSEEQP xsxexpqp_kf {}
- const unsigned __int128 __builtin_vsx_scalar_extract_sigq (_Float128);
+ const signed __int128 __builtin_vsx_scalar_extract_sigq (_Float128);
VSESQP xsxsigqp_kf {}
const _Float128 __builtin_vsx_scalar_insert_exp_q (unsigned __int128, unsigned long long);
@@ -2893,10 +2898,10 @@
const _Float128 __builtin_vsx_scalar_insert_exp_qp (_Float128, unsigned long long);
VSIEQPF xsiexpqpf_kf {}
- const unsigned int __builtin_vsx_scalar_test_data_class_qp (_Float128, const int<7>);
+ const signed int __builtin_vsx_scalar_test_data_class_qp (_Float128, const int<7>);
VSTDCQP xststdcqp_kf {}
- const unsigned int __builtin_vsx_scalar_test_neg_qp (_Float128);
+ const signed int __builtin_vsx_scalar_test_neg_qp (_Float128);
VSTDCNQP xststdcnegqp_kf {}
@@ -2915,7 +2920,7 @@
const _Decimal128 __builtin_denbcdq (const int<1>, _Decimal128);
DENBCDQ dfp_denbcd_td {}
- const _Decimal128 __builtin_denb2dfp_v16qi (vuc);
+ const _Decimal128 __builtin_denb2dfp_v16qi (vsc);
DENB2DFP_V16QI dfp_denbcd_v16qi {}
const _Decimal64 __builtin_diex (signed long long, _Decimal64);
@@ -2948,7 +2953,7 @@
void __builtin_set_fpscr_drn (const int[0,7]);
SET_FPSCR_DRN rs6000_set_fpscr_drn {}
- const unsigned long long __builtin_unpack_dec128 (_Decimal128, const int<1>);
+ const unsigned long __builtin_unpack_dec128 (_Decimal128, const int<1>);
UNPACK_TD unpacktd {}
@@ -3116,10 +3121,10 @@
const vull __builtin_altivec_vcfuged (vull, vull);
VCFUGED vcfuged {}
- const vsc __builtin_altivec_vclrlb (vsc, unsigned int);
+ const vsc __builtin_altivec_vclrlb (vsc, signed int);
VCLRLB vclrlb {}
- const vsc __builtin_altivec_vclrrb (vsc, unsigned int);
+ const vsc __builtin_altivec_vclrrb (vsc, signed int);
VCLRRB vclrrb {}
const vull __builtin_altivec_vclzdm (vull, vull);
@@ -3167,43 +3172,43 @@
const vui __builtin_altivec_vexpandmw (vui);
VEXPANDMW vec_expand_v4si {}
- const vull __builtin_altivec_vextddvhx (vull, vull, unsigned char);
+ const vull __builtin_altivec_vextddvhx (vull, vull, unsigned int);
VEXTRACTDR vextractrv2di {}
- const vull __builtin_altivec_vextddvlx (vull, vull, unsigned char);
+ const vull __builtin_altivec_vextddvlx (vull, vull, unsigned int);
VEXTRACTDL vextractlv2di {}
- const vull __builtin_altivec_vextdubvhx (vuc, vuc, unsigned char);
+ const vull __builtin_altivec_vextdubvhx (vuc, vuc, unsigned int);
VEXTRACTBR vextractrv16qi {}
- const vull __builtin_altivec_vextdubvlx (vuc, vuc, unsigned char);
+ const vull __builtin_altivec_vextdubvlx (vuc, vuc, unsigned int);
VEXTRACTBL vextractlv16qi {}
- const vull __builtin_altivec_vextduhvhx (vus, vus, unsigned char);
+ const vull __builtin_altivec_vextduhvhx (vus, vus, unsigned int);
VEXTRACTHR vextractrv8hi {}
- const vull __builtin_altivec_vextduhvlx (vus, vus, unsigned char);
+ const vull __builtin_altivec_vextduhvlx (vus, vus, unsigned int);
VEXTRACTHL vextractlv8hi {}
- const vull __builtin_altivec_vextduwvhx (vui, vui, unsigned char);
+ const vull __builtin_altivec_vextduwvhx (vui, vui, unsigned int);
VEXTRACTWR vextractrv4si {}
- const vull __builtin_altivec_vextduwvlx (vui, vui, unsigned char);
+ const vull __builtin_altivec_vextduwvlx (vui, vui, unsigned int);
VEXTRACTWL vextractlv4si {}
- const signed int __builtin_altivec_vextractmb (vuc);
+ const signed int __builtin_altivec_vextractmb (vsc);
VEXTRACTMB vec_extract_v16qi {}
- const signed int __builtin_altivec_vextractmd (vull);
+ const signed int __builtin_altivec_vextractmd (vsll);
VEXTRACTMD vec_extract_v2di {}
- const signed int __builtin_altivec_vextractmh (vus);
+ const signed int __builtin_altivec_vextractmh (vss);
VEXTRACTMH vec_extract_v8hi {}
- const signed int __builtin_altivec_vextractmq (vuq);
+ const signed int __builtin_altivec_vextractmq (vsq);
VEXTRACTMQ vec_extract_v1ti {}
- const signed int __builtin_altivec_vextractmw (vui);
+ const signed int __builtin_altivec_vextractmw (vsi);
VEXTRACTMW vec_extract_v4si {}
const unsigned long long __builtin_altivec_vgnb (vull, const int <2,7>);
@@ -3212,43 +3217,43 @@
const vuc __builtin_altivec_vinsgubvlx (unsigned int, vuc, unsigned int);
VINSERTGPRBL vinsertgl_v16qi {}
- const vuc __builtin_altivec_vinsgubvrx (unsigned int, vuc, unsigned int);
+ const vsc __builtin_altivec_vinsgubvrx (signed int, vsc, signed int);
VINSERTGPRBR vinsertgr_v16qi {}
const vull __builtin_altivec_vinsgudvlx (unsigned int, vull, unsigned int);
VINSERTGPRDL vinsertgl_v2di {}
- const vull __builtin_altivec_vinsgudvrx (unsigned int, vull, unsigned int);
+ const vsll __builtin_altivec_vinsgudvrx (signed int, vsll, signed int);
VINSERTGPRDR vinsertgr_v2di {}
const vus __builtin_altivec_vinsguhvlx (unsigned int, vus, unsigned int);
VINSERTGPRHL vinsertgl_v8hi {}
- const vus __builtin_altivec_vinsguhvrx (unsigned int, vus, unsigned int);
+ const vss __builtin_altivec_vinsguhvrx (signed int, vss, signed int);
VINSERTGPRHR vinsertgr_v8hi {}
const vui __builtin_altivec_vinsguwvlx (unsigned int, vui, unsigned int);
VINSERTGPRWL vinsertgl_v4si {}
- const vui __builtin_altivec_vinsguwvrx (unsigned int, vui, unsigned int);
+ const vsi __builtin_altivec_vinsguwvrx (signed int, vsi, signed int);
VINSERTGPRWR vinsertgr_v4si {}
const vuc __builtin_altivec_vinsvubvlx (vuc, vuc, unsigned int);
VINSERTVPRBL vinsertvl_v16qi {}
- const vuc __builtin_altivec_vinsvubvrx (vuc, vuc, unsigned int);
+ const vsc __builtin_altivec_vinsvubvrx (vsc, vsc, signed int);
VINSERTVPRBR vinsertvr_v16qi {}
const vus __builtin_altivec_vinsvuhvlx (vus, vus, unsigned int);
VINSERTVPRHL vinsertvl_v8hi {}
- const vus __builtin_altivec_vinsvuhvrx (vus, vus, unsigned int);
+ const vss __builtin_altivec_vinsvuhvrx (vss, vss, signed int);
VINSERTVPRHR vinsertvr_v8hi {}
const vui __builtin_altivec_vinsvuwvlx (vui, vui, unsigned int);
VINSERTVPRWL vinsertvl_v4si {}
- const vui __builtin_altivec_vinsvuwvrx (vui, vui, unsigned int);
+ const vsi __builtin_altivec_vinsvuwvrx (vsi, vsi, signed int);
VINSERTVPRWR vinsertvr_v4si {}
const vsll __builtin_altivec_vmodsd (vsll, vsll);
@@ -3293,7 +3298,7 @@
const vd __builtin_altivec_vreplace_un_v2df (vd, double, const int<4>);
VREPLACE_UN_V2DF vreplace_un_v2df {}
- const vsll __builtin_altivec_vreplace_un_v2di (vsll, unsigned long long, const int<4>);
+ const vsll __builtin_altivec_vreplace_un_v2di (vsll, signed long long, const int<4>);
VREPLACE_UN_V2DI vreplace_un_v2di {}
const vf __builtin_altivec_vreplace_un_v4sf (vf, float, const int<4>);
@@ -3311,7 +3316,7 @@
const vd __builtin_altivec_vreplace_v2df (vd, double, const int<1>);
VREPLACE_ELT_V2DF vreplace_elt_v2df {}
- const vsll __builtin_altivec_vreplace_v2di (vsll, unsigned long long, const int<1>);
+ const vsll __builtin_altivec_vreplace_v2di (vsll, signed long long, const int<1>);
VREPLACE_ELT_V2DI vreplace_elt_v2di {}
const vf __builtin_altivec_vreplace_v4sf (vf, float, const int<2>);
@@ -3368,10 +3373,10 @@
const signed int __builtin_altivec_vstrihr_p (vss);
VSTRIHR_P vstrir_p_v8hi {}
- const signed int __builtin_vsx_xvtlsbb_all_ones (vuc);
+ const signed int __builtin_vsx_xvtlsbb_all_ones (vsc);
XVTLSBB_ONES xvtlsbbo {}
- const signed int __builtin_vsx_xvtlsbb_all_zeros (vuc);
+ const signed int __builtin_vsx_xvtlsbb_all_zeros (vsc);
XVTLSBB_ZEROS xvtlsbbz {}
const vf __builtin_vsx_vxxsplti32dx_v4sf (vf, const int<1>, float);
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 82f49f8b320..c9834105d91 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -8789,6 +8789,10 @@ const char *rs6000_debug_type (tree type)
return "long";
else if (type == long_unsigned_type_node)
return "ulong";
+ else if (type == long_long_integer_type_node)
+ return "longlong";
+ else if (type == long_long_unsigned_type_node)
+ return "ulonglong";
else if (type == bool_V16QI_type_node)
return "vbc";
else if (type == bool_V2DI_type_node)
diff --git a/gcc/config/rs6000/rs6000-overload.def b/gcc/config/rs6000/rs6000-overload.def
index 0ac1d4edd64..d01fab4c1ff 100644
--- a/gcc/config/rs6000/rs6000-overload.def
+++ b/gcc/config/rs6000/rs6000-overload.def
@@ -1878,14 +1878,15 @@
LVXL_V2DI LVXL_V2DI_ULL
vbll __builtin_vec_ldl (signed long, const vbll *);
LVXL_V2DI LVXL_V2DI_VBLL
- vsq __builtin_vec_ldl (signed long, const vsq *);
- LVXL_V1TI LVXL_V1TI_VSQ
- vuq __builtin_vec_ldl (signed long, const vuq *);
- LVXL_V1TI LVXL_V1TI_VUQ
- vsq __builtin_vec_ldl (signed long, const __int128 *);
- LVXL_V1TI LVXL_V1TI_TI
- vuq __builtin_vec_ldl (signed long, const unsigned __int128 *);
- LVXL_V1TI LVXL_V1TI_UTI
+;; Not present previously; why did I add these?
+; vsq __builtin_vec_ldl (signed long, const vsq *);
+; LVXL_V1TI LVXL_V1TI_VSQ
+; vuq __builtin_vec_ldl (signed long, const vuq *);
+; LVXL_V1TI LVXL_V1TI_VUQ
+; vsq __builtin_vec_ldl (signed long, const __int128 *);
+; LVXL_V1TI LVXL_V1TI_TI
+; vuq __builtin_vec_ldl (signed long, const unsigned __int128 *);
+; LVXL_V1TI LVXL_V1TI_UTI
vf __builtin_vec_ldl (signed long, const vf *);
LVXL_V4SF LVXL_V4SF_VF
vf __builtin_vec_ldl (signed long, const float *);
@@ -5251,6 +5252,34 @@
vui __builtin_vec_vctzw (vui);
VCTZW VCTZW_DEPR2
+[VEC_VEEDP, vec_extract_exp_dp, __builtin_vec_extract_exp_dp, _ARCH_PWR9]
+ vull __builtin_vec_extract_exp_dp (vd);
+ VEEDP VEEDP_DEPR1
+
+[VEC_VEESP, vec_extract_exp_sp, __builtin_vec_extract_exp_sp, _ARCH_PWR9]
+ vui __builtin_vec_extract_exp_sp (vf);
+ VEESP VEESP_DEPR1
+
+[VEC_VESDP, vec_extract_sig_dp, __builtin_vec_extract_sig_dp, _ARCH_PWR9]
+ vull __builtin_vec_extract_sig_dp (vd);
+ VESDP VESDP_DEPR1
+
+[VEC_VESSP, vec_extract_sig_sp, __builtin_vec_extract_sig_sp, _ARCH_PWR9]
+ vui __builtin_vec_extract_sig_sp (vf);
+ VESSP VESSP_DEPR1
+
+[VEC_VIEDP, vec_insert_exp_dp, __builtin_vec_insert_exp_dp, _ARCH_PWR9]
+ vd __builtin_vec_insert_exp_dp (vd, vull);
+ VIEDP VIEDP_DEPR1
+ vd __builtin_vec_insert_exp_dp (vull, vull);
+ VIEDP VIEDP_DEPR2
+
+[VEC_VIESP, vec_insert_exp_sp, __builtin_vec_insert_exp_sp, _ARCH_PWR9]
+ vf __builtin_vec_insert_exp_sp (vf, vui);
+ VIESP VIESP_DEPR1
+ vf __builtin_vec_insert_exp_sp (vui, vui);
+ VIESP VIESP_DEPR2
+
[VEC_VMAXFP, vec_vmaxfp, __builtin_vec_vmaxfp]
vf __builtin_vec_vmaxfp (vf, vf);
VMAXFP VMAXFP_DEPR1
@@ -5483,6 +5512,10 @@
vui __builtin_vec_vmsumubm (vuc, vuc, vui);
VMSUMUBM VMSUMUBM_DEPR1
+[VEC_VMSUMUDM, vec_vmsumudm, __builtin_vec_vmsumudm]
+ vuq __builtin_vec_vmsumudm (vull, vull, vuq);
+ VMSUMUDM VMSUMUDM_DEPR1
+
[VEC_VMSUMUHM, vec_vmsumuhm, __builtin_vec_vmsumuhm]
vui __builtin_vec_vmsumuhm (vus, vus, vui);
VMSUMUHM VMSUMUHM_DEPR1
@@ -5787,6 +5820,30 @@
vui __builtin_vec_vsrw (vui, vui);
VSRW VSRW_DEPR2
+[VEC_VSTDCDP, scalar_test_data_class_dp, __builtin_vec_scalar_test_data_class_dp, _ARCH_PWR9]
+ unsigned int __builtin_vec_scalar_test_data_class_dp (double, const int);
+ VSTDCDP VSTDCDP_DEPR1
+
+[VEC_VSTDCNDP, scalar_test_neg_dp, __builtin_vec_scalar_test_neg_dp, _ARCH_PWR9]
+ unsigned int __builtin_vec_scalar_test_neg_dp (double);
+ VSTDCNDP VSTDCNDP_DEPR1
+
+[VEC_VSTDCNQP, scalar_test_neg_qp, __builtin_vec_scalar_test_neg_qp, _ARCH_PWR9]
+ unsigned int __builtin_vec_scalar_test_neg_qp (_Float128);
+ VSTDCNQP VSTDCNQP_DEPR1
+
+[VEC_VSTDCNSP, scalar_test_neg_sp, __builtin_vec_scalar_test_neg_sp, _ARCH_PWR9]
+ unsigned int __builtin_vec_scalar_test_neg_sp (float);
+ VSTDCNSP VSTDCNSP_DEPR1
+
+[VEC_VSTDCQP, scalar_test_data_class_qp, __builtin_vec_scalar_test_data_class_qp, _ARCH_PWR9]
+ unsigned int __builtin_vec_scalar_test_data_class_qp (_Float128, const int);
+ VSTDCQP VSTDCQP_DEPR1
+
+[VEC_VSTDCSP, scalar_test_data_class_sp, __builtin_vec_scalar_test_data_class_sp, _ARCH_PWR9]
+ unsigned int __builtin_vec_scalar_test_data_class_sp (float, const int);
+ VSTDCSP VSTDCSP_DEPR1
+
[VEC_VSUBCUQ, vec_vsubcuqP, __builtin_vec_vsubcuq]
vsq __builtin_vec_vsubcuq (vsq, vsq);
VSUBCUQ VSUBCUQ_DEPR1
@@ -5961,6 +6018,30 @@
vui __builtin_vec_vsum4ubs (vuc, vui);
VSUM4UBS VSUM4UBS_DEPR1
+[VEC_VTDCDP, vec_test_data_class_dp, __builtin_vec_test_data_class_dp, _ARCH_PWR9]
+ vbll __builtin_vec_test_data_class_dp (vd, const int);
+ VTDCDP VTDCDP_DEPR1
+
+[VEC_VTDCSP, vec_test_data_class_sp, __builtin_vec_test_data_class_sp, _ARCH_PWR9]
+ vbi __builtin_vec_test_data_class_sp (vf, const int);
+ VTDCSP VTDCSP_DEPR1
+
+[VEC_UNS_DOUBLEE, vec_uns_doublee, __builtin_vec_uns_doublee]
+ vd __builtin_vec_uns_doublee (vui);
+ UNS_DOUBLEE_V4SI UNS_DOUBLEE_DEPR1
+
+[VEC_UNS_DOUBLEH, vec_uns_doubleh, __builtin_vec_uns_doubleh]
+ vd __builtin_vec_uns_doubleh (vui);
+ UNS_DOUBLEH_V4SI UNS_DOUBLEH_DEPR1
+
+[VEC_UNS_DOUBLEL, vec_uns_doublel, __builtin_vec_uns_doublel]
+ vd __builtin_vec_uns_doublel (vui);
+ UNS_DOUBLEL_V4SI UNS_DOUBLEL_DEPR1
+
+[VEC_UNS_DOUBLEO, vec_uns_doubleo, __builtin_vec_uns_doubleo]
+ vd __builtin_vec_uns_doubleo (vui);
+ UNS_DOUBLEO_V4SI UNS_DOUBLEO_DEPR1
+
[VEC_VUPKHPX, vec_vupkhpx, __builtin_vec_vupkhpx]
vui __builtin_vec_vupkhpx (vus);
VUPKHPX VUPKHPX_DEPR1
^ permalink raw reply [flat|nested] 2+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins10)] rs6000: **split and squash me**
@ 2021-03-31 19:18 William Schmidt
0 siblings, 0 replies; 2+ messages in thread
From: William Schmidt @ 2021-03-31 19:18 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:4ef477aada0cb8ab87deb1f77324a7cbd3e83cdb
commit 4ef477aada0cb8ab87deb1f77324a7cbd3e83cdb
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Wed Mar 31 14:15:14 2021 -0500
rs6000: **split and squash me**
Fix disparities between old and new builtins.
2021-03-31 Bill Schmidt <wschmidt@linux.ibm.com>
gcc/
* config/rs6000/altivec.h: Fix disparities.
* config/rs6000-builtin-new.def: Likewise.
* config/rs6000-call.c (rs6000_debug_type): Handle long long
types.
* config/rs6000-gen-builtins.c (write_init_ovld_table): Gate
float128 builtin registration based on availability.
* config/rs6000-overload.def: Fix disparities.
Diff:
---
gcc/config/rs6000/altivec.h | 6 ++
gcc/config/rs6000/rs6000-builtin-new.def | 37 ++++++------
gcc/config/rs6000/rs6000-call.c | 4 ++
gcc/config/rs6000/rs6000-gen-builtins.c | 17 ++++++
gcc/config/rs6000/rs6000-overload.def | 97 +++++++++++++++++++++++++++++---
5 files changed, 137 insertions(+), 24 deletions(-)
diff --git a/gcc/config/rs6000/altivec.h b/gcc/config/rs6000/altivec.h
index 3d68b787a75..8daf933e53e 100644
--- a/gcc/config/rs6000/altivec.h
+++ b/gcc/config/rs6000/altivec.h
@@ -139,6 +139,12 @@
#define __builtin_bcdcmple(a,b) __builtin_vec_bcdsub_le(a,b,0)
#endif
+#ifdef _ARCH_PWR10
+#define __builtin_vec_se_lxvrx __builtin_vec_xl_sext
+#define __builtin_vec_tr_stxvrx __builtin_vec_xst_trunc
+#define __builtin_vec_ze_lxvrx __builtin_vec_xl_zext
+#define __builtin_vsx_xxpermx __builtin_vec_xxpermx
+#endif
/* Predicates.
For C++, we use templates in order to allow non-parenthesized arguments.
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index f574c97bb93..36250c0e764 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -1140,8 +1140,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}
+;; Not present previously; why did I add this?
+; 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}
@@ -1341,8 +1342,9 @@
const vsll __builtin_vsx_concat_2di (signed long long, signed long long);
CONCAT_2DI vsx_concat_v2di {}
- const vull __builtin_vsx_concat_2di_uns (unsigned long long, unsigned long long);
- CONCAT_2DI_UNS vsx_concat_v2di {}
+;; Not present previously; why did I add this?
+; const vull __builtin_vsx_concat_2di_uns (unsigned long long, unsigned long long);
+; CONCAT_2DI_UNS vsx_concat_v2di {}
const vd __builtin_vsx_cpsgndp (vd, vd);
CPSGNDP vector_copysignv2df3 {}
@@ -1454,8 +1456,9 @@
const vsq __builtin_vsx_set_1ti (vsq, signed __int128, const int<0,0>);
SET_1TI vsx_set_v1ti {set}
- const vuq __builtin_vsx_set_1ti_uns (vuq, unsigned __int128, const int<0,0>);
- SET_1TI_UNS vsx_set_v1ti {set}
+;; Not present previously; why did I add this?
+; const vuq __builtin_vsx_set_1ti_uns (vuq, unsigned __int128, const int<0,0>);
+; SET_1TI_UNS vsx_set_v1ti {set}
const vd __builtin_vsx_set_2df (vd, double, const int<0,1>);
SET_2DF vsx_set_v2df {set}
@@ -1463,8 +1466,9 @@
const vsll __builtin_vsx_set_2di (vsll, signed long long, const int<0,1>);
SET_2DI vsx_set_v2di {set}
- const vull __builtin_vsx_set_2di_uns (vull, unsigned long long, const int<0,1>);
- SET_2DI_UNS vsx_set_v2di {set}
+;; Not present previously; why did I add this?
+; const vull __builtin_vsx_set_2di_uns (vull, unsigned long long, const int<0,1>);
+; SET_2DI_UNS vsx_set_v2di {set}
const vd __builtin_vsx_splat_2df (double);
SPLAT_2DF vsx_splat_v2df {}
@@ -1472,8 +1476,9 @@
const vsll __builtin_vsx_splat_2di (signed long long);
SPLAT_2DI vsx_splat_v2di {}
- const vull __builtin_vsx_splat_2di_uns (unsigned long long);
- SPLAT_2DI_UNS vsx_splat_v2di {}
+;; Not present previously; why did I add this?
+; const vull __builtin_vsx_splat_2di_uns (unsigned long long);
+; SPLAT_2DI_UNS vsx_splat_v2di {}
void __builtin_vsx_st_elemrev_v1ti (vsq, signed long, void *);
ST_ELEMREV_V1TI vsx_st_elemrev_v1ti {stvec,endian}
@@ -2053,6 +2058,12 @@
const vsll __builtin_altivec_abs_v2di (vsll);
ABS_V2DI absv2di2 {}
+ const vsc __builtin_altivec_bcddiv10_v16qi (vsc);
+ BCDDIV10_V16QI bcddiv10_v16qi {}
+
+ const vsc __builtin_altivec_bcdmul10_v16qi (vsc);
+ BCDMUL10_V16QI bcdmul10_v16qi {}
+
const vsc __builtin_altivec_eqv_v16qi (vsc, vsc);
EQV_V16QI eqvv16qi3 {}
@@ -2365,18 +2376,12 @@
const signed int __builtin_bcdadd_ov_v16qi (vuc, vuc, const int<1>);
BCDADD_OV_V16QI bcdadd_unordered_v16qi {}
- const vuc __builtin_bcddiv10_v16qi (vuc);
- BCDDIV10_V16QI bcddiv10_v16qi {}
-
const signed int __builtin_bcdinvalid_v1ti (vsq);
BCDINVALID_V1TI bcdinvalid_v1ti {}
const signed int __builtin_bcdinvalid_v16qi (vuc);
BCDINVALID_V16QI bcdinvalid_v16qi {}
- const vuc __builtin_bcdmul10_v16qi (vuc);
- BCDMUL10_V16QI bcdmul10_v16qi {}
-
const vsq __builtin_bcdsub_v1ti (vsq, vsq, const int<1>);
BCDSUB_V1TI bcdsub_v1ti {}
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 82f49f8b320..c9834105d91 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -8789,6 +8789,10 @@ const char *rs6000_debug_type (tree type)
return "long";
else if (type == long_unsigned_type_node)
return "ulong";
+ else if (type == long_long_integer_type_node)
+ return "longlong";
+ else if (type == long_long_unsigned_type_node)
+ return "ulonglong";
else if (type == bool_V16QI_type_node)
return "vbc";
else if (type == bool_V2DI_type_node)
diff --git a/gcc/config/rs6000/rs6000-gen-builtins.c b/gcc/config/rs6000/rs6000-gen-builtins.c
index 1495929e1e4..b227a6d9f51 100644
--- a/gcc/config/rs6000/rs6000-gen-builtins.c
+++ b/gcc/config/rs6000/rs6000-gen-builtins.c
@@ -2689,12 +2689,25 @@ write_init_ovld_table ()
ovld_stanza *stanza = &ovld_stanzas[ovlds[i].stanza];
fprintf (init_file, "\n");
+ /* Check whether we have a "tf" token in this string, representing
+ a float128_type_node. It's possible that float128_type_node is
+ undefined (occurs for -maltivec -mno-vsx, for example), so we
+ must guard against that. */
+ int tf_found = strstr (ovlds[i].fndecl, "tf") != NULL;
+
/* The fndecl for an overload is arbitrarily the first one
for the overload. We sort out the real types when
processing the overload in the gcc front end. */
fprintf (init_file,
" if (new_builtins_are_live)\n");
fprintf (init_file, " {\n");
+
+ if (tf_found)
+ {
+ fprintf (init_file, " if (float128_type_node)\n");
+ fprintf (init_file, " {\n");
+ }
+
fprintf (init_file,
" rs6000_builtin_decls_x[(int)RS6000_OVLD_%s] = t\n",
stanza->stanza_id);
@@ -2710,6 +2723,10 @@ write_init_ovld_table ()
stanza->stanza_id);
fprintf (init_file,
" NULL, NULL_TREE);\n");
+
+ if (tf_found)
+ fprintf (init_file, " }\n");
+
fprintf (init_file, " }\n\n");
fprintf (init_file,
diff --git a/gcc/config/rs6000/rs6000-overload.def b/gcc/config/rs6000/rs6000-overload.def
index 0ac1d4edd64..d01fab4c1ff 100644
--- a/gcc/config/rs6000/rs6000-overload.def
+++ b/gcc/config/rs6000/rs6000-overload.def
@@ -1878,14 +1878,15 @@
LVXL_V2DI LVXL_V2DI_ULL
vbll __builtin_vec_ldl (signed long, const vbll *);
LVXL_V2DI LVXL_V2DI_VBLL
- vsq __builtin_vec_ldl (signed long, const vsq *);
- LVXL_V1TI LVXL_V1TI_VSQ
- vuq __builtin_vec_ldl (signed long, const vuq *);
- LVXL_V1TI LVXL_V1TI_VUQ
- vsq __builtin_vec_ldl (signed long, const __int128 *);
- LVXL_V1TI LVXL_V1TI_TI
- vuq __builtin_vec_ldl (signed long, const unsigned __int128 *);
- LVXL_V1TI LVXL_V1TI_UTI
+;; Not present previously; why did I add these?
+; vsq __builtin_vec_ldl (signed long, const vsq *);
+; LVXL_V1TI LVXL_V1TI_VSQ
+; vuq __builtin_vec_ldl (signed long, const vuq *);
+; LVXL_V1TI LVXL_V1TI_VUQ
+; vsq __builtin_vec_ldl (signed long, const __int128 *);
+; LVXL_V1TI LVXL_V1TI_TI
+; vuq __builtin_vec_ldl (signed long, const unsigned __int128 *);
+; LVXL_V1TI LVXL_V1TI_UTI
vf __builtin_vec_ldl (signed long, const vf *);
LVXL_V4SF LVXL_V4SF_VF
vf __builtin_vec_ldl (signed long, const float *);
@@ -5251,6 +5252,34 @@
vui __builtin_vec_vctzw (vui);
VCTZW VCTZW_DEPR2
+[VEC_VEEDP, vec_extract_exp_dp, __builtin_vec_extract_exp_dp, _ARCH_PWR9]
+ vull __builtin_vec_extract_exp_dp (vd);
+ VEEDP VEEDP_DEPR1
+
+[VEC_VEESP, vec_extract_exp_sp, __builtin_vec_extract_exp_sp, _ARCH_PWR9]
+ vui __builtin_vec_extract_exp_sp (vf);
+ VEESP VEESP_DEPR1
+
+[VEC_VESDP, vec_extract_sig_dp, __builtin_vec_extract_sig_dp, _ARCH_PWR9]
+ vull __builtin_vec_extract_sig_dp (vd);
+ VESDP VESDP_DEPR1
+
+[VEC_VESSP, vec_extract_sig_sp, __builtin_vec_extract_sig_sp, _ARCH_PWR9]
+ vui __builtin_vec_extract_sig_sp (vf);
+ VESSP VESSP_DEPR1
+
+[VEC_VIEDP, vec_insert_exp_dp, __builtin_vec_insert_exp_dp, _ARCH_PWR9]
+ vd __builtin_vec_insert_exp_dp (vd, vull);
+ VIEDP VIEDP_DEPR1
+ vd __builtin_vec_insert_exp_dp (vull, vull);
+ VIEDP VIEDP_DEPR2
+
+[VEC_VIESP, vec_insert_exp_sp, __builtin_vec_insert_exp_sp, _ARCH_PWR9]
+ vf __builtin_vec_insert_exp_sp (vf, vui);
+ VIESP VIESP_DEPR1
+ vf __builtin_vec_insert_exp_sp (vui, vui);
+ VIESP VIESP_DEPR2
+
[VEC_VMAXFP, vec_vmaxfp, __builtin_vec_vmaxfp]
vf __builtin_vec_vmaxfp (vf, vf);
VMAXFP VMAXFP_DEPR1
@@ -5483,6 +5512,10 @@
vui __builtin_vec_vmsumubm (vuc, vuc, vui);
VMSUMUBM VMSUMUBM_DEPR1
+[VEC_VMSUMUDM, vec_vmsumudm, __builtin_vec_vmsumudm]
+ vuq __builtin_vec_vmsumudm (vull, vull, vuq);
+ VMSUMUDM VMSUMUDM_DEPR1
+
[VEC_VMSUMUHM, vec_vmsumuhm, __builtin_vec_vmsumuhm]
vui __builtin_vec_vmsumuhm (vus, vus, vui);
VMSUMUHM VMSUMUHM_DEPR1
@@ -5787,6 +5820,30 @@
vui __builtin_vec_vsrw (vui, vui);
VSRW VSRW_DEPR2
+[VEC_VSTDCDP, scalar_test_data_class_dp, __builtin_vec_scalar_test_data_class_dp, _ARCH_PWR9]
+ unsigned int __builtin_vec_scalar_test_data_class_dp (double, const int);
+ VSTDCDP VSTDCDP_DEPR1
+
+[VEC_VSTDCNDP, scalar_test_neg_dp, __builtin_vec_scalar_test_neg_dp, _ARCH_PWR9]
+ unsigned int __builtin_vec_scalar_test_neg_dp (double);
+ VSTDCNDP VSTDCNDP_DEPR1
+
+[VEC_VSTDCNQP, scalar_test_neg_qp, __builtin_vec_scalar_test_neg_qp, _ARCH_PWR9]
+ unsigned int __builtin_vec_scalar_test_neg_qp (_Float128);
+ VSTDCNQP VSTDCNQP_DEPR1
+
+[VEC_VSTDCNSP, scalar_test_neg_sp, __builtin_vec_scalar_test_neg_sp, _ARCH_PWR9]
+ unsigned int __builtin_vec_scalar_test_neg_sp (float);
+ VSTDCNSP VSTDCNSP_DEPR1
+
+[VEC_VSTDCQP, scalar_test_data_class_qp, __builtin_vec_scalar_test_data_class_qp, _ARCH_PWR9]
+ unsigned int __builtin_vec_scalar_test_data_class_qp (_Float128, const int);
+ VSTDCQP VSTDCQP_DEPR1
+
+[VEC_VSTDCSP, scalar_test_data_class_sp, __builtin_vec_scalar_test_data_class_sp, _ARCH_PWR9]
+ unsigned int __builtin_vec_scalar_test_data_class_sp (float, const int);
+ VSTDCSP VSTDCSP_DEPR1
+
[VEC_VSUBCUQ, vec_vsubcuqP, __builtin_vec_vsubcuq]
vsq __builtin_vec_vsubcuq (vsq, vsq);
VSUBCUQ VSUBCUQ_DEPR1
@@ -5961,6 +6018,30 @@
vui __builtin_vec_vsum4ubs (vuc, vui);
VSUM4UBS VSUM4UBS_DEPR1
+[VEC_VTDCDP, vec_test_data_class_dp, __builtin_vec_test_data_class_dp, _ARCH_PWR9]
+ vbll __builtin_vec_test_data_class_dp (vd, const int);
+ VTDCDP VTDCDP_DEPR1
+
+[VEC_VTDCSP, vec_test_data_class_sp, __builtin_vec_test_data_class_sp, _ARCH_PWR9]
+ vbi __builtin_vec_test_data_class_sp (vf, const int);
+ VTDCSP VTDCSP_DEPR1
+
+[VEC_UNS_DOUBLEE, vec_uns_doublee, __builtin_vec_uns_doublee]
+ vd __builtin_vec_uns_doublee (vui);
+ UNS_DOUBLEE_V4SI UNS_DOUBLEE_DEPR1
+
+[VEC_UNS_DOUBLEH, vec_uns_doubleh, __builtin_vec_uns_doubleh]
+ vd __builtin_vec_uns_doubleh (vui);
+ UNS_DOUBLEH_V4SI UNS_DOUBLEH_DEPR1
+
+[VEC_UNS_DOUBLEL, vec_uns_doublel, __builtin_vec_uns_doublel]
+ vd __builtin_vec_uns_doublel (vui);
+ UNS_DOUBLEL_V4SI UNS_DOUBLEL_DEPR1
+
+[VEC_UNS_DOUBLEO, vec_uns_doubleo, __builtin_vec_uns_doubleo]
+ vd __builtin_vec_uns_doubleo (vui);
+ UNS_DOUBLEO_V4SI UNS_DOUBLEO_DEPR1
+
[VEC_VUPKHPX, vec_vupkhpx, __builtin_vec_vupkhpx]
vui __builtin_vec_vupkhpx (vus);
VUPKHPX VUPKHPX_DEPR1
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-03-31 19:18 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-30 23:07 [gcc(refs/users/wschmidt/heads/builtins10)] rs6000: **split and squash me** William Schmidt
2021-03-31 19:18 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).