xref: /llvm-project/llvm/test/CodeGen/XCore/atomic.ll (revision f1987c74ee5637ec248675a9a7070654167a5260)
1; RUN: llc < %s -mtriple=xcore | FileCheck %s
2
3; CHECK-LABEL: atomic_fence
4; CHECK: #MEMBARRIER
5; CHECK: #MEMBARRIER
6; CHECK: #MEMBARRIER
7; CHECK: #MEMBARRIER
8; CHECK: retsp 0
9define void @atomic_fence() nounwind {
10entry:
11  fence acquire
12  fence release
13  fence acq_rel
14  fence seq_cst
15  ret void
16}
17
18@pool = external global i64
19
20define void @atomicloadstore() nounwind {
21entry:
22; CHECK-LABEL: atomicloadstore
23
24; CHECK: __atomic_load_4
25  %0 = load atomic i32, ptr @pool seq_cst, align 4
26
27; CHECK: __atomic_load_2
28  %1 = load atomic i16, ptr @pool seq_cst, align 2
29
30; CHECK: __atomic_load_1
31  %2 = load atomic i8, ptr @pool seq_cst, align 1
32
33; CHECK: __atomic_store_4
34  store atomic i32 %0, ptr @pool seq_cst, align 4
35
36; CHECK: __atomic_store_2
37  store atomic i16 %1, ptr @pool seq_cst, align 2
38
39; CHECK: __atomic_store_1
40  store atomic i8 %2, ptr @pool seq_cst, align 1
41
42  ret void
43}
44