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;
	}
    }
}