aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-05-24 19:12:06 +0000
committerJakub Jelinek <jakub@redhat.com>2016-05-24 19:12:06 +0000
commit82654cc48372c52c9ce246bd5330fa6fae4668f0 (patch)
tree6b8ce83ecb1a517dce0e752e26d7b079f8c995e6
parent8f439db36b05cfd507be82b53edf456a477c4c32 (diff)
* 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. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236661 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/sse.md17
2 files changed, 12 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d91c35245d5..90b14cb2668 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 10ce494fa20..3c6099808be 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>"