]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
S/390: Remove load and test fp splitter
authorAndreas Krebbel <krebbel@linux.ibm.com>
Tue, 5 Feb 2019 17:19:26 +0000 (17:19 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Tue, 5 Feb 2019 17:19:26 +0000 (17:19 +0000)
gcc/ChangeLog:

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

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

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

From-SVN: r268552

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

index 016f146f397ffd4165445f494eb2331653a23021..7c8da3e7ca11c37aed0a88fc6a9de2f099d4c16b 100644 (file)
@@ -1,3 +1,11 @@
+2019-02-05  Andreas Krebbel  <krebbel@linux.ibm.com>
+
+       Backport from mainline
+       2019-02-05  Andreas Krebbel  <krebbel@linux.ibm.com>
+
+       PR target/88856
+       * config/s390/s390.md: Remove load and test FP splitter.
+
 2019-02-04  Bill Schmidt  <wshmidt@linux.ibm.com>
 
        PR target/87064
index 6560ded069344cddb15ce3dd8e98def7ab5f06b0..bb39935485506fb48fdd38967b9ed875af26f1fe 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"