diff --git a/lib/Target/X86/X86InstrInfo.td b/lib/Target/X86/X86InstrInfo.td index f5463c0d6ab..114f3d380cc 100644 --- a/lib/Target/X86/X86InstrInfo.td +++ b/lib/Target/X86/X86InstrInfo.td @@ -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", diff --git a/test/MC/X86/x86-64.s b/test/MC/X86/x86-64.s index 5cc08441a6d..d386facfa19 100644 --- a/test/MC/X86/x86-64.s +++ b/test/MC/X86/x86-64.s @@ -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