Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-133430

Qt fails to build on certain Intel CPUs due to avx512_fp16 with GCC14 (src/gui/painting/qrgbafloat.h)

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P3: Somewhat important
    • 6.8.3, 6.9.0 Beta3, 6.10.0 FF
    • 6.8.2
    • GUI: Painting
    • None
    • Linux; GCC14; -march=native; Intel(R) Xeon(R) Gold 6442Y (avx512_fp16)
    • Linux/Wayland
    • d076420bb (dev), f20166d2d (6.9), eaf28380e (6.8)

    Description

      Build failure:

      [...]
      FAILED: src/gui/CMakeFiles/Gui.dir/image/qimage.cpp.o  
      /usr/bin/x86_64-pc-linux-gnu-c++ -DENABLE_PIXMAN_DRAWHELPERS -DGui_EXPORTS -DQT_ASCII_CAST_WARNINGS -DQT_BUILDING_QT -DQT_BUILD_GUI_LIB -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_DEPRECATED_WARNINGS -DQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH -DQT
      _LEAN_HEADERS=1 -DQT_MOC_COMPAT -DQT_NO_CAST_TO_ASCII -DQT_NO_CONTEXTLESS_CONNECT -DQT_NO_DEBUG -DQT_NO_EXCEPTIONS -DQT_NO_FOREACH -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_QASCONST -DQT_NO_QEXCHANGE 
      -DQT_NO_QSNPRINTF -DQT_NO_USING_NAMESPACE -DQT_QPA_DEFAULT_PLATFORM_NAME=\"xcb\" -DQT_USE_NODISCARD_FILE_OPEN -DQT_USE_QSTRINGBUILDER -D_GLIBCXX_ASSERTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I/var/tmp/paludis/build/x11-libs-qtba
      se-6.8.2/work/build/src/gui/Gui_autogen/include -I/var/tmp/paludis/build/x11-libs-qtbase-6.8.2/work/build/include -I/var/tmp/paludis/build/x11-libs-qtbase-6.8.2/work/build/include/QtGui -I/var/tmp/paludis/build/x11-libs-qtbase-6.8.2/wor
      k/qtbase-everywhere-src-6.8.2/src/gui -I/var/tmp/paludis/build/x11-libs-qtbase-6.8.2/work/build/src/gui -I/var/tmp/paludis/build/x11-libs-qtbase-6.8.2/work/qtbase-everywhere-src-6.8.2/src/gui/../3rdparty/VulkanMemoryAllocator -I/var/tmp
      /paludis/build/x11-libs-qtbase-6.8.2/work/qtbase-everywhere-src-6.8.2/src/gui/../3rdparty/D3D12MemoryAllocator -I/var/tmp/paludis/build/x11-libs-qtbase-6.8.2/work/build/include/QtGui/6.8.2 -I/var/tmp/paludis/build/x11-libs-qtbase-6.8.2/
      work/build/include/QtGui/6.8.2/QtGui -I/usr/x86_64-pc-linux-gnu/include/at-spi-2.0 -I/usr/x86_64-pc-linux-gnu/include/dbus-1.0 -I/usr/x86_64-pc-linux-gnu/lib/dbus-1.0/include -I/usr/x86_64-pc-linux-gnu/include/libmount -I/usr/x86_64-pc-
      linux-gnu/include/uuid -I/usr/x86_64-pc-linux-gnu/include/json-c -I/usr/x86_64-pc-linux-gnu/lib/openssl-3/include -I/usr/x86_64-pc-linux-gnu/include/blkid -I/var/tmp/paludis/build/x11-libs-qtbase-6.8.2/work/build/include/QtCore -I/var/t
      mp/paludis/build/x11-libs-qtbase-6.8.2/work/qtbase-everywhere-src-6.8.2/mkspecs/linux-g++ -I/var/tmp/paludis/build/x11-libs-qtbase-6.8.2/work/build/src/corelib -I/var/tmp/paludis/build/x11-libs-qtbase-6.8.2/work/build/include/QtCore/6.8
      .2 -I/var/tmp/paludis/build/x11-libs-qtbase-6.8.2/work/build/include/QtCore/6.8.2/QtCore -I/var/tmp/paludis/build/x11-libs-qtbase-6.8.2/work/build/include/QtDBus -isystem /usr/x86_64-pc-linux-gnu/include/glib-2.0 -isystem /usr/x86_64-pc
      -linux-gnu/lib/glib-2.0/include -isystem /usr/x86_64-pc-linux-gnu/include/harfbuzz -isystem /usr/x86_64-pc-linux-gnu/include/freetype2 -isystem /usr/x86_64-pc-linux-gnu/include/libpng16 -march=native -O2 -pipe -std=gnu++17 -fPIC -fvisib
      ility=hidden -fvisibility-inlines-hidden -fdiagnostics-color=always -Wall -Wextra -fno-exceptions -mno-direct-extern-access -U_FORTIFY_SOURCE -Wsuggest-override -fcf-protection=full -D_FORTIFY_SOURCE=3 -ftrivial-auto-var-init=pattern -f
      stack-protector-strong -fstack-clash-protection -Winvalid-pch -include /var/tmp/paludis/build/x11-libs-qtbase-6.8.2/work/build/src/gui/CMakeFiles/Gui.dir/cmake_pch.hxx -MD -MT src/gui/CMakeFiles/Gui.dir/image/qimage.cpp.o -MF src/gui/CM
      akeFiles/Gui.dir/image/qimage.cpp.o.d -o src/gui/CMakeFiles/Gui.dir/image/qimage.cpp.o -c /var/tmp/paludis/build/x11-libs-qtbase-6.8.2/work/qtbase-everywhere-src-6.8.2/src/gui/image/qimage.cpp 
      In file included from /var/tmp/paludis/build/x11-libs-qtbase-6.8.2/work/build/include/QtGui/qrgbafloat.h:1, 
                      from /var/tmp/paludis/build/x11-libs-qtbase-6.8.2/work/qtbase-everywhere-src-6.8.2/src/gui/image/qimage.cpp:14: 
      /var/tmp/paludis/build/x11-libs-qtbase-6.8.2/work/qtbase-everywhere-src-6.8.2/src/gui/painting/qrgbafloat.h: In instantiation of 'constexpr QRgbaFloat<T> QRgbaFloat<T>::unpremultiplied() const [with F = qfloat16]': 
      /var/tmp/paludis/build/x11-libs-qtbase-6.8.2/work/qtbase-everywhere-src-6.8.2/src/gui/image/qimage.cpp:2737:34:   required from here 
      2737 |             p = p.unpremultiplied(); 
           |                 ~~~~~~~~~~~~~~~~~^~ 
      /var/tmp/paludis/build/x11-libs-qtbase-6.8.2/work/qtbase-everywhere-src-6.8.2/src/gui/painting/qrgbafloat.h:102:34: error: conversion from 'float' to non-scalar type 'const QRgbaFloat<qfloat16>::FastType' {aka 'const qfloat16'} requeste
      d 
       102 |         const FastType ia = 1.0f / a; 
           |                             ~~~~~^~~ 
      ninja: build stopped: subcommand failed.

      Output of: cat /proc/cpuinfo:

      processor       : 0 
      vendor_id       : GenuineIntel 
      cpu family      : 6 
      model           : 143 
      model name      : Intel(R) Xeon(R) Gold 6442Y 
      stepping        : 6 
      microcode       : 0x2b000590 
      cpu MHz         : 2599.999 
      cache size      : 61440 KB 
      physical id     : 0 
      siblings        : 8 
      core id         : 0 
      cpu cores       : 8 
      apicid          : 0 
      initial apicid  : 0 
      fpu             : yes 
      fpu_exception   : yes 
      cpuid level     : 32 
      wp              : yes 
      flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid tsc_
      known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 
      erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 wbnoinvd arat avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx
      512_vnni avx512_bitalg avx512_vpopcntdq rdpid cldemote movdiri movdir64b fsrm md_clear serialize amx_bf16 avx512_fp16 amx_tile amx_int8 flush_l1d arch_capabilities 
      bugs            : spectre_v1 spectre_v2 spec_store_bypass swapgs itlb_multihit mmio_unknown eibrs_pbrsb bhi 
      bogomips        : 5199.99 
      clflush size    : 64 
      cache_alignment : 64 
      address sizes   : 45 bits physical, 48 bits virtual 
      power management:

      Complete build log is attached.

      A workaround/hack is:

      --- a/src/gui/painting/qrgbafloat.h
      +++ b/src/gui/painting/qrgbafloat.h
      @@ -20,5 +20,5 @@
       public:
           using Type = F;
      -#if defined(__AVX512FP16__) && QFLOAT16_IS_NATIVE
      +#if 0
           // AVX512FP16 has multiplication instructions
           using FastType = F;
      
      

      Sadly this has been known for a long time already since Qt 6.6.2 for nearly a year but doesn't appear to have been reported by Gentoo, please also see:

      https://bugs.gentoo.org/926287

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            allan.jensen Allan Sandfeld Jensen
            tgurr Timo Gurr
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes