Mercurial > hg > truffle
diff graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NarrowNode.java @ 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 | 2a7d7da912e1 |
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())); } }