diff options
| author | Chris Lattner <sabre@nondot.org> | 2010-09-22 04:56:20 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2010-09-22 04:56:20 +0000 |
| commit | 9dfd2e354e9e7d646077d9cf85eab98f6a674192 (patch) | |
| tree | 5c09cecc7370b1be0068f5f3eddba261004fa85d /llvm | |
| parent | a4ddf7f80232d76ae8cd73d57de3d870868b5012 (diff) | |
| download | bcm5719-llvm-9dfd2e354e9e7d646077d9cf85eab98f6a674192.tar.gz bcm5719-llvm-9dfd2e354e9e7d646077d9cf85eab98f6a674192.zip | |
add the missing aliases for fp stack cmovs, rdar://8456391
llvm-svn: 114531
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | 6 | ||||
| -rw-r--r-- | llvm/test/MC/AsmParser/X86/x86_instructions.s | 17 |
2 files changed, 23 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp index 4fbe7f68e6d..6826223fd8c 100644 --- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -685,6 +685,12 @@ ParseInstruction(StringRef Name, SMLoc NameLoc, .Case("cmovnzq", "cmovneq").Case("cmovnz", "cmovne") .Case("cmovzw", "cmovew") .Case("cmovzl", "cmovel") .Case("cmovzq", "cmoveq") .Case("cmovz", "cmove") + // 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") diff --git a/llvm/test/MC/AsmParser/X86/x86_instructions.s b/llvm/test/MC/AsmParser/X86/x86_instructions.s index a37af85b858..cfea1bde9e3 100644 --- a/llvm/test/MC/AsmParser/X86/x86_instructions.s +++ b/llvm/test/MC/AsmParser/X86/x86_instructions.s @@ -319,3 +319,20 @@ fstp (%eax) // rdar://8456364 // CHECK: movw %cs, %ax mov %CS, %ax + +// rdar://8456391 +fcmovb %st(1), %st(0) // CHECK: fcmovb %st(1), %st(0) +fcmove %st(1), %st(0) // CHECK: fcmove %st(1), %st(0) +fcmovbe %st(1), %st(0) // CHECK: fcmovbe %st(1), %st(0) +fcmovu %st(1), %st(0) // CHECK: fcmovu %st(1), %st(0) + +fcmovnb %st(1), %st(0) // CHECK: fcmovnb %st(1), %st(0) +fcmovne %st(1), %st(0) // CHECK: fcmovne %st(1), %st(0) +fcmovnbe %st(1), %st(0) // CHECK: fcmovnbe %st(1), %st(0) +fcmovnu %st(1), %st(0) // CHECK: fcmovnu %st(1), %st(0) + +fcmovnae %st(1), %st(0) // CHECK: fcmovb %st(1), %st(0) +fcmovna %st(1), %st(0) // CHECK: fcmovbe %st(1), %st(0) + +fcmovae %st(1), %st(0) // CHECK: fcmovnb %st(1), %st(0) +fcmova %st(1), %st(0) // CHECK: fcmovnbe %st(1), %st(0) |

