Skip to content

Commit b5fe3eb

Browse files
authored
[OpenCL] Add decls for cl_intel_bfloat16_conversions (llvm#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]: https://github.com/llvm/llvm-project/blob/531cf8298b08eacdf670bac8c28db97a5dc8cb01/llvm/lib/Target/SPIRV/SPIRVBuiltins.td#L1546C11-L1546C27 [2]: https://github.com/KhronosGroup/SPIRV-LLVM-Translator/blob/10c7569b3c4cb456fbfdcc86c3de45d46c7f5fa8/lib/SPIRV/OCLUtil.h#L327 [3]: https://github.com/intel/intel-graphics-compiler/blob/342c4fb729ff6a20a41e19adc8329ad18ba05660/IGC/BiFModule/Languages/OpenCL/opencl_cth_released.h#L6899
1 parent 29e02d7 commit b5fe3eb

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

clang/lib/Headers/opencl-c.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18410,6 +18410,22 @@ intel_sub_group_avc_mce_convert_to_sic_result(
1841018410
#pragma OPENCL EXTENSION cl_intel_device_side_avc_motion_estimation : end
1841118411
#endif // cl_intel_device_side_avc_motion_estimation
1841218412

18413+
#if defined(cl_intel_bfloat16_conversions)
18414+
ushort __ovld intel_convert_bfloat16_as_ushort(float source);
18415+
ushort2 __ovld intel_convert_bfloat162_as_ushort2(float2 source);
18416+
ushort3 __ovld intel_convert_bfloat163_as_ushort3(float3 source);
18417+
ushort4 __ovld intel_convert_bfloat164_as_ushort4(float4 source);
18418+
ushort8 __ovld intel_convert_bfloat168_as_ushort8(float8 source);
18419+
ushort16 __ovld intel_convert_bfloat1616_as_ushort16(float16 source);
18420+
18421+
float __ovld intel_convert_as_bfloat16_float(ushort source);
18422+
float2 __ovld intel_convert_as_bfloat162_float2(ushort2 source);
18423+
float3 __ovld intel_convert_as_bfloat163_float3(ushort3 source);
18424+
float4 __ovld intel_convert_as_bfloat164_float4(ushort4 source);
18425+
float8 __ovld intel_convert_as_bfloat168_float8(ushort8 source);
18426+
float16 __ovld intel_convert_as_bfloat1616_float16(ushort16 source);
18427+
#endif // cl_intel_bfloat16_conversions
18428+
1841318429
#ifdef cl_amd_media_ops
1841418430
uint __ovld amd_bitalign(uint, uint, uint);
1841518431
uint2 __ovld amd_bitalign(uint2, uint2, uint2);

0 commit comments

Comments
 (0)