tgsi: Drop BGNFOR, ENDFOR, REP, and ENDREP opcodes.
authorJosé Fonseca <jfonseca@vmware.com>
Tue, 27 Apr 2010 20:18:01 +0000 (21:18 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Tue, 27 Apr 2010 20:51:45 +0000 (21:51 +0100)
src/gallium/auxiliary/tgsi/tgsi-instruction-set.txt
src/gallium/auxiliary/tgsi/tgsi_dump.c
src/gallium/auxiliary/tgsi/tgsi_exec.c
src/gallium/auxiliary/tgsi/tgsi_info.c
src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h
src/gallium/auxiliary/tgsi/tgsi_sanity.c
src/gallium/auxiliary/tgsi/tgsi_sse2.c

index 080fd4c7310dc53647aaf6d837ba40706ee97527..5d9eed925801227db7e8ebbccb295ce3e2ddd66c 100644 (file)
@@ -661,25 +661,6 @@ TGSI Instruction Specification
   TBD
 
 
-1.9.8  BGNFOR - Begin a For-Loop
-
-  dst.x = floor(src.x)
-  dst.y = floor(src.y)
-  dst.z = floor(src.z)
-
-  if (dst.y <= 0)
-    pc = [matching ENDFOR] + 1
-  endif
-
-  Note: The destination must be a loop register.
-        The source must be a constant register.
-
-
-1.9.9  REP - Repeat
-
-  TBD
-
-
 1.9.10  ELSE - Else
 
   TBD
@@ -690,23 +671,6 @@ TGSI Instruction Specification
   TBD
 
 
-1.9.12  ENDFOR - End a For-Loop
-
-  dst.x = dst.x + dst.z
-  dst.y = dst.y - 1.0
-
-  if (dst.y > 0)
-    pc = [matching BGNFOR instruction] + 1
-  endif
-
-  Note: The destination must be a loop register.
-
-
-1.9.13  ENDREP - End Repeat
-
-  TBD
-
-
 1.10  GL_NV_vertex_program3
 ---------------------------
 
index 57031419f8e250a34a7952e326cc0b6d2817111d..830002001897eb40227b45f4b0ebf0fb9a236812 100644 (file)
@@ -586,7 +586,6 @@ iter_instruction(
    /* update indentation */
    if (inst->Instruction.Opcode == TGSI_OPCODE_IF ||
        inst->Instruction.Opcode == TGSI_OPCODE_ELSE ||
-       inst->Instruction.Opcode == TGSI_OPCODE_BGNFOR ||
        inst->Instruction.Opcode == TGSI_OPCODE_BGNLOOP) {
       ctx->indentation += indent_spaces;
    }
index 11045e4ba2f7de98a74649678e5b084e4a1cddbf..82eac05dc4de0fff399cb591a35b8180b2835529 100644 (file)
@@ -3186,14 +3186,6 @@ exec_instruction(
       *pc = -1;
       break;
 
-   case TGSI_OPCODE_REP:
-      assert (0);
-      break;
-
-   case TGSI_OPCODE_ENDREP:
-       assert (0);
-       break;
-
    case TGSI_OPCODE_PUSHA:
       assert (0);
       break;
@@ -3258,29 +3250,6 @@ exec_instruction(
       emit_primitive(mach);
       break;
 
-   case TGSI_OPCODE_BGNFOR:
-      assert(mach->LoopCounterStackTop < TGSI_EXEC_MAX_LOOP_NESTING);
-      for (chan_index = 0; chan_index < 3; chan_index++) {
-         FETCH( &mach->LoopCounterStack[mach->LoopCounterStackTop].xyzw[chan_index], 0, chan_index );
-      }
-      ++mach->LoopCounterStackTop;
-      STORE(&mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_X], 0, CHAN_X);
-      /* update LoopMask */
-      if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[0] <= 0.0f) {
-         mach->LoopMask &= ~0x1;
-      }
-      if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[1] <= 0.0f) {
-         mach->LoopMask &= ~0x2;
-      }
-      if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[2] <= 0.0f) {
-         mach->LoopMask &= ~0x4;
-      }
-      if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[3] <= 0.0f) {
-         mach->LoopMask &= ~0x8;
-      }
-      /* TODO: if mach->LoopMask == 0, jump to end of loop */
-      UPDATE_EXEC_MASK(mach);
-      /* fall-through (for now) */
    case TGSI_OPCODE_BGNLOOP:
       /* push LoopMask and ContMasks */
       assert(mach->LoopStackTop < TGSI_EXEC_MAX_LOOP_NESTING);
@@ -3295,56 +3264,6 @@ exec_instruction(
       mach->BreakType = TGSI_EXEC_BREAK_INSIDE_LOOP;
       break;
 
-   case TGSI_OPCODE_ENDFOR:
-      assert(mach->LoopCounterStackTop > 0);
-      micro_sub(&mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y], 
-                &mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y],
-                &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C]);
-      /* update LoopMask */
-      if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[0] <= 0.0f) {
-         mach->LoopMask &= ~0x1;
-      }
-      if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[1] <= 0.0f) {
-         mach->LoopMask &= ~0x2;
-      }
-      if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[2] <= 0.0f) {
-         mach->LoopMask &= ~0x4;
-      }
-      if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[3] <= 0.0f) {
-         mach->LoopMask &= ~0x8;
-      }
-      micro_add(&mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_X], 
-                &mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_X], 
-                &mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Z]);
-      assert(mach->LoopLabelStackTop > 0);
-      inst = mach->Instructions + mach->LoopLabelStack[mach->LoopLabelStackTop - 1];
-      STORE(&mach->LoopCounterStack[mach->LoopCounterStackTop].xyzw[CHAN_X], 0, CHAN_X);
-      /* Restore ContMask, but don't pop */
-      assert(mach->ContStackTop > 0);
-      mach->ContMask = mach->ContStack[mach->ContStackTop - 1];
-      UPDATE_EXEC_MASK(mach);
-      if (mach->ExecMask) {
-         /* repeat loop: jump to instruction just past BGNLOOP */
-         assert(mach->LoopLabelStackTop > 0);
-         *pc = mach->LoopLabelStack[mach->LoopLabelStackTop - 1] + 1;
-      }
-      else {
-         /* exit loop: pop LoopMask */
-         assert(mach->LoopStackTop > 0);
-         mach->LoopMask = mach->LoopStack[--mach->LoopStackTop];
-         /* pop ContMask */
-         assert(mach->ContStackTop > 0);
-         mach->ContMask = mach->ContStack[--mach->ContStackTop];
-         assert(mach->LoopLabelStackTop > 0);
-         --mach->LoopLabelStackTop;
-         assert(mach->LoopCounterStackTop > 0);
-         --mach->LoopCounterStackTop;
-
-         mach->BreakType = mach->BreakStack[--mach->BreakStackTop];
-      }
-      UPDATE_EXEC_MASK(mach);
-      break;
-      
    case TGSI_OPCODE_ENDLOOP:
       /* Restore ContMask, but don't pop */
       assert(mach->ContStackTop > 0);
index de0e09cdbae18fc3ca40db9c6ad7dff8fbec4d70..cfa2f631bd84430504a4a3d29b25b3c43bd2bf01 100644 (file)
@@ -106,12 +106,12 @@ static const struct tgsi_opcode_info opcode_info[TGSI_OPCODE_LAST] =
    { 1, 2, 1, 0, 0, 0, "TXL", TGSI_OPCODE_TXL },
    { 0, 0, 0, 0, 0, 0, "BRK", TGSI_OPCODE_BRK },
    { 0, 1, 0, 1, 0, 1, "IF", TGSI_OPCODE_IF },
-   { 1, 1, 0, 0, 0, 1, "BGNFOR", TGSI_OPCODE_BGNFOR },
-   { 0, 1, 0, 0, 0, 1, "REP", TGSI_OPCODE_REP },
+   { 1, 1, 0, 0, 0, 1, "", 75 },      /* removed */
+   { 0, 1, 0, 0, 0, 1, "", 76 },      /* removed */
    { 0, 0, 0, 1, 1, 1, "ELSE", TGSI_OPCODE_ELSE },
    { 0, 0, 0, 0, 1, 0, "ENDIF", TGSI_OPCODE_ENDIF },
-   { 1, 0, 0, 0, 1, 0, "ENDFOR", TGSI_OPCODE_ENDFOR },
-   { 0, 0, 0, 0, 1, 0, "ENDREP", TGSI_OPCODE_ENDREP },
+   { 1, 0, 0, 0, 1, 0, "", 79 },      /* removed */
+   { 0, 0, 0, 0, 1, 0, "", 80 },      /* removed */
    { 0, 1, 0, 0, 0, 0, "PUSHA", TGSI_OPCODE_PUSHA },
    { 1, 0, 0, 0, 0, 0, "POPA", TGSI_OPCODE_POPA },
    { 1, 1, 0, 0, 0, 0, "CEIL", TGSI_OPCODE_CEIL },
index e4af15c156fe8235883253d0956e64cb9b3f49b4..e472947507dad1c53eaa7d62398de3ac53c40f8b 100644 (file)
@@ -111,12 +111,8 @@ OP12(DP2)
 OP12_TEX(TXL)
 OP00(BRK)
 OP01_LBL(IF)
-OP11(BGNFOR)
-OP01(REP)
 OP00_LBL(ELSE)
 OP00(ENDIF)
-OP10(ENDFOR)
-OP00(ENDREP)
 OP01(PUSHA)
 OP10(POPA)
 OP11(CEIL)
index 371f690b2959bc58c0b8957b1b57162265ff483f..76b7564cc3666287a18e30e6d1224a3e99a49d9f 100644 (file)
@@ -346,25 +346,6 @@ iter_instruction(
       }
    }
 
-   switch (inst->Instruction.Opcode) {
-   case TGSI_OPCODE_BGNFOR:
-   case TGSI_OPCODE_ENDFOR:
-      if (inst->Dst[0].Register.File != TGSI_FILE_LOOP ||
-          inst->Dst[0].Register.Index != 0) {
-         report_error(ctx, "Destination register must be LOOP[0]");
-      }
-      break;
-   }
-
-   switch (inst->Instruction.Opcode) {
-   case TGSI_OPCODE_BGNFOR:
-      if (inst->Src[0].Register.File != TGSI_FILE_CONSTANT &&
-          inst->Src[0].Register.File != TGSI_FILE_IMMEDIATE) {
-         report_error(ctx, "Source register file must be either CONST or IMM");
-      }
-      break;
-   }
-
    ctx->num_instructions++;
 
    return TRUE;
index a85cc4659e07d5a8dd73be172914d3d04ce59843..1071298b497a880e96b37ccb6046444bd1244b91 100644 (file)
@@ -2533,14 +2533,6 @@ emit_instruction(
       return 0;
       break;
 
-   case TGSI_OPCODE_BGNFOR:
-      return 0;
-      break;
-
-   case TGSI_OPCODE_REP:
-      return 0;
-      break;
-
    case TGSI_OPCODE_ELSE:
       return 0;
       break;
@@ -2549,14 +2541,6 @@ emit_instruction(
       return 0;
       break;
 
-   case TGSI_OPCODE_ENDFOR:
-      return 0;
-      break;
-
-   case TGSI_OPCODE_ENDREP:
-      return 0;
-      break;
-
    case TGSI_OPCODE_PUSHA:
       return 0;
       break;