RFR(M): 8189113: AARCH64: StringLatin1 inflate intrinsic doesn't use prefetch instruction
Dmitrij Pochepko
dmitrij.pochepko at bell-sw.com
Fri May 11 18:14:55 UTC 2018
Hi,
please review patch for 8189113: AARCH64: StringLatin1 inflate intrinsic
doesn't use prefetch instruction
This patch add another code path for systems with prefetch instruction
generation enabled. This code path use advanced pipelined loop to have
branches taken during loads and also jump to stub for large strings,
where largest loads are issued. Also minor code cleanup is done for
original implementation.
Benchmarks:
I created separate JMH benchmark:
http://cr.openjdk.java.net/~dpochepk/8189113/StrInflateBench.java
Results summary:
Cortex A73: 1-2% improvement on short strings due to slightly minor
changes in original implementation
ThunderX: up to 13% improvement on short strings, up to about x2
improvement on large strings
ThunderX2: up to 15% improvement on short strings, up to 35% improvement
on large strings
No noticeable regressions found.
Detailed performance results table can be found here:
http://cr.openjdk.java.net/~dpochepk/8189113/str-inflate.xls
Testing:
I created separate bruteforce test(takes a long time) which checks
various lengths:
http://cr.openjdk.java.net/~dpochepk/8189113/StrInflateTest.java
Also hotspot jtreg tests were launched:
release build: ./compiler ./gc ./runtime tests
fastdebug build: ./compiler tests
No new failures found.
webrev: http://cr.openjdk.java.net/~dpochepk/8189113/webrev.01/
CR: https://bugs.openjdk.java.net/browse/JDK-8189113
Thanks,
Dmitrij
More information about the hotspot-compiler-dev
mailing list