Lines Matching refs:Def
83 VPValue::VPValue(const unsigned char SC, Value *UV, VPDef *Def) in VPValue() argument
84 : SubclassID(SC), UnderlyingVal(UV), Def(Def) { in VPValue()
85 if (Def) in VPValue()
86 Def->addDefinedValue(this); in VPValue()
91 if (Def) in ~VPValue()
92 Def->removeDefinedValue(this); in ~VPValue()
97 if (const VPRecipeBase *R = dyn_cast_or_null<VPRecipeBase>(Def)) in print()
104 const VPRecipeBase *Instr = dyn_cast_or_null<VPRecipeBase>(this->Def); in dump()
121 return cast_or_null<VPRecipeBase>(Def); in getDefiningRecipe()
125 return cast_or_null<VPRecipeBase>(Def); in getDefiningRecipe()
227 Value *VPTransformState::get(VPValue *Def, const VPIteration &Instance) { in get() argument
228 if (Def->isLiveIn()) in get()
229 return Def->getLiveInIRValue(); in get()
231 if (hasScalarValue(Def, Instance)) { in get()
233 .PerPartScalars[Def][Instance.Part][Instance.Lane.mapToCacheIndex(VF)]; in get()
236 vputils::isUniformAfterVectorization(Def) && in get()
237 hasScalarValue(Def, {Instance.Part, VPLane::getFirstLane()})) { in get()
238 return Data.PerPartScalars[Def][Instance.Part][0]; in get()
241 assert(hasVectorValue(Def, Instance.Part)); in get()
242 auto *VecPart = Data.PerPartOutput[Def][Instance.Part]; in get()
254 Value *VPTransformState::get(VPValue *Def, unsigned Part, bool NeedsScalar) { in get() argument
256 assert((VF.isScalar() || Def->isLiveIn() || hasVectorValue(Def, Part) || in get()
257 !vputils::onlyFirstLaneUsed(Def) || in get()
258 (hasScalarValue(Def, VPIteration(Part, 0)) && in get()
259 Data.PerPartScalars[Def][Part].size() == 1)) && in get()
262 return get(Def, VPIteration(Part, 0)); in get()
266 if (hasVectorValue(Def, Part)) in get()
267 return Data.PerPartOutput[Def][Part]; in get()
269 auto GetBroadcastInstrs = [this, Def](Value *V) { in get()
270 bool SafeToHoist = Def->isDefinedOutsideVectorRegions(); in get()
289 if (!hasScalarValue(Def, {Part, 0})) { in get()
290 assert(Def->isLiveIn() && "expected a live-in"); in get()
292 return get(Def, 0); in get()
293 Value *IRV = Def->getLiveInIRValue(); in get()
295 set(Def, B, Part); in get()
299 Value *ScalarValue = get(Def, {Part, 0}); in get()
303 set(Def, ScalarValue, Part); in get()
307 bool IsUniform = vputils::isUniformAfterVectorization(Def); in get()
311 if (!hasScalarValue(Def, {Part, LastLane})) { in get()
314 assert((isa<VPWidenIntOrFpInductionRecipe>(Def->getDefiningRecipe()) || in get()
315 isa<VPScalarIVStepsRecipe>(Def->getDefiningRecipe()) || in get()
316 isa<VPExpandSCEVRecipe>(Def->getDefiningRecipe())) && in get()
322 auto *LastInst = cast<Instruction>(get(Def, {Part, LastLane})); in get()
342 set(Def, VectorValue, Part); in get()
347 set(Def, Undef, Part); in get()
349 packScalarIntoVectorValue(Def, {Part, Lane}); in get()
350 VectorValue = get(Def, Part); in get()
401 void VPTransformState::packScalarIntoVectorValue(VPValue *Def, in packScalarIntoVectorValue() argument
403 Value *ScalarInst = get(Def, Instance); in packScalarIntoVectorValue()
404 Value *VectorValue = get(Def, Instance.Part); in packScalarIntoVectorValue()
407 set(Def, VectorValue, Instance.Part); in packScalarIntoVectorValue()
529 for (auto *Def : R.definedValues()) in dropAllReferences() local
530 Def->replaceAllUsesWith(NewValue); in dropAllReferences()
1568 for (VPValue *Def : Recipe.definedValues()) in assignNames()
1569 assignName(Def); in assignNames()
1600 bool vputils::onlyFirstLaneUsed(const VPValue *Def) { in onlyFirstLaneUsed() argument
1601 return all_of(Def->users(), in onlyFirstLaneUsed()
1602 [Def](const VPUser *U) { return U->onlyFirstLaneUsed(Def); }); in onlyFirstLaneUsed()
1605 bool vputils::onlyFirstPartUsed(const VPValue *Def) { in onlyFirstPartUsed() argument
1606 return all_of(Def->users(), in onlyFirstPartUsed()
1607 [Def](const VPUser *U) { return U->onlyFirstPartUsed(Def); }); in onlyFirstPartUsed()