https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109204

            Bug ID: 109204
           Summary: Compiler emits unknows assembly instruction with -O3
                    level
           Product: gcc
           Version: 12.1.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: n.deshmukh at samsung dot com
  Target Milestone: ---

When building a certain function with -O3 optimization enabled, the following
error are encountered during compilation:

/tmp/ccIbckyO.s: Assembler messages:
/tmp/ccIbckyO.s:967516: Error: invalid character '<' in mnemonic
/tmp/ccIbckyO.s:1023165: Error: invalid character '<' in mnemonic
/tmp/ccIbckyO.s:1023246: Error: invalid character '<' in mnemonic

The invalid instruction in question is the following instruction:

       vinsert<i128vldq>       $1, %xmm20, %ymm20, %ymm20

This instruction always occurs along with following code snippet:

         vpunpcklwd      %xmm18, %xmm19, %xmm20
         vpunpckldq      %xmm20, %xmm20, %xmm20
         vpunpcklqdq     %xmm20, %xmm20, %xmm20
         vinsert<i128vldq>       $1, %xmm20, %ymm20, %ymm20
         vinsertf64x4    $0x1, %ymm20, %zmm20, %zmm20

The function corresponding to this assembly is a big function, making it hard
to pinpoint the C++ code which is generating such assembly. The file compiles
normally upto -O2 level. The following options were used for compiling the
file:

-g -std=c++17 -rdynamic -fno-builtin -mrecip=none -fno-omit-frame-pointer
-faligned-new -march=sapphirerapids -mavx512fp16 -Wno-deprecated-declarations
-Wno-maybe-uninitialized -Wno-uninitialized -static-libstdc++ -Wall -Wextra -O3
-std=c++2a -mprefer-vector-width=512 -Wsign-compare -Wuninitialized
-Wmaybe-uninitialized -ffp-contract=off -fconcepts
  • [Bug c++/109204] New: Compiler ... n.deshmukh at samsung dot com via Gcc-bugs

Reply via email to