Author: post
Date: 2012-11-07 18:59:24 +0100 (Wed, 07 Nov 2012)
New Revision: 4307
Modified:
trunk/plugins/dcp/dcp-avx.c
trunk/plugins/dcp/dcp-sse2.c
trunk/plugins/dcp/dcp-sse4.c
Log:
Utilize the amazing fact that sqrt(x) = x * (1 / sqrt(x))
Modified: trunk/plugins/dcp/dcp-avx.c
===================================================================
--- trunk/plugins/dcp/dcp-avx.c 2012-10-29 18:28:05 UTC (rev 4306)
+++ trunk/plugins/dcp/dcp-avx.c 2012-11-07 17:59:24 UTC (rev 4307)
@@ -818,9 +818,9 @@
r = _mm_max_ps(r, min_val);
g = _mm_max_ps(g, min_val);
b = _mm_max_ps(b, min_val);
- r = _mm_add_ps(_mm_mul_ps(contrast,
_mm_sub_ps(_mm_rcp_ps(_mm_rsqrt_ps(r)), contr_base)), contr_base);
- g = _mm_add_ps(_mm_mul_ps(contrast,
_mm_sub_ps(_mm_rcp_ps(_mm_rsqrt_ps(g)), contr_base)), contr_base);
- b = _mm_add_ps(_mm_mul_ps(contrast,
_mm_sub_ps(_mm_rcp_ps(_mm_rsqrt_ps(b)), contr_base)), contr_base);
+ r = _mm_add_ps(_mm_mul_ps(contrast,
_mm_sub_ps(_mm_mul_ps(r, _mm_rsqrt_ps(r)), contr_base)), contr_base);
+ g = _mm_add_ps(_mm_mul_ps(contrast,
_mm_sub_ps(_mm_mul_ps(g, _mm_rsqrt_ps(g)), contr_base)), contr_base);
+ b = _mm_add_ps(_mm_mul_ps(contrast,
_mm_sub_ps(_mm_mul_ps(b, _mm_rsqrt_ps(b)), contr_base)), contr_base);
r = _mm_max_ps(r, min_val);
g = _mm_max_ps(g, min_val);
b = _mm_max_ps(b, min_val);
Modified: trunk/plugins/dcp/dcp-sse2.c
===================================================================
--- trunk/plugins/dcp/dcp-sse2.c 2012-10-29 18:28:05 UTC (rev 4306)
+++ trunk/plugins/dcp/dcp-sse2.c 2012-11-07 17:59:24 UTC (rev 4307)
@@ -863,9 +863,9 @@
r = _mm_max_ps(r, min_val);
g = _mm_max_ps(g, min_val);
b = _mm_max_ps(b, min_val);
- r = _mm_add_ps(_mm_mul_ps(contrast,
_mm_sub_ps(_mm_rcp_ps(_mm_rsqrt_ps(r)), contr_base)), contr_base);
- g = _mm_add_ps(_mm_mul_ps(contrast,
_mm_sub_ps(_mm_rcp_ps(_mm_rsqrt_ps(g)), contr_base)), contr_base);
- b = _mm_add_ps(_mm_mul_ps(contrast,
_mm_sub_ps(_mm_rcp_ps(_mm_rsqrt_ps(b)), contr_base)), contr_base);
+ r = _mm_add_ps(_mm_mul_ps(contrast,
_mm_sub_ps(_mm_mul_ps(r,_mm_rsqrt_ps(r)), contr_base)), contr_base);
+ g = _mm_add_ps(_mm_mul_ps(contrast,
_mm_sub_ps(_mm_mul_ps(g,_mm_rsqrt_ps(g)), contr_base)), contr_base);
+ b = _mm_add_ps(_mm_mul_ps(contrast,
_mm_sub_ps(_mm_mul_ps(b,_mm_rsqrt_ps(b)), contr_base)), contr_base);
r = _mm_max_ps(r, min_val);
g = _mm_max_ps(g, min_val);
b = _mm_max_ps(b, min_val);
Modified: trunk/plugins/dcp/dcp-sse4.c
===================================================================
--- trunk/plugins/dcp/dcp-sse4.c 2012-10-29 18:28:05 UTC (rev 4306)
+++ trunk/plugins/dcp/dcp-sse4.c 2012-11-07 17:59:24 UTC (rev 4307)
@@ -536,9 +536,9 @@
r = _mm_max_ps(r, min_val);
g = _mm_max_ps(g, min_val);
b = _mm_max_ps(b, min_val);
- r = _mm_add_ps(_mm_mul_ps(contrast,
_mm_sub_ps(_mm_rcp_ps(_mm_rsqrt_ps(r)), contr_base)), contr_base);
- g = _mm_add_ps(_mm_mul_ps(contrast,
_mm_sub_ps(_mm_rcp_ps(_mm_rsqrt_ps(g)), contr_base)), contr_base);
- b = _mm_add_ps(_mm_mul_ps(contrast,
_mm_sub_ps(_mm_rcp_ps(_mm_rsqrt_ps(b)), contr_base)), contr_base);
+ r = _mm_add_ps(_mm_mul_ps(contrast,
_mm_sub_ps(_mm_mul_ps(r,_mm_rsqrt_ps(r)), contr_base)), contr_base);
+ g = _mm_add_ps(_mm_mul_ps(contrast,
_mm_sub_ps(_mm_mul_ps(g,_mm_rsqrt_ps(g)), contr_base)), contr_base);
+ b = _mm_add_ps(_mm_mul_ps(contrast,
_mm_sub_ps(_mm_mul_ps(b,_mm_rsqrt_ps(b)), contr_base)), contr_base);
r = _mm_max_ps(r, min_val);
g = _mm_max_ps(g, min_val);
b = _mm_max_ps(b, min_val);
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit