diff options
author | olegendo <olegendo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-05-06 10:29:33 +0000 |
---|---|---|
committer | olegendo <olegendo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-05-06 10:29:33 +0000 |
commit | ebae80b782377d8396f93c066c312ba527613554 (patch) | |
tree | bd660e7b66508384e4799283985e7eaa087fdcd0 | |
parent | 7fc878c4736ad01071803eb37d79370f72c060ed (diff) | |
download | gcc-ebae80b782377d8396f93c066c312ba527613554.tar.gz |
gcc/
* config/sh/sh.md (*cmpeqsi_t): Remove combine insn pattern and similar
corresponding combine split pattern.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235956 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/sh/sh.md | 39 |
2 files changed, 5 insertions, 39 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 84bf0c095cf..50a47af4d04 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2016-05-06 Oleg Endo <olegendo@gcc.gnu.org> + * config/sh/sh.md (*cmpeqsi_t): Remove combine insn pattern and similar + corresponding combine split pattern. + +2016-05-06 Oleg Endo <olegendo@gcc.gnu.org> + PR target/58219 * config/sh/predicates.md (long_displacement_mem_operand): New. * config/sh/sh.md (movsi_i): Allow for SH2A, disallow for any FPU. diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index 7b0e746a051..2d0ca2feb8c 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -909,22 +909,6 @@ FAIL; }) -;; FIXME: For some reason, on SH4A and SH2A combine fails to simplify this -;; pattern by itself. What this actually does is: -;; x == 0: (1 >> 0-0) & 1 = 1 -;; x != 0: (1 >> 0-x) & 1 = 0 -;; Without this the test pr51244-8.c fails on SH2A and SH4A. -(define_insn_and_split "*cmpeqsi_t" - [(set (reg:SI T_REG) - (and:SI (lshiftrt:SI - (const_int 1) - (neg:SI (match_operand:SI 0 "arith_reg_operand" "r"))) - (const_int 1)))] - "TARGET_SH1" - "#" - "&& 1" - [(set (reg:SI T_REG) (eq:SI (match_dup 0) (const_int 0)))]) - (define_insn "cmpgtsi_t" [(set (reg:SI T_REG) (gt:SI (match_operand:SI 0 "arith_reg_operand" "r,r") @@ -1229,29 +1213,6 @@ (label_ref (match_dup 2)) (pc)))]) -;; FIXME: Similar to the *cmpeqsi_t pattern above, for some reason, on SH4A -;; and SH2A combine fails to simplify this pattern by itself. -;; What this actually does is: -;; x == 0: (1 >> 0-0) & 1 = 1 -;; x != 0: (1 >> 0-x) & 1 = 0 -;; Without this the test pr51244-8.c fails on SH2A and SH4A. -(define_split - [(set (pc) - (if_then_else - (eq (and:SI (lshiftrt:SI - (const_int 1) - (neg:SI (match_operand:SI 0 "arith_reg_operand" ""))) - (const_int 1)) - (const_int 0)) - (label_ref (match_operand 2)) - (pc))) - (clobber (reg:SI T_REG))] - "TARGET_SH1" - [(set (reg:SI T_REG) (eq:SI (match_dup 0) (const_int 0))) - (set (pc) (if_then_else (eq (reg:SI T_REG) (const_int 0)) - (label_ref (match_dup 2)) - (pc)))]) - ;; FIXME: These don't seem to have any effect on the generated cbranch code ;; anymore, but only on some register allocation choices. (define_split |