RFR: 8086087: aarch64: add support for 64 bit vectors

Edward Nevill edward.nevill at gmail.com
Thu Jun 25 10:40:49 UTC 2015


The following webrev adds support for 64 bit vectors (only) on aarch64


Previously the vector code only supported 128 bit vectors.

32 bit vectors are not supported in this changeset but will be supported in a future changeset.

I have tested this with JTreg hotspot with the following results

Original: Test results: passed: 858; failed: 4; error: 6
Revised:  Test results: passed: 857; failed: 5; error: 6

The additional test failure is compiler/intrinsics/muladd/TestMulAdd.java which fails intermittently with both original and revised versions (I'll take a look at that next:-).

I have also benchmarked the Test*Vect tests from 6340864 in the hotspot test suite. The following are the average results I get on one of our partners HW (lower number is better).

TestByteVect:  128-bit (11.77), 64-bit (4.36)
TestShortVect: 128-bit (5.02),  64-bit (5.22)
TestIntVect:   128-bit (7.81),  64-bit (7.70)
TestLongVect:  128-bit (11.67), 64-bit (11.71)
TestFloatVect: 128-bit (16.75), 64-bit (17.29)
TestDoubleVect:128-bit (32.37), 64-bit (32.43)

So the only test which shows an improvement is TestByteVect which shows a 2.7x speedup. The other tests are the same within the bounds of experimental error.

The reason TestByteVect shows such an improvement is that with 128 bit vectors it is not being vectorized at all because the loop is not unrolled sufficiently to allow it to be vectorized, wheras with 64 bit vectors it is.

Please review and let me know if this is OK to push?


PS: For pushing an aarch64 specific change to hs-comp do I need 1 or 2 reviewers?

More information about the hotspot-compiler-dev mailing list