mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
nir: More NIR_MAX_VEC_COMPONENTS fixes
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6655>
(cherry picked from commit 89401e5867)
This commit is contained in:
parent
3a09792bfc
commit
da0ed80410
5 changed files with 6 additions and 4 deletions
|
|
@ -571,7 +571,7 @@
|
|||
"description": "nir: More NIR_MAX_VEC_COMPONENTS fixes",
|
||||
"nominated": true,
|
||||
"nomination_type": 0,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": null
|
||||
},
|
||||
|
|
|
|||
|
|
@ -929,7 +929,7 @@ nir_ssa_for_src(nir_builder *build, nir_src src, int num_components)
|
|||
|
||||
nir_alu_src alu = { NIR_SRC_INIT };
|
||||
alu.src = src;
|
||||
for (int j = 0; j < 4; j++)
|
||||
for (int j = 0; j < NIR_MAX_VEC_COMPONENTS; j++)
|
||||
alu.swizzle[j] = j;
|
||||
|
||||
return nir_mov_alu(build, alu, num_components);
|
||||
|
|
|
|||
|
|
@ -74,6 +74,8 @@ nir_fast_length(nir_builder *b, nir_ssa_def *vec)
|
|||
case 2: return nir_fsqrt(b, nir_fdot2(b, vec, vec));
|
||||
case 3: return nir_fsqrt(b, nir_fdot3(b, vec, vec));
|
||||
case 4: return nir_fsqrt(b, nir_fdot4(b, vec, vec));
|
||||
case 8: return nir_fsqrt(b, nir_fdot8(b, vec, vec));
|
||||
case 16: return nir_fsqrt(b, nir_fdot16(b, vec, vec));
|
||||
default:
|
||||
unreachable("Invalid number of components");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1177,7 +1177,7 @@ nir_lower_explicit_io_instr(nir_builder *b,
|
|||
if (intrin->intrinsic == nir_intrinsic_load_deref) {
|
||||
nir_ssa_def *value;
|
||||
if (vec_stride > scalar_size) {
|
||||
nir_ssa_def *comps[4] = { NULL, };
|
||||
nir_ssa_def *comps[NIR_MAX_VEC_COMPONENTS] = { NULL, };
|
||||
for (unsigned i = 0; i < intrin->num_components; i++) {
|
||||
nir_ssa_def *comp_addr = build_addr_iadd_imm(b, addr, addr_format,
|
||||
vec_stride * i);
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ static bool
|
|||
is_swizzleless_move(nir_alu_instr *instr)
|
||||
{
|
||||
if (is_move(instr)) {
|
||||
for (unsigned i = 0; i < 4; i++) {
|
||||
for (unsigned i = 0; i < NIR_MAX_VEC_COMPONENTS; i++) {
|
||||
if (!((instr->dest.write_mask >> i) & 1))
|
||||
break;
|
||||
if (instr->src[0].swizzle[i] != i)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue