diff options
Diffstat (limited to 'src/gui/painting/qdrawhelper_sse2.cpp')
-rw-r--r-- | src/gui/painting/qdrawhelper_sse2.cpp | 40 |
1 files changed, 9 insertions, 31 deletions
diff --git a/src/gui/painting/qdrawhelper_sse2.cpp b/src/gui/painting/qdrawhelper_sse2.cpp index 3212ffdd2d..34bdf7909a 100644 --- a/src/gui/painting/qdrawhelper_sse2.cpp +++ b/src/gui/painting/qdrawhelper_sse2.cpp @@ -233,7 +233,7 @@ void QT_FASTCALL comp_func_Source_sse2(uint *dst, const uint *src, int length, u } } -void qt_memfill32(quint32 *dest, quint32 value, int count) +void qt_memfill32(quint32 *dest, quint32 value, qsizetype count) { if (count < 7) { switch (count) { @@ -266,20 +266,20 @@ void qt_memfill32(quint32 *dest, quint32 value, int count) int count128 = count / 4; __m128i *dst128 = reinterpret_cast<__m128i*>(dest); __m128i *end128 = dst128 + count128; - const __m128i value128 = _mm_set_epi32(value, value, value, value); + const __m128i value128 = _mm_set1_epi32(value); while (dst128 + 3 < end128) { - _mm_stream_si128(dst128 + 0, value128); - _mm_stream_si128(dst128 + 1, value128); - _mm_stream_si128(dst128 + 2, value128); - _mm_stream_si128(dst128 + 3, value128); + _mm_store_si128(dst128 + 0, value128); + _mm_store_si128(dst128 + 1, value128); + _mm_store_si128(dst128 + 2, value128); + _mm_store_si128(dst128 + 3, value128); dst128 += 4; } switch (count128 & 0x3) { - case 3: _mm_stream_si128(dst128++, value128); Q_FALLTHROUGH(); - case 2: _mm_stream_si128(dst128++, value128); Q_FALLTHROUGH(); - case 1: _mm_stream_si128(dst128++, value128); + case 3: _mm_store_si128(dst128++, value128); Q_FALLTHROUGH(); + case 2: _mm_store_si128(dst128++, value128); Q_FALLTHROUGH(); + case 1: _mm_store_si128(dst128++, value128); } } @@ -314,28 +314,6 @@ void QT_FASTCALL comp_func_solid_SourceOver_sse2(uint *destPixels, int length, u } } -void qt_memfill16(quint16 *dest, quint16 value, int count) -{ - if (count < 3) { - switch (count) { - case 2: *dest++ = value; Q_FALLTHROUGH(); - case 1: *dest = value; - } - return; - } - - const int align = (quintptr)(dest) & 0x3; - switch (align) { - case 2: *dest++ = value; --count; - } - - const quint32 value32 = (value << 16) | value; - qt_memfill32(reinterpret_cast<quint32*>(dest), value32, count / 2); - - if (count & 0x1) - dest[count - 1] = value; -} - void qt_bitmapblit32_sse2_base(QRasterBuffer *rasterBuffer, int x, int y, quint32 color, const uchar *src, int width, int height, int stride) |