mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 02:30:12 +01:00
vtn/opencl: add clz support
This is needed for OpenCL Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
e3b21dfcb1
commit
7325f6ac98
2 changed files with 10 additions and 0 deletions
|
|
@ -253,6 +253,14 @@ nir_select(nir_builder *b, nir_ssa_def *x, nir_ssa_def *y, nir_ssa_def *s)
|
|||
return nir_bcsel(b, nir_ieq(b, s, nir_imm_intN_t(b, 0, s->bit_size)), x, y);
|
||||
}
|
||||
|
||||
static inline nir_ssa_def *
|
||||
nir_clz_u(nir_builder *b, nir_ssa_def *a)
|
||||
{
|
||||
nir_ssa_def *val;
|
||||
val = nir_isub(b, nir_imm_intN_t(b, a->bit_size - 1, 32), nir_ufind_msb(b, a));
|
||||
return nir_u2u(b, val, a->bit_size);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -185,6 +185,8 @@ handle_special(struct vtn_builder *b, enum OpenCLstd_Entrypoints opcode,
|
|||
return nir_rotate(nb, srcs[0], srcs[1]);
|
||||
case OpenCLstd_Smoothstep:
|
||||
return nir_smoothstep(nb, srcs[0], srcs[1], srcs[2]);
|
||||
case OpenCLstd_Clz:
|
||||
return nir_clz_u(nb, srcs[0]);
|
||||
case OpenCLstd_Select:
|
||||
return nir_select(nb, srcs[0], srcs[1], srcs[2]);
|
||||
case OpenCLstd_Step:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue