This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH i386 AVX512] [29/n] Add narrowing vpmov.
- From: Uros Bizjak <ubizjak at gmail dot com>
- To: Kirill Yukhin <kirill dot yukhin at gmail dot com>
- Cc: Jakub Jelinek <jakub at redhat dot com>, Richard Henderson <rth at redhat dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Thu, 28 Aug 2014 20:34:26 +0200
- Subject: Re: [PATCH i386 AVX512] [29/n] Add narrowing vpmov.
- Authentication-results: sourceware.org; auth=none
- References: <20140828131547 dot GC24795 at msticlxl57 dot ims dot intel dot com>
On Thu, Aug 28, 2014 at 3:15 PM, Kirill Yukhin <kirill.yukhin@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.