aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/config/m68hc11/m68hc11.md86
2 files changed, 53 insertions, 45 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6c1b1fe..6fc8dc2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,15 @@
+2001-01-11 Stephane Carrez <Stephane.Carrez@worldnet.fr>
+
+ * config/m68hc11/m68hc11.md (*adcq, *subcq): Fix operand numbers.
+ (*ashlsi3_const16_zexthi, *ashlsi3_const1): Likewise.
+ (*lshrsi3_const, *lshrsi3_const1, *lshrsi3_const16): Likewise.
+ (*ashrsi3, *ashrsi3_const, *ashlsi3, *ashlsi3_const): Likewise.
+ (*ashlsi3_const1, *lshrsi3, *ashlsi3_const16): Likewise.
+ (cmphi_z_used): Don't use '@' for the output.
+ (tstqi_z_used): Likewise.
+ (cmpqi_z_used): Likewise.
+ (one_cmplsi2): Likewise.
+
2001-01-11 Alexandre Oliva <aoliva@redhat.com>
* config/sh/sh.c (barrier_align): Recognize branch around far
diff --git a/gcc/config/m68hc11/m68hc11.md b/gcc/config/m68hc11/m68hc11.md
index b833069..6a60b83 100644
--- a/gcc/config/m68hc11/m68hc11.md
+++ b/gcc/config/m68hc11/m68hc11.md
@@ -1,5 +1,5 @@
;;- Machine description file for Motorola 68HC11 and 68HC12.
-;;- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+;;- Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
;;- Contributed by Stephane Carrez (stcarrez@worldnet.fr)
;; This file is part of GNU CC.
@@ -214,8 +214,7 @@
(use (match_operand:HI 1 "hard_reg_operand" "dxy"))
(use (reg:HI 11))]
""
- "@
- #")
+ "#")
(define_split /* "tstqi_z_used" */
[(set (cc0)
@@ -305,8 +304,7 @@
(use (match_operand:HI 2 "hard_reg_operand" "dxy"))
(use (reg:HI 11))]
""
- "@
- #")
+ "#")
(define_split /* "cmphi_z_used" */
[(set (cc0)
@@ -385,8 +383,7 @@
(use (match_operand:HI 2 "hard_reg_operand" "dxy"))
(use (reg:HI 11))]
""
- "@
- #")
+ "#")
(define_split /* cmpqi_z_used */
[(set (cc0)
@@ -2113,10 +2110,10 @@
(define_insn "*adcq"
[(set (match_operand:QI 0 "register_operand" "=q")
(plus:QI (plus:QI (reg:QI 7)
- (match_operand:QI 2 "register_operand" "%0"))
- (match_operand:QI 3 "general_operand" "ium")))]
+ (match_operand:QI 1 "register_operand" "%0"))
+ (match_operand:QI 2 "general_operand" "ium")))]
""
- "adc%0\\t%b3")
+ "adc%0\\t%b2")
;;--------------------------------------------------------------------
;;- Subtract instructions.
@@ -2368,10 +2365,10 @@
(define_insn "*subcq"
[(set (match_operand:QI 0 "register_operand" "=q")
(minus:QI (minus:QI (reg:QI 7)
- (match_operand:QI 2 "register_operand" "0"))
- (match_operand:QI 3 "general_operand" "ium")))]
+ (match_operand:QI 1 "register_operand" "0"))
+ (match_operand:QI 2 "general_operand" "ium")))]
""
- "sbc%0\\t%b3")
+ "sbc%0\\t%b2")
;;--------------------------------------------------------------------
;;- Multiply instructions.
@@ -3504,8 +3501,7 @@
[(set (match_operand:SI 0 "non_push_operand" "=D")
(not:SI (match_operand:SI 1 "general_operand" "0")))]
""
- "@
- bsr\\t___one_cmplsi2")
+ "bsr\\t___one_cmplsi2")
(define_insn "one_cmplhi2"
[(set (match_operand:HI 0 "non_push_operand" "=d,!um,*A")
@@ -3746,7 +3742,7 @@
[(set (match_operand:SI 0 "nonimmediate_operand" "=D,*um")
(ashift:SI (match_operand:SI 1 "general_operand" "Duim,D")
(const_int 16)))
- (clobber (match_scratch:HI 3 "=X,X"))]
+ (clobber (match_scratch:HI 2 "=X,X"))]
""
"#")
@@ -3755,7 +3751,7 @@
(ashift:SI (zero_extend:HI
(match_operand:HI 1 "general_operand" "duim*A"))
(const_int 16)))
- (clobber (match_scratch:HI 3 "=X"))]
+ (clobber (match_scratch:HI 2 "=X"))]
""
"#")
@@ -3764,7 +3760,7 @@
(ashift:SI (zero_extend:HI
(match_operand:HI 1 "general_operand" "duim*a"))
(const_int 16)))
- (clobber (match_scratch:HI 3 "=X"))]
+ (clobber (match_scratch:HI 2 "=X"))]
"reload_completed"
[(set (reg:HI 0) (match_dup 1))
(set (reg:HI 1) (const_int 0))]
@@ -3774,7 +3770,7 @@
[(set (match_operand:SI 0 "non_push_operand" "=D,D,*um,?*um")
(ashift:SI (match_operand:SI 1 "nonimmediate_operand" "0,*um,0,*um")
(const_int 1)))
- (clobber (match_scratch:HI 3 "=X,X,&d,&d"))]
+ (clobber (match_scratch:HI 2 "=X,X,&d,&d"))]
""
"*
{
@@ -3828,20 +3824,20 @@
(define_insn "*ashlsi3_const"
[(set (match_operand:SI 0 "register_operand" "+D")
(ashift:SI (match_dup 0)
- (match_operand:HI 2 "const_int_operand" "")))
- (clobber (match_scratch:HI 3 "=y"))]
+ (match_operand:HI 1 "const_int_operand" "")))
+ (clobber (match_scratch:HI 2 "=y"))]
""
"*
{
CC_STATUS_INIT;
- return \"ldy\\t%2\\n\\tbsr\\t___ashlsi3\";
+ return \"ldy\\t%1\\n\\tbsr\\t___ashlsi3\";
}")
(define_insn "*ashlsi3"
[(set (match_operand:SI 0 "register_operand" "+D,D")
(ashift:SI (match_dup 0)
- (match_operand:HI 2 "general_operand" "y,m")))
- (clobber (match_scratch:HI 3 "=2,X"))]
+ (match_operand:HI 1 "general_operand" "y,m")))
+ (clobber (match_scratch:HI 2 "=1,X"))]
""
"*
{
@@ -3852,12 +3848,12 @@
and this conflicts with all reloads. Since X, Y, Z are used there
is not enough register in class A_REGS.
- Assuming that 'operands[2]' does not refer to the stack (which
+ Assuming that 'operands[1]' does not refer to the stack (which
is true for 68hc11 only, we save temporary the value of Y. */
- if (!Y_REG_P (operands[3]))
+ if (!Y_REG_P (operands[2]))
{
output_asm_insn (\"pshy\", operands);
- output_asm_insn (\"ldy\\t%2\", operands);
+ output_asm_insn (\"ldy\\t%1\", operands);
output_asm_insn (\"bsr\\t___ashlsi3\", operands);
return \"puly\";
}
@@ -4229,20 +4225,20 @@
(define_insn "*ashrsi3_const"
[(set (match_operand:SI 0 "register_operand" "+D")
(ashiftrt:SI (match_dup 0)
- (match_operand:HI 2 "const_int_operand" "")))
- (clobber (match_scratch:HI 3 "=y"))]
+ (match_operand:HI 1 "const_int_operand" "")))
+ (clobber (match_scratch:HI 2 "=y"))]
""
"*
{
CC_STATUS_INIT;
- return \"ldy\\t%2\\n\\tbsr\\t___ashrsi3\";
+ return \"ldy\\t%1\\n\\tbsr\\t___ashrsi3\";
}")
(define_insn "*ashrsi3"
[(set (match_operand:SI 0 "register_operand" "+D,D")
(ashiftrt:SI (match_dup 0)
- (match_operand:HI 2 "general_operand" "y,m")))
- (clobber (match_scratch:HI 3 "=2,X"))]
+ (match_operand:HI 1 "general_operand" "y,m")))
+ (clobber (match_scratch:HI 2 "=1,X"))]
""
"*
{
@@ -4252,12 +4248,12 @@
and this conflicts with all reloads. Since X, Y, Z are used there
is not enough register in class A_REGS.
- Assuming that 'operands[2]' does not refer to the stack (which
+ Assuming that 'operands[1]' does not refer to the stack (which
is true for 68hc11 only, we save temporary the value of Y. */
- if (!Y_REG_P (operands[3]))
+ if (!Y_REG_P (operands[2]))
{
output_asm_insn (\"pshy\", operands);
- output_asm_insn (\"ldy\\t%2\", operands);
+ output_asm_insn (\"ldy\\t%1\", operands);
output_asm_insn (\"bsr\\t___ashrsi3\", operands);
return \"puly\";
}
@@ -4504,7 +4500,7 @@
[(set (match_operand:SI 0 "non_push_operand" "=D,D,um")
(lshiftrt:SI (match_operand:SI 1 "general_operand" "uim,0,D")
(const_int 16)))
- (clobber (match_scratch:HI 3 "=X,X,X"))]
+ (clobber (match_scratch:HI 2 "=X,X,X"))]
""
"#
xgdx\\n\\tldx\\t#0
@@ -4514,7 +4510,7 @@
[(set (match_operand:SI 0 "non_push_operand" "=D,*um")
(lshiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "D*um,*um")
(const_int 1)))
- (clobber (match_scratch:HI 3 "=X,&d"))]
+ (clobber (match_scratch:HI 2 "=X,&d"))]
""
"*
{
@@ -4563,20 +4559,20 @@
(define_insn "*lshrsi3_const"
[(set (match_operand:SI 0 "register_operand" "+D")
(lshiftrt:SI (match_dup 0)
- (match_operand:HI 2 "const_int_operand" "")))
- (clobber (match_scratch:HI 3 "=y"))]
+ (match_operand:HI 1 "const_int_operand" "")))
+ (clobber (match_scratch:HI 2 "=y"))]
""
"*
{
CC_STATUS_INIT;
- return \"ldy\\t%2\\n\\tbsr\\t___lshrsi3\";
+ return \"ldy\\t%1\\n\\tbsr\\t___lshrsi3\";
}")
(define_insn "*lshrsi3"
[(set (match_operand:SI 0 "register_operand" "+D,D")
(lshiftrt:SI (match_dup 0)
- (match_operand:HI 2 "general_operand" "y,m")))
- (clobber (match_scratch:HI 3 "=2,X"))]
+ (match_operand:HI 1 "general_operand" "y,m")))
+ (clobber (match_scratch:HI 2 "=1,X"))]
""
"*
{
@@ -4586,12 +4582,12 @@
and this conflicts with all reloads. Since X, Y, Z are used there
is not enough register in class A_REGS.
- Assuming that 'operands[2]' does not refer to the stack (which
+ Assuming that 'operands[1]' does not refer to the stack (which
is true for 68hc11 only, we save temporary the value of Y. */
- if (!Y_REG_P (operands[3]))
+ if (!Y_REG_P (operands[2]))
{
output_asm_insn (\"pshy\", operands);
- output_asm_insn (\"ldy\\t%2\", operands);
+ output_asm_insn (\"ldy\\t%1\", operands);
output_asm_insn (\"bsr\\t___lshrsi3\", operands);
return \"puly\";
}