From 8c2bf020fd649957597d074cf2390d6de029ddd0 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Tue, 31 Oct 2017 14:42:33 -0700 Subject: [PATCH] nir/builder: Add a nir_imm_intN_t helper This lets you easily build integer immediates of arbitrary bit size. Reviewed-by: Iago Toral Quiroga Reviewed-by: Lionel Landwerlin --- src/compiler/nir/nir_builder.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/compiler/nir/nir_builder.h b/src/compiler/nir/nir_builder.h index 4bd5628ff7d..36e0ae3ac63 100644 --- a/src/compiler/nir/nir_builder.h +++ b/src/compiler/nir/nir_builder.h @@ -263,6 +263,18 @@ nir_imm_int64(nir_builder *build, int64_t x) return nir_build_imm(build, 1, 64, v); } +static inline nir_ssa_def * +nir_imm_intN_t(nir_builder *build, uint64_t x, unsigned bit_size) +{ + nir_const_value v; + + memset(&v, 0, sizeof(v)); + assert(bit_size <= 64); + v.i64[0] = x & (~0ull >> (64 - bit_size)); + + return nir_build_imm(build, 1, bit_size, v); +} + static inline nir_ssa_def * nir_imm_ivec4(nir_builder *build, int x, int y, int z, int w) { -- 2.30.2