[llvm-commits] [llvm] r117819 - in /llvm/trunk/lib/Target/X86: AsmParser/X86AsmParser.cpp X86InstrInfo.td

Chris Lattner sabre at nondot.org
Sat Oct 30 11:07:17 PDT 2010


Author: lattner
Date: Sat Oct 30 13:07:17 2010
New Revision: 117819

URL: http://llvm.org/viewvc/llvm-project?rev=117819&view=rev
Log:
move a bunch more aliases from .cpp -> .td file.

Modified:
    llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp
    llvm/trunk/lib/Target/X86/X86InstrInfo.td

Modified: llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp?rev=117819&r1=117818&r2=117819&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp (original)
+++ llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp Sat Oct 30 13:07:17 2010
@@ -636,24 +636,10 @@
     .Case("pop", Is64Bit ? "popq" : "popl")
     .Case("pushf", Is64Bit ? "pushfq" : "pushfl")
     .Case("popf",  Is64Bit ? "popfq"  : "popfl")
-    .Case("pushfd", "pushfl")
-    .Case("popfd",  "popfl")
     .Case("retl", Is64Bit ? "retl" : "ret")
     .Case("retq", Is64Bit ? "ret" : "retq")
-    // Floating point stack cmov aliases.
-    .Case("fcmovz", "fcmove")
-    .Case("fcmova", "fcmovnbe")
-    .Case("fcmovnae", "fcmovb")
-    .Case("fcmovna", "fcmovbe")
-    .Case("fcmovae", "fcmovnb")
-    .Case("fwait", "wait")
     .Case("movzx", "movzb")  // FIXME: Not correct.
-    .Case("fildq", "fildll")
     .Case("fcompi", "fcomip")
-    .Case("fnstcww", "fnstcw")
-    .Case("fstcww", "fstcw")
-    .Case("fnstsww", "fnstsw")
-    .Case("fstsww", "fstsw")
     .Default(Name);
 
   // FIXME: Hack to recognize cmp<comparison code>{ss,sd,ps,pd}.
@@ -964,7 +950,7 @@
   }
 
   // The assembler accepts various amounts of brokenness for fnstsw.
-  if (Name == "fnstsw") {
+  if (Name == "fnstsw" || Name == "fnstsww") {
     if (Operands.size() == 2 &&
         static_cast<X86Operand*>(Operands[1])->isReg()) {
       // "fnstsw al" and "fnstsw eax" -> "fnstw"
@@ -1105,6 +1091,7 @@
   // First, handle aliases that expand to multiple instructions.
   // FIXME: This should be replaced with a real .td file alias mechanism.
   if (Op->getToken() == "fstsw" || Op->getToken() == "fstcw" ||
+      Op->getToken() == "fstsww" || Op->getToken() == "fstcww" ||
       Op->getToken() == "finit" || Op->getToken() == "fsave" ||
       Op->getToken() == "fstenv" || Op->getToken() == "fclex") {
     MCInst Inst;
@@ -1113,12 +1100,14 @@
 
     const char *Repl =
       StringSwitch<const char*>(Op->getToken())
-        .Case("finit", "fninit")
-        .Case("fsave", "fnsave")
-        .Case("fstcw", "fnstcw")
+        .Case("finit",  "fninit")
+        .Case("fsave",  "fnsave")
+        .Case("fstcw",  "fnstcw")
+        .Case("fstcww",  "fnstcw")
         .Case("fstenv", "fnstenv")
-        .Case("fstsw", "fnstsw")
-        .Case("fclex", "fnclex")
+        .Case("fstsw",  "fnstsw")
+        .Case("fstsww", "fnstsw")
+        .Case("fclex",  "fnclex")
         .Default(0);
     assert(Repl && "Unknown wait-prefixed instruction");
     delete Operands[0];

Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrInfo.td?rev=117819&r1=117818&r2=117819&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrInfo.td (original)
+++ llvm/trunk/lib/Target/X86/X86InstrInfo.td Sat Oct 30 13:07:17 2010
@@ -1265,17 +1265,33 @@
 def : MnemonicAlias<"cdq", "cltd">;
 def : MnemonicAlias<"cwde", "cwtl">;
 def : MnemonicAlias<"cdqe", "cltq">;
+
+def : MnemonicAlias<"pushfd", "pushfl">;
+def : MnemonicAlias<"popfd",  "popfl">;
+
 def : MnemonicAlias<"smovb", "movsb">;
 def : MnemonicAlias<"smovw", "movsw">;
 def : MnemonicAlias<"smovl", "movsl">;
 def : MnemonicAlias<"smovq", "movsq">;
 
-def : MnemonicAlias<"fldcww", "fldcw">;
-def : MnemonicAlias<"fucompi", "fucomip">;
 def : MnemonicAlias<"ud2a", "ud2">;
 def : MnemonicAlias<"verrw", "verr">;
 
 
+// Floating point stack aliases.
+def : MnemonicAlias<"fcmovz",   "fcmove">;
+def : MnemonicAlias<"fcmova",   "fcmovnbe">;
+def : MnemonicAlias<"fcmovnae", "fcmovb">;
+def : MnemonicAlias<"fcmovna",  "fcmovbe">;
+def : MnemonicAlias<"fcmovae",  "fcmovnb">;
+def : MnemonicAlias<"fildq",    "fildll">;
+def : MnemonicAlias<"fldcww",   "fldcw">;
+def : MnemonicAlias<"fnstcww", "fnstcw">;
+def : MnemonicAlias<"fnstsww", "fnstsw">;
+def : MnemonicAlias<"fucompi",  "fucomip">;
+def : MnemonicAlias<"fwait",    "wait">;
+
+
 class CondCodeAlias<string Prefix,string Suffix, string OldCond, string NewCond>
   : MnemonicAlias<!strconcat(Prefix, OldCond, Suffix),
                   !strconcat(Prefix, NewCond, Suffix)>;





More information about the llvm-commits mailing list