RFR: 8265491: Math Signum optimization for x86 [v6]

Marcus G K Williams github.com+168222+mgkwill at openjdk.java.net
Thu Apr 22 18:44:58 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 two additional commits since the last revision:

 - Implement Default UseSignumIntrinsic suggestion
   
   Signed-off-by: Marcus G K Williams <marcus.williams at intel.com>
 - Use three operand xorps/d
   
   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/895eab4d..afefdc28

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=3581&range=05
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=3581&range=04-05

  Stats: 21 lines in 3 files changed: 10 ins; 0 del; 11 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