On 10 March 2016 at 19:42, Edward Nevill <edward.nev...@linaro.org> wrote: >> /usr/local/linare-gcc-5.2/bin/gcc -S -O3 -march=armv8-a+lse test.c >> >> add_int: >> ldaddal w0, w0, [x1] >> add w2, w0, w0 >> mov w0, w2 >> ret > > Am I going mad, or does this just return the contents of the memory > location * 2. > > ldaddal w0, w0, [x1] > > Returns the original contents of [x1] in w0. > > add w2, w0, w0 > > doubles it. > > mov w0, w2 > > returns it. > > I think __sync_add_and_fetch should return the updated contents. > > Here is the test C code again. > > int add_int(int add_value, int *dest) > { > return __sync_add_and_fetch(dest, add_value); > }
Hmm, it is not the code I get with our latest release candidate (the release should be out next week), it gives the code: add_int: ldaddal w0, w3, [x1] add w2, w3, w0 mov w0, w2 ret > Regards, > Ed. _______________________________________________ linaro-toolchain mailing list linaro-toolchain@lists.linaro.org https://lists.linaro.org/mailman/listinfo/linaro-toolchain