https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105288
--- Comment #1 from Hongyu Wang <wwwhhhyyy333 at gmail dot com> --- I think should be these 2? (define_insn_and_split "avx512f_<castmode><avxsizesuffix>_<castmode>" [(set (match_operand:AVX512MODE2P 0 "nonimmediate_operand" "=x,m") (vec_concat:AVX512MODE2P (vec_concat:<ssehalfvecmode> (match_operand:<ssequartermode> 1 "nonimmediate_operand" "xm,x") (unspec:<ssequartermode> [(const_int 0)] UNSPEC_CAST)) (unspec:<ssehalfvecmode> [(const_int 0)] UNSPEC_CAST)))] "TARGET_AVX512F && !(MEM_P (operands[0]) && MEM_P (operands[1]))" (define_insn_and_split "avx512f_<castmode><avxsizesuffix>_256<castmode>" [(set (match_operand:AVX512MODE2P 0 "nonimmediate_operand" "=x,m") (vec_concat:AVX512MODE2P (match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "xm,x") (unspec:<ssehalfvecmode> [(const_int 0)] UNSPEC_CAST)))] "TARGET_AVX512F && !(MEM_P (operands[0]) && MEM_P (operands[1]))" The AVX insn shouldn't have constraints "v"