On Thu, Aug 28, 2014 at 3:15 PM, Kirill Yukhin <kirill.yuk...@gmail.com> wrote: > Hello, > This patch introduces AVX-512 narrowing moves. > > Bootstrapped. > AVX-512* tests on top of patch-set all pass > under simulator. > > Is it ok for trunk? > > gcc/ > * config/i386/i386-modes.def: Add V12QI, V14QI, V6HI modes. > * config/i386/sse.md > (define_mode_iterator VI4_128_8_256): New. > (define_mode_iterator VI2_128_4_256): New. > (define_mode_iterator PMOV_DST_MODE): Rename to > (define_mode_iterator PMOV_DST_MODE_1): this. > (define_insn "*avx512bw_<code>v32hiv32qi2"): New. > (define_insn "avx512bw_<code>v32hiv32qi2_mask"): Ditto. > (define_expand "avx512bw_<code>v32hiv32qi2_store_mask"): Ditto. > (define_mode_iterator PMOV_DST_MODE_2): Ditto. > (define_insn "*avx512vl_<code><ssedoublemodelower><mode>2"): Ditto. > (define_insn "<avx512>_<code><ssedoublemodelower><mode>2_mask"): > Ditto. > (define_expand > "<avx512>_<code><ssedoublemodelower><mode>2_store_mask"): > Ditto. > (define_mode_iterator PMOV_SRC_MODE_3): New. > (define_mode_attr pmov_dst_3): New. > (define_mode_attr pmov_dst_zeroed_3): New. > (define_mode_attr pmov_suff_3): New. > (define_insn "*avx512vl_<code><mode>v<ssescalarnum>qi2"): New. > (define_insn "*avx512vl_<code>v2div2qi2_store"): New. > (define_insn "avx512vl_<code>v2div2qi2_mask"): New. > (define_insn "avx512vl_<code>v2div2qi2_store_mask"): New. > (define_insn "*avx512vl_<code><mode>v4qi2_store"): New. > (define_insn "avx512vl_<code><mode>v4qi2_mask"): New. > (define_insn "avx512vl_<code><mode>v4qi2_store_mask"): New. > (define_insn "*avx512vl_<code><mode>v8qi2_store"): New. > (define_insn "avx512vl_<code><mode>v8qi2_mask"): New. > (define_insn "avx512vl_<code><mode>v8qi2_store_mask"): New. > (define_mode_iterator PMOV_SRC_MODE_4): New. > (define_mode_attr pmov_dst_4): New. > (define_mode_attr pmov_dst_zeroed_4): New. > (define_mode_attr pmov_suff_4): New. > (define_insn "*avx512vl_<code><mode>v<ssescalarnum>hi2"): New. > (define_insn "*avx512vl_<code><mode>v4hi2_store"): New. > (define_insn "avx512vl_<code><mode>v4hi2_mask"): New. > (define_insn "avx512vl_<code><mode>v4hi2_store_mask"): New. > (define_insn "*avx512vl_<code>v2div2hi2_store"): New. > (define_insn "avx512vl_<code>v2div2hi2_mask"): New. > (define_insn "avx512vl_<code>v2div2hi2_store_mask"): New. > (define_insn "*avx512vl_<code>v2div2si2"): New. > (define_insn "*avx512vl_<code>v2div2si2_store"): New. > (define_insn "avx512vl_<code>v2div2si2_mask"): New. > (define_insn "avx512vl_<code>v2div2si2_store_mask"): New.
Please also mention patterns that were updated from PMOV_DST_MODE to PMOV_DST_MODE_1. There is one inconsistency - existing pattern is named ..._mask_store, new ones are named ..._store_mask. Is there a reason for this difference? Otherwise the patch looks OK, as far as humans can read this code ;) Uros.