m68hc11.md ("cmphi_1", "cmpqi_1"): Allow memory and soft register for operand 0.

* config/m68hc11/m68hc11.md ("cmphi_1", "cmpqi_1"): Allow memory
	and soft register for operand 0.
	("cmphi_z_used", "cmpqi_z_used"): Allow memory for operand 0.

From-SVN: r44631
This commit is contained in:
Stephane Carrez 2001-08-04 13:26:17 +02:00 committed by Stephane Carrez
parent d8de89e827
commit 03997728b4
2 changed files with 41 additions and 22 deletions

View File

@ -1,3 +1,9 @@
2001-08-04 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* config/m68hc11/m68hc11.md ("cmphi_1", "cmpqi_1"): Allow memory
and soft register for operand 0.
("cmphi_z_used", "cmpqi_z_used"): Allow memory for operand 0.
2001-08-04 Stephane Carrez <Stephane.Carrez@worldnet.fr> 2001-08-04 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* config/m68hc11/m68hc11.md ("bitcmpqi"): Allow memory and soft * config/m68hc11/m68hc11.md ("bitcmpqi"): Allow memory and soft

View File

@ -303,13 +303,18 @@
(define_insn "cmphi_1" (define_insn "cmphi_1"
[(set (cc0) [(set (cc0)
(compare (match_operand:HI 0 "tst_operand" (compare (match_operand:HI 0 "tst_operand"
"xy,d,?xy,d,dxy,dxy,dxy") "x,dy,xyd,?xy,d,m,!u,dxy,dxy")
(match_operand:HI 1 "cmp_operand" (match_operand:HI 1 "cmp_operand"
"i,i,m,m,?*d*A,?u,!*w")))] "i,i,!u,m,m,dxy,dxy,?*d*A,!*w")))]
"" ""
"* "*
{ {
if (H_REG_P (operands[1])) if (H_REG_P (operands[1]) && !H_REG_P (operands[0]))
{
cc_status.flags |= CC_REVERSED;
return \"cp%1\\t%0\";
}
else if (H_REG_P (operands[1]))
return \"#\"; return \"#\";
else else
return \"cp%0\\t%1\"; return \"cp%0\\t%1\";
@ -317,18 +322,18 @@
(define_insn "cmphi_z_used" (define_insn "cmphi_z_used"
[(set (cc0) [(set (cc0)
(compare (match_operand:HI 0 "hard_reg_operand" "dxy") (compare (match_operand:HI 0 "tst_operand" "dxy,m")
(match_operand:HI 1 "cmp_operand" "m"))) (match_operand:HI 1 "cmp_operand" "m,dxy")))
(use (match_operand:HI 2 "hard_reg_operand" "dxy")) (use (match_operand:HI 2 "hard_reg_operand" "dxy,dxy"))
(use (reg:HI 11))] (use (reg:HI 11))]
"" ""
"#") "#")
(define_split /* "cmphi_z_used" */ (define_split /* "cmphi_z_used" */
[(set (cc0) [(set (cc0)
(compare (match_operand:HI 0 "hard_reg_operand" "dxy") (compare (match_operand:HI 0 "tst_operand" "dxy,m")
(match_operand:HI 1 "cmp_operand" "m"))) (match_operand:HI 1 "cmp_operand" "m,dxy")))
(use (match_operand:HI 2 "hard_reg_operand" "dxy")) (use (match_operand:HI 2 "hard_reg_operand" "dxy,dxy"))
(use (reg:HI 11))] (use (reg:HI 11))]
"z_replacement_completed == 2" "z_replacement_completed == 2"
[(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM))) (match_dup 2)) [(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM))) (match_dup 2))
@ -479,29 +484,37 @@
(define_insn "cmpqi_1" (define_insn "cmpqi_1"
[(set (cc0) [(set (cc0)
(compare (match_operand:QI 0 "tst_operand" "d,d,*x*y,*x*y") (compare (match_operand:QI 0 "tst_operand" "d,m,d,!u,*B,d")
(match_operand:QI 1 "cmp_operand" "im,!u,!u,?dim*x*y")))] (match_operand:QI 1 "cmp_operand" "im,d,!u,d,?dim*B,*u")))]
"" ""
"@ "*
cmpb\\t%1 {
cmpb\\t%b1 if (A_REG_P (operands[0]) || A_REG_P (operands[1]))
# {
#") return \"#\";
}
else if (D_REG_P (operands[0]))
{
return \"cmpb\\t%b1\";
}
cc_status.flags |= CC_REVERSED;
return \"cmpb\\t%b0\";
}")
(define_insn "cmpqi_z_used" (define_insn "cmpqi_z_used"
[(set (cc0) [(set (cc0)
(compare (match_operand:QI 0 "hard_reg_operand" "dxy") (compare (match_operand:QI 0 "tst_operand" "dxy,m")
(match_operand:QI 1 "cmp_operand" "m"))) (match_operand:QI 1 "cmp_operand" "m,dxy")))
(use (match_operand:HI 2 "hard_reg_operand" "dxy")) (use (match_operand:HI 2 "hard_reg_operand" "dxy,dxy"))
(use (reg:HI 11))] (use (reg:HI 11))]
"" ""
"#") "#")
(define_split /* cmpqi_z_used */ (define_split /* cmpqi_z_used */
[(set (cc0) [(set (cc0)
(compare (match_operand:QI 0 "hard_reg_operand" "dxy") (compare (match_operand:QI 0 "tst_operand" "dxy,m")
(match_operand:QI 1 "cmp_operand" "m"))) (match_operand:QI 1 "cmp_operand" "m,dxy")))
(use (match_operand:HI 2 "hard_reg_operand" "dxy")) (use (match_operand:HI 2 "hard_reg_operand" "dxy,dxy"))
(use (reg:HI 11))] (use (reg:HI 11))]
"z_replacement_completed == 2" "z_replacement_completed == 2"
[(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM))) (match_dup 2)) [(set (mem:HI (pre_dec:HI (reg:HI SP_REGNUM))) (match_dup 2))