From 905f2e06691672c236ae864faf0ad7220afc2844 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 30 Sep 2010 17:11:29 +0000 Subject: [PATCH] preemptively add the rest of the non-n fpstack instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115168 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/AsmParser/X86AsmParser.cpp | 9 ++++++--- test/MC/AsmParser/X86/x86_instructions.s | 4 ++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp index dc86484bd4a..f057cd62267 100644 --- a/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -1120,7 +1120,8 @@ 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() == "finit") { + Op->getToken() == "finit" || Op->getToken() == "fsave" || + Op->getToken() == "fstenv") { MCInst Inst; Inst.setOpcode(X86::WAIT); Out.EmitInstruction(Inst); @@ -1128,9 +1129,11 @@ MatchAndEmitInstruction(SMLoc IDLoc, delete Operands[0]; const char *Repl = StringSwitch(Op->getToken()) - .Case("fstsw", "fnstsw") - .Case("fstcw", "fnstcw") .Case("finit", "fninit") + .Case("fsave", "fnsave") + .Case("fstcw", "fnstcw") + .Case("fstenv", "fnstenv") + .Case("fstsw", "fnstsw") .Default(0); assert(Repl && "Unknown wait-prefixed instruction"); Operands[0] = X86Operand::CreateToken(Repl, IDLoc); diff --git a/test/MC/AsmParser/X86/x86_instructions.s b/test/MC/AsmParser/X86/x86_instructions.s index 4731a0857de..a0bc0c9236b 100644 --- a/test/MC/AsmParser/X86/x86_instructions.s +++ b/test/MC/AsmParser/X86/x86_instructions.s @@ -431,6 +431,10 @@ finit // CHECK: wait // CHECK: fninit +fsave 32493 +// CHECK: wait +// CHECK: fnsave 32493 + // rdar://8456382 - cvtsd2si support. cvtsd2si %xmm1, %rax