From 52f7c2c5311b5a43cc6fd499f36b4c325ee59aa7 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Wed, 1 Jan 2020 15:18:47 +0100 Subject: [PATCH] Log transform: further speedup --- rtengine/iptransform.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/rtengine/iptransform.cc b/rtengine/iptransform.cc index 8d89b96cc..caa5b7e4e 100644 --- a/rtengine/iptransform.cc +++ b/rtengine/iptransform.cc @@ -155,9 +155,11 @@ inline void interpolateTransformCubicLog(rtengine::Imagefloat* src, int xs, int const float t1Hor = A * (Dx - Dx * Dx); const float t2Hor = (3.f - 2.f * Dx) * Dx * Dx; const vfloat weight = _mm_set_ps(t1Hor * Dx, t1Hor * Dx - t1Hor + t2Hor, 1.f - (t1Hor * Dx) - t2Hor, t1Hor - (t1Hor * Dx)); - r = mul * xexpf(vhadd(weight * rv)); - g = mul * xexpf(vhadd(weight * gv)); - b = mul * xexpf(vhadd(weight * bv)); + const vfloat tempv = _mm_setr_ps(vhadd(weight * rv), vhadd(weight * gv), vhadd(weight * bv), 0.f); + const vfloat resultv = xexpf(tempv); + r = mul * resultv[0]; + g = mul * resultv[1]; + b = mul * resultv[2]; } #else inline void interpolateTransformCubic(rtengine::Imagefloat* src, int xs, int ys, float Dx, float Dy, float &r, float &g, float &b, float mul)