forked from OSchip/llvm-project
[WebAssembly] Use 'I' multiclass template for br_table (NFC)
Summary: We don't need to explicitly use `NI` anymore because we now don't use `let` statements within the definitions. Reviewers: aardappel Subscribers: dschuff, sbc100, jgravelle-google, sunfish, llvm-commits Differential Revision: https://reviews.llvm.org/D56376 llvm-svn: 350594
This commit is contained in:
parent
ae6f1e07fc
commit
8e2bac8e7f
|
@ -48,27 +48,17 @@ def brlist : Operand<i32> {
|
|||
// TODO: SelectionDAG's lowering insists on using a pointer as the index for
|
||||
// jump tables, so in practice we don't ever use BR_TABLE_I64 in wasm32 mode
|
||||
// currently.
|
||||
// FIXME: this can't inherit from I<> since there is no way to inherit from a
|
||||
// multiclass and still have the let statements.
|
||||
let isTerminator = 1, hasCtrlDep = 1, isBarrier = 1 in {
|
||||
let isCodeGenOnly = 1 in
|
||||
def BR_TABLE_I32 : NI<(outs), (ins I32:$index, variable_ops),
|
||||
[(WebAssemblybr_table I32:$index)], "false",
|
||||
"br_table \t$index", 0x0e> {
|
||||
}
|
||||
let BaseName = "BR_TABLE_I32" in
|
||||
def BR_TABLE_I32_S : NI<(outs), (ins brlist:$brl), [], "true",
|
||||
"br_table \t$brl", 0x0e> {
|
||||
}
|
||||
let isCodeGenOnly = 1 in
|
||||
def BR_TABLE_I64 : NI<(outs), (ins I64:$index, variable_ops),
|
||||
[(WebAssemblybr_table I64:$index)], "false",
|
||||
"br_table \t$index"> {
|
||||
}
|
||||
let BaseName = "BR_TABLE_I64" in
|
||||
def BR_TABLE_I64_S : NI<(outs), (ins brlist:$brl), [], "true",
|
||||
"br_table \t$brl"> {
|
||||
}
|
||||
defm BR_TABLE_I32 : I<(outs), (ins I32:$index, variable_ops),
|
||||
(outs), (ins brlist:$brl),
|
||||
[(WebAssemblybr_table I32:$index)],
|
||||
"br_table \t$index", "br_table \t$brl",
|
||||
0x0e>;
|
||||
defm BR_TABLE_I64 : I<(outs), (ins I64:$index, variable_ops),
|
||||
(outs), (ins brlist:$brl),
|
||||
[(WebAssemblybr_table I64:$index)],
|
||||
"br_table \t$index", "br_table \t$brl",
|
||||
0x0e>;
|
||||
} // isTerminator = 1, hasCtrlDep = 1, isBarrier = 1
|
||||
|
||||
// This is technically a control-flow instruction, since all it affects is the
|
||||
|
|
Loading…
Reference in New Issue