AVX-512. Extend extract insn patterns

Programming / Compilers / GCC - kyukhin [138bc75d-0d04-0410-961f-82ee72b054a4] - 16 September 2014 06:00 UTC

gcc/
- config/i386/i386.c (ix86_expand_vector_extract): Handle V32HI and V64QI modes.
- config/i386/sse.md (define_mode_iterator VI48F_256): New. (define_mode_attr extract_type): Ditto. (define_mode_attr extract_suf): Ditto. (define_mode_iterator AVX512_VEC): Ditto. (define_expand "_vextract_mask"): Use AVX512_VEC. (define_insn "avx512dq_vextract64x2_1_maskm"): New. (define_insn "avx512dq_vextract64x2_1"): Ditto. (define_mode_attr extract_type_2): Ditto. (define_mode_attr extract_suf_2): Ditto. (define_mode_iterator AVX512_VEC_2): Ditto. (define_expand "_vextract_mask"): Use AVX512_VEC_2 mode iterator. (define_insn "vec_extract_hi__maskm"): Ditto. (define_expand "avx512vl_vextractf128"): Ditto. (define_insn_and_split "vec_extract_lo_"): Delete. (define_insn "vec_extract_lo_"): New. (define_split for V16FI mode): Ditto. (define_insn_and_split "vec_extract_lo_"): Delete. (define_insn "vec_extract_lo_"): New. (define_split for VI8F_256 mode): Ditto. (define_insn "vec_extract_hi_"): Add masking. (define_insn_and_split "vec_extract_lo_"): Delete. (define_insn "vec_extract_lo_"): New. (define_split for VI4F_256 mode): Ditto. (define_insn "vec_extract_lo__maskm"): Ditto. (define_insn "vec_extract_hi__maskm"): Ditto. (define_insn "vec_extract_hi_"): Add masking. (define_mode_iterator VEC_EXTRACT_MODE): Add V64QI and V32HI modes. (define_insn "vcvtph2ps"): Fix pattern condition. (define_insn "avx512f_vextract32x4_1_maskm"): Ditto. (define_insn "avx512f_vextract32x4_1"): Update `type' attribute, remove explicit `memory' attribute calculation.

fd1fee2 AVX-512. Extend extract insn patterns.
gcc/ChangeLog | 50 +++++++
gcc/config/i386/i386.c | 26 ++++
gcc/config/i386/sse.md | 370 +++++++++++++++++++++++++++++++++++-----------
gcc/config/i386/subst.md | 1 +
4 files changed, 359 insertions(+), 88 deletions(-)

Upstream: gcc.gnu.org


  • Share