@@ -1170,7 +1170,7 @@ bool GCNHazardRecognizer::fixVMEMtoScalarWriteHazards(MachineInstr *MI) {
1170
1170
(MI.getOpcode () == AMDGPU::S_WAITCNT &&
1171
1171
!MI.getOperand (0 ).getImm ()) ||
1172
1172
(MI.getOpcode () == AMDGPU::S_WAITCNT_DEPCTR &&
1173
- MI.getOperand (0 ).getImm () == 0xffe3 );
1173
+ AMDGPU::DepCtr::decodeFieldVmVsrc ( MI.getOperand (0 ).getImm ()) == 0 );
1174
1174
};
1175
1175
1176
1176
if (::getWaitStatesSince (IsHazardFn, MI, IsExpiredFn) ==
@@ -1180,7 +1180,7 @@ bool GCNHazardRecognizer::fixVMEMtoScalarWriteHazards(MachineInstr *MI) {
1180
1180
const SIInstrInfo *TII = ST.getInstrInfo ();
1181
1181
BuildMI (*MI->getParent (), MI, MI->getDebugLoc (),
1182
1182
TII->get (AMDGPU::S_WAITCNT_DEPCTR))
1183
- .addImm (0xffe3 );
1183
+ .addImm (AMDGPU::DepCtr::encodeFieldVmVsrc ( 0 ) );
1184
1184
return true ;
1185
1185
}
1186
1186
@@ -1293,7 +1293,8 @@ bool GCNHazardRecognizer::fixVcmpxExecWARHazard(MachineInstr *MI) {
1293
1293
return true ;
1294
1294
}
1295
1295
if (MI.getOpcode () == AMDGPU::S_WAITCNT_DEPCTR &&
1296
- (MI.getOperand (0 ).getImm () & 0xfffe ) == 0xfffe )
1296
+ AMDGPU::DepCtr::encodeFieldSaSdst (MI.getOperand (0 ).getImm (), 0 ) ==
1297
+ 0xfffe )
1297
1298
return true ;
1298
1299
return false ;
1299
1300
};
@@ -1304,7 +1305,7 @@ bool GCNHazardRecognizer::fixVcmpxExecWARHazard(MachineInstr *MI) {
1304
1305
1305
1306
BuildMI (*MI->getParent (), MI, MI->getDebugLoc (),
1306
1307
TII->get (AMDGPU::S_WAITCNT_DEPCTR))
1307
- .addImm (0xfffe );
1308
+ .addImm (AMDGPU::DepCtr::encodeFieldSaSdst ( 0 ) );
1308
1309
return true ;
1309
1310
}
1310
1311
@@ -1452,7 +1453,7 @@ bool GCNHazardRecognizer::fixLdsDirectVMEMHazard(MachineInstr *MI) {
1452
1453
return SIInstrInfo::isVALU (I) || SIInstrInfo::isEXP (I) ||
1453
1454
(I.getOpcode () == AMDGPU::S_WAITCNT && !I.getOperand (0 ).getImm ()) ||
1454
1455
(I.getOpcode () == AMDGPU::S_WAITCNT_DEPCTR &&
1455
- I.getOperand (0 ).getImm () == 0xffe3 );
1456
+ AMDGPU::DepCtr::decodeFieldVmVsrc ( I.getOperand (0 ).getImm ()) == 0 );
1456
1457
};
1457
1458
1458
1459
if (::getWaitStatesSince (IsHazardFn, MI, IsExpiredFn) ==
@@ -1461,7 +1462,7 @@ bool GCNHazardRecognizer::fixLdsDirectVMEMHazard(MachineInstr *MI) {
1461
1462
1462
1463
BuildMI (*MI->getParent (), MI, MI->getDebugLoc (),
1463
1464
TII.get (AMDGPU::S_WAITCNT_DEPCTR))
1464
- .addImm (0xffe3 );
1465
+ .addImm (AMDGPU::DepCtr::encodeFieldVmVsrc ( 0 ) );
1465
1466
1466
1467
return true ;
1467
1468
}
@@ -1523,7 +1524,7 @@ bool GCNHazardRecognizer::fixVALUPartialForwardingHazard(MachineInstr *MI) {
1523
1524
if (SIInstrInfo::isVMEM (I) || SIInstrInfo::isFLAT (I) ||
1524
1525
SIInstrInfo::isDS (I) || SIInstrInfo::isEXP (I) ||
1525
1526
(I.getOpcode () == AMDGPU::S_WAITCNT_DEPCTR &&
1526
- I.getOperand (0 ).getImm () == 0x0fff ))
1527
+ AMDGPU::DepCtr::decodeFieldVaVdst ( I.getOperand (0 ).getImm ()) == 0 ))
1527
1528
return HazardExpired;
1528
1529
1529
1530
// Track registers writes
@@ -1685,10 +1686,10 @@ bool GCNHazardRecognizer::fixVALUTransUseHazard(MachineInstr *MI) {
1685
1686
return false ;
1686
1687
1687
1688
// Hazard is observed - insert a wait on va_dst counter to ensure hazard is
1688
- // avoided (mask 0x0fff achieves this) .
1689
+ // avoided.
1689
1690
BuildMI (*MI->getParent (), MI, MI->getDebugLoc (),
1690
1691
TII.get (AMDGPU::S_WAITCNT_DEPCTR))
1691
- .addImm (0x0fff );
1692
+ .addImm (AMDGPU::DepCtr::encodeFieldVaVdst ( 0 ) );
1692
1693
1693
1694
return true ;
1694
1695
}
@@ -2779,7 +2780,7 @@ bool GCNHazardRecognizer::fixVALUMaskWriteHazard(MachineInstr *MI) {
2779
2780
auto IsExpiredFn = [&MRI, this ](const MachineInstr &I, int ) {
2780
2781
// s_waitcnt_depctr sa_sdst(0) mitigates hazard.
2781
2782
if (I.getOpcode () == AMDGPU::S_WAITCNT_DEPCTR &&
2782
- ! (I.getOperand (0 ).getImm () & 0x1 ) )
2783
+ AMDGPU::DepCtr::decodeFieldSaSdst (I.getOperand (0 ).getImm ()) == 0 )
2783
2784
return true ;
2784
2785
2785
2786
// VALU access to any SGPR or literal constant other than HazardReg
@@ -2829,7 +2830,7 @@ bool GCNHazardRecognizer::fixVALUMaskWriteHazard(MachineInstr *MI) {
2829
2830
// Add s_waitcnt_depctr sa_sdst(0) after SALU write.
2830
2831
BuildMI (*MI->getParent (), NextMI, MI->getDebugLoc (),
2831
2832
TII.get (AMDGPU::S_WAITCNT_DEPCTR))
2832
- .addImm (0xfffe );
2833
+ .addImm (AMDGPU::DepCtr::encodeFieldSaSdst ( 0 ) );
2833
2834
2834
2835
// SALU write may be s_getpc in a bundle.
2835
2836
if (MI->getOpcode () == AMDGPU::S_GETPC_B64) {
0 commit comments