Mercurial > hg > aarch64-jdk8u51-b16-hotspot
changeset 7821:26fc60dd5da8 jdk8u40-b12-aarch64-1262
Add support for A53 multiply accumulate
author | enevill |
---|---|
date | Tue, 02 Dec 2014 15:10:30 +0000 |
parents | f9a67c52dc33 |
children | 733b7b3aa70a b489e772b83c |
files | src/cpu/aarch64/vm/interp_masm_aarch64.cpp src/cpu/aarch64/vm/macroAssembler_aarch64.cpp src/cpu/aarch64/vm/macroAssembler_aarch64.hpp |
diffstat | 3 files changed, 13 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cpu/aarch64/vm/interp_masm_aarch64.cpp Wed Nov 26 15:20:42 2014 +0000 +++ b/src/cpu/aarch64/vm/interp_masm_aarch64.cpp Tue Dec 02 15:10:30 2014 +0000 @@ -1314,7 +1314,7 @@ // case_array_offset_in_bytes() movw(reg2, in_bytes(MultiBranchData::per_case_size())); movw(rscratch1, in_bytes(MultiBranchData::case_array_offset())); - maddw(index, index, reg2, rscratch1); + Assembler::maddw(index, index, reg2, rscratch1); // Update the case count increment_mdp_data_at(mdp,
--- a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Wed Nov 26 15:20:42 2014 +0000 +++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Tue Dec 02 15:10:30 2014 +0000 @@ -1538,7 +1538,7 @@ sdivw(result, ra, rb); } else { sdivw(scratch, ra, rb); - msubw(result, scratch, rb, ra); + Assembler::msubw(result, scratch, rb, ra); } return idivl_offset; @@ -1568,7 +1568,7 @@ sdiv(result, ra, rb); } else { sdiv(scratch, ra, rb); - msub(result, scratch, rb, ra); + Assembler::msub(result, scratch, rb, ra); } return idivq_offset;
--- a/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Wed Nov 26 15:20:42 2014 +0000 +++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Tue Dec 02 15:10:30 2014 +0000 @@ -407,6 +407,16 @@ umaddl(Rd, Rn, Rm, zr); } +#define WRAP(INSN) \ + void INSN(Register Rd, Register Rn, Register Rm, Register Ra) { \ + if (Ra != zr) nop(); \ + Assembler::INSN(Rd, Rn, Rm, Ra); \ + } + + WRAP(madd) WRAP(msub) WRAP(maddw) WRAP(msubw) + WRAP(smaddl) WRAP(smsubl) WRAP(umaddl) WRAP(umsubl) +#undef WRAP + // macro assembly operations needed for aarch64 // first two private routines for loading 32 bit or 64 bit constants