This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
How to define 2 bypasses for a single pair of insn_reservation
- From: "Ye, Joey" <joey dot ye at intel dot com>
- To: "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Date: Mon, 5 Jan 2009 17:38:12 +0800
- Subject: How to define 2 bypasses for a single pair of insn_reservation
When I write schedule model for following instructions:
Insn1: mov %r1, %r2
Insn2: mov %r1, %r3
Insn3: foo %r2, %r3 (foo is a 3 op insn, for example, %r3 = %r3 << %r2)
Latency from insn1 to insn3 is x cycles, and latency from insn2 to insn3 is y cycles. x != y.
Both insn1 and insn2 are insn_reservation_mov. Insn3 are insn_reservation_foo.
When I define bypass for them I found I couldn't do it. I can only define one bypass from mov to foo, like this:
(define_bypass x "insn_reservation_mov" "insn_reservation_foo" "condition1")
If I define following bypass too, gcc will report error:
(define_bypass y "insn_reservation_mov" "insn_reservation_foo" "condition2")
genautomata: bypass `insn_reservation_lea - insn_reservation_foo' is already defined
Anyone can help me through this please?
Thanks - Joey