https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117116
--- Comment #4 from Hongtao Liu <liuhongt at gcc dot gnu.org> --- (In reply to Hongtao Liu from comment #3) > A simple testcase > > typedef long long v4di __attribute__((vector_size(32))); > > v4di > foo (long long a) > { > return __extension__(v4di){(long long)foo, 1, 1, 1}; > } > > reproduced with -O2 -mavx2, failed at least since gcc4.8.1 19843;; sse4_1_pinsrd must come before sse2_loadld since it is preferred. 19844(define_insn "<sse2p4_1>_pinsr<ssemodesuffix>" 19845 [(set (match_operand:PINSR_MODE 0 "register_operand" "=x,x,x,x,v,v,&x") 19846 (vec_merge:PINSR_MODE 19847 (vec_duplicate:PINSR_MODE 19848 (match_operand:<ssescalarmode> 2 "nonimmediate_operand" "jr,jm,r,m,r,m,x")) 19849 (match_operand:PINSR_MODE 1 "register_operand" "0,0,x,x,v,v,x") 19850 (match_operand:SI 3 "const_int_operand")))] 19851 "TARGET_SSE2 19852 && ((unsigned) exact_log2 (INTVAL (operands[3])) 19853 < GET_MODE_NUNITS (<MODE>mode))" Doesn't support V2DI, we're using. 21622(define_insn "vec_concatv2di" 21623 [(set (match_operand:V2DI 0 "register_operand" 21624 "=Yr,*x,x ,v ,x,v ,x,x,v") 21625 (vec_concat:V2DI 21626 (match_operand:DI 1 "register_operand" 21627 " 0, 0,x ,Yv,0,Yv,0,0,v") 21628 (match_operand:DI 2 "nonimmediate_operand" 21629 " jrjm,jrjm,rm,rm,x,Yv,x,m,m")))] 21630 "TARGET_SSE"