S/390: Remove load and test fp splitter
authorAndreas Krebbel <krebbel@linux.ibm.com>
Tue, 5 Feb 2019 17:14:11 +0000 (17:14 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Tue, 5 Feb 2019 17:14:11 +0000 (17:14 +0000)
gcc/ChangeLog:

2019-02-05  Andreas Krebbel  <krebbel@linux.ibm.com>

PR target/88856
* config/s390/s390.md: Remove load and test FP splitter.

From-SVN: r268550

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

index b3c2e7c46d365a608309553ac6d0cf65729f1b22..137066a52f6bd1054785585cd145176f86301f7f 100644 (file)
@@ -1,3 +1,8 @@
+2019-02-05  Andreas Krebbel  <krebbel@linux.ibm.com>
+
+       PR target/88856
+       * config/s390/s390.md: Remove load and test FP splitter.
+
 2019-02-05  Aaron Sawdey  <acsawdey@linux.ibm.com>
 
        PR target/89112
index 722d9241b7b214bb4eed00d34a72d011be660bc3..903367201f445aa39fc04c2345a33e00190410ee 100644 (file)
 ; (TF|DF|SF|TD|DD|SD) instructions
 
 
-; load and test instructions turn SNaN into QNaN what is not
+; FIXME: load and test instructions turn SNaN into QNaN what is not
 ; acceptable if the target will be used afterwards.  On the other hand
 ; they are quite convenient for implementing comparisons with 0.0. So
-; try to enable them via splitter if the value isn't needed anymore.
+; try to enable them via splitter/peephole if the value isn't needed anymore.
+; See testcases: load-and-test-fp-1.c and load-and-test-fp-2.c
 
 ; ltxbr, ltdbr, ltebr, ltxtr, ltdtr
 (define_insn "*cmp<mode>_ccs_0"
    [(set_attr "op_type" "RRE")
     (set_attr "type"  "fsimp<mode>")])
 
-(define_split
-  [(set (match_operand 0 "cc_reg_operand")
-       (compare (match_operand:FP 1 "register_operand")
-                (match_operand:FP 2 "const0_operand")))]
-  "TARGET_HARD_FLOAT && REG_P (operands[1]) && dead_or_set_p (insn, operands[1])"
-  [(parallel
-    [(set (match_dup 0) (match_dup 3))
-     (clobber (match_dup 1))])]
- {
-   /* s390_match_ccmode requires the compare to have the same CC mode
-      as the CC destination register.  */
-   operands[3] = gen_rtx_COMPARE (GET_MODE (operands[0]),
-                                 operands[1], operands[2]);
- })
-
-
 ; VX: TFmode in FPR pairs: use cxbr instead of wfcxb
 ; cxtr, cdtr, cxbr, cdbr, cebr, cdb, ceb, wfcsb, wfcdb
 (define_insn "*cmp<mode>_ccs"