[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