aco: improve readfirstlane after uniform LDS loads
authorRhys Perry <pendingchaos02@gmail.com>
Wed, 11 Dec 2019 16:10:26 +0000 (16:10 +0000)
committerMarge Bot <eric+marge@anholt.net>
Tue, 14 Jan 2020 12:56:28 +0000 (12:56 +0000)
Totals from affected shaders:
SGPRS: 976 -> 968 (-0.82 %)
VGPRS: 580 -> 584 (0.69 %)
Spilled SGPRs: 0 -> 0 (0.00 %)
Spilled VGPRs: 0 -> 0 (0.00 %)
Code Size: 106032 -> 103076 (-2.79 %) bytes
Max Waves: 237 -> 237 (0.00 %)
Instructions: 19452 -> 18740 (-3.66 %)

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2883>

src/amd/compiler/aco_instruction_selection.cpp

index 79a5376f4c0fbb78139a116e2364660cd14e3355..8af2e5eadf0a4a0767b691a1b26485fee7c694fc 100644 (file)
@@ -2818,8 +2818,11 @@ void load_lds(isel_context *ctx, unsigned elem_size_bytes, Temp dst,
          return;
       }
 
-      if (dst.type() == RegType::sgpr)
-         res = bld.as_uniform(res);
+      if (dst.type() == RegType::sgpr) {
+         Temp new_res = bld.tmp(RegType::sgpr, res.size());
+         expand_vector(ctx, res, new_res, res.size(), (1 << res.size()) - 1);
+         res = new_res;
+      }
 
       if (num_elements == 1) {
          result[result_size++] = res;