http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50813
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-10-20 19:52:45 UTC --- Strange, wonder how I've missed this. I guess easiest would be probably just to if (!TARGET_AVX2) { struct expand_vec_perm_d d_copy = *d; d_copy.target = gen_lowpart (V{4DF,8SF}mode, d->target); d_copy.op0 = gen_lowpart (V{4DF,8SF}mode, d->op0); d_copy.op1 = gen_lowpart (V{4DF,8SF}mode, d->op1); return expand_vec_perm_even_odd_1 (&d_copy); } for V{4DI,8SI}mode. Or if (!TARGET_AVX2) return false;.