]> git.ipfire.org Git - thirdparty/gcc.git/commit
vect: Adjust vect_transform_reduction assertion [PR114883]
authorJakub Jelinek <jakub@redhat.com>
Tue, 30 Apr 2024 08:11:47 +0000 (10:11 +0200)
committerJakub Jelinek <jakub@redhat.com>
Tue, 30 Apr 2024 08:11:47 +0000 (10:11 +0200)
commit04ef92a62af3a815b86a2037267cd4e747ae225c
tree0d9105638688af82cbbca68c126b7cdac9cb8631
parent3146a92a77f1fccec71a880c7f890a1251aeab41
vect: Adjust vect_transform_reduction assertion [PR114883]

The assertion doesn't allow IFN_COND_MIN/IFN_COND_MAX, which are
commutative conditional binary operations like ADD/MUL/AND/IOR/XOR,
and can be handled just fine.
In particular, we emit
        vminpd  %zmm3, %zmm5, %zmm0{%k2}
        vminpd  %zmm0, %zmm3, %zmm5{%k1}
and
        vmaxpd  %zmm3, %zmm5, %zmm0{%k2}
        vmaxpd  %zmm0, %zmm3, %zmm5{%k1}
in the vectorized loops of the first and second subroutine.

2024-04-30  Jakub Jelinek  <jakub@redhat.com>
    Hongtao Liu  <hongtao.liu@intel.com>

PR tree-optimization/114883
* tree-vect-loop.cc (vect_transform_reduction): Allow IFN_COND_MIN and
IFN_COND_MAX in the assert.

* gfortran.dg/pr114883.f90: New test.
gcc/testsuite/gfortran.dg/pr114883.f90 [new file with mode: 0644]
gcc/tree-vect-loop.cc