RFR: 8290249: Vectorize signum on AArch64

Bhavana-Kilambi duke at openjdk.org
Tue Aug 9 10:24:10 UTC 2022


This patch auto-vectorizes Math.signum intrinsic for float and  double
types on aarch64 (Neon and SVE). On SVE supporting machines, if the
MaxVectorSize <=16 the Neon code would be emitted and if the
MaxVectorSize > 16, the SVE code for the intrinsic would be emitted.

Following is the performance data for the micro test here -
test/micro/org/openjdk/bench/vm/compiler/VectorSignum.java


Benchmark	                Size    A	B       C
VectorSignum.doubleSignum	256	1.79	1.70	3.18
VectorSignum.doubleSignum	512	1.86	1.73	3.69
VectorSignum.doubleSignum	1024	1.89	1.74	2.98
VectorSignum.doubleSignum	2048	1.92	1.75	3.04
VectorSignum.floatSignum	256	3.34	3.06	3.92
VectorSignum.floatSignum	512	3.63	3.22	5.27
VectorSignum.floatSignum	1024	3.76	3.35	4.77
VectorSignum.floatSignum	2048	3.85	3.47	5.59


A, B , C machine descriptions given below -
A : 128-bit Neon machine
B : 256-bit SVE machine
C : 512-bit SVE machine

The numbers in the table are the gain ratios between the runtime (ns/op)
of the scalar, non-vectorized intrinsic code and the vectorized version
of the intrinsic (this patch).

-------------

Commit messages:
 - 8290249: Vectorize signum on AArch64

Changes: https://git.openjdk.org/jdk/pull/9807/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=9807&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8290249
  Stats: 533 lines in 12 files changed: 215 ins; 1 del; 317 mod
  Patch: https://git.openjdk.org/jdk/pull/9807.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/9807/head:pull/9807

PR: https://git.openjdk.org/jdk/pull/9807


More information about the hotspot-compiler-dev mailing list