This is a new version of my BE patch from a few weeks ago. This is part 2 and covers all the aarch64 changes.
When combined with the first patch, It fixes up movoi/ci/xi for Big Endian, so that we end up with the lab of a big-endian integer to be in the low byte of the highest-numbered register. This patch requires part 1 and David Sherwood’s patch: [AArch64] [BE] [1/2] Make large opaque integer modes endianness-safe. When tested with David’s patch and [1/2] of this patch, no regressions were seen when testing aarch64 and x86_64 on make check. Changelog: 2014-11-14 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. Alan.
0001-BE-fix-load-stores.-Aarch64-code.patch
Description: Binary data