This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH i386 AVX512] [17-2/n] Split VI12_AVX512VL mode iterator. Refactor load/store insns.
- 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: Wed, 20 Aug 2014 09:59:28 +0200
- Subject: Re: [PATCH i386 AVX512] [17-2/n] Split VI12_AVX512VL mode iterator. Refactor load/store insns.
- Authentication-results: sourceware.org; auth=none
- References: <20140815114256 dot GC35144 at msticlxl57 dot ims dot intel dot com> <CAFULd4Z_rbyrQuLCXBmYUY1xmOYYTOQoURVW_gccr-ouDb_26Q at mail dot gmail dot com> <20140818182757 dot GA28898 at msticlxl57 dot ims dot intel dot com> <CAFULd4YtKD26tKDnqn5Ke2fnNyo=v51GvuANujYR1T_H9gwgwg at mail dot gmail dot com> <20140820074541 dot GA37280 at msticlxl57 dot ims dot intel dot com>
On Wed, Aug 20, 2014 at 9:45 AM, Kirill Yukhin <kirill.yukhin@gmail.com> wrote:
> Hello UroÅ
> On 18 Aug 21:05, Uros Bizjak wrote:
>> BTW: Taking these new findings into account, is it possible to split
>> V_AVX512VL mode iterator in the same way to avoid compound conditions
>> in the mode iterator?
> I've refactored this iterator and fixed trunk. I've also updated all
> future changes which deal with this iterator.
>
> Patch in the bottom bootstrapped and avx-512-regtested on simulator.
>
> Is it ok for main trunk?
>
> gcc/
> * gcc/config/i386/sse.md (define_mode_iterator V_AVX512VL): Delete.
> (define_mode_iterator V48_AVX512VL): New.
> (define_mode_iterator V12_AVX512VL): Ditto.
> (define_insn <avx512>_load<mode>_mask): Split into two similar
> patterns which use different mode iterators: V48_AVX512VL V12_AVX512VL.
> Refactor output template.
> (define_insn "<avx512>_store<mode>_mask"): Ditto.
OK, with a couple of small changes below.
Thanks,
Uros.
> + snprintf (buf, 64, "%s%s%s\t{%%1, %%0%%{%%3%%}%%N2|%%0%%{%%3%%}%%N2, %%1}",
sizeof (buf) instead of hardcoded 64.
> + if (misaligned_operand (operands[1], <MODE>mode))
> + align = "u";
> + else
> + align = "a";
> +
> + snprintf (buf, 64, "%s%s%s\t{%%1, %%0%%{%%2%%}|%%0%%{%%2%%}, %%1}",
Also here.