diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2018-11-02 15:32:52 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2018-11-11 06:07:04 +0000 |
commit | f3652429de599d5cdd5c7e25821244ad9c127e3d (patch) | |
tree | 1eba7a78e1841440121cada02c18d751a6cac651 | |
parent | 1e2bf51d3e5d891db3c1383e6567d1c77dfc8973 (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.cpp | 11 |
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, |