This is the mail archive of the 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]

Re: [AArch64/ARM 2/3] Reimplement AArch64 TRN intrinsics with __builtin_shuffle

On 28 March 2014 15:36, Alan Lawrence <> wrote:
> This patch replaces the temporary inline assembler for vtrn[q]_* in
> arm_neon.h with equivalent calls to __builtin_shuffle.  These are matched by
> existing patterns in aarch64.c (aarch64_expand_vec_perm_const_1), outputting
> the same assembler instructions.  For two-element vectors, ZIP, UZP and TRN
> instructions all have the same effect, and the backend chooses to output
> ZIP, so this patch also updates the 3 affected tests.
> Regressed, and tests from first patch still passing modulo updates herein,
> on
> aarch64-none-elf and aarch64_be-none-elf.
> gcc/testsuite/ChangeLog:
> 2014-03-28  Alan Lawrence  <>
>         * Expect zip[12] insn rather than
> trn[12].
>         * Likewise.
>         * Likewise.
> gcc/ChangeLog:
> 2014-03-28  Alan Lawrence  <>
>         * config/aarch64/arm_neon.h (vtrn1_f32, vtrn1_p8, vtrn1_p16,
> vtrn1_s8,
>         vtrn1_s16, vtrn1_s32, vtrn1_u8, vtrn1_u16, vtrn1_u32, vtrn1q_f32,
>         vtrn1q_f64, vtrn1q_p8, vtrn1q_p16, vtrn1q_s8, vtrn1q_s16,
> vtrn1q_s32,
>         vtrn1q_s64, vtrn1q_u8, vtrn1q_u16, vtrn1q_u32, vtrn1q_u64,
> vtrn2_f32,
>         vtrn2_p8, vtrn2_p16, vtrn2_s8, vtrn2_s16, vtrn2_s32, vtrn2_u8,
>         vtrn2_u16, vtrn2_u32, vtrn2q_f32, vtrn2q_f64, vtrn2q_p8, vtrn2q_p16,
>         vtrn2q_s8, vtrn2q_s16, vtrn2q_s32, vtrn2q_s64, vtrn2q_u8,
> vtrn2q_u16,
>         vtrn2q_u32, vtrn2q_u64): Replace temporary asm with
> __builtin_shuffle.

OK /Marcus

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