Mesa (master): intel/compiler: Make separate src0/src1 index tables

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Oct 30 18:12:44 UTC 2019


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

Author: Matt Turner <mattst88 at gmail.com>
Date:   Thu Feb 15 10:33:18 2018 -0800

intel/compiler: Make separate src0/src1 index tables

TGL uses different data (and even a different format!) for each source.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>

---

 src/intel/compiler/brw_eu_compact.c | 29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/src/intel/compiler/brw_eu_compact.c b/src/intel/compiler/brw_eu_compact.c
index 1363f5bc0a4..dcc8f2841d5 100644
--- a/src/intel/compiler/brw_eu_compact.c
+++ b/src/intel/compiler/brw_eu_compact.c
@@ -702,7 +702,8 @@ static const uint64_t gen8_3src_source_index_table[4] = {
 static const uint32_t *control_index_table;
 static const uint32_t *datatype_table;
 static const uint16_t *subreg_table;
-static const uint16_t *src_index_table;
+static const uint16_t *src0_index_table;
+static const uint16_t *src1_index_table;
 
 static bool
 set_control_index(const struct gen_device_info *devinfo,
@@ -790,7 +791,7 @@ set_src0_index(const struct gen_device_info *devinfo,
    uint16_t uncompacted = brw_inst_bits(src, 88, 77); /* 12b */
 
    for (int i = 0; i < 32; i++) {
-      if (src_index_table[i] == uncompacted) {
+      if (src0_index_table[i] == uncompacted) {
          brw_compact_inst_set_src0_index(devinfo, dst, i);
 	 return true;
       }
@@ -811,7 +812,7 @@ set_src1_index(const struct gen_device_info *devinfo, brw_compact_inst *dst,
       uint16_t uncompacted = brw_inst_bits(src, 120, 109); /* 12b */
 
       for (int i = 0; i < 32; i++) {
-         if (src_index_table[i] == uncompacted) {
+         if (src1_index_table[i] == uncompacted) {
             brw_compact_inst_set_src1_index(devinfo, dst, i);
             return true;
          }
@@ -1225,7 +1226,7 @@ set_uncompacted_src0(const struct gen_device_info *devinfo, brw_inst *dst,
                      brw_compact_inst *src)
 {
    uint32_t compacted = brw_compact_inst_src0_index(devinfo, src);
-   uint16_t uncompacted = src_index_table[compacted];
+   uint16_t uncompacted = src0_index_table[compacted];
 
    brw_inst_set_bits(dst, 88, 77, uncompacted);
 }
@@ -1240,7 +1241,7 @@ set_uncompacted_src1(const struct gen_device_info *devinfo, brw_inst *dst,
       brw_inst_set_imm_ud(devinfo, dst, (high5 << 27) >> 19);
    } else {
       uint16_t uncompacted =
-         src_index_table[brw_compact_inst_src1_index(devinfo, src)];
+         src1_index_table[brw_compact_inst_src1_index(devinfo, src)];
 
       brw_inst_set_bits(dst, 120, 109, uncompacted);
    }
@@ -1493,13 +1494,15 @@ brw_init_compaction_tables(const struct gen_device_info *devinfo)
       control_index_table = NULL;
       datatype_table = NULL;
       subreg_table = NULL;
-      src_index_table = NULL;
+      src0_index_table = NULL;
+      src1_index_table = NULL;
       break;
    case 11:
       control_index_table = gen8_control_index_table;
       datatype_table = gen11_datatype_table;
       subreg_table = gen8_subreg_table;
-      src_index_table = gen8_src_index_table;
+      src0_index_table = gen8_src_index_table;
+      src1_index_table = gen8_src_index_table;
       break;
    case 10:
    case 9:
@@ -1507,26 +1510,30 @@ brw_init_compaction_tables(const struct gen_device_info *devinfo)
       control_index_table = gen8_control_index_table;
       datatype_table = gen8_datatype_table;
       subreg_table = gen8_subreg_table;
-      src_index_table = gen8_src_index_table;
+      src0_index_table = gen8_src_index_table;
+      src1_index_table = gen8_src_index_table;
       break;
    case 7:
       control_index_table = gen7_control_index_table;
       datatype_table = gen7_datatype_table;
       subreg_table = gen7_subreg_table;
-      src_index_table = gen7_src_index_table;
+      src0_index_table = gen7_src_index_table;
+      src1_index_table = gen7_src_index_table;
       break;
    case 6:
       control_index_table = gen6_control_index_table;
       datatype_table = gen6_datatype_table;
       subreg_table = gen6_subreg_table;
-      src_index_table = gen6_src_index_table;
+      src0_index_table = gen6_src_index_table;
+      src1_index_table = gen6_src_index_table;
       break;
    case 5:
    case 4:
       control_index_table = g45_control_index_table;
       datatype_table = g45_datatype_table;
       subreg_table = g45_subreg_table;
-      src_index_table = g45_src_index_table;
+      src0_index_table = g45_src_index_table;
+      src1_index_table = g45_src_index_table;
       break;
    default:
       unreachable("unknown generation");




More information about the mesa-commit mailing list