@@ -1468,13 +1468,7 @@ static bool checkForRightSrcRootAccess(MachineInstr *Def0MI,
1468
1468
MachineOperand *Def0Src1 =
1469
1469
TII->getNamedOperand (*Def0MI, AMDGPU::OpName::src1);
1470
1470
1471
- if (Def1Src0 && Def1Src0->isReg () && (Def1Src0->getReg () == SrcRootReg)) {
1472
- MachineOperand *Def1Src0Sel =
1473
- TII->getNamedOperand (*Def1MI, AMDGPU::OpName::src0_sel);
1474
- if (!Def1Src0Sel ||
1475
- (Def1Src0Sel->getImm () != AMDGPU::SDWA::SdwaSel::WORD_1))
1476
- return false ;
1477
-
1471
+ auto chkForDef0MIAccess = [&]() -> bool {
1478
1472
if (Def0Src0 && Def0Src0->isReg () && (Def0Src0->getReg () == SrcRootReg)) {
1479
1473
MachineOperand *Def0Src0Sel =
1480
1474
TII->getNamedOperand (*Def0MI, AMDGPU::OpName::src0_sel);
@@ -1492,6 +1486,19 @@ static bool checkForRightSrcRootAccess(MachineInstr *Def0MI,
1492
1486
if (Def0Src1Sel && Def0Src1Sel->getImm () == AMDGPU::SDWA::SdwaSel::WORD_0)
1493
1487
return true ;
1494
1488
}
1489
+
1490
+ return false ;
1491
+ };
1492
+
1493
+ if (Def1Src0 && Def1Src0->isReg () && (Def1Src0->getReg () == SrcRootReg)) {
1494
+ MachineOperand *Def1Src0Sel =
1495
+ TII->getNamedOperand (*Def1MI, AMDGPU::OpName::src0_sel);
1496
+ if (!Def1Src0Sel ||
1497
+ (Def1Src0Sel->getImm () != AMDGPU::SDWA::SdwaSel::WORD_1))
1498
+ return false ;
1499
+
1500
+ if (chkForDef0MIAccess ())
1501
+ return true ;
1495
1502
}
1496
1503
1497
1504
if (Def1Src1 && Def1Src1->isReg () && (Def1Src1->getReg () == SrcRootReg)) {
@@ -1501,23 +1508,8 @@ static bool checkForRightSrcRootAccess(MachineInstr *Def0MI,
1501
1508
(Def1Src1Sel->getImm () != AMDGPU::SDWA::SdwaSel::WORD_1))
1502
1509
return false ;
1503
1510
1504
- if (Def0Src0 && Def0Src0->isReg () && (Def0Src0->getReg () == SrcRootReg)) {
1505
- MachineOperand *Def0Src0Sel =
1506
- TII->getNamedOperand (*Def0MI, AMDGPU::OpName::src0_sel);
1507
- if (!Def0Src0Sel)
1508
- return true ;
1509
- if (Def0Src0Sel && Def0Src0Sel->getImm () == AMDGPU::SDWA::SdwaSel::WORD_0)
1510
- return true ;
1511
- }
1512
-
1513
- if (Def0Src1 && Def0Src1->isReg () && (Def0Src1->getReg () == SrcRootReg)) {
1514
- MachineOperand *Def0Src1Sel =
1515
- TII->getNamedOperand (*Def0MI, AMDGPU::OpName::src1_sel);
1516
- if (!Def0Src1Sel)
1517
- return true ;
1518
- if (Def0Src1Sel && Def0Src1Sel->getImm () == AMDGPU::SDWA::SdwaSel::WORD_0)
1519
- return true ;
1520
- }
1511
+ if (chkForDef0MIAccess ())
1512
+ return true ;
1521
1513
}
1522
1514
1523
1515
return false ;
0 commit comments