Lines Matching defs:scale

1490 Node* PhaseIdealLoop::adjust_limit(int stride_con, Node * scale, Node *offset, Node *rc_limit, Node *loop_limit, Node *pre_ctrl) {
1491 // Compute "I :: (limit-offset)/scale"
1494 Node *X = new (C) DivINode(0, con, scale);
1510 // loop. Stride, scale, offset and limit are all loop invariant. Further,
1511 // stride and scale are constants (offset and limit often 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
1522 Node *scale = _igvn.intcon(scale_con);
1523 set_ctrl(scale, C->root());
1526 // The overflow limit: scale*I+offset < upper_limit
1528 // ( if (scale > 0) /* and stride > 0 */
1529 // I < (upper_limit-offset)/scale
1530 // else /* scale < 0 and stride < 0 */
1531 // I > (upper_limit-offset)/scale
1537 *main_limit = adjust_limit(stride_con, scale, offset, upper_limit, *main_limit, pre_ctrl);
1539 // The underflow limit: low_limit <= scale*I+offset.
1541 // NOT(scale*I+offset >= low_limit)
1542 // scale*I+offset < low_limit
1543 // ( if (scale > 0) /* and stride > 0 */
1544 // I < (low_limit-offset)/scale
1545 // else /* scale < 0 and stride < 0 */
1546 // I > (low_limit-offset)/scale
1551 // We need this guard when scale*pre_limit+offset >= limit
1553 // scale*I+offset >= min_int. But (min_int-offset) will
1558 // to avoid problem with scale == -1 (min_int/(-1) == min_int).
1573 *pre_limit = adjust_limit((-stride_con), scale, offset, low_limit, *pre_limit, pre_ctrl);
1576 // For negative stride*scale pre-loop checks for overflow and
1579 // The overflow limit: scale*I+offset < upper_limit
1581 // NOT(scale*I+offset < upper_limit)
1582 // scale*I+offset >= upper_limit
1583 // scale*I+offset+1 > upper_limit
1584 // ( if (scale < 0) /* and stride > 0 */
1585 // I < (upper_limit-(offset+1))/scale
1586 // else /* scale > 0 and stride < 0 */
1587 // I > (upper_limit-(offset+1))/scale
1599 *pre_limit = adjust_limit((-stride_con), scale, plus_one, upper_limit, *pre_limit, pre_ctrl);
1603 // We need this guard when scale*main_limit+offset >= limit
1605 // scale*I+offset+1 > min_int. But (min_int-offset-1) will
1607 // when scale < 0 (and stride > 0). To avoid it we replace
1611 // to avoid problem with scale == -1 (min_int/(-1) == min_int).
1625 // The underflow limit: low_limit <= scale*I+offset.
1627 // scale*I+offset+1 > low_limit
1628 // ( if (scale < 0) /* and stride > 0 */
1629 // I < (low_limit-(offset+1))/scale
1630 // else /* scale > 0 and stride < 0 */
1631 // I > (low_limit-(offset+1))/scale
1634 *main_limit = adjust_limit(stride_con, scale, plus_one, low_limit, *main_limit, pre_ctrl);
1895 // The underflow and overflow limits: 0 <= scale*I+offset < limit
1898 // (0-offset)/scale could be outside of loop iterations range.
1913 // Convert (I*scale+offset) >= Limit to (I*(-scale)+(-offset)) <= -Limit
1928 // The underflow and overflow limits: MIN_INT <= scale*I+offset < limit
1930 // to avoid problem with scale == -1: MIN_INT/(-1) == MIN_INT.
1933 // ((MIN_INT+1)-offset)/scale could be outside of loop iterations range.
1934 // Note: negative offset is replaced with 0 but (MIN_INT+1)/scale could
2501 msg = "scale doesn't match";