Skip to content

Commit 6965af4

Browse files
committed
Revert "[NFC] Separate Peeling Properties into its own struct"
This reverts commit fead250.
1 parent fead250 commit 6965af4

22 files changed

+58
-180
lines changed

llvm/include/llvm/Analysis/TargetTransformInfo.h

+14-28
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,11 @@ class TargetTransformInfo {
450450
/// transformation will select an unrolling factor based on the current cost
451451
/// threshold and other factors.
452452
unsigned Count;
453+
/// A forced peeling factor (the number of bodied of the original loop
454+
/// that should be peeled off before the loop body). When set to 0, the
455+
/// unrolling transformation will select a peeling factor based on profile
456+
/// information and other factors.
457+
unsigned PeelCount;
453458
/// Default unroll count for loops with run-time trip count.
454459
unsigned DefaultUnrollRuntimeCount;
455460
// Set the maximum unrolling factor. The unrolling factor may be selected
@@ -483,10 +488,19 @@ class TargetTransformInfo {
483488
bool Force;
484489
/// Allow using trip count upper bound to unroll loops.
485490
bool UpperBound;
491+
/// Allow peeling off loop iterations.
492+
bool AllowPeeling;
493+
/// Allow peeling off loop iterations for loop nests.
494+
bool AllowLoopNestsPeeling;
486495
/// Allow unrolling of all the iterations of the runtime loop remainder.
487496
bool UnrollRemainder;
488497
/// Allow unroll and jam. Used to enable unroll and jam for the target.
489498
bool UnrollAndJam;
499+
/// Allow peeling basing on profile. Uses to enable peeling off all
500+
/// iterations basing on provided profile.
501+
/// If the value is true the peeling cost model can decide to peel only
502+
/// some iterations and in this case it will set this to false.
503+
bool PeelProfiledIterations;
490504
/// Threshold for unroll and jam, for inner loop size. The 'Threshold'
491505
/// value above is used during unroll and jam for the outer loop size.
492506
/// This value is used in the same manner to limit the size of the inner
@@ -520,28 +534,6 @@ class TargetTransformInfo {
520534
/// intrinsic is supported.
521535
bool emitGetActiveLaneMask() const;
522536

523-
// Parameters that control the loop peeling transformation
524-
struct PeelingPreferences {
525-
/// A forced peeling factor (the number of bodied of the original loop
526-
/// that should be peeled off before the loop body). When set to 0, the
527-
/// a peeling factor based on profile information and other factors.
528-
unsigned PeelCount;
529-
/// Allow peeling off loop iterations.
530-
bool AllowPeeling;
531-
/// Allow peeling off loop iterations for loop nests.
532-
bool AllowLoopNestsPeeling;
533-
/// Allow peeling basing on profile. Uses to enable peeling off all
534-
/// iterations basing on provided profile.
535-
/// If the value is true the peeling cost model can decide to peel only
536-
/// some iterations and in this case it will set this to false.
537-
bool PeelProfiledIterations;
538-
};
539-
540-
/// Get target-customized preferences for the generic loop peeling
541-
/// transformation. The caller will initialize \p PP with the current
542-
/// target-independent defaults with information from \p L and \p SE.
543-
void getPeelingPreferences(Loop *L, ScalarEvolution &SE,
544-
PeelingPreferences &PP) const;
545537
/// @}
546538

547539
/// \name Scalar Target Information
@@ -1290,8 +1282,6 @@ class TargetTransformInfo::Concept {
12901282
virtual bool isLoweredToCall(const Function *F) = 0;
12911283
virtual void getUnrollingPreferences(Loop *L, ScalarEvolution &,
12921284
UnrollingPreferences &UP) = 0;
1293-
virtual void getPeelingPreferences(Loop *L, ScalarEvolution &SE,
1294-
PeelingPreferences &PP) = 0;
12951285
virtual bool isHardwareLoopProfitable(Loop *L, ScalarEvolution &SE,
12961286
AssumptionCache &AC,
12971287
TargetLibraryInfo *LibInfo,
@@ -1570,10 +1560,6 @@ class TargetTransformInfo::Model final : public TargetTransformInfo::Concept {
15701560
UnrollingPreferences &UP) override {
15711561
return Impl.getUnrollingPreferences(L, SE, UP);
15721562
}
1573-
void getPeelingPreferences(Loop *L, ScalarEvolution &SE,
1574-
PeelingPreferences &PP) override {
1575-
return Impl.getPeelingPreferences(L, SE, PP);
1576-
}
15771563
bool isHardwareLoopProfitable(Loop *L, ScalarEvolution &SE,
15781564
AssumptionCache &AC, TargetLibraryInfo *LibInfo,
15791565
HardwareLoopInfo &HWLoopInfo) override {

llvm/include/llvm/Analysis/TargetTransformInfoImpl.h

-3
Original file line numberDiff line numberDiff line change
@@ -150,9 +150,6 @@ class TargetTransformInfoImplBase {
150150
void getUnrollingPreferences(Loop *, ScalarEvolution &,
151151
TTI::UnrollingPreferences &) {}
152152

153-
void getPeelingPreferences(Loop *, ScalarEvolution &,
154-
TTI::PeelingPreferences &) {}
155-
156153
bool isLegalAddImmediate(int64_t Imm) { return false; }
157154

158155
bool isLegalICmpImmediate(int64_t Imm) { return false; }

llvm/include/llvm/CodeGen/BasicTTIImpl.h

-8
Original file line numberDiff line numberDiff line change
@@ -451,14 +451,6 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
451451
UP.BEInsns = 2;
452452
}
453453

454-
void getPeelingPreferences(Loop *L, ScalarEvolution &SE,
455-
TTI::PeelingPreferences &PP) {
456-
PP.PeelCount = 0;
457-
PP.AllowPeeling = true;
458-
PP.AllowLoopNestsPeeling = false;
459-
PP.PeelProfiledIterations = true;
460-
}
461-
462454
bool isHardwareLoopProfitable(Loop *L, ScalarEvolution &SE,
463455
AssumptionCache &AC,
464456
TargetLibraryInfo *LibInfo,

llvm/include/llvm/Transforms/Utils/UnrollLoop.h

+3-10
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ bool UnrollRuntimeLoopRemainder(
9494

9595
void computePeelCount(Loop *L, unsigned LoopSize,
9696
TargetTransformInfo::UnrollingPreferences &UP,
97-
TargetTransformInfo::PeelingPreferences &PP,
9897
unsigned &TripCount, ScalarEvolution &SE);
9998

10099
bool canPeel(Loop *L);
@@ -120,8 +119,6 @@ bool computeUnrollCount(Loop *L, const TargetTransformInfo &TTI,
120119
unsigned MaxTripCount, bool MaxOrZero,
121120
unsigned &TripMultiple, unsigned LoopSize,
122121
TargetTransformInfo::UnrollingPreferences &UP,
123-
TargetTransformInfo::PeelingPreferences &PP,
124-
125122
bool &UseUpperBound);
126123

127124
void simplifyLoopAfterUnroll(Loop *L, bool SimplifyIVs, LoopInfo *LI,
@@ -136,13 +133,9 @@ TargetTransformInfo::UnrollingPreferences gatherUnrollingPreferences(
136133
BlockFrequencyInfo *BFI, ProfileSummaryInfo *PSI, int OptLevel,
137134
Optional<unsigned> UserThreshold, Optional<unsigned> UserCount,
138135
Optional<bool> UserAllowPartial, Optional<bool> UserRuntime,
139-
Optional<bool> UserUpperBound, Optional<unsigned> UserFullUnrollMaxCount);
140-
141-
TargetTransformInfo::PeelingPreferences
142-
gatherPeelingPreferences(Loop *L, ScalarEvolution &SE,
143-
const TargetTransformInfo &TTI,
144-
Optional<bool> UserAllowPeeling,
145-
Optional<bool> UserAllowProfileBasedPeeling);
136+
Optional<bool> UserUpperBound, Optional<bool> UserAllowPeeling,
137+
Optional<bool> UserAllowProfileBasedPeeling,
138+
Optional<unsigned> UserFullUnrollMaxCount);
146139

147140
unsigned ApproximateLoopSize(const Loop *L, unsigned &NumCalls,
148141
bool &NotDuplicatable, bool &Convergent,

llvm/lib/Analysis/TargetTransformInfo.cpp

-5
Original file line numberDiff line numberDiff line change
@@ -327,11 +327,6 @@ void TargetTransformInfo::getUnrollingPreferences(
327327
return TTIImpl->getUnrollingPreferences(L, SE, UP);
328328
}
329329

330-
void TargetTransformInfo::getPeelingPreferences(Loop *L, ScalarEvolution &SE,
331-
PeelingPreferences &PP) const {
332-
return TTIImpl->getPeelingPreferences(L, SE, PP);
333-
}
334-
335330
bool TargetTransformInfo::isLegalAddImmediate(int64_t Imm) const {
336331
return TTIImpl->isLegalAddImmediate(Imm);
337332
}

llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp

-5
Original file line numberDiff line numberDiff line change
@@ -859,11 +859,6 @@ void AArch64TTIImpl::getUnrollingPreferences(Loop *L, ScalarEvolution &SE,
859859
getFalkorUnrollingPreferences(L, SE, UP);
860860
}
861861

862-
void AArch64TTIImpl::getPeelingPreferences(Loop *L, ScalarEvolution &SE,
863-
TTI::PeelingPreferences &PP) {
864-
BaseT::getPeelingPreferences(L, SE, PP);
865-
}
866-
867862
Value *AArch64TTIImpl::getOrCreateResultFromMemIntrinsic(IntrinsicInst *Inst,
868863
Type *ExpectedType) {
869864
switch (Inst->getIntrinsicID()) {

llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h

-3
Original file line numberDiff line numberDiff line change
@@ -153,9 +153,6 @@ class AArch64TTIImpl : public BasicTTIImplBase<AArch64TTIImpl> {
153153
void getUnrollingPreferences(Loop *L, ScalarEvolution &SE,
154154
TTI::UnrollingPreferences &UP);
155155

156-
void getPeelingPreferences(Loop *L, ScalarEvolution &SE,
157-
TTI::PeelingPreferences &PP);
158-
159156
Value *getOrCreateResultFromMemIntrinsic(IntrinsicInst *Inst,
160157
Type *ExpectedType);
161158

llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp

-14
Original file line numberDiff line numberDiff line change
@@ -236,10 +236,6 @@ void AMDGPUTTIImpl::getUnrollingPreferences(Loop *L, ScalarEvolution &SE,
236236
}
237237
}
238238

239-
void AMDGPUTTIImpl::getPeelingPreferences(Loop *L, ScalarEvolution &SE,
240-
TTI::PeelingPreferences &PP) {
241-
BaseT::getPeelingPreferences(L, SE, PP);
242-
}
243239
unsigned GCNTTIImpl::getHardwareNumberOfRegisters(bool Vec) const {
244240
// The concept of vector registers doesn't really exist. Some packed vector
245241
// operations operate on the normal 32-bit registers.
@@ -994,11 +990,6 @@ void GCNTTIImpl::getUnrollingPreferences(Loop *L, ScalarEvolution &SE,
994990
CommonTTI.getUnrollingPreferences(L, SE, UP);
995991
}
996992

997-
void GCNTTIImpl::getPeelingPreferences(Loop *L, ScalarEvolution &SE,
998-
TTI::PeelingPreferences &PP) {
999-
CommonTTI.getPeelingPreferences(L, SE, PP);
1000-
}
1001-
1002993
unsigned R600TTIImpl::getHardwareNumberOfRegisters(bool Vec) const {
1003994
return 4 * 128; // XXX - 4 channels. Should these count as vector instead?
1004995
}
@@ -1105,8 +1096,3 @@ void R600TTIImpl::getUnrollingPreferences(Loop *L, ScalarEvolution &SE,
11051096
TTI::UnrollingPreferences &UP) {
11061097
CommonTTI.getUnrollingPreferences(L, SE, UP);
11071098
}
1108-
1109-
void R600TTIImpl::getPeelingPreferences(Loop *L, ScalarEvolution &SE,
1110-
TTI::PeelingPreferences &PP) {
1111-
CommonTTI.getPeelingPreferences(L, SE, PP);
1112-
}

llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h

-8
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,6 @@ class AMDGPUTTIImpl final : public BasicTTIImplBase<AMDGPUTTIImpl> {
6161

6262
void getUnrollingPreferences(Loop *L, ScalarEvolution &SE,
6363
TTI::UnrollingPreferences &UP);
64-
65-
void getPeelingPreferences(Loop *L, ScalarEvolution &SE,
66-
TTI::PeelingPreferences &PP);
6764
};
6865

6966
class GCNTTIImpl final : public BasicTTIImplBase<GCNTTIImpl> {
@@ -144,9 +141,6 @@ class GCNTTIImpl final : public BasicTTIImplBase<GCNTTIImpl> {
144141
void getUnrollingPreferences(Loop *L, ScalarEvolution &SE,
145142
TTI::UnrollingPreferences &UP);
146143

147-
void getPeelingPreferences(Loop *L, ScalarEvolution &SE,
148-
TTI::PeelingPreferences &PP);
149-
150144
TTI::PopcntSupportKind getPopcntSupport(unsigned TyWidth) {
151145
assert(isPowerOf2_32(TyWidth) && "Ty width must be power of 2");
152146
return TTI::PSK_FastHardware;
@@ -264,8 +258,6 @@ class R600TTIImpl final : public BasicTTIImplBase<R600TTIImpl> {
264258

265259
void getUnrollingPreferences(Loop *L, ScalarEvolution &SE,
266260
TTI::UnrollingPreferences &UP);
267-
void getPeelingPreferences(Loop *L, ScalarEvolution &SE,
268-
TTI::PeelingPreferences &PP);
269261
unsigned getHardwareNumberOfRegisters(bool Vec) const;
270262
unsigned getNumberOfRegisters(bool Vec) const;
271263
unsigned getRegisterBitWidth(bool Vector) const;

llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp

-5
Original file line numberDiff line numberDiff line change
@@ -1582,11 +1582,6 @@ void ARMTTIImpl::getUnrollingPreferences(Loop *L, ScalarEvolution &SE,
15821582
UP.Force = true;
15831583
}
15841584

1585-
void ARMTTIImpl::getPeelingPreferences(Loop *L, ScalarEvolution &SE,
1586-
TTI::PeelingPreferences &PP) {
1587-
BaseT::getPeelingPreferences(L, SE, PP);
1588-
}
1589-
15901585
bool ARMTTIImpl::useReductionIntrinsic(unsigned Opcode, Type *Ty,
15911586
TTI::ReductionFlags Flags) const {
15921587
return ST->hasMVEIntegerOps();

llvm/lib/Target/ARM/ARMTargetTransformInfo.h

-2
Original file line numberDiff line numberDiff line change
@@ -251,8 +251,6 @@ class ARMTTIImpl : public BasicTTIImplBase<ARMTTIImpl> {
251251

252252
bool emitGetActiveLaneMask() const;
253253

254-
void getPeelingPreferences(Loop *L, ScalarEvolution &SE,
255-
TTI::PeelingPreferences &PP);
256254
bool shouldBuildLookupTablesForConstant(Constant *C) const {
257255
// In the ROPI and RWPI relocation models we can't have pointers to global
258256
// variables or functions in constant data, so don't convert switches to

llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.cpp

+1-6
Original file line numberDiff line numberDiff line change
@@ -78,17 +78,12 @@ HexagonTTIImpl::getPopcntSupport(unsigned IntTyWidthInBit) const {
7878
void HexagonTTIImpl::getUnrollingPreferences(Loop *L, ScalarEvolution &SE,
7979
TTI::UnrollingPreferences &UP) {
8080
UP.Runtime = UP.Partial = true;
81-
}
82-
83-
void HexagonTTIImpl::getPeelingPreferences(Loop *L, ScalarEvolution &SE,
84-
TTI::PeelingPreferences &PP) {
85-
BaseT::getPeelingPreferences(L, SE, PP);
8681
// Only try to peel innermost loops with small runtime trip counts.
8782
if (L && L->empty() && canPeel(L) &&
8883
SE.getSmallConstantTripCount(L) == 0 &&
8984
SE.getSmallConstantMaxTripCount(L) > 0 &&
9085
SE.getSmallConstantMaxTripCount(L) <= 5) {
91-
PP.PeelCount = 2;
86+
UP.PeelCount = 2;
9287
}
9388
}
9489

llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.h

-3
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,6 @@ class HexagonTTIImpl : public BasicTTIImplBase<HexagonTTIImpl> {
6464
void getUnrollingPreferences(Loop *L, ScalarEvolution &SE,
6565
TTI::UnrollingPreferences &UP);
6666

67-
void getPeelingPreferences(Loop *L, ScalarEvolution &SE,
68-
TTI::PeelingPreferences &PP);
69-
7067
/// Bias LSR towards creating post-increment opportunities.
7168
bool shouldFavorPostInc() const;
7269

llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.cpp

-5
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,3 @@ void NVPTXTTIImpl::getUnrollingPreferences(Loop *L, ScalarEvolution &SE,
155155
UP.Partial = UP.Runtime = true;
156156
UP.PartialThreshold = UP.Threshold / 4;
157157
}
158-
159-
void NVPTXTTIImpl::getPeelingPreferences(Loop *L, ScalarEvolution &SE,
160-
TTI::PeelingPreferences &PP) {
161-
BaseT::getPeelingPreferences(L, SE, PP);
162-
}

llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.h

-4
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,6 @@ class NVPTXTTIImpl : public BasicTTIImplBase<NVPTXTTIImpl> {
9595

9696
void getUnrollingPreferences(Loop *L, ScalarEvolution &SE,
9797
TTI::UnrollingPreferences &UP);
98-
99-
void getPeelingPreferences(Loop *L, ScalarEvolution &SE,
100-
TTI::PeelingPreferences &PP);
101-
10298
bool hasVolatileVariant(Instruction *I, unsigned AddrSpace) {
10399
// Volatile loads/stores are only supported for shared and global address
104100
// spaces, or for generic AS that maps to them.

llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp

-4
Original file line numberDiff line numberDiff line change
@@ -568,10 +568,6 @@ void PPCTTIImpl::getUnrollingPreferences(Loop *L, ScalarEvolution &SE,
568568
BaseT::getUnrollingPreferences(L, SE, UP);
569569
}
570570

571-
void PPCTTIImpl::getPeelingPreferences(Loop *L, ScalarEvolution &SE,
572-
TTI::PeelingPreferences &PP) {
573-
BaseT::getPeelingPreferences(L, SE, PP);
574-
}
575571
// This function returns true to allow using coldcc calling convention.
576572
// Returning true results in coldcc being used for functions which are cold at
577573
// all call sites when the callers of the functions are not calling any other

llvm/lib/Target/PowerPC/PPCTargetTransformInfo.h

-2
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,6 @@ class PPCTTIImpl : public BasicTTIImplBase<PPCTTIImpl> {
6666
TargetLibraryInfo *LibInfo);
6767
void getUnrollingPreferences(Loop *L, ScalarEvolution &SE,
6868
TTI::UnrollingPreferences &UP);
69-
void getPeelingPreferences(Loop *L, ScalarEvolution &SE,
70-
TTI::PeelingPreferences &PP);
7169
bool isLSRCostLess(TargetTransformInfo::LSRCost &C1,
7270
TargetTransformInfo::LSRCost &C2);
7371

llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp

-4
Original file line numberDiff line numberDiff line change
@@ -294,10 +294,6 @@ void SystemZTTIImpl::getUnrollingPreferences(Loop *L, ScalarEvolution &SE,
294294
UP.Force = true;
295295
}
296296

297-
void SystemZTTIImpl::getPeelingPreferences(Loop *L, ScalarEvolution &SE,
298-
TTI::PeelingPreferences &PP) {
299-
BaseT::getPeelingPreferences(L, SE, PP);
300-
}
301297

302298
bool SystemZTTIImpl::isLSRCostLess(TargetTransformInfo::LSRCost &C1,
303299
TargetTransformInfo::LSRCost &C2) {

llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.h

-3
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,6 @@ class SystemZTTIImpl : public BasicTTIImplBase<SystemZTTIImpl> {
5050
void getUnrollingPreferences(Loop *L, ScalarEvolution &SE,
5151
TTI::UnrollingPreferences &UP);
5252

53-
void getPeelingPreferences(Loop *L, ScalarEvolution &SE,
54-
TTI::PeelingPreferences &PP);
55-
5653
bool isLSRCostLess(TargetTransformInfo::LSRCost &C1,
5754
TargetTransformInfo::LSRCost &C2);
5855
/// @}

llvm/lib/Transforms/Scalar/LoopUnrollAndJamPass.cpp

+4-8
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,7 @@ static bool computeUnrollAndJamCount(
158158
const SmallPtrSetImpl<const Value *> &EphValues,
159159
OptimizationRemarkEmitter *ORE, unsigned OuterTripCount,
160160
unsigned OuterTripMultiple, unsigned OuterLoopSize, unsigned InnerTripCount,
161-
unsigned InnerLoopSize, TargetTransformInfo::UnrollingPreferences &UP,
162-
TargetTransformInfo::PeelingPreferences &PP) {
161+
unsigned InnerLoopSize, TargetTransformInfo::UnrollingPreferences &UP) {
163162
// First up use computeUnrollCount from the loop unroller to get a count
164163
// for unrolling the outer loop, plus any loops requiring explicit
165164
// unrolling we leave to the unroller. This uses UP.Threshold /
@@ -169,8 +168,7 @@ static bool computeUnrollAndJamCount(
169168
bool UseUpperBound = false;
170169
bool ExplicitUnroll = computeUnrollCount(
171170
L, TTI, DT, LI, SE, EphValues, ORE, OuterTripCount, MaxTripCount,
172-
/*MaxOrZero*/ false, OuterTripMultiple, OuterLoopSize, UP, PP,
173-
UseUpperBound);
171+
/*MaxOrZero*/ false, OuterTripMultiple, OuterLoopSize, UP, UseUpperBound);
174172
if (ExplicitUnroll || UseUpperBound) {
175173
// If the user explicitly set the loop as unrolled, dont UnJ it. Leave it
176174
// for the unroller instead.
@@ -284,9 +282,7 @@ tryToUnrollAndJamLoop(Loop *L, DominatorTree &DT, LoopInfo *LI,
284282
OptimizationRemarkEmitter &ORE, int OptLevel) {
285283
TargetTransformInfo::UnrollingPreferences UP =
286284
gatherUnrollingPreferences(L, SE, TTI, nullptr, nullptr, OptLevel, None,
287-
None, None, None, None, None);
288-
TargetTransformInfo::PeelingPreferences PP =
289-
gatherPeelingPreferences(L, SE, TTI, None, None);
285+
None, None, None, None, None, None, None);
290286
if (AllowUnrollAndJam.getNumOccurrences() > 0)
291287
UP.UnrollAndJam = AllowUnrollAndJam;
292288
if (UnrollAndJamThreshold.getNumOccurrences() > 0)
@@ -371,7 +367,7 @@ tryToUnrollAndJamLoop(Loop *L, DominatorTree &DT, LoopInfo *LI,
371367
// Decide if, and by how much, to unroll
372368
bool IsCountSetExplicitly = computeUnrollAndJamCount(
373369
L, SubLoop, TTI, DT, LI, SE, EphValues, &ORE, OuterTripCount,
374-
OuterTripMultiple, OuterLoopSize, InnerTripCount, InnerLoopSize, UP, PP);
370+
OuterTripMultiple, OuterLoopSize, InnerTripCount, InnerLoopSize, UP);
375371
if (UP.Count <= 1)
376372
return LoopUnrollResult::Unmodified;
377373
// Unroll factor (Count) must be less or equal to TripCount.

0 commit comments

Comments
 (0)