Integrated: 8264054: Bad XMM performance on java.lang.MathBench.sqrtDouble

Sandhya Viswanathan sviswanathan at openjdk.java.net
Thu Apr 1 00:37:24 UTC 2021


On Tue, 30 Mar 2021 00:38:22 GMT, Sandhya Viswanathan <sviswanathan at openjdk.org> wrote:

> For the j.l.Math JMH at https://github.com/openjdk/jmh-jdk-microbenchmarks/blob/master/micros-jdk11/src/main/java/org/openjdk/bench/java/lang/MathBench.java, the performance for sqrt benchmark could be improved.  Thanks a lot to Eric Caspole for finding this issue.
> 
> Benchmark:
>     @Benchmark
>     public double  sqrtDouble() {
>         return  Math.sqrt(double4Dot1);
>     }
> 
> Current code generated (linux format) by c2 JIT is:
>      vsqrtsd 0x50(%r10),%xmm0,%xmm0
> 
> The vsqrtsd instruction operation is specified as below: 
>      VSQRTSD (VEX.128 encoded version)
>      DEST[63:0] := SQRT(SRC2[63:0])
>      DEST[127:64] := SRC1[127:64]
>      DEST[MAXVL-1:128] := 0
> 
> The upper 127:64 bits are set from previous contents of xmm0. As the destination xmm0 register was not initialized prior to use by c2 JIT, this causes stall and lower performance.
> 
> By adding xmm0 initialization prior to use, the performance of the above benchmark improves significantly.
> 
> Code generated after patch:
>      vxorpd %xmm0,%xmm0,%xmm0
>      vsqrtsd 0x50(%r10),%xmm0,%xmm0
> 
> Performance before patch:
> Benchmark                    Mode  Cnt       Score      Error   Units
> MathBench.sqrtDouble        thrpt    8  193612.396 ±  95.807  ops/ms
> 
> Performance after patch:
> MathBench.sqrtDouble        thrpt    8  276388.024 ± 846.372  ops/ms
> 
> Best Regards,
> Sandhya

This pull request has now been integrated.

Changeset: 52d8a229
Author:    Sandhya Viswanathan <sviswanathan at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/52d8a229
Stats:     947 lines in 3 files changed: 879 ins; 51 del; 17 mod

8264054: Bad XMM performance on java.lang.MathBench.sqrtDouble

Co-authored-by: Eric Caspole <ecaspole at openjdk.org>
Co-authored-by: Charlie Hunt <huntch at openjdk.org>
Reviewed-by: neliasso, kvn, vlivanov

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

PR: https://git.openjdk.java.net/jdk/pull/3256


More information about the hotspot-compiler-dev mailing list