RFR: 8285868: x86_64 intrinsics for floating point methods isNaN, isFinite and isInfinite [v8]
Srinivas Vamsi Parasa
duke at openjdk.java.net
Sat May 21 07:46:54 UTC 2022
On Fri, 20 May 2022 08:46:06 GMT, Jatin Bhateja <jbhateja at openjdk.org> wrote:
>> src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp line 4750:
>>
>>> 4748: movdl(temp, src);
>>> 4749: andl(temp, KILL_SIGN_MASK);
>>> 4750: cmpl(temp, POS_INF);
>>
>> For IsNaN following sequence will offer better latency
>> "vucomiss src_xmm, src_xmm"
>> "setp r8"
>
> Hi @vamsi-parasa ,
>
> I can see almost 30% improvement in you JMH micro for IsNaN through above suggested change.
> Original score over AVX2 machine:
>
> Benchmark Mode Cnt Score Error Units
> FloatClassCheck.testIsNaN avgt 2 0.854 ns/op
> FloatClassCheck.testIsNaN:·asm avgt NaN ---
>
> With new sequence:
> Benchmark Mode Cnt Score Error Units
> FloatClassCheck.testIsNaN avgt 2 0.570 ns/op
> FloatClassCheck.testIsNaN:·asm avgt NaN ---
Thanks Jatin! Will test it on my machine as well...
-------------
PR: https://git.openjdk.java.net/jdk/pull/8459
More information about the hotspot-compiler-dev
mailing list