On 10 October 2014 16:19, Alan Hayward <alan.hayw...@arm.com> wrote: > This patch is dependant on "[AArch64] [BE] [1/2] Make large opaque integer > modes endianness-safe.” > > It fixes up movoi/ci/xi for Big Endian, so that we end up with the lsb of > a big-endian integer to be in the low byte of the highest-numbered > register. > > movoi uses stp/ldp > movxi needs a split version (which is shared with register->register > movxi), which just splits to two new movs > movci can then split to three movs. A future patch will instead split to > an movoi and a movti. > > > There are no changes for LE. > > Ran whole of check with both parts of "Make large opaque integer modes > endianness-safe”. No regressions. > > > ChangeLog: > > gcc/: > 2014-10-10 Alan Hayward <alan.hayw...@arm.com> > * config/aarch64/aarch64.c > (aarch64_classify_address): Allow extra addressing modes for BE. > (aarch64_print_operand): new operand for printing a q register+1. > (aarch64_simd_emit_reg_reg_move): replacement for > aarch64_simd_disambiguate_copy that plants the required mov. > * config/aarch64/aarch64-protos.h > (aarch64_simd_emit_reg_reg_move): replacement for > aarch64_simd_disambiguate_copy. > * config/aarch64/aarch64-simd.md > (define_split) Use new aarch64_simd_emit_reg_reg_move. > (define_expand "mov<mode>") less restrictive predicates. > (define_insn "*aarch64_mov<mode>") Simplify and only allow for LE. > (define_insn "*aarch64_be_movoi") New. BE only. Plant ldp or stp. > (define_insn "*aarch64_be_movci") New. BE only. No instructions. > (define_insn "*aarch64_be_movxi") New. BE only. No instructions. > (define_split) OI mov. Use new aarch64_simd_emit_reg_reg_move. > (define_split) CI mov. Use new aarch64_simd_emit_reg_reg_move. > On BE > plant movs for reg to/from mem case. > (define_split) XI mov. Use new aarch64_simd_emit_reg_reg_move. > On BE > plant movs for reg to/from mem case. >
OK /Marcus