1 /* { dg-do compile } */
2 /* { dg-options "-O2 -std=c99" } */
3 /* { dg-final { check-function-bodies "**" "" "" } } */
4 #include <stdatomic.h>
5
6 #pragma GCC target "arch=armv8.4-a"
7
8 atomic_ullong u64;
9 atomic_llong s64;
10 atomic_uint u32;
11 atomic_int s32;
12 atomic_ushort u16;
13 atomic_short s16;
14 atomic_uchar u8;
15 atomic_schar s8;
16
17 #define TEST(name, ldsize, rettype) \
18 rettype \
19 test_##name (void) \
20 { \
21 return atomic_load_explicit (&ldsize, memory_order_acquire); \
22 }
23
24 /*
25 **test_s8_s64:
26 **...
27 ** ldapursb x0, \[x[0-9]+\]
28 ** ret
29 */
30
31 TEST(s8_s64, s8, long long)
32
33 /*
34 **test_s16_s64:
35 **...
36 ** ldapursh x0, \[x[0-9]+\]
37 ** ret
38 */
39
40 TEST(s16_s64, s16, long long)
41
42 /*
43 **test_s32_s64:
44 **...
45 ** ldapursw x0, \[x[0-9]+\]
46 ** ret
47 */
48
49 TEST(s32_s64, s32, long long)
50
51 /*
52 **test_s8_s32:
53 **...
54 ** ldapursb w0, \[x[0-9]+\]
55 ** ret
56 */
57
58 TEST(s8_s32, s8, int)
59
60 /*
61 **test_s16_s32:
62 **...
63 ** ldapursh w0, \[x[0-9]+\]
64 ** ret
65 */
66
67 TEST(s16_s32, s16, int)