Lines Matching refs:Unroll
110 VectorizationUnroll("force-vector-unroll", cl::init(0), cl::Hidden,
111 cl::desc("Sets the vectorization unroll count. "
141 /// We don't unroll loops with a known constant trip count below this number.
159 /// Maximum vectorization unroll count.
163 "force-target-max-scalar-unroll", cl::init(0), cl::Hidden,
164 cl::desc("A flag that overrides the target's max unroll factor for scalar "
168 "force-target-max-vector-unroll", cl::init(0), cl::Hidden,
169 cl::desc("A flag that overrides the target's max unroll factor for "
188 // Runtime unroll loops for load/store throughput.
190 "enable-loadstore-runtime-unroll", cl::init(true), cl::Hidden,
277 /// When we unroll loops we have multiple vector values for each scalar.
395 /// The unroll factor. Each entry in the map stores this number of vector
422 /// The vectorization unroll factor to use. Each scalar is vectorized to this
863 /// \return The most profitable unroll factor.
864 /// If UserUF is non-zero then this method finds the best unroll-factor
933 Unroll(DisableUnrolling),
937 // force-vector-unroll overrides DisableUnrolling.
939 Unroll = VectorizationUnroll;
941 DEBUG(if (DisableUnrolling && Unroll == 1) dbgs()
969 Vals.push_back(createHint(Context, Twine(Prefix(), "unroll").str(), 1));
991 if (Width != 0 && Unroll != 0)
992 R << " with width " << Width << " and interleave count " << Unroll;
995 else if (Unroll != 0)
996 R << " with interleave count " << Unroll;
1006 unsigned getUnroll() const { return Unroll; }
1063 } else if (Hint == "unroll") {
1065 Unroll = Val;
1067 DEBUG(dbgs() << "LV: ignoring invalid unroll hint metadata\n");
1081 /// Vectorization unroll factor.
1082 unsigned Unroll;
1186 << " unroll=" << Hints.getUnroll() << "\n");
1290 // Select the unroll factor.
1296 DEBUG(dbgs() << "LV: Unroll Factor is " << UF << '\n');
1307 DEBUG(dbgs() << "LV: Trying to at least unroll the loops.\n");
1315 // We decided not to vectorize, but we may want to unroll.
1707 // Calculate the pointer for the specific unroll-part.
1731 // Calculate the pointer for the specific unroll-part.
1809 // For each vector unroll 'part':
2141 // times the unroll factor (num of SIMD instructions).
2707 // first unroll part.
5316 // -- The unroll heuristics --
5317 // We unroll the loop in order to expose ILP and reduce the loop overhead.
5322 // We use the following heuristics to select the unroll factor:
5323 // 1. If the code has reductions the we unroll in order to break the cross
5325 // 2. If the loop is really small then we unroll in order to reduce the loop
5327 // 3. We don't unroll if we think that we will spill registers to memory due
5334 // When we optimize for size we don't unroll.
5338 // We used the distance for the unroll factor.
5342 // Do not unroll loops with a relatively small trip count.
5366 // We calculate the unroll factor using the following formula.
5372 // a power of two. We want power of two unroll factors to simplify any
5382 // Clamp the unroll factor ranges to reasonable factors.
5385 // Check if the user has overridden the unroll max.
5399 // Clamp the calculated UF to be between the 1 and the max unroll factor
5406 // Unroll if we vectorized this loop and there is a reduction that could
5418 // We want to unroll small loops in order to reduce the loop overhead and
5424 // to estimate the cost of the loop and unroll until the cost of the
5428 // Unroll until store/load ports (estimated by max unroll factor) are
5463 // usage number because when we unroll, loop-invariant values do not take
5948 // For each vector unroll 'part':