@@ -19576,6 +19576,7 @@ void EmitPass::emitLSCVectorLoad_subDW(LSC_CACHE_OPTS CacheOpts, bool UseA32,
1957619576 finalPredicate = IGC_IS_FLAG_ENABLED(UseVMaskPredicateForLoads) ? GetCombinedVMaskPred(flag) : flag;
1957719577
1957819578 if (inputPredicate && finalPredicate) {
19579+ m_pCtx->EmitError("Predicated load is not expected.", nullptr);
1957919580 IGC_ASSERT_MESSAGE(false, "Not expected scenario. Predicated load should not be used.");
1958019581 m_encoder->And(finalPredicate, finalPredicate, inputPredicate);
1958119582 m_encoder->Push();
@@ -19763,7 +19764,7 @@ void EmitPass::emitLSCVectorLoad(Instruction* inst,
1976319764 eOffset = TruncatePointer(eOffset);
1976419765 }
1976519766
19766- // if the merge value is dead after predicated load and is not immidiate , and
19767+ // if the merge value is dead after predicated load and is not immediate , and
1976719768 // has other properties same as destination -> use it as destination
1976819769 bool isDestReplacedWithMerge = false;
1976919770 CVariable* mergeVar = nullptr;
@@ -19912,6 +19913,7 @@ void EmitPass::emitLSCVectorLoad(Instruction* inst,
1991219913 if(predicatedLoad) {
1991319914 CVariable* cond = GetSymbol(inst->getOperand(2));
1991419915 if (pred) {
19916+ m_pCtx->EmitError("Predicated load is not expected.", inst);
1991519917 IGC_ASSERT_MESSAGE(false, "Not expected scenario. Predicated load should not be used.");
1991619918 m_encoder->And(pred, pred, cond);
1991719919 m_encoder->Push();
@@ -20018,7 +20020,10 @@ void EmitPass::emitLSCVectorStore_subDW(LSC_CACHE_OPTS CacheOpts, bool UseA32,
2001820020 // setPredicateForDiscard used earlier is used only when compiler needs to create the
2001920021 // resource loop, which is never expected for simple LLVM store or PredicatedStore.
2002020022 // Hence, these predicates should never be used together.
20021- IGC_ASSERT_MESSAGE(doUniformStore || flag == nullptr, "Unexpected scenario: resource loop with predicated store!");
20023+ if(!doUniformStore && flag != nullptr) {
20024+ m_pCtx->EmitError("Predicated store is not expected.", nullptr);
20025+ IGC_ASSERT_MESSAGE(false, "Unexpected scenario: resource loop with predicated store!");
20026+ }
2002220027 m_encoder->SetPredicate(GetSymbol(predicate));
2002320028 }
2002420029
@@ -20286,7 +20291,10 @@ void EmitPass::emitLSCVectorStore(Value *Ptr,
2028620291 // setPredicateForDiscard used earlier is used only when compiler needs to create the
2028720292 // resource loop, which is never expected for simple LLVM store or PredicatedStore.
2028820293 // Hence, these predicates should never be used together.
20289- IGC_ASSERT_MESSAGE(flag == nullptr, "Unexpected scenario: resource loop with predicated store!");
20294+ if (flag != nullptr) {
20295+ m_pCtx->EmitError("Predicated store is not expected.", nullptr);
20296+ IGC_ASSERT_MESSAGE(false, "Unexpected scenario: resource loop with predicated store!");
20297+ }
2029020298 m_encoder->SetPredicate(GetSymbol(predicate));
2029120299 }
2029220300
0 commit comments