@@ -349,8 +349,7 @@ const TargetRegisterClass *AMDGPUDAGToDAGISel::getOperandRegClass(SDNode *N,
349349 return MRI.getRegClass (Reg);
350350 }
351351
352- const SIRegisterInfo *TRI
353- = static_cast <const GCNSubtarget *>(Subtarget)->getRegisterInfo ();
352+ const SIRegisterInfo *TRI = Subtarget->getRegisterInfo ();
354353 return TRI->getPhysRegBaseClass (Reg);
355354 }
356355
@@ -2390,10 +2389,9 @@ bool AMDGPUDAGToDAGISel::isCBranchSCC(const SDNode *N) const {
23902389 return true ;
23912390
23922391 if (VT == MVT::i64 ) {
2393- const auto *ST = static_cast <const GCNSubtarget *>(Subtarget);
2394-
23952392 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 ();
23972395 }
23982396
23992397 return false ;
@@ -2435,8 +2433,7 @@ void AMDGPUDAGToDAGISel::SelectBRCOND(SDNode *N) {
24352433 return ;
24362434 }
24372435
2438- const GCNSubtarget *ST = static_cast <const GCNSubtarget *>(Subtarget);
2439- const SIRegisterInfo *TRI = ST->getRegisterInfo ();
2436+ const SIRegisterInfo *TRI = Subtarget->getRegisterInfo ();
24402437
24412438 bool UseSCCBr = isCBranchSCC (N) && isUniformBr (N);
24422439 bool AndExec = !UseSCCBr;
@@ -2449,7 +2446,7 @@ void AMDGPUDAGToDAGISel::SelectBRCOND(SDNode *N) {
24492446 if ((CC == ISD::SETEQ || CC == ISD::SETNE) &&
24502447 isNullConstant (Cond->getOperand (1 )) &&
24512448 // We may encounter ballot.i64 in wave32 mode on -O0.
2452- VCMP.getValueType ().getSizeInBits () == ST ->getWavefrontSize ()) {
2449+ VCMP.getValueType ().getSizeInBits () == Subtarget ->getWavefrontSize ()) {
24532450 // %VCMP = i(WaveSize) AMDGPUISD::SETCC ...
24542451 // %C = i1 ISD::SETCC %VCMP, 0, setne/seteq
24552452 // BRCOND i1 %C, %BB
@@ -2496,14 +2493,15 @@ void AMDGPUDAGToDAGISel::SelectBRCOND(SDNode *N) {
24962493 // the S_AND when is unnecessary. But it would be better to add a separate
24972494 // pass after SIFixSGPRCopies to do the unnecessary S_AND removal, so it
24982495 // 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 );
25072505 }
25082506
25092507 SDValue VCC = CurDAG->getCopyToReg (N->getOperand (0 ), SL, CondReg, Cond);
0 commit comments