static inline nir_ssa_def *
nir_nan_check2(nir_builder *b, nir_ssa_def *x, nir_ssa_def *y, nir_ssa_def *res)
{
- return nir_bcsel(b, nir_fne(b, x, x), x, nir_bcsel(b, nir_fne(b, y, y), y, res));
+ return nir_bcsel(b, nir_fneu(b, x, x), x, nir_bcsel(b, nir_fneu(b, y, y), y, res));
}
static inline nir_ssa_def *
}
static inline nir_ssa_def *
-nir_umul24(nir_builder *b, nir_ssa_def *x, nir_ssa_def *y)
+nir_flog(nir_builder *b, nir_ssa_def *x)
{
- nir_ssa_def *mask = nir_imm_int(b, 0xffffff);
- nir_ssa_def *x_24 = nir_iand(b, x, mask);
- nir_ssa_def *y_24 = nir_iand(b, y, mask);
- return nir_imul(b, x_24, y_24);
-}
-
-static inline nir_ssa_def *
-nir_umad24(nir_builder *b, nir_ssa_def *x, nir_ssa_def *y, nir_ssa_def *z)
-{
- nir_ssa_def *temp = nir_umul24(b, x, y);
- return nir_iadd(b, temp, z);
+ return nir_fmul_imm(b, nir_flog2(b, x), 1.0 / M_LOG2E);
}
static inline nir_ssa_def *
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_ftan(nir_builder *b, nir_ssa_def *x)
+{
+ return nir_fdiv(b, nir_fsin(b, x), nir_fcos(b, x));
+}
+
static inline nir_ssa_def *
nir_clz_u(nir_builder *b, nir_ssa_def *a)
{