[Development] Updating x86 SIMD support in Qt
Thiago Macieira
thiago.macieira at intel.com
Wed Jan 19 18:34:40 CET 2022
On Wednesday, 19 January 2022 00:57:04 PST Alexandru Croitor wrote:
> I believe this will pessimize optimisations for certain platforms as pointed
> out in the linked change.
>
> Specifically QNX and iOS simulator builds.
>
> https://codereview.qt-project.org/c/qt/qtbase/+/386738/11#message-5015480c07
> 228dd2088d6b1aba137927725a06b2
iOS simulator builds should benefit from enabling extra target support,
because they're *simulator* builds, not *emulator*. They are running native
code, after all.
QNX failed to detect support for AVX512 because it required explicit action of
ours in cmake/QtCompilerOptimization.cmake that the compiler supported it.
Since I don't have access to the toolchain, I'd never noticed this failing.
Fixed by https://codereview.qt-project.org/c/qt/qtbase/+/386954
It also failed to detect RDSEED because of a compiler bug. That can be worked
around easily because it's a single instruction. Or we can disable FIPS-
compliant HW-based random number generation on QNX until Blackberry fixes
their compiler, which is also fine with me.
As a side note, companies that keep their toolchains behind paywalls are
basically telling developers "we're fine with our platforms getting little
support". I'm looking at you too, Green Hills.
> Perhaps WASM and Integrity as well.
WASM needs looking into. See discussion with Lorn.
INTEGRITY wouldn't be affected. Its only build in the CI is for ARM. If it
supports x86, then they would benefit from having better codegen and
optimisations like everyone. Since INTEGRITY is almost always device-specific,
it shouldn't enable runtime detection in the first place.
> > 3) add a way to have multi-arch glibc-based Linux builds
>
> Who is going to implement this and how?
>
> CMake basically has no support for proper multi-arch builds.
>
> For macOS / iOS we rely on Apple clang supporting it. That's not available
> for Linux.
Indeed. I'm hoping it's a matter of making qt_internal_add_module() creating
two CMake targets instead of one, and modifying the C and C++ compiler flags
as well as output dir for one of them.
I have yet to prototype this, though. I have no idea how difficult it would
be.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel DPG Cloud Engineering
More information about the Development
mailing list