aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorOleg Endo <olegendo@gcc.gnu.org>2016-05-06 10:29:33 +0000
committerOleg Endo <olegendo@gcc.gnu.org>2016-05-06 10:29:33 +0000
commit74d5be8c5779288c38cfc4fde48feb7ce4cf0071 (patch)
treebd660e7b66508384e4799283985e7eaa087fdcd0 /gcc
parentce23a8ff10368c0d9b0b5aba820202bfea07b2c3 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/config/sh/sh.md39
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