summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2018-11-02 15:32:52 -0700
committerThiago Macieira <thiago.macieira@intel.com>2018-11-11 06:07:04 +0000
commitf3652429de599d5cdd5c7e25821244ad9c127e3d (patch)
tree1eba7a78e1841440121cada02c18d751a6cac651
parent1e2bf51d3e5d891db3c1383e6567d1c77dfc8973 (diff)
Optimize qt_memfill16, with tail jump
This simplifies code generation and permits the compiler to implement a tail-jump optimization. Change-Id: I343f2beed55440a7ac0bfffd15636f640116313e Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
-rw-r--r--src/gui/painting/qdrawhelper_sse2.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/gui/painting/qdrawhelper_sse2.cpp b/src/gui/painting/qdrawhelper_sse2.cpp
index 88e3fc66fd..efcbc8c643 100644
--- a/src/gui/painting/qdrawhelper_sse2.cpp
+++ b/src/gui/painting/qdrawhelper_sse2.cpp
@@ -325,15 +325,16 @@ void qt_memfill16(quint16 *dest, quint16 value, qsizetype count)
}
const int align = (quintptr)(dest) & 0x3;
- switch (align) {
- case 2: *dest++ = value; --count;
+ if (align) {
+ *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;
+
+ const quint32 value32 = (value << 16) | value;
+ qt_memfill32(reinterpret_cast<quint32*>(dest), value32, count / 2);
}
void qt_bitmapblit32_sse2_base(QRasterBuffer *rasterBuffer, int x, int y,