diff options
-rw-r--r-- | lib/Target/X86/AsmParser/X86AsmParser.cpp | 6 | ||||
-rw-r--r-- | test/MC/AsmParser/X86/x86_instructions.s | 17 |
2 files changed, 23 insertions, 0 deletions
diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp index 4fbe7f6..6826223 100644 --- a/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/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/test/MC/AsmParser/X86/x86_instructions.s b/test/MC/AsmParser/X86/x86_instructions.s index a37af85..cfea1bd 100644 --- a/test/MC/AsmParser/X86/x86_instructions.s +++ b/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) |