Author: post
Date: 2009-10-12 17:54:32 +0200 (Mon, 12 Oct 2009)
New Revision: 2700
Modified:
trunk/plugins/resample/resample.c
Log:
Add soft prefetch to vertical resampler.
Modified: trunk/plugins/resample/resample.c
===================================================================
--- trunk/plugins/resample/resample.c 2009-10-12 15:35:30 UTC (rev 2699)
+++ trunk/plugins/resample/resample.c 2009-10-12 15:54:32 UTC (rev 2700)
@@ -759,12 +759,16 @@
for (i = 0; i < fir_filter_size; i++) {
/* Load weight */
__m128i w =
_mm_set_epi32(wg[i],wg[i],wg[i],wg[i]);
- /* Load source */
+
+ /* Load source and prefetch next line */
+ int pos = i * input->rowstride;
__m128i src1i, src2i, src3i;
- __m128i* in_sse = (__m128i*)&in[i *
input->rowstride];
+ __m128i* in_sse = (__m128i*)&in[pos];
src1i = _mm_load_si128(in_sse);
src2i = _mm_load_si128(in_sse+1);
src3i = _mm_load_si128(in_sse+2);
+ _mm_prefetch(&in[pos + input->rowstride],
_MM_HINT_T0);
+
/* Unpack to dwords */
__m128i src1i_h, src2i_h, src3i_h;
src1i_h = _mm_unpackhi_epi16(src1i, zero);
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit