@@ -626,6 +626,10 @@ class TargetTransformInfo {
626626 AssumptionCache &AC, TargetLibraryInfo *LibInfo,
627627 HardwareLoopInfo &HWLoopInfo) const ;
628628
629+ // Query the target for which minimum vectorization factor epilogue
630+ // vectorization should be considered.
631+ unsigned getEpilogueVectorizationMinVF () const ;
632+
629633 // / Query the target whether it would be prefered to create a predicated
630634 // / vector loop, which can avoid the need to emit a scalar epilogue loop.
631635 bool preferPredicateOverEpilogue (TailFoldingInfo *TFI) const ;
@@ -1865,6 +1869,7 @@ class TargetTransformInfo::Concept {
18651869 AssumptionCache &AC,
18661870 TargetLibraryInfo *LibInfo,
18671871 HardwareLoopInfo &HWLoopInfo) = 0;
1872+ virtual unsigned getEpilogueVectorizationMinVF () = 0;
18681873 virtual bool preferPredicateOverEpilogue (TailFoldingInfo *TFI) = 0;
18691874 virtual TailFoldingStyle
18701875 getPreferredTailFoldingStyle (bool IVUpdateMayOverflow = true ) = 0 ;
@@ -2319,6 +2324,9 @@ class TargetTransformInfo::Model final : public TargetTransformInfo::Concept {
23192324 HardwareLoopInfo &HWLoopInfo) override {
23202325 return Impl.isHardwareLoopProfitable (L, SE, AC, LibInfo, HWLoopInfo);
23212326 }
2327+ unsigned getEpilogueVectorizationMinVF () override {
2328+ return Impl.getEpilogueVectorizationMinVF ();
2329+ }
23222330 bool preferPredicateOverEpilogue (TailFoldingInfo *TFI) override {
23232331 return Impl.preferPredicateOverEpilogue (TFI);
23242332 }
0 commit comments