nir: save IO semantics in lowered IO intrinsics
[mesa.git] / src / compiler / nir / nir_builtin_builder.h
index 6a804219b611819c80b297fb30b23496b4aa9a2d..a7f8fab273602a9bb12239abac166608af8cebbd 100644 (file)
@@ -58,7 +58,7 @@ nir_get_texture_size(nir_builder *b, nir_tex_instr *tex);
 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 *
@@ -95,19 +95,9 @@ nir_fexp(nir_builder *b, nir_ssa_def *x)
 }
 
 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 *
@@ -265,6 +255,12 @@ 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_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)
 {