[all-commits] [llvm/llvm-project] 9c26f3: [libclc] Add generic implementation of some atomic...

Wenju He via All-commits all-commits at lists.llvm.org
Thu Jul 17 17:09:35 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 9c26f37ce34de3be3550cbd67fcea534721724fd
      https://github.com/llvm/llvm-project/commit/9c26f37ce34de3be3550cbd67fcea534721724fd
  Author: Wenju He <wenju.he at intel.com>
  Date:   2025-07-18 (Fri, 18 Jul 2025)

  Changed paths:
    A libclc/clc/include/clc/atomic/atomic_decl.inc
    A libclc/clc/include/clc/atomic/clc_atomic_compare_exchange.h
    A libclc/clc/include/clc/atomic/clc_atomic_dec.h
    A libclc/clc/include/clc/atomic/clc_atomic_exchange.h
    A libclc/clc/include/clc/atomic/clc_atomic_fetch_add.h
    A libclc/clc/include/clc/atomic/clc_atomic_fetch_and.h
    A libclc/clc/include/clc/atomic/clc_atomic_fetch_max.h
    A libclc/clc/include/clc/atomic/clc_atomic_fetch_min.h
    A libclc/clc/include/clc/atomic/clc_atomic_fetch_or.h
    A libclc/clc/include/clc/atomic/clc_atomic_fetch_sub.h
    A libclc/clc/include/clc/atomic/clc_atomic_fetch_xor.h
    A libclc/clc/include/clc/atomic/clc_atomic_inc.h
    A libclc/clc/include/clc/atomic/clc_atomic_load.h
    A libclc/clc/include/clc/atomic/clc_atomic_store.h
    M libclc/clc/lib/generic/SOURCES
    A libclc/clc/lib/generic/atomic/clc_atomic_compare_exchange.cl
    A libclc/clc/lib/generic/atomic/clc_atomic_compare_exchange.inc
    A libclc/clc/lib/generic/atomic/clc_atomic_dec.cl
    A libclc/clc/lib/generic/atomic/clc_atomic_def.inc
    A libclc/clc/lib/generic/atomic/clc_atomic_exchange.cl
    A libclc/clc/lib/generic/atomic/clc_atomic_fetch_add.cl
    A libclc/clc/lib/generic/atomic/clc_atomic_fetch_and.cl
    A libclc/clc/lib/generic/atomic/clc_atomic_fetch_max.cl
    A libclc/clc/lib/generic/atomic/clc_atomic_fetch_min.cl
    A libclc/clc/lib/generic/atomic/clc_atomic_fetch_or.cl
    A libclc/clc/lib/generic/atomic/clc_atomic_fetch_sub.cl
    A libclc/clc/lib/generic/atomic/clc_atomic_fetch_xor.cl
    A libclc/clc/lib/generic/atomic/clc_atomic_inc.cl
    A libclc/clc/lib/generic/atomic/clc_atomic_load.cl
    A libclc/clc/lib/generic/atomic/clc_atomic_store.cl
    M libclc/opencl/include/clc/opencl/atomic/atomic_add.h
    M libclc/opencl/include/clc/opencl/atomic/atomic_and.h
    A libclc/opencl/include/clc/opencl/atomic/atomic_compare_exchange_strong.h
    A libclc/opencl/include/clc/opencl/atomic/atomic_compare_exchange_weak.h
    M libclc/opencl/include/clc/opencl/atomic/atomic_decl.inc
    A libclc/opencl/include/clc/opencl/atomic/atomic_decl_legacy.inc
    A libclc/opencl/include/clc/opencl/atomic/atomic_exchange.h
    A libclc/opencl/include/clc/opencl/atomic/atomic_fetch_add.h
    A libclc/opencl/include/clc/opencl/atomic/atomic_fetch_and.h
    A libclc/opencl/include/clc/opencl/atomic/atomic_fetch_max.h
    A libclc/opencl/include/clc/opencl/atomic/atomic_fetch_min.h
    A libclc/opencl/include/clc/opencl/atomic/atomic_fetch_or.h
    A libclc/opencl/include/clc/opencl/atomic/atomic_fetch_sub.h
    A libclc/opencl/include/clc/opencl/atomic/atomic_fetch_xor.h
    A libclc/opencl/include/clc/opencl/atomic/atomic_load.h
    M libclc/opencl/include/clc/opencl/atomic/atomic_max.h
    M libclc/opencl/include/clc/opencl/atomic/atomic_min.h
    M libclc/opencl/include/clc/opencl/atomic/atomic_or.h
    A libclc/opencl/include/clc/opencl/atomic/atomic_store.h
    M libclc/opencl/include/clc/opencl/atomic/atomic_sub.h
    M libclc/opencl/include/clc/opencl/atomic/atomic_xchg.h
    M libclc/opencl/include/clc/opencl/atomic/atomic_xor.h
    M libclc/opencl/lib/generic/SOURCES
    A libclc/opencl/lib/generic/atomic/atomic_compare_exchange_strong.cl
    A libclc/opencl/lib/generic/atomic/atomic_compare_exchange_weak.cl
    M libclc/opencl/lib/generic/atomic/atomic_dec.cl
    A libclc/opencl/lib/generic/atomic/atomic_def.inc
    A libclc/opencl/lib/generic/atomic/atomic_exchange.cl
    A libclc/opencl/lib/generic/atomic/atomic_fetch_add.cl
    A libclc/opencl/lib/generic/atomic/atomic_fetch_and.cl
    A libclc/opencl/lib/generic/atomic/atomic_fetch_max.cl
    A libclc/opencl/lib/generic/atomic/atomic_fetch_min.cl
    A libclc/opencl/lib/generic/atomic/atomic_fetch_or.cl
    A libclc/opencl/lib/generic/atomic/atomic_fetch_sub.cl
    A libclc/opencl/lib/generic/atomic/atomic_fetch_xor.cl
    M libclc/opencl/lib/generic/atomic/atomic_inc.cl
    A libclc/opencl/lib/generic/atomic/atomic_inc_dec.inc
    A libclc/opencl/lib/generic/atomic/atomic_load.cl
    A libclc/opencl/lib/generic/atomic/atomic_store.cl

  Log Message:
  -----------
  [libclc] Add generic implementation of some atomic functions in OpenCL spec section 6.15.12.7 (#146814)

Add corresponding clc functions, which are implemented with clang
__scoped_atomic builtins. OpenCL functions are implemented as a wrapper
over clc functions.

Also change legacy atomic_inc and atomic_dec to re-use the newly added
clc_atomic_inc/dec implementations. llvm-diff only no change to
atomic_inc and atomic_dec in bitcode.

Notes:
* Generic OpenCL built-ins functions uses __ATOMIC_SEQ_CST and
__MEMORY_SCOPE_DEVICE for memory order and memory scope parameters.
* OpenCL atomic_*_explicit, atomic_flag* built-ins are not implemented
yet.
* OpenCL built-ins of atomic_intptr_t, atomic_uintptr_t, atomic_size_t
and atomic_ptrdiff_t types are not implemented yet.
* llvm-diff shows no change to nvptx64--nvidiacl.bc and
amdgcn--amdhsa.bc since __opencl_c_atomic_order_seq_cst and
__opencl_c_atomic_scope_device are not defined in these two targets.



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