Mesa (master): i965: Print the correct dst and shared-src types for 3-src instructions.

Matt Turner mattst88 at kemper.freedesktop.org
Mon May 6 17:30:43 UTC 2013


Module: Mesa
Branch: master
Commit: c71bee757b52c1e222a4e461f12a93d09998e3da
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c71bee757b52c1e222a4e461f12a93d09998e3da

Author: Matt Turner <mattst88 at gmail.com>
Date:   Sat Apr 20 21:41:15 2013 -0700

i965: Print the correct dst and shared-src types for 3-src instructions.

Reviewed-by: Chris Forbes <chrisf at ijw.co.nz>

---

 src/mesa/drivers/dri/i965/brw_disasm.c |   26 ++++++++++++++++++++++----
 1 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_disasm.c b/src/mesa/drivers/dri/i965/brw_disasm.c
index f072ee5..3e7c613 100644
--- a/src/mesa/drivers/dri/i965/brw_disasm.c
+++ b/src/mesa/drivers/dri/i965/brw_disasm.c
@@ -461,6 +461,19 @@ static int print_opcode (FILE *file, int id)
     return 0;
 }
 
+static int three_source_type_to_reg_type(int three_source_type)
+{
+   switch (three_source_type) {
+   case BRW_3SRC_TYPE_F:
+      return BRW_REGISTER_TYPE_F;
+   case BRW_3SRC_TYPE_D:
+      return BRW_REGISTER_TYPE_D;
+   case BRW_3SRC_TYPE_UD:
+      return BRW_REGISTER_TYPE_UD;
+   }
+   return -1;
+}
+
 static int reg (FILE *file, GLuint _reg_file, GLuint _reg_nr)
 {
     int	err = 0;
@@ -587,7 +600,9 @@ static int dest_3src (FILE *file, struct brw_instruction *inst)
        format (file, ".%d", inst->bits1.da3src.dest_subreg_nr);
     string (file, "<1>");
     err |= control (file, "writemask", writemask, inst->bits1.da3src.dest_writemask, NULL);
-    err |= control (file, "dest reg encoding", reg_encoding, BRW_REGISTER_TYPE_F, NULL);
+    err |= control (file, "dest reg encoding", reg_encoding,
+                    three_source_type_to_reg_type(inst->bits1.da3src.dst_type),
+                    NULL);
 
     return 0;
 }
@@ -726,7 +741,8 @@ static int src0_3src (FILE *file, struct brw_instruction *inst)
 	format (file, ".%d", inst->bits2.da3src.src0_subreg_nr);
     string (file, "<4,1,1>");
     err |= control (file, "src da16 reg type", reg_encoding,
-		    BRW_REGISTER_TYPE_F, NULL);
+                    three_source_type_to_reg_type(inst->bits1.da3src.src_type),
+                    NULL);
     /*
      * Three kinds of swizzle display:
      *  identity - nothing printed
@@ -778,7 +794,8 @@ static int src1_3src (FILE *file, struct brw_instruction *inst)
 	format (file, ".%d", src1_subreg_nr);
     string (file, "<4,1,1>");
     err |= control (file, "src da16 reg type", reg_encoding,
-		    BRW_REGISTER_TYPE_F, NULL);
+                    three_source_type_to_reg_type(inst->bits1.da3src.src_type),
+                    NULL);
     /*
      * Three kinds of swizzle display:
      *  identity - nothing printed
@@ -829,7 +846,8 @@ static int src2_3src (FILE *file, struct brw_instruction *inst)
 	format (file, ".%d", inst->bits3.da3src.src2_subreg_nr);
     string (file, "<4,1,1>");
     err |= control (file, "src da16 reg type", reg_encoding,
-		    BRW_REGISTER_TYPE_F, NULL);
+                    three_source_type_to_reg_type(inst->bits1.da3src.src_type),
+                    NULL);
     /*
      * Three kinds of swizzle display:
      *  identity - nothing printed




More information about the mesa-commit mailing list