This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [ARM] Add atomic_loaddi pattern


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.md (atomic_loaddi, atomic_loaddi_1): New.
> 

> diff --git a/gcc/config/arm/sync.md b/gcc/config/arm/sync.md
> index 03838f5..de2da3b 100644
> --- a/gcc/config/arm/sync.md
> +++ b/gcc/config/arm/sync.md


> +    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.

R.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]