This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [AArch64] Refactor vector max and min RTL and builtins.
- From: Marcus Shawcroft <marcus dot shawcroft at gmail dot com>
- To: James Greenhalgh <james dot greenhalgh at arm dot com>
- Cc: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>, Marcus Shawcroft <marcus dot shawcroft at arm dot com>
- Date: Tue, 30 Apr 2013 18:28:00 +0100
- Subject: Re: [AArch64] Refactor vector max and min RTL and builtins.
- References: <1367335149-23404-1-git-send-email-james dot greenhalgh at arm dot com>
OK
/Marcus
On 30 April 2013 16:19, James Greenhalgh <james.greenhalgh@arm.com> wrote:
>
> Hi,
>
> This patch moves around the max/min infrastructure such that
> we can more uniformly access the backend RTL patterns and such
> that it uses the standard pattern names.
>
> We also fixup the bugs this introduces in arm_neon.h which expected
> the older names.
>
> Regression tested on aarch64-none-elf with no issues.
>
> Thanks,
> James
>
> ---
> gcc/
>
> 2013-04-30 James Greenhalgh <james.greenhalgh@arm.com>
>
> * config/aarch64/aarch64-simd-builtins.def
> (reduc_smax_): New.
> (reduc_smin_): Likewise.
> (reduc_umax_): Likewise.
> (reduc_umin_): Likewise.
> (reduc_smax_nan_): Likewise.
> (reduc_smin_nan_): Likewise.
> (fmax): Remove.
> (fmin): Likewise.
> (smax): Update for V2SF, V4SF and V2DF modes.
> (smin): Likewise.
> (smax_nan): New.
> (smin_nan): Likewise.
> * config/aarch64/aarch64-simd.md (<maxmin><mode>3): Rename to...
> (<su><maxmin><mode>3): ...This, refactor.
> (s<maxmin><mode>3): New.
> (<maxmin_uns><mode>3): Likewise.
> (reduc_<maxmin_uns>_<mode>): Refactor.
> (reduc_<maxmin_uns>_v4sf): Likewise.
> (reduc_<maxmin_uns>_v2si): Likewise.
> (aarch64_<fmaxmin><mode>: Remove.
> * config/aarch64/arm_neon.h (vmax<q>_f<32,64>): Rewrite to use
> new builtin names.
> (vmin<q>_f<32,64>): Likewise.
> * config/iterators.md (unspec): Add UNSPEC_FMAXNMV, UNSPEC_FMINNMV.
> (FMAXMIN): New.
> (su): Add mappings for smax, smin, umax, umin.
> (maxmin): New.
> (FMAXMINV): Add UNSPEC_FMAXNMV, UNSPEC_FMINNMV.
> (FMAXMIN): Rename as...
> (FMAXMIN_UNS): ...This.
> (maxminv): Remove.
> (fmaxminv): Likewise.
> (fmaxmin): Likewise.
> (maxmin_uns): New.
> (maxmin_uns_op): Likewise.