tgsi: Implement OPCODE_ARR.
authorMichal Krol <michal@tungstengraphics.com>
Wed, 26 Nov 2008 12:17:25 +0000 (13:17 +0100)
committerJosé Fonseca <jrfonseca@tungstengraphics.com>
Wed, 26 Nov 2008 12:47:09 +0000 (21:47 +0900)
src/gallium/auxiliary/tgsi/tgsi_exec.c
src/gallium/auxiliary/tgsi/tgsi_sse2.c

index 41dffc3dbafa3f7199f078c49c5231163a1cbcf6..7114119fe290799105d457ac1995c74afa969c97 100644 (file)
@@ -2067,6 +2067,7 @@ exec_instruction(
       break;
 
    case TGSI_OPCODE_ROUND:
+   case TGSI_OPCODE_ARR:
       FOR_EACH_ENABLED_CHANNEL( *inst, chan_index ) {
          FETCH( &r[0], 0, chan_index );
          micro_rnd( &r[0], &r[0] );
@@ -2367,10 +2368,6 @@ exec_instruction(
       assert (0);
       break;
 
-   case TGSI_OPCODE_ARR:
-      assert (0);
-      break;
-
    case TGSI_OPCODE_BRA:
       assert (0);
       break;
index 151d2b1c3798f3fcab8e8c55809982d9c10b79d3..752c7c3c315236d734e40d076e1f5999f82b025b 100644 (file)
@@ -1906,7 +1906,12 @@ emit_instruction(
       break;
 
    case TGSI_OPCODE_ARR:
-      return 0;
+      FOR_EACH_DST0_ENABLED_CHANNEL( *inst, chan_index ) {
+         FETCH( func, *inst, 0, 0, chan_index );
+         emit_rnd( func, 0, 0 );
+         emit_f2it( func, 0 );
+         STORE( func, *inst, 0, 0, chan_index );
+      }
       break;
 
    case TGSI_OPCODE_BRA: