48 changes: 24 additions & 24 deletions include/boost/atomic/detail/ops_gcc_arm.hpp
Expand Up @@ -187,7 +187,7 @@ struct operations< 4u, Signed > :
BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
: [tmp] "=&l" (tmp), [original] "=&r" (original), [storage] "+Q" (storage)
: [value] "r" (v)
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand Down Expand Up @@ -216,7 +216,7 @@ struct operations< 4u, Signed > :
[storage] "+Q" (storage) // %3
: [expected] "r" (expected), // %4
[desired] "r" (desired) // %5
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
if (success)
fence_after(success_order);
Expand Down Expand Up @@ -252,7 +252,7 @@ struct operations< 4u, Signed > :
[storage] "+Q" (storage) // %3
: [expected] "r" (expected), // %4
[desired] "r" (desired) // %5
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
if (success)
fence_after(success_order);
Expand Down Expand Up @@ -282,7 +282,7 @@ struct operations< 4u, Signed > :
[tmp] "=&l" (tmp), // %2
[storage] "+Q" (storage) // %3
: [value] "r" (v) // %4
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -308,7 +308,7 @@ struct operations< 4u, Signed > :
[tmp] "=&l" (tmp), // %2
[storage] "+Q" (storage) // %3
: [value] "r" (v) // %4
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -334,7 +334,7 @@ struct operations< 4u, Signed > :
[tmp] "=&l" (tmp), // %2
[storage] "+Q" (storage) // %3
: [value] "r" (v) // %4
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -360,7 +360,7 @@ struct operations< 4u, Signed > :
[tmp] "=&l" (tmp), // %2
[storage] "+Q" (storage) // %3
: [value] "r" (v) // %4
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -386,7 +386,7 @@ struct operations< 4u, Signed > :
[tmp] "=&l" (tmp), // %2
[storage] "+Q" (storage) // %3
: [value] "r" (v) // %4
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand Down Expand Up @@ -437,7 +437,7 @@ struct operations< 1u, false > :
[tmp] "=&l" (tmp), // %2
[storage] "+Q" (storage) // %3
: [value] "r" (v) // %4
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -464,7 +464,7 @@ struct operations< 1u, false > :
[tmp] "=&l" (tmp), // %2
[storage] "+Q" (storage) // %3
: [value] "r" (v) // %4
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand Down Expand Up @@ -499,7 +499,7 @@ struct operations< 1u, true > :
[tmp] "=&l" (tmp), // %2
[storage] "+Q" (storage) // %3
: [value] "r" (v) // %4
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -526,7 +526,7 @@ struct operations< 1u, true > :
[tmp] "=&l" (tmp), // %2
[storage] "+Q" (storage) // %3
: [value] "r" (v) // %4
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand Down Expand Up @@ -562,7 +562,7 @@ struct operations< 2u, false > :
[tmp] "=&l" (tmp), // %2
[storage] "+Q" (storage) // %3
: [value] "r" (v) // %4
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -589,7 +589,7 @@ struct operations< 2u, false > :
[tmp] "=&l" (tmp), // %2
[storage] "+Q" (storage) // %3
: [value] "r" (v) // %4
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand Down Expand Up @@ -624,7 +624,7 @@ struct operations< 2u, true > :
[tmp] "=&l" (tmp), // %2
[storage] "+Q" (storage) // %3
: [value] "r" (v) // %4
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -651,7 +651,7 @@ struct operations< 2u, true > :
[tmp] "=&l" (tmp), // %2
[storage] "+Q" (storage) // %3
: [value] "r" (v) // %4
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand Down Expand Up @@ -718,7 +718,7 @@ struct operations< 8u, Signed > :
"=&r" (original) // %1
: "r" (v), // %2
"r" (&storage) // %3
: "cc", "memory"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
fence_after(order);
return original;
Expand Down Expand Up @@ -748,7 +748,7 @@ struct operations< 8u, Signed > :
"+r" (old_val) // %2
: "r" (&storage), // %3
"r" (desired) // %4
: "cc", "memory"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
const uint32_t success = (uint32_t)old_val;
if (success)
Expand Down Expand Up @@ -787,7 +787,7 @@ struct operations< 8u, Signed > :
"+r" (old_val) // %2
: "r" (&storage), // %3
"r" (desired) // %4
: "cc", "memory"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
const uint32_t success = (uint32_t)old_val;
if (success)
Expand Down Expand Up @@ -819,7 +819,7 @@ struct operations< 8u, Signed > :
"=&r" (result) // %2
: "r" (&storage), // %3
"r" (v) // %4
: "cc", "memory"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
fence_after(order);
return original;
Expand All @@ -846,7 +846,7 @@ struct operations< 8u, Signed > :
"=&r" (result) // %2
: "r" (&storage), // %3
"r" (v) // %4
: "cc", "memory"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
fence_after(order);
return original;
Expand All @@ -873,7 +873,7 @@ struct operations< 8u, Signed > :
"=&r" (result) // %2
: "r" (&storage), // %3
"r" (v) // %4
: "cc", "memory"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
fence_after(order);
return original;
Expand All @@ -900,7 +900,7 @@ struct operations< 8u, Signed > :
"=&r" (result) // %2
: "r" (&storage), // %3
"r" (v) // %4
: "cc", "memory"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
fence_after(order);
return original;
Expand All @@ -927,7 +927,7 @@ struct operations< 8u, Signed > :
"=&r" (result) // %2
: "r" (&storage), // %3
"r" (v) // %4
: "cc", "memory"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
fence_after(order);
return original;
Expand Down
36 changes: 18 additions & 18 deletions include/boost/atomic/detail/ops_gcc_ppc.hpp
Expand Up @@ -227,7 +227,7 @@ struct operations< 4u, Signed > :
"bne- 1b\n"
: "=&b" (original), "=&b" (tmp), "+Z" (storage)
: "b" (v)
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -246,7 +246,7 @@ struct operations< 4u, Signed > :
"bne- 1b\n"
: "=&b" (original), "=&b" (tmp), "+Z" (storage)
: "b" (v)
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -265,7 +265,7 @@ struct operations< 4u, Signed > :
"bne- 1b\n"
: "=&b" (original), "=&b" (tmp), "+Z" (storage)
: "b" (v)
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -284,7 +284,7 @@ struct operations< 4u, Signed > :
"bne- 1b\n"
: "=&b" (original), "=&b" (tmp), "+Z" (storage)
: "b" (v)
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -303,7 +303,7 @@ struct operations< 4u, Signed > :
"bne- 1b\n"
: "=&b" (original), "=&b" (tmp), "+Z" (storage)
: "b" (v)
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand Down Expand Up @@ -347,7 +347,7 @@ struct operations< 1u, false > :
"bne- 1b\n"
: "=&b" (original), "=&b" (tmp), "+Z" (storage)
: "b" (v)
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -367,7 +367,7 @@ struct operations< 1u, false > :
"bne- 1b\n"
: "=&b" (original), "=&b" (tmp), "+Z" (storage)
: "b" (v)
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand Down Expand Up @@ -395,7 +395,7 @@ struct operations< 1u, true > :
"bne- 1b\n"
: "=&b" (original), "=&b" (tmp), "+Z" (storage)
: "b" (v)
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -415,7 +415,7 @@ struct operations< 1u, true > :
"bne- 1b\n"
: "=&b" (original), "=&b" (tmp), "+Z" (storage)
: "b" (v)
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand Down Expand Up @@ -444,7 +444,7 @@ struct operations< 2u, false > :
"bne- 1b\n"
: "=&b" (original), "=&b" (tmp), "+Z" (storage)
: "b" (v)
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -464,7 +464,7 @@ struct operations< 2u, false > :
"bne- 1b\n"
: "=&b" (original), "=&b" (tmp), "+Z" (storage)
: "b" (v)
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand Down Expand Up @@ -492,7 +492,7 @@ struct operations< 2u, true > :
"bne- 1b\n"
: "=&b" (original), "=&b" (tmp), "+Z" (storage)
: "b" (v)
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -512,7 +512,7 @@ struct operations< 2u, true > :
"bne- 1b\n"
: "=&b" (original), "=&b" (tmp), "+Z" (storage)
: "b" (v)
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand Down Expand Up @@ -640,7 +640,7 @@ struct operations< 8u, Signed > :
"bne- 1b\n"
: "=&b" (original), "=&b" (tmp), "+Z" (storage)
: "b" (v)
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -659,7 +659,7 @@ struct operations< 8u, Signed > :
"bne- 1b\n"
: "=&b" (original), "=&b" (tmp), "+Z" (storage)
: "b" (v)
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -678,7 +678,7 @@ struct operations< 8u, Signed > :
"bne- 1b\n"
: "=&b" (original), "=&b" (tmp), "+Z" (storage)
: "b" (v)
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -697,7 +697,7 @@ struct operations< 8u, Signed > :
"bne- 1b\n"
: "=&b" (original), "=&b" (tmp), "+Z" (storage)
: "b" (v)
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand All @@ -716,7 +716,7 @@ struct operations< 8u, Signed > :
"bne- 1b\n"
: "=&b" (original), "=&b" (tmp), "+Z" (storage)
: "b" (v)
: "cc"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
);
fence_after(order);
return original;
Expand Down
24 changes: 12 additions & 12 deletions include/boost/atomic/detail/ops_gcc_x86.hpp
Expand Up @@ -123,7 +123,7 @@ struct operations< 1u, Signed > :
"lock; xaddb %0, %1"
: "+q" (v), "+m" (storage)
:
: "cc", "memory"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
return v;
}
Expand Down Expand Up @@ -151,7 +151,7 @@ struct operations< 1u, Signed > :
"sete %2"
: "+a" (previous), "+m" (storage), "=q" (success)
: "q" (desired)
: "cc", "memory"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
expected = previous;
return success;
Expand All @@ -168,7 +168,7 @@ struct operations< 1u, Signed > :
"jne 1b"\
: [res] "+a" (result), [storage] "+m" (storage)\
: [arg] "q" (argument)\
: "cc", BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER, "memory"\
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER, "memory"\
)

static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
Expand Down Expand Up @@ -209,7 +209,7 @@ struct operations< 2u, Signed > :
"lock; xaddw %0, %1"
: "+q" (v), "+m" (storage)
:
: "cc", "memory"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
return v;
}
Expand Down Expand Up @@ -237,7 +237,7 @@ struct operations< 2u, Signed > :
"sete %2"
: "+a" (previous), "+m" (storage), "=q" (success)
: "q" (desired)
: "cc", "memory"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
expected = previous;
return success;
Expand All @@ -254,7 +254,7 @@ struct operations< 2u, Signed > :
"jne 1b"\
: [res] "+a" (result), [storage] "+m" (storage)\
: [arg] "q" (argument)\
: "cc", BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER, "memory"\
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER, "memory"\
)

static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
Expand Down Expand Up @@ -295,7 +295,7 @@ struct operations< 4u, Signed > :
"lock; xaddl %0, %1"
: "+r" (v), "+m" (storage)
:
: "cc", "memory"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
return v;
}
Expand Down Expand Up @@ -323,7 +323,7 @@ struct operations< 4u, Signed > :
"sete %2"
: "+a" (previous), "+m" (storage), "=q" (success)
: "r" (desired)
: "cc", "memory"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
expected = previous;
return success;
Expand All @@ -340,7 +340,7 @@ struct operations< 4u, Signed > :
"jne 1b"\
: [res] "+a" (result), [storage] "+m" (storage)\
: [arg] "r" (argument)\
: "cc", BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER, "memory"\
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER, "memory"\
)

static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
Expand Down Expand Up @@ -391,7 +391,7 @@ struct operations< 8u, Signed > :
"lock; xaddq %0, %1"
: "+r" (v), "+m" (storage)
:
: "cc", "memory"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
return v;
}
Expand Down Expand Up @@ -419,7 +419,7 @@ struct operations< 8u, Signed > :
"sete %2"
: "+a" (previous), "+m" (storage), "=q" (success)
: "r" (desired)
: "cc", "memory"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
expected = previous;
return success;
Expand All @@ -436,7 +436,7 @@ struct operations< 8u, Signed > :
"jne 1b"\
: [res] "+a" (result), [storage] "+m" (storage)\
: [arg] "r" (argument)\
: "cc", BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER, "memory"\
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER, "memory"\
)

static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
Expand Down
40 changes: 32 additions & 8 deletions include/boost/atomic/detail/ops_gcc_x86_dcas.hpp
Expand Up @@ -80,9 +80,14 @@ struct gcc_dcas_x86
"1: lock; cmpxchg8b 0(%[dest])\n\t"
"jne 1b\n\t"
"movl %[scratch], %%ebx"
#if !defined(BOOST_ATOMIC_DETAIL_NO_ASM_CONSTRAINT_ALTERNATIVES)
: [scratch] "=m,m" (scratch)
: [value_lo] "a,a" ((uint32_t)v), "c,c" ((uint32_t)(v >> 32)), [dest] "D,S" (&storage)
: "cc", "edx", "memory"
#else
: [scratch] "=m" (scratch)
: [value_lo] "a" ((uint32_t)v), "c" ((uint32_t)(v >> 32)), [dest] "D" (&storage)
#endif
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "edx", "memory"
);
#else
__asm__ __volatile__
Expand All @@ -93,8 +98,12 @@ struct gcc_dcas_x86
"1: lock; cmpxchg8b 0(%[dest])\n\t"
"jne 1b\n\t"
:
#if !defined(BOOST_ATOMIC_DETAIL_NO_ASM_CONSTRAINT_ALTERNATIVES)
: [value_lo] "b,b" ((uint32_t)v), "c,c" ((uint32_t)(v >> 32)), [dest] "D,S" (&storage)
: "cc", "eax", "edx", "memory"
#else
: [value_lo] "b" ((uint32_t)v), "c" ((uint32_t)(v >> 32)), [dest] "D" (&storage)
#endif
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "eax", "edx", "memory"
);
#endif
}
Expand Down Expand Up @@ -146,7 +155,7 @@ struct gcc_dcas_x86
"lock; cmpxchg8b %[storage]"
: "=&A" (value)
: [storage] "m" (storage)
: "cc", "memory"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
#endif
}
Expand Down Expand Up @@ -183,9 +192,14 @@ struct gcc_dcas_x86
"lock; cmpxchg8b %[dest]\n\t"
"movl %[scratch], %%ebx\n\t"
"sete %[success]"
#if !defined(BOOST_ATOMIC_DETAIL_NO_ASM_CONSTRAINT_ALTERNATIVES)
: "+A,A,A,A,A,A" (expected), [dest] "+m,m,m,m,m,m" (storage), [scratch] "=m,m,m,m,m,m" (scratch), [success] "=q,m,q,m,q,m" (success)
: [desired_lo] "S,S,D,D,m,m" ((uint32_t)desired), "c,c,c,c,c,c" ((uint32_t)(desired >> 32))
: "cc", "memory"
#else
: "+A" (expected), [dest] "+m" (storage), [scratch] "=m" (scratch), [success] "=q" (success)
: [desired_lo] "S" ((uint32_t)desired), "c" ((uint32_t)(desired >> 32))
#endif
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
return success;
#else
Expand All @@ -194,9 +208,14 @@ struct gcc_dcas_x86
(
"lock; cmpxchg8b %[dest]\n\t"
"sete %[success]"
#if !defined(BOOST_ATOMIC_DETAIL_NO_ASM_CONSTRAINT_ALTERNATIVES)
: "+A,A" (expected), [dest] "+m,m" (storage), [success] "=q,m" (success)
: "b,b" ((uint32_t)desired), "c,c" ((uint32_t)(desired >> 32))
: "cc", "memory"
#else
: "+A" (expected), [dest] "+m" (storage), [success] "=q" (success)
: "b" ((uint32_t)desired), "c" ((uint32_t)(desired >> 32))
#endif
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
return success;
#endif
Expand Down Expand Up @@ -235,7 +254,7 @@ struct gcc_dcas_x86_64
"jne 1b"
:
: "b" (p_value[0]), "c" (p_value[1]), [dest] "r" (&storage)
: "cc", "rax", "rdx", "memory"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "rax", "rdx", "memory"
);
}

Expand All @@ -257,7 +276,7 @@ struct gcc_dcas_x86_64
"lock; cmpxchg16b %[storage]"
: "=&A" (value)
: [storage] "m" (storage)
: "cc", "memory"
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);

return value;
Expand All @@ -279,9 +298,14 @@ struct gcc_dcas_x86_64
(
"lock; cmpxchg16b %[dest]\n\t"
"sete %[success]"
#if !defined(BOOST_ATOMIC_DETAIL_NO_ASM_CONSTRAINT_ALTERNATIVES)
: "+A,A" (expected), [dest] "+m,m" (storage), [success] "=q,m" (success)
: "b,b" (p_desired[0]), "c,c" (p_desired[1])
: "cc", "memory"
#else
: "+A" (expected), [dest] "+m" (storage), [success] "=q" (success)
: "b" (p_desired[0]), "c" (p_desired[1])
#endif
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
);
return success;
#endif
Expand Down