[aarch64-port-dev ] RFR: 8252259: AArch64: Adjust default value of FLOATPRESSURE
Joshua Zhu
yueshi.zwj at alibaba-inc.com
Tue Aug 25 06:03:10 UTC 2020
Hi,
I have a small patch that will decrease the default value from 64 into 32
for aarch64's FLOATPRESSURE, which represents float LRG's number that
constitutes high register pressure.
With the proper value setting, in low register pressure (LRP) region, C2
can avoid unnecessary spilling and directly use register.
I wrote a simple case that is able to reflect the effect of new value.
http://cr.openjdk.java.net/~jzhu/8252259/Test.java
For this case, with new FLOATPRESSURE value, only one iteration of iterative
graph-coloring RA was required. The DefinitionSpillCopyNode was generated
directly when crossing HRP boundary in Split phase [1].
And only one MemToRegSpillCopyNode in HRP region was generated at USE site.
The dump of Split cycles and OptoAssembly is:
http://cr.openjdk.java.net/~jzhu/8252259/frp_32.log
For the same case, with current FLOATPRESSURE, the whole method was
identified as LRP region. In the first iteration of graph-coloring,
LRG was identified as spilled. In the second iteration,
DefinitionSpillCopyNode was generated [2] and there were three
MemToRegSpillCopy nodes were produced at each USE site.
See dump: http://cr.openjdk.java.net/~jzhu/8252259/frp_64.log with
the old FLOATPRSSURE.
Therefore I propose the default value of FLOATPRESSURE be 32 because
there are 32 float/SIMD registers on aarch64 and also the value of register
pressure is the same as 1 for each LRG of Op_RegL/Op_RegD/Op_Vec. [3]
Could you please help review this change?
JBS: https://bugs.openjdk.java.net/browse/JDK-8252259
Webrev: http://cr.openjdk.java.net/~jzhu/8252259/webrev.00/
[1]
https://hg.openjdk.java.net/jdk/jdk/file/332b3a2eb4cc/src/hotspot/share/opto
/reg_split.cpp#l855
[2]
https://hg.openjdk.java.net/jdk/jdk/file/332b3a2eb4cc/src/hotspot/share/opto
/reg_split.cpp#l1198
[3]
https://hg.openjdk.java.net/jdk/jdk/file/332b3a2eb4cc/src/hotspot/share/opto
/chaitin.cpp#l926
Best Regards,
Joshua
More information about the aarch64-port-dev
mailing list