| ;; OpenCL C source: |
| ;; #pragma OPENCL EXTENSION cl_khr_int64_base_atomics : enable |
| ;; #pragma OPENCL EXTENSION cl_khr_int64_extended_atomics : enable |
| ;; |
| ;; void foo (volatile atomic_long *object, long *expected, long desired) { |
| ;; atomic_compare_exchange_weak(object, expected, desired); |
| ;; } |
| |
| ; RUN: llc -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s |
| ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64v1.2-unknown-unknown %s -o - -filetype=obj | spirv-val %} |
| |
| ; CHECK: OpCapability Int64Atomics |
| |
| define spir_func void @foo(ptr addrspace(4) %object, ptr addrspace(4) %expected, i64 %desired) { |
| entry: |
| %call = tail call spir_func zeroext i1 @_Z28atomic_compare_exchange_weakPVU3AS4U7_AtomiclPU3AS4ll(ptr addrspace(4) %object, ptr addrspace(4) %expected, i64 %desired) |
| ret void |
| } |
| |
| declare spir_func zeroext i1 @_Z28atomic_compare_exchange_weakPVU3AS4U7_AtomiclPU3AS4ll(ptr addrspace(4), ptr addrspace(4), i64) |