tgsi: Implement OPCODE_TRUNC.
authormichal <michal@quad.(none)>
Wed, 5 Nov 2008 10:48:56 +0000 (11:48 +0100)
committermichal <michal@quad.(none)>
Wed, 5 Nov 2008 10:59:33 +0000 (11:59 +0100)
src/gallium/auxiliary/tgsi/tgsi_sse2.c

index 4681b29f52bbf097ac51a521ef28cd858b1d6c93..c115956c5d788389c3b75765b08effb010a7fc78 100644 (file)
@@ -657,6 +657,17 @@ emit_f2it(
       make_xmm( xmm ) );
 }
 
+static void
+emit_i2f(
+   struct x86_function *func,
+   unsigned xmm )
+{
+   sse2_cvtdq2ps(
+      func,
+      make_xmm( xmm ),
+      make_xmm( xmm ) );
+}
+
 static void PIPE_CDECL
 flr4f(
    float *store )
@@ -1967,7 +1978,12 @@ emit_instruction(
       break;
 
    case TGSI_OPCODE_TRUNC:
-      return 0;
+      FOR_EACH_DST0_ENABLED_CHANNEL( *inst, chan_index ) {
+         FETCH( func, *inst, 0, 0, chan_index );
+         emit_f2it( func, 0 );
+         emit_i2f( func, 0 );
+         STORE( func, *inst, 0, 0, chan_index );
+      }
       break;
 
    case TGSI_OPCODE_SHL: