fun rmap_retire(num)
{
    val ii = 0;
    while(ii < num) {
	val jj = 0;
	while(jj < instq[+ii].destq?length()) {
	    val dest = instq[+ii].destq[+jj];
	    switch(dest.rtype?cvt(ulong)) {
	     case 0 : ;	 
	     case 1 :
		global_registers[dest.regnum] = destq[+ii][jj];
	     case 2 :
		register_windows[dest.regnum] = destq[+ii][jj];
	     case 3 :
		fregs[dest.regnum] = destq[+ii][jj]?bits(32);
	     case 9 :
		assert(dest.regnum == 0?cvt(uchar));
		CCR = destq[+ii][jj]?cvt(cc);
	     case 10 :
		fcc[dest.regnum] = destq[+ii][jj]?cvt(cc);
	     case 11 :
		Y = destq[+ii][jj]?bits(32);
	     case 12 : ;		 
	    }

	    jj = jj + 1;
	}

	ii = ii + 1;
    }

    destq?pop_front(num);
}