This is needed for OpenCL Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>master
| return nir_bcsel(b, nir_ieq(b, s, nir_imm_intN_t(b, 0, s->bit_size)), x, y); | 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 | #ifdef __cplusplus | ||||
| } | } | ||||
| #endif | #endif |
| return nir_rotate(nb, srcs[0], srcs[1]); | return nir_rotate(nb, srcs[0], srcs[1]); | ||||
| case OpenCLstd_Smoothstep: | case OpenCLstd_Smoothstep: | ||||
| return nir_smoothstep(nb, srcs[0], srcs[1], srcs[2]); | return nir_smoothstep(nb, srcs[0], srcs[1], srcs[2]); | ||||
| case OpenCLstd_Clz: | |||||
| return nir_clz_u(nb, srcs[0]); | |||||
| case OpenCLstd_Select: | case OpenCLstd_Select: | ||||
| return nir_select(nb, srcs[0], srcs[1], srcs[2]); | return nir_select(nb, srcs[0], srcs[1], srcs[2]); | ||||
| case OpenCLstd_Step: | case OpenCLstd_Step: |