llvm-project
b32a2f41 - [Clang][OpenCL][AMDGPU] Allow _Float16 and half vector type compatibility (#170605)

Commit
133 days ago
[Clang][OpenCL][AMDGPU] Allow _Float16 and half vector type compatibility (#170605) ## Summary Allowing implicit compatibility between `_Float16` vector types and `half` vector types in OpenCL mode. This enables AMDGPU builtins to work correctly across OpenCL, HIP, and C++ without requiring separate builtin definitions. ## Problem Statement When using AMDGPU image builtins that return half-precision vectors in OpenCL, users encounter type incompatibility errors: **Builtin Definition:** `TARGET_BUILTIN(__builtin_amdgcn_image_load_1d_v4f16_i32, "V4xiiQtii", "nc", "image-insts")` **Test Case:** ``` typedef half half4 __attribute__((ext_vector_type(4))); half4 test_builtin_image_load_1d_2(half4 v4f16, int i32, __amdgpu_texture_t tex) { return __builtin_amdgcn_image_load_1d_v4f16_i32(100, i32, tex, 120, i32); } ``` **Error:** ``` error: returning '__attribute__((__vector_size__(4 * sizeof(_Float16)))) _Float16' (vector of 4 '_Float16' values) from a function with incompatible result type 'half4' (vector of 4 'half' values) ``` ## Solution In OpenCL, allow implicit compatibility between `_Float16` vector types and `half` vector types. This is needed for AMDGPU builtins that may return _Float16 vectors to work correctly with OpenCL half vector types.
Author
Parents
Loading