@@ -4362,9 +4362,8 @@
(match_operand:DF 1 "nonimmediate_operand")))]
"TARGET_USE_VECTOR_FP_CONVERTS
&& optimize_insn_for_speed_p ()
- && reload_completed && SSE_REG_P (operands[0])
- && (!EXT_REX_SSE_REG_P (operands[0])
- || TARGET_AVX512VL)"
+ && reload_completed
+ && SSE_REG_P (operands[0])"
[(set (match_dup 2)
(vec_concat:V4SF
(float_truncate:V2SF
@@ -4393,8 +4392,10 @@
emit_insn (gen_vec_dupv2df (operands[4], operands[1]));
}
else
- emit_insn (gen_sse2_loadlpd (operands[4],
- CONST0_RTX (V2DFmode), operands[1]));
+ /* Emit *vec_concatv2df. */
+ emit_insn (gen_rtx_SET (operands[4],
+ gen_rtx_VEC_CONCAT (V2DFmode, operands[1],
+ CONST0_RTX (DFmode))));
})
;; It's more profitable to split and then extend in the same register.