1 /* { dg-do compile { target { lp64 } } } */ 2 /* { dg-options "-march=z196 -O2" } */ 3 4 extern void bar(int *mem); 5 foo4(int * mem)6void foo4(int *mem) 7 { 8 int oldval = 0; 9 if (!__atomic_compare_exchange_n (mem, (void *) &oldval, 1, 10 1, __ATOMIC_ACQUIRE, __ATOMIC_RELAXED)) 11 { 12 bar (mem); 13 } 14 } 15 16 /* { dg-final { scan-assembler {(?n)\n\tlt\t.*\n\tjne\t(\.L\d+)\n(.*\n)*\tcs\t.*\n\tber\t%r14\n\1:\n\tjg\tbar\n} } } */ 17