Module: Mesa
Branch: master
Commit: 09bca4cb957e33811c82d3bf5b41527ae7122f22
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=09bca4cb957e33811c82d3bf5b41527ae7122f22

Author: Jesse Natalie <[email protected]>
Date:   Tue Aug 18 07:58:20 2020 -0700

vtn/opencl: Switch some nir-sequence ops to use libclc

All of these are pretty well-defined. Rather than implementing them
as a sequence of nir ops, we can just use the libclc implementation.

v2 (idr): Delete functions that are now unused.

Acked-by: Jason Ekstrand <[email protected]>
Reviewed-by: Dave Airlie <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6035>

---

 src/compiler/nir/nir_builtin_builder.c | 32 --------------------------------
 src/compiler/nir/nir_builtin_builder.h |  8 --------
 src/compiler/spirv/vtn_opencl.c        | 20 --------------------
 3 files changed, 60 deletions(-)

diff --git a/src/compiler/nir/nir_builtin_builder.c 
b/src/compiler/nir/nir_builtin_builder.c
index 690fa98da25..f78eae7c0bf 100644
--- a/src/compiler/nir/nir_builtin_builder.c
+++ b/src/compiler/nir/nir_builtin_builder.c
@@ -51,21 +51,6 @@ nir_cross4(nir_builder *b, nir_ssa_def *x, nir_ssa_def *y)
       nir_imm_intN_t(b, 0, cross->bit_size));
 }
 
-nir_ssa_def*
-nir_length(nir_builder *b, nir_ssa_def *vec)
-{
-   nir_ssa_def *finf = nir_imm_floatN_t(b, INFINITY, vec->bit_size);
-
-   nir_ssa_def *abs = nir_fabs(b, vec);
-   if (vec->num_components == 1)
-      return abs;
-
-   nir_ssa_def *maxc = nir_fmax_abs_vec_comp(b, abs);
-   abs = nir_fdiv(b, abs, maxc);
-   nir_ssa_def *res = nir_fmul(b, nir_fsqrt(b, nir_fdot(b, abs, abs)), maxc);
-   return nir_bcsel(b, nir_feq(b, maxc, finf), maxc, res);
-}
-
 nir_ssa_def*
 nir_fast_length(nir_builder *b, nir_ssa_def *vec)
 {
@@ -130,23 +115,6 @@ nir_normalize(nir_builder *b, nir_ssa_def *vec)
    return nir_bcsel(b, nir_feq(b, maxc, f0), vec, res);
 }
 
-nir_ssa_def*
-nir_rotate(nir_builder *b, nir_ssa_def *x, nir_ssa_def *y)
-{
-   nir_ssa_def *shift_mask = nir_imm_int(b, x->bit_size - 1);
-
-   if (y->bit_size != 32)
-      y = nir_u2u32(b, y);
-
-   nir_ssa_def *lshift = nir_iand(b, y, shift_mask);
-   nir_ssa_def *rshift = nir_isub(b, nir_imm_int(b, x->bit_size), lshift);
-
-   nir_ssa_def *hi = nir_ishl(b, x, lshift);
-   nir_ssa_def *lo = nir_ushr(b, x, rshift);
-
-   return nir_ior(b, hi, lo);
-}
-
 nir_ssa_def*
 nir_smoothstep(nir_builder *b, nir_ssa_def *edge0, nir_ssa_def *edge1, 
nir_ssa_def *x)
 {
diff --git a/src/compiler/nir/nir_builtin_builder.h 
b/src/compiler/nir/nir_builtin_builder.h
index a7f8fab2736..50f48d5f524 100644
--- a/src/compiler/nir/nir_builtin_builder.h
+++ b/src/compiler/nir/nir_builtin_builder.h
@@ -38,11 +38,9 @@ extern "C" {
 
 nir_ssa_def* nir_cross3(nir_builder *b, nir_ssa_def *x, nir_ssa_def *y);
 nir_ssa_def* nir_cross4(nir_builder *b, nir_ssa_def *x, nir_ssa_def *y);
-nir_ssa_def* nir_length(nir_builder *b, nir_ssa_def *vec);
 nir_ssa_def* nir_fast_length(nir_builder *b, nir_ssa_def *vec);
 nir_ssa_def* nir_nextafter(nir_builder *b, nir_ssa_def *x, nir_ssa_def *y);
 nir_ssa_def* nir_normalize(nir_builder *b, nir_ssa_def *vec);
-nir_ssa_def* nir_rotate(nir_builder *b, nir_ssa_def *x, nir_ssa_def *y);
 nir_ssa_def* nir_smoothstep(nir_builder *b, nir_ssa_def *edge0,
                             nir_ssa_def *edge1, nir_ssa_def *x);
 nir_ssa_def* nir_upsample(nir_builder *b, nir_ssa_def *hi, nir_ssa_def *lo);
@@ -177,12 +175,6 @@ nir_fdim(nir_builder *b, nir_ssa_def *x, nir_ssa_def *y)
    return nir_nan_check2(b, x, y, nir_bcsel(b, cond, res, zero));
 }
 
-static inline nir_ssa_def *
-nir_distance(nir_builder *b, nir_ssa_def *x, nir_ssa_def *y)
-{
-   return nir_length(b, nir_fsub(b, x, y));
-}
-
 static inline nir_ssa_def *
 nir_fast_distance(nir_builder *b, nir_ssa_def *x, nir_ssa_def *y)
 {
diff --git a/src/compiler/spirv/vtn_opencl.c b/src/compiler/spirv/vtn_opencl.c
index 86a33ac8d64..f76238ee526 100644
--- a/src/compiler/spirv/vtn_opencl.c
+++ b/src/compiler/spirv/vtn_opencl.c
@@ -514,20 +514,8 @@ handle_special(struct vtn_builder *b, uint32_t opcode,
       if (dest_type->length == 4)
          return nir_cross4(nb, srcs[0], srcs[1]);
       return nir_cross3(nb, srcs[0], srcs[1]);
-   case OpenCLstd_Degrees:
-      return nir_degrees(nb, srcs[0]);
    case OpenCLstd_Fdim:
       return nir_fdim(nb, srcs[0], srcs[1]);
-   case OpenCLstd_Distance:
-      return nir_distance(nb, srcs[0], srcs[1]);
-   case OpenCLstd_Fast_distance:
-      return nir_fast_distance(nb, srcs[0], srcs[1]);
-   case OpenCLstd_Fast_length:
-      return nir_fast_length(nb, srcs[0]);
-   case OpenCLstd_Fast_normalize:
-      return nir_fast_normalize(nb, srcs[0]);
-   case OpenCLstd_Length:
-      return nir_length(nb, srcs[0]);
    case OpenCLstd_Fmod:
       if (nb->shader->options->lower_fmod)
          break;
@@ -544,18 +532,10 @@ handle_special(struct vtn_builder *b, uint32_t opcode,
       return nir_nextafter(nb, srcs[0], srcs[1]);
    case OpenCLstd_Normalize:
       return nir_normalize(nb, srcs[0]);
-   case OpenCLstd_Radians:
-      return nir_radians(nb, srcs[0]);
-   case OpenCLstd_Rotate:
-      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:
-      return nir_sge(nb, srcs[1], srcs[0]);
    case OpenCLstd_S_Upsample:
    case OpenCLstd_U_Upsample:
       /* SPIR-V and CL have different defs for upsample, just implement in nir 
*/

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to