Mark MOVZX32_NOREX as isCodeGenOnly and neverHasSideEffects. The isCodeGenOnly change...
authorCraig Topper <craig.topper@gmail.com>
Mon, 30 Jul 2012 06:48:11 +0000 (06:48 +0000)
committerCraig Topper <craig.topper@gmail.com>
Mon, 30 Jul 2012 06:48:11 +0000 (06:48 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160951 91177308-0d34-0410-b5e6-96231b3b80d8

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

index 0d5490ad9cc1f3b4dc568456112d89d651816309..776667177d4d06a305d04c5cbc8717f66d228270 100644 (file)
@@ -82,6 +82,7 @@ def MOVZX32rm16: I<0xB7, MRMSrcMem, (outs GR32:$dst), (ins i16mem:$src),
 // These are the same as the regular MOVZX32rr8 and MOVZX32rm8
 // except that they use GR32_NOREX for the output operand register class
 // instead of GR32. This allows them to operate on h registers on x86-64.
+let neverHasSideEffects = 1, isCodeGenOnly = 1 in {
 def MOVZX32_NOREXrr8 : I<0xB6, MRMSrcReg,
                          (outs GR32_NOREX:$dst), (ins GR8_NOREX:$src),
                          "movz{bl|x}\t{$src, $dst|$dst, $src}",
@@ -91,6 +92,7 @@ def MOVZX32_NOREXrm8 : I<0xB6, MRMSrcMem,
                          (outs GR32_NOREX:$dst), (ins i8mem_NOREX:$src),
                          "movz{bl|x}\t{$src, $dst|$dst, $src}",
                          [], IIC_MOVZX>, TB;
+}
 
 // MOVSX64rr8 always has a REX prefix and it has an 8-bit register
 // operand, which makes it a rare instruction with an 8-bit register
index 12ad0f21253649d4b8cf12b231cbd434606398f6..7ac2336d73216b9141df56680b705b2c6fd5288b 100644 (file)
@@ -405,8 +405,7 @@ RecognizableInstr::filter_ret RecognizableInstr::filter() const {
   // printed as a separate "instruction".
 
   if (Name.find("_Int") != Name.npos       ||
-      Name.find("Int_") != Name.npos       ||
-      Name.find("_NOREX") != Name.npos)
+      Name.find("Int_") != Name.npos)
     return FILTER_STRONG;
 
   // Filter out instructions with segment override prefixes.