Fwd: Questions on PA machine description?

Jeffrey A Law law@hurl.cygnus.com
Thu Mar 18 21:00:00 GMT 1999


  In message < 36F17F8C.9FD937FA@americasm01.nt.com >you write:
  > The other message mentioned that eliminating autoincrement/autodecrement
  > instructions is a good thing.  Do these instructions have the same
  > problem as fmpyadd, i.e. grabbing multiple reorder slots and function
  > units?
Yes, they have the same problem as fmpyadd/fmpysub.  They also have the 
disadvantage that the autoinc addressing mode adds additional data depedencies
which can inhibit the amount of ILP found by the compiler and by the hardware.

  > > One thought would be to make the ready delay for alu instructions 0, then
  > > tweak haifa to add dependent instrutions to the ready queue immediately
  > > after it issues an insn with a ready delay of zero cycles.
  > 
  > What about making pa_adjust_cost set the cost of a data dependency to
  > 0?  The alpha port does this on the ev5.
Nope, it won't do what we want.  Look at the loop which issues insns from
the ready list in haifa-sched.c.

It has a structure like:

while (not all insns scheduled)
  add insns with no outstanding dependencies to the ready queue
  sort the ready queue
  while (ready list is not empty && target can issue more insns)
    issue an insn off the ready queue, remove dependencies on the issued insn

So, given insn1 which feeds insn2 we will never issue insn1 & insn2 in the
same cycle.

  > Why is this a good thing?  Won't an instruction that depends on another
  > one have to retire later than the other one?
No.  They can retire in the same cycle.  This is discussed in one of the
PA8000 optimization papers from HP.   The key is to remember that PA8000
machine is an out of execution machine.

jeff


More information about the Gcc mailing list