On Fri, Aug 15, 2014 at 1:42 PM, Kirill Yukhin <kirill.yuk...@gmail.com> wrote:
> Hello,
> This patch splits VI48_AVX512F iterator into two.
> It extends vcvtps2udq,vpbroadcastmb2d patterns as well.
>
> Bootstrapped.
> New tests on top of patch-set all pass
> under simulator.
>
> Is it ok for trunk?
>
> gcc/
>         * config/i386/sse.md
>         (define_mode_iterator VI48_AVX512F): Delete.
>         (define_mode_iterator VI4_AVX512VL): New.
>         (define_mode_iterator VI248_AVX512): New.
>         (define_insn 
> "<mask_codefor>avx512f_ufix_notruncv16sfv16si<mask_name><round_name>"):
>         Delete.
>         (define_insn
>         
> "<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>"):
>         New.
>         (define_insn "avx512cd_maskw_vec_dup<mode>"): Macroize.
>         (define_insn "<avx2_avx512f>_ashrv<mode><mask_name>"): Delete.
>         (define_insn "<avx2_avx512bw>_ashrv<mode><mask_name>"): New.

It looks to me that the macroization is somehow wrong for ashrv. I'd
split the mode iterator to:

> +(define_mode_iterator VI248_AVX512
> +  [(V16SI "TARGET_AVX512F") (V8SI "TARGET_AVX2") (V4SI "TARGET_AVX2")
> +   (V32HI "TARGET_AVX512BW")
> +   (V16HI "TARGET_AVX512BW && TARGET_AVX512VL")
> +   (V8HI "TARGET_AVX512BW && TARGET_AVX512VL")
> +   (V8DI "TARGET_AVX512F") (V4DI "TARGET_AVX512VL") (V2DI 
> "TARGET_AVX512VL")])
> +

V4SI, V8SI, V16SI (AVX512F), V8DI (AVX512F), V4DI (AVX512VL), V2DI
(AVX512VL), with AVX2 as the baseline

and

V32HI, V16HI (AVX512VL), V8HI (AVX512VL), with AVX512BW as the baseline

Uros.

Reply via email to