On 25 January 2012 20:55, Richard Henderson wrote:
> On 01/26/2012 02:35 AM, Greta Yorsh wrote:
>> Before the change, __sync_lock_release expanded into STRD, storing DI value
>> 0.
>
> The most important question is: Is STRD guaranteed to perform the store
> atomically? (And conversely, does LDR
On 01/26/2012 02:35 AM, Greta Yorsh wrote:
> Before the change, __sync_lock_release expanded into STRD, storing DI value 0.
The most important question is: Is STRD guaranteed to perform the store
atomically? (And conversely, does LDRD perform the load atomically?)
If so (even for a subset of arc
On 25 January 2012, at 18:14, Mike Stump wrote:
> On Jan 25, 2012, at 7:35 AM, Greta Yorsh wrote:
> > The test gcc.target/arm/di-longlong64-sync-withldrexd.c fails on
> > arm-none-eabi target, because gcc generates 48 LDREXD and 48 STREXD
> > instructions instead of the expected 46.
> >
> > FAIL: g
On Jan 25, 2012, at 7:35 AM, Greta Yorsh wrote:
> The test gcc.target/arm/di-longlong64-sync-withldrexd.c fails on
> arm-none-eabi target, because gcc generates 48 LDREXD and 48 STREXD
> instructions instead of the expected 46.
>
> FAIL: gcc.target/arm/di-longlong64-sync-withldrexd.c scan-assemble
The test gcc.target/arm/di-longlong64-sync-withldrexd.c fails on
arm-none-eabi target, because gcc generates 48 LDREXD and 48 STREXD
instructions instead of the expected 46.
FAIL: gcc.target/arm/di-longlong64-sync-withldrexd.c scan-assembler-times
tldrexd 46
FAIL: gcc.target/arm/di-longlong64-sync