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