blob: a63df2ba1c5681fc62f730d5758a6ea290953f7d [file] [log] [blame]
/* Check that atomic ops utilize insns with immediate values. */
#define emitfuncs(name)\
void test_ ## name ## _0 (char* mem)\
{\
name (mem, 1, __ATOMIC_ACQ_REL);\
}\
void test_ ## name ## _1 (short* mem)\
{\
name (mem, 1, __ATOMIC_ACQ_REL);\
}\
void test_ ## name ##_2 (int* mem)\
{\
name (mem, 1, __ATOMIC_ACQ_REL);\
}\
emitfuncs (__atomic_add_fetch)
emitfuncs (__atomic_fetch_add)
emitfuncs (__atomic_sub_fetch)
emitfuncs (__atomic_fetch_sub)
emitfuncs (__atomic_and_fetch)
emitfuncs (__atomic_fetch_and)
emitfuncs (__atomic_or_fetch)
emitfuncs (__atomic_fetch_or)
emitfuncs (__atomic_xor_fetch)
emitfuncs (__atomic_fetch_xor)
emitfuncs (__atomic_nand_fetch)
emitfuncs (__atomic_fetch_nand)
void
test___atomic_compare_exchange_0 (char* mem)
{
char expected = 1;
char desired = 5;
__atomic_compare_exchange (mem, &expected, &desired, 0, __ATOMIC_ACQ_REL,
__ATOMIC_RELAXED);
}
void
test___atomic_compare_exchange_1 (short* mem)
{
short expected = 1;
short desired = 5;
__atomic_compare_exchange (mem, &expected, &desired, 0, __ATOMIC_ACQ_REL,
__ATOMIC_RELAXED);
}
void
test___atomic_compare_exchange_2 (int* mem)
{
int expected = 1;
int desired = 5;
__atomic_compare_exchange (mem, &expected, &desired, 0, __ATOMIC_ACQ_REL,
__ATOMIC_RELAXED);
}