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 <jason@jlekstrand.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6035>
This commit is contained in:
Jesse Natalie
2020-08-18 07:58:20 -07:00
parent 03fd217d21
commit 09bca4cb95
3 changed files with 0 additions and 60 deletions

View File

@@ -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)
{

View File

@@ -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)
{

View File

@@ -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 */