Re: [ARM] Add atomic_loaddi pattern

2012-04-30 Thread Richard Henderson
On 04/30/2012 01:47 AM, Richard Earnshaw wrote: > +operands[2] = gen_rtx_REG (SImode, REGNO (target) + 1); > +return "ldrexd%?\t%0, %2, %C1"; > + } Use "ldrexd%?\t%0, %H0, %C1", then you don't need to construct operands[2] Otherwise, OK. Ah, nice. I also fixed the other instanc

Re: [ARM] Add atomic_loaddi pattern

2012-04-30 Thread Andrew Haley
On 04/30/2012 11:50 AM, Richard Earnshaw wrote: > On 30/04/12 09:51, Andrew Haley wrote: >> On 04/27/2012 10:30 PM, Richard Henderson wrote: >>> We can perform a single-copy atomic load with an ldrexd insn. >>> If the load is all we care about, we need not pair this with >>> a strexd. >> >> Can we?

Re: [ARM] Add atomic_loaddi pattern

2012-04-30 Thread Richard Earnshaw
On 30/04/12 09:51, Andrew Haley wrote: > On 04/27/2012 10:30 PM, Richard Henderson wrote: >> We can perform a single-copy atomic load with an ldrexd insn. >> If the load is all we care about, we need not pair this with >> a strexd. > > Can we? It's good to know. I have had a long email exchange

Re: [ARM] Add atomic_loaddi pattern

2012-04-30 Thread Andrew Haley
On 04/27/2012 10:30 PM, Richard Henderson wrote: > We can perform a single-copy atomic load with an ldrexd insn. > If the load is all we care about, we need not pair this with > a strexd. Can we? It's good to know. I have had a long email exchange with engineers at ARM, and they would not say th

Re: [ARM] Add atomic_loaddi pattern

2012-04-30 Thread Richard Earnshaw
On 27/04/12 22:30, Richard Henderson wrote: > We can perform a single-copy atomic load with an ldrexd insn. > If the load is all we care about, we need not pair this with > a strexd. > > Ok? > > > r~ > > > d-arm-ldi > > > * config/arm/arm.md (UNSPEC_LL): New. > * config/arm/sync.

[ARM] Add atomic_loaddi pattern

2012-04-27 Thread Richard Henderson
We can perform a single-copy atomic load with an ldrexd insn. If the load is all we care about, we need not pair this with a strexd. Ok? r~ * config/arm/arm.md (UNSPEC_LL): New. * config/arm/sync.md (atomic_loaddi, atomic_loaddi_1): New. diff --git a/gcc/config/arm/arm.md b/gcc/