https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102252
Bug ID: 102252
Summary: svbool_t with SVE can generate invalid assembly
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: gilles.gouaillardet at gmail dot com
Target Milestone: ---
Created attachment 51429
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=51429&action=edit
a simple reproducer
Let's consider the attached test_svbool.cpp and compile it with SVE fixed 512
bits:
$ g++ -march=armv8.2-a+sve -msve-vector-bits=512 -c test_svbool.cpp
/tmp/cc38qRcE.s: Assembler messages:
/tmp/cc38qRcE.s:44: Error: invalid addressing mode at operand 2 -- `ldr
p0,[x0,x1,lsl 3]'
The generated assembly is invalid and cannot be assembled.
All branches that support SVE (10, 11 and 12) are affected.
FWIW, the code compiles just fine with LLVM 12, 13 and main branches.
This code is a trimmed version of an improvement for GROMACS.