@@ -7419,9 +7419,7 @@ bool Optimizer::foldPseudoAndOr(G4_BB* bb, INST_LIST_ITER& ii)
7419
7419
}
7420
7420
else
7421
7421
{
7422
- if (/*kernel.getInt32KernelAttr(Attributes::ATTR_Target) != VISA_CM &&*/
7423
- ((builder.getuint32Option(vISA_noMaskWA) & 0x3) > 0 ||
7424
- builder.getOption(vISA_forceNoMaskWA)))
7422
+ if (builder.hasFusedEUNoMaskWA())
7425
7423
{
7426
7424
doNoMaskWA();
7427
7425
}
@@ -7709,16 +7707,17 @@ bool Optimizer::foldPseudoAndOr(G4_BB* bb, INST_LIST_ITER& ii)
7709
7707
{
7710
7708
if (builder.useNewNoMaskWA())
7711
7709
{
7712
- if (builder.hasFusedEUNoMaskWA() &&
7713
- (builder.getJitInfo()->spillMemUsed > 0 || builder.getJitInfo()->numFlagSpillStore > 0))
7710
+ if (builder.hasFusedEUNoMaskWA())
7714
7711
{
7715
7712
newDoNoMaskWA_postRA();
7716
7713
}
7717
7714
}
7718
- else if (builder.hasFusedEUWA() &&
7719
- (builder.getJitInfo()->spillMemUsed > 0 || builder.getJitInfo()->numFlagSpillStore > 0))
7715
+ else
7720
7716
{
7721
- doNoMaskWA_postRA();
7717
+ if (builder.hasFusedEUNoMaskWA())
7718
+ {
7719
+ doNoMaskWA_postRA();
7720
+ }
7722
7721
}
7723
7722
7724
7723
// Ensure the first instruction of a stack function has switch option.
@@ -14071,6 +14070,13 @@ void Optimizer::doNoMaskWA()
14071
14070
//
14072
14071
void Optimizer::newDoNoMaskWA_postRA()
14073
14072
{
14073
+ // If no spill, return after clearing NoMaskInfo
14074
+ if (!(builder.getJitInfo()->spillMemUsed > 0 || builder.getJitInfo()->numFlagSpillStore > 0))
14075
+ {
14076
+ kernel.clearNoMaskInfo();
14077
+ return;
14078
+ }
14079
+
14074
14080
// Utility class to get flag def/use info for a BB
14075
14081
// Each of 16-bit flag has one bit to track whether it is used or defined.
14076
14082
// We have 4 flags, thus 4 bits for use and 4 bits for def.
@@ -14815,6 +14821,13 @@ void Optimizer::newDoNoMaskWA_postRA()
14815
14821
14816
14822
void Optimizer::doNoMaskWA_postRA()
14817
14823
{
14824
+ // If no spill, clear noMaskInfo and return.
14825
+ if (!(builder.getJitInfo()->spillMemUsed > 0 || builder.getJitInfo()->numFlagSpillStore > 0))
14826
+ {
14827
+ kernel.clearNoMaskInfo();
14828
+ return;
14829
+ }
14830
+
14818
14831
std::vector<INST_LIST_ITER> NoMaskCandidates;
14819
14832
G4_ExecSize simdsize = fg.getKernel()->getSimdSize();
14820
14833
0 commit comments