aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1995-05-23 14:37:52 -0700
committerJim Wilson <wilson@gcc.gnu.org>1995-05-23 14:37:52 -0700
commite33915104685e7c3c0ab74e402d859baabee6a24 (patch)
treeef35b93ca5cf15d9a2bbefbdecfaffb142dccbd2 /gcc
parent5b5187b3671667b275e2821555b44074b4d35f00 (diff)
downloadgcc-e33915104685e7c3c0ab74e402d859baabee6a24.zip
gcc-e33915104685e7c3c0ab74e402d859baabee6a24.tar.gz
gcc-e33915104685e7c3c0ab74e402d859baabee6a24.tar.bz2
(sett): New pattern.
(movsi_i): Change source constraint for move to T reg to be 'z'. From-SVN: r9783
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/sh/sh.md10
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index 86cdd6b..70d32ea 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -982,14 +982,22 @@
[(set_attr "type" "load,pload,load")
(set_attr "hit_stack" "yes")])
+;; These two patterns can happen as the result of optimization, when
+;; comparisons get simplified to a move of zero or 1 into the T reg.
+;; They don't disappear completely, because the T reg is a fixed hard reg.
(define_insn "clrt"
[(set (reg:SI 18) (const_int 0))]
""
"clrt")
+(define_insn "sett"
+ [(set (reg:SI 18) (const_int 1))]
+ ""
+ "sett")
+
(define_insn "movsi_i"
[(set (match_operand:SI 0 "general_movdst_operand" "=r,r,r,r,r,m,<,xl,xl,t,r")
- (match_operand:SI 1 "general_movsrc_operand" "Q,rI,m,xl,t,r,xl,r,>,r,i"))]
+ (match_operand:SI 1 "general_movsrc_operand" "Q,rI,m,xl,t,r,xl,r,>,z,i"))]
"register_operand (operands[0], SImode)
|| register_operand (operands[1], SImode)"
"@