[clang] [AMDGPU][Clang] Support for type inferring extended image builtins for AMDGPU (PR #164358)
Juan Manuel Martinez CaamaƱo via cfe-commits
cfe-commits at lists.llvm.org
Wed Oct 29 01:35:08 PDT 2025
================
@@ -3,7 +3,7 @@
typedef int int4 __attribute__((ext_vector_type(4)));
typedef float float4 __attribute__((ext_vector_type(4)));
-typedef half half4 __attribute__((ext_vector_type(4)));
+typedef _Float16 half4 __attribute__((ext_vector_type(4)));
----------------
jmmartinez wrote:
> adding a new case requires new builtin def. one for HIP and another for OpenCL.
Not necessarly. Instead of describing the builtin signature as `"V4xiffQtV4ibii"` we add a new case, let's say `X` which becomes `__fp16` on OpenCL and `_Float16` on HIP. The previous signature becomes `"V4XiffQtV4ibii"`.
And in the switch in `ASTContext.cpp:12405` we add a new case to handle it:
```cpp
case 'X':
assert(HowLong == 0 && !Signed && !Unsigned &&
"Bad modifiers used with 'X'!");
Type = Type = Context.getLangOpts().OpenCL ? Context.HalfTy : Context.Float16Ty;;
break;
```
At first sight, it looks strange to map one builtin to different types depending on the language. But it's what we already do for pointer address spaces (`v*3`, maps to `void __shared__*` on CUDA/HIP, `void __local__*` on OpenCL and `void __attribute__((addrspace(3)))*` for the rest).
https://github.com/llvm/llvm-project/pull/164358
More information about the cfe-commits
mailing list