This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH i386 AVX512] [29/n] Add narrowing vpmov.


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]