18 #define WORK_COUNT 10000
19 static volatile uint64_t
sink;
21 int main(
int argc,
char** argv) {
22 (void)argc; (void)argv;
26 uint64_t expected = 0xAAAAAAAAULL;
27 uint64_t desired = 0xBBBBBBBBULL;
28 uint64_t desired2 = 0xCCCCCCCCULL;
30 "movq %[e], %%rax\n\t"
31 "lock cmpxchgq %[d], (%[p])\n\t"
32 "movq %[d], %%rax\n\t"
33 "lock cmpxchgq %[d2], (%[p])\n\t"
35 : [p]
"r"(&
buf[i]), [e]
"r"(expected), [d]
"r"(desired), [d2]
"r"(desired2)
36 :
"memory",
"cc",
"rax");
int main(int argc, char **argv)
static uint64_t buf[WORK_COUNT]
static volatile uint64_t sink