RFR: 8303415: Add VM_Version::is_intrinsic_supported(id)

Vladimir Kozlov kvn at openjdk.org
Fri Mar 3 16:24:11 UTC 2023


Currently we check VM flags, directives and JIT compiler support when we generate intrinsics. 
We have *product* VM flags for most intrinsics and set them in VM based on HW support. 
But not all intrinsics have such flags and it is not scalable to add new *product* flag for each new intrinsic. 
Also we have `-XX:DisableIntrinsic=<id>` and `-XX:ControlIntrinsic=<id>` flags to control intrinsics from command line. We don't need specific flags for that. 

I propose to add new `VM_Version::is_intrinsic_supported(id)` method to check platform support for intrinsic without adding new flag. I used it for `_floatToFloat16` intrinsic for my work on [JDK-8302976](https://bugs.openjdk.org/browse/JDK-8302976).

Additional fixes:
Fixed Interpreter to skip intrinsics if they are disabled with flag.
Moved Interpreter's `InlineIntrinsics` flag check into one place in shared code.
Added separate interpreter id for `_dsqrt_strict` so it could be disabled separately from regular `_dsqrt`.
Added missing `native` mark to `_currentThread`.
Removed unused `AbstractInterpreter::in_native_entry()`.
Cleanup C2 intrinsic checks code.

Tested tier1-4,xcomp,stress. Also ran tier1-3,xcomp with `-XX:-InlineIntrinsics`.

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

Commit messages:
 - 8303415: Add VM_Version::is_intrinsic_supported(id)

Changes: https://git.openjdk.org/jdk/pull/12858/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=12858&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8303415
  Stats: 335 lines in 25 files changed: 214 ins; 82 del; 39 mod
  Patch: https://git.openjdk.org/jdk/pull/12858.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/12858/head:pull/12858

PR: https://git.openjdk.org/jdk/pull/12858


More information about the hotspot-dev mailing list