From 0f801752f22dacfd070c82b6a30da62ce317870c Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Tue, 29 Dec 2015 15:15:05 -0800 Subject: [PATCH] nir/spirv/glsl450: Add helpers for calculating exp() and log(). --- src/glsl/nir/spirv/vtn_glsl450.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/glsl/nir/spirv/vtn_glsl450.c b/src/glsl/nir/spirv/vtn_glsl450.c index 575580e5997..d4cb1bb9f3c 100644 --- a/src/glsl/nir/spirv/vtn_glsl450.c +++ b/src/glsl/nir/spirv/vtn_glsl450.c @@ -41,6 +41,25 @@ build_length(nir_builder *b, nir_ssa_def *vec) } } +/** + * Return e^x. + */ +static nir_ssa_def * +build_exp(nir_builder *b, nir_ssa_def *x) +{ + return nir_fexp2(b, nir_fmul(b, x, nir_imm_float(b, M_LOG2E))); +} + +/** + * Return ln(x) - the natural logarithm of x. + */ +static nir_ssa_def * +build_log(nir_builder *b, nir_ssa_def *x) +{ + return nir_fmul(b, nir_flog2(b, x), nir_imm_float(b, 1.0 / M_LOG2E)); +} + + static void handle_glsl450_alu(struct vtn_builder *b, enum GLSLstd450 entrypoint, const uint32_t *w, unsigned count) -- 2.30.2