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]

[AArch64] [BE] Fix vector load/stores to not use ld1/st1


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.hayward@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.

Attachment: 0001-be-mov.patch
Description: Binary data


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