vtn/opencl: add native exp10/log10-support
authorErik Faye-Lund <erik.faye-lund@collabora.com>
Fri, 13 Mar 2020 11:36:19 +0000 (12:36 +0100)
committerMarge Bot <eric+marge@anholt.net>
Thu, 26 Mar 2020 10:14:22 +0000 (10:14 +0000)
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4318>

src/compiler/spirv/vtn_opencl.c

index 5eeaed4c3b4eb9b08ae33e2b985470740a242db7..b696241209d22a97cc7423e041d3326f0ea47ed2 100644 (file)
@@ -195,8 +195,12 @@ handle_special(struct vtn_builder *b, enum OpenCLstd_Entrypoints opcode,
       return nir_upsample(nb, srcs[0], srcs[1]);
    case OpenCLstd_Native_exp:
       return nir_fexp(nb, srcs[0]);
+   case OpenCLstd_Native_exp10:
+      return nir_fexp2(nb, nir_fmul_imm(nb, srcs[0], log(10) / log(2)));
    case OpenCLstd_Native_log:
       return nir_flog(nb, srcs[0]);
+   case OpenCLstd_Native_log10:
+      return nir_fmul_imm(nb, nir_flog2(nb, srcs[0]), log(2) / log(10));
    default:
       vtn_fail("No NIR equivalent");
       return NULL;
@@ -396,7 +400,9 @@ vtn_handle_opencl_instruction(struct vtn_builder *b, SpvOp ext_opcode,
    case OpenCLstd_U_Upsample:
    case OpenCLstd_Clz:
    case OpenCLstd_Native_exp:
+   case OpenCLstd_Native_exp10:
    case OpenCLstd_Native_log:
+   case OpenCLstd_Native_log10:
       handle_instr(b, cl_opcode, w, count, handle_special);
       return true;
    case OpenCLstd_Vloadn: