[llvm-commits] [llvm] r114536 - in /llvm/trunk: lib/Target/X86/AsmParser/X86AsmParser.cpp test/MC/AsmParser/X86/x86_instructions.s
Chris Lattner
sabre at nondot.org
Tue Sep 21 23:26:39 PDT 2010
Author: lattner
Date: Wed Sep 22 01:26:39 2010
New Revision: 114536
URL: http://llvm.org/viewvc/llvm-project?rev=114536&view=rev
Log:
fix rdar://8456371 - Handle commutable instructions written backward.
Modified:
llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp
llvm/trunk/test/MC/AsmParser/X86/x86_instructions.s
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=114536&r1=114535&r2=114536&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp (original)
+++ llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp Wed Sep 22 01:26:39 2010
@@ -911,6 +911,16 @@
Operands.erase(Operands.begin() + 2);
}
+ // FIXME: Hack to handle "f{mul*,add*} st(0), $op" the same as
+ // "f{mul*,add*} $op", since they commute.
+ if ((Name.startswith("fmul") || Name.startswith("fadd")) &&
+ Operands.size() == 3 &&
+ static_cast<X86Operand*>(Operands[1])->isReg() &&
+ static_cast<X86Operand*>(Operands[1])->getReg() == X86::ST0) {
+ delete Operands[1];
+ Operands.erase(Operands.begin() + 1);
+ }
+
// FIXME: Hack to handle "imul <imm>, B" which is an alias for "imul <imm>, B,
// B".
if (Name.startswith("imul") && Operands.size() == 3 &&
Modified: llvm/trunk/test/MC/AsmParser/X86/x86_instructions.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AsmParser/X86/x86_instructions.s?rev=114536&r1=114535&r2=114536&view=diff
==============================================================================
--- llvm/trunk/test/MC/AsmParser/X86/x86_instructions.s (original)
+++ llvm/trunk/test/MC/AsmParser/X86/x86_instructions.s Wed Sep 22 01:26:39 2010
@@ -353,3 +353,11 @@
mov %rdx, %cr15
// CHECK: movq %rdx, %cr15
// CHECK: encoding: [0x44,0x0f,0x22,0xfa]
+
+// rdar://8456371 - Handle commutable instructions written backward.
+// CHECK: faddp %st(1)
+// CHECK: fmulp %st(2)
+faddp %st, %st(1)
+fmulp %st, %st(2)
+
+
More information about the llvm-commits
mailing list