Mesa (main): intel/compiler: Add getter helpers for LSC message descriptor fields

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jun 30 16:30:45 UTC 2021


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

Author: Mark Janes <markjanes at swizzler.org>
Date:   Fri Feb 12 13:20:44 2021 -0800

intel/compiler: Add getter helpers for LSC message descriptor fields

v2: (Sagar Ghuge):
 - rename addr_reg_size to src0_len to match with bspec

v3 (Jason Ekstrand):
 - Re-arrange things in increasing bit order

Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Reviewed-by: Sagar Ghuge <sagar.ghuge at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11600>

---

 src/intel/compiler/brw_eu.h | 114 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 114 insertions(+)

diff --git a/src/intel/compiler/brw_eu.h b/src/intel/compiler/brw_eu.h
index 5a24ed4238b..63bf93941a3 100644
--- a/src/intel/compiler/brw_eu.h
+++ b/src/intel/compiler/brw_eu.h
@@ -1269,6 +1269,88 @@ lsc_msg_desc(UNUSED const struct intel_device_info *devinfo,
    return msg_desc;
 }
 
+static inline enum lsc_opcode
+lsc_msg_desc_opcode(UNUSED const struct intel_device_info *devinfo,
+                    uint32_t desc)
+{
+   assert(devinfo->has_lsc);
+   return (enum lsc_opcode) GET_BITS(desc, 5, 0);
+}
+
+static inline enum lsc_addr_size
+lsc_msg_desc_addr_size(UNUSED const struct intel_device_info *devinfo,
+                       uint32_t desc)
+{
+   assert(devinfo->has_lsc);
+   return (enum lsc_addr_size) GET_BITS(desc, 8, 7);
+}
+
+static inline enum lsc_data_size
+lsc_msg_desc_data_size(UNUSED const struct intel_device_info *devinfo,
+                       uint32_t desc)
+{
+   assert(devinfo->has_lsc);
+   return (enum lsc_data_size) GET_BITS(desc, 11, 9);
+}
+
+static inline enum lsc_vect_size
+lsc_msg_desc_vect_size(UNUSED const struct intel_device_info *devinfo,
+                       uint32_t desc)
+{
+   assert(devinfo->has_lsc);
+   assert(!lsc_opcode_has_cmask(lsc_msg_desc_opcode(devinfo, desc)));
+   return (enum lsc_vect_size) GET_BITS(desc, 14, 12);
+}
+
+static inline enum lsc_cmask
+lsc_msg_desc_cmask(UNUSED const struct intel_device_info *devinfo,
+                   uint32_t desc)
+{
+   assert(devinfo->has_lsc);
+   assert(lsc_opcode_has_cmask(lsc_msg_desc_opcode(devinfo, desc)));
+   return (enum lsc_cmask) GET_BITS(desc, 15, 12);
+}
+
+static inline bool
+lsc_msg_desc_transpose(UNUSED const struct intel_device_info *devinfo,
+                       uint32_t desc)
+{
+   assert(devinfo->has_lsc);
+   return GET_BITS(desc, 15, 15);
+}
+
+static inline unsigned
+lsc_msg_desc_cache_ctrl(UNUSED const struct intel_device_info *devinfo,
+                        uint32_t desc)
+{
+   assert(devinfo->has_lsc);
+   return GET_BITS(desc, 19, 17);
+}
+
+static inline unsigned
+lsc_msg_desc_dest_len(const struct intel_device_info *devinfo,
+                      uint32_t desc)
+{
+   assert(devinfo->has_lsc);
+   return GET_BITS(desc, 24, 20);
+}
+
+static inline unsigned
+lsc_msg_desc_src0_len(const struct intel_device_info *devinfo,
+                      uint32_t desc)
+{
+   assert(devinfo->has_lsc);
+   return GET_BITS(desc, 28, 25);
+}
+
+static inline enum lsc_addr_surface_type
+lsc_msg_desc_addr_type(UNUSED const struct intel_device_info *devinfo,
+                       uint32_t desc)
+{
+   assert(devinfo->has_lsc);
+   return (enum lsc_addr_surface_type) GET_BITS(desc, 30, 29);
+}
+
 static inline uint32_t
 lsc_fence_msg_desc(UNUSED const struct intel_device_info *devinfo,
                    enum lsc_fence_scope scope,
@@ -1284,6 +1366,30 @@ lsc_fence_msg_desc(UNUSED const struct intel_device_info *devinfo,
           SET_BITS(LSC_ADDR_SURFTYPE_FLAT, 30, 29);
 }
 
+static inline enum lsc_fence_scope
+lsc_fence_msg_desc_scope(UNUSED const struct intel_device_info *devinfo,
+                         uint32_t desc)
+{
+   assert(devinfo->has_lsc);
+   return (enum lsc_fence_scope) GET_BITS(desc, 11, 9);
+}
+
+static inline enum lsc_flush_type
+lsc_fence_msg_desc_flush_type(UNUSED const struct intel_device_info *devinfo,
+                              uint32_t desc)
+{
+   assert(devinfo->has_lsc);
+   return (enum lsc_flush_type) GET_BITS(desc, 14, 12);
+}
+
+static inline enum lsc_backup_fence_routing
+lsc_fence_msg_desc_backup_routing(UNUSED const struct intel_device_info *devinfo,
+                                  uint32_t desc)
+{
+   assert(devinfo->has_lsc);
+   return (enum lsc_backup_fence_routing) GET_BITS(desc, 18, 18);
+}
+
 static inline uint32_t
 lsc_bti_ex_desc(const struct intel_device_info *devinfo, unsigned bti)
 {
@@ -1292,6 +1398,14 @@ lsc_bti_ex_desc(const struct intel_device_info *devinfo, unsigned bti)
           SET_BITS(0, 23, 12);  /* base offset */
 }
 
+static inline unsigned
+lsc_bti_ex_desc_base_offset(const struct intel_device_info *devinfo,
+                            uint32_t ex_desc)
+{
+   assert(devinfo->has_lsc);
+   return GET_BITS(ex_desc, 23, 12);
+}
+
 static inline unsigned
 lsc_bti_ex_desc_index(const struct intel_device_info *devinfo,
                       uint32_t ex_desc)



More information about the mesa-commit mailing list