31 lines
961 B
Diff
31 lines
961 B
Diff
--- a/pixman/pixman-ssse3.c
|
|
+++ b/pixman/pixman-ssse3.c
|
|
@@ -64,6 +64,9 @@ ssse3_fetch_horizontal (bits_image_t *image, line_t *line,
|
|
__m128i *b = (__m128i *)line->buffer;
|
|
__m128i vrl0, vrl1;
|
|
|
|
+#pragma ivdep
|
|
+#pragma prefetch
|
|
+#pragma loop count(1000)
|
|
while ((n -= 2) >= 0)
|
|
{
|
|
__m128i vw, vr, s;
|
|
@@ -192,6 +195,9 @@ ssse3_fetch_bilinear_cover (pixman_iter_t *iter, const uint32_t *mask)
|
|
vw = _mm_set_epi16 (
|
|
dist_y, dist_y, dist_y, dist_y, dist_y, dist_y, dist_y, dist_y);
|
|
|
|
+#pragma ivdep
|
|
+#pragma prefetch
|
|
+#pragma loop count(1000)
|
|
for (i = 0; i + 3 < iter->width; i += 4)
|
|
{
|
|
__m128i top0 = _mm_load_si128 ((__m128i *)(line0->buffer + i));
|
|
@@ -226,6 +232,7 @@ ssse3_fetch_bilinear_cover (pixman_iter_t *iter, const uint32_t *mask)
|
|
_mm_storeu_si128 ((__m128i *)(iter->buffer + i), p);
|
|
}
|
|
|
|
+#pragma loop count(3)
|
|
while (i < iter->width)
|
|
{
|
|
__m128i top0 = _mm_load_si128 ((__m128i *)(line0->buffer + i));
|