Mercurial > hg > truffle
changeset 14026:57a2d00ef771
Source comments in integer conversion nodes.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Wed, 26 Feb 2014 15:56:11 +0100 |
parents | 9738280055ce |
children | aba77882e314 |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NarrowNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SignExtendNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ZeroExtendNode.java |
diffstat | 3 files changed, 18 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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())); } }
--- 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())); } }
--- 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())); }