fun rmap_read(var src : SrcRef, inum) : unsigned[64] { if(src.bypass == 0?cvt(uchar) || src.bypass > inum?cvt(uchar)) { switch(src.rtype?cvt(ulong)) { case 0 : return src.literal?sext(64); case 1 : return global_registers[src.regnum]; case 2 : return register_windows[src.regnum]; case 3 : return fregs[src.regnum]?ext(64); case 9 : if(src.regnum == 0?cvt(uchar)) return CCR?bits(8)?cvt(unsigned[64]); return CCR?bits(4,7)?cvt(unsigned[64]); case 10 : return fcc[src.regnum]?bits(2)?cvt(unsigned[64]); case 11 : return Y?ext(64); } } return destq[+(inum?cvt(uchar)-src.bypass)][src.outnum]; }