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

Reply via email to