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