diff --git a/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td b/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td --- a/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td +++ b/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td @@ -2368,12 +2368,12 @@ defm : ld1rq_pat; defm : ld1rq_pat; - def : Pat<(sext_inreg (nxv2i64 ZPR:$Zs), nxv2i32), (SXTW_ZPmZ_UNDEF_D (IMPLICIT_DEF), (PTRUE_D 31), ZPR:$Zs)>; - def : Pat<(sext_inreg (nxv2i64 ZPR:$Zs), nxv2i16), (SXTH_ZPmZ_UNDEF_D (IMPLICIT_DEF), (PTRUE_D 31), ZPR:$Zs)>; - def : Pat<(sext_inreg (nxv2i64 ZPR:$Zs), nxv2i8), (SXTB_ZPmZ_UNDEF_D (IMPLICIT_DEF), (PTRUE_D 31), ZPR:$Zs)>; - def : Pat<(sext_inreg (nxv4i32 ZPR:$Zs), nxv4i16), (SXTH_ZPmZ_UNDEF_S (IMPLICIT_DEF), (PTRUE_S 31), ZPR:$Zs)>; - def : Pat<(sext_inreg (nxv4i32 ZPR:$Zs), nxv4i8), (SXTB_ZPmZ_UNDEF_S (IMPLICIT_DEF), (PTRUE_S 31), ZPR:$Zs)>; - def : Pat<(sext_inreg (nxv8i16 ZPR:$Zs), nxv8i8), (SXTB_ZPmZ_UNDEF_H (IMPLICIT_DEF), (PTRUE_H 31), ZPR:$Zs)>; + def : Pat<(sext_inreg (nxv2i64 ZPR:$Zs), nxv2i32), (SXTW_ZPmZ_D_UNDEF (IMPLICIT_DEF), (PTRUE_D 31), ZPR:$Zs)>; + def : Pat<(sext_inreg (nxv2i64 ZPR:$Zs), nxv2i16), (SXTH_ZPmZ_D_UNDEF (IMPLICIT_DEF), (PTRUE_D 31), ZPR:$Zs)>; + def : Pat<(sext_inreg (nxv2i64 ZPR:$Zs), nxv2i8), (SXTB_ZPmZ_D_UNDEF (IMPLICIT_DEF), (PTRUE_D 31), ZPR:$Zs)>; + def : Pat<(sext_inreg (nxv4i32 ZPR:$Zs), nxv4i16), (SXTH_ZPmZ_S_UNDEF (IMPLICIT_DEF), (PTRUE_S 31), ZPR:$Zs)>; + def : Pat<(sext_inreg (nxv4i32 ZPR:$Zs), nxv4i8), (SXTB_ZPmZ_S_UNDEF (IMPLICIT_DEF), (PTRUE_S 31), ZPR:$Zs)>; + def : Pat<(sext_inreg (nxv8i16 ZPR:$Zs), nxv8i8), (SXTB_ZPmZ_H_UNDEF (IMPLICIT_DEF), (PTRUE_H 31), ZPR:$Zs)>; // General case that we ideally never want to match. def : Pat<(vscale GPR64:$scale), (MADDXrrr (UBFMXri (RDVLI_XI 1), 4, 63), $scale, XZR)>; diff --git a/llvm/lib/Target/AArch64/AArch64SchedNeoverseV2.td b/llvm/lib/Target/AArch64/AArch64SchedNeoverseV2.td --- a/llvm/lib/Target/AArch64/AArch64SchedNeoverseV2.td +++ b/llvm/lib/Target/AArch64/AArch64SchedNeoverseV2.td @@ -2065,7 +2065,7 @@ // Arithmetic, absolute diff def : InstRW<[V2Write_2cyc_1V], (instregex "^[SU]ABD_ZPmZ_[BHSD]$", - "^[SU]ABD_ZPZZ_UNDEF_[BHSD]$")>; + "^[SU]ABD_ZPZZ_[BHSD]_UNDEF$")>; // Arithmetic, absolute diff accum def : InstRW<[V2Wr_ZA, V2Rd_ZA], (instregex "^[SU]ABA_ZZZ_[BHSD]$")>; @@ -2079,7 +2079,7 @@ // Arithmetic, basic def : InstRW<[V2Write_2cyc_1V], (instregex "^(ABS|ADD|CNOT|NEG|SUB|SUBR)_ZPmZ_[BHSD]$", - "^(ABS|CNOT|NEG)_ZPmZ_UNDEF_[BHSD]$", + "^(ABS|CNOT|NEG)_ZPmZ_[BHSD]_UNDEF$", "^(ADD|SUB)_ZZZ_[BHSD]$", "^(ADD|SUB|SUBR)_ZI_[BHSD]$", "^ADR_[SU]XTW_ZZZ_D_[0123]$", @@ -2093,7 +2093,7 @@ def : InstRW<[V2Write_2cyc_1V], (instregex "^R?(ADD|SUB)HN[BT]_ZZZ_[BHS]$", "^SQ(ABS|ADD|NEG|SUB|SUBR)_ZPmZ_[BHSD]$", - "^SQ(ABS|NEG)_ZPmZ_UNDEF_[BHSD]$", + "^SQ(ABS|NEG)_ZPmZ_[BHSD]_UNDEF$", "^[SU]Q(ADD|SUB)_ZZZ_[BHSD]$", "^[SU]Q(ADD|SUB)_ZI_[BHSD]$", "^(SRH|SUQ|UQ|USQ|URH)ADD_ZPmZ_[BHSD]$", @@ -2116,7 +2116,7 @@ "^(ASR|LSL|LSR)_ZPmI_[BHSD]$", "^(ASR|LSL|LSR)_ZPmZ_[BHSD]$", "^(ASR|LSL|LSR)_ZZI_[BHSD]$", - "^(ASR|LSL|LSR)_ZPZ[IZ]_UNDEF_[BHSD]$", + "^(ASR|LSL|LSR)_ZPZ[IZ]_[BHSD]_UNDEF$", "^(ASRR|LSLR|LSRR)_ZPmZ_[BHSD]$")>; // Arithmetic, shift and accumulate @@ -2133,7 +2133,7 @@ def : InstRW<[V2Write_4cyc_1V13], (instregex "^(SQ)?RSHRU?N[BT]_ZZI_[BHS]$", "^(SQRSHL|SQRSHLR|SQSHL|SQSHLR|UQRSHL|UQRSHLR|UQSHL|UQSHLR)_ZPmZ_[BHSD]$", - "^[SU]QR?SHL_ZPZZ_UNDEF_[BHSD]$", + "^[SU]QR?SHL_ZPZZ_[BHSD]_UNDEF$", "^(SQSHL|SQSHLU|UQSHL)_ZPmI_[BHSD]$", "^SQSHRU?N[BT]_ZZI_[BHS]$", "^UQR?SHRN[BT]_ZZI_[BHS]$")>; @@ -2143,7 +2143,7 @@ // Arithmetic, shift rounding def : InstRW<[V2Write_4cyc_1V13], (instregex "^[SU]RSHLR?_ZPmZ_[BHSD]$", - "^[SU]RSHL_ZPZZ_UNDEF_[BHSD]$", + "^[SU]RSHL_ZPZZ_[BHSD]_UNDEF$", "^[SU]RSHR_ZPmI_[BHSD]$")>; // Bit manipulation @@ -2154,7 +2154,7 @@ // Count/reverse bits def : InstRW<[V2Write_2cyc_1V], (instregex "^(CLS|CLZ|CNT|RBIT)_ZPmZ_[BHSD]$", - "^(CLS|CLZ|CNT)_ZPmZ_UNDEF_[BHSD]$")>; + "^(CLS|CLZ|CNT)_ZPmZ_[BHSD]_UNDEF$")>; // Broadcast logical bitmask immediate to vector def : InstRW<[V2Write_2cyc_1V], (instrs DUPM_ZI)>; @@ -2207,11 +2207,11 @@ // Divides, 32 bit def : InstRW<[V2Write_12cyc_1V0], (instregex "^[SU]DIVR?_ZPmZ_S$", - "^[SU]DIV_ZPZZ_UNDEF_S$")>; + "^[SU]DIV_ZPZZ_S_UNDEF$")>; // Divides, 64 bit def : InstRW<[V2Write_20cyc_1V0], (instregex "^[SU]DIVR?_ZPmZ_D$", - "^[SU]DIV_ZPZZ_UNDEF_D$")>; + "^[SU]DIV_ZPZZ_D_UNDEF$")>; // Dot product, 8 bit def : InstRW<[V2Wr_ZDOTB, V2Rd_ZDOTB], (instregex "^[SU]DOT_ZZZI?_S$")>; @@ -2273,12 +2273,12 @@ "^(AND|BIC|EOR|ORR)_ZZZ$", "^EOR(BT|TB)_ZZZ_[BHSD]$", "^(AND|BIC|EOR|NOT|ORR)_ZPmZ_[BHSD]$", - "^NOT_ZPmZ_UNDEF_[BHSD]$")>; + "^NOT_ZPmZ_[BHSD]_UNDEF$")>; // Max/min, basic and pairwise def : InstRW<[V2Write_2cyc_1V], (instregex "^[SU](MAX|MIN)_ZI_[BHSD]$", "^[SU](MAX|MIN)P?_ZPmZ_[BHSD]$", - "^[SU](MAX|MIN)_ZPZZ_UNDEF_[BHSD]$")>; + "^[SU](MAX|MIN)_ZPZZ_[BHSD]_UNDEF$")>; // Matching operations // FIXME: SOG p. 44, n. 5: If the consuming instruction has a flag source, the @@ -2294,15 +2294,15 @@ // Multiply, B, H, S element size def : InstRW<[V2Write_4cyc_1V02], (instregex "^MUL_(ZI|ZPmZ|ZZZI|ZZZ)_[BHS]$", - "^MUL_ZPZZ_UNDEF_[BHS]$", + "^MUL_ZPZZ_[BHS]_UNDEF$", "^[SU]MULH_(ZPmZ|ZZZ)_[BHS]$", - "^[SU]MULH_ZPZZ_UNDEF_[BHS]$")>; + "^[SU]MULH_ZPZZ_[BHS]_UNDEF$")>; // Multiply, D element size def : InstRW<[V2Write_5cyc_2V02], (instregex "^MUL_(ZI|ZPmZ|ZZZI|ZZZ)_D$", - "^MUL_ZPZZ_UNDEF_D$", + "^MUL_ZPZZ_D_UNDEF$", "^[SU]MULH_(ZPmZ|ZZZ)_D$", - "^[SU]MULH_ZPZZ_UNDEF_D$")>; + "^[SU]MULH_ZPZZ_D_UNDEF$")>; // Multiply long def : InstRW<[V2Write_4cyc_1V02], (instregex "^[SU]MULL[BT]_ZZZI_[SD]$", @@ -2310,13 +2310,13 @@ // Multiply accumulate, B, H, S element size def : InstRW<[V2Wr_ZMABHS, V2Rd_ZMABHS], - (instregex "^ML[AS]_ZZZI_[HS]$", "^ML[AS]_ZPZZZ_UNDEF_[BHS]$")>; + (instregex "^ML[AS]_ZZZI_[HS]$", "^ML[AS]_ZPZZZ_[BHS]_UNDEF$")>; def : InstRW<[V2Wr_ZMABHS, ReadDefault, V2Rd_ZMABHS], (instregex "^(ML[AS]|MAD|MSB)_ZPmZZ_[BHS]$")>; // Multiply accumulate, D element size def : InstRW<[V2Wr_ZMAD, V2Rd_ZMAD], - (instregex "^ML[AS]_ZZZI_D$", "^ML[AS]_ZPZZZ_UNDEF_D$")>; + (instregex "^ML[AS]_ZZZI_D$", "^ML[AS]_ZPZZZ_D_UNDEF$")>; def : InstRW<[V2Wr_ZMAD, ReadDefault, V2Rd_ZMAD], (instregex "^(ML[AS]|MAD|MSB)_ZPmZZ_D$")>; @@ -2368,7 +2368,7 @@ // Reciprocal estimate def : InstRW<[V2Write_4cyc_2V02], (instrs URECPE_ZPmZ_S, URSQRTE_ZPmZ_S, - URECPE_ZPmZ_UNDEF_S, URSQRTE_ZPmZ_UNDEF_S)>; + URECPE_ZPmZ_S_UNDEF, URSQRTE_ZPmZ_S_UNDEF)>; // Reduction, arithmetic, B form def : InstRW<[V2Write_9cyc_2V_4V13], (instregex "^[SU](ADD|MAX|MIN)V_VPZ_B")>; @@ -2414,16 +2414,16 @@ // Floating point absolute value/difference def : InstRW<[V2Write_2cyc_1V], (instregex "^FAB[SD]_ZPmZ_[HSD]$", - "^FABD_ZPZZ_UNDEF_[HSD]$", - "^FABS_ZPmZ_UNDEF_[HSD]$")>; + "^FABD_ZPZZ_[HSD]_UNDEF$", + "^FABS_ZPmZ_[HSD]_UNDEF$")>; // Floating point arithmetic def : InstRW<[V2Write_2cyc_1V], (instregex "^F(ADD|SUB)_(ZPm[IZ]|ZZZ)_[HSD]$", - "^F(ADD|SUB)_ZPZ[IZ]_UNDEF_[HSD]$", + "^F(ADD|SUB)_ZPZ[IZ]_[HSD]_UNDEF$", "^FADDP_ZPmZZ_[HSD]$", "^FNEG_ZPmZ(_UNDEF)?_[HSD]$", "^FSUBR_ZPm[IZ]_[HSD]$", - "^FSUBR_ZPZI_UNDEF_[HSD]$")>; + "^FSUBR_ZPZI_[HSD]_UNDEF$")>; // Floating point associative add, F16 def : InstRW<[V2Write_10cyc_1V1_9rc], (instrs FADDA_VPZ_H)>; @@ -2486,28 +2486,28 @@ // Floating point divide, F16 def : InstRW<[V2Write_13cyc_1V02_12rc], (instregex "^FDIVR?_ZPmZ_H$", - "^FDIV_ZPZZ_UNDEF_H$")>; + "^FDIV_ZPZZ_H_UNDEF$")>; // Floating point divide, F32 def : InstRW<[V2Write_10cyc_1V02_9rc], (instregex "^FDIVR?_ZPmZ_S$", - "^FDIV_ZPZZ_UNDEF_S$")>; + "^FDIV_ZPZZ_S_UNDEF$")>; // Floating point divide, F64 def : InstRW<[V2Write_15cyc_1V02_14rc], (instregex "^FDIVR?_ZPmZ_D$", - "^FDIV_ZPZZ_UNDEF_D$")>; + "^FDIV_ZPZZ_D_UNDEF$")>; // Floating point min/max pairwise def : InstRW<[V2Write_2cyc_1V], (instregex "^F(MAX|MIN)(NM)?P_ZPmZZ_[HSD]$")>; // Floating point min/max def : InstRW<[V2Write_2cyc_1V], (instregex "^F(MAX|MIN)(NM)?_ZPm[IZ]_[HSD]$", - "^F(MAX|MIN)(NM)?_ZPZ[IZ]_UNDEF_[HSD]$")>; + "^F(MAX|MIN)(NM)?_ZPZ[IZ]_[HSD]_UNDEF$")>; // Floating point multiply def : InstRW<[V2Write_3cyc_1V], (instregex "^(FSCALE|FMULX)_ZPmZ_[HSD]$", - "^FMULX_ZPZZ_UNDEF_[HSD]$", + "^FMULX_ZPZZ_[HSD]_UNDEF$", "^FMUL_(ZPm[IZ]|ZZZI?)_[HSD]$", - "^FMUL_ZPZ[IZ]_UNDEF_[HSD]$")>; + "^FMUL_ZPZ[IZ]_[HSD]_UNDEF$")>; // Floating point multiply accumulate def : InstRW<[V2Wr_ZFMA, ReadDefault, V2Rd_ZFMA], @@ -2515,22 +2515,22 @@ "^FN?(MAD|MSB)_ZPmZZ_[HSD]$")>; def : InstRW<[V2Wr_ZFMA, V2Rd_ZFMA], (instregex "^FML[AS]_ZZZI_[HSD]$", - "^FN?ML[AS]_ZPZZZ_UNDEF_[HSD]$")>; + "^FN?ML[AS]_ZPZZZ_[HSD]_UNDEF$")>; // Floating point multiply add/sub accumulate long def : InstRW<[V2Wr_ZFMAL, V2Rd_ZFMAL], (instregex "^FML[AS]L[BT]_ZZZI?_SHH$")>; // Floating point reciprocal estimate, F16 def : InstRW<[V2Write_6cyc_4V02], (instrs FRECPE_ZZ_H, FRECPX_ZPmZ_H, - FRSQRTE_ZZ_H, FRECPX_ZPmZ_UNDEF_H)>; + FRSQRTE_ZZ_H, FRECPX_ZPmZ_H_UNDEF)>; // Floating point reciprocal estimate, F32 def : InstRW<[V2Write_4cyc_2V02], (instrs FRECPE_ZZ_S, FRECPX_ZPmZ_S, - FRSQRTE_ZZ_S, FRECPX_ZPmZ_UNDEF_S)>; + FRSQRTE_ZZ_S, FRECPX_ZPmZ_S_UNDEF)>; // Floating point reciprocal estimate, F64 def : InstRW<[V2Write_3cyc_1V02], (instrs FRECPE_ZZ_D, FRECPX_ZPmZ_D, - FRSQRTE_ZZ_D, FRECPX_ZPmZ_UNDEF_D)>; + FRSQRTE_ZZ_D, FRECPX_ZPmZ_D_UNDEF)>; // Floating point reciprocal step def : InstRW<[V2Write_4cyc_1V], (instregex "^F(RECPS|RSQRTS)_ZZZ_[HSD]$")>; @@ -2557,13 +2557,13 @@ def : InstRW<[V2Write_3cyc_1V02], (instregex "^FRINT[AIMNPXZ]_ZPmZ(_UNDEF)?_D$")>; // Floating point square root, F16 -def : InstRW<[V2Write_13cyc_1V0_12rc], (instrs FSQRT_ZPmZ_H, FSQRT_ZPmZ_UNDEF_H)>; +def : InstRW<[V2Write_13cyc_1V0_12rc], (instrs FSQRT_ZPmZ_H, FSQRT_ZPmZ_H_UNDEF)>; // Floating point square root, F32 -def : InstRW<[V2Write_10cyc_1V0_9rc], (instrs FSQRT_ZPmZ_S, FSQRT_ZPmZ_UNDEF_S)>; +def : InstRW<[V2Write_10cyc_1V0_9rc], (instrs FSQRT_ZPmZ_S, FSQRT_ZPmZ_S_UNDEF)>; // Floating point square root, F64 -def : InstRW<[V2Write_16cyc_1V0_14rc], (instrs FSQRT_ZPmZ_D, FSQRT_ZPmZ_UNDEF_D)>; +def : InstRW<[V2Write_16cyc_1V0_14rc], (instrs FSQRT_ZPmZ_D, FSQRT_ZPmZ_D_UNDEF)>; // Floating point trigonometric exponentiation def : InstRW<[V2Write_3cyc_1V1], (instregex "^FEXPA_ZZ_[HSD]$")>; diff --git a/llvm/lib/Target/AArch64/SVEInstrFormats.td b/llvm/lib/Target/AArch64/SVEInstrFormats.td --- a/llvm/lib/Target/AArch64/SVEInstrFormats.td +++ b/llvm/lib/Target/AArch64/SVEInstrFormats.td @@ -2111,13 +2111,13 @@ } multiclass sve_fp_2op_p_zds_zeroing_hsd { - def _ZERO_H : PredTwoOpPseudo; - def _ZERO_S : PredTwoOpPseudo; - def _ZERO_D : PredTwoOpPseudo; + def _H_ZERO : PredTwoOpPseudo; + def _S_ZERO : PredTwoOpPseudo; + def _D_ZERO : PredTwoOpPseudo; - def : SVE_3_Op_Pat_SelZero(NAME # _ZERO_H)>; - def : SVE_3_Op_Pat_SelZero(NAME # _ZERO_S)>; - def : SVE_3_Op_Pat_SelZero(NAME # _ZERO_D)>; + def : SVE_3_Op_Pat_SelZero(NAME # _H_ZERO)>; + def : SVE_3_Op_Pat_SelZero(NAME # _S_ZERO)>; + def : SVE_3_Op_Pat_SelZero(NAME # _D_ZERO)>; } class sve_fp_ftmad sz, string asm, ZPRRegOp zprty> @@ -2157,36 +2157,36 @@ } multiclass sve_fp_2op_i_p_zds_hfd { - def _UNDEF_H : PredTwoOpImmPseudo; - def _UNDEF_S : PredTwoOpImmPseudo; - def _UNDEF_D : PredTwoOpImmPseudo; - - def : SVE_2_Op_Fp_Imm_Pat(NAME # "_UNDEF_H")>; - def : SVE_2_Op_Fp_Imm_Pat(NAME # "_UNDEF_H")>; - def : SVE_2_Op_Fp_Imm_Pat(NAME # "_UNDEF_H")>; - def : SVE_2_Op_Fp_Imm_Pat(NAME # "_UNDEF_H")>; - def : SVE_2_Op_Fp_Imm_Pat(NAME # "_UNDEF_H")>; - def : SVE_2_Op_Fp_Imm_Pat(NAME # "_UNDEF_H")>; - def : SVE_2_Op_Fp_Imm_Pat(NAME # "_UNDEF_S")>; - def : SVE_2_Op_Fp_Imm_Pat(NAME # "_UNDEF_S")>; - def : SVE_2_Op_Fp_Imm_Pat(NAME # "_UNDEF_S")>; - def : SVE_2_Op_Fp_Imm_Pat(NAME # "_UNDEF_S")>; - def : SVE_2_Op_Fp_Imm_Pat(NAME # "_UNDEF_D")>; - def : SVE_2_Op_Fp_Imm_Pat(NAME # "_UNDEF_D")>; + def _H_UNDEF : PredTwoOpImmPseudo; + def _S_UNDEF : PredTwoOpImmPseudo; + def _D_UNDEF : PredTwoOpImmPseudo; + + def : SVE_2_Op_Fp_Imm_Pat(NAME # "_H_UNDEF")>; + def : SVE_2_Op_Fp_Imm_Pat(NAME # "_H_UNDEF")>; + def : SVE_2_Op_Fp_Imm_Pat(NAME # "_H_UNDEF")>; + def : SVE_2_Op_Fp_Imm_Pat(NAME # "_H_UNDEF")>; + def : SVE_2_Op_Fp_Imm_Pat(NAME # "_H_UNDEF")>; + def : SVE_2_Op_Fp_Imm_Pat(NAME # "_H_UNDEF")>; + def : SVE_2_Op_Fp_Imm_Pat(NAME # "_S_UNDEF")>; + def : SVE_2_Op_Fp_Imm_Pat(NAME # "_S_UNDEF")>; + def : SVE_2_Op_Fp_Imm_Pat(NAME # "_S_UNDEF")>; + def : SVE_2_Op_Fp_Imm_Pat(NAME # "_S_UNDEF")>; + def : SVE_2_Op_Fp_Imm_Pat(NAME # "_D_UNDEF")>; + def : SVE_2_Op_Fp_Imm_Pat(NAME # "_D_UNDEF")>; } multiclass sve_fp_2op_i_p_zds_zeroing_hfd { - def _ZERO_H : PredTwoOpImmPseudo; - def _ZERO_S : PredTwoOpImmPseudo; - def _ZERO_D : PredTwoOpImmPseudo; + def _H_ZERO : PredTwoOpImmPseudo; + def _S_ZERO : PredTwoOpImmPseudo; + def _D_ZERO : PredTwoOpImmPseudo; let AddedComplexity = 2 in { - def : SVE_2_Op_Fp_Imm_Pat_Zero(NAME # "_ZERO_H")>; - def : SVE_2_Op_Fp_Imm_Pat_Zero(NAME # "_ZERO_H")>; - def : SVE_2_Op_Fp_Imm_Pat_Zero(NAME # "_ZERO_S")>; - def : SVE_2_Op_Fp_Imm_Pat_Zero(NAME # "_ZERO_S")>; - def : SVE_2_Op_Fp_Imm_Pat_Zero(NAME # "_ZERO_D")>; - def : SVE_2_Op_Fp_Imm_Pat_Zero(NAME # "_ZERO_D")>; + def : SVE_2_Op_Fp_Imm_Pat_Zero(NAME # "_H_ZERO")>; + def : SVE_2_Op_Fp_Imm_Pat_Zero(NAME # "_H_ZERO")>; + def : SVE_2_Op_Fp_Imm_Pat_Zero(NAME # "_S_ZERO")>; + def : SVE_2_Op_Fp_Imm_Pat_Zero(NAME # "_S_ZERO")>; + def : SVE_2_Op_Fp_Imm_Pat_Zero(NAME # "_D_ZERO")>; + def : SVE_2_Op_Fp_Imm_Pat_Zero(NAME # "_D_ZERO")>; } } @@ -2935,16 +2935,16 @@ def : SVE_1_Op_Passthru_Pat(NAME # _S)>; def : SVE_1_Op_Passthru_Pat(NAME # _D)>; - def _UNDEF_H : PredOneOpPassthruPseudo; - def _UNDEF_S : PredOneOpPassthruPseudo; - def _UNDEF_D : PredOneOpPassthruPseudo; + def _H_UNDEF : PredOneOpPassthruPseudo; + def _S_UNDEF : PredOneOpPassthruPseudo; + def _D_UNDEF : PredOneOpPassthruPseudo; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_H)>; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_H)>; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_H)>; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_S)>; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_S)>; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_D)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _H_UNDEF)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _H_UNDEF)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _H_UNDEF)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _S_UNDEF)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _S_UNDEF)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _D_UNDEF)>; } multiclass sve2_fp_flogb { @@ -2961,13 +2961,13 @@ } multiclass sve2_fp_un_pred_zeroing_hsd { - def _ZERO_H : PredOneOpPassthruPseudo; - def _ZERO_S : PredOneOpPassthruPseudo; - def _ZERO_D : PredOneOpPassthruPseudo; + def _H_ZERO : PredOneOpPassthruPseudo; + def _S_ZERO : PredOneOpPassthruPseudo; + def _D_ZERO : PredOneOpPassthruPseudo; - def : SVE_1_Op_PassthruZero_Pat(NAME # _ZERO_H)>; - def : SVE_1_Op_PassthruZero_Pat(NAME # _ZERO_S)>; - def : SVE_1_Op_PassthruZero_Pat(NAME # _ZERO_D)>; + def : SVE_1_Op_PassthruZero_Pat(NAME # _H_ZERO)>; + def : SVE_1_Op_PassthruZero_Pat(NAME # _S_ZERO)>; + def : SVE_1_Op_PassthruZero_Pat(NAME # _D_ZERO)>; } multiclass sve2_fp_convert_down_odd_rounding { @@ -3225,16 +3225,16 @@ //class for generating pseudo for SVE MLA/MAD/MLS/MSB multiclass sve_int_3op_p_mladdsub { - def _UNDEF_B : PredThreeOpPseudo; - def _UNDEF_H : PredThreeOpPseudo; - def _UNDEF_S : PredThreeOpPseudo; - def _UNDEF_D : PredThreeOpPseudo; + def _B_UNDEF : PredThreeOpPseudo; + def _H_UNDEF : PredThreeOpPseudo; + def _S_UNDEF : PredThreeOpPseudo; + def _D_UNDEF : PredThreeOpPseudo; let AddedComplexity = 9 in { - def : SVE_4_Op_Pat(NAME # _UNDEF_B)>; - def : SVE_4_Op_Pat(NAME # _UNDEF_H)>; - def : SVE_4_Op_Pat(NAME # _UNDEF_S)>; - def : SVE_4_Op_Pat(NAME # _UNDEF_D)>; + def : SVE_4_Op_Pat(NAME # _B_UNDEF)>; + def : SVE_4_Op_Pat(NAME # _H_UNDEF)>; + def : SVE_4_Op_Pat(NAME # _S_UNDEF)>; + def : SVE_4_Op_Pat(NAME # _D_UNDEF)>; } } @@ -3805,9 +3805,9 @@ def : SVE_3_Op_Pat(NAME # _S)>; - def _UNDEF_S : PredOneOpPassthruPseudo; + def _S_UNDEF : PredOneOpPassthruPseudo; - defm : SVE_3_Op_Undef_Pat(NAME # _UNDEF_S)>; + defm : SVE_3_Op_Undef_Pat(NAME # _S_UNDEF)>; } multiclass sve2_int_un_pred_arit opc, string asm, SDPatternOperator op> { @@ -3825,15 +3825,15 @@ def : SVE_3_Op_Pat(NAME # _S)>; def : SVE_3_Op_Pat(NAME # _D)>; - def _UNDEF_B : PredOneOpPassthruPseudo; - def _UNDEF_H : PredOneOpPassthruPseudo; - def _UNDEF_S : PredOneOpPassthruPseudo; - def _UNDEF_D : PredOneOpPassthruPseudo; + def _B_UNDEF : PredOneOpPassthruPseudo; + def _H_UNDEF : PredOneOpPassthruPseudo; + def _S_UNDEF : PredOneOpPassthruPseudo; + def _D_UNDEF : PredOneOpPassthruPseudo; - defm : SVE_3_Op_Undef_Pat(NAME # _UNDEF_B)>; - defm : SVE_3_Op_Undef_Pat(NAME # _UNDEF_H)>; - defm : SVE_3_Op_Undef_Pat(NAME # _UNDEF_S)>; - defm : SVE_3_Op_Undef_Pat(NAME # _UNDEF_D)>; + defm : SVE_3_Op_Undef_Pat(NAME # _B_UNDEF)>; + defm : SVE_3_Op_Undef_Pat(NAME # _H_UNDEF)>; + defm : SVE_3_Op_Undef_Pat(NAME # _S_UNDEF)>; + defm : SVE_3_Op_Undef_Pat(NAME # _D_UNDEF)>; } //===----------------------------------------------------------------------===// @@ -4481,15 +4481,15 @@ def : SVE_1_Op_Passthru_Pat(NAME # _S)>; def : SVE_1_Op_Passthru_Pat(NAME # _D)>; - def _UNDEF_B : PredOneOpPassthruPseudo; - def _UNDEF_H : PredOneOpPassthruPseudo; - def _UNDEF_S : PredOneOpPassthruPseudo; - def _UNDEF_D : PredOneOpPassthruPseudo; + def _B_UNDEF : PredOneOpPassthruPseudo; + def _H_UNDEF : PredOneOpPassthruPseudo; + def _S_UNDEF : PredOneOpPassthruPseudo; + def _D_UNDEF : PredOneOpPassthruPseudo; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_B)>; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_H)>; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_S)>; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_D)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _B_UNDEF)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _H_UNDEF)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _S_UNDEF)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _D_UNDEF)>; } multiclass sve_int_un_pred_arit_0_h opc, string asm, @@ -4505,13 +4505,13 @@ def : SVE_InReg_Extend(NAME # _S)>; def : SVE_InReg_Extend(NAME # _D)>; - def _UNDEF_H : PredOneOpPassthruPseudo; - def _UNDEF_S : PredOneOpPassthruPseudo; - def _UNDEF_D : PredOneOpPassthruPseudo; + def _H_UNDEF : PredOneOpPassthruPseudo; + def _S_UNDEF : PredOneOpPassthruPseudo; + def _D_UNDEF : PredOneOpPassthruPseudo; - defm : SVE_InReg_Extend_PassthruUndef(NAME # _UNDEF_H)>; - defm : SVE_InReg_Extend_PassthruUndef(NAME # _UNDEF_S)>; - defm : SVE_InReg_Extend_PassthruUndef(NAME # _UNDEF_D)>; + defm : SVE_InReg_Extend_PassthruUndef(NAME # _H_UNDEF)>; + defm : SVE_InReg_Extend_PassthruUndef(NAME # _S_UNDEF)>; + defm : SVE_InReg_Extend_PassthruUndef(NAME # _D_UNDEF)>; } multiclass sve_int_un_pred_arit_0_w opc, string asm, @@ -4524,11 +4524,11 @@ def : SVE_InReg_Extend(NAME # _S)>; def : SVE_InReg_Extend(NAME # _D)>; - def _UNDEF_S : PredOneOpPassthruPseudo; - def _UNDEF_D : PredOneOpPassthruPseudo; + def _S_UNDEF : PredOneOpPassthruPseudo; + def _D_UNDEF : PredOneOpPassthruPseudo; - defm : SVE_InReg_Extend_PassthruUndef(NAME # _UNDEF_S)>; - defm : SVE_InReg_Extend_PassthruUndef(NAME # _UNDEF_D)>; + defm : SVE_InReg_Extend_PassthruUndef(NAME # _S_UNDEF)>; + defm : SVE_InReg_Extend_PassthruUndef(NAME # _D_UNDEF)>; } multiclass sve_int_un_pred_arit_0_d opc, string asm, @@ -4538,9 +4538,9 @@ def : SVE_InReg_Extend(NAME # _D)>; - def _UNDEF_D : PredOneOpPassthruPseudo; + def _D_UNDEF : PredOneOpPassthruPseudo; - defm : SVE_InReg_Extend_PassthruUndef(NAME # _UNDEF_D)>; + defm : SVE_InReg_Extend_PassthruUndef(NAME # _D_UNDEF)>; } multiclass sve_int_un_pred_arit_1 opc, string asm, @@ -4559,15 +4559,15 @@ def : SVE_1_Op_Passthru_Pat(NAME # _S)>; def : SVE_1_Op_Passthru_Pat(NAME # _D)>; - def _UNDEF_B : PredOneOpPassthruPseudo; - def _UNDEF_H : PredOneOpPassthruPseudo; - def _UNDEF_S : PredOneOpPassthruPseudo; - def _UNDEF_D : PredOneOpPassthruPseudo; + def _B_UNDEF : PredOneOpPassthruPseudo; + def _H_UNDEF : PredOneOpPassthruPseudo; + def _S_UNDEF : PredOneOpPassthruPseudo; + def _D_UNDEF : PredOneOpPassthruPseudo; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_B)>; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_H)>; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_S)>; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_D)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _B_UNDEF)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _H_UNDEF)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _S_UNDEF)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _D_UNDEF)>; } multiclass sve_int_un_pred_arit_1_fp opc, string asm, SDPatternOperator op> { @@ -4585,16 +4585,16 @@ def : SVE_1_Op_Passthru_Pat(NAME # _S)>; def : SVE_1_Op_Passthru_Pat(NAME # _D)>; - def _UNDEF_H : PredOneOpPassthruPseudo; - def _UNDEF_S : PredOneOpPassthruPseudo; - def _UNDEF_D : PredOneOpPassthruPseudo; + def _H_UNDEF : PredOneOpPassthruPseudo; + def _S_UNDEF : PredOneOpPassthruPseudo; + def _D_UNDEF : PredOneOpPassthruPseudo; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_H)>; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_H)>; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_H)>; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_S)>; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_S)>; - defm : SVE_1_Op_PassthruUndef_Pat(NAME # _UNDEF_D)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _H_UNDEF)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _H_UNDEF)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _H_UNDEF)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _S_UNDEF)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _S_UNDEF)>; + defm : SVE_1_Op_PassthruUndef_Pat(NAME # _D_UNDEF)>; } //===----------------------------------------------------------------------===// @@ -5820,15 +5820,15 @@ } multiclass sve_int_bin_pred_shift_imm_left_zeroing_bhsd { - def _ZERO_B : PredTwoOpImmPseudo; - def _ZERO_H : PredTwoOpImmPseudo; - def _ZERO_S : PredTwoOpImmPseudo; - def _ZERO_D : PredTwoOpImmPseudo; + def _B_ZERO : PredTwoOpImmPseudo; + def _H_ZERO : PredTwoOpImmPseudo; + def _S_ZERO : PredTwoOpImmPseudo; + def _D_ZERO : PredTwoOpImmPseudo; - def : SVE_3_Op_Pat_Shift_Imm_SelZero(NAME # _ZERO_B)>; - def : SVE_3_Op_Pat_Shift_Imm_SelZero(NAME # _ZERO_H)>; - def : SVE_3_Op_Pat_Shift_Imm_SelZero(NAME # _ZERO_S)>; - def : SVE_3_Op_Pat_Shift_Imm_SelZero(NAME # _ZERO_D)>; + def : SVE_3_Op_Pat_Shift_Imm_SelZero(NAME # _B_ZERO)>; + def : SVE_3_Op_Pat_Shift_Imm_SelZero(NAME # _H_ZERO)>; + def : SVE_3_Op_Pat_Shift_Imm_SelZero(NAME # _S_ZERO)>; + def : SVE_3_Op_Pat_Shift_Imm_SelZero(NAME # _D_ZERO)>; } multiclass sve_int_bin_pred_shift_imm_right opc, string asm, string Ps, @@ -5866,15 +5866,15 @@ } multiclass sve_int_bin_pred_shift_imm_right_zeroing_bhsd { - def _ZERO_B : PredTwoOpImmPseudo; - def _ZERO_H : PredTwoOpImmPseudo; - def _ZERO_S : PredTwoOpImmPseudo; - def _ZERO_D : PredTwoOpImmPseudo; + def _B_ZERO : PredTwoOpImmPseudo; + def _H_ZERO : PredTwoOpImmPseudo; + def _S_ZERO : PredTwoOpImmPseudo; + def _D_ZERO : PredTwoOpImmPseudo; - def : SVE_3_Op_Pat_Shift_Imm_SelZero(NAME # _ZERO_B)>; - def : SVE_3_Op_Pat_Shift_Imm_SelZero(NAME # _ZERO_H)>; - def : SVE_3_Op_Pat_Shift_Imm_SelZero(NAME # _ZERO_S)>; - def : SVE_3_Op_Pat_Shift_Imm_SelZero(NAME # _ZERO_D)>; + def : SVE_3_Op_Pat_Shift_Imm_SelZero(NAME # _B_ZERO)>; + def : SVE_3_Op_Pat_Shift_Imm_SelZero(NAME # _H_ZERO)>; + def : SVE_3_Op_Pat_Shift_Imm_SelZero(NAME # _S_ZERO)>; + def : SVE_3_Op_Pat_Shift_Imm_SelZero(NAME # _D_ZERO)>; } class sve_int_bin_pred_shift sz8_64, bit wide, bits<3> opc, @@ -5921,29 +5921,29 @@ } multiclass sve_int_bin_pred_zeroing_bhsd { - def _ZERO_B : PredTwoOpPseudo; - def _ZERO_H : PredTwoOpPseudo; - def _ZERO_S : PredTwoOpPseudo; - def _ZERO_D : PredTwoOpPseudo; + def _B_ZERO : PredTwoOpPseudo; + def _H_ZERO : PredTwoOpPseudo; + def _S_ZERO : PredTwoOpPseudo; + def _D_ZERO : PredTwoOpPseudo; - def : SVE_3_Op_Pat_SelZero(NAME # _ZERO_B)>; - def : SVE_3_Op_Pat_SelZero(NAME # _ZERO_H)>; - def : SVE_3_Op_Pat_SelZero(NAME # _ZERO_S)>; - def : SVE_3_Op_Pat_SelZero(NAME # _ZERO_D)>; + def : SVE_3_Op_Pat_SelZero(NAME # _B_ZERO)>; + def : SVE_3_Op_Pat_SelZero(NAME # _H_ZERO)>; + def : SVE_3_Op_Pat_SelZero(NAME # _S_ZERO)>; + def : SVE_3_Op_Pat_SelZero(NAME # _D_ZERO)>; } multiclass sve_int_bin_pred_imm_zeroing_bhsd { - def _ZERO_B : PredTwoOpImmPseudo, FalseLanesZero>; - def _ZERO_H : PredTwoOpImmPseudo, FalseLanesZero>; - def _ZERO_S : PredTwoOpImmPseudo, FalseLanesZero>; - def _ZERO_D : PredTwoOpImmPseudo, FalseLanesZero>; + def _B_ZERO : PredTwoOpImmPseudo, FalseLanesZero>; + def _H_ZERO : PredTwoOpImmPseudo, FalseLanesZero>; + def _S_ZERO : PredTwoOpImmPseudo, FalseLanesZero>; + def _D_ZERO : PredTwoOpImmPseudo, FalseLanesZero>; - def : SVE_2_Op_Imm_Pat_Zero(NAME # _ZERO_B)>; - def : SVE_2_Op_Imm_Pat_Zero(NAME # _ZERO_H)>; - def : SVE_2_Op_Imm_Pat_Zero(NAME # _ZERO_S)>; - def : SVE_2_Op_Imm_Pat_Zero(NAME # _ZERO_D)>; + def : SVE_2_Op_Imm_Pat_Zero(NAME # _B_ZERO)>; + def : SVE_2_Op_Imm_Pat_Zero(NAME # _H_ZERO)>; + def : SVE_2_Op_Imm_Pat_Zero(NAME # _S_ZERO)>; + def : SVE_2_Op_Imm_Pat_Zero(NAME # _D_ZERO)>; } multiclass sve_int_bin_pred_shift_wide opc, string asm, @@ -9024,52 +9024,52 @@ // Predicated pseudo floating point two operand instructions. multiclass sve_fp_bin_pred_hfd { - def _UNDEF_H : PredTwoOpPseudo; - def _UNDEF_S : PredTwoOpPseudo; - def _UNDEF_D : PredTwoOpPseudo; + def _H_UNDEF : PredTwoOpPseudo; + def _S_UNDEF : PredTwoOpPseudo; + def _D_UNDEF : PredTwoOpPseudo; - def : SVE_3_Op_Pat(NAME # _UNDEF_H)>; - def : SVE_3_Op_Pat(NAME # _UNDEF_H)>; - def : SVE_3_Op_Pat(NAME # _UNDEF_H)>; - def : SVE_3_Op_Pat(NAME # _UNDEF_S)>; - def : SVE_3_Op_Pat(NAME # _UNDEF_S)>; - def : SVE_3_Op_Pat(NAME # _UNDEF_D)>; + def : SVE_3_Op_Pat(NAME # _H_UNDEF)>; + def : SVE_3_Op_Pat(NAME # _H_UNDEF)>; + def : SVE_3_Op_Pat(NAME # _H_UNDEF)>; + def : SVE_3_Op_Pat(NAME # _S_UNDEF)>; + def : SVE_3_Op_Pat(NAME # _S_UNDEF)>; + def : SVE_3_Op_Pat(NAME # _D_UNDEF)>; } // Predicated pseudo floating point three operand instructions. multiclass sve_fp_3op_pred_hfd { - def _UNDEF_H : PredThreeOpPseudo; - def _UNDEF_S : PredThreeOpPseudo; - def _UNDEF_D : PredThreeOpPseudo; + def _H_UNDEF : PredThreeOpPseudo; + def _S_UNDEF : PredThreeOpPseudo; + def _D_UNDEF : PredThreeOpPseudo; - def : SVE_4_Op_Pat(NAME # _UNDEF_H)>; - def : SVE_4_Op_Pat(NAME # _UNDEF_H)>; - def : SVE_4_Op_Pat(NAME # _UNDEF_H)>; - def : SVE_4_Op_Pat(NAME # _UNDEF_S)>; - def : SVE_4_Op_Pat(NAME # _UNDEF_S)>; - def : SVE_4_Op_Pat(NAME # _UNDEF_D)>; + def : SVE_4_Op_Pat(NAME # _H_UNDEF)>; + def : SVE_4_Op_Pat(NAME # _H_UNDEF)>; + def : SVE_4_Op_Pat(NAME # _H_UNDEF)>; + def : SVE_4_Op_Pat(NAME # _S_UNDEF)>; + def : SVE_4_Op_Pat(NAME # _S_UNDEF)>; + def : SVE_4_Op_Pat(NAME # _D_UNDEF)>; } // Predicated pseudo integer two operand instructions. multiclass sve_int_bin_pred_bhsd { - def _UNDEF_B : PredTwoOpPseudo; - def _UNDEF_H : PredTwoOpPseudo; - def _UNDEF_S : PredTwoOpPseudo; - def _UNDEF_D : PredTwoOpPseudo; + def _B_UNDEF : PredTwoOpPseudo; + def _H_UNDEF : PredTwoOpPseudo; + def _S_UNDEF : PredTwoOpPseudo; + def _D_UNDEF : PredTwoOpPseudo; - def : SVE_3_Op_Pat(NAME # _UNDEF_B)>; - def : SVE_3_Op_Pat(NAME # _UNDEF_H)>; - def : SVE_3_Op_Pat(NAME # _UNDEF_S)>; - def : SVE_3_Op_Pat(NAME # _UNDEF_D)>; + def : SVE_3_Op_Pat(NAME # _B_UNDEF)>; + def : SVE_3_Op_Pat(NAME # _H_UNDEF)>; + def : SVE_3_Op_Pat(NAME # _S_UNDEF)>; + def : SVE_3_Op_Pat(NAME # _D_UNDEF)>; } // As sve_int_bin_pred but when only i32 and i64 vector types are required. multiclass sve_int_bin_pred_sd { - def _UNDEF_S : PredTwoOpPseudo; - def _UNDEF_D : PredTwoOpPseudo; + def _S_UNDEF : PredTwoOpPseudo; + def _D_UNDEF : PredTwoOpPseudo; - def : SVE_3_Op_Pat(NAME # _UNDEF_S)>; - def : SVE_3_Op_Pat(NAME # _UNDEF_D)>; + def : SVE_3_Op_Pat(NAME # _S_UNDEF)>; + def : SVE_3_Op_Pat(NAME # _D_UNDEF)>; } // Predicated pseudo integer two operand instructions. Second operand is an @@ -9077,27 +9077,27 @@ multiclass sve_int_shift_pred_bhsd { - def _UNDEF_B : PredTwoOpImmPseudo, FalseLanesUndef>; - def _UNDEF_H : PredTwoOpImmPseudo, FalseLanesUndef>; - def _UNDEF_S : PredTwoOpImmPseudo, FalseLanesUndef>; - def _UNDEF_D : PredTwoOpImmPseudo, FalseLanesUndef>; + def _B_UNDEF : PredTwoOpImmPseudo, FalseLanesUndef>; + def _H_UNDEF : PredTwoOpImmPseudo, FalseLanesUndef>; + def _S_UNDEF : PredTwoOpImmPseudo, FalseLanesUndef>; + def _D_UNDEF : PredTwoOpImmPseudo, FalseLanesUndef>; - def : SVE_Shift_DupImm_Pred_Pat(NAME # _UNDEF_B)>; - def : SVE_Shift_DupImm_Pred_Pat(NAME # _UNDEF_H)>; - def : SVE_Shift_DupImm_Pred_Pat(NAME # _UNDEF_S)>; - def : SVE_Shift_DupImm_Pred_Pat(NAME # _UNDEF_D)>; + def : SVE_Shift_DupImm_Pred_Pat(NAME # _B_UNDEF)>; + def : SVE_Shift_DupImm_Pred_Pat(NAME # _H_UNDEF)>; + def : SVE_Shift_DupImm_Pred_Pat(NAME # _S_UNDEF)>; + def : SVE_Shift_DupImm_Pred_Pat(NAME # _D_UNDEF)>; } multiclass sve_int_bin_pred_all_active_bhsd { - def _UNDEF_B : PredTwoOpPseudo; - def _UNDEF_H : PredTwoOpPseudo; - def _UNDEF_S : PredTwoOpPseudo; - def _UNDEF_D : PredTwoOpPseudo; - - def : SVE_2_Op_Pred_All_Active_Pt(NAME # _UNDEF_B)>; - def : SVE_2_Op_Pred_All_Active_Pt(NAME # _UNDEF_H)>; - def : SVE_2_Op_Pred_All_Active_Pt(NAME # _UNDEF_S)>; - def : SVE_2_Op_Pred_All_Active_Pt(NAME # _UNDEF_D)>; + def _B_UNDEF : PredTwoOpPseudo; + def _H_UNDEF : PredTwoOpPseudo; + def _S_UNDEF : PredTwoOpPseudo; + def _D_UNDEF : PredTwoOpPseudo; + + def : SVE_2_Op_Pred_All_Active_Pt(NAME # _B_UNDEF)>; + def : SVE_2_Op_Pred_All_Active_Pt(NAME # _H_UNDEF)>; + def : SVE_2_Op_Pred_All_Active_Pt(NAME # _S_UNDEF)>; + def : SVE_2_Op_Pred_All_Active_Pt(NAME # _D_UNDEF)>; } //===----------------------------------------------------------------------===// diff --git a/llvm/test/CodeGen/AArch64/sve-intrinsics-int-arith-merging.mir b/llvm/test/CodeGen/AArch64/sve-intrinsics-int-arith-merging.mir --- a/llvm/test/CodeGen/AArch64/sve-intrinsics-int-arith-merging.mir +++ b/llvm/test/CodeGen/AArch64/sve-intrinsics-int-arith-merging.mir @@ -34,6 +34,6 @@ ; CHECK-NEXT: $z0 = BIC_ZPmZ_H killed renamable $p0, internal killed $z0, internal killed renamable $z0 ; CHECK-NEXT: } ; CHECK-NEXT: RET undef $lr, implicit $z0 - renamable $z0 = BIC_ZPZZ_ZERO_H killed renamable $p0, killed renamable $z0, killed renamable $z0 + renamable $z0 = BIC_ZPZZ_H_ZERO killed renamable $p0, killed renamable $z0, killed renamable $z0 RET_ReallyLR implicit $z0 ... diff --git a/llvm/test/CodeGen/AArch64/sve-intrinsics-int-binaryComm-merging.mir b/llvm/test/CodeGen/AArch64/sve-intrinsics-int-binaryComm-merging.mir --- a/llvm/test/CodeGen/AArch64/sve-intrinsics-int-binaryComm-merging.mir +++ b/llvm/test/CodeGen/AArch64/sve-intrinsics-int-binaryComm-merging.mir @@ -34,6 +34,6 @@ ; CHECK-NEXT: $z0 = FMUL_ZPmZ_S renamable $p0, internal killed $z0, internal killed renamable $z0 ; CHECK-NEXT: } ; CHECK-NEXT: RET undef $lr, implicit $z0 - renamable $z0 = nnan ninf nsz arcp contract afn reassoc FMUL_ZPZZ_ZERO_S renamable $p0, killed renamable $z0, renamable $z0 + renamable $z0 = nnan ninf nsz arcp contract afn reassoc FMUL_ZPZZ_S_ZERO renamable $p0, killed renamable $z0, renamable $z0 RET_ReallyLR implicit $z0 ... diff --git a/llvm/test/CodeGen/AArch64/sve-intrinsics-int-binaryCommWithRev-merging.mir b/llvm/test/CodeGen/AArch64/sve-intrinsics-int-binaryCommWithRev-merging.mir --- a/llvm/test/CodeGen/AArch64/sve-intrinsics-int-binaryCommWithRev-merging.mir +++ b/llvm/test/CodeGen/AArch64/sve-intrinsics-int-binaryCommWithRev-merging.mir @@ -36,6 +36,6 @@ ; CHECK-NEXT: $z0 = FSUBR_ZPmZ_S renamable $p0, internal killed $z0, internal killed renamable $z0 ; CHECK-NEXT: } ; CHECK-NEXT: RET undef $lr, implicit $z0 - renamable $z0 = nnan ninf nsz arcp contract afn reassoc FSUB_ZPZZ_ZERO_S renamable $p0, killed renamable $z0, renamable $z0 + renamable $z0 = nnan ninf nsz arcp contract afn reassoc FSUB_ZPZZ_S_ZERO renamable $p0, killed renamable $z0, renamable $z0 RET_ReallyLR implicit $z0 ... diff --git a/llvm/test/CodeGen/AArch64/sve-pseudos-expand-undef.mir b/llvm/test/CodeGen/AArch64/sve-pseudos-expand-undef.mir --- a/llvm/test/CodeGen/AArch64/sve-pseudos-expand-undef.mir +++ b/llvm/test/CodeGen/AArch64/sve-pseudos-expand-undef.mir @@ -16,7 +16,7 @@ ; CHECK-NOT: MOVPRFX ; CHECK: $z0 = FADD_ZPmZ_S renamable $p0, killed $z0, renamable $z0 ; CHECK-NEXT: RET - renamable $z0 = FADD_ZPZZ_UNDEF_S renamable $p0, renamable $z0, killed renamable $z0 + renamable $z0 = FADD_ZPZZ_S_UNDEF renamable $p0, renamable $z0, killed renamable $z0 RET_ReallyLR ... @@ -27,7 +27,7 @@ body: | bb.0: renamable $p0 = PTRUE_B 31 - renamable $z0 = MLS_ZPZZZ_UNDEF_B killed renamable $p0, killed renamable $z2, killed renamable $z0, killed renamable $z1 + renamable $z0 = MLS_ZPZZZ_B_UNDEF killed renamable $p0, killed renamable $z2, killed renamable $z0, killed renamable $z1 RET_ReallyLR implicit $z0 ... @@ -37,6 +37,6 @@ body: | bb.0: renamable $p0 = PTRUE_B 31 - renamable $z0 = MLA_ZPZZZ_UNDEF_B killed renamable $p0, killed renamable $z2, killed renamable $z0, killed renamable $z1 + renamable $z0 = MLA_ZPZZZ_B_UNDEF killed renamable $p0, killed renamable $z2, killed renamable $z0, killed renamable $z1 RET_ReallyLR implicit $z0 ...