RFR: 8265491: Math Signum optimization for x86 [v2]
David Holmes
dholmes at openjdk.java.net
Wed Apr 21 06:42:10 UTC 2021
On Tue, 20 Apr 2021 15:28:43 GMT, Marcus G K Williams <github.com+168222+mgkwill at openjdk.org> wrote:
>> 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.782 ? 0.019 ns/op
>> Signum._2_overheadFloat avgt 5 3.309 ? 0.011 ns/op
>> Signum._3_signumDoubleTest avgt 5 3.782 ? 0.017 ns/op
>> Signum._4_overheadDouble avgt 5 3.310 ? 0.006 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:
>
> Add os.arch=="i386" to signum jtreg
>
> Signed-off-by: Marcus G K Williams <marcus.williams at intel.com>
test/hotspot/jtreg/compiler/intrinsics/math/TestSignumIntrinsic.java line 28:
> 26: * @test
> 27: * @summary Test compiler intrinsics for signum
> 28: * @requires os.arch=="aarch64" | os.arch=="x86" | os.arch=="i386" | os.arch=="amd64" | os.arch=="x86_64"
Shouldn't this test run successfully on all platforms, even if they don't do anything in response to UseSignumIntrinsic? I can run it today on x86_64.
-------------
PR: https://git.openjdk.java.net/jdk/pull/3581
More information about the hotspot-compiler-dev
mailing list