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