fun update_pipe(var inst1 : InstInfo1)
{
val ready = inst1.ready?cvt(ulong);
val ii = 0;
while(ii < 2) {
val funit = inst1.reserve[ii];
if(ii < pipe.resources?length) {
var funits = pipe.resources[+ii];
funits = funits | funit;
} else
pipe.resources?push_back(funit);
val delay = 0;
if(funit == 0x20 )
delay = cache_load(address)?static();
else if(funit == 0x40 )
delay = cache_store(address)?static();
val jj = 0;
while(jj < delay) {
ii = ii + 1;
if(ready > 0) ready = ready + 1;
if(ii < pipe.resources?length) {
var funits = pipe.resources[+ii];
funits = funits | funit;
} else
pipe.resources?push_back(funit);
jj = jj + 1;
}
ii = ii + 1;
}
if(ready > 0) {
ii = 0;
while(ii < destQ?length) {
pipe.instructions?push_back(struct { ready = ready?cvt(uchar),
dest = destQ[+ii] });
ii = ii + 1;
}
}
}