# HG changeset patch # User Roland Schatz # Date 1393426571 -3600 # Node ID 57a2d00ef7718635269c61c623cef296a2c1d8e1 # Parent 9738280055ce1a90ab763a51d7b463a0e8b880b7 Source comments in integer conversion nodes. diff -r 9738280055ce -r 57a2d00ef771 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NarrowNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NarrowNode.java Wed Feb 26 15:56:03 2014 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NarrowNode.java Wed Feb 26 15:56:11 2014 +0100 @@ -71,19 +71,29 @@ } if (getInput() instanceof NarrowNode) { + // zzzzzzzz yyyyxxxx -(narrow)-> yyyyxxxx -(narrow)-> xxxx + // ==> zzzzzzzz yyyyxxxx -(narrow)-> xxxx NarrowNode other = (NarrowNode) getInput(); return graph().unique(new NarrowNode(other.getInput(), getResultBits())); } else if (getInput() instanceof IntegerConvertNode) { // SignExtendNode or ZeroExtendNode IntegerConvertNode other = (IntegerConvertNode) getInput(); if (getResultBits() == other.getInputBits()) { + // xxxx -(extend)-> yyyy xxxx -(narrow)-> xxxx + // ==> no-op return other.getInput(); } else if (getResultBits() < other.getInputBits()) { + // yyyyxxxx -(extend)-> zzzzzzzz yyyyxxxx -(narrow)-> xxxx + // ==> yyyyxxxx -(narrow)-> xxxx return graph().unique(new NarrowNode(other.getInput(), getResultBits())); } else { if (other instanceof SignExtendNode) { + // sxxx -(sign-extend)-> ssssssss sssssxxx -(narrow)-> sssssxxx + // ==> sxxx -(sign-extend)-> sssssxxx return graph().unique(new SignExtendNode(other.getInput(), getResultBits())); } else if (other instanceof ZeroExtendNode) { + // xxxx -(zero-extend)-> 00000000 00000xxx -(narrow)-> 0000xxxx + // ==> xxxx -(zero-extend)-> 0000xxxx return graph().unique(new ZeroExtendNode(other.getInput(), getResultBits())); } } diff -r 9738280055ce -r 57a2d00ef771 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SignExtendNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SignExtendNode.java Wed Feb 26 15:56:03 2014 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SignExtendNode.java Wed Feb 26 15:56:11 2014 +0100 @@ -73,11 +73,15 @@ } if (getInput() instanceof SignExtendNode) { + // sxxx -(sign-extend)-> ssss sxxx -(sign-extend)-> ssssssss sssssxxx + // ==> sxxx -(sign-extend)-> ssssssss sssssxxx SignExtendNode other = (SignExtendNode) getInput(); return graph().unique(new SignExtendNode(other.getInput(), getResultBits())); } else if (getInput() instanceof ZeroExtendNode) { ZeroExtendNode other = (ZeroExtendNode) getInput(); if (other.getResultBits() > other.getInputBits()) { + // sxxx -(zero-extend)-> 0000 sxxx -(sign-extend)-> 00000000 0000sxxx + // ==> sxxx -(zero-extend)-> 00000000 0000sxxx return graph().unique(new ZeroExtendNode(other.getInput(), getResultBits())); } } @@ -85,6 +89,8 @@ if (getInput().stamp() instanceof IntegerStamp) { IntegerStamp inputStamp = (IntegerStamp) getInput().stamp(); if ((inputStamp.upMask() & (1L << (getInputBits() - 1))) == 0L) { + // 0xxx -(sign-extend)-> 0000 0xxx + // ==> 0xxx -(zero-extend)-> 0000 0xxx return graph().unique(new ZeroExtendNode(getInput(), getResultBits())); } } diff -r 9738280055ce -r 57a2d00ef771 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ZeroExtendNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ZeroExtendNode.java Wed Feb 26 15:56:03 2014 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ZeroExtendNode.java Wed Feb 26 15:56:11 2014 +0100 @@ -69,6 +69,8 @@ } if (getInput() instanceof ZeroExtendNode) { + // xxxx -(zero-extend)-> 0000 xxxx -(zero-extend)-> 00000000 0000xxxx + // ==> xxxx -(zero-extend)-> 00000000 0000xxxx ZeroExtendNode other = (ZeroExtendNode) getInput(); return graph().unique(new ZeroExtendNode(other.getInput(), getResultBits())); }