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

Vladimir Kozlov kvn at openjdk.org
Thu Mar 9 03:32:15 UTC 2023


On Thu, 9 Mar 2023 02:19:44 GMT, David Holmes <dholmes at openjdk.org> wrote:

>> 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`.
>
> src/hotspot/cpu/x86/vm_version_x86.cpp line 3230:
> 
>> 3228:   case vmIntrinsics::_floatToFloat16:
>> 3229:   case vmIntrinsics::_float16ToFloat:
>> 3230:     if (!supports_f16c() && !supports_avx512vl()) return false;
> 
> Please put the return on a new line - it is too easy to just see the break.

Okay.

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

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


More information about the hotspot-compiler-dev mailing list