On Fri, Aug 11, 2017 at 1:24 PM, Richard Henderson <richard.hender...@linaro.org> wrote: > On 08/11/2017 01:13 PM, Alistair Francis wrote: >>>> + tcg_gen_ext_i64(val, val, memop); >>> >>> What is this addition intended to accomplish? Because of the position >>> within >>> the code, you know that memop contains MO_64, so that this is a no-op. >> >> This is when size == 2 so it's a 32bit operation so memop contains MO_32. > > It's a paired 32-bit operation, so we're operating on a 64-bit quantity. So > extending from 32-bits would be actively wrong.
>From what I can see though, the 32bit memop is carried into the tcg_gen_atomic_cmpxchg_i64() call so the value returned to tmp is masked by the 32bit operation. Is passing down MO_32 into tcg_gen_atomic_cmpxchg_i64() wrong then as it ends up as a 64-bit operation? My TCG knowledge is pretty limited here. Thanks, Alistair > > > r~ >