diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2016-07-27 13:24:16 +0000 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2016-07-27 13:24:16 +0000 |
commit | e5a22f44b83a1802efe699590471126cc4206e12 (patch) | |
tree | 7f7891dfc02380a2b504c8229f9fa9fa0764c270 /llvm/lib/Target/PowerPC/PPCVSXFMAMutate.cpp | |
parent | 79a947c2336c9cf12a588844d39422c9aa0a5658 (diff) | |
download | bcm5719-llvm-e5a22f44b83a1802efe699590471126cc4206e12.tar.gz bcm5719-llvm-e5a22f44b83a1802efe699590471126cc4206e12.zip |
PowerPC: Avoid implicit iterator conversions, NFC
Avoid implicit conversions from MachineInstrBundleIterator to
MachineInstr* in the PowerPC backend, mainly by preferring MachineInstr&
over MachineInstr* when a pointer isn't nullable and using range-based
for loops.
There was one piece of questionable code in PPCInstrInfo::AnalyzeBranch,
where a condition checked a pointer converted from an iterator for
nullptr. Since this case is impossible (moreover, the code above
guarantees that the iterator is valid), I removed the check when I
changed the pointer to a reference.
Despite that case, there should be no functionality change here.
llvm-svn: 276864
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCVSXFMAMutate.cpp')
-rw-r--r-- | llvm/lib/Target/PowerPC/PPCVSXFMAMutate.cpp | 74 |
1 files changed, 37 insertions, 37 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCVSXFMAMutate.cpp b/llvm/lib/Target/PowerPC/PPCVSXFMAMutate.cpp index 7c22cb22bfa..abaf632d50a 100644 --- a/llvm/lib/Target/PowerPC/PPCVSXFMAMutate.cpp +++ b/llvm/lib/Target/PowerPC/PPCVSXFMAMutate.cpp @@ -74,7 +74,7 @@ protected: const TargetRegisterInfo *TRI = &TII->getRegisterInfo(); for (MachineBasicBlock::iterator I = MBB.begin(), IE = MBB.end(); I != IE; ++I) { - MachineInstr *MI = I; + MachineInstr &MI = *I; // The default (A-type) VSX FMA form kills the addend (it is taken from // the target register, which is then updated to reflect the result of @@ -82,7 +82,7 @@ protected: // used for the product, then we can use the M-form instruction (which // will take that value from the to-be-defined register). - int AltOpc = PPC::getAltVSXFMAOpcode(MI->getOpcode()); + int AltOpc = PPC::getAltVSXFMAOpcode(MI.getOpcode()); if (AltOpc == -1) continue; @@ -105,10 +105,10 @@ protected: // %RM<imp-use>; VSLRC:%vreg16,%vreg18,%vreg9 // and we remove: %vreg5<def> = COPY %vreg9; VSLRC:%vreg5,%vreg9 - SlotIndex FMAIdx = LIS->getInstructionIndex(*MI); + SlotIndex FMAIdx = LIS->getInstructionIndex(MI); VNInfo *AddendValNo = - LIS->getInterval(MI->getOperand(1).getReg()).Query(FMAIdx).valueIn(); + LIS->getInterval(MI.getOperand(1).getReg()).Query(FMAIdx).valueIn(); // This can be null if the register is undef. if (!AddendValNo) @@ -118,7 +118,7 @@ protected: // The addend and this instruction must be in the same block. - if (!AddendMI || AddendMI->getParent() != MI->getParent()) + if (!AddendMI || AddendMI->getParent() != MI.getParent()) continue; // The addend must be a full copy within the same register class. @@ -182,12 +182,12 @@ protected: // %vreg5 = A-form-op %vreg5, %vreg5, %vreg11; // where vreg5 and vreg11 are both kills. This case would be skipped // otherwise. - unsigned OldFMAReg = MI->getOperand(0).getReg(); + unsigned OldFMAReg = MI.getOperand(0).getReg(); // Find one of the product operands that is killed by this instruction. unsigned KilledProdOp = 0, OtherProdOp = 0; - unsigned Reg2 = MI->getOperand(2).getReg(); - unsigned Reg3 = MI->getOperand(3).getReg(); + unsigned Reg2 = MI.getOperand(2).getReg(); + unsigned Reg3 = MI.getOperand(3).getReg(); if (LIS->getInterval(Reg2).Query(FMAIdx).isKill() && Reg2 != OldFMAReg) { KilledProdOp = 2; @@ -214,20 +214,20 @@ protected: // Transform: (O2 * O3) + O1 -> (O2 * O1) + O3. - unsigned KilledProdReg = MI->getOperand(KilledProdOp).getReg(); - unsigned OtherProdReg = MI->getOperand(OtherProdOp).getReg(); + unsigned KilledProdReg = MI.getOperand(KilledProdOp).getReg(); + unsigned OtherProdReg = MI.getOperand(OtherProdOp).getReg(); unsigned AddSubReg = AddendMI->getOperand(1).getSubReg(); - unsigned KilledProdSubReg = MI->getOperand(KilledProdOp).getSubReg(); - unsigned OtherProdSubReg = MI->getOperand(OtherProdOp).getSubReg(); + unsigned KilledProdSubReg = MI.getOperand(KilledProdOp).getSubReg(); + unsigned OtherProdSubReg = MI.getOperand(OtherProdOp).getSubReg(); bool AddRegKill = AddendMI->getOperand(1).isKill(); - bool KilledProdRegKill = MI->getOperand(KilledProdOp).isKill(); - bool OtherProdRegKill = MI->getOperand(OtherProdOp).isKill(); + bool KilledProdRegKill = MI.getOperand(KilledProdOp).isKill(); + bool OtherProdRegKill = MI.getOperand(OtherProdOp).isKill(); bool AddRegUndef = AddendMI->getOperand(1).isUndef(); - bool KilledProdRegUndef = MI->getOperand(KilledProdOp).isUndef(); - bool OtherProdRegUndef = MI->getOperand(OtherProdOp).isUndef(); + bool KilledProdRegUndef = MI.getOperand(KilledProdOp).isUndef(); + bool OtherProdRegUndef = MI.getOperand(OtherProdOp).isUndef(); // If there isn't a class that fits, we can't perform the transform. // This is needed for correctness with a mixture of VSX and Altivec @@ -240,39 +240,39 @@ protected: assert(OldFMAReg == AddendMI->getOperand(0).getReg() && "Addend copy not tied to old FMA output!"); - DEBUG(dbgs() << "VSX FMA Mutation:\n " << *MI;); + DEBUG(dbgs() << "VSX FMA Mutation:\n " << MI); - MI->getOperand(0).setReg(KilledProdReg); - MI->getOperand(1).setReg(KilledProdReg); - MI->getOperand(3).setReg(AddendSrcReg); + MI.getOperand(0).setReg(KilledProdReg); + MI.getOperand(1).setReg(KilledProdReg); + MI.getOperand(3).setReg(AddendSrcReg); - MI->getOperand(0).setSubReg(KilledProdSubReg); - MI->getOperand(1).setSubReg(KilledProdSubReg); - MI->getOperand(3).setSubReg(AddSubReg); + MI.getOperand(0).setSubReg(KilledProdSubReg); + MI.getOperand(1).setSubReg(KilledProdSubReg); + MI.getOperand(3).setSubReg(AddSubReg); - MI->getOperand(1).setIsKill(KilledProdRegKill); - MI->getOperand(3).setIsKill(AddRegKill); + MI.getOperand(1).setIsKill(KilledProdRegKill); + MI.getOperand(3).setIsKill(AddRegKill); - MI->getOperand(1).setIsUndef(KilledProdRegUndef); - MI->getOperand(3).setIsUndef(AddRegUndef); + MI.getOperand(1).setIsUndef(KilledProdRegUndef); + MI.getOperand(3).setIsUndef(AddRegUndef); - MI->setDesc(TII->get(AltOpc)); + MI.setDesc(TII->get(AltOpc)); // If the addend is also a multiplicand, replace it with the addend // source in both places. if (OtherProdReg == AddendMI->getOperand(0).getReg()) { - MI->getOperand(2).setReg(AddendSrcReg); - MI->getOperand(2).setSubReg(AddSubReg); - MI->getOperand(2).setIsKill(AddRegKill); - MI->getOperand(2).setIsUndef(AddRegUndef); + MI.getOperand(2).setReg(AddendSrcReg); + MI.getOperand(2).setSubReg(AddSubReg); + MI.getOperand(2).setIsKill(AddRegKill); + MI.getOperand(2).setIsUndef(AddRegUndef); } else { - MI->getOperand(2).setReg(OtherProdReg); - MI->getOperand(2).setSubReg(OtherProdSubReg); - MI->getOperand(2).setIsKill(OtherProdRegKill); - MI->getOperand(2).setIsUndef(OtherProdRegUndef); + MI.getOperand(2).setReg(OtherProdReg); + MI.getOperand(2).setSubReg(OtherProdSubReg); + MI.getOperand(2).setIsKill(OtherProdRegKill); + MI.getOperand(2).setIsUndef(OtherProdRegUndef); } - DEBUG(dbgs() << " -> " << *MI); + DEBUG(dbgs() << " -> " << MI); // The killed product operand was killed here, so we can reuse it now // for the result of the fma. |