< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop/src/org/graalvm/compiler/loop/CountedLoopInfo.java
Print this page
*** 81,91 ****
}
if (oneOff) {
range = add(graph, range, oneDirection);
}
// round-away-from-zero divison: (range + stride -/+ 1) / stride
! ValueNode denominator = add(graph, sub(graph, range, oneDirection), iv.strideNode());
ValueNode div = divBefore(graph, loop.entryPoint(), denominator, iv.strideNode());
if (assumePositive) {
return div;
}
--- 81,95 ----
}
if (oneOff) {
range = add(graph, range, oneDirection);
}
// round-away-from-zero divison: (range + stride -/+ 1) / stride
! ValueNode denominator = range;
! if (!oneDirection.stamp().equals(iv.strideNode().stamp())) {
! ValueNode subedRanged = sub(graph, range, oneDirection);
! denominator = add(graph, subedRanged, iv.strideNode());
! }
ValueNode div = divBefore(graph, loop.entryPoint(), denominator, iv.strideNode());
if (assumePositive) {
return div;
}
< prev index next >