< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop.phases/src/org/graalvm/compiler/loop/phases/LoopTransformations.java

Print this page
rev 56282 : [mq]: graal

*** 60,73 **** import org.graalvm.compiler.nodes.StructuredGraph; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.calc.AddNode; import org.graalvm.compiler.nodes.calc.CompareNode; import org.graalvm.compiler.nodes.calc.ConditionalNode; - import org.graalvm.compiler.nodes.calc.IntegerLessThanNode; import org.graalvm.compiler.nodes.extended.OpaqueNode; import org.graalvm.compiler.nodes.extended.SwitchNode; import org.graalvm.compiler.nodes.spi.CoreProviders; import org.graalvm.compiler.phases.common.CanonicalizerPhase; public abstract class LoopTransformations { private LoopTransformations() { --- 60,73 ---- import org.graalvm.compiler.nodes.StructuredGraph; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.calc.AddNode; import org.graalvm.compiler.nodes.calc.CompareNode; import org.graalvm.compiler.nodes.calc.ConditionalNode; import org.graalvm.compiler.nodes.extended.OpaqueNode; import org.graalvm.compiler.nodes.extended.SwitchNode; import org.graalvm.compiler.nodes.spi.CoreProviders; + import org.graalvm.compiler.nodes.util.IntegerHelper; import org.graalvm.compiler.phases.common.CanonicalizerPhase; public abstract class LoopTransformations { private LoopTransformations() {
*** 357,371 **** // Update the pre loops limit test // Make new limit one iteration ValueNode newLimit = AddNode.add(preCounted.getStart(), preCounted.getCounter().strideNode(), NodeView.DEFAULT); // Fetch the variable we are not replacing and configure the one we are ValueNode ub = preCounted.getLimit(); LogicNode entryCheck; if (preCounted.getDirection() == Direction.Up) { ! entryCheck = IntegerLessThanNode.create(newLimit, ub, NodeView.DEFAULT); } else { ! entryCheck = IntegerLessThanNode.create(ub, newLimit, NodeView.DEFAULT); } newLimit = ConditionalNode.create(entryCheck, newLimit, ub, NodeView.DEFAULT); // Re-wire the condition with the new limit CompareNode compareNode = (CompareNode) preCounted.getLimitTest().condition(); compareNode.replaceFirstInput(ub, compareNode.graph().addOrUniqueWithInputs(newLimit)); --- 357,372 ---- // Update the pre loops limit test // Make new limit one iteration ValueNode newLimit = AddNode.add(preCounted.getStart(), preCounted.getCounter().strideNode(), NodeView.DEFAULT); // Fetch the variable we are not replacing and configure the one we are ValueNode ub = preCounted.getLimit(); + IntegerHelper helper = preCounted.getCounterIntegerHelper(); LogicNode entryCheck; if (preCounted.getDirection() == Direction.Up) { ! entryCheck = helper.createCompareNode(newLimit, ub, NodeView.DEFAULT); } else { ! entryCheck = helper.createCompareNode(ub, newLimit, NodeView.DEFAULT); } newLimit = ConditionalNode.create(entryCheck, newLimit, ub, NodeView.DEFAULT); // Re-wire the condition with the new limit CompareNode compareNode = (CompareNode) preCounted.getLimitTest().condition(); compareNode.replaceFirstInput(ub, compareNode.graph().addOrUniqueWithInputs(newLimit));
< prev index next >