On Wed, Sep 10, 2014 at 3:12 PM, Kirill Yukhin <kirill.yuk...@gmail.com> wrote:
> Hello,
> Patch in the bottom extends gather instructions support.
>
> Bootstrapped.
> AVX-512* tests on top of patch-set all pass
> under simulator.
>
> Is it ok for trunk?
>
> gcc/
>         * config/i386/sse.md
>         (define_expand "<avx512>_gathersi<mode>"): Rename from
>         "avx512f_gathersi<mode>".
>         (define_insn "*avx512f_gathersi<mode>"): Use VI48F.
>         (define_insn "*avx512f_gathersi<mode>_2"): Ditto.
>         (define_expand "<avx512>_gatherdi<mode>"): Rename from
>         "avx512f_gatherdi<mode>".
>         (define_insn "*avx512f_gatherdi<mode>"): Use VI48F.
>         (define_insn "*avx512f_gatherdi<mode>_2"): Use VI48F, add 128/256-bit
>         wide versions.
>         (define_expand "<avx512>_scattersi<mode>"): Rename from
>         "avx512f_scattersi<mode>".
>         (define_insn "*avx512f_scattersi<mode>"): Use VI48F.
>         (define_expand "<avx512>_scatterdi<mode>"): Rename from
>         "avx512f_scatterdi<mode>".
>         (define_insn "*avx512f_scatterdi<mode>"): Use VI48F.
>

...

>  (define_insn "*avx512f_gatherdi<mode>_2"
> -  [(set (match_operand:VI48F_512 0 "register_operand" "=&v")
> -       (unspec:VI48F_512
> +  [(set (match_operand:VI48F 0 "register_operand" "=&v")
> +       (unspec:VI48F
>           [(pc)
>            (match_operand:QI 6 "register_operand" "1")
>            (match_operator:<ssescalarmode> 5 "vsib_mem_operator"
> @@ -16762,22 +16762,27 @@
>    "TARGET_AVX512F"
>  {
>    if (<MODE>mode != <VEC_GATHER_SRCDI>mode)
> -    return "v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %t0%{%1%}|%t0%{%1%}, 
> %g5}";
> +    {
> +      if (GET_MODE_SIZE (<MODE>mode) != 64)

Something is wrong here. Mode iterator is VI48F that always has mode
size != 64, so the condition is always true.

> +       return "v<sseintprefix>gatherq<ssemodesuffix>\t{%5, 
> %x0%{%1%}|%t0%{%1%}, %g5}";
> +      else
> +       return "v<sseintprefix>gatherq<ssemodesuffix>\t{%5, 
> %t0%{%1%}|%t0%{%1%}, %g5}";
> +    }
>    return "v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %0%{%1%}|%0%{%1%}, 
> %g5}";

Uros.

Reply via email to