diff options
author | Jakub Jelinek <jakub@redhat.com> | 2016-05-24 21:12:06 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2016-05-24 21:12:06 +0200 |
commit | a0caac985d4e6d749470313e844c020db522eb5d (patch) | |
tree | 6b8ce83ecb1a517dce0e752e26d7b079f8c995e6 /gcc | |
parent | 7733939d25945a434c25b3d3c5e1637de5c22a36 (diff) | |
download | gcc-a0caac985d4e6d749470313e844c020db522eb5d.zip gcc-a0caac985d4e6d749470313e844c020db522eb5d.tar.gz gcc-a0caac985d4e6d749470313e844c020db522eb5d.tar.bz2 |
sse.md (<sse4_1>_round<ssemodesuffix><avxsizesuffix>): Limit 1st alternative to noavx isa...
* 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.
From-SVN: r236661
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/i386/sse.md | 17 |
2 files changed, 12 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d91c352..90b14cb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2016-05-24 Jakub Jelinek <jakub@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. + * config/i386/sse.md (vec_set<mode>_0): Use sse4_noavx isa instead of sse4 for the first alternative, drop %v from the template and d operand modifier. Split second alternative into one sse4_noavx diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 10ce494..3c60998 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -14996,22 +14996,19 @@ (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>" |