]> git.ipfire.org Git - thirdparty/gcc.git/commit
amdgcn: Add instruction patterns for conditional min/max operations
authorPaul-Antoine Arras <pa@codesourcery.com>
Wed, 1 Mar 2023 16:20:21 +0000 (17:20 +0100)
committerPaul-Antoine Arras <pa@codesourcery.com>
Mon, 6 Mar 2023 14:58:07 +0000 (15:58 +0100)
commit745775eb2c47dad4f2ce30f5559ae39a9b73f184
tree715e8adb204ed81b5eae56d5cdf302fbb547844e
parent075e6e502665f4764f55074e81dafaaaeaa824ae
amdgcn: Add instruction patterns for conditional min/max operations

gcc/ChangeLog:

* config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
{s|u}{max|min} in QI, HI and DI modes.
(<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
(cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
(cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
* config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
saved in SGPRs.

gcc/testsuite/ChangeLog:

* gcc.target/gcn/cond_fmaxnm_1.c: New test.
* gcc.target/gcn/cond_fmaxnm_1_run.c: New test.
* gcc.target/gcn/cond_fmaxnm_2.c: New test.
* gcc.target/gcn/cond_fmaxnm_2_run.c: New test.
* gcc.target/gcn/cond_fmaxnm_3.c: New test.
* gcc.target/gcn/cond_fmaxnm_3_run.c: New test.
* gcc.target/gcn/cond_fmaxnm_4.c: New test.
* gcc.target/gcn/cond_fmaxnm_4_run.c: New test.
* gcc.target/gcn/cond_fmaxnm_5.c: New test.
* gcc.target/gcn/cond_fmaxnm_5_run.c: New test.
* gcc.target/gcn/cond_fmaxnm_6.c: New test.
* gcc.target/gcn/cond_fmaxnm_6_run.c: New test.
* gcc.target/gcn/cond_fmaxnm_7.c: New test.
* gcc.target/gcn/cond_fmaxnm_7_run.c: New test.
* gcc.target/gcn/cond_fmaxnm_8.c: New test.
* gcc.target/gcn/cond_fmaxnm_8_run.c: New test.
* gcc.target/gcn/cond_fminnm_1.c: New test.
* gcc.target/gcn/cond_fminnm_1_run.c: New test.
* gcc.target/gcn/cond_fminnm_2.c: New test.
* gcc.target/gcn/cond_fminnm_2_run.c: New test.
* gcc.target/gcn/cond_fminnm_3.c: New test.
* gcc.target/gcn/cond_fminnm_3_run.c: New test.
* gcc.target/gcn/cond_fminnm_4.c: New test.
* gcc.target/gcn/cond_fminnm_4_run.c: New test.
* gcc.target/gcn/cond_fminnm_5.c: New test.
* gcc.target/gcn/cond_fminnm_5_run.c: New test.
* gcc.target/gcn/cond_fminnm_6.c: New test.
* gcc.target/gcn/cond_fminnm_6_run.c: New test.
* gcc.target/gcn/cond_fminnm_7.c: New test.
* gcc.target/gcn/cond_fminnm_7_run.c: New test.
* gcc.target/gcn/cond_fminnm_8.c: New test.
* gcc.target/gcn/cond_fminnm_8_run.c: New test.
* gcc.target/gcn/cond_smax_1.c: New test.
* gcc.target/gcn/cond_smax_1_run.c: New test.
* gcc.target/gcn/cond_smin_1.c: New test.
* gcc.target/gcn/cond_smin_1_run.c: New test.
* gcc.target/gcn/cond_umax_1.c: New test.
* gcc.target/gcn/cond_umax_1_run.c: New test.
* gcc.target/gcn/cond_umin_1.c: New test.
* gcc.target/gcn/cond_umin_1_run.c: New test.
* gcc.target/gcn/smax_1.c: New test.
* gcc.target/gcn/smax_1_run.c: New test.
* gcc.target/gcn/smin_1.c: New test.
* gcc.target/gcn/smin_1_run.c: New test.
* gcc.target/gcn/umax_1.c: New test.
* gcc.target/gcn/umax_1_run.c: New test.
* gcc.target/gcn/umin_1.c: New test.
* gcc.target/gcn/umin_1_run.c: New test.

(cherry picked from commit 553ff2524f412be4e02e2ffb1a0a3dc3e2280742)
52 files changed:
gcc/ChangeLog.omp
gcc/config/gcn/gcn-valu.md
gcc/config/gcn/gcn.cc
gcc/testsuite/ChangeLog.omp
gcc/testsuite/gcc.target/gcn/cond_fmaxnm_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fmaxnm_1_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fmaxnm_2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fmaxnm_2_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fmaxnm_3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fmaxnm_3_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fmaxnm_4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fmaxnm_4_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fmaxnm_5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fmaxnm_5_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fmaxnm_6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fmaxnm_6_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fmaxnm_7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fmaxnm_7_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fmaxnm_8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fmaxnm_8_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fminnm_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fminnm_1_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fminnm_2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fminnm_2_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fminnm_3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fminnm_3_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fminnm_4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fminnm_4_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fminnm_5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fminnm_5_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fminnm_6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fminnm_6_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fminnm_7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fminnm_7_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fminnm_8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_fminnm_8_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_smax_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_smax_1_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_smin_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_smin_1_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_umax_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_umax_1_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_umin_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/cond_umin_1_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/smax_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/smax_1_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/smin_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/smin_1_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/umax_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/umax_1_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/umin_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/gcn/umin_1_run.c [new file with mode: 0644]