src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir.aarch64/src/org/graalvm/compiler/lir/aarch64/AArch64ArithmeticOp.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir.aarch64/src/org/graalvm/compiler/lir/aarch64/AArch64ArithmeticOp.java	Mon Mar 20 17:39:29 2017
--- new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir.aarch64/src/org/graalvm/compiler/lir/aarch64/AArch64ArithmeticOp.java	Mon Mar 20 17:39:28 2017

*** 49,58 **** --- 49,59 ---- ADD(ARITHMETIC), ADDS(ARITHMETIC), SUB(ARITHMETIC), SUBS(ARITHMETIC), MUL, + MULVS, DIV, SMULH, UMULH, REM, UDIV,
*** 174,183 **** --- 175,192 ---- // Don't use asInt() here, since we can't use asInt on a long variable, even // if the constant easily fits as an int. assert AArch64MacroAssembler.isArithmeticImmediate(b.asLong()); masm.sub(size, dst, src, (int) b.asLong()); break; + case ADDS: + assert AArch64MacroAssembler.isArithmeticImmediate(b.asLong()); + masm.adds(size, dst, src, (int) b.asLong()); + break; + case SUBS: + assert AArch64MacroAssembler.isArithmeticImmediate(b.asLong()); + masm.subs(size, dst, src, (int) b.asLong()); + break; case AND: // XXX Should this be handled somewhere else? if (size == 32 && b.asLong() == 0xFFFF_FFFFL) { masm.mov(size, dst, src); } else {
*** 289,298 **** --- 298,310 ---- masm.fmul(size, dst, src1, src2); break; case FDIV: masm.fdiv(size, dst, src1, src2); break; + case MULVS: + masm.mulvs(size, dst, src1, src2); + break; default: throw GraalError.shouldNotReachHere("op=" + op.name()); } } }

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir.aarch64/src/org/graalvm/compiler/lir/aarch64/AArch64ArithmeticOp.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File