Commit d2f2cb19 by John Wehle Committed by Jeff Law

* i386.md (movdi-1, movdi): Rewrite based on SI move patterns.

From-SVN: r19786
parent 51bcf661
Fri May 15 21:40:06 1998 John Wehle (john@feith.com)
* i386.md (movdi-1, movdi): Rewrite based on SI move patterns.
Fri May 15 18:55:22 1998 Jason Merrill <jason@yorick.cygnus.com> Fri May 15 18:55:22 1998 Jason Merrill <jason@yorick.cygnus.com>
* tree.h (BINFO_SIZE, TYPE_BINFO_SIZE): New macros. * tree.h (BINFO_SIZE, TYPE_BINFO_SIZE): New macros.
......
...@@ -1633,36 +1633,40 @@ ...@@ -1633,36 +1633,40 @@
}") }")
(define_insn "" (define_insn ""
[(set (match_operand:DI 0 "push_operand" "=<,<,<,<") [(set (match_operand:DI 0 "push_operand" "=<")
(match_operand:DI 1 "general_operand" "riF,o,o,o")) (match_operand:DI 1 "general_operand" "riF"))]
(clobber (match_scratch:SI 2 "=X,&r,&r,X"))
(clobber (match_scratch:SI 3 "=X,&r,X,X"))]
"" ""
"* "* return output_move_double (operands);")
{
if (GET_CODE (operands[1]) != MEM)
return output_move_double (operands);
else (define_insn ""
return output_move_pushmem (operands, insn, GET_MODE_SIZE (DImode), 2, 4); [(set (match_operand:DI 0 "push_operand" "=<")
}") (match_operand:DI 1 "memory_operand" "o"))]
"TARGET_PUSH_MEMORY"
"* return output_move_pushmem (operands, insn, GET_MODE_SIZE (DImode),0,0);")
(define_insn "movdi" (define_expand "movdi"
[(set (match_operand:DI 0 "general_operand" "=o,o,r,rm") [(set (match_operand:DI 0 "general_operand" "")
(match_operand:DI 1 "general_operand" "o,o,m,riF")) (match_operand:DI 1 "general_operand" ""))]
(clobber (match_scratch:SI 2 "=&r,&r,X,X"))
(clobber (match_scratch:SI 3 "=&r,X,X,X"))]
"" ""
"* "
{ {
rtx low[2], high[2], xop[6]; /* Don't generate memory->memory moves, go through a register */
if (TARGET_MOVE
if (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM) && (reload_in_progress | reload_completed) == 0
return output_move_double (operands); && GET_CODE (operands[0]) == MEM
else && GET_CODE (operands[1]) == MEM)
return output_move_memory (operands, insn, GET_MODE_SIZE (DImode), 2, 4); {
operands[1] = force_reg (DImode, operands[1]);
}
}") }")
(define_insn ""
[(set (match_operand:DI 0 "general_operand" "=g,r")
(match_operand:DI 1 "general_operand" "riF,m"))]
"(!TARGET_MOVE || GET_CODE (operands[0]) != MEM)
|| (GET_CODE (operands[1]) != MEM)"
"* return output_move_double (operands);")
;;- conversion instructions ;;- conversion instructions
;;- NONE ;;- NONE
......
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