diff options
| author | Chris Lattner <sabre@nondot.org> | 2010-09-15 04:08:38 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2010-09-15 04:08:38 +0000 |
| commit | 7df35dbd19f7d5bca68e2436d3abe3ba789a5593 (patch) | |
| tree | ae3ae57755d9da9721427d2cdd27f4c8bbaa3df4 | |
| parent | 4dbcba0082d89d6eb7670f7b28cffbd8d522560a (diff) | |
| download | bcm5719-llvm-7df35dbd19f7d5bca68e2436d3abe3ba789a5593.tar.gz bcm5719-llvm-7df35dbd19f7d5bca68e2436d3abe3ba789a5593.zip | |
add some aliases for f[u]comi, part of rdar://8431422
llvm-svn: 113930
| -rw-r--r-- | llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | 16 | ||||
| -rw-r--r-- | llvm/test/MC/AsmParser/X86/x86_instructions.s | 14 |
2 files changed, 23 insertions, 7 deletions
diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp index dde34631ef4..c21fc7ab56e 100644 --- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -933,13 +933,15 @@ ParseInstruction(StringRef Name, SMLoc NameLoc, NameLoc, NameLoc)); } - // The assembler accepts these instructions with no operand as a synonym for - // an instruction acting on st,st(1). e.g. "faddp" -> "faddp %st(0),%st(1)". - //if (() && - // Operands.size() == 1) { - // Operands.push_back(X86Operand::CreateReg(MatchRegisterName("st(1)"), - // NameLoc, NameLoc)); - //} + // The assembler accepts these instructions with two few operands as a synonym + // for taking %st(1),%st(0) or X, %st(0). + if ((Name == "fcomi" || Name == "fucomi") && Operands.size() < 3) { + if (Operands.size() == 1) + Operands.push_back(X86Operand::CreateReg(MatchRegisterName("st(1)"), + NameLoc, NameLoc)); + Operands.push_back(X86Operand::CreateReg(MatchRegisterName("st(0)"), + NameLoc, NameLoc)); + } return false; } diff --git a/llvm/test/MC/AsmParser/X86/x86_instructions.s b/llvm/test/MC/AsmParser/X86/x86_instructions.s index 4bdd171445d..cd7c6e117a7 100644 --- a/llvm/test/MC/AsmParser/X86/x86_instructions.s +++ b/llvm/test/MC/AsmParser/X86/x86_instructions.s @@ -235,3 +235,17 @@ fsubrp fmulp fdivp fdivrp + +// CHECK: fcomi %st(1), %st(0) +// CHECK: fcomi %st(2), %st(0) +// CHECK: fucomi %st(1), %st(0) +// CHECK: fucomi %st(2), %st(0) +// CHECK: fucomi %st(2), %st(0) + +fcomi +fcomi %st(2) +fucomi +fucomi %st(2) +fucomi %st(2), %st + + |

