This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[committed] mips.md macroisation (14/n)


Part 14 of the mips.md macroisation process.  This patch handles
the lazy call patterns.  No behavioural changes.

Bootstrapped & regression tested on mips-sgi-irix6.5.  Applied to head.

Richard


	* config/mips/mips.md (load_call[sd]i): Redefine using :P.  Add mode
	attribute.

Index: config/mips/mips.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/mips/mips.md,v
retrieving revision 1.284
diff -c -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.284 mips.md
*** config/mips/mips.md	24 Aug 2004 19:50:22 -0000	1.284
--- config/mips/mips.md	24 Aug 2004 19:51:28 -0000
*************** (define_insn_and_split "exception_receiv
*** 5720,5745 ****
  ;; acts like a GOT version number.  By making the register call-clobbered,
  ;; we tell the target-independent code that the address could be changed
  ;; by any call insn.
! (define_insn "load_callsi"
!   [(set (match_operand:SI 0 "register_operand" "=c")
! 	(unspec:SI [(match_operand:SI 1 "register_operand" "r")
! 		    (match_operand:SI 2 "immediate_operand" "")
! 		    (reg:SI FAKE_CALL_REGNO)]
! 		   UNSPEC_LOAD_CALL))]
    "TARGET_ABICALLS"
!   "lw\t%0,%R2(%1)"
!   [(set_attr "type" "load")
!    (set_attr "length" "4")])
! 
! (define_insn "load_calldi"
!   [(set (match_operand:DI 0 "register_operand" "=c")
! 	(unspec:DI [(match_operand:DI 1 "register_operand" "r")
! 		    (match_operand:DI 2 "immediate_operand" "")
! 		    (reg:DI FAKE_CALL_REGNO)]
! 		   UNSPEC_LOAD_CALL))]
!   "TARGET_ABICALLS"
!   "ld\t%0,%R2(%1)"
    [(set_attr "type" "load")
     (set_attr "length" "4")])
  
  ;; Sibling calls.  All these patterns use jump instructions.
--- 5720,5735 ----
  ;; acts like a GOT version number.  By making the register call-clobbered,
  ;; we tell the target-independent code that the address could be changed
  ;; by any call insn.
! (define_insn "load_call<mode>"
!   [(set (match_operand:P 0 "register_operand" "=c")
! 	(unspec:P [(match_operand:P 1 "register_operand" "r")
! 		   (match_operand:P 2 "immediate_operand" "")
! 		   (reg:P FAKE_CALL_REGNO)]
! 		  UNSPEC_LOAD_CALL))]
    "TARGET_ABICALLS"
!   "<load>\t%0,%R2(%1)"
    [(set_attr "type" "load")
+    (set_attr "mode" "<MODE>")
     (set_attr "length" "4")])
  
  ;; Sibling calls.  All these patterns use jump instructions.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]