< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.aarch64/src/org/graalvm/compiler/core/aarch64/AArch64ArithmeticLIRGenerator.java
Print this page
*** 60,74 ****
--- 60,89 ----
import jdk.vm.ci.meta.Value;
import jdk.vm.ci.meta.ValueKind;
public class AArch64ArithmeticLIRGenerator extends ArithmeticLIRGenerator implements AArch64ArithmeticLIRGeneratorTool {
+ public AArch64ArithmeticLIRGenerator(AllocatableValue nullRegisterValue) {
+ this.nullRegisterValue = nullRegisterValue;
+ }
+
+ private final AllocatableValue nullRegisterValue;
+
@Override
public AArch64LIRGenerator getLIRGen() {
return (AArch64LIRGenerator) super.getLIRGen();
}
+ public boolean mustReplaceNullWithNullRegister(JavaConstant nullConstant) {
+ /* Uncompressed null pointers only */
+ return nullRegisterValue != null && JavaConstant.NULL_POINTER.equals(nullConstant);
+ }
+
+ public AllocatableValue getNullRegisterValue() {
+ return nullRegisterValue;
+ }
+
@Override
protected boolean isNumericInteger(PlatformKind kind) {
return ((AArch64Kind) kind).isInteger();
}
*** 483,497 ****
AllocatableValue input = asAllocatable(inputVal);
getLIRGen().append(new StoreOp(kind, storeAddress, input, state));
}
@Override
- public void emitCompareOp(AArch64Kind cmpKind, Variable left, Value right) {
- throw GraalError.unimplemented();
- }
-
- @Override
public Value emitRound(Value value, RoundingMode mode) {
AArch64ArithmeticOp op;
switch (mode) {
case NEAREST:
op = AArch64ArithmeticOp.FRINTN;
--- 498,507 ----
< prev index next >