nir: add and use nir_imod_imm

Just a short-hand, really. Makes the code a bit easier to read.

Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23461>
This commit is contained in:
Erik Faye-Lund 2023-06-05 15:31:47 +02:00 committed by Marge Bot
parent e1f4c79288
commit 3a64e3425f
7 changed files with 16 additions and 10 deletions

View file

@ -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);

View file

@ -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)
{

View file

@ -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);

View file

@ -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

View file

@ -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];

View file

@ -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));
}

View file

@ -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];