Fix promotion of floats to doubles

Use the f variants of the math functions if the input parameter is a
float, saves converting from float to double and running the double
variant of the math function for gaining no precision at all

Reviewed-by: Matt Turner <mattst88@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3969>
This commit is contained in:
Albert Astals Cid
2020-02-26 23:05:51 +01:00
committed by Albert Astals Cid
parent 94cb129d51
commit 06c5875fd6
12 changed files with 34 additions and 34 deletions

View File

@@ -700,8 +700,8 @@ radv_convert_user_sample_locs(struct radv_sample_locations_state *state,
float shifted_pos_x = user_locs[i].x - 0.5;
float shifted_pos_y = user_locs[i].y - 0.5;
int32_t scaled_pos_x = floor(shifted_pos_x * 16);
int32_t scaled_pos_y = floor(shifted_pos_y * 16);
int32_t scaled_pos_x = floorf(shifted_pos_x * 16);
int32_t scaled_pos_y = floorf(shifted_pos_y * 16);
sample_locs[i].x = CLAMP(scaled_pos_x, -8, 7);
sample_locs[i].y = CLAMP(scaled_pos_y, -8, 7);

View File

@@ -988,7 +988,7 @@ static uint8_t radv_pipeline_get_ps_iter_samples(const VkGraphicsPipelineCreateI
}
if (vkms->sampleShadingEnable) {
ps_iter_samples = ceil(vkms->minSampleShading * num_samples);
ps_iter_samples = ceilf(vkms->minSampleShading * num_samples);
ps_iter_samples = util_next_power_of_two(ps_iter_samples);
}
return ps_iter_samples;

View File

@@ -595,10 +595,10 @@ static VkRect2D si_scissor_from_viewport(const VkViewport *viewport)
get_viewport_xform(viewport, scale, translate);
rect.offset.x = translate[0] - fabs(scale[0]);
rect.offset.y = translate[1] - fabs(scale[1]);
rect.extent.width = ceilf(translate[0] + fabs(scale[0])) - rect.offset.x;
rect.extent.height = ceilf(translate[1] + fabs(scale[1])) - rect.offset.y;
rect.offset.x = translate[0] - fabsf(scale[0]);
rect.offset.y = translate[1] - fabsf(scale[1]);
rect.extent.width = ceilf(translate[0] + fabsf(scale[0])) - rect.offset.x;
rect.extent.height = ceilf(translate[1] + fabsf(scale[1])) - rect.offset.y;
return rect;
}

View File

@@ -361,10 +361,10 @@ try_setup_line( struct lp_setup_context *setup,
if (fabsf(dx) >= fabsf(dy)) {
float dydx = dy / dx;
x1diff = v1[0][0] - (float) floor(v1[0][0]) - 0.5;
y1diff = v1[0][1] - (float) floor(v1[0][1]) - 0.5;
x2diff = v2[0][0] - (float) floor(v2[0][0]) - 0.5;
y2diff = v2[0][1] - (float) floor(v2[0][1]) - 0.5;
x1diff = v1[0][0] - floorf(v1[0][0]) - 0.5f;
y1diff = v1[0][1] - floorf(v1[0][1]) - 0.5f;
x2diff = v2[0][0] - floorf(v2[0][0]) - 0.5f;
y2diff = v2[0][1] - floorf(v2[0][1]) - 0.5f;
if (y2diff==-0.5 && dy<0){
y2diff = 0.5;
@@ -459,10 +459,10 @@ try_setup_line( struct lp_setup_context *setup,
const float dxdy = dx / dy;
/* Y-MAJOR LINE */
x1diff = v1[0][0] - (float) floor(v1[0][0]) - 0.5;
y1diff = v1[0][1] - (float) floor(v1[0][1]) - 0.5;
x2diff = v2[0][0] - (float) floor(v2[0][0]) - 0.5;
y2diff = v2[0][1] - (float) floor(v2[0][1]) - 0.5;
x1diff = v1[0][0] - floorf(v1[0][0]) - 0.5f;
y1diff = v1[0][1] - floorf(v1[0][1]) - 0.5f;
x2diff = v2[0][0] - floorf(v2[0][0]) - 0.5f;
y2diff = v2[0][1] - floorf(v2[0][1]) - 0.5f;
if (x2diff==-0.5 && dx<0) {
x2diff = 0.5;

View File

@@ -326,7 +326,7 @@ void expr_handler::apply_alu_src_mod(const bc_alu &bc, unsigned src,
const bc_alu_src &s = bc.src[src];
if (s.abs)
v = fabs(v.f);
v = fabsf(v.f);
if (s.neg)
v = -v.f;
}
@@ -424,21 +424,21 @@ bool expr_handler::fold_alu_op1(alu_node& n) {
apply_alu_src_mod(n.bc, 0, cv);
switch (n.bc.op) {
case ALU_OP1_CEIL: dv = ceil(cv.f); break;
case ALU_OP1_CEIL: dv = ceilf(cv.f); break;
case ALU_OP1_COS: dv = cos(cv.f * 2.0f * M_PI); break;
case ALU_OP1_EXP_IEEE: dv = exp2(cv.f); break;
case ALU_OP1_FLOOR: dv = floor(cv.f); break;
case ALU_OP1_EXP_IEEE: dv = exp2f(cv.f); break;
case ALU_OP1_FLOOR: dv = floorf(cv.f); break;
case ALU_OP1_FLT_TO_INT: dv = (int)cv.f; break; // FIXME: round modes ????
case ALU_OP1_FLT_TO_INT_FLOOR: dv = (int32_t)floor(cv.f); break;
case ALU_OP1_FLT_TO_INT_RPI: dv = (int32_t)floor(cv.f + 0.5f); break;
case ALU_OP1_FLT_TO_INT_TRUNC: dv = (int32_t)trunc(cv.f); break;
case ALU_OP1_FLT_TO_INT_FLOOR: dv = (int32_t)floorf(cv.f); break;
case ALU_OP1_FLT_TO_INT_RPI: dv = (int32_t)floorf(cv.f + 0.5f); break;
case ALU_OP1_FLT_TO_INT_TRUNC: dv = (int32_t)truncf(cv.f); break;
case ALU_OP1_FLT_TO_UINT: dv = (uint32_t)cv.f; break;
case ALU_OP1_FRACT: dv = cv.f - floor(cv.f); break;
case ALU_OP1_FRACT: dv = cv.f - floorf(cv.f); break;
case ALU_OP1_INT_TO_FLT: dv = (float)cv.i; break;
case ALU_OP1_LOG_CLAMPED:
case ALU_OP1_LOG_IEEE:
if (cv.f != 0.0f)
dv = log2(cv.f);
dv = log2f(cv.f);
else
// don't fold to NAN, let the GPU handle it for now
// (prevents degenerate LIT tests from failing)
@@ -454,7 +454,7 @@ bool expr_handler::fold_alu_op1(alu_node& n) {
case ALU_OP1_PRED_SET_RESTORE: dv = cv; break;
case ALU_OP1_RECIPSQRT_CLAMPED:
case ALU_OP1_RECIPSQRT_FF:
case ALU_OP1_RECIPSQRT_IEEE: dv = 1.0f / sqrt(cv.f); break;
case ALU_OP1_RECIPSQRT_IEEE: dv = 1.0f / sqrtf(cv.f); break;
case ALU_OP1_RECIP_CLAMPED:
case ALU_OP1_RECIP_FF:
case ALU_OP1_RECIP_IEEE: dv = 1.0f / cv.f; break;
@@ -462,8 +462,8 @@ bool expr_handler::fold_alu_op1(alu_node& n) {
case ALU_OP1_RECIP_UINT: dv.u = (1ull << 32) / cv.u; break;
// case ALU_OP1_RNDNE: dv = floor(cv.f + 0.5f); break;
case ALU_OP1_SIN: dv = sin(cv.f * 2.0f * M_PI); break;
case ALU_OP1_SQRT_IEEE: dv = sqrt(cv.f); break;
case ALU_OP1_TRUNC: dv = trunc(cv.f); break;
case ALU_OP1_SQRT_IEEE: dv = sqrtf(cv.f); break;
case ALU_OP1_TRUNC: dv = truncf(cv.f); break;
default:
return false;

View File

@@ -2320,7 +2320,7 @@ create_filter_table(void)
for (i = 0; i < WEIGHT_LUT_SIZE; ++i) {
const float alpha = 2;
const float r2 = (float) i / (float) (WEIGHT_LUT_SIZE - 1);
const float weight = (float) exp(-alpha * r2);
const float weight = (float) expf(-alpha * r2);
lut[i] = weight;
}
weightLut = lut;

View File

@@ -34,7 +34,7 @@
#include "util/u_sampler.h"
#include "util/u_draw_quad.h"
#define floatsEqual(x, y) (fabs(x - y) <= 0.00001f * MIN2(fabs(x), fabs(y)))
#define floatsEqual(x, y) (fabsf(x - y) <= 0.00001f * MIN2(fabsf(x), fabsf(y)))
#define floatIsZero(x) (floatsEqual((x) + 1, 1))
#define NUM_COMPONENTS 4

View File

@@ -245,7 +245,7 @@ gen_diff_l3_weights(struct gen_l3_weights w0, struct gen_l3_weights w1)
float dw = 0;
for (unsigned i = 0; i < GEN_NUM_L3P; i++)
dw += fabs(w0.w[i] - w1.w[i]);
dw += fabsf(w0.w[i] - w1.w[i]);
return dw;
}

View File

@@ -244,7 +244,7 @@ nv10_get_spot_coeff(struct gl_light *l, float k[7])
float a0, b0, a1, a2, b2, a3;
if (e > 0)
a0 = -1 - 5.36e-3 / sqrt(e);
a0 = -1 - 5.36e-3 / sqrtf(e);
else
a0 = -1;
b0 = 1 / (1 + 0.273 * e);

View File

@@ -539,7 +539,7 @@ _mesa_get_min_invocations_per_fragment(struct gl_context *ctx,
SYSTEM_BIT_SAMPLE_POS)))
return MAX2(_mesa_geometric_samples(ctx->DrawBuffer), 1);
else if (ctx->Multisample.SampleShading)
return MAX2(ceil(ctx->Multisample.MinSampleShadingValue *
return MAX2(ceilf(ctx->Multisample.MinSampleShadingValue *
_mesa_geometric_samples(ctx->DrawBuffer)), 1);
else
return 1;

View File

@@ -479,7 +479,7 @@ accum_bitmap(struct gl_context *ctx,
if (px < 0 || px + width > BITMAP_CACHE_WIDTH ||
py < 0 || py + height > BITMAP_CACHE_HEIGHT ||
!TEST_EQ_4V(ctx->Current.RasterColor, cache->color) ||
((fabs(z - cache->zpos) > Z_EPSILON))) {
((fabsf(z - cache->zpos) > Z_EPSILON))) {
/* This bitmap would extend beyond cache bounds, or the bitmap
* color is changing
* so flush and continue.

View File

@@ -1628,7 +1628,7 @@ create_filter_table(void)
for (i = 0; i < WEIGHT_LUT_SIZE; ++i) {
GLfloat alpha = 2;
GLfloat r2 = (GLfloat) i / (GLfloat) (WEIGHT_LUT_SIZE - 1);
GLfloat weight = (GLfloat) exp(-alpha * r2);
GLfloat weight = expf(-alpha * r2);
weightLut[i] = weight;
}
}