On Fri, Jan 29, 2016 at 5:01 AM, H.J. Lu <[email protected]> wrote:
> sse2_cvtps2pd<mask_name> has
>
> (define_insn "sse2_cvtps2pd<mask_name>"
> [(set (match_operand:V2DF 0 "register_operand" "=v")
> (float_extend:V2DF
> (vec_select:V2SF
> (match_operand:V4SF 1 "vector_operand" "vBm")
> (parallel [(const_int 0) (const_int 1)]))))]
>
> The memory operand size is 8 bytes (2 floats). We should use vm instead
> of vBm. Tested on Linux/x86-64. OK for trunk?
OK with a ChangeLog.
Thanks,
Uros.
>
> H.J.
> diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
> index 84d2b7a..ac96bbf 100644
> --- a/gcc/config/i386/sse.md
> +++ b/gcc/config/i386/sse.md
> @@ -5464,7 +5464,7 @@
> [(set (match_operand:V2DF 0 "register_operand" "=v")
> (float_extend:V2DF
> (vec_select:V2SF
> - (match_operand:V4SF 1 "vector_operand" "vBm")
> + (match_operand:V4SF 1 "vector_operand" "vm")
> (parallel [(const_int 0) (const_int 1)]))))]
> "TARGET_SSE2 && <mask_avx512vl_condition>"
> "%vcvtps2pd\t{%1, %0<mask_operand2>|%0<mask_operand2>, %q1}"