RFR: 8345169: Implement JEP XXX: Remove the 32-bit x86 Port
Aleksey Shipilev
shade at openjdk.org
Thu Jan 9 09:38:38 UTC 2025
On Thu, 9 Jan 2025 01:17:49 GMT, David Holmes <dholmes at openjdk.org> wrote:
>> These are interpreter "intrinsics" that are only implemented on x86_32 to handle x87 FPU pecularities. Look around for `TemplateInterpreterGenerator::generate_Float_intBitsToFloat_entry`, for example.
>
> Hmmm ... okay ... I see something "special" is done only on x86_32, but what is done seems to have nothing to do with x87 code.
>
> Just to be clear these Java methods still get intrinsified, it is just handled in a different way - right?
It *is* about x87 handling of NaNs, a common problem for x86_32 code in Hotspot, you can read about this mess in [JDK-8076373](https://bugs.openjdk.org/browse/JDK-8076373), if you are interested. If we allow to use native implementations of these conversion methods, we get into trouble with NaNs. What these interpreter intrinsics do on x86_32: going for SSE if available, thus avoiding x87. Since this is a correctness problem, these intrinsics go all the way down to interpreter as well. There is still a gaping hole when SSE is not available, but then we have no choice than to use x87 and have all the relevant issues.
But all of this is only a headache for x86_32, all other platforms do not have these interpreter intrinsics implemented. With x86_32 going away, we can finally yank these and relevant scaffolding out.
The C1/C2 intrinsics are still up and enabled for supported platforms: those are for performance :)
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/22567#discussion_r1908436596
More information about the shenandoah-dev
mailing list