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);
   }
}
Esempio n. 2
0
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( "???" );
   }
}