diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyInstrAtomics.td b/llvm/lib/Target/WebAssembly/WebAssemblyInstrAtomics.td --- a/llvm/lib/Target/WebAssembly/WebAssemblyInstrAtomics.td +++ b/llvm/lib/Target/WebAssembly/WebAssemblyInstrAtomics.td @@ -607,7 +607,7 @@ Requires<[HasAddr64, HasAtomics]>; } -multiclass BinRMWPatGlobalAddrOffOnly { +multiclass BinRMWPatGlobalAddrOffOnly { def : Pat<(ty (kind (WebAssemblywrapper tglobaladdr:$off), ty:$val)), (!cast(inst#_A32) 0, tglobaladdr:$off, (CONST_I32 0), ty:$val)>, Requires<[HasAddr32, HasAtomics, IsNotPIC]>; @@ -685,7 +685,7 @@ // Patterns for various addressing modes for truncating-extending binary RMWs. multiclass BinRMWTruncExtPattern< PatFrag rmw_8, PatFrag rmw_16, PatFrag rmw_32, PatFrag rmw_64, - NI inst8_32, NI inst16_32, NI inst8_64, NI inst16_64, NI inst32_64> { + string inst8_32, string inst16_32, string inst8_64, string inst16_64, string inst32_64> { // Truncating-extending binary RMWs with no constant offset defm : BinRMWPatNoOffset, inst8_32>; defm : BinRMWPatNoOffset, inst16_32>; diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyInstrMemory.td b/llvm/lib/Target/WebAssembly/WebAssemblyInstrMemory.td --- a/llvm/lib/Target/WebAssembly/WebAssemblyInstrMemory.td +++ b/llvm/lib/Target/WebAssembly/WebAssemblyInstrMemory.td @@ -67,7 +67,7 @@ defm LOAD_F64 : WebAssemblyLoad; // Select loads with no constant offset. -multiclass LoadPatNoOffset { +multiclass LoadPatNoOffset { def : Pat<(ty (kind I32:$addr)), (!cast(inst # "_A32") 0, 0, I32:$addr)>, Requires<[HasAddr32]>; def : Pat<(ty (kind (i64 I64:$addr))), (!cast(inst # "_A64") 0, 0, I64:$addr)>, @@ -82,7 +82,7 @@ // Select loads with a constant offset. // Pattern with address + immediate offset -multiclass LoadPatImmOff { def : Pat<(ty (kind (operand I32:$addr, imm:$off))), (!cast(inst # "_A32") 0, imm:$off, I32:$addr)>, @@ -102,7 +102,7 @@ defm : LoadPatImmOff; // Select loads with just a constant offset. -multiclass LoadPatOffsetOnly { +multiclass LoadPatOffsetOnly { def : Pat<(ty (kind imm:$off)), (!cast(inst # "_A32") 0, imm:$off, (CONST_I32 0))>, Requires<[HasAddr32]>; @@ -116,7 +116,7 @@ defm : LoadPatOffsetOnly; defm : LoadPatOffsetOnly; -multiclass LoadPatGlobalAddrOffOnly { +multiclass LoadPatGlobalAddrOffOnly { def : Pat<(ty (kind (WebAssemblywrapper tglobaladdr:$off))), (!cast(inst # "_A32") 0, tglobaladdr:$off, (CONST_I32 0))>, Requires<[IsNotPIC, HasAddr32]>; diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td b/llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td --- a/llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td +++ b/llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td @@ -308,7 +308,7 @@ defm "" : SIMDLoadLane; // Select loads with no constant offset. -multiclass LoadLanePatNoOffset { +multiclass LoadLanePatNoOffset { defvar load_lane_a32 = !cast("LOAD_LANE_"#vec#"_A32"); defvar load_lane_a64 = !cast("LOAD_LANE_"#vec#"_A64"); def : Pat<(vec.vt (kind (i32 I32:$addr), @@ -381,7 +381,7 @@ defm "" : SIMDStoreLane; // Select stores with no constant offset. -multiclass StoreLanePatNoOffset { +multiclass StoreLanePatNoOffset { def : Pat<(kind (i32 I32:$addr), (vec.vt V128:$vec), (i32 vec.lane_idx:$idx)), (!cast("STORE_LANE_"#vec#"_A32") 0, 0, imm:$idx, $addr, $vec)>, Requires<[HasAddr32]>; @@ -705,7 +705,7 @@ // Bitwise operations //===----------------------------------------------------------------------===// -multiclass SIMDBinary simdop> { +multiclass SIMDBinary simdop> { defm _#vec : SIMD_I<(outs V128:$dst), (ins V128:$lhs, V128:$rhs), (outs), (ins), [(set (vec.vt V128:$dst), @@ -714,7 +714,8 @@ vec.prefix#"."#name, simdop>; } -multiclass SIMDBitwise simdop, bit commutable = false> { +multiclass SIMDBitwise simdop, + bit commutable = false> { let isCommutable = commutable in defm "" : SIMD_I<(outs V128:$dst), (ins V128:$lhs, V128:$rhs), (outs), (ins), [], @@ -724,7 +725,7 @@ (!cast(NAME) $lhs, $rhs)>; } -multiclass SIMDUnary simdop> { +multiclass SIMDUnary simdop> { defm _#vec : SIMD_I<(outs V128:$dst), (ins V128:$v), (outs), (ins), [(set (vec.vt V128:$dst), (vec.vt (node (vec.vt V128:$v))))], @@ -811,21 +812,21 @@ // Integer unary arithmetic //===----------------------------------------------------------------------===// -multiclass SIMDUnaryInt baseInst> { +multiclass SIMDUnaryInt baseInst> { defm "" : SIMDUnary; defm "" : SIMDUnary; defm "" : SIMDUnary; defm "" : SIMDUnary; } -multiclass SIMDReduceVec simdop> { +multiclass SIMDReduceVec simdop> { defm _#vec : SIMD_I<(outs I32:$dst), (ins V128:$vec), (outs), (ins), [(set I32:$dst, (i32 (op (vec.vt V128:$vec))))], vec.prefix#"."#name#"\t$dst, $vec", vec.prefix#"."#name, simdop>; } -multiclass SIMDReduce baseInst> { +multiclass SIMDReduce baseInst> { defm "" : SIMDReduceVec; defm "" : SIMDReduceVec; defm "" : SIMDReduceVec; @@ -912,23 +913,23 @@ // Integer binary arithmetic //===----------------------------------------------------------------------===// -multiclass SIMDBinaryIntNoI8x16 baseInst> { +multiclass SIMDBinaryIntNoI8x16 baseInst> { defm "" : SIMDBinary; defm "" : SIMDBinary; defm "" : SIMDBinary; } -multiclass SIMDBinaryIntSmall baseInst> { +multiclass SIMDBinaryIntSmall baseInst> { defm "" : SIMDBinary; defm "" : SIMDBinary; } -multiclass SIMDBinaryIntNoI64x2 baseInst> { +multiclass SIMDBinaryIntNoI64x2 baseInst> { defm "" : SIMDBinaryIntSmall; defm "" : SIMDBinary; } -multiclass SIMDBinaryInt baseInst> { +multiclass SIMDBinaryInt baseInst> { defm "" : SIMDBinaryIntNoI64x2; defm "" : SIMDBinary; } @@ -986,7 +987,7 @@ 186>; // Extending multiplication: extmul_{low,high}_P, extmul_high -multiclass SIMDExtBinary simdop> { +multiclass SIMDExtBinary simdop> { defm _#vec : SIMD_I<(outs V128:$dst), (ins V128:$lhs, V128:$rhs), (outs), (ins), [(set (vec.vt V128:$dst), (node @@ -1054,7 +1055,7 @@ // Floating-point binary arithmetic //===----------------------------------------------------------------------===// -multiclass SIMDBinaryFP baseInst> { +multiclass SIMDBinaryFP baseInst> { defm "" : SIMDBinary; defm "" : SIMDBinary; } @@ -1089,7 +1090,7 @@ // Conversions //===----------------------------------------------------------------------===// -multiclass SIMDConvert simdop> { defm op#_#vec : SIMD_I<(outs V128:$dst), (ins V128:$vec), (outs), (ins), @@ -1345,7 +1346,7 @@ "prefetch.nt\t$off$p2align", 0xc6>; } // mayLoad, UseNamedOperandTable -multiclass PrefetchPatNoOffset { +multiclass PrefetchPatNoOffset { def : Pat<(kind I32:$addr), (!cast(inst # "_A32") 0, 0, $addr)>, Requires<[HasAddr32]>; def : Pat<(kind I64:$addr), (!cast(inst # "_A64") 0, 0, $addr)>,