[OpenCL] Add decls for cl_intel_bfloat16_conversions (#150393)

These map to SPIR-V instructions, which are long supported by the llvm
SPIR-V target [1] and the llvm-spirv translator [2].

Intel's offline compiler (ocloc) and OpenCL implementation trivially
supports these, by having these same declarations [3] and relying on
llvm-spirv to map calls to them to their corresponding SPIR-V
instructions.

[1]:
531cf8298b/llvm/lib/Target/SPIRV/SPIRVBuiltins.td (L1546C11-L1546C27)
[2]:
10c7569b3c/lib/SPIRV/OCLUtil.h (L327)
[3]:
342c4fb729/IGC/BiFModule/Languages/OpenCL/opencl_cth_released.h (L6899)
This commit is contained in:
Mészáros Gergely 2025-07-29 15:14:41 +02:00 committed by GitHub
parent 29e02d792b
commit b5fe3eb2d1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -18410,6 +18410,22 @@ intel_sub_group_avc_mce_convert_to_sic_result(
#pragma OPENCL EXTENSION cl_intel_device_side_avc_motion_estimation : end #pragma OPENCL EXTENSION cl_intel_device_side_avc_motion_estimation : end
#endif // cl_intel_device_side_avc_motion_estimation #endif // cl_intel_device_side_avc_motion_estimation
#if defined(cl_intel_bfloat16_conversions)
ushort __ovld intel_convert_bfloat16_as_ushort(float source);
ushort2 __ovld intel_convert_bfloat162_as_ushort2(float2 source);
ushort3 __ovld intel_convert_bfloat163_as_ushort3(float3 source);
ushort4 __ovld intel_convert_bfloat164_as_ushort4(float4 source);
ushort8 __ovld intel_convert_bfloat168_as_ushort8(float8 source);
ushort16 __ovld intel_convert_bfloat1616_as_ushort16(float16 source);
float __ovld intel_convert_as_bfloat16_float(ushort source);
float2 __ovld intel_convert_as_bfloat162_float2(ushort2 source);
float3 __ovld intel_convert_as_bfloat163_float3(ushort3 source);
float4 __ovld intel_convert_as_bfloat164_float4(ushort4 source);
float8 __ovld intel_convert_as_bfloat168_float8(ushort8 source);
float16 __ovld intel_convert_as_bfloat1616_float16(ushort16 source);
#endif // cl_intel_bfloat16_conversions
#ifdef cl_amd_media_ops #ifdef cl_amd_media_ops
uint __ovld amd_bitalign(uint, uint, uint); uint __ovld amd_bitalign(uint, uint, uint);
uint2 __ovld amd_bitalign(uint2, uint2, uint2); uint2 __ovld amd_bitalign(uint2, uint2, uint2);