static void format_reg(const char *name, const struct sh_reg reg, const struct sh_srcreg *indreg) { if (reg.relative) { assert(indreg); if (sh_srcreg_type(*indreg) == SVGA3DREG_LOOP) { _debug_printf("%s[aL+%u]", name, reg.number); } else { _debug_printf("%s[a%u.x+%u]", name, indreg->number, reg.number); } } else { _debug_printf("%s%u", name, reg.number); } }
static void dump_reg( struct sh_reg reg, struct sh_srcreg *indreg, const struct dump_info *di ) { assert( sh_reg_type( reg ) == SVGA3DREG_CONST || reg.relative == 0 ); assert( reg.is_reg == 1 ); switch (sh_reg_type( reg )) { case SVGA3DREG_TEMP: debug_printf( "r%u", reg.number ); break; case SVGA3DREG_INPUT: debug_printf( "v%u", reg.number ); break; case SVGA3DREG_CONST: if (reg.relative) { if (sh_srcreg_type( *indreg ) == SVGA3DREG_LOOP) debug_printf( "c[aL+%u]", reg.number ); else debug_printf( "c[a%u.x+%u]", indreg->number, reg.number ); } else debug_printf( "c%u", reg.number ); break; case SVGA3DREG_ADDR: /* VS */ /* SVGA3DREG_TEXTURE */ /* PS */ if (di->is_ps) debug_printf( "t%u", reg.number ); else debug_printf( "a%u", reg.number ); break; case SVGA3DREG_RASTOUT: switch (reg.number) { case 0 /*POSITION*/: debug_printf( "oPos" ); break; case 1 /*FOG*/: debug_printf( "oFog" ); break; case 2 /*POINT_SIZE*/: debug_printf( "oPts" ); break; default: assert( 0 ); debug_printf( "???" ); } break; case SVGA3DREG_ATTROUT: assert( reg.number < 2 ); debug_printf( "oD%u", reg.number ); break; case SVGA3DREG_TEXCRDOUT: /* SVGA3DREG_OUTPUT */ debug_printf( "oT%u", reg.number ); break; case SVGA3DREG_COLOROUT: debug_printf( "oC%u", reg.number ); break; case SVGA3DREG_DEPTHOUT: debug_printf( "oD%u", reg.number ); break; case SVGA3DREG_SAMPLER: debug_printf( "s%u", reg.number ); break; case SVGA3DREG_CONSTBOOL: assert( !reg.relative ); debug_printf( "b%u", reg.number ); break; case SVGA3DREG_CONSTINT: assert( !reg.relative ); debug_printf( "i%u", reg.number ); break; case SVGA3DREG_LOOP: assert( reg.number == 0 ); debug_printf( "aL" ); break; case SVGA3DREG_MISCTYPE: switch (reg.number) { case SVGA3DMISCREG_POSITION: debug_printf( "vPos" ); break; case SVGA3DMISCREG_FACE: debug_printf( "vFace" ); break; default: assert(0); break; } break; case SVGA3DREG_LABEL: debug_printf( "l%u", reg.number ); break; case SVGA3DREG_PREDICATE: debug_printf( "p%u", reg.number ); break; default: assert( 0 ); debug_printf( "???" ); } }