From acc473fcf9860567d4da60625944d48b075d28f8 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 1 Nov 2010 05:41:10 +0000 Subject: [PATCH] "mov[zs]x (mem), GR16" are not ambiguous: the mem 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 | 6 ++++++ test/MC/X86/x86-64.s | 6 ++++++ 2 files changed, 12 insertions(+) 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