@@ -125,7 +125,6 @@ STATISTIC(NumConverted, "Number of ccmp instructions created");
125
125
namespace {
126
126
class SSACCmpConv {
127
127
MachineFunction *MF;
128
- const X86Subtarget *STI;
129
128
const TargetInstrInfo *TII;
130
129
const TargetRegisterInfo *TRI;
131
130
MachineRegisterInfo *MRI;
@@ -181,7 +180,6 @@ class SSACCmpConv {
181
180
const MachineBranchProbabilityInfo *MBPI) {
182
181
this ->MF = &MF;
183
182
this ->MBPI = MBPI;
184
- STI = &MF.getSubtarget <X86Subtarget>();
185
183
TII = MF.getSubtarget ().getInstrInfo ();
186
184
TRI = MF.getSubtarget ().getRegisterInfo ();
187
185
MRI = &MF.getRegInfo ();
@@ -200,14 +198,12 @@ class SSACCmpConv {
200
198
// Check that all PHIs in Tail are selecting the same value from Head and CmpBB.
201
199
// This means that no if-conversion is required when merging CmpBB into Head.
202
200
bool SSACCmpConv::trivialTailPHIs () {
203
- for (auto &I : *Tail) {
204
- if (!I.isPHI ())
205
- break ;
201
+ for (auto &I : Tail->phis ()) {
206
202
unsigned HeadReg = 0 , CmpBBReg = 0 ;
207
203
// PHI operands come in (VReg, MBB) pairs.
208
- for (unsigned oi = 1 , oe = I.getNumOperands (); oi != oe; oi += 2 ) {
209
- MachineBasicBlock *MBB = I.getOperand (oi + 1 ).getMBB ();
210
- Register Reg = I.getOperand (oi ).getReg ();
204
+ for (unsigned Idx = 1 , End = I.getNumOperands (); Idx != End; Idx += 2 ) {
205
+ MachineBasicBlock *MBB = I.getOperand (Idx + 1 ).getMBB ();
206
+ Register Reg = I.getOperand (Idx ).getReg ();
211
207
if (MBB == Head) {
212
208
assert ((!HeadReg || HeadReg == Reg) && " Inconsistent PHI operands" );
213
209
HeadReg = Reg;
@@ -226,9 +222,7 @@ bool SSACCmpConv::trivialTailPHIs() {
226
222
// Assuming that trivialTailPHIs() is true, update the Tail PHIs by simply
227
223
// removing the CmpBB operands. The Head operands will be identical.
228
224
void SSACCmpConv::updateTailPHIs () {
229
- for (auto &I : *Tail) {
230
- if (!I.isPHI ())
231
- break ;
225
+ for (auto &I : Tail->phis ()) {
232
226
// I is a PHI. It can have multiple entries for CmpBB.
233
227
for (unsigned Idx = I.getNumOperands (); Idx > 2 ; Idx -= 2 ) {
234
228
// PHI operands are (Reg, MBB) at (Idx-2, Idx-1).
@@ -285,7 +279,7 @@ MachineInstr *SSACCmpConv::findConvertibleCompare(MachineBasicBlock *MBB) {
285
279
case X86::SUB64ri32_ND: {
286
280
if (!isDeadDef (I->getOperand (0 ).getReg ()))
287
281
return nullptr ;
288
- return STI-> hasCCMP () ? &*I : nullptr ;
282
+ return &*I;
289
283
}
290
284
case X86::CMP8rr:
291
285
case X86::CMP16rr:
@@ -303,7 +297,7 @@ MachineInstr *SSACCmpConv::findConvertibleCompare(MachineBasicBlock *MBB) {
303
297
case X86::TEST16ri:
304
298
case X86::TEST32ri:
305
299
case X86::TEST64ri32:
306
- return STI-> hasCCMP () ? &*I : nullptr ;
300
+ return &*I;
307
301
default :
308
302
break ;
309
303
}
0 commit comments