diff --git a/src/compiler/nir/nir_builder.h b/src/compiler/nir/nir_builder.h index 6225579e286..7f5ffb52a65 100644 --- a/src/compiler/nir/nir_builder.h +++ b/src/compiler/nir/nir_builder.h @@ -731,6 +731,20 @@ nir_iand_imm(nir_builder *build, nir_ssa_def *x, uint64_t y) } } +static inline nir_ssa_def * +nir_ior_imm(nir_builder *build, nir_ssa_def *x, uint64_t y) +{ + assert(x->bit_size <= 64); + y &= BITFIELD64_MASK(x->bit_size); + + if (y == 0) { + return x; + } else if (y == BITFIELD64_MASK(x->bit_size)) { + return nir_imm_intN_t(build, y, x->bit_size); + } else + return nir_ior(build, x, nir_imm_intN_t(build, y, x->bit_size)); +} + static inline nir_ssa_def * nir_ishl_imm(nir_builder *build, nir_ssa_def *x, uint32_t y) {