Mesa (master): intel/fs: Support 64-bit SEL_EXEC on Gen11+

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Jan 22 19:12:48 UTC 2021


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

Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Mon Oct 26 13:34:04 2020 -0500

intel/fs: Support 64-bit SEL_EXEC on Gen11+

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7329>

---

 src/intel/compiler/brw_fs_generator.cpp | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

diff --git a/src/intel/compiler/brw_fs_generator.cpp b/src/intel/compiler/brw_fs_generator.cpp
index fade40c7268..8c2c3af6cca 100644
--- a/src/intel/compiler/brw_fs_generator.cpp
+++ b/src/intel/compiler/brw_fs_generator.cpp
@@ -2459,11 +2459,25 @@ fs_generator::generate_code(const cfg_t *cfg, int dispatch_width,
 
       case SHADER_OPCODE_SEL_EXEC:
          assert(inst->force_writemask_all);
-         brw_set_default_mask_control(p, BRW_MASK_DISABLE);
-         brw_MOV(p, dst, src[1]);
-         brw_set_default_mask_control(p, BRW_MASK_ENABLE);
-         brw_set_default_swsb(p, tgl_swsb_null());
-         brw_MOV(p, dst, src[0]);
+         if (type_sz(dst.type) > 4 && !devinfo->has_64bit_float) {
+            brw_set_default_mask_control(p, BRW_MASK_DISABLE);
+            brw_MOV(p, subscript(dst, BRW_REGISTER_TYPE_UD, 0),
+                       subscript(src[1], BRW_REGISTER_TYPE_UD, 0));
+            brw_set_default_swsb(p, tgl_swsb_null());
+            brw_MOV(p, subscript(dst, BRW_REGISTER_TYPE_UD, 1),
+                       subscript(src[1], BRW_REGISTER_TYPE_UD, 1));
+            brw_set_default_mask_control(p, BRW_MASK_ENABLE);
+            brw_MOV(p, subscript(dst, BRW_REGISTER_TYPE_UD, 0),
+                       subscript(src[0], BRW_REGISTER_TYPE_UD, 0));
+            brw_MOV(p, subscript(dst, BRW_REGISTER_TYPE_UD, 1),
+                       subscript(src[0], BRW_REGISTER_TYPE_UD, 1));
+         } else {
+            brw_set_default_mask_control(p, BRW_MASK_DISABLE);
+            brw_MOV(p, dst, src[1]);
+            brw_set_default_mask_control(p, BRW_MASK_ENABLE);
+            brw_set_default_swsb(p, tgl_swsb_null());
+            brw_MOV(p, dst, src[0]);
+         }
          break;
 
       case SHADER_OPCODE_QUAD_SWIZZLE:



More information about the mesa-commit mailing list