S/390: Merge compare of compare results
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>
Fri, 2 Dec 2016 08:22:34 +0000 (08:22 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Fri, 2 Dec 2016 08:22:34 +0000 (08:22 +0000)
commiteca9803844ddf459d3f5992aa88353603f0cb731
tree175e6e75fad8aa9948599146110c6f81308ef43d
parenta6a2b532f9c4e92277e390febc8c07f773becb1b
S/390: Merge compare of compare results

With this patch EQ and NE compares on CC mode reader patterns are
folded.  This allows using the result of the vec_all_* and vec_any_*
builtins directly in a conditional jump instruction as in the attached
testcase.

gcc/ChangeLog:

2016-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* config/s390/s390-protos.h (s390_reverse_condition): New
prototype.
* config/s390/s390.c (s390_canonicalize_comparison): Fold compares
of CC mode values.
(s390_reverse_condition): New function.
* config/s390/s390.h (REVERSE_CC_MODE, REVERSE_CONDITION): Define
target macros.

gcc/testsuite/ChangeLog:

2016-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* gcc.target/s390/zvector/vec-cmp-2.c: New test.

From-SVN: r243155
gcc/ChangeLog
gcc/config/s390/s390-protos.h
gcc/config/s390/s390.c
gcc/config/s390/s390.h
gcc/testsuite/ChangeLog