Mesa (master): intel/disasm: Don't rely on FALLTHROUGHTs to print unsupported SFID

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Nov 25 16:54:22 UTC 2020


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

Author: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
Date:   Mon Nov 23 21:04:51 2020 -0900

intel/disasm: Don't rely on FALLTHROUGHTs to print unsupported SFID

The code works but is a bit fragile if we ever add a case that has a
less strict requirement (a smaller gen) than the case above.  To avoid
having to reason about this, refactor code to use a variable to
indicate whether the SFID is supported or not.

Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Reviewed-by: Marcin Ślusarz <marcin.slusarz at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7742>

---

 src/intel/compiler/brw_disasm.c | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/src/intel/compiler/brw_disasm.c b/src/intel/compiler/brw_disasm.c
index 45024231d14..b6a1cbdc090 100644
--- a/src/intel/compiler/brw_disasm.c
+++ b/src/intel/compiler/brw_disasm.c
@@ -1874,6 +1874,7 @@ brw_disassemble_inst(FILE *file, const struct gen_device_info *devinfo,
       if (!has_imm_desc) {
          format(file, " indirect");
       } else {
+         bool unsupported = false;
          switch (sfid) {
          case BRW_SFID_MATH:
             err |= control(file, "math function", math_function,
@@ -2038,9 +2039,10 @@ brw_disassemble_inst(FILE *file, const struct gen_device_info *devinfo,
                          brw_dp_desc_msg_control(devinfo, imm_desc));
                }
                format(file, ")");
-               break;
+            } else {
+               unsupported = true;
             }
-            /* FALLTHROUGH */
+            break;
 
          case HSW_SFID_DATAPORT_DATA_CACHE_1: {
             if (devinfo->gen >= 7) {
@@ -2088,10 +2090,11 @@ brw_disassemble_inst(FILE *file, const struct gen_device_info *devinfo,
                   format(file, "0x%x", msg_ctrl);
                }
                format(file, ")");
-               break;
+            } else {
+               unsupported = true;
             }
+            break;
          }
-         /* FALLTHROUGH */
 
          case GEN7_SFID_PIXEL_INTERPOLATOR:
             if (devinfo->gen >= 7) {
@@ -2099,23 +2102,28 @@ brw_disassemble_inst(FILE *file, const struct gen_device_info *devinfo,
                       brw_inst_pi_nopersp(devinfo, inst) ? "linear" : "persp",
                       pixel_interpolator_msg_types[brw_inst_pi_message_type(devinfo, inst)],
                       brw_inst_pi_message_data(devinfo, inst));
-               break;
+            } else {
+               unsupported = true;
             }
-            /* FALLTHROUGH */
+            break;
 
          case GEN_RT_SFID_RAY_TRACE_ACCELERATOR:
             if (devinfo->has_ray_tracing) {
                format(file, " SIMD%d,",
                       brw_rt_trace_ray_desc_exec_size(devinfo, imm_desc));
-               break;
+            } else {
+               unsupported = true;
             }
-            /* FALLTHROUGH */
+            break;
 
          default:
-            format(file, "unsupported shared function ID %d", sfid);
+            unsupported = true;
             break;
          }
 
+         if (unsupported)
+            format(file, "unsupported shared function ID %d", sfid);
+
          if (space)
             string(file, " ");
       }



More information about the mesa-commit mailing list