Use new ForceDisassemble flag on the 2-byte forms of INC/DEC for 32-bit mode and...
authorCraig Topper <craig.topper@gmail.com>
Sun, 5 Jan 2014 04:32:42 +0000 (04:32 +0000)
committerCraig Topper <craig.topper@gmail.com>
Sun, 5 Jan 2014 04:32:42 +0000 (04:32 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198544 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86InstrArithmetic.td
utils/TableGen/X86RecognizableInstr.cpp

index fe00b8c787fbf94c5a5b3ffefd85ff6feef92c63..899d9a1cb63bba1a60b03df64067782275d4ec66 100644 (file)
@@ -497,7 +497,8 @@ def DEC64_32r : I<0xFF, MRM1r, (outs GR32:$dst), (ins GR32:$src1),
                 Requires<[In64BitMode]>;
 } // isConvertibleToThreeAddress = 1, CodeSize = 2
 
-let isCodeGenOnly = 1, CodeSize = 2 in {
+let isCodeGenOnly = 1, ForceDisassemble = 1, hasSideEffects = 0,
+    CodeSize = 2 in {
 def INC32_16r : I<0xFF, MRM0r, (outs GR16:$dst), (ins GR16:$src1),
                   "inc{w}\t$dst", [], IIC_UNARY_REG>,
                 OpSize, Requires<[Not64BitMode]>;
@@ -510,7 +511,7 @@ def DEC32_16r : I<0xFF, MRM1r, (outs GR16:$dst), (ins GR16:$src1),
 def DEC32_32r : I<0xFF, MRM1r, (outs GR32:$dst), (ins GR32:$src1),
                   "dec{l}\t$dst", [], IIC_UNARY_REG>,
                 Requires<[Not64BitMode]>;
-} // isCodeGenOnly = 1, CodeSize = 2
+} // isCodeGenOnly = 1, ForceDisassemble = 1, HasSideEffects = 0, CodeSize = 2
 
 } // Constraints = "$src1 = $dst", SchedRW
 
index 2fac3519d2b0102671959c9b2fa4d7c39b6a6522..fffca0fc962ebfe4f921ef5802689cff89c05c0a 100644 (file)
@@ -483,9 +483,7 @@ RecognizableInstr::filter_ret RecognizableInstr::filter() const {
 
   assert(Rec->isSubClassOf("X86Inst") && "Can only filter X86 instructions");
 
-  if (Form == X86Local::Pseudo ||
-      (IsCodeGenOnly && !ForceDisassemble &&
-       Name.find("INC32") == Name.npos && Name.find("DEC32") == Name.npos))
+  if (Form == X86Local::Pseudo || (IsCodeGenOnly && !ForceDisassemble))
     return FILTER_STRONG;