vtn/opencl: add native exp10/log10-support
[mesa.git] / 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: