From b4363c5a269b8ac870921177e8024e3bf9eb0c23 Mon Sep 17 00:00:00 2001 From: Ilya Leoshkevich Date: Tue, 1 Oct 2019 14:03:08 +0000 Subject: [PATCH] S/390: Implement vcond expander for V1TI,V1TF 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 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 | 6 ++++++ gcc/config/s390/vector.md | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ab81f41..60c8f9f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-10-01 Ilya Leoshkevich + + 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 PR rtl-optimization/91948 diff --git a/gcc/config/s390/vector.md b/gcc/config/s390/vector.md index 961d2c6..d624d3f 100644 --- a/gcc/config/s390/vector.md +++ b/gcc/config/s390/vector.md @@ -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]) -- 2.7.4