summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86FixupBWInsts.cpp
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2016-05-06 21:07:02 +0000
committerNico Weber <nicolasweber@gmx.de>2016-05-06 21:07:02 +0000
commit9b32b4fbeeb6808ab098d09e964f63fe6c11b706 (patch)
treeed97fdf5f2db07d80d008134d0344a9aee4fa470 /llvm/lib/Target/X86/X86FixupBWInsts.cpp
parent719a864147e0fe6beb145424c8e9958a9ceb23d9 (diff)
downloadbcm5719-llvm-9b32b4fbeeb6808ab098d09e964f63fe6c11b706.tar.gz
bcm5719-llvm-9b32b4fbeeb6808ab098d09e964f63fe6c11b706.zip
Revert r268760, it caused PR27670.
llvm-svn: 268794
Diffstat (limited to 'llvm/lib/Target/X86/X86FixupBWInsts.cpp')
-rw-r--r--llvm/lib/Target/X86/X86FixupBWInsts.cpp53
1 files changed, 0 insertions, 53 deletions
diff --git a/llvm/lib/Target/X86/X86FixupBWInsts.cpp b/llvm/lib/Target/X86/X86FixupBWInsts.cpp
index b4b3de93e39..045a4ed8dca 100644
--- a/llvm/lib/Target/X86/X86FixupBWInsts.cpp
+++ b/llvm/lib/Target/X86/X86FixupBWInsts.cpp
@@ -93,11 +93,6 @@ class FixupBWInstPass : public MachineFunctionPass {
/// OK, otherwise return nullptr.
MachineInstr *tryReplaceLoad(unsigned New32BitOpcode, MachineInstr *MI) const;
- /// Change the MachineInstr \p MI into the equivalent 32-bit copy if it is
- /// safe to do so. Return the replacement instruction if OK, otherwise return
- /// nullptr.
- MachineInstr *tryReplaceCopy(MachineInstr *MI) const;
-
public:
FixupBWInstPass() : MachineFunctionPass(ID) {}
@@ -224,45 +219,6 @@ MachineInstr *FixupBWInstPass::tryReplaceLoad(unsigned New32BitOpcode,
return MIB;
}
-MachineInstr *FixupBWInstPass::tryReplaceCopy(MachineInstr *MI) const {
- assert(MI->getNumExplicitOperands() == 2);
- auto &OldDest = MI->getOperand(0);
- auto &OldSrc = MI->getOperand(1);
-
- unsigned NewDestReg;
- if (!getSuperRegDestIfDead(MI, NewDestReg))
- return nullptr;
-
- unsigned NewSrcReg = getX86SubSuperRegister(OldSrc.getReg(), 32);
-
- // This is only correct if we access the same subregister index: otherwise,
- // we could try to replace "movb %ah, %al" with "movl %eax, %eax".
- auto *TRI = &TII->getRegisterInfo();
- if (TRI->getSubRegIndex(NewSrcReg, OldSrc.getReg()) !=
- TRI->getSubRegIndex(NewDestReg, OldDest.getReg()))
- return nullptr;
-
- // Safe to change the instruction.
- // Don't set src flags, as we don't know if we're also killing the superreg.
- MachineInstrBuilder MIB =
- BuildMI(*MF, MI->getDebugLoc(), TII->get(X86::MOV32rr), NewDestReg)
- .addReg(NewSrcReg);
-
- // Make sure we don't drop implicit operands.
- // We used to imp-def the super, but we don't need to anymore, as we turned
- // it into an explicit def. However, we might still need to imp-def the GR64
- // super-register.
- for (auto &Op : MI->implicit_operands()) {
- if (Op.getReg() == NewDestReg && Op.isDef())
- continue;
- assert((!Op.isDef() || TRI->isSubRegister(Op.getReg(), NewDestReg)) &&
- "Copy imp-defs unrelated reg?");
- MIB.addOperand(Op);
- }
-
- return MIB;
-}
-
void FixupBWInstPass::processBasicBlock(MachineFunction &MF,
MachineBasicBlock &MBB) {
@@ -309,15 +265,6 @@ void FixupBWInstPass::processBasicBlock(MachineFunction &MF,
NewMI = tryReplaceLoad(X86::MOVZX32rm16, MI);
break;
- case X86::MOV8rr:
- case X86::MOV16rr:
- // Always try to replace 8/16 bit copies with a 32 bit copy.
- // Code size is either less (16) or equal (8), and there is sometimes a
- // perf advantage from eliminating a false dependence on the upper portion
- // of the register.
- NewMI = tryReplaceCopy(MI);
- break;
-
default:
// nothing to do here.
break;
OpenPOWER on IntegriCloud