mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-06 19:40:10 +01:00
nir: add more build helpers
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28606>
This commit is contained in:
parent
b681677f7d
commit
281e08714e
1 changed files with 69 additions and 13 deletions
|
|
@ -413,28 +413,66 @@ nir_imm_ivec2(nir_builder *build, int x, int y)
|
|||
}
|
||||
|
||||
static inline nir_def *
|
||||
nir_imm_ivec3(nir_builder *build, int x, int y, int z)
|
||||
nir_imm_ivec3_intN(nir_builder *build, int x, int y, int z, unsigned bit_size)
|
||||
{
|
||||
nir_const_value v[3] = {
|
||||
nir_const_value_for_int(x, 32),
|
||||
nir_const_value_for_int(y, 32),
|
||||
nir_const_value_for_int(z, 32),
|
||||
nir_const_value_for_int(x, bit_size),
|
||||
nir_const_value_for_int(y, bit_size),
|
||||
nir_const_value_for_int(z, bit_size),
|
||||
};
|
||||
|
||||
return nir_build_imm(build, 3, 32, v);
|
||||
return nir_build_imm(build, 3, bit_size, v);
|
||||
}
|
||||
|
||||
static inline nir_def *
|
||||
nir_imm_uvec2_intN(nir_builder *build, unsigned x, unsigned y,
|
||||
unsigned bit_size)
|
||||
{
|
||||
nir_const_value v[2] = {
|
||||
nir_const_value_for_uint(x, bit_size),
|
||||
nir_const_value_for_uint(y, bit_size),
|
||||
};
|
||||
|
||||
return nir_build_imm(build, 2, bit_size, v);
|
||||
}
|
||||
|
||||
static inline nir_def *
|
||||
nir_imm_uvec3_intN(nir_builder *build, unsigned x, unsigned y, unsigned z,
|
||||
unsigned bit_size)
|
||||
{
|
||||
nir_const_value v[3] = {
|
||||
nir_const_value_for_uint(x, bit_size),
|
||||
nir_const_value_for_uint(y, bit_size),
|
||||
nir_const_value_for_uint(z, bit_size),
|
||||
};
|
||||
|
||||
return nir_build_imm(build, 3, bit_size, v);
|
||||
}
|
||||
|
||||
static inline nir_def *
|
||||
nir_imm_ivec3(nir_builder *build, int x, int y, int z)
|
||||
{
|
||||
return nir_imm_ivec3_intN(build, x, y, z, 32);
|
||||
}
|
||||
|
||||
static inline nir_def *
|
||||
nir_imm_ivec4_intN(nir_builder *build, int x, int y, int z, int w,
|
||||
unsigned bit_size)
|
||||
{
|
||||
nir_const_value v[4] = {
|
||||
nir_const_value_for_int(x, bit_size),
|
||||
nir_const_value_for_int(y, bit_size),
|
||||
nir_const_value_for_int(z, bit_size),
|
||||
nir_const_value_for_int(w, bit_size),
|
||||
};
|
||||
|
||||
return nir_build_imm(build, 4, bit_size, v);
|
||||
}
|
||||
|
||||
static inline nir_def *
|
||||
nir_imm_ivec4(nir_builder *build, int x, int y, int z, int w)
|
||||
{
|
||||
nir_const_value v[4] = {
|
||||
nir_const_value_for_int(x, 32),
|
||||
nir_const_value_for_int(y, 32),
|
||||
nir_const_value_for_int(z, 32),
|
||||
nir_const_value_for_int(w, 32),
|
||||
};
|
||||
|
||||
return nir_build_imm(build, 4, 32, v);
|
||||
return nir_imm_ivec4_intN(build, x, y, z, w, 32);
|
||||
}
|
||||
|
||||
nir_def *
|
||||
|
|
@ -865,6 +903,18 @@ nir_isub_imm(nir_builder *build, uint64_t y, nir_def *x)
|
|||
return nir_isub(build, nir_imm_intN_t(build, y, x->bit_size), x);
|
||||
}
|
||||
|
||||
static inline nir_def *
|
||||
nir_imax_imm(nir_builder *build, nir_def *x, int64_t y)
|
||||
{
|
||||
return nir_imax(build, x, nir_imm_intN_t(build, y, x->bit_size));
|
||||
}
|
||||
|
||||
static inline nir_def *
|
||||
nir_imin_imm(nir_builder *build, nir_def *x, int64_t y)
|
||||
{
|
||||
return nir_imin(build, x, nir_imm_intN_t(build, y, x->bit_size));
|
||||
}
|
||||
|
||||
static inline nir_def *
|
||||
_nir_mul_imm(nir_builder *build, nir_def *x, uint64_t y, bool amul)
|
||||
{
|
||||
|
|
@ -922,6 +972,12 @@ nir_fdiv_imm(nir_builder *build, nir_def *x, double y)
|
|||
return nir_fdiv(build, x, nir_imm_floatN_t(build, y, x->bit_size));
|
||||
}
|
||||
|
||||
static inline nir_def *
|
||||
nir_fpow_imm(nir_builder *build, nir_def *x, double y)
|
||||
{
|
||||
return nir_fpow(build, x, nir_imm_floatN_t(build, y, x->bit_size));
|
||||
}
|
||||
|
||||
static inline nir_def *
|
||||
nir_iand_imm(nir_builder *build, nir_def *x, uint64_t y)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue