RFR: JDK-8270147: Increase stride size to allow unrolling more loops
Radoslaw Smogura
github.com+7535718+rsmogura at openjdk.java.net
Fri Jul 9 15:30:10 UTC 2021
# Description
This increase allowed stride size for loop unrolling to almost maximum possible
value which is around `max_jint / 2 - 2`,
so the value which will prevent overflow when stride is doubled in C2.
The motivation of this change is discussion and research about unrolling
vector (SIMD) loops. In such a case stride size depends on elements size
and machine size of vector for AVX256 and int stride size is 8,
and loop unroll happens. However short vectors will not cause loop unroll.
for (int i = 0; i < SPECIES.loopBound(longSize); i += SPECIES.length() /* 8 for int, 16 for short */ ) {
var v = ShortVector.fromByteBuffer(SPECIES, srcBufferHeap, i << 1, ByteOrder.nativeOrder());
v.intoByteBuffer(dstBufferHeap, i << 1, ByteOrder.nativeOrder());
}
# Notes
Stride size was decreased some time ago https://github.com/openjdk/panama-foreign/commit/2683d5390bd58683ae13bdd8582127c308d8fd04
The exact reasons for this are not known for me (over unroll of some loops?).
Original thread https://mail.openjdk.java.net/pipermail/panama-dev/2021-June/014310.html
-------------
Commit messages:
- Drop whitespace
- Put back feature switch
- Increase stride size to allow unrolling more loops
Changes: https://git.openjdk.java.net/jdk/pull/4658/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=4658&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8270147
Stats: 22 lines in 2 files changed: 18 ins; 1 del; 3 mod
Patch: https://git.openjdk.java.net/jdk/pull/4658.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/4658/head:pull/4658
PR: https://git.openjdk.java.net/jdk/pull/4658
More information about the hotspot-compiler-dev
mailing list