summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86FastISel.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2018-09-21 23:14:05 +0000
committerCraig Topper <craig.topper@intel.com>2018-09-21 23:14:05 +0000
commitecdab03d10424f13a3ab12bd5078bea973d1a2e9 (patch)
tree8cc7e3f182f87e51f79d4b5895909fc180a4ed7f /llvm/lib/Target/X86/X86FastISel.cpp
parent969f32d5154de94427e922e265b4ebe3c912facb (diff)
downloadbcm5719-llvm-ecdab03d10424f13a3ab12bd5078bea973d1a2e9.tar.gz
bcm5719-llvm-ecdab03d10424f13a3ab12bd5078bea973d1a2e9.zip
[X86] Teach fast isel to use MOV32ri64 for loading an unsigned 32 immediate into a 64-bit register.
Previously we used SUBREG_TO_REG+MOV32ri. But regular isel was changed recently to use the MOV32ri64 pseudo. Fast isel now does the same. llvm-svn: 342788
Diffstat (limited to 'llvm/lib/Target/X86/X86FastISel.cpp')
-rw-r--r--llvm/lib/Target/X86/X86FastISel.cpp10
1 files changed, 1 insertions, 9 deletions
diff --git a/llvm/lib/Target/X86/X86FastISel.cpp b/llvm/lib/Target/X86/X86FastISel.cpp
index b9a40b55eb8..888c43afd8a 100644
--- a/llvm/lib/Target/X86/X86FastISel.cpp
+++ b/llvm/lib/Target/X86/X86FastISel.cpp
@@ -3744,7 +3744,7 @@ unsigned X86FastISel::X86MaterializeInt(const ConstantInt *CI, MVT VT) {
case MVT::i32: Opc = X86::MOV32ri; break;
case MVT::i64: {
if (isUInt<32>(Imm))
- Opc = X86::MOV32ri;
+ Opc = X86::MOV32ri64;
else if (isInt<32>(Imm))
Opc = X86::MOV64ri32;
else
@@ -3752,14 +3752,6 @@ unsigned X86FastISel::X86MaterializeInt(const ConstantInt *CI, MVT VT) {
break;
}
}
- if (VT == MVT::i64 && Opc == X86::MOV32ri) {
- unsigned SrcReg = fastEmitInst_i(Opc, &X86::GR32RegClass, Imm);
- unsigned ResultReg = createResultReg(&X86::GR64RegClass);
- BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc,
- TII.get(TargetOpcode::SUBREG_TO_REG), ResultReg)
- .addImm(0).addReg(SrcReg).addImm(X86::sub_32bit);
- return ResultReg;
- }
return fastEmitInst_i(Opc, TLI.getRegClassFor(VT), Imm);
}
OpenPOWER on IntegriCloud