@@ -349,8 +349,7 @@ const TargetRegisterClass *AMDGPUDAGToDAGISel::getOperandRegClass(SDNode *N,
349
349
return MRI.getRegClass (Reg);
350
350
}
351
351
352
- const SIRegisterInfo *TRI
353
- = static_cast <const GCNSubtarget *>(Subtarget)->getRegisterInfo ();
352
+ const SIRegisterInfo *TRI = Subtarget->getRegisterInfo ();
354
353
return TRI->getPhysRegBaseClass (Reg);
355
354
}
356
355
@@ -2390,10 +2389,9 @@ bool AMDGPUDAGToDAGISel::isCBranchSCC(const SDNode *N) const {
2390
2389
return true ;
2391
2390
2392
2391
if (VT == MVT::i64 ) {
2393
- const auto *ST = static_cast <const GCNSubtarget *>(Subtarget);
2394
-
2395
2392
ISD::CondCode CC = cast<CondCodeSDNode>(Cond.getOperand (2 ))->get ();
2396
- return (CC == ISD::SETEQ || CC == ISD::SETNE) && ST->hasScalarCompareEq64 ();
2393
+ return (CC == ISD::SETEQ || CC == ISD::SETNE) &&
2394
+ Subtarget->hasScalarCompareEq64 ();
2397
2395
}
2398
2396
2399
2397
return false ;
@@ -2435,8 +2433,7 @@ void AMDGPUDAGToDAGISel::SelectBRCOND(SDNode *N) {
2435
2433
return ;
2436
2434
}
2437
2435
2438
- const GCNSubtarget *ST = static_cast <const GCNSubtarget *>(Subtarget);
2439
- const SIRegisterInfo *TRI = ST->getRegisterInfo ();
2436
+ const SIRegisterInfo *TRI = Subtarget->getRegisterInfo ();
2440
2437
2441
2438
bool UseSCCBr = isCBranchSCC (N) && isUniformBr (N);
2442
2439
bool AndExec = !UseSCCBr;
@@ -2449,7 +2446,7 @@ void AMDGPUDAGToDAGISel::SelectBRCOND(SDNode *N) {
2449
2446
if ((CC == ISD::SETEQ || CC == ISD::SETNE) &&
2450
2447
isNullConstant (Cond->getOperand (1 )) &&
2451
2448
// We may encounter ballot.i64 in wave32 mode on -O0.
2452
- VCMP.getValueType ().getSizeInBits () == ST ->getWavefrontSize ()) {
2449
+ VCMP.getValueType ().getSizeInBits () == Subtarget ->getWavefrontSize ()) {
2453
2450
// %VCMP = i(WaveSize) AMDGPUISD::SETCC ...
2454
2451
// %C = i1 ISD::SETCC %VCMP, 0, setne/seteq
2455
2452
// BRCOND i1 %C, %BB
@@ -2496,14 +2493,15 @@ void AMDGPUDAGToDAGISel::SelectBRCOND(SDNode *N) {
2496
2493
// the S_AND when is unnecessary. But it would be better to add a separate
2497
2494
// pass after SIFixSGPRCopies to do the unnecessary S_AND removal, so it
2498
2495
// catches both cases.
2499
- Cond = SDValue (CurDAG->getMachineNode (ST->isWave32 () ? AMDGPU::S_AND_B32
2500
- : AMDGPU::S_AND_B64,
2501
- SL, MVT::i1,
2502
- CurDAG->getRegister (ST->isWave32 () ? AMDGPU::EXEC_LO
2503
- : AMDGPU::EXEC,
2504
- MVT::i1),
2505
- Cond),
2506
- 0 );
2496
+ Cond = SDValue (
2497
+ CurDAG->getMachineNode (
2498
+ Subtarget->isWave32 () ? AMDGPU::S_AND_B32 : AMDGPU::S_AND_B64, SL,
2499
+ MVT::i1,
2500
+ CurDAG->getRegister (Subtarget->isWave32 () ? AMDGPU::EXEC_LO
2501
+ : AMDGPU::EXEC,
2502
+ MVT::i1),
2503
+ Cond),
2504
+ 0 );
2507
2505
}
2508
2506
2509
2507
SDValue VCC = CurDAG->getCopyToReg (N->getOperand (0 ), SL, CondReg, Cond);
0 commit comments