Mesa (main): radv: use nir_vector_insert_imm in lower_intrinsics

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Aug 24 10:55:16 UTC 2021


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

Author: Rhys Perry <pendingchaos02 at gmail.com>
Date:   Thu Aug 19 10:41:07 2021 +0100

radv: use nir_vector_insert_imm in lower_intrinsics

This creates a single nir_op_vecn instead of a nir_op_vecn and several
copies.

Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Reviewed-by: Daniel Schürmann <daniel at schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12469>

---

 src/amd/vulkan/radv_shader.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c
index f38ca7c8f45..cb9e9fd2caf 100644
--- a/src/amd/vulkan/radv_shader.c
+++ b/src/amd/vulkan/radv_shader.c
@@ -311,8 +311,7 @@ lower_intrinsics(nir_shader *nir, const struct radv_pipeline_key *key,
                def = nir_build_load_global(&b, 1, 64, addr, .access = ACCESS_NON_WRITEABLE,
                                            .align_mul = 8, .align_offset = 0);
             } else {
-               def = nir_vec3(&b, nir_channel(&b, intrin->src[0].ssa, 0),
-                              nir_channel(&b, intrin->src[0].ssa, 1), nir_imm_int(&b, 0));
+               def = nir_vector_insert_imm(&b, intrin->src[0].ssa, nir_imm_int(&b, 0), 2);
             }
             break;
          case nir_intrinsic_vulkan_resource_index: {
@@ -323,8 +322,6 @@ lower_intrinsics(nir_shader *nir, const struct radv_pipeline_key *key,
             nir_ssa_def *new_res = nir_vulkan_resource_index(
                &b, 3, 32, intrin->src[0].ssa, .desc_set = desc_set, .binding = binding,
                .desc_type = nir_intrinsic_desc_type(intrin));
-            nir_ssa_def *set_ptr = nir_channel(&b, new_res, 0);
-            nir_ssa_def *binding_ptr = nir_channel(&b, new_res, 1);
 
             nir_ssa_def *stride;
             if (desc_layout->binding[binding].type == VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC ||
@@ -333,15 +330,14 @@ lower_intrinsics(nir_shader *nir, const struct radv_pipeline_key *key,
             } else {
                stride = nir_imm_int(&b, desc_layout->binding[binding].size);
             }
-            def = nir_vec3(&b, set_ptr, binding_ptr, stride);
+            def = nir_vector_insert_imm(&b, new_res, stride, 2);
             break;
          }
          case nir_intrinsic_vulkan_resource_reindex: {
-            nir_ssa_def *set_ptr = nir_channel(&b, intrin->src[0].ssa, 0);
             nir_ssa_def *binding_ptr = nir_channel(&b, intrin->src[0].ssa, 1);
             nir_ssa_def *stride = nir_channel(&b, intrin->src[0].ssa, 2);
             binding_ptr = nir_iadd(&b, binding_ptr, nir_imul(&b, intrin->src[1].ssa, stride));
-            def = nir_vec3(&b, set_ptr, binding_ptr, stride);
+            def = nir_vector_insert_imm(&b, intrin->src[0].ssa, binding_ptr, 1);
             break;
          }
          case nir_intrinsic_is_sparse_texels_resident:



More information about the mesa-commit mailing list