< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/ExpandLogicPhase.java

Print this page
rev 56282 : [mq]: graal

*** 22,32 **** */ package org.graalvm.compiler.phases.common; - import org.graalvm.compiler.core.common.type.FloatStamp; import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.debug.DebugCloseable; import org.graalvm.compiler.debug.GraalError; import org.graalvm.compiler.graph.Graph; import org.graalvm.compiler.graph.Node; --- 22,31 ----
*** 40,55 **** import org.graalvm.compiler.nodes.MergeNode; import org.graalvm.compiler.nodes.NodeView; import org.graalvm.compiler.nodes.ShortCircuitOrNode; import org.graalvm.compiler.nodes.StructuredGraph; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.calc.ConditionalNode; - import org.graalvm.compiler.nodes.calc.FloatEqualsNode; - import org.graalvm.compiler.nodes.calc.FloatLessThanNode; - import org.graalvm.compiler.nodes.calc.IntegerEqualsNode; - import org.graalvm.compiler.nodes.calc.IntegerLessThanNode; - import org.graalvm.compiler.nodes.calc.NormalizeCompareNode; import org.graalvm.compiler.phases.Phase; public class ExpandLogicPhase extends Phase { private static final double EPSILON = 1E-6; --- 39,50 ---- import org.graalvm.compiler.nodes.MergeNode; import org.graalvm.compiler.nodes.NodeView; import org.graalvm.compiler.nodes.ShortCircuitOrNode; import org.graalvm.compiler.nodes.StructuredGraph; import org.graalvm.compiler.nodes.ValueNode; + import org.graalvm.compiler.nodes.calc.AbstractNormalizeCompareNode; import org.graalvm.compiler.nodes.calc.ConditionalNode; import org.graalvm.compiler.phases.Phase; public class ExpandLogicPhase extends Phase { private static final double EPSILON = 1E-6;
*** 59,93 **** for (ShortCircuitOrNode logic : graph.getNodes(ShortCircuitOrNode.TYPE)) { processBinary(logic); } assert graph.getNodes(ShortCircuitOrNode.TYPE).isEmpty(); ! for (NormalizeCompareNode logic : graph.getNodes(NormalizeCompareNode.TYPE)) { try (DebugCloseable context = logic.withNodeSourcePosition()) { processNormalizeCompareNode(logic); } } graph.setAfterExpandLogic(); } ! private static void processNormalizeCompareNode(NormalizeCompareNode normalize) { ! LogicNode equalComp; ! LogicNode lessComp; StructuredGraph graph = normalize.graph(); ! ValueNode x = normalize.getX(); ! ValueNode y = normalize.getY(); ! if (x.stamp(NodeView.DEFAULT) instanceof FloatStamp) { ! equalComp = graph.addOrUniqueWithInputs(FloatEqualsNode.create(x, y, NodeView.DEFAULT)); ! lessComp = graph.addOrUniqueWithInputs(FloatLessThanNode.create(x, y, normalize.isUnorderedLess(), NodeView.DEFAULT)); ! } else { ! equalComp = graph.addOrUniqueWithInputs(IntegerEqualsNode.create(x, y, NodeView.DEFAULT)); ! lessComp = graph.addOrUniqueWithInputs(IntegerLessThanNode.create(x, y, NodeView.DEFAULT)); ! } ! Stamp stamp = normalize.stamp(NodeView.DEFAULT); ! ConditionalNode equalValue = graph.unique( ! new ConditionalNode(equalComp, ConstantNode.forIntegerStamp(stamp, 0, graph), ConstantNode.forIntegerStamp(stamp, 1, graph))); ConditionalNode value = graph.unique(new ConditionalNode(lessComp, ConstantNode.forIntegerStamp(stamp, -1, graph), equalValue)); normalize.replaceAtUsagesAndDelete(value); } @SuppressWarnings("try") --- 54,77 ---- for (ShortCircuitOrNode logic : graph.getNodes(ShortCircuitOrNode.TYPE)) { processBinary(logic); } assert graph.getNodes(ShortCircuitOrNode.TYPE).isEmpty(); ! for (AbstractNormalizeCompareNode logic : graph.getNodes(AbstractNormalizeCompareNode.TYPE)) { try (DebugCloseable context = logic.withNodeSourcePosition()) { processNormalizeCompareNode(logic); } } graph.setAfterExpandLogic(); } ! private static void processNormalizeCompareNode(AbstractNormalizeCompareNode normalize) { StructuredGraph graph = normalize.graph(); ! LogicNode equalComp = graph.addOrUniqueWithInputs(normalize.createEqualComparison()); ! LogicNode lessComp = graph.addOrUniqueWithInputs(normalize.createLowerComparison()); Stamp stamp = normalize.stamp(NodeView.DEFAULT); ! ConditionalNode equalValue = graph.unique(new ConditionalNode(equalComp, ConstantNode.forIntegerStamp(stamp, 0, graph), ConstantNode.forIntegerStamp(stamp, 1, graph))); ConditionalNode value = graph.unique(new ConditionalNode(lessComp, ConstantNode.forIntegerStamp(stamp, -1, graph), equalValue)); normalize.replaceAtUsagesAndDelete(value); } @SuppressWarnings("try")
< prev index next >