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]

Different addressing modes?


I am still trying to get addressing modes correctly in my port. Basically my architecture has the following addressing modes:

 1) absolute
 2) register indirect
 3) register + offset
 4) register + register

I want to specify in my define_insn for "call" that 1+2 are allowed and in my define_insn for "movsi" that 2, 3, and 4 are allowed for loads and 2 and 3 for stores.

Which macros should I define?

What should I accept in GO_IF_LEGITIMATE? All four?

Which constraint letters should I introduce? Four letters for the four modes? Which letters are free to use?

How to specify extra constraint in the define_insn pattern? Something like...

(define_insn "movsi"
       [(set (match_operand:SI 0 "nonimmediate_operand" "=r,S")
             (match_operand:SI 1 "general_operand" "L,r"))]
       ""
       "@
         ld %1 -> %0
         st %0 %1"
)

Where S accepts a store address and L accepts a load address. Or should it be mS and mL? Or Sm or Lm?

Thanks,
Fred

_________________________________________________________________
Tired of spam? Get advanced junk mail protection with MSN 8. http://join.msn.com/?page=features/junkmail



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