ia64 timode reload fix, part 2
Richard Henderson
rth@cygnus.com
Tue Aug 29 14:29:00 GMT 2000
Correllary to the previous.
r~
* config/ia64/ia64.md (reload_inti): Use a TImode scratch. Use
the half that does not conflict with the reload register.
(reload_outti): Likewise.
Index: config/ia64/ia64.md
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/ia64/ia64.md,v
retrieving revision 1.38
diff -c -p -d -r1.38 ia64.md
*** ia64.md 2000/08/24 21:40:24 1.38
--- ia64.md 2000/08/29 21:10:06
***************
*** 668,694 ****
(define_expand "reload_inti"
[(parallel [(set (match_operand:TI 0 "register_operand" "=r")
(match_operand:TI 1 "" "m"))
! (clobber (match_operand:DI 2 "register_operand" "=&r"))])]
""
"
{
! /* ??? Should now be enforced by tweeks to push_secondary_reload. */
! if (reg_overlap_mentioned_p (operands[2], operands[0])
! || reg_overlap_mentioned_p (operands[2], operands[1]))
! abort ();
}")
(define_expand "reload_outti"
[(parallel [(set (match_operand:TI 0 "" "=m")
(match_operand:TI 1 "register_operand" "r"))
! (clobber (match_operand:DI 2 "register_operand" "=&r"))])]
""
"
{
! /* ??? Should now be enforced by tweeks to push_secondary_reload. */
! if (reg_overlap_mentioned_p (operands[2], operands[0])
! || reg_overlap_mentioned_p (operands[2], operands[1]))
! abort ();
}")
;; Floating Point Moves
--- 668,694 ----
(define_expand "reload_inti"
[(parallel [(set (match_operand:TI 0 "register_operand" "=r")
(match_operand:TI 1 "" "m"))
! (clobber (match_operand:TI 2 "register_operand" "=&r"))])]
""
"
{
! unsigned int s_regno = REGNO (operands[2]);
! if (s_regno == REGNO (operands[0]))
! s_regno += 1;
! operands[2] = gen_rtx_REG (DImode, s_regno);
}")
(define_expand "reload_outti"
[(parallel [(set (match_operand:TI 0 "" "=m")
(match_operand:TI 1 "register_operand" "r"))
! (clobber (match_operand:TI 2 "register_operand" "=&r"))])]
""
"
{
! unsigned int s_regno = REGNO (operands[2]);
! if (s_regno == REGNO (operands[1]))
! s_regno += 1;
! operands[2] = gen_rtx_REG (DImode, s_regno);
}")
;; Floating Point Moves
More information about the Gcc-patches
mailing list