aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/rs6000/rs6000-builtin.def
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/rs6000/rs6000-builtin.def')
-rw-r--r--gcc/config/rs6000/rs6000-builtin.def65
1 files changed, 65 insertions, 0 deletions
diff --git a/gcc/config/rs6000/rs6000-builtin.def b/gcc/config/rs6000/rs6000-builtin.def
index fef3fd4b496..e4aec3575c3 100644
--- a/gcc/config/rs6000/rs6000-builtin.def
+++ b/gcc/config/rs6000/rs6000-builtin.def
@@ -799,6 +799,14 @@
| RS6000_BTC_UNARY), \
CODE_FOR_ ## ICODE) /* ICODE */
+#define BU_P9V_VSX_2(ENUM, NAME, ATTR, ICODE) \
+ RS6000_BUILTIN_1 (P9V_BUILTIN_ ## ENUM, /* ENUM */ \
+ "__builtin_vsx_" NAME, /* NAME */ \
+ RS6000_BTM_P9_VECTOR, /* MASK */ \
+ (RS6000_BTC_ ## ATTR /* ATTR */ \
+ | RS6000_BTC_BINARY), \
+ CODE_FOR_ ## ICODE) /* ICODE */
+
#define BU_P9V_OVERLOAD_1(ENUM, NAME) \
RS6000_BUILTIN_1 (P9V_BUILTIN_VEC_ ## ENUM, /* ENUM */ \
"__builtin_vec_" NAME, /* NAME */ \
@@ -1799,6 +1807,63 @@ BU_P9V_OVERLOAD_2 (VADUB, "vadub")
BU_P9V_OVERLOAD_2 (VADUH, "vaduh")
BU_P9V_OVERLOAD_2 (VADUW, "vaduw")
+/* 2 argument vector functions added in ISA 3.0 (power9). */
+BU_P9V_VSX_2 (LXVL, "lxvl", CONST, lxvl)
+BU_P9V_VSX_2 (STXVL, "stxvl", CONST, stxvl)
+
+BU_P9V_AV_2 (VCMPNEB, "vcmpneb", CONST, vcmpneb)
+BU_P9V_AV_2 (VCMPNEB_AT, "vcmpb_all_ne", CONST, vcmpneb_at)
+BU_P9V_AV_2 (VCMPNEB_NAF, "vcmpb_any_eq", CONST, vcmpneb_naf)
+
+BU_P9V_AV_2 (VCMPNEH, "vcmpneh", CONST, vcmpneh)
+BU_P9V_AV_2 (VCMPNEH_AT, "vcmph_all_ne", CONST, vcmpneh_at)
+BU_P9V_AV_2 (VCMPNEH_NAF, "vcmph_any_eq", CONST, vcmpneh_naf)
+
+BU_P9V_AV_2 (VCMPNEW, "vcmpnew", CONST, vcmpnew)
+BU_P9V_AV_2 (VCMPNEW_AT, "vcmpw_all_ne", CONST, vcmpnew_at)
+BU_P9V_AV_2 (VCMPNEW_NAF, "vcmpw_any_eq", CONST, vcmpnew_naf)
+
+BU_P9V_AV_2 (VCMPNEZB, "vcmpnezb", CONST, vcmpnezb)
+BU_P9V_AV_2 (VCMPNEZB_AT, "vcmpzb_all_ne", CONST, vcmpnezb_at)
+BU_P9V_AV_2 (VCMPNEZB_NAF, "vcmpb_any_eqz", CONST, vcmpnezb_naf)
+
+BU_P9V_AV_2 (VCMPNEZH, "vcmpnezh", CONST, vcmpnezh)
+BU_P9V_AV_2 (VCMPNEZH_AT, "vcmpzh_all_ne", CONST, vcmpnezh_at)
+BU_P9V_AV_2 (VCMPNEZH_NAF, "vcmph_any_eqz", CONST, vcmpnezh_naf)
+
+BU_P9V_AV_2 (VCMPNEZW, "vcmpnezw", CONST, vcmpnezw)
+BU_P9V_AV_2 (VCMPNEZW_AT, "vcmpzw_all_ne", CONST, vcmpnezw_at)
+BU_P9V_AV_2 (VCMPNEZW_NAF, "vcmpw_any_eqz", CONST, vcmpnezw_naf)
+
+BU_P9V_AV_2 (VEXTUBLX, "vextublx", CONST, vextublx)
+BU_P9V_AV_2 (VEXTUBRX, "vextubrx", CONST, vextubrx)
+BU_P9V_AV_2 (VEXTUHLX, "vextuhlx", CONST, vextuhlx)
+BU_P9V_AV_2 (VEXTUHRX, "vextuhrx", CONST, vextuhrx)
+BU_P9V_AV_2 (VEXTUWLX, "vextuwlx", CONST, vextuwlx)
+BU_P9V_AV_2 (VEXTUWRX, "vextuwrx", CONST, vextuwrx)
+
+/* 1 argument vector functions added in ISA 3.0 (power9). */
+BU_P9V_AV_1 (VCLZLSBB, "vclzlsbb", CONST, vclzlsbb)
+BU_P9V_AV_1 (VCTZLSBB, "vctzlsbb", CONST, vctzlsbb)
+
+/* ISA 3.0 Vector scalar overloaded 2 argument functions */
+BU_P9V_OVERLOAD_2 (LXVL, "lxvl")
+BU_P9V_OVERLOAD_2 (STXVL, "stxvl")
+
+BU_P9V_OVERLOAD_2 (VCMPNE, "vcmpne")
+BU_P9V_OVERLOAD_2 (VCMPNEZ, "vcmpnez")
+BU_P9V_OVERLOAD_2 (VCMPNE_AT, "vcmp_all_ne")
+BU_P9V_OVERLOAD_2 (VCMPNEZ_AT, "vcmp_all_nez")
+BU_P9V_OVERLOAD_2 (VCMPNE_NAF, "vcmp_any_eq")
+BU_P9V_OVERLOAD_2 (VCMPNEZ_NAF, "vcmp_any_eqz")
+
+BU_P9V_OVERLOAD_2 (VEXTULX, "vextulx")
+BU_P9V_OVERLOAD_2 (VEXTURX, "vexturx")
+
+/* ISA 3.0 Vector scalar overloaded 1 argument functions */
+BU_P9V_OVERLOAD_1 (VCLZLSBB, "vclzlsbb")
+BU_P9V_OVERLOAD_1 (VCTZLSBB, "vctzlsbb")
+
/* 2 argument extended divide functions added in ISA 2.06. */
BU_P7_MISC_2 (DIVWE, "divwe", CONST, dive_si)