https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97248
Bug ID: 97248 Summary: [mips] unrecognizable insn when left shifting uint64 vector by scalar with MSA Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: e...@coeus-group.com Target Milestone: --- On mips64el with -mmsa, attempting to left shift a vector of unsigned 64-bit integers by a scalar results in an ICE. The same code works without -mmsa. Test case: typedef struct { long unsigned int c __attribute__((__vector_size__(16))); } d; int i() { int e; d f, g; f.c = g.c << e; } `mips64el-linux-gnuabi64-gcc-10 -mmsa -c -o foo.o foo.c`: foo.c: In function āiā: foo.c:8:1: error: unrecognizable insn: 8 | } | ^ (insn 9 8 10 2 (set (reg:DI 198) (subreg:DI (mem/c:SI (reg/f:DI 189 virtual-stack-vars) [1 e+0 S4 A32]) 0)) "foo.c":7:13 -1 (nil)) during RTL pass: vregs foo.c:8:1: internal compiler error: in extract_insn, at recog.c:2294 Please submit a full bug report, with preprocessed source if appropriate. See <file:///usr/share/doc/gcc-10/README.Bugs> for instructions.