MC/X86: Add aliases for CMOVcc variants.
authorKevin Enderby <enderby@apple.com>
Mon, 24 May 2010 20:32:23 +0000 (20:32 +0000)
committerKevin Enderby <enderby@apple.com>
Mon, 24 May 2010 20:32:23 +0000 (20:32 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104549 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/AsmParser/X86AsmParser.cpp
test/MC/AsmParser/X86/x86_32-new-encoder.s

index 25ec6ce150cfce18d65bcae5feecc5c7e6d25311..cdfc26bb335eaef20b2dae54e4bb26c485960e78 100644 (file)
@@ -617,6 +617,20 @@ ParseInstruction(const StringRef &Name, SMLoc NameLoc,
     .Case("setnz", "setne")
     .Case("jz", "je")
     .Case("jnz", "jne")
+    .Case("cmovcl", "cmovbl")
+    .Case("cmovcl", "cmovbl")
+    .Case("cmovnal", "cmovbel")
+    .Case("cmovnbl", "cmovael")
+    .Case("cmovnbel", "cmoval")
+    .Case("cmovncl", "cmovael")
+    .Case("cmovngl", "cmovlel")
+    .Case("cmovnl", "cmovgel")
+    .Case("cmovngl", "cmovlel")
+    .Case("cmovngel", "cmovll")
+    .Case("cmovnll", "cmovgel")
+    .Case("cmovnlel", "cmovgl")
+    .Case("cmovnzl", "cmovnel")
+    .Case("cmovzl", "cmovel")
     .Default(Name);
   Operands.push_back(X86Operand::CreateToken(PatchedName, NameLoc));
 
index 9d0fd6d06cb650c2e274b0a918043da8f6427e56..17614e97919e5568ebe1c576a4df2c4a414ae967 100644 (file)
@@ -89,3 +89,132 @@ int $255
 retl
 // CHECK: ret
 // CHECK:  encoding: [0xc3]
+
+// rdar://7973854
+// CHECK: cmoval       %eax, %edx
+// CHECK:  encoding: [0x0f,0x47,0xd0]
+               cmoval  %eax,%edx
+
+// CHECK: cmovael      %eax, %edx
+// CHECK:  encoding: [0x0f,0x43,0xd0]
+               cmovael %eax,%edx
+
+// CHECK: cmovbel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x46,0xd0]
+               cmovbel %eax,%edx
+
+// CHECK: cmovbl       %eax, %edx
+// CHECK:  encoding: [0x0f,0x42,0xd0]
+               cmovbl  %eax,%edx
+
+// CHECK: cmovbel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x46,0xd0]
+               cmovbel %eax,%edx
+
+// CHECK: cmovbl       %eax, %edx
+// CHECK:  encoding: [0x0f,0x42,0xd0]
+               cmovcl  %eax,%edx
+
+// CHECK: cmovel       %eax, %edx
+// CHECK:  encoding: [0x0f,0x44,0xd0]
+               cmovel  %eax,%edx
+
+// CHECK: cmovgl       %eax, %edx
+// CHECK:  encoding: [0x0f,0x4f,0xd0]
+               cmovgl  %eax,%edx
+
+// CHECK: cmovgel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x4d,0xd0]
+               cmovgel %eax,%edx
+
+// CHECK: cmovll       %eax, %edx
+// CHECK:  encoding: [0x0f,0x4c,0xd0]
+               cmovll  %eax,%edx
+
+// CHECK: cmovlel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x4e,0xd0]
+               cmovlel %eax,%edx
+
+// CHECK: cmovbel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x46,0xd0]
+               cmovnal %eax,%edx
+
+// CHECK: cmovnel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x45,0xd0]
+               cmovnel %eax,%edx
+
+// CHECK: cmovael      %eax, %edx
+// CHECK:  encoding: [0x0f,0x43,0xd0]
+               cmovnbl %eax,%edx
+
+// CHECK: cmoval       %eax, %edx
+// CHECK:  encoding: [0x0f,0x47,0xd0]
+               cmovnbel        %eax,%edx
+
+// CHECK: cmovael      %eax, %edx
+// CHECK:  encoding: [0x0f,0x43,0xd0]
+               cmovncl %eax,%edx
+
+// CHECK: cmovnel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x45,0xd0]
+               cmovnel %eax,%edx
+
+// CHECK: cmovlel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x4e,0xd0]
+               cmovngl %eax,%edx
+
+// CHECK: cmovgel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x4d,0xd0]
+               cmovnl  %eax,%edx
+
+// CHECK: cmovnel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x45,0xd0]
+               cmovnel %eax,%edx
+
+// CHECK: cmovlel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x4e,0xd0]
+               cmovngl %eax,%edx
+
+// CHECK: cmovll       %eax, %edx
+// CHECK:  encoding: [0x0f,0x4c,0xd0]
+               cmovngel        %eax,%edx
+
+// CHECK: cmovgel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x4d,0xd0]
+               cmovnll %eax,%edx
+
+// CHECK: cmovgl       %eax, %edx
+// CHECK:  encoding: [0x0f,0x4f,0xd0]
+               cmovnlel        %eax,%edx
+
+// CHECK: cmovnol      %eax, %edx
+// CHECK:  encoding: [0x0f,0x41,0xd0]
+               cmovnol %eax,%edx
+
+// CHECK: cmovnpl      %eax, %edx
+// CHECK:  encoding: [0x0f,0x4b,0xd0]
+               cmovnpl %eax,%edx
+
+// CHECK: cmovnsl      %eax, %edx
+// CHECK:  encoding: [0x0f,0x49,0xd0]
+               cmovnsl %eax,%edx
+
+// CHECK: cmovnel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x45,0xd0]
+               cmovnzl %eax,%edx
+
+// CHECK: cmovol       %eax, %edx
+// CHECK:  encoding: [0x0f,0x40,0xd0]
+               cmovol  %eax,%edx
+
+// CHECK: cmovpl       %eax, %edx
+// CHECK:  encoding: [0x0f,0x4a,0xd0]
+               cmovpl  %eax,%edx
+
+// CHECK: cmovsl       %eax, %edx
+// CHECK:  encoding: [0x0f,0x48,0xd0]
+               cmovsl  %eax,%edx
+
+// CHECK: cmovel       %eax, %edx
+// CHECK:  encoding: [0x0f,0x44,0xd0]
+               cmovzl  %eax,%edx