Lines Matching defs:stride

646   // Check for initial stride being a small enough constant
683 int next_stride = stride_con * 2; // stride after this unroll
698 // After unroll limit will be adjusted: new_limit = limit-stride.
897 Node *stride = main_end ->stride();
1069 Node *pre_limit = new (C) AddINode( init, stride );
1085 // main loop guard test to use lt or gt depending on stride
1087 // positive stride use <
1088 // negative stride use >
1091 // when init > limit when stride > 0 (and reverse).
1171 Node *stride = loop_head->stride();
1198 int stride_con = stride->get_int();
1206 // Use (limit - stride) instead of (((limit - init)/stride) & (-2))*stride
1233 // The adjustment amount is -stride. Need to make sure if the
1266 new_limit = new (C) SubINode(limit, stride);
1268 // (limit - stride) may underflow.
1271 // new_limit = limit-stride
1272 // if (stride > 0)
1296 adj_limit = new (C) SubINode(adj_limit, stride);
1299 adj_limit = new (C) SubINode(limit, stride);
1366 // CountedLoop this is exact (stride divides limit-init exactly).
1371 Node *trip = new (C) DivINode( 0, span, stride );
1377 Node *spn2 = new (C) MulINode( rond, stride );
1511 // stride and scale are constants (offset and limit often are).
1513 // For positive stride, the pre-loop limit always uses a MAX function
1514 // and the main loop a MIN function. For negative stride these are
1517 // Also for positive stride*scale the affine function is increasing, so the
1519 // Negative stride*scale reverses this; pre-loop checks for overflow and
1528 // ( if (scale > 0) /* and stride > 0 */
1530 // else /* scale < 0 and stride < 0 */
1543 // ( if (scale > 0) /* and stride > 0 */
1545 // else /* scale < 0 and stride < 0 */
1555 // when stride > 0. To avoid it we replace positive offset with 0.
1568 // since (0-min_int) == min_int. It may be fine for stride > 0
1569 // but for stride < 0 X will be < original_limit. To avoid it
1572 // Pass (-stride) to indicate pre_loop_cond = NOT(main_loop_cond);
1576 // For negative stride*scale pre-loop checks for overflow and
1584 // ( if (scale < 0) /* and stride > 0 */
1586 // else /* scale > 0 and stride < 0 */
1592 // in do_range_check() for stride > 0 and max() for < 0.
1598 // Pass (-stride) to indicate pre_loop_cond = NOT(main_loop_cond);
1607 // when scale < 0 (and stride > 0). To avoid it we replace
1628 // ( if (scale < 0) /* and stride > 0 */
1630 // else /* scale > 0 and stride < 0 */
1745 // protect against stride not being a constant
1809 // (for stride > 0) MINed with the original loop limit (MAXed
1810 // stride < 0) when some range_check (rc) is conditionally
1982 // need to round up based on stride.
1988 Node *stride = cl->stride();
1995 Node *div = new (C) DivINode(0,add,stride);
1997 Node *mul = new (C) MulINode(div,stride);
2170 Node *final = new (phase->C) SubINode( exact_limit, cl->stride() );
2394 // value in a unit stride loop,
2442 msg = "negative stride";
2444 msg = "non-unit stride";
2624 // Must have constant stride