RFR: 8265491: Math Signum optimization for x86 [v8]
Marcus G K Williams
github.com+168222+mgkwill at openjdk.java.net
Sat Apr 24 00:21:49 UTC 2021
> x86 Math.Signum() uses two floating point compares and a copy sign operation involving data movement to gpr and XMM.
>
> We can optimize to one floating point compare and sign computation in XMM. We observe ~25% performance improvement with this optimization.
>
> Base:
>
> Benchmark Mode Cnt Score Error Units
> Signum._1_signumFloatTest avgt 5 4.660 ? 0.040 ns/op
> Signum._2_overheadFloat avgt 5 3.314 ? 0.023 ns/op
> Signum._3_signumDoubleTest avgt 5 4.809 ? 0.043 ns/op
> Signum._4_overheadDouble avgt 5 3.313 ? 0.015 ns/op
>
>
> Optimized:
> signum intrinsic patch
>
> Benchmark Mode Cnt Score Error Units
> Signum._1_signumFloatTest avgt 5 3.769 ? 0.015 ns/op
> Signum._2_overheadFloat avgt 5 3.312 ? 0.025 ns/op
> Signum._3_signumDoubleTest avgt 5 3.765 ? 0.005 ns/op
> Signum._4_overheadDouble avgt 5 3.309 ? 0.010 ns/op
>
>
> Signed-off-by: Marcus G K Williams <marcus.williams at intel.com>
Marcus G K Williams has updated the pull request incrementally with one additional commit since the last revision:
Fix copyright
Signed-off-by: Marcus G K Williams <marcus.williams at intel.com>
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/3581/files
- new: https://git.openjdk.java.net/jdk/pull/3581/files/3e0a4c79..7d54845f
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=3581&range=07
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=3581&range=06-07
Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
Patch: https://git.openjdk.java.net/jdk/pull/3581.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/3581/head:pull/3581
PR: https://git.openjdk.java.net/jdk/pull/3581
More information about the hotspot-compiler-dev
mailing list