summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorolegendo <olegendo@138bc75d-0d04-0410-961f-82ee72b054a4>2016-05-06 10:29:33 +0000
committerolegendo <olegendo@138bc75d-0d04-0410-961f-82ee72b054a4>2016-05-06 10:29:33 +0000
commitebae80b782377d8396f93c066c312ba527613554 (patch)
treebd660e7b66508384e4799283985e7eaa087fdcd0
parent7fc878c4736ad01071803eb37d79370f72c060ed (diff)
downloadgcc-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/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 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