Esempio n. 1
0
/**
 * Print a single NVIDIA vertex program instruction.
 */
void
_mesa_print_nv_vertex_instruction(const struct vp_instruction *inst)
{
   switch (inst->Opcode) {
      case VP_OPCODE_MOV:
      case VP_OPCODE_LIT:
      case VP_OPCODE_RCP:
      case VP_OPCODE_RSQ:
      case VP_OPCODE_EXP:
      case VP_OPCODE_LOG:
      case VP_OPCODE_RCC:
      case VP_OPCODE_ABS:
         _mesa_printf("%s ", Opcodes[(int) inst->Opcode]);
         PrintDstReg(&inst->DstReg);
         _mesa_printf(", ");
         PrintSrcReg(&inst->SrcReg[0]);
         _mesa_printf(";\n");
         break;
      case VP_OPCODE_MUL:
      case VP_OPCODE_ADD:
      case VP_OPCODE_DP3:
      case VP_OPCODE_DP4:
      case VP_OPCODE_DST:
      case VP_OPCODE_MIN:
      case VP_OPCODE_MAX:
      case VP_OPCODE_SLT:
      case VP_OPCODE_SGE:
      case VP_OPCODE_DPH:
      case VP_OPCODE_SUB:
         _mesa_printf("%s ", Opcodes[(int) inst->Opcode]);
         PrintDstReg(&inst->DstReg);
         _mesa_printf(", ");
         PrintSrcReg(&inst->SrcReg[0]);
         _mesa_printf(", ");
         PrintSrcReg(&inst->SrcReg[1]);
         _mesa_printf(";\n");
         break;
      case VP_OPCODE_MAD:
         _mesa_printf("MAD ");
         PrintDstReg(&inst->DstReg);
         _mesa_printf(", ");
         PrintSrcReg(&inst->SrcReg[0]);
         _mesa_printf(", ");
         PrintSrcReg(&inst->SrcReg[1]);
         _mesa_printf(", ");
         PrintSrcReg(&inst->SrcReg[2]);
         _mesa_printf(";\n");
         break;
      case VP_OPCODE_ARL:
         _mesa_printf("ARL A0.x, ");
         PrintSrcReg(&inst->SrcReg[0]);
         _mesa_printf(";\n");
         break;
      case VP_OPCODE_END:
         _mesa_printf("END\n");
         break;
      default:
         _mesa_printf("BAD INSTRUCTION\n");
   }
}
/**
 * Print a single NVIDIA vertex program instruction.
 */
void
_mesa_print_nv_vertex_instruction(const struct prog_instruction *inst)
{
   GLuint i, n;

   switch (inst->Opcode) {
      case OPCODE_MOV:
      case OPCODE_LIT:
      case OPCODE_RCP:
      case OPCODE_RSQ:
      case OPCODE_EXP:
      case OPCODE_LOG:
      case OPCODE_RCC:
      case OPCODE_ABS:
      case OPCODE_MUL:
      case OPCODE_ADD:
      case OPCODE_DP3:
      case OPCODE_DP4:
      case OPCODE_DST:
      case OPCODE_MIN:
      case OPCODE_MAX:
      case OPCODE_SLT:
      case OPCODE_SGE:
      case OPCODE_DPH:
      case OPCODE_SUB:
      case OPCODE_MAD:
         _mesa_printf("%s ", _mesa_opcode_string(inst->Opcode));
         PrintDstReg(&inst->DstReg);
         _mesa_printf(", ");
         n = _mesa_num_inst_src_regs(inst->Opcode);
         for (i = 0; i < n; i++) {
            PrintSrcReg(&inst->SrcReg[i]);
            if (i + 1 < n)
               _mesa_printf(", ");
         }
         _mesa_printf(";\n");
         break;
      case OPCODE_ARL:
         _mesa_printf("ARL A0.x, ");
         PrintSrcReg(&inst->SrcReg[0]);
         _mesa_printf(";\n");
         break;
      case OPCODE_PRINT:
         _mesa_printf("PRINT '%s'", inst->Data);
         if (inst->SrcReg[0].File != PROGRAM_UNDEFINED) {
            _mesa_printf(", ");
            PrintSrcReg(&inst->SrcReg[0]);
            _mesa_printf(";\n");
         }
         else {
            _mesa_printf("\n");
         }
         break;
      case OPCODE_END:
         _mesa_printf("END\n");
         break;
      default:
         _mesa_printf("BAD INSTRUCTION\n");
   }
}