Optimize QLineF::unitVector() on platforms with SSE2 2524
authorJim Kukunas <james.t.kukunas@linux.intel.com>
Fri, 10 Dec 2010 17:12:21 +0000 (09:12 -0800)
committerJim Kukunas <james.t.kukunas@linux.intel.com>
Fri, 10 Dec 2010 17:12:21 +0000 (09:12 -0800)
commitabc9ac20cb9701db35933b8e6e4da7357ad0b07c
tree6b4d471ffe2a0d325456bc5d31577ef931ce839b
parent633df0b7a6ce104c37475f1388032ad63f2283a4
Optimize QLineF::unitVector() on platforms with SSE2

While profiling the QGears2 graphics benchmark, QlineF::unitVector()
is identified as a CPU hotspot. In some cases, it can consume up
to 5% CPU time. The culprit is poorly vectorized code generated
by the GNU C++ compiler on platforms which support SSE2. Using
SSE intrinsics does not remedy this situation. The inline assembler
introduced by this commit replaces that poorly vectorized code with
more optimal code. When applied to tag v4.7.1, this inline
assembler reduces the cycle count for this function by approximately
20%. This cycle reduction yields an approximate 6% boost in FPS for
the benchmark.
src/corelib/tools/qline.cpp