Author: post
Date: 2012-01-22 15:16:03 +0100 (Sun, 22 Jan 2012)
New Revision: 4106
Modified:
trunk/plugins/dcp/dcp-sse4.c
Log:
Use same code as SSE2 in initial part of SSE4 DCP.
Modified: trunk/plugins/dcp/dcp-sse4.c
===================================================================
--- trunk/plugins/dcp/dcp-sse4.c 2012-01-22 14:15:14 UTC (rev 4105)
+++ trunk/plugins/dcp/dcp-sse4.c 2012-01-22 14:16:03 UTC (rev 4106)
@@ -371,9 +371,6 @@
SETFLOAT4_SAME(_exposure_slope, dcp->exposure_slope);
SETFLOAT4_SAME(_exposure_qscale, dcp->exposure_qscale);
SETFLOAT4_SAME(_contrast, dcp->contrast);
- SETFLOAT4_SAME(_cm_r, dcp->channelmixer_red);
- SETFLOAT4_SAME(_cm_g, dcp->channelmixer_green);
- SETFLOAT4_SAME(_cm_b, dcp->channelmixer_blue);
float cam_prof[4*4*3] __attribute__ ((aligned (16)));
for (x = 0; x < 4; x++ ) {
@@ -424,40 +421,25 @@
p2f = _mm_min_ps(p2f, min_cam);
p3f = _mm_min_ps(p3f, min_cam);
p4f = _mm_min_ps(p4f, min_cam);
+ }
- /* Convert to planar */
- __m128 g1g0r1r0 = _mm_unpacklo_ps(p1f, p2f);
- __m128 b1b0 = _mm_unpackhi_ps(p1f, p2f);
- __m128 g3g2r3r2 = _mm_unpacklo_ps(p3f, p4f);
- __m128 b3b2 = _mm_unpackhi_ps(p3f, p4f);
- r = _mm_movelh_ps(g1g0r1r0, g3g2r3r2);
- g = _mm_movehl_ps(g3g2r3r2, g1g0r1r0);
- b = _mm_movelh_ps(b1b0, b3b2);
+ /* Convert to planar */
+ __m128 g1g0r1r0 = _mm_unpacklo_ps(p1f, p2f);
+ __m128 b1b0 = _mm_unpackhi_ps(p1f, p2f);
+ __m128 g3g2r3r2 = _mm_unpacklo_ps(p3f, p4f);
+ __m128 b3b2 = _mm_unpackhi_ps(p3f, p4f);
+ r = _mm_movelh_ps(g1g0r1r0, g3g2r3r2);
+ g = _mm_movehl_ps(g3g2r3r2, g1g0r1r0);
+ b = _mm_movelh_ps(b1b0, b3b2);
- /* Convert to Prophoto */
- r2 = sse_matrix3_mul(cam_prof, r, g, b);
- g2 = sse_matrix3_mul(&cam_prof[12], r, g, b);
- b2 = sse_matrix3_mul(&cam_prof[24], r, g, b);
- } else
- {
- /* Convert to planar */
- __m128 g1g0r1r0 = _mm_unpacklo_ps(p1f, p2f);
- __m128 b1b0 = _mm_unpackhi_ps(p1f, p2f);
- __m128 g3g2r3r2 = _mm_unpacklo_ps(p3f, p4f);
- __m128 b3b2 = _mm_unpackhi_ps(p3f, p4f);
- r = _mm_movelh_ps(g1g0r1r0, g3g2r3r2);
- g = _mm_movehl_ps(g3g2r3r2, g1g0r1r0);
- b = _mm_movelh_ps(b1b0, b3b2);
+ /* Convert to Prophoto */
+ r2 = sse_matrix3_mul(cam_prof, r, g, b);
+ g2 = sse_matrix3_mul(&cam_prof[12], r, g, b);
+ b2 = sse_matrix3_mul(&cam_prof[24], r, g, b);
- /* Multiply channel mixer */
- r2 = _mm_mul_ps(_mm_load_ps(_cm_r), r);
- g2 = _mm_mul_ps(_mm_load_ps(_cm_g), g);
- b2 = _mm_mul_ps(_mm_load_ps(_cm_b), b);
- }
+ RGBtoHSV_SSE4(&r2, &g2, &b2);
+ h = r2; s = g2; v = b2;
- RGBtoHSV_SSE4(&r, &g, &b);
- h = r; s = g; v = b;
-
if (dcp->huesatmap)
{
huesat_map_SSE2(dcp->huesatmap,
dcp->huesatmap_precalc, &h, &s, &v);
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit