diff options
author | Oleg Endo <olegendo@gcc.gnu.org> | 2016-05-06 10:29:33 +0000 |
---|---|---|
committer | Oleg Endo <olegendo@gcc.gnu.org> | 2016-05-06 10:29:33 +0000 |
commit | 74d5be8c5779288c38cfc4fde48feb7ce4cf0071 (patch) | |
tree | bd660e7b66508384e4799283985e7eaa087fdcd0 /gcc | |
parent | ce23a8ff10368c0d9b0b5aba820202bfea07b2c3 (diff) | |
download | gcc-74d5be8c5779288c38cfc4fde48feb7ce4cf0071.zip gcc-74d5be8c5779288c38cfc4fde48feb7ce4cf0071.tar.gz gcc-74d5be8c5779288c38cfc4fde48feb7ce4cf0071.tar.bz2 |
sh.md (*cmpeqsi_t): Remove combine insn pattern and similar corresponding combine split pattern.
gcc/
* config/sh/sh.md (*cmpeqsi_t): Remove combine insn pattern and similar
corresponding combine split pattern.
From-SVN: r235956
Diffstat (limited to 'gcc')
-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 84bf0c0..50a47af 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 7b0e746..2d0ca2f 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 |