[vectorIntrinsics] RFR: 8262275: Math vector stubs are not called for double64 vectors
Jie Fu
jiefu at openjdk.java.net
Wed Feb 24 12:10:51 UTC 2021
On Wed, 24 Feb 2021 03:52:38 GMT, Jie Fu <jiefu at openjdk.org> wrote:
> Hi all,
>
> This is a follow-up of JDK-8261267.
>
> The svml math double64 vector stubs intrinsification is still failing and they are not being called from jitted code.
>
> The reason is that C2 refuses all double64 vector operations unconditionally.
> But this is unreasonable since some double64 vector operations like load/store and svml call can be safely implemented.
>
> This fix enables the vectorization of double64 for load/store(no mask) and svml call.
>
> Testing:
> - tier1~tier3 on Linux/x86, no regression
>
> Thanks.
> Best regards,
> Jie
Here are the scores (higher is better) of Double64Vector [1] micro-benchmark.
Most of them have been improved significantly (1.3x ~ 10x).
Thanks.
[1] https://github.com/openjdk/panama-vector/blob/vectorIntrinsics/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Double64Vector.java
Benchmark Before After Ratio(After/Beore)
Double64Vector.ABS 46.758 76.595 1.64
Double64Vector.ABSMasked 31.307 42.214 1.35
Double64Vector.ACOS 29.664 54.922 1.85
Double64Vector.ADD 32.199 46.972 1.46
Double64Vector.ADDLanes 75.218 103.138 1.37
Double64Vector.ADDMasked 23.931 31.469 1.31
Double64Vector.ADDMaskedLanes 29.152 34.24 1.17
Double64Vector.ASIN 29.054 62.188 2.14
Double64Vector.ATAN 14.505 55.595 3.83
Double64Vector.ATAN2 10.864 37.735 3.47
Double64Vector.CBRT 17.327 89.049 5.14
Double64Vector.COS 28.072 117.999 4.20
Double64Vector.COSH 19.004 86.781 4.57
Double64Vector.DIV 32.099 47.069 1.47
Double64Vector.DIVMasked 21.819 30.872 1.41
Double64Vector.EQ 26.234 33.342 1.27
Double64Vector.EXP 34.194 169.717 4.96
Double64Vector.EXPM1 20.636 77.133 3.74
Double64Vector.FIRST_NONZERO 2.342 3.044 1.30
Double64Vector.FIRST_NONZEROMasked 2.231 2.692 1.21
Double64Vector.FMA 23.029 34.807 1.51
Double64Vector.FMAMasked 19.897 25.232 1.27
Double64Vector.GE 28.377 32.899 1.16
Double64Vector.GT 28.211 33.6 1.19
Double64Vector.HYPOT 24.368 75.857 3.11
Double64Vector.IS_DEFAULT 8.129 10.257 1.26
Double64Vector.IS_FINITE 6.928 8.297 1.20
Double64Vector.IS_INFINITE 6.883 8.354 1.21
Double64Vector.IS_NAN 6.946 8.52 1.23
Double64Vector.IS_NEGATIVE 8.18 10.389 1.27
Double64Vector.LE 28.359 33.303 1.17
Double64Vector.LOG 33.455 117.06 3.50
Double64Vector.LOG10 31.447 107.968 3.43
Double64Vector.LOG1P 13.559 80.652 5.95
Double64Vector.LT 28.124 32.786 1.17
Double64Vector.MAX 31.254 46.787 1.50
Double64Vector.MAXLanes 65.916 86.609 1.31
Double64Vector.MAXMaskedLanes 28.91 32.348 1.12
Double64Vector.MIN 31.038 46.775 1.51
Double64Vector.MINLanes 66.315 87.1 1.31
Double64Vector.MINMaskedLanes 28.831 32.375 1.12
Double64Vector.MUL 32.193 46.057 1.43
Double64Vector.MULLanes 76.25 103.081 1.35
Double64Vector.MULMasked 23.078 31.233 1.35
Double64Vector.MULMaskedLanes 30.319 32.826 1.08
Double64Vector.NE 27.849 33.226 1.19
Double64Vector.NEG 42.939 76.492 1.78
Double64Vector.NEGMasked 31.656 42.176 1.33
Double64Vector.POW 17.798 13.046 0.73
Double64Vector.SIN 27.915 117.752 4.22
Double64Vector.SINH 18.811 71.169 3.78
Double64Vector.SQRT 46.031 75.079 1.63
Double64Vector.SQRTMasked 28.875 41.859 1.45
Double64Vector.SUB 31.974 47.123 1.47
Double64Vector.SUBMasked 24.416 30.659 1.26
Double64Vector.TAN 24.71 64.042 2.59
Double64Vector.TANH 28.53 72.796 2.55
Double64Vector.blend 30.643 43.363 1.42
Double64Vector.broadcast 55.878 90.417 1.62
Double64Vector.gather 54.696 564.164 10.31
Double64Vector.gatherMasked 39.097 92.014 2.35
Double64Vector.laneextract 83.051 115.022 1.38
Double64Vector.rearrange 25.133 31.262 1.24
Double64Vector.scatter 60.11 562.604 9.36
Double64Vector.scatterMasked 41.086 84.172 2.05
Double64Vector.sliceBinary 30.206 52.057 1.72
Double64Vector.sliceMasked 18.241 26.651 1.46
Double64Vector.sliceUnary 9.444 11.721 1.24
Double64Vector.unsliceBinary 27.435 45.943 1.67
Double64Vector.unsliceMasked 17.519 22.939 1.31
Double64Vector.unsliceUnary 9.691 11.899 1.23
Double64Vector.withLane 34.739 50.296 1.45
Double64Vector.zero 53.938 90.724 1.68
-------------
PR: https://git.openjdk.java.net/panama-vector/pull/39
More information about the panama-dev
mailing list