diff options
author | Andreas Krebbel <krebbel@linux.ibm.com> | 2019-02-05 17:14:11 +0000 |
---|---|---|
committer | Andreas Krebbel <krebbel@gcc.gnu.org> | 2019-02-05 17:14:11 +0000 |
commit | 64c8e85aa5899eafa595be532275c1974e3f715a (patch) | |
tree | 41eaaff352e8216e53826ddae73c288477d817d5 | |
parent | faaeebd64671ebe0aabf203527bb7bf57476f4f3 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/s390/s390.md | 21 |
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" |