This is the mail archive of the gcc@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]

Re: Cleanups for the m68k backend


> > This has been on my todo list for a long time.  One thing I'm not sure
> > about is what's the best way to represent movem (move multiple
> > registers) in rtl.
>
> And what about link/unlink?

Why not represent them with what the do:

(define_insn "link"
[(set (mem:SI (pre_dec:SI (reg:SI 15)) (match_operand:SI 0 "address_operand" "a")))
 (set (match_dup 0) (reg:SI 15))
 (set (reg:SI 15) (add:SI (reg:SI 15) (match_operand:SI 1 "const_int_operand" "n")))]
 ""
 "link%.w %0,%1")

(define_insn "unlk"
[(set (reg:SI 15) (match_operand:SI 0 "address_operand" "a"))
 (set (match_dup 0) (mem:SI (post_inc:SI (reg:SI 15))))]
 ""
 "unlk %0")

-- 
Peter Barada                             Peter.Barada@motorola.com
Wizard                                   781-852-2768 (direct)
WaveMark Solutions(A Motorola Company)   781-270-0193 (fax)


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