110 if (other instanceof SignExtendNode) { |
110 if (other instanceof SignExtendNode) { |
111 // sxxx -(sign-extend)-> ssssssss sssssxxx -(narrow)-> sssssxxx |
111 // sxxx -(sign-extend)-> ssssssss sssssxxx -(narrow)-> sssssxxx |
112 // ==> sxxx -(sign-extend)-> sssssxxx |
112 // ==> sxxx -(sign-extend)-> sssssxxx |
113 return SignExtendNode.create(other.getValue(), other.getInputBits(), getResultBits(), view); |
113 return SignExtendNode.create(other.getValue(), other.getInputBits(), getResultBits(), view); |
114 } else if (other instanceof ZeroExtendNode) { |
114 } else if (other instanceof ZeroExtendNode) { |
115 // xxxx -(zero-extend)-> 00000000 00000xxx -(narrow)-> 0000xxxx |
115 // xxxx -(zero-extend)-> 00000000 0000xxxx -(narrow)-> 0000xxxx |
116 // ==> xxxx -(zero-extend)-> 0000xxxx |
116 // ==> xxxx -(zero-extend)-> 0000xxxx |
117 return new ZeroExtendNode(other.getValue(), other.getInputBits(), getResultBits()); |
117 return new ZeroExtendNode(other.getValue(), other.getInputBits(), getResultBits(), ((ZeroExtendNode) other).isInputAlwaysPositive()); |
118 } |
118 } |
119 } |
119 } |
120 } else if (forValue instanceof AndNode) { |
120 } else if (forValue instanceof AndNode) { |
121 AndNode andNode = (AndNode) forValue; |
121 AndNode andNode = (AndNode) forValue; |
122 IntegerStamp yStamp = (IntegerStamp) andNode.getY().stamp(view); |
122 IntegerStamp yStamp = (IntegerStamp) andNode.getY().stamp(view); |