aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel@linux.ibm.com>2019-02-05 17:14:11 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2019-02-05 17:14:11 +0000
commit64c8e85aa5899eafa595be532275c1974e3f715a (patch)
tree41eaaff352e8216e53826ddae73c288477d817d5
parentfaaeebd64671ebe0aabf203527bb7bf57476f4f3 (diff)
downloadgcc-64c8e85aa5899eafa595be532275c1974e3f715a.zip
gcc-64c8e85aa5899eafa595be532275c1974e3f715a.tar.gz
gcc-64c8e85aa5899eafa595be532275c1974e3f715a.tar.bz2
S/390: Remove load and test fp splitter
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
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/s390/s390.md21
2 files changed, 8 insertions, 18 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b3c2e7c..137066a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index 722d924..9033672 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -1357,10 +1357,11 @@
; (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"
@@ -1373,22 +1374,6 @@
[(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"