From 4e7f8390c0aada41b820fe47f65b7bde570f53a7 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Thu, 20 May 2010 20:36:29 +0000 Subject: [PATCH] MC/X86: Add movq alias for movabsq, to allow matching 64-bit immediates with movq. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104275 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86Instr64bit.td | 7 +++++++ test/MC/AsmParser/X86/x86_64-new-encoder.s | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/lib/Target/X86/X86Instr64bit.td b/lib/Target/X86/X86Instr64bit.td index 3cbb2f5a8ce..24a1296c163 100644 --- a/lib/Target/X86/X86Instr64bit.td +++ b/lib/Target/X86/X86Instr64bit.td @@ -354,6 +354,13 @@ def MOV64ri32 : RIi32<0xC7, MRM0r, (outs GR64:$dst), (ins i64i32imm:$src), [(set GR64:$dst, i64immSExt32:$src)]>; } +// The assembler accepts movq of a 64-bit immediate as an alternate spelling of +// movabsq. +let isAsmParserOnly = 1 in { +def MOV64ri_alt : RIi64<0xB8, AddRegFrm, (outs GR64:$dst), (ins i64imm:$src), + "mov{q}\t{$src, $dst|$dst, $src}", []>; +} + def MOV64rr_REV : RI<0x8B, MRMSrcReg, (outs GR64:$dst), (ins GR64:$src), "mov{q}\t{$src, $dst|$dst, $src}", []>; diff --git a/test/MC/AsmParser/X86/x86_64-new-encoder.s b/test/MC/AsmParser/X86/x86_64-new-encoder.s index bc8ad21ba72..589c719158f 100644 --- a/test/MC/AsmParser/X86/x86_64-new-encoder.s +++ b/test/MC/AsmParser/X86/x86_64-new-encoder.s @@ -84,3 +84,23 @@ movl 0, %eax // CHECK: movl 0, %eax # encoding: [0x8b,0x04,0x25,A,A,A,A] popf // CHECK: popfq # encoding: [0x9d] popfq + +// CHECK: movabsq $-281474976710654, %rax +// CHECK: encoding: [0x48,0xb8,0x02,0x00,0x00,0x00,0x00,0x00,0xff,0xff] + movabsq $0xFFFF000000000002, %rax + +// CHECK: movq $-281474976710654, %rax +// CHECK: encoding: [0x48,0xb8,0x02,0x00,0x00,0x00,0x00,0x00,0xff,0xff] + movq $0xFFFF000000000002, %rax + +// CHECK: movq $-65536, %rax +// CHECK: encoding: [0x48,0xc7,0xc0,0x00,0x00,0xff,0xff] + movq $0xFFFFFFFFFFFF0000, %rax + +// CHECK: movq $-256, %rax +// CHECK: encoding: [0x48,0xc7,0xc0,0x00,0xff,0xff,0xff] + movq $0xFFFFFFFFFFFFFF00, %rax + +// CHECK: movq $10, %rax +// CHECK: encoding: [0x48,0xc7,0xc0,0x0a,0x00,0x00,0x00] + movq $10, %rax -- 2.34.1