AVX-512. Add insert insn patterns.
gcc/
* config/i386/i386.c
(CODE_FOR_avx2_extracti128): Rename to ...
(CODE_FOR_avx_vextractf128v4di): this.
(CODE_FOR_avx2_inserti128): Rename to ...
(CODE_FOR_avx_vinsertf128v4di): this.
(ix86_expand_args_builtin): Handle CODE_FOR_avx_vinsertf128v4di,
CODE_FOR_avx_vextractf128v4di.
(ix86_expand_args_builtin): Handle CODE_FOR_avx512dq_vinsertf32x8_mask,
CODE_FOR_avx512dq_vinserti32x8_mask, CODE_FOR_avx512vl_vinsertv4df,
CODE_FOR_avx512vl_vinsertv4di, CODE_FOR_avx512vl_vinsertv8sf,
CODE_FOR_avx512vl_vinsertv8si.
* config/i386/sse.md
(define_expand
"<extract_type>_vinsert<shuffletype><extract_suf>_mask"): Use
AVX512_VEC mode iterator.
(define_insn
"<mask_codefor><extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>"):
Ditto.
(define_expand
"<extract_type_2>_vinsert<shuffletype><extract_suf_2>_mask"): Use
AVX512_VEC_2 mode iterator.
(define_insn "vec_set_lo_<mode><mask_name>"): New.
(define_insn "vec_set_hi_<mode><mask_name>"): Ditto.
(define_expand "avx512vl_vinsert<mode>"): Ditto.
(define_insn "avx2_vec_set_lo_v4di"): Delete.
(define_insn "avx2_vec_set_hi_v4di"): Ditto.
(define_insn "vec_set_lo_<mode><mask_name>"): Add masking.
(define_insn "vec_set_hi_<mode><mask_name>"): Ditto.
(define_insn "vec_set_lo_<mode><mask_name>"): Ditto.
(define_insn "vec_set_hi_<mode><mask_name>"): Ditto.
(define_expand "avx2_extracti128"): Delete.
(define_expand "avx2_inserti128"): Ditto.
Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
From-SVN: r215542