On Tue, May 24, 2016 at 6:52 PM, Jakub Jelinek <ja...@redhat.com> wrote:
> Hi!
>
> Another case (separate patch because I thought I should add an avx512f
> alternative here, but later on found out it is already handled by
> having the vrndscale* patterns defined before these ones
> and having the same RTL for them (except allowing 0 to 255 instead
> of just 0 to 15).
>
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
>
> 2016-05-24  Jakub Jelinek  <ja...@redhat.com>
>
>         * config/i386/sse.md (<sse4_1>_round<ssemodesuffix><avxsizesuffix>):
>         Limit 1st alternative to noavx isa, split 2nd alternative into one
>         noavx and one avx alternative, use *x and Bm in the former and
>         x and m in the latter.

OK.

Thanks,
Uros.

> --- gcc/config/i386/sse.md.jj   2016-05-24 10:55:52.000000000 +0200
> +++ gcc/config/i386/sse.md      2016-05-24 14:50:14.566277449 +0200
> @@ -14986,22 +14996,19 @@ (define_insn "<sse4_1>_ptest<mode>"
>     (set_attr "mode" "<sseinsnmode>")])
>
>  (define_insn "<sse4_1>_round<ssemodesuffix><avxsizesuffix>"
> -  [(set (match_operand:VF_128_256 0 "register_operand" "=Yr,*x")
> +  [(set (match_operand:VF_128_256 0 "register_operand" "=Yr,*x,x")
>         (unspec:VF_128_256
> -         [(match_operand:VF_128_256 1 "vector_operand" "YrBm,*xBm")
> -          (match_operand:SI 2 "const_0_to_15_operand" "n,n")]
> +         [(match_operand:VF_128_256 1 "vector_operand" "YrBm,*xBm,xm")
> +          (match_operand:SI 2 "const_0_to_15_operand" "n,n,n")]
>           UNSPEC_ROUND))]
>    "TARGET_ROUND"
>    "%vround<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}"
> -  [(set_attr "type" "ssecvt")
> -   (set (attr "prefix_data16")
> -     (if_then_else
> -       (match_test "TARGET_AVX")
> -     (const_string "*")
> -     (const_string "1")))
> +  [(set_attr "isa" "noavx,noavx,avx")
> +   (set_attr "type" "ssecvt")
> +   (set_attr "prefix_data16" "1,1,*")
>     (set_attr "prefix_extra" "1")
>     (set_attr "length_immediate" "1")
> -   (set_attr "prefix" "maybe_vex")
> +   (set_attr "prefix" "orig,orig,vex")
>     (set_attr "mode" "<MODE>")])
>
>  (define_expand "<sse4_1>_round<ssemodesuffix>_sfix<avxsizesuffix>"
>
>         Jakub

Reply via email to