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