Changeset View
Changeset View
Standalone View
Standalone View
llvm/lib/Transforms/Vectorize/VPlan.h
Show First 20 Lines • Show All 1,128 Lines • ▼ Show 20 Lines | if (Start) | ||||
addOperand(Start); | addOperand(Start); | ||||
} | } | ||||
public: | public: | ||||
~VPHeaderPHIRecipe() override = default; | ~VPHeaderPHIRecipe() override = default; | ||||
/// Method to support type inquiry through isa, cast, and dyn_cast. | /// Method to support type inquiry through isa, cast, and dyn_cast. | ||||
static inline bool classof(const VPRecipeBase *B) { | static inline bool classof(const VPRecipeBase *B) { | ||||
return B->getVPDefID() == VPRecipeBase::VPCanonicalIVPHISC || | return B->getVPDefID() == VPRecipeBase::VPCanonicalIVPHISC || | ||||
Ayal: Phi-like recipes are kept in order to facilitate checking intervals (and help avoid such missed… | |||||
I'll do that separately. fhahn: I'll do that separately. | |||||
B->getVPDefID() == VPRecipeBase::VPActiveLaneMaskPHISC || | B->getVPDefID() == VPRecipeBase::VPActiveLaneMaskPHISC || | ||||
B->getVPDefID() == VPRecipeBase::VPFirstOrderRecurrencePHISC || | B->getVPDefID() == VPRecipeBase::VPFirstOrderRecurrencePHISC || | ||||
B->getVPDefID() == VPRecipeBase::VPReductionPHISC || | B->getVPDefID() == VPRecipeBase::VPReductionPHISC || | ||||
B->getVPDefID() == VPRecipeBase::VPWidenIntOrFpInductionSC || | B->getVPDefID() == VPRecipeBase::VPWidenIntOrFpInductionSC || | ||||
B->getVPDefID() == VPRecipeBase::VPWidenPointerInductionSC || | |||||
B->getVPDefID() == VPRecipeBase::VPWidenPHISC; | B->getVPDefID() == VPRecipeBase::VPWidenPHISC; | ||||
} | } | ||||
static inline bool classof(const VPValue *V) { | static inline bool classof(const VPValue *V) { | ||||
return V->getVPValueID() == VPValue::VPVCanonicalIVPHISC || | return V->getVPValueID() == VPValue::VPVCanonicalIVPHISC || | ||||
V->getVPValueID() == VPValue::VPVActiveLaneMaskPHISC || | V->getVPValueID() == VPValue::VPVActiveLaneMaskPHISC || | ||||
V->getVPValueID() == VPValue::VPVFirstOrderRecurrencePHISC || | V->getVPValueID() == VPValue::VPVFirstOrderRecurrencePHISC || | ||||
V->getVPValueID() == VPValue::VPVReductionPHISC || | V->getVPValueID() == VPValue::VPVReductionPHISC || | ||||
V->getVPValueID() == VPValue::VPVWidenIntOrFpInductionSC || | V->getVPValueID() == VPValue::VPVWidenIntOrFpInductionSC || | ||||
V->getVPValueID() == VPValue::VPVWidenPointerInductionSC || | |||||
V->getVPValueID() == VPValue::VPVWidenPHISC; | V->getVPValueID() == VPValue::VPVWidenPHISC; | ||||
} | } | ||||
/// Generate the phi nodes. | /// Generate the phi nodes. | ||||
void execute(VPTransformState &State) override = 0; | void execute(VPTransformState &State) override = 0; | ||||
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) | #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) | ||||
/// Print the recipe. | /// Print the recipe. | ||||
▲ Show 20 Lines • Show All 1,909 Lines • Show Last 20 Lines |
Phi-like recipes are kept in order to facilitate checking intervals (and help avoid such missed-case bugs)?