[PATCH 5/14][AArch64] Use new reduc_[us](min|max)_scal optabs, inc. for builtins
Marcus Shawcroft
marcus.shawcroft@gmail.com
Wed Sep 24 09:47:00 GMT 2014
On 18 September 2014 13:02, Alan Lawrence <alan.lawrence@arm.com> wrote:
> Similarly to the previous patch (r/2205), this migrates AArch64 to the new
> reduce-to-scalar optabs for min and max. For consistency we apply the same
> treatment to the smax_nan and smin_nan patterns (used for __builtins), even
> though reduc_smin_nan_scal (etc.) is not a standard name.
>
> Tested: check-gcc on aarch64-none-elf and aarch64_be-none-elf.
>
> gcc/ChangeLog:
>
> * config/aarch64/aarch64-simd-builtins.def (reduc_smax_,
> reduc_smin_,
> reduc_umax_, reduc_umin_, reduc_smax_nan_, reduc_smin_nan_): Remove.
> (reduc_smax_scal_, reduc_smin_scal_, reduc_umax_scal_,
> reduc_umin_scal_, reduc_smax_nan_scal_, reduc_smin_nan_scal_): New.
>
> * config/aarch64/aarch64-simd.md
> (reduc_<maxmin_uns>_<mode>): Rename VDQV_S variant to...
> (reduc_<maxmin_uns>_internal<mode>): ...this.
> (reduc_<maxmin_uns>_<mode>): New (VDQ_BHSI).
> (reduc_<maxmin_uns>_scal_<mode>): New (*2).
>
> (reduc_<maxmin_uns>_v2si): Combine with below, renaming...
> (reduc_<maxmin_uns>_<mode>): Combine V2F with above, renaming...
> (reduc_<maxmin_uns>_internal_<mode>): ...to this (VDQF).
>
> * config/aarch64/arm_neon.h (vmaxv_f32, vmaxv_s8, vmaxv_s16,
> vmaxv_s32, vmaxv_u8, vmaxv_u16, vmaxv_u32, vmaxvq_f32, vmaxvq_f64,
> vmaxvq_s8, vmaxvq_s16, vmaxvq_s32, vmaxvq_u8, vmaxvq_u16,
> vmaxvq_u32,
> vmaxnmv_f32, vmaxnmvq_f32, vmaxnmvq_f64, vminv_f32, vminv_s8,
> vminv_s16, vminv_s32, vminv_u8, vminv_u16, vminv_u32, vminvq_f32,
> vminvq_f64, vminvq_s8, vminvq_s16, vminvq_s32, vminvq_u8,
> vminvq_u16,
> vminvq_u32, vminnmv_f32, vminnmvq_f32, vminnmvq_f64): Update to use
> __builtin_aarch64_reduc_..._scal; remove vget_lane wrapper.
If we don;t need the old optabs, I think would be better to drop those
define_expands, otherwise OK.
/Marcus
More information about the Gcc-patches
mailing list