< prev index next >
src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp
Print this page
8248238: Adding Windows support to OpenJDK on AArch64
Summary: LP64 vs LLP64 changes to add Windows support
Contributed-by: Monica Beckwith <monica.beckwith@microsoft.com>, Ludovic Henry <luhenry@microsoft.com>
Reviewed-by:
*** 3281,3292 ****
FloatRegister vs2acc = v2;
FloatRegister vtable = v3;
// Max number of bytes we can process before having to take the mod
// 0x15B0 is 5552 in decimal, the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1
! unsigned long BASE = 0xfff1;
! unsigned long NMAX = 0x15B0;
__ mov(base, BASE);
__ mov(nmax, NMAX);
// Load accumulation coefficients for the upper 16 bits
--- 3281,3292 ----
FloatRegister vs2acc = v2;
FloatRegister vtable = v3;
// Max number of bytes we can process before having to take the mod
// 0x15B0 is 5552 in decimal, the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1
! uint64_t BASE = 0xfff1;
! uint64_t NMAX = 0x15B0;
__ mov(base, BASE);
__ mov(nmax, NMAX);
// Load accumulation coefficients for the upper 16 bits
*** 5379,5394 ****
return entry;
}
// In C, approximately:
// void
! // montgomery_multiply(unsigned long Pa_base[], unsigned long Pb_base[],
! // unsigned long Pn_base[], unsigned long Pm_base[],
! // unsigned long inv, int len) {
! // unsigned long t0 = 0, t1 = 0, t2 = 0; // Triple-precision accumulator
! // unsigned long *Pa, *Pb, *Pn, *Pm;
! // unsigned long Ra, Rb, Rn, Rm;
// int i;
// assert(inv * Pn_base[0] == -1UL, "broken inverse in Montgomery multiply");
--- 5379,5394 ----
return entry;
}
// In C, approximately:
// void
! // montgomery_multiply(uint64_t Pa_base[], uint64_t Pb_base[],
! // uint64_t Pn_base[], uint64_t Pm_base[],
! // uint64_t inv, int len) {
! // uint64_t t0 = 0, t1 = 0, t2 = 0; // Triple-precision accumulator
! // uint64_t *Pa, *Pb, *Pn, *Pm;
! // uint64_t Ra, Rb, Rn, Rm;
// int i;
// assert(inv * Pn_base[0] == -1UL, "broken inverse in Montgomery multiply");
*** 5592,5606 ****
return entry;
}
// In C, approximately:
// void
! // montgomery_square(unsigned long Pa_base[], unsigned long Pn_base[],
! // unsigned long Pm_base[], unsigned long inv, int len) {
! // unsigned long t0 = 0, t1 = 0, t2 = 0; // Triple-precision accumulator
! // unsigned long *Pa, *Pb, *Pn, *Pm;
! // unsigned long Ra, Rb, Rn, Rm;
// int i;
// assert(inv * Pn_base[0] == -1UL, "broken inverse in Montgomery multiply");
--- 5592,5606 ----
return entry;
}
// In C, approximately:
// void
! // montgomery_square(uint64_t Pa_base[], uint64_t Pn_base[],
! // uint64_t Pm_base[], uint64_t inv, int len) {
! // uint64_t t0 = 0, t1 = 0, t2 = 0; // Triple-precision accumulator
! // uint64_t *Pa, *Pb, *Pn, *Pm;
! // uint64_t Ra, Rb, Rn, Rm;
// int i;
// assert(inv * Pn_base[0] == -1UL, "broken inverse in Montgomery multiply");
< prev index next >