@@ -630,6 +630,10 @@ class TargetTransformInfo {
630630 AssumptionCache &AC, TargetLibraryInfo *LibInfo,
631631 HardwareLoopInfo &HWLoopInfo) const ;
632632
633+ // Query the target for which minimum vectorization factor epilogue
634+ // vectorization should be considered.
635+ unsigned getEpilogueVectorizationMinVF () const ;
636+
633637 // / Query the target whether it would be prefered to create a predicated
634638 // / vector loop, which can avoid the need to emit a scalar epilogue loop.
635639 bool preferPredicateOverEpilogue (TailFoldingInfo *TFI) const ;
@@ -1912,6 +1916,7 @@ class TargetTransformInfo::Concept {
19121916 AssumptionCache &AC,
19131917 TargetLibraryInfo *LibInfo,
19141918 HardwareLoopInfo &HWLoopInfo) = 0;
1919+ virtual unsigned getEpilogueVectorizationMinVF () = 0;
19151920 virtual bool preferPredicateOverEpilogue (TailFoldingInfo *TFI) = 0;
19161921 virtual TailFoldingStyle
19171922 getPreferredTailFoldingStyle (bool IVUpdateMayOverflow = true ) = 0 ;
@@ -2392,6 +2397,9 @@ class TargetTransformInfo::Model final : public TargetTransformInfo::Concept {
23922397 HardwareLoopInfo &HWLoopInfo) override {
23932398 return Impl.isHardwareLoopProfitable (L, SE, AC, LibInfo, HWLoopInfo);
23942399 }
2400+ unsigned getEpilogueVectorizationMinVF () override {
2401+ return Impl.getEpilogueVectorizationMinVF ();
2402+ }
23952403 bool preferPredicateOverEpilogue (TailFoldingInfo *TFI) override {
23962404 return Impl.preferPredicateOverEpilogue (TFI);
23972405 }
0 commit comments