< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/type/ArithmeticOpTable.java
Print this page
*** 94,103 ****
--- 94,119 ----
} else {
return EMPTY;
}
}
+ public BinaryOp<?>[] getBinaryOps() {
+ return new BinaryOp<?>[]{add, sub, mul, mulHigh, umulHigh, div, rem, and, or, xor};
+ }
+
+ public UnaryOp<?>[] getUnaryOps() {
+ return new UnaryOp<?>[]{neg, not, abs, sqrt};
+ }
+
+ public ShiftOp<?>[] getShiftOps() {
+ return new ShiftOp<?>[]{shl, shr, ushr};
+ }
+
+ public IntegerConvertOp<?>[] getIntegerConvertOps() {
+ return new IntegerConvertOp<?>[]{zeroExtend, signExtend, narrow};
+ }
+
public static final ArithmeticOpTable EMPTY = new ArithmeticOpTable(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
public interface ArithmeticOpWrapper {
<OP> UnaryOp<OP> wrapUnaryOp(UnaryOp<OP> op);
*** 560,570 ****
this.associative = associative;
this.commutative = commutative;
}
/**
! * Apply the operation to two {@linkplain Constant Constants}.
*/
public abstract Constant foldConstant(Constant a, Constant b);
/**
* Apply the operation to two {@linkplain Stamp Stamps}.
--- 576,589 ----
this.associative = associative;
this.commutative = commutative;
}
/**
! * Applies this operation to {@code a} and {@code b}.
! *
! * @return the result of applying this operation or {@code null} if applying it would raise
! * an exception (e.g., {@link ArithmeticException} for dividing by 0)
*/
public abstract Constant foldConstant(Constant a, Constant b);
/**
* Apply the operation to two {@linkplain Stamp Stamps}.
< prev index next >