Fix encoding for PUSH64i16. Add In64BitMode Predicate. Remove disassembler hack.
authorCraig Topper <craig.topper@gmail.com>
Sun, 5 Jan 2014 05:46:38 +0000 (05:46 +0000)
committerCraig Topper <craig.topper@gmail.com>
Sun, 5 Jan 2014 05:46:38 +0000 (05:46 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198547 91177308-0d34-0410-b5e6-96231b3b80d8

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

index ef61ea1bd8848546158ea8d15cf51ff857b65a14..707a313f14b6855fccee8ace64c7c6a0a011c5ea 100644 (file)
@@ -915,7 +915,8 @@ def PUSH32rmm: I<0xFF, MRM6m, (outs), (ins i32mem:$src), "push{l}\t$src",[],
 def PUSHi8   : Ii8<0x6a, RawFrm, (outs), (ins i32i8imm:$imm),
                    "push{l}\t$imm", [], IIC_PUSH_IMM>, Requires<[Not64BitMode]>;
 def PUSHi16  : Ii16<0x68, RawFrm, (outs), (ins i16imm:$imm),
-                      "push{w}\t$imm", [], IIC_PUSH_IMM>, OpSize;
+                   "push{w}\t$imm", [], IIC_PUSH_IMM>, OpSize,
+                   Requires<[Not64BitMode]>;
 def PUSHi32  : Ii32<0x68, RawFrm, (outs), (ins i32imm:$imm),
                    "push{l}\t$imm", [], IIC_PUSH_IMM>, Requires<[Not64BitMode]>;
 
@@ -951,7 +952,8 @@ let Defs = [RSP], Uses = [RSP], neverHasSideEffects = 1, mayStore = 1,
 def PUSH64i8   : Ii8<0x6a, RawFrm, (outs), (ins i64i8imm:$imm),
                     "push{q}\t$imm", [], IIC_PUSH_IMM>, Requires<[In64BitMode]>;
 def PUSH64i16  : Ii16<0x68, RawFrm, (outs), (ins i16imm:$imm),
-                      "push{q}\t$imm", [], IIC_PUSH_IMM>;
+                    "push{w}\t$imm", [], IIC_PUSH_IMM>, OpSize,
+                    Requires<[In64BitMode]>;
 def PUSH64i32  : Ii32<0x68, RawFrm, (outs), (ins i64i32imm:$imm),
                     "push{q}\t$imm", [], IIC_PUSH_IMM>, Requires<[In64BitMode]>;
 }
index 8a8e084ad14192e9022a3bde41c1e95c4bf1f0aa..c360d866fa700a6de49fc26de7fcd693baab5fbb 100644 (file)
@@ -509,8 +509,7 @@ RecognizableInstr::filter_ret RecognizableInstr::filter() const {
 
   // Special cases.
 
-  if (Name == "PUSH64i16"         ||
-      Name == "MOVPQI2QImr"       ||
+  if (Name == "MOVPQI2QImr"       ||
       Name == "VMOVPQI2QImr"      ||
       Name == "VMASKMOVDQU64")
     return FILTER_WEAK;