//===----------------------------------------------------------------------===//
def bb_op : Operand<OtherVT>;
-def tjumptable_op : Operand<iPTR>;
//===----------------------------------------------------------------------===//
// WebAssembly Instruction Format Definitions.
//===----------------------------------------------------------------------===//
multiclass ARGUMENT<WebAssemblyRegClass vt> {
- let hasSideEffects = 1, Uses = [ARGUMENTS] in
+ let hasSideEffects = 1, Uses = [ARGUMENTS], isCodeGenOnly = 1 in
def ARGUMENT_#vt : I<(outs vt:$res), (ins i32imm:$argno),
[(set vt:$res, (WebAssemblyargument timm:$argno))]>;
}
(CONST_I32 tglobaladdr:$dst)>;
def : Pat<(i32 (WebAssemblywrapper texternalsym:$dst)),
(CONST_I32 texternalsym:$dst)>;
+def : Pat<(i32 (WebAssemblywrapper tjumptable:$dst)),
+ (CONST_I32 tjumptable:$dst)>;
let Defs = [ARGUMENTS] in {
-def JUMP_TABLE : I<(outs I32:$dst), (ins tjumptable_op:$addr),
- [(set I32:$dst, (WebAssemblywrapper tjumptable:$addr))],
- "jump_table\t$dst, $addr">;
-
// Function signature and local variable declaration "instructions".
def PARAM : I<(outs), (ins variable_ops), [], ".param \t">;
def RESULT : I<(outs), (ins variable_ops), [], ".result \t">;
include "WebAssemblyInstrCall.td"
include "WebAssemblyInstrControl.td"
include "WebAssemblyInstrInteger.td"
-include "WebAssemblyInstrFloat.td"
include "WebAssemblyInstrConv.td"
+include "WebAssemblyInstrFloat.td"
include "WebAssemblyInstrAtomics.td"
include "WebAssemblyInstrSIMD.td"