Imported Upstream version 4.8.1
[platform/upstream/gcc48.git] / gcc / testsuite / gcc.target / aarch64 / atomic-op-acquire.c
1 /* { dg-do compile } */
2 /* { dg-options "-O2" } */
3
4 int v = 0;
5
6 int
7 atomic_fetch_add_ACQUIRE (int a)
8 {
9   return __atomic_fetch_add (&v, a, __ATOMIC_ACQUIRE);
10 }
11
12 int
13 atomic_fetch_sub_ACQUIRE (int a)
14 {
15   return __atomic_fetch_sub (&v, a, __ATOMIC_ACQUIRE);
16 }
17
18 int
19 atomic_fetch_and_ACQUIRE (int a)
20 {
21   return __atomic_fetch_and (&v, a, __ATOMIC_ACQUIRE);
22 }
23
24 int
25 atomic_fetch_nand_ACQUIRE (int a)
26 {
27   return __atomic_fetch_nand (&v, a, __ATOMIC_ACQUIRE);
28 }
29
30 int
31 atomic_fetch_xor_ACQUIRE (int a)
32 {
33   return __atomic_fetch_xor (&v, a, __ATOMIC_ACQUIRE);
34 }
35
36 int
37 atomic_fetch_or_ACQUIRE (int a)
38 {
39   return __atomic_fetch_or (&v, a, __ATOMIC_ACQUIRE);
40 }
41
42 /* { dg-final { scan-assembler-times "ldaxr\tw\[0-9\]+, \\\[x\[0-9\]+\\\]" 6 } } */
43 /* { dg-final { scan-assembler-times "stxr\tw\[0-9\]+, w\[0-9\]+, \\\[x\[0-9\]+\\\]" 6 } } */