summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86CodeEmitter.cpp
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2013-05-31 09:57:13 +0000
committerTim Northover <tnorthover@apple.com>2013-05-31 09:57:13 +0000
commitd4736d67f4de568d372cd1341c0d910d2ac21466 (patch)
tree0e32a0c41a531d5fd312d0b90b194a4d0c492f1a /llvm/lib/Target/X86/X86CodeEmitter.cpp
parent737b8801104db556691b11a690e60a337e20a3a9 (diff)
downloadbcm5719-llvm-d4736d67f4de568d372cd1341c0d910d2ac21466.tar.gz
bcm5719-llvm-d4736d67f4de568d372cd1341c0d910d2ac21466.zip
X86: change MOV64ri64i32 into MOV32ri64
The MOV64ri64i32 instruction required hacky MCInst lowering because it was allocated as setting a GR64, but the eventual instruction ("movl") only set a GR32. This converts it into a so-called "MOV32ri64" which still accepts a (appropriate) 64-bit immediate but defines a GR32. This is then converted to the full GR64 by a SUBREG_TO_REG operation, thus keeping everyone happy. llvm-svn: 182991
Diffstat (limited to 'llvm/lib/Target/X86/X86CodeEmitter.cpp')
-rw-r--r--llvm/lib/Target/X86/X86CodeEmitter.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86CodeEmitter.cpp b/llvm/lib/Target/X86/X86CodeEmitter.cpp
index 8fea6edc8d7..c3734a2ee32 100644
--- a/llvm/lib/Target/X86/X86CodeEmitter.cpp
+++ b/llvm/lib/Target/X86/X86CodeEmitter.cpp
@@ -1270,7 +1270,7 @@ void Emitter<CodeEmitter>::emitInstruction(MachineInstr &MI,
unsigned rt = Is64BitMode ? X86::reloc_pcrel_word
: (IsPIC ? X86::reloc_picrel_word : X86::reloc_absolute_word);
- if (Opcode == X86::MOV64ri64i32)
+ if (Opcode == X86::MOV32ri64)
rt = X86::reloc_absolute_word; // FIXME: add X86II flag?
// This should not occur on Darwin for relocatable objects.
if (Opcode == X86::MOV64ri)
OpenPOWER on IntegriCloud