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

Edward Nevill edward.nevill at gmail.com
Wed Jun 24 15:27:32 UTC 2015


Hi,

The following webrev based on the hs-rt repo

http://cr.openjdk.java.net/~enevill/8086087/webrev.01

Adds support for 64 bit vectors on aarch64. Previously the vector code only supported 128 bit vectors.

32 bit vectors are not supported directly as aarch64 has no support for 32 bit vectors, however the above webrev will permit 32 bit vectors but just place them in a 64 bit vector.

I have tested this with JTreg hotspot and get the same results before and after the change, viz,

Test results: passed: 845; failed: 12; error: 6

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?

Ed.




More information about the hotspot-runtime-dev mailing list