mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 02:33:06 +01:00
[VPlan] Use stored value from recipes for interleave groups.
Instead of getting the VPValue for the stored IR values through the current plan, use the stored value of the recipes directly. This way, the correct VPValues are used if the store recipes have been modified in the VPlan and the IR value is not correct any longer. This can happen, e.g. due to D105008.
This commit is contained in:
parent
6f6b3d4f7a
commit
a0b07d2e54
@ -9390,8 +9390,11 @@ VPlanPtr LoopVectorizationPlanner::buildVPlanWithVPRecipes(
|
||||
RecipeBuilder.getRecipe(IG->getInsertPos()));
|
||||
SmallVector<VPValue *, 4> StoredValues;
|
||||
for (unsigned i = 0; i < IG->getFactor(); ++i)
|
||||
if (auto *SI = dyn_cast_or_null<StoreInst>(IG->getMember(i)))
|
||||
StoredValues.push_back(Plan->getOrAddVPValue(SI->getOperand(0)));
|
||||
if (auto *SI = dyn_cast_or_null<StoreInst>(IG->getMember(i))) {
|
||||
auto *StoreR =
|
||||
cast<VPWidenMemoryInstructionRecipe>(RecipeBuilder.getRecipe(SI));
|
||||
StoredValues.push_back(StoreR->getStoredValue());
|
||||
}
|
||||
|
||||
auto *VPIG = new VPInterleaveRecipe(IG, Recipe->getAddr(), StoredValues,
|
||||
Recipe->getMask());
|
||||
|
Loading…
Reference in New Issue
Block a user