https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121274
--- Comment #5 from Hongtao Liu <liuhongt at gcc dot gnu.org> --- (In reply to Hongtao Liu from comment #4) > Probably caused by r14-1902-g96c3539f2a3813 > > - /* Special case TImode to V1TImode conversions, via V2DI. */ > - if (mode == V1TImode > + /* Special case TImode to 128-bit vector conversions via V2DI. */ > + if (VECTOR_MODE_P (mode) > + && GET_MODE_SIZE (mode) == 16 > && SUBREG_P (op1) > && GET_MODE (SUBREG_REG (op1)) == TImode > && TARGET_64BIT && TARGET_SSE > @@ -709,7 +711,7 @@ ix86_expand_vector_move (machine_mode mode, rtx > operands[]) > emit_move_insn (lo, gen_lowpart (DImode, SUBREG_REG (op1))); > emit_move_insn (hi, gen_highpart (DImode, SUBREG_REG (op1))); > emit_insn (gen_vec_concatv2di (tmp, lo, hi)); > - emit_move_insn (op0, gen_lowpart (V1TImode, tmp)); > + emit_move_insn (op0, gen_lowpart (mode, tmp)); > return; > } We need to add an splitter to convert the blow vec_concat to a simple move 45(insn 10 9 14 2 (set (subreg:V2DI (reg:V4SI 98 [ <retval> ]) 0) 46 (vec_concat:V2DI (subreg:DI (reg:TI 101) 0) 47 (subreg:DI (reg:TI 101) 8))) 8442 {vec_concatv2di} 48 (expr_list:REG_DEAD (reg:TI 101) into (set (subreg:V2DI (reg:V4SI 98) (subreg:V2DI (reg:TI 101))