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
