diff --git a/llvm/lib/Target/AArch64/AArch64InstrFormats.td b/llvm/lib/Target/AArch64/AArch64InstrFormats.td index cf08f56e5b089..7a8ae182f447d 100644 --- a/llvm/lib/Target/AArch64/AArch64InstrFormats.td +++ b/llvm/lib/Target/AArch64/AArch64InstrFormats.td @@ -3162,7 +3162,7 @@ class BaseLoadStoreUI sz, bit V, bits<2> opc, dag oops, dag iops, let DecoderMethod = "DecodeUnsignedLdStInstruction"; } -multiclass LoadUI sz, bit V, bits<2> opc, RegisterOperand regtype, +multiclass LoadUI sz, bit V, bits<2> opc, DAGOperand regtype, Operand indextype, string asm, list pattern> { let AddedComplexity = 10, mayLoad = 1, mayStore = 0, hasSideEffects = 0 in def ui : BaseLoadStoreUI sz, bit V, bits<2> opc, RegisterOperand regtype, (!cast(NAME # "ui") regtype:$Rt, GPR64sp:$Rn, 0)>; } -multiclass StoreUI sz, bit V, bits<2> opc, RegisterOperand regtype, +multiclass StoreUI sz, bit V, bits<2> opc, DAGOperand regtype, Operand indextype, string asm, list pattern> { let AddedComplexity = 10, mayLoad = 0, mayStore = 1, hasSideEffects = 0 in def ui : BaseLoadStoreUI; def ro128 : ROAddrMode; -class LoadStore8RO sz, bit V, bits<2> opc, RegisterOperand regtype, +class LoadStore8RO sz, bit V, bits<2> opc, DAGOperand regtype, string asm, dag ins, dag outs, list pat> : I { bits<5> Rt; @@ -3399,11 +3399,11 @@ class LoadStore8RO sz, bit V, bits<2> opc, RegisterOperand regtype, let Inst{4-0} = Rt; } -class ROInstAlias +class ROInstAlias : InstAlias; -multiclass Load8RO sz, bit V, bits<2> opc, RegisterOperand regtype, +multiclass Load8RO sz, bit V, bits<2> opc, DAGOperand regtype, string asm, ValueType Ty, SDPatternOperator loadop> { let AddedComplexity = 10 in def roW : LoadStore8RO sz, bit V, bits<2> opc, RegisterOperand regtype, def : ROInstAlias(NAME # "roX")>; } -multiclass Store8RO sz, bit V, bits<2> opc, RegisterOperand regtype, +multiclass Store8RO sz, bit V, bits<2> opc, DAGOperand regtype, string asm, ValueType Ty, SDPatternOperator storeop> { let AddedComplexity = 10 in def roW : LoadStore8RO sz, bit V, bits<2> opc, RegisterOperand regtype, def : ROInstAlias(NAME # "roX")>; } -class LoadStore16RO sz, bit V, bits<2> opc, RegisterOperand regtype, +class LoadStore16RO sz, bit V, bits<2> opc, DAGOperand regtype, string asm, dag ins, dag outs, list pat> : I { bits<5> Rt; @@ -3477,7 +3477,7 @@ class LoadStore16RO sz, bit V, bits<2> opc, RegisterOperand regtype, let Inst{4-0} = Rt; } -multiclass Load16RO sz, bit V, bits<2> opc, RegisterOperand regtype, +multiclass Load16RO sz, bit V, bits<2> opc, DAGOperand regtype, string asm, ValueType Ty, SDPatternOperator loadop> { let AddedComplexity = 10 in def roW : LoadStore16RO sz, bit V, bits<2> opc, RegisterOperand regtype, def : ROInstAlias(NAME # "roX")>; } -multiclass Store16RO sz, bit V, bits<2> opc, RegisterOperand regtype, +multiclass Store16RO sz, bit V, bits<2> opc, DAGOperand regtype, string asm, ValueType Ty, SDPatternOperator storeop> { let AddedComplexity = 10 in def roW : LoadStore16RO sz, bit V, bits<2> opc, RegisterOperand regtype, def : ROInstAlias(NAME # "roX")>; } -class LoadStore32RO sz, bit V, bits<2> opc, RegisterOperand regtype, +class LoadStore32RO sz, bit V, bits<2> opc, DAGOperand regtype, string asm, dag ins, dag outs, list pat> : I { bits<5> Rt; @@ -3549,7 +3549,7 @@ class LoadStore32RO sz, bit V, bits<2> opc, RegisterOperand regtype, let Inst{4-0} = Rt; } -multiclass Load32RO sz, bit V, bits<2> opc, RegisterOperand regtype, +multiclass Load32RO sz, bit V, bits<2> opc, DAGOperand regtype, string asm, ValueType Ty, SDPatternOperator loadop> { let AddedComplexity = 10 in def roW : LoadStore32RO sz, bit V, bits<2> opc, RegisterOperand regtype, def : ROInstAlias(NAME # "roX")>; } -multiclass Store32RO sz, bit V, bits<2> opc, RegisterOperand regtype, +multiclass Store32RO sz, bit V, bits<2> opc, DAGOperand regtype, string asm, ValueType Ty, SDPatternOperator storeop> { let AddedComplexity = 10 in def roW : LoadStore32RO sz, bit V, bits<2> opc, RegisterOperand regtype, def : ROInstAlias(NAME # "roX")>; } -class LoadStore64RO sz, bit V, bits<2> opc, RegisterOperand regtype, +class LoadStore64RO sz, bit V, bits<2> opc, DAGOperand regtype, string asm, dag ins, dag outs, list pat> : I { bits<5> Rt; @@ -3621,7 +3621,7 @@ class LoadStore64RO sz, bit V, bits<2> opc, RegisterOperand regtype, let Inst{4-0} = Rt; } -multiclass Load64RO sz, bit V, bits<2> opc, RegisterOperand regtype, +multiclass Load64RO sz, bit V, bits<2> opc, DAGOperand regtype, string asm, ValueType Ty, SDPatternOperator loadop> { let AddedComplexity = 10, mayLoad = 1, mayStore = 0, hasSideEffects = 0 in def roW : LoadStore64RO sz, bit V, bits<2> opc, RegisterOperand regtype, def : ROInstAlias(NAME # "roX")>; } -multiclass Store64RO sz, bit V, bits<2> opc, RegisterOperand regtype, +multiclass Store64RO sz, bit V, bits<2> opc, DAGOperand regtype, string asm, ValueType Ty, SDPatternOperator storeop> { let AddedComplexity = 10, mayLoad = 0, mayStore = 1, hasSideEffects = 0 in def roW : LoadStore64RO sz, bit V, bits<2> opc, RegisterOperand regtype, def : ROInstAlias(NAME # "roX")>; } -class LoadStore128RO sz, bit V, bits<2> opc, RegisterOperand regtype, +class LoadStore128RO sz, bit V, bits<2> opc, DAGOperand regtype, string asm, dag ins, dag outs, list pat> : I { bits<5> Rt; @@ -3693,7 +3693,7 @@ class LoadStore128RO sz, bit V, bits<2> opc, RegisterOperand regtype, let Inst{4-0} = Rt; } -multiclass Load128RO sz, bit V, bits<2> opc, RegisterOperand regtype, +multiclass Load128RO sz, bit V, bits<2> opc, DAGOperand regtype, string asm, ValueType Ty, SDPatternOperator loadop> { let AddedComplexity = 10, mayLoad = 1, mayStore = 0, hasSideEffects = 0 in def roW : LoadStore128RO sz, bit V, bits<2> opc, RegisterOperand regtype, def : ROInstAlias(NAME # "roX")>; } -multiclass Store128RO sz, bit V, bits<2> opc, RegisterOperand regtype, +multiclass Store128RO sz, bit V, bits<2> opc, DAGOperand regtype, string asm, ValueType Ty, SDPatternOperator storeop> { let mayLoad = 0, mayStore = 1, hasSideEffects = 0 in def roW : LoadStore128RO sz, bit V, bits<2> opc, dag oops, dag iops, // Armv8.4 LDAPR & STLR with Immediate Offset instruction multiclass BaseLoadUnscaleV84 sz, bits<2> opc, - RegisterOperand regtype > { + DAGOperand regtype > { def i : BaseLoadStoreUnscale, Sched<[WriteST]> { @@ -3846,7 +3846,7 @@ multiclass BaseLoadUnscaleV84 sz, bits<2> opc, } multiclass BaseStoreUnscaleV84 sz, bits<2> opc, - RegisterOperand regtype > { + DAGOperand regtype > { def i : BaseLoadStoreUnscale, @@ -3858,7 +3858,7 @@ multiclass BaseStoreUnscaleV84 sz, bits<2> opc, (!cast(NAME # "i") regtype:$Rt, GPR64sp:$Rn, 0)>; } -multiclass LoadUnscaled sz, bit V, bits<2> opc, RegisterOperand regtype, +multiclass LoadUnscaled sz, bit V, bits<2> opc, DAGOperand regtype, string asm, list pattern> { let AddedComplexity = 1 in // try this before LoadUI def i : BaseLoadStoreUnscale sz, bit V, bits<2> opc, RegisterOperand regtype, (!cast(NAME # "i") regtype:$Rt, GPR64sp:$Rn, 0)>; } -multiclass StoreUnscaled sz, bit V, bits<2> opc, RegisterOperand regtype, +multiclass StoreUnscaled sz, bit V, bits<2> opc, DAGOperand regtype, string asm, list pattern> { let AddedComplexity = 1 in // try this before StoreUI def i : BaseLoadStoreUnscale opc, bit V, bit L, dag oops, dag iops, let DecoderMethod = "DecodePairLdStInstruction"; } -multiclass LoadPairNoAlloc opc, bit V, RegisterClass regtype, +multiclass LoadPairNoAlloc opc, bit V, DAGOperand regtype, Operand indextype, string asm> { let hasSideEffects = 0, mayStore = 0, mayLoad = 1 in def i : BaseLoadStorePairNoAlloc opc, bit V, RegisterClass regtype, GPR64sp:$Rn, 0)>; } -multiclass StorePairNoAlloc opc, bit V, RegisterClass regtype, +multiclass StorePairNoAlloc opc, bit V, DAGOperand regtype, Operand indextype, string asm> { let hasSideEffects = 0, mayStore = 1, mayLoad = 0 in def i : BaseLoadStorePairNoAlloc + ValueType dvt, string asm, SDPatternOperator node> : I<(outs dstType:$Rd), (ins srcType:$Rn), asm, "\t$Rd, $Rn", "", [(set (dvt dstType:$Rd), (node srcType:$Rn))]>, Sched<[WriteFCvt]> { @@ -4627,7 +4627,7 @@ class BaseIntegerToFPUnscaled { +multiclass IntegerToFP { // Unscaled def UWHri: BaseIntegerToFPUnscaled { let Inst{31} = 0; // 32-bit GPR flag diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.td b/llvm/lib/Target/AArch64/AArch64InstrInfo.td index e5e75befd9cbb..67f374b98d9d6 100644 --- a/llvm/lib/Target/AArch64/AArch64InstrInfo.td +++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.td @@ -979,7 +979,7 @@ let Predicates = [HasComplxNum, HasNEON] in { } } -multiclass FCMLA_PATS { +multiclass FCMLA_PATS { def : Pat<(ty (int_aarch64_neon_vcmla_rot0 (ty Reg:$Rd), (ty Reg:$Rn), (ty Reg:$Rm))), (!cast("FCMLA" # ty) $Rd, $Rn, $Rm, 0)>; def : Pat<(ty (int_aarch64_neon_vcmla_rot90 (ty Reg:$Rd), (ty Reg:$Rn), (ty Reg:$Rm))), @@ -990,7 +990,7 @@ multiclass FCMLA_PATS { (!cast("FCMLA" # ty) $Rd, $Rn, $Rm, 3)>; } -multiclass FCMLA_LANE_PATS { +multiclass FCMLA_LANE_PATS { def : Pat<(ty (int_aarch64_neon_vcmla_rot0 (ty Reg:$Rd), (ty Reg:$Rn), RHSDup)), (!cast("FCMLA" # ty # "_indexed") $Rd, $Rn, $Rm, VectorIndexS:$idx, 0)>; def : Pat<(ty (int_aarch64_neon_vcmla_rot90 (ty Reg:$Rd), (ty Reg:$Rn), RHSDup)), @@ -3237,7 +3237,7 @@ def : Pat<(truncstorei8 GPR64:$Rt, (am_indexed8 GPR64sp:$Rn, uimm12s1:$offset)), } // AddedComplexity = 10 // Match stores from lane 0 to the appropriate subreg's store. -multiclass VecStoreLane0Pat { diff --git a/llvm/lib/Target/AArch64/SVEInstrFormats.td b/llvm/lib/Target/AArch64/SVEInstrFormats.td index 4eecf72862a84..9e7ff1cde356b 100644 --- a/llvm/lib/Target/AArch64/SVEInstrFormats.td +++ b/llvm/lib/Target/AArch64/SVEInstrFormats.td @@ -4294,7 +4294,7 @@ class sve_int_cmp sz8_64, bits<3> opc, string asm, } multiclass SVE_SETCC_Pat { + ValueType intvt, Instruction cmp> { def : Pat<(predvt (AArch64setcc_z predvt:$Op1, intvt:$Op2, intvt:$Op3, cc)), (cmp $Op1, $Op2, $Op3)>; def : Pat<(predvt (AArch64setcc_z predvt:$Op1, intvt:$Op2, intvt:$Op3, invcc)), @@ -6705,8 +6705,8 @@ class sve_mem_32b_prfm_sv msz, bit xs, string asm, multiclass sve_mem_32b_prfm_sv_scaled msz, string asm, RegisterOperand sxtw_opnd, RegisterOperand uxtw_opnd, - PatFrag op_sxtw, - PatFrag op_uxtw> { + SDPatternOperator op_sxtw, + SDPatternOperator op_uxtw> { def _UXTW_SCALED : sve_mem_32b_prfm_sv; def _SXTW_SCALED : sve_mem_32b_prfm_sv; @@ -7059,8 +7059,8 @@ class sve_mem_64b_prfm_sv msz, bit xs, bit lsl, string asm, multiclass sve_mem_64b_prfm_sv_ext_scaled msz, string asm, RegisterOperand sxtw_opnd, RegisterOperand uxtw_opnd, - PatFrag op_sxtw, - PatFrag op_uxtw> { + SDPatternOperator op_sxtw, + SDPatternOperator op_uxtw> { def _UXTW_SCALED : sve_mem_64b_prfm_sv; def _SXTW_SCALED : sve_mem_64b_prfm_sv; @@ -7073,7 +7073,7 @@ multiclass sve_mem_64b_prfm_sv_ext_scaled msz, string asm, } multiclass sve_mem_64b_prfm_sv_lsl_scaled msz, string asm, - RegisterOperand zprext, PatFrag frag> { + RegisterOperand zprext, SDPatternOperator frag> { def NAME : sve_mem_64b_prfm_sv; def : Pat<(frag (nxv2i1 PPR3bAny:$Pg), (i64 GPR64sp:$Rn), (nxv2i64 zprext:$Zm), (i32 sve_prfop:$prfop)),