[aarch64-port-dev ] RFR(S): 8204353 - AARCH64: optimize FPU load and stores in macroAssembler
Andrew Haley
aph at redhat.com
Wed Jun 6 08:23:11 UTC 2018
On 06/06/2018 08:59 AM, Andrew Haley wrote:
> On 06/05/2018 08:46 PM, Dmitrij Pochepko wrote:
>> webrev: http://cr.openjdk.java.net/~dpochepk/8204353/webrev.01/
>
> OK, seems reasonable.
Hold on, no. I replied too quickly.
2572 void MacroAssembler::push_call_clobbered_registers() {
2573 int step = 4 * wordSize;
2574 push(RegSet::range(r0, r18) - RegSet::of(rscratch1, rscratch2), sp);
2575 sub(sp, sp, step);
2576 mov(rscratch1, -step);
2577 // Push v0-v7, v16-v31.
2578 for (int i = 31; i>= 4; i -= 4) {
2579 if (i <= v7->encoding() || i >= v16->encoding())
2580 st1(as_FloatRegister(i-3), as_FloatRegister(i-2), as_FloatRegister(i-1),
2581 as_FloatRegister(i), T1D, Address(sp, rscratch1));
2582 }
2583 st1(as_FloatRegister(0), as_FloatRegister(1), as_FloatRegister(2),
2584 as_FloatRegister(3), T1D, Address(sp));
2585 }
What is "step" in rscratch1 used for here? Where do we push the registers?
--
Andrew Haley
Java Platform Lead Engineer
Red Hat UK Ltd. <https://www.redhat.com>
EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671
More information about the hotspot-compiler-dev
mailing list