[PATCH][AArch64] Remove aarch64_simd_attr_length_move

James Greenhalgh james.greenhalgh@arm.com
Tue May 31 11:38:00 GMT 2016


On Fri, May 27, 2016 at 05:57:17PM +0100, Kyrill Tkachov wrote:
> Hi all,
> 
> I notice that we can do without aarch64_simd_attr_length_move. The move alternatives for
> the OI,CI,XImode modes that involve memory operands all use a single load/store so are always
> length 4, whereas the register-to-register moves have a statically-known length of
> (GET_MODE_BITSIZE (mode) / 128) * 4, i.e. 4 bytes for every 128-bit SIMD move instruction.
> This is already encoded in the insn_count mode attribute so use that when needed.
> 
> That way we avoid a call to recog and a switch statement just to get the length of an insn.
> 
> Bootstrapped and tested on aarch64.
> 
> Ok for trunk?

OK.

Thanks,
James

> 
> Thanks,
> Kyrill
> 
> 2016-05-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
> 
>     * config/aarch64/aarch64.c (aarch64_simd_attr_length_move): Delete.
>     * config/aarch64/aarch64-protos.h (aarch64_simd_attr_length_move):
>     Delete prototype.
>     * config/aarch64/iterators.md (insn_count): Add descriptive comment.
>     * config/aarch64/aarch64-simd.md (*aarch64_mov<mode>, VSTRUCT modes):
>     Remove use of aarch64_simd_attr_length_move, set length attribute
>     directly.
>     (*aarch64_be_movoi): Likewise.
>     (*aarch64_be_movci): Likewise.
>     (*aarch64_be_movxi): Likewise.



More information about the Gcc-patches mailing list