Commit 664921b4 by James Van Artsdalen

(movstrsi): Rewrite to handle operands correctly.

From-SVN: r1984
parent 1bbddf11
...@@ -3870,20 +3870,29 @@ ...@@ -3870,20 +3870,29 @@
"nop") "nop")
(define_expand "movstrsi" (define_expand "movstrsi"
[(parallel [(set (mem:BLK (match_operand:BLK 0 "address_operand" "")) [(parallel [(set (match_operand:BLK 0 "memory_operand" "")
(mem:BLK (match_operand:BLK 1 "address_operand" ""))) (match_operand:BLK 1 "memory_operand" ""))
(use (match_operand:SI 2 "const_int_operand" "")) (use (match_operand:SI 2 "const_int_operand" ""))
(use (match_operand:SI 3 "const_int_operand" "")) (use (match_operand:SI 3 "const_int_operand" ""))
(clobber (match_scratch:SI 4 "")) (clobber (match_scratch:SI 4 ""))
(clobber (match_dup 0)) (clobber (match_dup 5))
(clobber (match_dup 1))])] (clobber (match_dup 6))])]
"" ""
" "
{ {
rtx addr0, addr1;
if (GET_CODE (operands[2]) != CONST_INT) if (GET_CODE (operands[2]) != CONST_INT)
FAIL; FAIL;
operands[0] = copy_to_mode_reg (SImode, XEXP (operands[0], 0));
operands[1] = copy_to_mode_reg (SImode, XEXP (operands[1], 0)); addr0 = copy_to_mode_reg (Pmode, XEXP (operands[0], 0));
addr1 = copy_to_mode_reg (Pmode, XEXP (operands[1], 0));
operands[5] = addr0;
operands[6] = addr1;
operands[0] = gen_rtx (MEM, BLKmode, addr0);
operands[1] = gen_rtx (MEM, BLKmode, addr1);
}") }")
;; It might seem that operands 0 & 1 could use predicate register_operand. ;; It might seem that operands 0 & 1 could use predicate register_operand.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment