[clang] [clang][SPIRV] Add builtin for OpGenericCastToPtrExplicit and its SPIR-V friendly binding (PR #137805)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 29 06:17:52 PDT 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff HEAD~1 HEAD --extensions h,cpp,c -- clang/lib/Headers/__clang_spirv_builtins.h clang/test/CodeGenSPIRV/Builtins/generic_cast_to_ptr_explicit.c clang/test/Headers/spirv_functions.cpp clang/test/SemaSPIRV/BuiltIns/generic_cast_to_ptr_explicit.c clang/lib/AST/ASTContext.cpp clang/lib/Basic/Targets/SPIR.cpp clang/lib/Basic/Targets/SPIR.h clang/lib/CodeGen/CGBuiltin.cpp clang/lib/CodeGen/TargetBuiltins/SPIR.cpp clang/lib/Sema/SemaChecking.cpp clang/lib/Sema/SemaDeclAttr.cpp clang/lib/Sema/SemaSPIRV.cpp
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp
index e526e0b62..85309186b 100644
--- a/clang/lib/CodeGen/CGBuiltin.cpp
+++ b/clang/lib/CodeGen/CGBuiltin.cpp
@@ -99,7 +99,7 @@ static Value *EmitTargetArchBuiltinExpr(CodeGenFunction *CGF,
case llvm::Triple::spirv:
case llvm::Triple::spirv32:
case llvm::Triple::spirv64:
- if (CGF->getTarget().getTriple().getOS() != llvm::Triple::OSType::AMDHSA)
+ if (CGF->getTarget().getTriple().getOS() != llvm::Triple::OSType::AMDHSA)
return CGF->EmitSPIRVBuiltinExpr(BuiltinID, E);
return CGF->EmitAMDGPUBuiltinExpr(BuiltinID, E);
default:
diff --git a/clang/lib/Headers/__clang_spirv_builtins.h b/clang/lib/Headers/__clang_spirv_builtins.h
index 0b23fc87b..e344ed525 100644
--- a/clang/lib/Headers/__clang_spirv_builtins.h
+++ b/clang/lib/Headers/__clang_spirv_builtins.h
@@ -37,7 +37,7 @@
// if we do not intent to use the backend. So instead of use target macros, rely
// on a __has_builtin test.
#if (__has_builtin(__builtin_spirv_generic_cast_to_ptr_explicit))
-#define __SPIRV_BUILTIN_ALIAS(builtin) \
+#define __SPIRV_BUILTIN_ALIAS(builtin) \
__attribute__((clang_builtin_alias(builtin)))
#else
#define __SPIRV_BUILTIN_ALIAS(builtin)
@@ -85,8 +85,9 @@ __spirv_GenericCastToPtrExplicit_ToLocal(__generic const volatile void *,
int) __SPIRV_NOEXCEPT;
extern __SPIRV_overloadable
__SPIRV_BUILTIN_ALIAS(__builtin_spirv_generic_cast_to_ptr_explicit)
-__private void *__spirv_GenericCastToPtrExplicit_ToPrivate(__generic void *,
- int) __SPIRV_NOEXCEPT;
+__private void *
+__spirv_GenericCastToPtrExplicit_ToPrivate(__generic void *,
+ int) __SPIRV_NOEXCEPT;
extern __SPIRV_overloadable
__SPIRV_BUILTIN_ALIAS(__builtin_spirv_generic_cast_to_ptr_explicit)
__private const void *
@@ -110,7 +111,8 @@ __spirv_GenericCastToPtr_ToGlobal(__generic void *p, int) __SPIRV_NOEXCEPT {
return (__global void *)p;
}
static __SPIRV_overloadable __SPIRV_inline __global const void *
-__spirv_GenericCastToPtr_ToGlobal(__generic const void *p, int) __SPIRV_NOEXCEPT {
+__spirv_GenericCastToPtr_ToGlobal(__generic const void *p,
+ int) __SPIRV_NOEXCEPT {
return (__global const void *)p;
}
static __SPIRV_overloadable __SPIRV_inline __global volatile void *
@@ -128,7 +130,8 @@ __spirv_GenericCastToPtr_ToLocal(__generic void *p, int) __SPIRV_NOEXCEPT {
return (__local void *)p;
}
static __SPIRV_overloadable __SPIRV_inline __local const void *
-__spirv_GenericCastToPtr_ToLocal(__generic const void *p, int) __SPIRV_NOEXCEPT {
+__spirv_GenericCastToPtr_ToLocal(__generic const void *p,
+ int) __SPIRV_NOEXCEPT {
return (__local const void *)p;
}
static __SPIRV_overloadable __SPIRV_inline __local volatile void *
diff --git a/clang/lib/Sema/SemaSPIRV.cpp b/clang/lib/Sema/SemaSPIRV.cpp
index 9282d02bc..d5b37e0b8 100644
--- a/clang/lib/Sema/SemaSPIRV.cpp
+++ b/clang/lib/Sema/SemaSPIRV.cpp
@@ -117,13 +117,16 @@ static bool checkGenericCastToPtr(Sema &SemaRef, CallExpr *Call) {
LangAS AddrSpace;
switch (static_cast<spirv::StorageClass>(StorageClass)) {
case spirv::StorageClass::CrossWorkgroup:
- AddrSpace = SemaRef.LangOpts.isSYCL() ? LangAS::sycl_global : LangAS::opencl_global;
+ AddrSpace =
+ SemaRef.LangOpts.isSYCL() ? LangAS::sycl_global : LangAS::opencl_global;
break;
case spirv::StorageClass::Workgroup:
- AddrSpace = SemaRef.LangOpts.isSYCL() ? LangAS::sycl_local : LangAS::opencl_local;
+ AddrSpace =
+ SemaRef.LangOpts.isSYCL() ? LangAS::sycl_local : LangAS::opencl_local;
break;
case spirv::StorageClass::Function:
- AddrSpace = SemaRef.LangOpts.isSYCL() ? LangAS::sycl_private : LangAS::opencl_private;
+ AddrSpace = SemaRef.LangOpts.isSYCL() ? LangAS::sycl_private
+ : LangAS::opencl_private;
break;
default:
llvm_unreachable("Invalid builtin function");
``````````
</details>
https://github.com/llvm/llvm-project/pull/137805
More information about the cfe-commits
mailing list