Mesa (main): nir/builder: add nir_mask
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed May 26 04:33:38 UTC 2021
Module: Mesa
Branch: main
Commit: f9ecbb1e1d5b8077ba9aa00aaaf3fb4908dae4c8
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f9ecbb1e1d5b8077ba9aa00aaaf3fb4908dae4c8
Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date: Tue May 4 10:24:03 2021 -0400
nir/builder: add nir_mask
it's handy to have functions for generating masks
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10620>
---
src/compiler/nir/nir_builder.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/compiler/nir/nir_builder.h b/src/compiler/nir/nir_builder.h
index 7a81bfb2ada..64832594816 100644
--- a/src/compiler/nir/nir_builder.h
+++ b/src/compiler/nir/nir_builder.h
@@ -1612,6 +1612,14 @@ nir_build_calc_io_offset(nir_builder *b,
return nir_iadd_imm_nuw(b, nir_iadd_nuw(b, base_op, offset_op), const_op);
}
+/* calculate a `(1 << value) - 1` in ssa without overflows */
+static inline nir_ssa_def *
+nir_mask(nir_builder *b, nir_ssa_def *bits, unsigned dst_bit_size)
+{
+ return nir_ushr(b, nir_imm_intN_t(b, -1, dst_bit_size),
+ nir_isub_imm(b, dst_bit_size, nir_u2u32(b, bits)));
+}
+
static inline nir_ssa_def *
nir_f2b(nir_builder *build, nir_ssa_def *f)
{
More information about the mesa-commit
mailing list