diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2018-11-02 15:46:52 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2018-11-11 06:07:31 +0000 |
commit | 6c1339ef4b44db3c298d1b58389d41c39af4ced5 (patch) | |
tree | e5c240d5fa4543879bc04348643acfb777e2ab7e /src/gui/painting/qdrawhelper.cpp | |
parent | f3652429de599d5cdd5c7e25821244ad9c127e3d (diff) |
Move qt_memfill32-based implementation of qt_memfill16 to generic
The SSE2 implementation and the one in qdrawhelper.cpp are almost
identical. And if we make it so qt_memfill16 can tail-call to
qt_memfill32, there's no need for inlining, so there's no need to keep
it in qdrawhelper_sse2.cpp
Change-Id: I343f2beed55440a7ac0bfffd15637027771c2254
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/gui/painting/qdrawhelper.cpp')
-rw-r--r-- | src/gui/painting/qdrawhelper.cpp | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index b4050b41ac..fa1990ca60 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -1,7 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2018 The Qt Company Ltd. -** Copyright (C) 2016 Intel Corporation. +** Copyright (C) 2018 Intel Corporation. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QtGui module of the Qt Toolkit. @@ -6249,28 +6249,21 @@ void qt_memfill64(quint64 *dest, quint64 color, qsizetype count) qt_memfill_template<quint64>(dest, color, count); } -#if !defined(__SSE2__) void qt_memfill16(quint16 *dest, quint16 value, qsizetype count) { - if (count < 3) { - switch (count) { - case 2: *dest++ = value; Q_FALLTHROUGH(); - case 1: *dest = value; - } - return; + const int align = quintptr(dest) & 0x3; + if (align) { + *dest++ = value; + --count; } - const int align = (quintptr)(dest) & 0x3; - switch (align) { - case 2: *dest++ = value; --count; - } - - const quint32 value32 = (value << 16) | value; - qt_memfill(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); } -#endif + #if !defined(__SSE2__) && !defined(__ARM_NEON__) && !defined(__MIPS_DSP__) void qt_memfill32(quint32 *dest, quint32 color, qsizetype count) { |