fix PR8686, accepting a 'b' suffix at the end of all the setcc
authorChris Lattner <sabre@nondot.org>
Sun, 28 Nov 2010 20:23:50 +0000 (20:23 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 28 Nov 2010 20:23:50 +0000 (20:23 +0000)
instructions.  I choose to handle this with an asmparser hack,
though it could be handled by changing all the instruction definitions
to allow be "setneb" instead of "setne".  The asm parser hack is
better in this case, because we want the disassembler to produce
setne, not setneb.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120260 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/AsmParser/X86AsmParser.cpp
test/MC/X86/x86-32.s

index 1b4086b41a81acf29f5c346244b8fcbfa575534e..1064effbbc67cd4d6dbbc8cb28b6d39bff3c8821 100644 (file)
@@ -622,6 +622,11 @@ ParseInstruction(StringRef Name, SMLoc NameLoc,
                  SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
   StringRef PatchedName = Name;
 
+  // FIXME: Hack to recognize setneb as setne.
+  if (PatchedName.startswith("set") && PatchedName.endswith("b") &&
+      PatchedName != "setb" && PatchedName != "setnb")
+    PatchedName = PatchedName.substr(0, Name.size()-1);
+  
   // FIXME: Hack to recognize cmp<comparison code>{ss,sd,ps,pd}.
   const MCExpr *ExtraImmOp = 0;
   if ((PatchedName.startswith("cmp") || PatchedName.startswith("vcmp")) &&
index f4adb5f7bf45dad13172f590ea34acc8e930435d..9ff5accf19476948e3ba63246be3c0060743e259 100644 (file)
@@ -543,7 +543,10 @@ popfl
        setng   %bl
        setnle  %bl
 
-
+// PR8686
+        setneb  %cl // CHECK: setne %cl
+       setcb   %bl // CHECK: setb %bl
+       setnaeb %bl // CHECK: setb %bl
 
 
 // CHECK: lcalll       $31438, $31438