http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50155
Bug #: 50155 Summary: [4.7 Regression] AVX2 support broke -mavx Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: ja...@gcc.gnu.org CC: hjl.to...@gmail.com, u...@gcc.gnu.org void foo (int x, double *a, double *b, double c) { int i; for (i = 0; i < x; i++) *a++ = *b++ * i / c; } fails to assemble with -O3 -mavx -m64 on x86_64-linux (at least when using binutils that don't support AVX2). vpaddd %ymm6, %ymm1, %ymm5 is AFAIK an AVX2 insn, not AVX, yet it is emitted by the addv8si3 pattern (*<plusminus_insn><code>3 insn etc. was previously using VI_128 mode iterator, but now is using VI, guess it wants to use a mode iterator similar to VI, but which uses TARGET_AVX2 instead of TARGET_AVX guards for the 32 byte integer modes (VI_AVX2 or VI_1248_AVX2?)).