summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFaith Ekstrand <faith.ekstrand@collabora.com>2023-10-26 08:01:15 -0500
committerEric Engestrom <eric@engestrom.ch>2023-10-30 15:47:22 +0000
commit8a7498e13f081c054ebe7f14994ccca89677557e (patch)
tree68173eb78e20c69ff2df8d83513a0a6a237b016d
parent0144e4d0b3f069d883e4771847f1bb990a2ea675 (diff)
nir/lower_bit_size: Fix subgroup lowering for floats
Using u2u is always correct for integers, including signed integers, because we're doing a down-cast. It's wrong for floats, though. Fixes: f95665cfebbd ("nir/lower_bit_size: Add support for lowering subgroup ops") Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Reviewed-by: Timur Kristóf <timur.kristof@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25894> (cherry picked from commit 5979e74177eb3013ca7e78867295e9a015e6c8ed)
-rw-r--r--.pick_status.json2
-rw-r--r--src/compiler/nir/nir_lower_bit_size.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/.pick_status.json b/.pick_status.json
index d2d18bc7421..8247aa12bca 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -984,7 +984,7 @@
"description": "nir/lower_bit_size: Fix subgroup lowering for floats",
"nominated": true,
"nomination_type": 1,
- "resolution": 0,
+ "resolution": 1,
"main_sha": null,
"because_sha": "f95665cfebbd943ca3795c026e3dabf4af3f262c",
"notes": null
diff --git a/src/compiler/nir/nir_lower_bit_size.c b/src/compiler/nir/nir_lower_bit_size.c
index 37889a39faf..35097b85d83 100644
--- a/src/compiler/nir/nir_lower_bit_size.c
+++ b/src/compiler/nir/nir_lower_bit_size.c
@@ -203,7 +203,7 @@ lower_intrinsic_instr(nir_builder *b, nir_intrinsic_instr *intrin,
if (intrin->intrinsic != nir_intrinsic_vote_feq &&
intrin->intrinsic != nir_intrinsic_vote_ieq)
- res = nir_u2uN(b, res, old_bit_size);
+ res = nir_convert_to_bit_size(b, res, type, old_bit_size);
nir_def_rewrite_uses(&intrin->def, res);
break;