[aarch64-port-dev ] RFR(S): 8243597: AArch64: Add support for integer vector abs
Yang Zhang
Yang.Zhang at arm.com
Wed May 6 08:46:28 UTC 2020
Hi,
Could you please help to review this patch?
JBS: https://bugs.openjdk.java.net/browse/JDK-8243597
Webrev: http://cr.openjdk.java.net/~yzhang/8243597/webrev.00/
In JDK-8222074 [1], x86 enables auto vectorization for integer vector
abs, and jtreg tests are also added.
In this patch, the missing AbsVB/S/I/L support for AArch64 is added.
Testing:
Full jtreg test
Vector API tests which cover vector abs
Test case:
public static void absvs(short[] a, short[] b, short[] c) {
for (int i = 0; i < a.length; i++) {
c[i] = (short)Math.abs((a[i] + b[i]));
}
}
Assembly code generated by C2:
0x0000ffffaca3f3ac: ldr q17, [x16, #16]
0x0000ffffaca3f3b0: ldr q16, [x15, #16]
0x0000ffffaca3f3b4: add v16.8h, v16.8h, v17.8h
0x0000ffffaca3f3b8: abs v16.8h, v16.8h
0x0000ffffaca3f3c0: str q16, [x12, #16]
Similar test cases for byte/int/long are also tested and NEON abs
instruction is generated by C2.
Performance:
JMH tests are uploaded.
http://cr.openjdk.java.net/~yzhang/8243597/TestScalar.java
http://cr.openjdk.java.net/~yzhang/8243597/TestVect.java
Vector abs:
Before:
Benchmark (size) Mode Cnt Score Error Units
TestVect.testVectAbsVB 1024 avgt 5 1041.720 ? 2.606 us/op
TestVect.testVectAbsVI 1024 avgt 5 659.788 ? 2.057 us/op
TestVect.testVectAbsVL 1024 avgt 5 711.043 ? 5.489 us/op
TestVect.testVectAbsVS 1024 avgt 5 659.157 ? 2.531 us/op
After
Benchmark (size) Mode Cnt Score Error Units
TestVect.testVectAbsVB 1024 avgt 5 88.821 ? 1.886 us/op
TestVect.testVectAbsVI 1024 avgt 5 199.081 ? 2.539 us/op
TestVect.testVectAbsVL 1024 avgt 5 447.536 ? 1.195 us/op
TestVect.testVectAbsVS 1024 avgt 5 119.172 ? 0.340 us/op
Scalar abs:
Before:
Benchmark (size) Mode Cnt Score Error Units
TestScalar.testAbsI 1024 avgt 5 3770.345 ± 6.760 us/op
TestScalar.testAbsL 1024 avgt 5 3767.570 ± 9.097 us/op
After:
Benchmark (size) Mode Cnt Score Error Units
TestScalar.testAbsI 1024 avgt 5 3141.312 ± 2.000 us/op
TestScalar.testAbsL 1024 avgt 5 3103.143 ± 8.989 us/op
[1] https://bugs.openjdk.java.net/browse/JDK-8222074
Regards
Yang
More information about the hotspot-compiler-dev
mailing list