From 052d9d67b5cd6acb585ab731b0ae582aa69b9593 Mon Sep 17 00:00:00 2001 From: ciceron Date: Sat, 5 May 2001 06:51:23 +0000 Subject: [PATCH] * config/m68hc11/m68hc11.md ("*logicalsi3_silshr16"): Use '?' instead of '!' for the 'D' alternative ('!' is too strong). ("*logicalsi3_silshl16"): Likewise. ("movstricthi"): Accept 'A' when 'd' constraint, remove spurious '+'. ("movstrictsi"): Remove spurious '+'. ("movstrictqi"): Don't accept 'A' and remove spurious '+'. ("tstqi_1", "*lshrqi3_const1"): Put 'm' constraint before 'd'. ("subqi3"): Disparage with '!' the 'x' and 'y' registers to avoid a reload to them. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@41859 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 12 +++++++++++ gcc/config/m68hc11/m68hc11.md | 46 +++++++++++++++++++++---------------------- 2 files changed, 35 insertions(+), 23 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 92d92cc..15f07ba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2001-05-05 Stephane Carrez + + * config/m68hc11/m68hc11.md ("*logicalsi3_silshr16"): Use '?' instead + of '!' for the 'D' alternative ('!' is too strong). + ("*logicalsi3_silshl16"): Likewise. + ("movstricthi"): Accept 'A' when 'd' constraint, remove spurious '+'. + ("movstrictsi"): Remove spurious '+'. + ("movstrictqi"): Don't accept 'A' and remove spurious '+'. + ("tstqi_1", "*lshrqi3_const1"): Put 'm' constraint before 'd'. + ("subqi3"): Disparage with '!' the 'x' and 'y' registers to avoid + a reload to them. + 2001-05-04 David Edelsohn * calls.c (store_one_arg): Don't divide align by BITS_PER_UNIT. diff --git a/gcc/config/m68hc11/m68hc11.md b/gcc/config/m68hc11/m68hc11.md index 844c982..38bc6e0 100644 --- a/gcc/config/m68hc11/m68hc11.md +++ b/gcc/config/m68hc11/m68hc11.md @@ -207,11 +207,11 @@ (define_insn "tstqi_1" [(set (cc0) - (match_operand:QI 0 "tst_operand" "d,m,*A,!u"))] + (match_operand:QI 0 "tst_operand" "m,d,*A,!u"))] "" "@ - tstb tst\\t%0 + tstb # tst\\t%b0") @@ -467,7 +467,7 @@ (define_insn "cmpqi_1" [(set (cc0) (compare (match_operand:QI 0 "tst_operand" "d,d,*x*y,*x*y") - (match_operand:QI 1 "cmp_operand" "im,?u,?u,?dim*x*y")))] + (match_operand:QI 1 "cmp_operand" "im,!u,!u,?dim*x*y")))] "" "@ cmpb\\t%1 @@ -531,40 +531,40 @@ ;; description but not for GCC optimization passes. ;; (define_insn "movstrictsi" - [(set (strict_low_part (match_operand:SI 0 "non_push_operand" "+um,+D,+D")) + [(set (strict_low_part (match_operand:SI 0 "non_push_operand" "+um,D,D")) (match_operand:SI 1 "general_operand" "D,Dim,uD"))] "" "#") (define_split - [(set (strict_low_part (match_operand:SI 0 "non_push_operand" "+um,+D,+D")) + [(set (strict_low_part (match_operand:SI 0 "non_push_operand" "+um,D,D")) (match_operand:SI 1 "general_operand" "D,Dim,u"))] "z_replacement_completed == 2" [(set (match_dup 0) (match_dup 1))] "") (define_insn "movstricthi" - [(set (strict_low_part (match_operand:HI 0 "non_push_operand" "+um,+d,+d")) - (match_operand:HI 1 "general_operand" "d,dim,u"))] + [(set (strict_low_part (match_operand:HI 0 "non_push_operand" "+um,dA,dA")) + (match_operand:HI 1 "general_operand" "dA,dAim,u"))] "" "#") (define_split - [(set (strict_low_part (match_operand:HI 0 "non_push_operand" "+um,+d,+d")) - (match_operand:HI 1 "general_operand" "d,dim,u"))] + [(set (strict_low_part (match_operand:HI 0 "non_push_operand" "+um,dA,dA")) + (match_operand:HI 1 "general_operand" "dA,dAim,u"))] "z_replacement_completed == 2" [(set (match_dup 0) (match_dup 1))] "") (define_insn "movstrictqi" - [(set (strict_low_part (match_operand:QI 0 "non_push_operand" "+mu,+!d")) - (match_operand:QI 1 "general_operand" "d,imu"))] + [(set (strict_low_part (match_operand:QI 0 "non_push_operand" "+mu,!dA")) + (match_operand:QI 1 "general_operand" "d,imudA"))] "" "#") (define_split - [(set (strict_low_part (match_operand:QI 0 "non_push_operand" "+mu,+d,+d")) - (match_operand:QI 1 "general_operand" "d,dim,u"))] + [(set (strict_low_part (match_operand:QI 0 "non_push_operand" "+mu,dA")) + (match_operand:QI 1 "general_operand" "d,imudA"))] "z_replacement_completed == 2" [(set (match_dup 0) (match_dup 1))] "") @@ -2586,9 +2586,9 @@ }") (define_insn "subqi3" - [(set (match_operand:QI 0 "hard_reg_operand" "=dq*x*y") - (minus:QI (match_operand:QI 1 "hard_reg_operand" "0") - (match_operand:QI 2 "general_operand" "uim*x*y*d")))] + [(set (match_operand:QI 0 "hard_reg_operand" "=dq,!*x*y") + (minus:QI (match_operand:QI 1 "hard_reg_operand" "0,0") + (match_operand:QI 2 "general_operand" "uim*A*d,uim*A*d")))] "" "* { @@ -3378,7 +3378,7 @@ [(set (match_operand:SI 0 "register_operand" "=D,D") (match_operator:SI 3 "m68hc11_logical_operator" [(lshiftrt:SI - (match_operand:SI 1 "general_operand" "uim,!D") + (match_operand:SI 1 "general_operand" "uim,?D") (const_int 16)) (match_operand:SI 2 "general_operand" "uim,0")]))] "" @@ -3388,7 +3388,7 @@ [(set (match_operand:SI 0 "register_operand" "=D,D") (match_operator:SI 3 "m68hc11_logical_operator" [(lshiftrt:SI - (match_operand:SI 1 "general_operand" "uim,!D") + (match_operand:SI 1 "general_operand" "uim,?D") (const_int 16)) (match_operand:SI 2 "general_operand" "uim,0")]))] "reload_completed" @@ -3414,7 +3414,7 @@ [(set (match_operand:SI 0 "register_operand" "=D,D") (match_operator:SI 3 "m68hc11_logical_operator" [(ashift:SI - (match_operand:SI 1 "general_operand" "uim,!D") + (match_operand:SI 1 "general_operand" "uim,?D") (const_int 16)) (match_operand:SI 2 "general_operand" "0,0")]))] "" @@ -3424,7 +3424,7 @@ [(set (match_operand:SI 0 "register_operand" "=D,D") (match_operator:SI 3 "m68hc11_logical_operator" [(ashift:SI - (match_operand:SI 1 "general_operand" "uim,!D") + (match_operand:SI 1 "general_operand" "uim,?D") (const_int 16)) (match_operand:SI 2 "general_operand" "0,0")]))] "z_replacement_completed == 2" @@ -3898,7 +3898,7 @@ [(set (match_operand:DI 0 "nonimmediate_operand" "=<,m,u") (ashift:DI (match_operand:DI 1 "general_operand" "umi,umi,umi") (const_int 32))) - (clobber (match_scratch:HI 2 "=A,d,d"))] + (clobber (match_scratch:HI 2 "=&A,d,d"))] "" "#") @@ -5075,13 +5075,13 @@ "") (define_insn "*lshrqi3_const1" - [(set (match_operand:QI 0 "nonimmediate_operand" "=d,m,!u,!*q,!*A") + [(set (match_operand:QI 0 "nonimmediate_operand" "=m,d,!u,!*q,!*A") (lshiftrt:QI (match_operand:QI 1 "nonimmediate_operand" "0,0,0,0,0") (const_int 1)))] "" "@ - lsrb lsr\\t%b0 + lsrb lsr\\t%b0 lsr%0 #") -- 2.7.4