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

            Bug ID: 99813
           Summary: SVE: Invalid assembly at -O3 (multiplier out of range
                    in incb instruction)
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: acoplan at gcc dot gnu.org
  Target Milestone: ---

The following fails:

$ cat test.cc
long a, b;
bool c[2][14][2][16], f[2][14][2][16];
bool d;
char e[2][4][2][6];
void g() {
  a = 0;
  for (int h = 0; h < 2; ++h)
    for (int i = 0; i < 14; ++i)
      for (int j = 0; j < 2; ++j)
        for (int k = 0; k < 16; ++k)
          c[h][i][j][k] = 0;
  d = 0;
  for (int h; h < 2; ++h)
    for (int i = 0; i < 4; ++i)
      for (int j = 0; j < 2; ++j)
        for (int k = 0; k < 6; ++k)
          e[h][i][j][k] = 6;
  for (int h = 0; h < 2; ++h)
    for (int i = 0; i < 14; ++i)
      for (int j = 0; j < 2; ++j)
        for (int k = 0; k < 16; ++k)
          f[h][i][j][k] = b = 9;
}
$ aarch64-linux-gnu-gcc -c test.cc -O3 -march=armv8.2-a+sve
-fvect-cost-model=unlimited -fno-tree-dominator-opts -mtune=cortex-a72
/tmp/ccXhdoed.s: Assembler messages:
/tmp/ccXhdoed.s:647: Error: multiplier out of range 1 to 16 at operand 2 --
`incb x15,all,mul#28'

The choice of -mtune is questionable given that we've asked for SVE, but we
shouldn't generate invalid assembly in any case.

Reply via email to