@@ -7419,9 +7419,7 @@ bool Optimizer::foldPseudoAndOr(G4_BB* bb, INST_LIST_ITER& ii)
74197419 }
74207420 else
74217421 {
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())
74257423 {
74267424 doNoMaskWA();
74277425 }
@@ -7709,16 +7707,17 @@ bool Optimizer::foldPseudoAndOr(G4_BB* bb, INST_LIST_ITER& ii)
77097707 {
77107708 if (builder.useNewNoMaskWA())
77117709 {
7712- if (builder.hasFusedEUNoMaskWA() &&
7713- (builder.getJitInfo()->spillMemUsed > 0 || builder.getJitInfo()->numFlagSpillStore > 0))
7710+ if (builder.hasFusedEUNoMaskWA())
77147711 {
77157712 newDoNoMaskWA_postRA();
77167713 }
77177714 }
7718- else if (builder.hasFusedEUWA() &&
7719- (builder.getJitInfo()->spillMemUsed > 0 || builder.getJitInfo()->numFlagSpillStore > 0))
7715+ else
77207716 {
7721- doNoMaskWA_postRA();
7717+ if (builder.hasFusedEUNoMaskWA())
7718+ {
7719+ doNoMaskWA_postRA();
7720+ }
77227721 }
77237722
77247723 // Ensure the first instruction of a stack function has switch option.
@@ -14071,6 +14070,13 @@ void Optimizer::doNoMaskWA()
1407114070//
1407214071void Optimizer::newDoNoMaskWA_postRA()
1407314072{
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+
1407414080 // Utility class to get flag def/use info for a BB
1407514081 // Each of 16-bit flag has one bit to track whether it is used or defined.
1407614082 // We have 4 flags, thus 4 bits for use and 4 bits for def.
@@ -14815,6 +14821,13 @@ void Optimizer::newDoNoMaskWA_postRA()
1481514821
1481614822void Optimizer::doNoMaskWA_postRA()
1481714823{
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+
1481814831 std::vector<INST_LIST_ITER> NoMaskCandidates;
1481914832 G4_ExecSize simdsize = fg.getKernel()->getSimdSize();
1482014833
0 commit comments