[PATCH][AArch64] Simplify vreinterpret for float64x1_t using casts.

Marcus Shawcroft marcus.shawcroft@gmail.com
Tue Sep 9 10:51:00 GMT 2014


On 8 September 2014 17:45, Alan Lawrence <alan.lawrence@arm.com> wrote:
> Now that float64x1 is a vector type, we can convert between it and other
> same-sized vector types with a simple cast, as is already done for all other
> reinterprets not involving float64x1.
>
> This allows to remove the reinterpretv1df and reinterpret<*>v1df builtins in
> aarch64-simd-builtins.def, and the folding-to-VIEW_CONVERT_EXPR code and
> corresponding types/qualifiers/etc. in aarch64-builtins.c.
>
> Finally, the aarch64_reinterpret<*> define_expand's in aarch64-simd.md -
> many variants of which were generated, but only the v1df variants were used
> and those only to determine the signatures of the corresponding builtins -
> now have no uses and can also be removed, along with the
> aarch64_simd_reinterpret function that only they called.
>
> Cross-tested check-gcc and check-g++ on aarch64-none-elf and
> aarch64_be-none-elf. (Note gcc.target/aarch64/vreinterpret_f64_1.c provides
> a test of execution results.)
>
> gcc/ChangeLog:
>
>         * config/aarch64/aarch64-builtins.c
> (aarch64_types_unop_su_qualifiers,
>         TYPES_REINTERP_SU, aarch64_types_unop_sp_qualifiers,
> TYPE_REINTERP_SP,
>         aarch64_types_unop_us_qualifiers, TYPES_REINTERP_US,
>         aarch64_types_unop_ps_qualifiers, TYPES_REINTERP_PS, BUILTIN_VD):
>         Delete.
>
>         (aarch64_fold_builtin): Remove all reinterpret cases.
>
>         * config/aarch64/aarch64-protos.h (aarch64_simd_reinterpret):
> Delete.
>
>         * config/aarch64/aarch64-simd-builtins.def (reinterpret*) : Delete.
>
>         * config/aarch64/aarch64-simd.md (aarch64_reinterpretv8qi<mode>,
>         aarch64_reinterpretv4hi<mode>, aarch64_reinterpretv2si<mode>,
>         aarch64_reinterpretv2sf<mode>, aarch64_reinterpretdi<mode>,
>         aarch64_reinterpretv1df<mode>, aarch64_reinterpretv16qi<mode>,
>         aarch64_reinterpretv8hi<mode>, aarch64_reinterpretv4si<mode>,
>         aarch64_reinterpretv4sf<mode>, aarch64_reinterpretv2di<mode>,
>         aarch64_reinterpretv2df<mode>): Delete.
>
>         * config/aarch64/aarch64.c (aarch64_simd_reinterpret): Delete.
>
>         * config/aarch64/arm_neon.h (vreinterpret_p8_f64,
>         vreinterpret_p16_f64, vreinterpret_f32_f64, vreinterpret_f64_f32,
>         vreinterpret_f64_p8, vreinterpret_f64_p16, vreinterpret_f64_s8,
>         vreinterpret_f64_s16, vreinterpret_f64_s32, vreinterpret_f64_u8,
>         vreinterpret_f64_u16, vreinterpret_f64_u32, vreinterpret_s64_f64,
>         vreinterpret_u64_f64, vreinterpret_s8_f64, vreinterpret_s16_f64,
>         vreinterpret_s32_f64, vreinterpret_u8_f64, vreinterpret_u16_f64,
>         vreinterpret_u32_f64): Use cast.
>
>         * config/aarch64/iterators.md (VD_RE): Delete.

OK /Marcus



More information about the Gcc-patches mailing list