diff options
Diffstat (limited to 'gcc/config/rs6000/rs6000-builtin.def')
-rw-r--r-- | gcc/config/rs6000/rs6000-builtin.def | 65 |
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) |