From: Ian Romanick Date: Wed, 24 Nov 2010 22:03:57 +0000 (-0800) Subject: glsl: Use M_LOG2E constant instead of calling log2 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=da61afa7388f1ce50ef612b89aba2302a052a3bb;p=mesa.git glsl: Use M_LOG2E constant instead of calling log2 --- diff --git a/src/glsl/lower_instructions.cpp b/src/glsl/lower_instructions.cpp index d460ba1a97a..0d9374d73bd 100644 --- a/src/glsl/lower_instructions.cpp +++ b/src/glsl/lower_instructions.cpp @@ -70,7 +70,7 @@ * opportunity to do things like constant fold the (1.0 / op1) easily. */ -#include "main/core.h" /* for M_E */ +#include "main/core.h" /* for M_LOG2E */ #include "glsl_types.h" #include "ir.h" #include "ir_optimization.h" @@ -172,7 +172,7 @@ lower_instructions_visitor::div_to_mul_rcp(ir_expression *ir) void lower_instructions_visitor::exp_to_exp2(ir_expression *ir) { - ir_constant *log2_e = new(ir) ir_constant(log2f(M_E)); + ir_constant *log2_e = new(ir) ir_constant(float(M_LOG2E)); ir->operation = ir_unop_exp2; ir->operands[0] = new(ir) ir_expression(ir_binop_mul, ir->operands[0]->type, @@ -186,7 +186,7 @@ lower_instructions_visitor::log_to_log2(ir_expression *ir) ir->operation = ir_binop_mul; ir->operands[0] = new(ir) ir_expression(ir_unop_log2, ir->operands[0]->type, ir->operands[0], NULL); - ir->operands[1] = new(ir) ir_constant(1.0f / log2f(M_E)); + ir->operands[1] = new(ir) ir_constant(float(1.0 / M_LOG2E)); this->progress = true; } diff --git a/src/mesa/main/compiler.h b/src/mesa/main/compiler.h index 800eb839005..5557a3b5cb5 100644 --- a/src/mesa/main/compiler.h +++ b/src/mesa/main/compiler.h @@ -358,6 +358,10 @@ static INLINE GLuint CPU_TO_LE32(GLuint x) #define M_E (2.7182818284590452354) #endif +#ifndef M_LOG2E +#define M_LOG2E (1.4426950408889634074) +#endif + #ifndef ONE_DIV_LN2 #define ONE_DIV_LN2 (1.442695040888963456) #endif