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/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 @@ -1,3 +1,4 @@ +# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2 # RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve -run-pass=aarch64-expand-pseudo -simplify-mir -verify-machineinstrs %s -o - | FileCheck %s --- name: add_x @@ -12,11 +13,12 @@ bb.0: liveins: $p0, $z0 - ; CHECK: add_x - ; 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 + ; CHECK-LABEL: name: add_x + ; CHECK: liveins: $p0, $z0 + ; CHECK-NEXT: {{ $}} + ; CHECK-NEXT: $z0 = FADD_ZPmZ_S renamable $p0, killed $z0, renamable $z0 + ; CHECK-NEXT: RET undef $lr + renamable $z0 = FADD_ZPZZ_S_UNDEF renamable $p0, renamable $z0, killed renamable $z0 RET_ReallyLR ... @@ -26,8 +28,12 @@ name: expand_mls_to_msb body: | bb.0: + ; CHECK-LABEL: name: expand_mls_to_msb + ; CHECK: renamable $p0 = PTRUE_B 31 + ; CHECK-NEXT: $z0 = MSB_ZPmZZ_B killed renamable $p0, killed $z0, killed renamable $z1, killed renamable $z2 + ; CHECK-NEXT: RET undef $lr, implicit $z0 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 ... @@ -36,7 +42,11 @@ name: expand_mla_to_mad body: | bb.0: + ; CHECK-LABEL: name: expand_mla_to_mad + ; CHECK: renamable $p0 = PTRUE_B 31 + ; CHECK-NEXT: $z0 = MAD_ZPmZZ_B killed renamable $p0, killed $z0, killed renamable $z1, killed renamable $z2 + ; CHECK-NEXT: RET undef $lr, implicit $z0 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 ...