[Development] Updating x86 SIMD support in Qt

Volker Hilsheimer volker.hilsheimer at qt.io
Thu Mar 24 00:34:07 CET 2022


> On 24 Jan 2022, at 17:04, Thiago Macieira <thiago.macieira at intel.com> wrote:
> 
> On Monday, 24 January 2022 05:30:46 PST Konrad Rosenbaum wrote:
>> I have absolutely no problem with stuff running faster and more
>> efficient on my two laptops (which are significantly more modern), but I
>> would have a major problem with it not running at all on my workstation
>> that I use for 95% of all my Open Source work. And I would also not like
>> my applications to crash on my downstream user's computers (which are on
>> average just as old as mine) - every crash means hours of work for
>> someone (usually me) to find out what the problem was.
> 
> At least i can promise you not to make it a silent crash. Either QtCore or the 
> dynamic linker would say it can't run on that machine.
> 
> https://code.woboq.org/qt6/qtbase/src/corelib/global/
> qsimd.cpp.html#_Z16qDumpCPUFeaturesv

I have a possibly wrong hunch that building Qt Multimedia fails because of this. This is in a Ubuntu 20.04 VM in the VMware Fusion 12 provider, and the hardware version is maxed out (it wasn’t earlier, but didn’t help to put it to level 18). So there’s not a whole lot I can do on the VM provisioning side, I think.

Volker



In file included from /home/vagrant/dev-build/qtbase/include/QtCore/6.4.0/QtCore/private/qsimd_p.h:1,
                 from /home/vagrant/qt/dev/qtmultimedia/src/multimedia/video/qvideoframeconversionhelper_p.h:55,
                 from /home/vagrant/qt/dev/qtmultimedia/src/multimedia/video/qvideoframeconversionhelper_avx2.cpp:40:
/home/vagrant/dev-build/qtbase/include/QtCore/6.4.0/QtCore/private/../../../../../../../qt/dev/qtbase/src/corelib/global/qsimd_p.h:256:8: error: #error "Please enable all x86-64-v3 extensions; you probably want to use -march=haswell or -march=x86-64-v3 instead of -mavx2"
  256 | #      error "Please enable all x86-64-v3 extensions; you probably want to use -march=haswell or -march=x86-64-v3 instead of -mavx2"
      |        ^~~~~
/home/vagrant/dev-build/qtbase/include/QtCore/6.4.0/QtCore/private/../../../../../../../qt/dev/qtbase/src/corelib/global/qsimd_p.h:253:49: error: ‘__BMI__’ was not declared in this scope
  253 | #  define ARCH_HASWELL_MACROS       (__AVX2__ + __BMI__ + __BMI2__ + __F16C__ + __FMA__ + __LZCNT__)
      |                                                 ^~~~~~~
/home/vagrant/dev-build/qtbase/include/QtCore/6.4.0/QtCore/private/../../../../../../../qt/dev/qtbase/src/corelib/global/qsimd_p.h:258:15: note: in expansion of macro ‘ARCH_HASWELL_MACROS’
  258 | static_assert(ARCH_HASWELL_MACROS, "Undeclared identifiers indicate which features are missing.");
      |               ^~~~~~~~~~~~~~~~~~~
/home/vagrant/dev-build/qtbase/include/QtCore/6.4.0/QtCore/private/../../../../../../../qt/dev/qtbase/src/corelib/global/qsimd_p.h:253:59: error: ‘__BMI2__’ was not declared in this scope
  253 | #  define ARCH_HASWELL_MACROS       (__AVX2__ + __BMI__ + __BMI2__ + __F16C__ + __FMA__ + __LZCNT__)
      |                                                           ^~~~~~~~
/home/vagrant/dev-build/qtbase/include/QtCore/6.4.0/QtCore/private/../../../../../../../qt/dev/qtbase/src/corelib/global/qsimd_p.h:258:15: note: in expansion of macro ‘ARCH_HASWELL_MACROS’
  258 | static_assert(ARCH_HASWELL_MACROS, "Undeclared identifiers indicate which features are missing.");
      |               ^~~~~~~~~~~~~~~~~~~
/home/vagrant/dev-build/qtbase/include/QtCore/6.4.0/QtCore/private/../../../../../../../qt/dev/qtbase/src/corelib/global/qsimd_p.h:253:70: error: ‘__F16C__’ was not declared in this scope
  253 | #  define ARCH_HASWELL_MACROS       (__AVX2__ + __BMI__ + __BMI2__ + __F16C__ + __FMA__ + __LZCNT__)
      |                                                                      ^~~~~~~~
/home/vagrant/dev-build/qtbase/include/QtCore/6.4.0/QtCore/private/../../../../../../../qt/dev/qtbase/src/corelib/global/qsimd_p.h:258:15: note: in expansion of macro ‘ARCH_HASWELL_MACROS’
  258 | static_assert(ARCH_HASWELL_MACROS, "Undeclared identifiers indicate which features are missing.");
      |               ^~~~~~~~~~~~~~~~~~~
/home/vagrant/dev-build/qtbase/include/QtCore/6.4.0/QtCore/private/../../../../../../../qt/dev/qtbase/src/corelib/global/qsimd_p.h:253:81: error: ‘__FMA__’ was not declared in this scope
  253 | #  define ARCH_HASWELL_MACROS       (__AVX2__ + __BMI__ + __BMI2__ + __F16C__ + __FMA__ + __LZCNT__)
      |                                                                                 ^~~~~~~
/home/vagrant/dev-build/qtbase/include/QtCore/6.4.0/QtCore/private/../../../../../../../qt/dev/qtbase/src/corelib/global/qsimd_p.h:258:15: note: in expansion of macro ‘ARCH_HASWELL_MACROS’
  258 | static_assert(ARCH_HASWELL_MACROS, "Undeclared identifiers indicate which features are missing.");
      |               ^~~~~~~~~~~~~~~~~~~
/home/vagrant/dev-build/qtbase/include/QtCore/6.4.0/QtCore/private/../../../../../../../qt/dev/qtbase/src/corelib/global/qsimd_p.h:253:91: error: ‘__LZCNT__’ was not declared in this scope; did you mean ‘__LINE__’?
  253 | #  define ARCH_HASWELL_MACROS       (__AVX2__ + __BMI__ + __BMI2__ + __F16C__ + __FMA__ + __LZCNT__)
      |                                                                                           ^~~~~~~~~
/home/vagrant/dev-build/qtbase/include/QtCore/6.4.0/QtCore/private/../../../../../../../qt/dev/qtbase/src/corelib/global/qsimd_p.h:258:15: note: in expansion of macro ‘ARCH_HASWELL_MACROS’
  258 | static_assert(ARCH_HASWELL_MACROS, "Undeclared identifiers indicate which features are missing.");
      |               ^~~~~~~~~~~~~~~~~~~
[653/734] Building CXX object qtmultimedia/src/multimedia/CMakeFiles/Multimedia.dir/cmake_pch.hxx.gch





More information about the Development mailing list