[PATCH] D52373: [WebAssembly] Simplified selecting asmmatcher stack instructions.

Wouter van Oortmerssen via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 21 13:55:36 PDT 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rL342772: [WebAssembly] Simplified selecting asmmatcher stack instructions. (authored by aardappel, committed by ).

Repository:
  rL LLVM

https://reviews.llvm.org/D52373

Files:
  llvm/trunk/lib/Target/WebAssembly/WebAssemblyInstrControl.td
  llvm/trunk/lib/Target/WebAssembly/WebAssemblyInstrFormats.td
  llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp


Index: llvm/trunk/lib/Target/WebAssembly/WebAssemblyInstrFormats.td
===================================================================
--- llvm/trunk/lib/Target/WebAssembly/WebAssemblyInstrFormats.td
+++ llvm/trunk/lib/Target/WebAssembly/WebAssemblyInstrFormats.td
@@ -48,6 +48,7 @@
 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> {
+  let isCodeGenOnly = 1 in
   def "" : NI<oops_r, iops_r, pattern_r, 0, asmstr_r, inst>;
   def _S : NI<oops_s, iops_s, [], 1, asmstr_s, inst>;
 }
Index: llvm/trunk/lib/Target/WebAssembly/WebAssemblyInstrControl.td
===================================================================
--- llvm/trunk/lib/Target/WebAssembly/WebAssemblyInstrControl.td
+++ llvm/trunk/lib/Target/WebAssembly/WebAssemblyInstrControl.td
@@ -47,6 +47,7 @@
 // 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)], 0,
                       "br_table \t$index", 0x0e> {
@@ -59,6 +60,7 @@
   let TSFlags{0} = 1;
   let TSFlags{1} = 1;
 }
+let isCodeGenOnly = 1 in
 def BR_TABLE_I64 : NI<(outs), (ins I64:$index, variable_ops),
                       [(WebAssemblybr_table I64:$index)], 0,
                       "br_table \t$index"> {
Index: llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp
===================================================================
--- llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp
+++ llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp
@@ -1479,8 +1479,6 @@
   bool ReportMultipleNearMisses =
       AsmParser->getValueAsBit("ReportMultipleNearMisses");
 
-  bool IsWebAssemblyTarget = Target.getName() == "WebAssembly";
-
   // Parse the instructions; we need to do this first so that we can gather the
   // singleton register classes.
   SmallPtrSet<Record*, 16> SingletonRegisters;
@@ -1516,14 +1514,6 @@
       if (!V.empty() && V != Variant.Name)
         continue;
 
-      // [WebAssembly] Ignore non-stack instructions.
-      if (IsWebAssemblyTarget) {
-        auto Bit = CGI->TheDef->getValue("StackBased")->getValue()->
-                     getCastTo(BitRecTy::get());
-        if (!Bit || !reinterpret_cast<const BitInit *>(Bit)->getValue())
-          continue;
-      }
-
       auto II = llvm::make_unique<MatchableInfo>(*CGI);
 
       II->initialize(*this, SingletonRegisters, Variant, HasMnemonicFirst);


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D52373.166557.patch
Type: text/x-patch
Size: 2663 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180921/781e8a0e/attachment.bin>


More information about the llvm-commits mailing list