From: Andreas Krebbel Date: Tue, 5 Feb 2019 17:19:26 +0000 (+0000) Subject: S/390: Remove load and test fp splitter X-Git-Tag: releases/gcc-7.5.0~612 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=617eb3a96c4140e24a87acb983c74ccbb0971147;p=thirdparty%2Fgcc.git S/390: Remove load and test fp splitter gcc/ChangeLog: 2019-02-05 Andreas Krebbel Backport from mainline 2019-02-05 Andreas Krebbel PR target/88856 * config/s390/s390.md: Remove load and test FP splitter. From-SVN: r268552 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 016f146f397f..7c8da3e7ca11 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2019-02-05 Andreas Krebbel + + Backport from mainline + 2019-02-05 Andreas Krebbel + + PR target/88856 + * config/s390/s390.md: Remove load and test FP splitter. + 2019-02-04 Bill Schmidt PR target/87064 diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index 6560ded06934..bb3993548550 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -1332,10 +1332,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_ccs_0" @@ -1348,22 +1349,6 @@ [(set_attr "op_type" "RRE") (set_attr "type" "fsimp")]) -(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_ccs"