static void dump_reg( struct sh_reg reg, struct sh_srcreg *indreg, const struct dump_info *di ) { assert( reg.is_reg == 1 ); switch (sh_reg_type( reg )) { case SVGA3DREG_TEMP: format_reg("r", reg, NULL); break; case SVGA3DREG_INPUT: format_reg("v", reg, indreg); break; case SVGA3DREG_CONST: format_reg("c", reg, indreg); break; case SVGA3DREG_ADDR: /* VS */ /* SVGA3DREG_TEXTURE */ /* PS */ assert(!reg.relative); if (di->is_ps) { format_reg("t", reg, NULL); } else { format_reg("a", reg, NULL); } break; case SVGA3DREG_RASTOUT: assert(!reg.relative); 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 ); format_reg("oD", reg, NULL); break; case SVGA3DREG_TEXCRDOUT: /* VS */ /* SVGA3DREG_OUTPUT */ /* VS3.0+ */ if (!di->is_ps && di->version >= SVGA3D_VS_30) { format_reg("o", reg, indreg); } else { format_reg("oT", reg, NULL); } break; case SVGA3DREG_COLOROUT: format_reg("oC", reg, NULL); break; case SVGA3DREG_DEPTHOUT: assert(!reg.relative); assert(reg.number == 0); _debug_printf("oDepth"); break; case SVGA3DREG_SAMPLER: format_reg("s", reg, NULL); break; case SVGA3DREG_CONSTBOOL: format_reg("b", reg, NULL); break; case SVGA3DREG_CONSTINT: format_reg("i", reg, NULL); break; case SVGA3DREG_LOOP: assert(!reg.relative); assert( reg.number == 0 ); _debug_printf( "aL" ); break; case SVGA3DREG_MISCTYPE: assert(!reg.relative); switch (reg.number) { case SVGA3DMISCREG_POSITION: _debug_printf("vPos"); break; case SVGA3DMISCREG_FACE: _debug_printf("vFace"); break; default: assert(0); _debug_printf("???"); } break; case SVGA3DREG_LABEL: format_reg("l", reg, NULL); break; case SVGA3DREG_PREDICATE: format_reg("p", reg, NULL); break; default: assert( 0 ); _debug_printf( "???" ); } }
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( "???" ); } }