On Wed, Aug 15, 2018 at 07:55:18AM -0500, Tamar Christina wrote:
> Hi All,
> 
> I'm updating the patch with the suggested changes and also fixing a bug with 
> a boundary condition.
> 
> On AArch64 we have integer modes larger than TImode, and while we can generate
> moves for these they're not as efficient.
> 
> So instead make sure we limit the maximum we can copy to TImode.  This means
> copying a 16 byte struct will issue 1 TImode copy, which will be done using a
> single STP as we expect but an CImode sized copy won't issue CImode 
> operations.
> 
> I am also moving the residual code inside the if since smallest_mode_for_int 
> may
> trap if the mode doesn't exist.  And the only time we know the mode to exist 
> for
> sure is when the condition of the if is true.  This also saves repeated calls 
> to
> the iterator.
> 
> Bootstrapped and regtested on aarch4-none-linux-gnu and no issues.
> Crosstested aarch4_be-none-elf and no issues.
> 
> Ok for trunk?

OK.

Thanks,
James

> gcc/
> 2018-08-15  Tamar Christina  <tamar.christ...@arm.com>
> 
>       * config/aarch64/aarch64.c (aarch64_expand_movmem): Set TImode max.
> 
> gcc/testsuite/
> 2018-08-15  Tamar Christina  <tamar.christ...@arm.com>
> 
>       * gcc.target/aarch64/large_struct_copy_2.c: New.
> 

Reply via email to