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