"mov[zs]x (mem), GR16" are not ambiguous: the mem
authorChris Lattner <sabre@nondot.org>
Mon, 1 Nov 2010 05:41:10 +0000 (05:41 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 1 Nov 2010 05:41:10 +0000 (05:41 +0000)
must be 8 bits.  Support this memory form.

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

lib/Target/X86/X86InstrInfo.td
test/MC/X86/x86-64.s

index f5463c0d6ab387ed99376cfe8c2dbccc9e9528a4..114f3d380cc3ce1e4bd2e6802070425a16efefd7 100644 (file)
@@ -1262,6 +1262,9 @@ include "X86InstrCompiler.td"
 def : InstAlias<(outs GR16:$dst), (ins GR8 :$src),
                 "movsx $src, $dst",
                 (MOVSX16rr8W GR16:$dst, GR8:$src)>;
+def : InstAlias<(outs GR16:$dst), (ins i8mem:$src),
+                "movsx $src, $dst",
+                (MOVSX16rm8W GR16:$dst, i8mem:$src)>;
 
 def : InstAlias<(outs GR32:$dst), (ins GR8 :$src),
                 "movsx $src, $dst",
@@ -1284,6 +1287,9 @@ def : InstAlias<(outs GR64:$dst), (ins GR32:$src),
 def : InstAlias<(outs GR16:$dst), (ins GR8 :$src),
                 "movzx $src, $dst",
                 (MOVZX16rr8W GR16:$dst, GR8:$src)>;
+def : InstAlias<(outs GR16:$dst), (ins i8mem:$src),
+                "movzx $src, $dst",
+                (MOVZX16rm8W GR16:$dst, i8mem:$src)>;
 
 def : InstAlias<(outs GR32:$dst), (ins GR8 :$src),
                 "movzx $src, $dst",
index 5cc08441a6d5648ffeeb1956e398e6f3bf43722b..d386facfa19b2f8451f4222759af93638fea501f 100644 (file)
@@ -692,7 +692,13 @@ movzx %bl, %rax
 // CHECK: encoding: [0x48,0x0f,0xb7,0xc1]
 movzx %cx, %rax
 
+// CHECK: movsbw       (%rax), %ax
+// CHECK: encoding: [0x66,0x0f,0xbe,0x00]
+movsx (%rax), %ax
 
+// CHECK: movzbw       (%rax), %ax
+// CHECK: encoding: [0x66,0x0f,0xb6,0x00]
+movzx (%rax), %ax
 
 
 // rdar://7873482