summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-09-22 04:56:20 +0000
committerChris Lattner <sabre@nondot.org>2010-09-22 04:56:20 +0000
commit9dfd2e354e9e7d646077d9cf85eab98f6a674192 (patch)
tree5c09cecc7370b1be0068f5f3eddba261004fa85d /llvm
parenta4ddf7f80232d76ae8cd73d57de3d870868b5012 (diff)
downloadbcm5719-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.cpp6
-rw-r--r--llvm/test/MC/AsmParser/X86/x86_instructions.s17
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)
OpenPOWER on IntegriCloud