On 10/07/11 09:50, BELBACHIR Selim wrote:
> (asm result)
> 
> load d($C2),$R1     <--1st operand for comparison     ctrl,readmem,nothing
> loadi 0,$C4         <- 2nd operand for comparison     ctrl,nothing
> load d($C2+4),$R2   <--no data dependancies           ctrl,readmem,nothing
> cmp $C4,$R1                                           (gsr+ctrl),gsr*2
> nop
> nop
> jmpifeq .L5                                           (ctrl+gsr)            
> 
> (.sched2)
> ;;       20-->    81 $C4=0x0                           :ctrl,nothing
> ;;              dependencies resolved: insn 22
> ;;              Ready-->Q: insn 22: queued for 2 cycles.
> ;;              tick updated: insn 22 into queue with cost=2

Insn 22 is the compare, and the compiler thinks that its operand $C4
becomes available only after two cycles. Presumably the first load to
$R1 has a delay of 3 cycles. So the scheduler places the compare at the
point where its operands are ready. The load to $R2 occurs before it
because it can execute earlier.

If the delays are modeled correctly, I think there's no way to get the
code to run faster.


Bernd

Reply via email to