Use _transpose_matrix4x4 from Cell SDK instead of my own version
authorIan Romanick <idr@us.ibm.com>
Tue, 5 Feb 2008 17:43:52 +0000 (09:43 -0800)
committerBen Skeggs <skeggsb@gmail.com>
Fri, 15 Feb 2008 02:50:31 +0000 (13:50 +1100)
src/mesa/pipe/cell/spu/spu_exec.c
src/mesa/pipe/cell/spu/spu_vertex_fetch.c
src/mesa/pipe/cell/spu/spu_vertex_shader.h

index 1bd8687d419f8292dbe4acd9f7fea8594e4ee0d2..e51008b9b3cbd598081ba582f6e36771a9a7d1b6 100644 (file)
@@ -52,6 +52,7 @@
 
 #include <libmisc.h>
 #include <spu_mfcio.h>
+#include <transpose_matrix4x4.h>
 #include <simdmath/ceilf4.h>
 #include <simdmath/cosf4.h>
 #include <simdmath/divf4.h>
@@ -664,7 +665,7 @@ fetch_texel( struct spu_sampler *sampler,
 
    sampler->get_samples(sampler, s->f, t->f, p->f, lodbias, (float *) rgba);
 
-   spu_transpose_4x4(out, rgba);
+   _transpose_matrix4x4(out, rgba);
    r->q = out[0];
    g->q = out[1];
    b->q = out[2];
index cfa449e8130efd30554754fc30d531dacd543bc6..6e86a919ce4f22705d4c9ec2366205fb42c8103f 100644 (file)
@@ -31,6 +31,8 @@
   */
 
 #include <spu_mfcio.h>
+#include <transpose_matrix4x4.h>
+
 #include "pipe/p_util.h"
 #include "pipe/p_state.h"
 #include "pipe/p_shader_tokens.h"
@@ -308,61 +310,6 @@ static spu_fetch_func get_fetch_func( enum pipe_format format )
 }
 
 
-void
-spu_transpose_4x4(qword *out, const qword *in)
-{
-   static const qword masks[8] = {
-      {
-         0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
-         0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
-      },
-      {
-         0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
-         0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
-      },
-
-      { 
-         0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17,
-         0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
-      },
-      { 
-         0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
-         0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17,
-      },
-
-      { 
-         0x08, 0x09, 0x0a, 0x0b, 0x18, 0x19, 0x1a, 0x1b,
-         0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
-      },
-      { 
-         0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
-         0x08, 0x09, 0x0a, 0x0b, 0x18, 0x19, 0x1a, 0x1b,
-      },
-
-      { 
-         0x0c, 0x0d, 0x0e, 0x0f, 0x1c, 0x1d, 0x1e, 0x1f,
-         0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
-      },
-      {
-         0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
-         0x0c, 0x0d, 0x0e, 0x0f, 0x1c, 0x1d, 0x1e, 0x1f,
-      },
-   };
-
-   out[0] = si_shufb(in[0], in[1], masks[0]);
-   out[0] = si_or(out[0], si_shufb(in[2], in[3], masks[1]));
-
-   out[1] = si_shufb(in[0], in[1], masks[2]);
-   out[1] = si_or(out[1], si_shufb(in[2], in[3], masks[3]));
-
-   out[2] = si_shufb(in[0], in[1], masks[4]);
-   out[2] = si_or(out[2], si_shufb(in[2], in[3], masks[5]));
-
-   out[3] = si_shufb(in[0], in[1], masks[6]);
-   out[3] = si_or(out[3], si_shufb(in[2], in[3], masks[7]));
-}
-
-
 /**
  * Fetch vertex attributes for 'count' vertices.
  */
@@ -427,7 +374,7 @@ static void generic_vertex_fetch(struct spu_vs_context *draw,
        * excessive number of fetch functions, but we could at least
        * minimize the transpose step:
        */
-      spu_transpose_4x4(&machine->Inputs[attr].xyzw[0].q, p);
+      _transpose_matrix4x4(&machine->Inputs[attr].xyzw[0].q, p);
    }
 }
 
index 2435b7ddae0099a86f26c970ce2b931b0b0b3cb9..c96b93ff0ac92d976d7fe8a1939f0c06c1fa2fe0 100644 (file)
@@ -39,8 +39,6 @@ struct spu_vs_context {
 
 extern void spu_update_vertex_fetch(struct spu_vs_context *draw);
 
-extern void spu_transpose_4x4(qword *out, const qword *in);
-
 static INLINE void spu_vertex_fetch(struct spu_vs_context *draw,
                                    struct spu_exec_machine *machine,
                                    const unsigned *elts,