Skip to content

Commit 5167331

Browse files
committed
Add lit test
1 parent b58c27d commit 5167331

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// RUN: %clangxx -fsycl-device-only -fsycl-targets=native_cpu -S -emit-llvm -o %t_temp.ll %s
2+
// RUN: %clangxx -mllvm -sycl-native-cpu-backend -S -emit-llvm -o - %t_temp.ll | FileCheck %s
3+
#include <sycl/sycl.hpp>
4+
5+
constexpr sycl::memory_order order = sycl::memory_order::relaxed;
6+
constexpr sycl::memory_scope scope = sycl::memory_scope::work_group;
7+
constexpr sycl::access::address_space space =
8+
sycl::access::address_space::global_space;
9+
10+
class Test;
11+
using namespace sycl;
12+
int main() {
13+
queue q;
14+
const size_t N = 32;
15+
float sum = 0;
16+
std::vector<float> output(N);
17+
std::fill(output.begin(), output.end(), 0.f);
18+
{
19+
buffer<float> sum_buf(&sum, 1);
20+
q.submit([&](handler &cgh) {
21+
auto sum = sum_buf.template get_access<access::mode::read_write>(cgh);
22+
cgh.parallel_for<Test>(range<1>(N), [=](item<1> it) {
23+
int gid = it.get_id(0);
24+
auto atm = atomic_ref<float, order, scope, space>(sum[0]);
25+
atm.fetch_add(1.f, order);
26+
//CHECK-DAG: float @_Z21__spirv_AtomicFAddEXT{{.*}}(ptr {{.*}} %[[ARG0:.*]], i32 {{.*}}, i32 {{.*}}, float {{.*}} %[[ARG3:.*]])
27+
//CHECK: %[[RES:.*]] = atomicrmw fadd ptr addrspace(1) %[[ARG0]], float %[[ARG3]] monotonic, align 4
28+
//CHECK: ret float %[[RES]]
29+
atm.fetch_max(1.f, order);
30+
//CHECK-DAG: float @_Z21__spirv_AtomicFMaxEXT{{.*}}(ptr {{.*}} %[[ARG0:.*]], i32 {{.*}}, i32 {{.*}}, float {{.*}} %[[ARG3:.*]])
31+
//CHECK: %[[RES:.*]] = atomicrmw fmax ptr addrspace(1) %[[ARG0]], float %[[ARG3]] monotonic, align 4
32+
//CHECK: ret float %[[RES]]
33+
atm.fetch_min(1.f, order);
34+
//CHECK-DAG: float @_Z21__spirv_AtomicFMinEXT{{.*}}(ptr {{.*}} %[[ARG0:.*]], i32 {{.*}}, i32 {{.*}}, float {{.*}} %[[ARG3:.*]])
35+
//CHECK: %[[RES:.*]] = atomicrmw fmin ptr addrspace(1) %[[ARG0]], float %[[ARG3]] monotonic, align 4
36+
//CHECK: ret float %[[RES]]
37+
});
38+
}).wait_and_throw();
39+
}
40+
}

0 commit comments

Comments
 (0)