RFR: 8285868: x86_64 intrinsics for floating point methods isNaN, isFinite and isInfinite [v6]

Srinivas Vamsi Parasa duke at openjdk.java.net
Wed May 18 05:57:52 UTC 2022


On Fri, 29 Apr 2022 00:36:18 GMT, Vladimir Kozlov <kvn at openjdk.org> wrote:

> Impressive. Few comments.
> 
> You are testing performance of storing `boolean` results into array but usually these Java methods used in conditions. Measuring that will be more real word case. For both case: with `avx512dq` On and OFF.
> 
> And you need to post you perf results at least in RFE. Please, also show what instructions are currently generated vs your changes. I don't get how you made `isNaN()` faster - you generate more instructions is seems.
> 
> Instead of 3 new Ideal nodes per type you can use one and store instrinsic id (or other enum) in its field which you can read in `.ad` file instructions. Instead I suggest to split those mach instructions based on `avx512dq` support to avoid unused registers killing.
> 
> Why Double type support is limited to LP64? Why there is no `x86_32.ad` changes?
> 
> You can reuse `tmp1` in `double_class_check()`.

Hi Vladimir (@vnkozlov),
Sorry for the delay! 
As per your suggestions, the JMH benchmarks were updated to use these Java methods in conditions and updated the RFE with performance data with and without the vfpclassss/d instructions. Also removed the redundant temp2 as per your suggestion.
Will work on condensing the 3 nodes to one and add support for x86_32.ad.

Thanks,
Vamsi

-------------

PR: https://git.openjdk.java.net/jdk/pull/8459


More information about the hotspot-compiler-dev mailing list