1 // SPDX-License-Identifier: MIT
5 #include <rseq/compiler.h>
16 #if RSEQ_BITS_PER_LONG == 64
28 .v_u32
= (0x11223344),
29 .v_s32
= -(0x11223344),
30 #if RSEQ_BITS_PER_LONG == 64
31 .v_u64
= 0x1122334455667788ULL
,
32 .v_s64
= -(0x1122334455667788LL
),
33 .p
= (void *)0x1122334455667788ULL
,
35 .p
= (void *)0x11223344,
37 .vol_int
= -(0x11223344),
38 .const_int
= -(0x11223344),
42 void test_load_acquire(void)
44 ok(rseq_smp_load_acquire(&load_s
.v_u8
) == 0x11, "load-acquire u8");
45 ok(rseq_smp_load_acquire(&load_s
.v_s8
) == -(0x11), "load-acquire s8");
46 ok(rseq_smp_load_acquire(&load_s
.v_u16
) == 0x1122, "load-acquire u16");
47 ok(rseq_smp_load_acquire(&load_s
.v_s16
) == -(0x1122), "load-acquire s16");
48 ok(rseq_smp_load_acquire(&load_s
.v_u32
) == 0x11223344, "load-acquire u32");
49 ok(rseq_smp_load_acquire(&load_s
.v_s32
) == -(0x11223344), "load-acquire s32");
50 #if RSEQ_BITS_PER_LONG == 64
51 ok(rseq_smp_load_acquire(&load_s
.v_u64
) == 0x1122334455667788ULL
, "load-acquire u64");
52 ok(rseq_smp_load_acquire(&load_s
.v_s64
) == -(0x1122334455667788LL
), "load-acquire s64");
53 ok(rseq_smp_load_acquire(&load_s
.p
) == (void *)0x1122334455667788ULL
, "load-acquire pointer");
55 ok(rseq_smp_load_acquire(&load_s
.p
) == (void *)0x11223344, "load-acquire pointer");
57 ok(rseq_smp_load_acquire(&load_s
.vol_int
) == -(0x11223344), "load-acquire volatile int");
58 ok(rseq_smp_load_acquire(&load_s
.const_int
) == -(0x11223344), "load-acquire const int");
68 #if RSEQ_BITS_PER_LONG == 64
77 void test_store_release(void)
79 rseq_smp_store_release(&store_s
.v_u8
, 0x11);
80 ok(store_s
.v_u8
== 0x11, "store-release u8");
81 rseq_smp_store_release(&store_s
.v_s8
, -(0x11));
82 ok(store_s
.v_s8
== -(0x11), "store-release s8");
83 rseq_smp_store_release(&store_s
.v_u16
, 0x1122);
84 ok(store_s
.v_u16
== 0x1122, "store-release u16");
85 rseq_smp_store_release(&store_s
.v_s16
, -(0x1122));
86 ok(store_s
.v_s16
== -(0x1122), "store-release s16");
87 rseq_smp_store_release(&store_s
.v_u32
, 0x11223344);
88 ok(store_s
.v_u32
== 0x11223344, "store-release u32");
89 rseq_smp_store_release(&store_s
.v_s32
, -(0x11223344));
90 ok(store_s
.v_s32
== -(0x11223344), "store-release s32");
91 #if RSEQ_BITS_PER_LONG == 64
92 rseq_smp_store_release(&store_s
.v_u64
, 0x1122334455667788ULL
);
93 ok(store_s
.v_u64
== 0x1122334455667788ULL
, "store-release u64");
94 rseq_smp_store_release(&store_s
.v_s64
, -(0x1122334455667788LL
));
95 ok(store_s
.v_s64
== -(0x1122334455667788LL
), "store-release s64");
96 rseq_smp_store_release(&store_s
.p
, (void *)0x1122334455667788ULL
);
97 ok(store_s
.p
== (void *)0x1122334455667788ULL
, "store-release pointer");
99 rseq_smp_store_release(&store_s
.p
, (void *)0x11223344);
100 ok(store_s
.p
== (void *)0x11223344, "store-release pointer");
102 rseq_smp_store_release(&store_s
.vol_int
, -(0x11223344));
103 ok(store_s
.vol_int
== -(0x11223344), "store-release volatile int");
110 test_store_release();
This page took 0.031109 seconds and 4 git commands to generate.