[WebAssembly][NFC] Convert IsWasm64 instruction field to 'bit' from string
Extends the cleanup in D125713 to IsWasm64. Differential Revision: https://reviews.llvm.org/D125714
This commit is contained in:
parent
601ed0b605
commit
8a23df89da
|
@ -15,7 +15,7 @@ let UseNamedOperandTable = 1 in
|
|||
multiclass ATOMIC_I<dag oops_r, dag iops_r, dag oops_s, dag iops_s,
|
||||
list<dag> pattern_r, string asmstr_r,
|
||||
string asmstr_s, bits<32> atomic_op,
|
||||
string is64 = "false"> {
|
||||
bit is64 = false> {
|
||||
defm "" : I<oops_r, iops_r, oops_s, iops_s, pattern_r, asmstr_r, asmstr_s,
|
||||
!or(0xfe00, !and(0xff, atomic_op)), is64>,
|
||||
Requires<[HasAtomics]>;
|
||||
|
@ -38,13 +38,13 @@ defm MEMORY_ATOMIC_NOTIFY_A32 :
|
|||
(ins P2Align:$p2align, offset32_op:$off, I32:$addr, I32:$count),
|
||||
(outs), (ins P2Align:$p2align, offset32_op:$off), [],
|
||||
"memory.atomic.notify \t$dst, ${off}(${addr})${p2align}, $count",
|
||||
"memory.atomic.notify \t${off}${p2align}", 0x00, "false">;
|
||||
"memory.atomic.notify \t${off}${p2align}", 0x00, false>;
|
||||
defm MEMORY_ATOMIC_NOTIFY_A64 :
|
||||
ATOMIC_I<(outs I32:$dst),
|
||||
(ins P2Align:$p2align, offset64_op:$off, I64:$addr, I32:$count),
|
||||
(outs), (ins P2Align:$p2align, offset64_op:$off), [],
|
||||
"memory.atomic.notify \t$dst, ${off}(${addr})${p2align}, $count",
|
||||
"memory.atomic.notify \t${off}${p2align}", 0x00, "true">;
|
||||
"memory.atomic.notify \t${off}${p2align}", 0x00, true>;
|
||||
let mayLoad = 1 in {
|
||||
defm MEMORY_ATOMIC_WAIT32_A32 :
|
||||
ATOMIC_I<(outs I32:$dst),
|
||||
|
@ -52,28 +52,28 @@ defm MEMORY_ATOMIC_WAIT32_A32 :
|
|||
I64:$timeout),
|
||||
(outs), (ins P2Align:$p2align, offset32_op:$off), [],
|
||||
"memory.atomic.wait32 \t$dst, ${off}(${addr})${p2align}, $exp, $timeout",
|
||||
"memory.atomic.wait32 \t${off}${p2align}", 0x01, "false">;
|
||||
"memory.atomic.wait32 \t${off}${p2align}", 0x01, false>;
|
||||
defm MEMORY_ATOMIC_WAIT32_A64 :
|
||||
ATOMIC_I<(outs I32:$dst),
|
||||
(ins P2Align:$p2align, offset64_op:$off, I64:$addr, I32:$exp,
|
||||
I64:$timeout),
|
||||
(outs), (ins P2Align:$p2align, offset64_op:$off), [],
|
||||
"memory.atomic.wait32 \t$dst, ${off}(${addr})${p2align}, $exp, $timeout",
|
||||
"memory.atomic.wait32 \t${off}${p2align}", 0x01, "true">;
|
||||
"memory.atomic.wait32 \t${off}${p2align}", 0x01, true>;
|
||||
defm MEMORY_ATOMIC_WAIT64_A32 :
|
||||
ATOMIC_I<(outs I32:$dst),
|
||||
(ins P2Align:$p2align, offset32_op:$off, I32:$addr, I64:$exp,
|
||||
I64:$timeout),
|
||||
(outs), (ins P2Align:$p2align, offset32_op:$off), [],
|
||||
"memory.atomic.wait64 \t$dst, ${off}(${addr})${p2align}, $exp, $timeout",
|
||||
"memory.atomic.wait64 \t${off}${p2align}", 0x02, "false">;
|
||||
"memory.atomic.wait64 \t${off}${p2align}", 0x02, false>;
|
||||
defm MEMORY_ATOMIC_WAIT64_A64 :
|
||||
ATOMIC_I<(outs I32:$dst),
|
||||
(ins P2Align:$p2align, offset64_op:$off, I64:$addr, I64:$exp,
|
||||
I64:$timeout),
|
||||
(outs), (ins P2Align:$p2align, offset64_op:$off), [],
|
||||
"memory.atomic.wait64 \t$dst, ${off}(${addr})${p2align}, $exp, $timeout",
|
||||
"memory.atomic.wait64 \t${off}${p2align}", 0x02, "true">;
|
||||
"memory.atomic.wait64 \t${off}${p2align}", 0x02, true>;
|
||||
} // mayLoad = 1
|
||||
} // hasSideEffects = 1
|
||||
|
||||
|
@ -469,13 +469,13 @@ multiclass WebAssemblyBinRMW<WebAssemblyRegClass rc, string name,
|
|||
(ins P2Align:$p2align, offset32_op:$off, I32:$addr, rc:$val),
|
||||
(outs), (ins P2Align:$p2align, offset32_op:$off), [],
|
||||
!strconcat(name, "\t$dst, ${off}(${addr})${p2align}, $val"),
|
||||
!strconcat(name, "\t${off}${p2align}"), atomic_op, "false">;
|
||||
!strconcat(name, "\t${off}${p2align}"), atomic_op, false>;
|
||||
defm "_A64" :
|
||||
ATOMIC_I<(outs rc:$dst),
|
||||
(ins P2Align:$p2align, offset64_op:$off, I64:$addr, rc:$val),
|
||||
(outs), (ins P2Align:$p2align, offset64_op:$off), [],
|
||||
!strconcat(name, "\t$dst, ${off}(${addr})${p2align}, $val"),
|
||||
!strconcat(name, "\t${off}${p2align}"), atomic_op, "true">;
|
||||
!strconcat(name, "\t${off}${p2align}"), atomic_op, true>;
|
||||
}
|
||||
|
||||
defm ATOMIC_RMW_ADD_I32 : WebAssemblyBinRMW<I32, "i32.atomic.rmw.add", 0x1e>;
|
||||
|
@ -767,14 +767,14 @@ multiclass WebAssemblyTerRMW<WebAssemblyRegClass rc, string name,
|
|||
rc:$new_),
|
||||
(outs), (ins P2Align:$p2align, offset32_op:$off), [],
|
||||
!strconcat(name, "\t$dst, ${off}(${addr})${p2align}, $exp, $new_"),
|
||||
!strconcat(name, "\t${off}${p2align}"), atomic_op, "false">;
|
||||
!strconcat(name, "\t${off}${p2align}"), atomic_op, false>;
|
||||
defm "_A64" :
|
||||
ATOMIC_I<(outs rc:$dst),
|
||||
(ins P2Align:$p2align, offset64_op:$off, I64:$addr, rc:$exp,
|
||||
rc:$new_),
|
||||
(outs), (ins P2Align:$p2align, offset64_op:$off), [],
|
||||
!strconcat(name, "\t$dst, ${off}(${addr})${p2align}, $exp, $new_"),
|
||||
!strconcat(name, "\t${off}${p2align}"), atomic_op, "true">;
|
||||
!strconcat(name, "\t${off}${p2align}"), atomic_op, true>;
|
||||
}
|
||||
|
||||
defm ATOMIC_RMW_CMPXCHG_I32 :
|
||||
|
|
|
@ -14,12 +14,12 @@
|
|||
// WebAssembly Instruction Format.
|
||||
// We instantiate 2 of these for every actual instruction (register based
|
||||
// and stack based), see below.
|
||||
class WebAssemblyInst<bits<32> inst, string asmstr, bit stack, string is64>
|
||||
class WebAssemblyInst<bits<32> inst, string asmstr, bit stack, bit is64>
|
||||
: StackRel, RegisterRel, Wasm64Rel, Instruction {
|
||||
bits<32> Inst = inst; // Instruction encoding.
|
||||
bit StackBased = stack;
|
||||
string BaseName = NAME;
|
||||
string IsWasm64 = is64;
|
||||
bit IsWasm64 = is64;
|
||||
string Wasm32Name = !subst("_A64", "_A32", NAME);
|
||||
let Namespace = "WebAssembly";
|
||||
let Pattern = [];
|
||||
|
@ -31,7 +31,7 @@ class WebAssemblyInst<bits<32> inst, string asmstr, bit stack, string is64>
|
|||
|
||||
// Normal instructions. Default instantiation of a WebAssemblyInst.
|
||||
class NI<dag oops, dag iops, list<dag> pattern, bit stack,
|
||||
string asmstr = "", bits<32> inst = -1, string is64 = "false">
|
||||
string asmstr = "", bits<32> inst = -1, bit is64 = false>
|
||||
: WebAssemblyInst<inst, asmstr, stack, is64> {
|
||||
dag OutOperandList = oops;
|
||||
dag InOperandList = iops;
|
||||
|
@ -54,7 +54,7 @@ class NI<dag oops, dag iops, list<dag> pattern, bit stack,
|
|||
// there is always an equivalent pair of instructions.
|
||||
multiclass I<dag oops_r, dag iops_r, dag oops_s, dag iops_s,
|
||||
list<dag> pattern_r, string asmstr_r = "", string asmstr_s = "",
|
||||
bits<32> inst = -1, string is64 = "false"> {
|
||||
bits<32> inst = -1, bit is64 = false> {
|
||||
let isCodeGenOnly = 1 in
|
||||
def "" : NI<oops_r, iops_r, pattern_r, false, asmstr_r, inst, is64>;
|
||||
let BaseName = NAME in
|
||||
|
|
|
@ -251,8 +251,8 @@ def getWasm64Opcode : InstrMapping {
|
|||
let FilterClass = "Wasm64Rel";
|
||||
let RowFields = ["Wasm32Name"];
|
||||
let ColFields = ["IsWasm64"];
|
||||
let KeyCol = ["false"];
|
||||
let ValueCols = [["true"]];
|
||||
let KeyCol = ["0"];
|
||||
let ValueCols = [["1"]];
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
|
@ -47,13 +47,13 @@ multiclass WebAssemblyLoad<WebAssemblyRegClass rc, string Name, int Opcode,
|
|||
(ins P2Align:$p2align, offset32_op:$off, I32:$addr),
|
||||
(outs), (ins P2Align:$p2align, offset32_op:$off),
|
||||
[], !strconcat(Name, "\t$dst, ${off}(${addr})${p2align}"),
|
||||
!strconcat(Name, "\t${off}${p2align}"), Opcode, "false">,
|
||||
!strconcat(Name, "\t${off}${p2align}"), Opcode, false>,
|
||||
Requires<reqs>;
|
||||
defm "_A64": I<(outs rc:$dst),
|
||||
(ins P2Align:$p2align, offset64_op:$off, I64:$addr),
|
||||
(outs), (ins P2Align:$p2align, offset64_op:$off),
|
||||
[], !strconcat(Name, "\t$dst, ${off}(${addr})${p2align}"),
|
||||
!strconcat(Name, "\t${off}${p2align}"), Opcode, "true">,
|
||||
!strconcat(Name, "\t${off}${p2align}"), Opcode, true>,
|
||||
Requires<reqs>;
|
||||
}
|
||||
}
|
||||
|
@ -244,7 +244,7 @@ multiclass WebAssemblyStore<WebAssemblyRegClass rc, string Name, int Opcode,
|
|||
(outs),
|
||||
(ins P2Align:$p2align, offset32_op:$off), [],
|
||||
!strconcat(Name, "\t${off}(${addr})${p2align}, $val"),
|
||||
!strconcat(Name, "\t${off}${p2align}"), Opcode, "false">,
|
||||
!strconcat(Name, "\t${off}${p2align}"), Opcode, false>,
|
||||
Requires<reqs>;
|
||||
let mayStore = 1, UseNamedOperandTable = 1 in
|
||||
defm "_A64" : I<(outs),
|
||||
|
@ -252,7 +252,7 @@ multiclass WebAssemblyStore<WebAssemblyRegClass rc, string Name, int Opcode,
|
|||
(outs),
|
||||
(ins P2Align:$p2align, offset64_op:$off), [],
|
||||
!strconcat(Name, "\t${off}(${addr})${p2align}, $val"),
|
||||
!strconcat(Name, "\t${off}${p2align}"), Opcode, "true">,
|
||||
!strconcat(Name, "\t${off}${p2align}"), Opcode, true>,
|
||||
Requires<reqs>;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue