rusticl/nir: copy alignment info when lowering kernel input loads
Signed-off-by: Karol Herbst <kherbst@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19614>
This commit is contained in:
@@ -95,25 +95,11 @@ rusticl_lower_input_instr(struct nir_builder *b, nir_instr *instr, void *_)
|
|||||||
|
|
||||||
nir_intrinsic_instr *load = nir_instr_as_intrinsic(load_result->parent_instr);
|
nir_intrinsic_instr *load = nir_instr_as_intrinsic(load_result->parent_instr);
|
||||||
|
|
||||||
/* If it's const, set the alignment to our known constant offset. If
|
nir_intrinsic_set_align_mul(load, nir_intrinsic_align_mul(intrins));
|
||||||
* not, set it to a pessimistic value based on the multiplier (or the
|
nir_intrinsic_set_align_offset(load, nir_intrinsic_align_offset(intrins));
|
||||||
* scalar size, for qword loads).
|
|
||||||
*
|
|
||||||
* We could potentially set up stricter alignments for indirects by
|
|
||||||
* knowing what features are enabled in the APIs (see comment in
|
|
||||||
* nir_lower_ubo_vec4.c)
|
|
||||||
*/
|
|
||||||
if (nir_src_is_const(intrins->src[0])) {
|
|
||||||
nir_intrinsic_set_align(load, NIR_ALIGN_MUL_MAX,
|
|
||||||
(nir_src_as_uint(intrins->src[0]) +
|
|
||||||
nir_intrinsic_base(intrins) * 1) %
|
|
||||||
NIR_ALIGN_MUL_MAX);
|
|
||||||
} else {
|
|
||||||
nir_intrinsic_set_align(load, intrins->dest.ssa.bit_size / 8, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
nir_intrinsic_set_range_base(load, nir_intrinsic_base(intrins));
|
nir_intrinsic_set_range_base(load, nir_intrinsic_base(intrins));
|
||||||
nir_intrinsic_set_range(load, nir_intrinsic_range(intrins));
|
nir_intrinsic_set_range(load, nir_intrinsic_range(intrins));
|
||||||
|
|
||||||
return load_result;
|
return load_result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user