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