@Override public ValueNode strideNode() { if (value instanceof SubNode && base.valueNode() == value.getY()) { return graph().unique(new NegateNode(base.strideNode())); } return base.strideNode(); }
@Override public long constantStride() { if (value instanceof SubNode && base.valueNode() == value.getY()) { return -base.constantStride(); } return base.constantStride(); }
private ValueNode op(ValueNode b, ValueNode o) { if (value instanceof AddNode) { return add(graph(), b, o); } if (value instanceof SubNode) { if (base.valueNode() == value.getX()) { return sub(graph(), b, o); } else { assert base.valueNode() == value.getY(); return sub(graph(), o, b); } } throw JVMCIError.shouldNotReachHere(); }
private long op(long b, long o) { if (value instanceof AddNode) { return b + o; } if (value instanceof SubNode) { if (base.valueNode() == value.getX()) { return b - o; } else { assert base.valueNode() == value.getY(); return o - b; } } throw JVMCIError.shouldNotReachHere(); }