This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: What does "define_bypass" mean?
- From: "Vladimir N. Makarov" <vmakarov at redhat dot com>
- To: mike at bbs dot sign dot idv dot tw
- Cc: gcc at gcc dot gnu dot org
- Date: Mon, 24 May 2004 14:00:31 -0400
- Subject: Re: What does "define_bypass" mean?
- References: <20040523115814.GA26029@csdn.sign.idv.tw>
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