What does "define_bypass" mean?

Vladimir N. Makarov vmakarov@redhat.com
Mon May 24 17:47:00 GMT 2004


mike@bbs.sign.idv.tw wrote:

Hello,
  I am try to use dfa to describe my experimental cpu.
  When reading about "define_bypss",I simply cannot figure
  out what it means. The description in the gcc internal 
  manual is not very clear.

  Please help. Thanks.
 

Latency time given in define_insn_reservation defines the data delay for 
the following true dependence pairs

   the insn corresponidng to define_insn_reservation -> any other insn

If a pair in the set of pairs mentioned above has a different latency 
time, you can redefine it in the define_bypass.

E.g. if your have the following two constructions

 (define_insn_reservation "load"  3 ....)
 (define_bypass 2 "load" "store")
It means that the latency time for
  "load" -> any insn but "store" is equal to 3
  "load" -> "store" is equal to 2
There are more complicated cases when you need to change the default 
latency time for pair of insns on a given resource.  In this case you 
need to use a guard function in define_bypass.  For example, you should 
use to the guard function when you need to inform the gcc insns 
scheduler that latency time between an insn and store when the insn 
result is used as store address (but not as the stored data)  is bigger 
than the default value. You could find such usage of define_bypass in 
.md files.

Vlad




More information about the Gcc mailing list