Mesa (main): nir/format_convert: add ssa version of uint packing
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jul 7 14:26:37 UTC 2021
Module: Mesa
Branch: main
Commit: b67a4ba4ad7ed70bbd9ff91cbf7a57e9bb7b77c8
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b67a4ba4ad7ed70bbd9ff91cbf7a57e9bb7b77c8
Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date: Sat May 1 11:45:28 2021 -0400
nir/format_convert: add ssa version of uint packing
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10619>
---
src/compiler/nir/nir_format_convert.h | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/src/compiler/nir/nir_format_convert.h b/src/compiler/nir/nir_format_convert.h
index 265a86d6f6b..11765ae07d1 100644
--- a/src/compiler/nir/nir_format_convert.h
+++ b/src/compiler/nir/nir_format_convert.h
@@ -36,6 +36,15 @@ nir_shift_imm(nir_builder *b, nir_ssa_def *value, int left_shift)
return value;
}
+static inline nir_ssa_def *
+nir_shift(nir_builder *b, nir_ssa_def *value, nir_ssa_def *left_shift)
+{
+ return nir_bcsel(b,
+ nir_ige(b, left_shift, nir_imm_int(b, 0)),
+ nir_ishl(b, value, left_shift),
+ nir_ushr(b, value, nir_ineg(b, left_shift)));
+}
+
static inline nir_ssa_def *
nir_mask_shift(struct nir_builder *b, nir_ssa_def *src,
uint32_t mask, int left_shift)
@@ -144,6 +153,19 @@ nir_format_pack_uint_unmasked(nir_builder *b, nir_ssa_def *color,
return packed;
}
+static inline nir_ssa_def *
+nir_format_pack_uint_unmasked_ssa(nir_builder *b, nir_ssa_def *color,
+ nir_ssa_def *bits)
+{
+ nir_ssa_def *packed = nir_imm_int(b, 0);
+ nir_ssa_def *offset = nir_imm_int(b, 0);
+ for (unsigned i = 0; i < bits->num_components; i++) {
+ packed = nir_ior(b, packed, nir_ishl(b, nir_channel(b, color, i), offset));
+ offset = nir_iadd(b, offset, nir_channel(b, bits, i));
+ }
+ return packed;
+}
+
static inline nir_ssa_def *
nir_format_pack_uint(nir_builder *b, nir_ssa_def *color,
const unsigned *bits, unsigned num_components)
More information about the mesa-commit
mailing list