[all-commits] [llvm/llvm-project] c474f8: [clang][SPIRV] Add builtin for OpGenericCastToPtrE...

Victor Lomuller via All-commits all-commits at lists.llvm.org
Thu May 29 06:20:02 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: c474f8f2404dfe5a902cdf93d678a0bfe8cc8f44
      https://github.com/llvm/llvm-project/commit/c474f8f2404dfe5a902cdf93d678a0bfe8cc8f44
  Author: Victor Lomuller <victor at codeplay.com>
  Date:   2025-05-29 (Thu, 29 May 2025)

  Changed paths:
    R clang/include/clang/Basic/BuiltinsSPIRV.td
    A clang/include/clang/Basic/BuiltinsSPIRVBase.td
    A clang/include/clang/Basic/BuiltinsSPIRVCL.td
    A clang/include/clang/Basic/BuiltinsSPIRVCommon.td
    A clang/include/clang/Basic/BuiltinsSPIRVVK.td
    M clang/include/clang/Basic/CMakeLists.txt
    M clang/include/clang/Basic/DiagnosticSemaKinds.td
    M clang/include/clang/Basic/TargetBuiltins.h
    M clang/include/clang/Sema/SemaSPIRV.h
    M clang/lib/AST/ASTContext.cpp
    M clang/lib/Basic/Targets/SPIR.cpp
    M clang/lib/Basic/Targets/SPIR.h
    M clang/lib/CodeGen/CGBuiltin.cpp
    M clang/lib/CodeGen/TargetBuiltins/SPIR.cpp
    M clang/lib/Headers/CMakeLists.txt
    A clang/lib/Headers/__clang_spirv_builtins.h
    M clang/lib/Sema/SemaChecking.cpp
    M clang/lib/Sema/SemaDeclAttr.cpp
    M clang/lib/Sema/SemaSPIRV.cpp
    A clang/test/CodeGenSPIRV/Builtins/generic_cast_to_ptr_explicit.c
    A clang/test/Headers/spirv_functions.cpp
    A clang/test/SemaSPIRV/BuiltIns/generic_cast_to_ptr_explicit.c
    A clang/test/SemaSPIRV/BuiltIns/invalid_target_cl.c
    A clang/test/SemaSPIRV/BuiltIns/invalid_target_vk.c

  Log Message:
  -----------
  [clang][SPIRV] Add builtin for OpGenericCastToPtrExplicit and its SPIR-V friendly binding (#137805)

The patch introduce __builtin_spirv_generic_cast_to_ptr_explicit which
is lowered to the llvm.spv.generic.cast.to.ptr.explicit intrinsic.

The SPIR-V builtins are now split into 3 differents file:
BuiltinsSPIRVCore.td,
BuiltinsSPIRVVK.td for Vulkan specific builtins, BuiltinsSPIRVCL.td for
OpenCL specific builtins
and BuiltinsSPIRVCommon.td for common ones.

The patch also introduces a new header defining its SPIR-V friendly
equivalent (__spirv_GenericCastToPtrExplicit_ToGlobal,
__spirv_GenericCastToPtrExplicit_ToLocal and
__spirv_GenericCastToPtrExplicit_ToPrivate). The functions are declared
as aliases to the new builtin allowing C-like languages to have a
definition to rely on as well as gaining proper front-end diagnostics.

The motivation for the header is to provide a stable binding for
applications or library (such as SYCL) and allows non SPIR-V targets to
provide an implementation (via libclc or similar to how it is done for
gpuintrin.h).



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list