"Bingfeng Mei" <[EMAIL PROTECTED]> writes:

> We are portinng GCC 4.2.1 to a 2-issue VLIW processor. There are some
> special instructions which can only be issued on the second slot (slot
> 1). I tried to specify using following DFA constructs.
>  
> ;; Define this instruction can only be issued on slot 1
> (define_insn_reservation  "psr_y" 1 
>   (eq_attr "type" "psr")
>   "slot1" )
>  
> ;; Define slot1 can only be issued after slot0 is filled
> (presence_set  "slot1"  "slot0")
>  
>  
> I hope the compiler can automatically insert NOP on slot0 if it is
> unused so that the second constraint can be fulfilled.  However, the
> compiler falls into a deadlock.  Without the second constraint , the
> compiler can emit code but I cannot tell from RTL on which slot the
> instruction is issued.  What is best way to figure out unused slot and
> insert NOP insn?  Or is there more clever way to specify DFA that allows
> compiler automatically emit NOPs?  Any suggestion is greatly
> appreciated.

You can't do this in gcc's scheduler DFA.  It's one of its major
limitations.

There are a couple of ways to handle this.  My personal favorite is to
do it in the TARGET_ASM_FUNCTION_PROLOGUE routine.  For an example of
this approach see frv_pack_insns in frv.c.

Ian

Reply via email to