]> git.ipfire.org Git - thirdparty/gcc.git/commit
Add IFN_COND_FMIN/FMAX functions
authorRichard Sandiford <richard.sandiford@arm.com>
Wed, 17 Nov 2021 12:28:44 +0000 (12:28 +0000)
committerRichard Sandiford <richard.sandiford@arm.com>
Wed, 17 Nov 2021 12:28:44 +0000 (12:28 +0000)
commit7061300025188d57e715c1593b8dae598c87b3c5
tree98d1c757d4566fba3fd619ee171e41bfb94920bd
parentbf5f41e4fcc396b359f096231a37a3cb411cc9df
Add IFN_COND_FMIN/FMAX functions

This patch adds conditional forms of FMAX and FMIN, following
the pattern for existing conditional binary functions.

gcc/
* doc/md.texi (cond_fmin@var{mode}, cond_fmax@var{mode}): Document.
* optabs.def (cond_fmin_optab, cond_fmax_optab): New optabs.
* internal-fn.def (COND_FMIN, COND_FMAX): New functions.
* internal-fn.c (first_commutative_argument): Handle them.
(FOR_EACH_COND_FN_PAIR): Likewise.
* match.pd (UNCOND_BINARY, COND_BINARY): Likewise.
* config/aarch64/aarch64-sve.md (cond_<fmaxmin><mode>): New
pattern.

gcc/testsuite/
* gcc.target/aarch64/sve/cond_fmaxnm_5.c: New test.
* gcc.target/aarch64/sve/cond_fmaxnm_5_run.c: Likewise.
* gcc.target/aarch64/sve/cond_fmaxnm_6.c: Likewise.
* gcc.target/aarch64/sve/cond_fmaxnm_6_run.c: Likewise.
* gcc.target/aarch64/sve/cond_fmaxnm_7.c: Likewise.
* gcc.target/aarch64/sve/cond_fmaxnm_7_run.c: Likewise.
* gcc.target/aarch64/sve/cond_fmaxnm_8.c: Likewise.
* gcc.target/aarch64/sve/cond_fmaxnm_8_run.c: Likewise.
* gcc.target/aarch64/sve/cond_fminnm_5.c: Likewise.
* gcc.target/aarch64/sve/cond_fminnm_5_run.c: Likewise.
* gcc.target/aarch64/sve/cond_fminnm_6.c: Likewise.
* gcc.target/aarch64/sve/cond_fminnm_6_run.c: Likewise.
* gcc.target/aarch64/sve/cond_fminnm_7.c: Likewise.
* gcc.target/aarch64/sve/cond_fminnm_7_run.c: Likewise.
* gcc.target/aarch64/sve/cond_fminnm_8.c: Likewise.
* gcc.target/aarch64/sve/cond_fminnm_8_run.c: Likewise.
22 files changed:
gcc/config/aarch64/aarch64-sve.md
gcc/doc/md.texi
gcc/internal-fn.c
gcc/internal-fn.def
gcc/match.pd
gcc/optabs.def
gcc/testsuite/gcc.target/aarch64/sve/cond_fmaxnm_5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/cond_fmaxnm_5_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/cond_fmaxnm_6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/cond_fmaxnm_6_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/cond_fmaxnm_7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/cond_fmaxnm_7_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/cond_fmaxnm_8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/cond_fmaxnm_8_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/cond_fminnm_5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/cond_fminnm_5_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/cond_fminnm_6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/cond_fminnm_6_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/cond_fminnm_7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/cond_fminnm_7_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/cond_fminnm_8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/cond_fminnm_8_run.c [new file with mode: 0644]