[Bug target/70421] [5/6 Regression] wrong code with v16si vector and useless cast at -O -mavx512f

zsojka at seznam dot cz gcc-bugzilla@gcc.gnu.org
Mon Mar 28 17:38:00 GMT 2016


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

--- Comment #3 from Zdenek Sojka <zsojka at seznam dot cz> ---
(In reply to Jakub Jelinek from comment #2)
> Untested fix:
> --- gcc/config/i386/i386.c	(revision 234449)
> +++ gcc/config/i386/i386.c	(working copy)
> @@ -46930,7 +46930,7 @@ half:
>      {
>        tmp = gen_reg_rtx (mode);
>        emit_insn (gen_rtx_SET (tmp, gen_rtx_VEC_DUPLICATE (mode, val)));
> -      emit_insn (gen_blendm (target, tmp, target,
> +      emit_insn (gen_blendm (target, target, tmp,
>  			     force_reg (mmode,
>  					gen_int_mode (1 << elt, mmode))));
>      }

Thanks, that fixes the testcase and some other miscompiles. I haven't run the
testsuite though.

Is the fact that the useless cast in:
  x ^= ((v16si)v)[u[0]];
changes the generated code (makes it significantly worse at all opt levels)
worth creating a PR?


More information about the Gcc-bugs mailing list