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

--- Comment #4 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Uroš Bizjak from comment #3)
> Please try this patch:
> 
> --cut here--
> diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
> index 8a80fa35067..9750708a80f 100644
> --- a/gcc/config/i386/sse.md
> +++ b/gcc/config/i386/sse.md
> @@ -1248,11 +1248,8 @@
>                                              operands[2]));
>     }
>   else if (memory_operand (operands[1], DImode))
> -   {
> -     rtx tmp = gen_reg_rtx (V2DImode);
> -     emit_insn (gen_vec_concatv2di (tmp, operands[1], const0_rtx));
> -     emit_move_insn (operands[0], gen_lowpart (V4SImode, tmp));
> -   }
> +   emit_insn (gen_vec_concatv2di (gen_lowpart (V2DImode, operands[0]),
> +                                 operands[1], const0_rtx));
>   else
>     gcc_unreachable ();
>   DONE;
> --cut here--

It works.  Thanks.

Reply via email to