This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Note handling in haifa-sched.
- To: Virgil Palanciuc <Virgil dot Palanciuc at cs dot pub dot ro>
- Subject: Re: Note handling in haifa-sched.
- From: Richard Henderson <rth at cygnus dot com>
- Date: Thu, 11 May 2000 11:26:41 -0700
- Cc: "Gcc at Gcc dot Gnu. Org" <gcc at gcc dot gnu dot org>
- References: <NDBBLMFNNKHMOCBKELIEKEHCCBAA.Virgil.Palanciuc@cs.pub.ro>
On Thu, May 11, 2000 at 12:20:55PM +0300, Virgil Palanciuc wrote:
> Though, if I am to consider what you said as true( " We already set
> the mode of the insn beginning a new cycle. ") I would consider
> these three instructions in the same execution set - and this is wrong.
Well, I can't help you without a whale load more information.
My suggestion *is* correct. I wrote the code myself, and make
use of that mode bit to do instruction bundling on Alpha.
To wit:
long foo(long x)
{
x += 1;
return x >> 1 | x << 2;
}
;; clock ev5_ebox ev5_ebox
;; ===== ==================== ====================
;; 0 10 $16=$16+0x1 --------------------
;; 1 13 $0=$16<<0x2 12 $16=$16>>0x1
;; 2 16 $0=$16|$0 30 return
(insn 10 29 13 (set (reg/v:DI 16 $16)
(insn:TI 13 10 12 (set (reg:DI 0 $0)
(insn 12 13 16 (set (reg:DI 16 $16)
(insn:TI 16 12 24 (set (reg/i:DI 0 $0)
And would you look at that. TI is set on every insn that
begins a new cycle.
The only thing I can suppose is that your machine description
is not quite correct.
> Another thing: no jump_insn has the TImode set (and obviously the jump
> cannot be groupped with the test before it). Still, this might be treaded as
> a 'special case'. But the above can't.
Well, not "obviously". Many machines have special bypasses between
compare and branch. But Haifa never looks at the jump at all, and
doesn't try to schedule it.
r~