From 3a64e3425f9de050a5f0dedbb1d18f2a1341ac61 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Mon, 5 Jun 2023 15:31:47 +0200 Subject: [PATCH] nir: add and use nir_imod_imm Just a short-hand, really. Makes the code a bit easier to read. Reviewed-by: Alyssa Rosenzweig Part-of: --- src/amd/vulkan/radv_rt_common.c | 4 ++-- src/compiler/nir/nir_builder.h | 6 ++++++ src/gallium/drivers/d3d12/d3d12_gs_variant.cpp | 6 +++--- src/gallium/drivers/zink/zink_compiler.c | 4 ++-- src/gallium/drivers/zink/zink_lower_cubemap_to_array.c | 2 +- src/mesa/state_tracker/st_pbo_compute.c | 2 +- src/microsoft/compiler/dxil_nir_lower_int_cubemaps.c | 2 +- 7 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/amd/vulkan/radv_rt_common.c b/src/amd/vulkan/radv_rt_common.c index 04f7cb48633..1ef2ec502e3 100644 --- a/src/amd/vulkan/radv_rt_common.c +++ b/src/amd/vulkan/radv_rt_common.c @@ -223,8 +223,8 @@ intersect_ray_amd_software_tri(struct radv_device *device, nir_builder *b, nir_s b, nir_fge(b, abs_dirs[0], abs_dirs[1]), nir_bcsel(b, nir_fge(b, abs_dirs[0], abs_dirs[2]), nir_imm_int(b, 0), nir_imm_int(b, 2)), nir_bcsel(b, nir_fge(b, abs_dirs[1], abs_dirs[2]), nir_imm_int(b, 1), nir_imm_int(b, 2))); - nir_ssa_def *kx = nir_imod(b, nir_iadd_imm(b, kz, 1), nir_imm_int(b, 3)); - nir_ssa_def *ky = nir_imod(b, nir_iadd_imm(b, kx, 1), nir_imm_int(b, 3)); + nir_ssa_def *kx = nir_imod_imm(b, nir_iadd_imm(b, kz, 1), 3); + nir_ssa_def *ky = nir_imod_imm(b, nir_iadd_imm(b, kx, 1), 3); nir_ssa_def *k_indices[3] = {kx, ky, kz}; nir_ssa_def *k = nir_vec(b, k_indices, 3); diff --git a/src/compiler/nir/nir_builder.h b/src/compiler/nir/nir_builder.h index 13557f782ca..71890b89cb2 100644 --- a/src/compiler/nir/nir_builder.h +++ b/src/compiler/nir/nir_builder.h @@ -892,6 +892,12 @@ nir_ushr_imm(nir_builder *build, nir_ssa_def *x, uint32_t y) } } +static inline nir_ssa_def * +nir_imod_imm(nir_builder *build, nir_ssa_def *x, uint64_t y) +{ + return nir_imod(build, x, nir_imm_intN_t(build, y, x->bit_size)); +} + static inline nir_ssa_def * nir_udiv_imm(nir_builder *build, nir_ssa_def *x, uint64_t y) { diff --git a/src/gallium/drivers/d3d12/d3d12_gs_variant.cpp b/src/gallium/drivers/d3d12/d3d12_gs_variant.cpp index 7cd61b937c8..a4995117130 100644 --- a/src/gallium/drivers/d3d12/d3d12_gs_variant.cpp +++ b/src/gallium/drivers/d3d12/d3d12_gs_variant.cpp @@ -382,7 +382,7 @@ d3d12_emit_lines(struct d3d12_context *ctx, struct d3d12_gs_variant_key *key) d3d12_begin_emit_primitives_gs(&emit_ctx, ctx, key, GL_LINE_STRIP, 6); - nir_ssa_def *next_index = nir_imod(b, nir_iadd_imm(b, emit_ctx.loop_index, 1), nir_imm_int(b, 3)); + nir_ssa_def *next_index = nir_imod_imm(b, nir_iadd_imm(b, emit_ctx.loop_index, 1), 3); /* First vertex */ for (unsigned i = 0; i < emit_ctx.num_vars; ++i) { @@ -436,12 +436,12 @@ d3d12_emit_triangles(struct d3d12_context *ctx, struct d3d12_gs_variant_key *key incr = nir_imm_int(b, 3); if (key->alternate_tri) { - nir_ssa_def *odd = nir_imod(b, nir_load_primitive_id(b), nir_imm_int(b, 2)); + nir_ssa_def *odd = nir_imod_imm(b, nir_load_primitive_id(b), 2); incr = nir_isub(b, incr, odd); } assert(incr != NULL); - nir_ssa_def *index = nir_imod(b, nir_iadd(b, emit_ctx.loop_index, incr), nir_imm_int(b, 3)); + nir_ssa_def *index = nir_imod_imm(b, nir_iadd(b, emit_ctx.loop_index, incr), 3); for (unsigned i = 0; i < emit_ctx.num_vars; ++i) { nir_deref_instr *in_value = nir_build_deref_array(b, nir_build_deref_var(b, emit_ctx.in[i]), index); copy_vars(b, nir_build_deref_var(b, emit_ctx.out[i]), in_value); diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index 9cc2ce3530b..5b476f9166b 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -421,8 +421,8 @@ lower_pv_mode_gs_ring_index(nir_builder *b, nir_ssa_def *index) { nir_ssa_def *ring_offset = nir_load_var(b, state->ring_offset); - return nir_imod(b, nir_iadd(b, index, ring_offset), - nir_imm_int(b, state->ring_size)); + return nir_imod_imm(b, nir_iadd(b, index, ring_offset), + state->ring_size); } /* Given the final deref of chain of derefs this function will walk up the chain diff --git a/src/gallium/drivers/zink/zink_lower_cubemap_to_array.c b/src/gallium/drivers/zink/zink_lower_cubemap_to_array.c index 55dd965ba96..f31cc16ee99 100644 --- a/src/gallium/drivers/zink/zink_lower_cubemap_to_array.c +++ b/src/gallium/drivers/zink/zink_lower_cubemap_to_array.c @@ -329,7 +329,7 @@ handle_cube_gather(nir_builder *b, nir_tex_instr *tex, nir_ssa_def *coord) }; nir_ssa_def *array_slice_2d = nir_f2i32(b, nir_channel(b, coord, 2)); - nir_ssa_def *face = nir_imod(b, array_slice_2d, nir_imm_int(b, 6)); + nir_ssa_def *face = nir_imod_imm(b, array_slice_2d, 6); nir_ssa_def *array_slice_cube_base = nir_isub(b, array_slice_2d, face); nir_ssa_def *channels[4]; diff --git a/src/mesa/state_tracker/st_pbo_compute.c b/src/mesa/state_tracker/st_pbo_compute.c index f0c15db1f80..0ef96bebce5 100644 --- a/src/mesa/state_tracker/st_pbo_compute.c +++ b/src/mesa/state_tracker/st_pbo_compute.c @@ -493,7 +493,7 @@ check_for_weird_packing(nir_builder *b, struct pbo_shader_data *sd, unsigned com nir_ige_imm(b, sd->channels, component), nir_ior(b, nir_ine(b, c, sd->bits1), - nir_ine_imm(b, nir_imod(b, c, nir_imm_int(b, 8)), 0)), + nir_ine_imm(b, nir_imod_imm(b, c, 8), 0)), nir_imm_false(b)); } diff --git a/src/microsoft/compiler/dxil_nir_lower_int_cubemaps.c b/src/microsoft/compiler/dxil_nir_lower_int_cubemaps.c index b4d55a51ae5..3e07e4eb921 100644 --- a/src/microsoft/compiler/dxil_nir_lower_int_cubemaps.c +++ b/src/microsoft/compiler/dxil_nir_lower_int_cubemaps.c @@ -339,7 +339,7 @@ handle_cube_gather(nir_builder *b, nir_tex_instr *tex, nir_ssa_def *coord) }; nir_ssa_def *array_slice_2d = nir_f2i32(b, nir_channel(b, coord, 2)); - nir_ssa_def *face = nir_imod(b, array_slice_2d, nir_imm_int(b, 6)); + nir_ssa_def *face = nir_imod_imm(b, array_slice_2d, 6); nir_ssa_def *array_slice_cube_base = nir_isub(b, array_slice_2d, face); nir_ssa_def *channels[4];