From 8b260a76445762f109cc8cf6577435c4cc59e3aa Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 30 Oct 2010 18:07:17 +0000 Subject: [PATCH] move a bunch more aliases from .cpp -> .td file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117819 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/AsmParser/X86AsmParser.cpp | 29 +++++++---------------- lib/Target/X86/X86InstrInfo.td | 20 ++++++++++++++-- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp index a131539814e..8a7cdc788ab 100644 --- a/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -636,24 +636,10 @@ ParseInstruction(StringRef Name, SMLoc NameLoc, .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{ss,sd,ps,pd}. @@ -964,7 +950,7 @@ ParseInstruction(StringRef Name, SMLoc NameLoc, } // The assembler accepts various amounts of brokenness for fnstsw. - if (Name == "fnstsw") { + if (Name == "fnstsw" || Name == "fnstsww") { if (Operands.size() == 2 && static_cast(Operands[1])->isReg()) { // "fnstsw al" and "fnstsw eax" -> "fnstw" @@ -1105,6 +1091,7 @@ MatchAndEmitInstruction(SMLoc IDLoc, // 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 @@ MatchAndEmitInstruction(SMLoc IDLoc, const char *Repl = StringSwitch(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]; diff --git a/lib/Target/X86/X86InstrInfo.td b/lib/Target/X86/X86InstrInfo.td index b5168f8dc5a..6f9908635e9 100644 --- a/lib/Target/X86/X86InstrInfo.td +++ b/lib/Target/X86/X86InstrInfo.td @@ -1265,17 +1265,33 @@ def : MnemonicAlias<"cwd", "cwtd">; 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 : MnemonicAlias; -- 2.34.1