]> git.ipfire.org Git - thirdparty/gcc.git/commit
[rs6000]Fix PR92132 by adding vec_cmp and vcond_mask supports
authorKewen Lin <linkw@gcc.gnu.org>
Fri, 8 Nov 2019 07:37:07 +0000 (07:37 +0000)
committerKewen Lin <linkw@gcc.gnu.org>
Fri, 8 Nov 2019 07:37:07 +0000 (07:37 +0000)
commitbc5b2b688150f96bd2b75aa1b7fc4d9d53712955
tree72c6939503d3634fa7879b4050366ec2b89ce287
parent1aeecaf58fa1fb33a08fba9b62f007740e9cb843
[rs6000]Fix PR92132 by adding vec_cmp and vcond_mask supports

  To support full condition reduction vectorization, we have to define
  vec_cmp* and vcond_mask_*.  This patch is to add related expands.
  Also add the missing vector fp comparison RTL pattern supports
  like: ungt, unge, unlt, unle, ne, lt and le.

gcc/ChangeLog

2019-11-08  Kewen Lin  <linkw@gcc.gnu.org>

    PR target/92132
    * config/rs6000/predicates.md
    (signed_or_equality_comparison_operator): New predicate.
    (unsigned_or_equality_comparison_operator): Likewise.
    * config/rs6000/rs6000.md (one_cmpl<mode>2): Remove expand.
    (one_cmpl<mode>3_internal): Rename to one_cmpl<mode>2.
    * config/rs6000/vector.md
    (vcond_mask_<mode><mode> for VEC_I and VEC_I): New expand.
    (vec_cmp<mode><mode> for VEC_I and VEC_I): Likewise.
    (vec_cmpu<mode><mode> for VEC_I and VEC_I): Likewise.
    (vcond_mask_<mode><VEC_int> for VEC_F): New expand for float
    vector modes and same-size integer vector modes.
    (vec_cmp<mode><VEC_int> for VEC_F): Likewise.
    (vector_lt<mode> for VEC_F): New expand.
    (vector_le<mode> for VEC_F): Likewise.
    (vector_ne<mode> for VEC_F): Likewise.
    (vector_unge<mode> for VEC_F): Likewise.
    (vector_ungt<mode> for VEC_F): Likewise.
    (vector_unle<mode> for VEC_F): Likewise.
    (vector_unlt<mode> for VEC_F): Likewise.
    (vector_uneq<mode>): Expose name.
    (vector_ltgt<mode>): Likewise.
    (vector_unordered<mode>): Likewise.
    (vector_ordered<mode>): Likewise.

gcc/testsuite/ChangeLog

2019-11-08  Kewen Lin  <linkw@gcc.gnu.org>

    PR target/92132
    * gcc.target/powerpc/pr92132-fp-1.c: New test.
    * gcc.target/powerpc/pr92132-fp-2.c: New test.
    * gcc.target/powerpc/pr92132-int-1.c: New test.
    * gcc.target/powerpc/pr92132-int-2.c: New test.

From-SVN: r277947
gcc/ChangeLog
gcc/config/rs6000/predicates.md
gcc/config/rs6000/rs6000.md
gcc/config/rs6000/vector.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/powerpc/pr92132-fp-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/pr92132-fp-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/pr92132-int-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/pr92132-int-2.c [new file with mode: 0644]