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

Neon instructions fail on Integrity, new compiler 2018.1.4

    XMLWordPrintable

Details

    • Bug
    • Resolution: Out of scope
    • P1: Critical
    • None
    • 5.12.0 RC2
    • Build System
    • None
    • Integrity

    Description

      2018.1.4 compiler sets _ARM_NEON and __ARM_NEON_ on for both 32bit and 64bit arm compilation.

      Unfortunately Neon instruction support is not working like Qt expects and is only meant for auto-vectorization - compiler optimization (see: Multi help). In Qt we have hand written Neon optimizations for which e.g. the 64bit version of the compiler doesn't understand register names that start with "v" (the neon registers). This leads to compilation fails on every .S and inline asm we have with neon code in it.

      To workaround this issue:

       

      32bit compiler

      You can simply add --no_neon to QMAKE_CXX and QMAKE_CC in mkspec/common/ghs-integrity-armv7.conf .

       

      64bit compiler

      The no_neon - option doesn't work as you will be greeted by: "cxintarm64: Warning: Option "--no_neon" ignored with processor=arm64".

      1. Open the cxintarm64 binary in hex editor

      2. Search for ARM_NEON

      3. Replace the E in NEON so it reads NOON

      4. Save the binary, it doesn't have CRC. compile away.

      Alternatively if you don't want to touch the compiler binary you could remove subarch string "neon" from arch.cpp (removes .pri/.pro file NEON - files) and then search for every occurence of the _ARM_NEON_ and either try to undef it or replace it with #if 0 .

      2017.1.4 compiler doesn't have this issue so you can use the old one as well.

       

      Another smaller issue is that the assembler doesn't recognize c-style comments in .S -files which can be fixed with option -preprocess_assembly_files .

      Attachments

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

        Activity

          People

            e0150566 Janne Koskinen
            e0150566 Janne Koskinen
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes