tgsi: Implement CND, CND0 opcodes.
authorMichal Krol <michal@vmware.com>
Mon, 9 Mar 2009 07:50:01 +0000 (08:50 +0100)
committerMichal Krol <michal@vmware.com>
Mon, 9 Mar 2009 07:51:44 +0000 (08:51 +0100)
src/gallium/auxiliary/tgsi/tgsi_exec.c

index a41816bf1fb94f0602806ab93e17bf81fca97c76..341926884c8c56425e32964f3d89804a90425046 100644 (file)
@@ -2105,11 +2105,23 @@ exec_instruction(
       break;
 
    case TGSI_OPCODE_CND:
-      assert (0);
+      FOR_EACH_ENABLED_CHANNEL(*inst, chan_index) {
+         FETCH(&r[0], 0, chan_index);
+         FETCH(&r[1], 1, chan_index);
+         FETCH(&r[2], 2, chan_index);
+         micro_lt(&r[0], &mach->Temps[TEMP_HALF_I].xyzw[TEMP_HALF_C], &r[2], &r[0], &r[1]);
+         STORE(&r[0], 0, chan_index);
+      }
       break;
 
    case TGSI_OPCODE_CND0:
-      assert (0);
+      FOR_EACH_ENABLED_CHANNEL(*inst, chan_index) {
+         FETCH(&r[0], 0, chan_index);
+         FETCH(&r[1], 1, chan_index);
+         FETCH(&r[2], 2, chan_index);
+         micro_le(&r[0], &mach->Temps[TEMP_0_I].xyzw[TEMP_0_C], &r[2], &r[0], &r[1]);
+         STORE(&r[0], 0, chan_index);
+      }
       break;
 
    case TGSI_OPCODE_DOT2ADD: