Note that almost all the patch size increase is from the v8_sse2.gyp
file that is automatically generated from v8.gyp using a small script I
wrote, which is also included in the patch.
In the long run, we may end up doing this manually because we will need
to handle V8 specially in the QMake stuff anyway (install it, ensure we
only link the x87 version and let the SSE2 version magically act as a
drop-in replacement, add an rpath), but try like this for now.
* Mon Jan 18 2016 Kevin Kofler <Kevin@tigcc.ticalc.org> - 5.6.0-0.14.beta.nosse2.1
- Build V8 as a shared library on i686 to allow for swappable backends
This is the first prerequisite step towards building both the x87 and
SSE2 backends.
* Revert the change to force the BFD ld, that was not the issue.
* Make some fixes to my blink_sse2 target in blink_platform.gyp:
- add missing dependencies to get the needed feature_defines,
- add missing target defines,
- add -mfpmath=sse in addition to -msse2 because this is
floating-point math and we should definitely not do x87 in
the SSE2-optimized versions of the functions.
I am getting undefined references to symbols that should be defined by
an archive linked with -Wl,--whole-archive from gold, which really
should not happen.
Also the unnecessary hard_dependency in blink_platform.gyp.
That file is not really used in QtWebEngine anyway, but simply
defaulting disable_sse2 to 1 is the right thing. The variable is ignored
on everything other than ia32 (i686) anyway, even on x64 (x86_64). And
setting conditional defaults might not work as expected in gyp.
* Fix src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/
SincResampler.cpp and VectorMath.cpp to not require SSE2 on x86
(including runtime detection).
* Also add runtime detection for DirectConvolver.cpp.
* Remove the -ffloat-store workaround: The media player issue that
caused problems with x87 floating point (and ultimately made upstream
require SSE2) should already be fixed / worked around by:
https://crrev.com/d2c745b13c93ecff5108bed57d8e052126715492
So I will only readd -ffloat-store if people request it, and even
then, only to specific parts of code and not everything.
* Fix src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/
DirectConvolver.cpp to not require SSE2 on x86. (No runtime detection,
sorry.)
* Update the changelog date in the specfile.
See https://bugzilla.redhat.com/show_bug.cgi?id=1244196#c22 for the
history of the patch. Compared to the last revision there (v5):
* I fixed WebGLImageConversion.cpp to not assume SSE2 on x86.
Unfortunately, it would be really hard to make runtime detection work
there, because it uses intrinsics in inline templates, and GCC only
supports intrinsics when building the whole code for the vector
instruction set. So I had to turn off that SSE2 code entirely when
__SSE2__ is not defined at compile time.
* I fixed webrtc to check for SSE2 at runtime (using the runtime
checking code that webrtc already has and uses in several places)
before attempting to use OpenMAX on x86. OpenMAX requires SSE2.
So we just fall back to the Ooura implementation of FFTs when needed.
TODO: build V8 shared and twice (once for x87, once for SSE2)