S/390: Implement vcond expander for V1TI,V1TF
authorIlya Leoshkevich <iii@linux.ibm.com>
Tue, 1 Oct 2019 14:03:08 +0000 (14:03 +0000)
committerIlya Leoshkevich <iii@gcc.gnu.org>
Tue, 1 Oct 2019 14:03:08 +0000 (14:03 +0000)
Currently gcc does not emit wf{c,k}* instructions when comparing long
double values.  Middle-end actually adds them in the first place, but
then veclower pass replaces them with floating point register pair
operations, because the corresponding expander is missing.

gcc/ChangeLog:

2019-10-01  Ilya Leoshkevich  <iii@linux.ibm.com>

PR target/77918
* config/s390/vector.md (V_HW): Add V1TI in order to make
vcond$a$b generate vcondv1tiv1tf.

From-SVN: r276408

gcc/ChangeLog
gcc/config/s390/vector.md

index ab81f41..60c8f9f 100644 (file)
@@ -1,3 +1,9 @@
+2019-10-01  Ilya Leoshkevich  <iii@linux.ibm.com>
+
+       PR target/77918
+       * config/s390/vector.md (V_HW): Add V1TI in order to make
+       vcond$a$b generate vcondv1tiv1tf.
+
 2019-10-01  Richard Sandiford  <richard.sandiford@arm.com>
 
        PR rtl-optimization/91948
index 961d2c6..d624d3f 100644 (file)
@@ -29,7 +29,7 @@
 ; All modes directly supported by the hardware having full vector reg size
 ; V_HW2 is duplicate of V_HW for having two iterators expanding
 ; independently e.g. vcond
-(define_mode_iterator V_HW  [V16QI V8HI V4SI V2DI V2DF (V4SF "TARGET_VXE") (V1TF "TARGET_VXE")])
+(define_mode_iterator V_HW  [V16QI V8HI V4SI V2DI (V1TI "TARGET_VXE") V2DF (V4SF "TARGET_VXE") (V1TF "TARGET_VXE")])
 (define_mode_iterator V_HW2 [V16QI V8HI V4SI V2DI V2DF (V4SF "TARGET_VXE") (V1TF "TARGET_VXE")])
 
 (define_mode_iterator V_HW_64 [V2DI V2DF])