aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2012-05-13 19:17:30 +0200
committerUros Bizjak <uros@gcc.gnu.org>2012-05-13 19:17:30 +0200
commitdaa5129526e2bc12add2253ed76d8bc06e15712c (patch)
treedd67504011bf44d5fe5958fb0b501fd939187c06
parentb8dd089424921cc5b96d3a96b5dc359266bdfc65 (diff)
downloadgcc-daa5129526e2bc12add2253ed76d8bc06e15712c.zip
gcc-daa5129526e2bc12add2253ed76d8bc06e15712c.tar.gz
gcc-daa5129526e2bc12add2253ed76d8bc06e15712c.tar.bz2
* config/i386/sse.md: The other part of my previous commit.
From-SVN: r187440
-rw-r--r--gcc/config/i386/sse.md42
1 files changed, 28 insertions, 14 deletions
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 151e651..70cced4 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -6729,13 +6729,20 @@
(const_string "*")))
(set_attr "prefix" "orig,vex")
(set (attr "mode")
- (cond [(and (not (match_test "TARGET_AVX2"))
- (match_test "GET_MODE_SIZE (<MODE>mode) > 16"))
- (const_string "V8SF")
- (not (match_test "TARGET_SSE2"))
- (const_string "V4SF")
- ]
- (const_string "<sseinsnmode>")))])
+ (cond [(match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL")
+ (const_string "<ssePSmode>")
+ (match_test "TARGET_AVX2")
+ (const_string "<sseinsnmode>")
+ (match_test "TARGET_AVX")
+ (if_then_else
+ (match_test "GET_MODE_SIZE (<MODE>mode) > 16")
+ (const_string "V8SF")
+ (const_string "<sseinsnmode>"))
+ (ior (not (match_test "TARGET_SSE2"))
+ (match_test "optimize_function_for_size_p (cfun)"))
+ (const_string "V4SF")
+ ]
+ (const_string "<sseinsnmode>")))])
(define_expand "<code><mode>3"
[(set (match_operand:VI 0 "register_operand")
@@ -6804,13 +6811,20 @@
(const_string "*")))
(set_attr "prefix" "orig,vex")
(set (attr "mode")
- (cond [(and (not (match_test "TARGET_AVX2"))
- (match_test "GET_MODE_SIZE (<MODE>mode) > 16"))
- (const_string "V8SF")
- (not (match_test "TARGET_SSE2"))
- (const_string "V4SF")
- ]
- (const_string "<sseinsnmode>")))])
+ (cond [(match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL")
+ (const_string "<ssePSmode>")
+ (match_test "TARGET_AVX2")
+ (const_string "<sseinsnmode>")
+ (match_test "TARGET_AVX")
+ (if_then_else
+ (match_test "GET_MODE_SIZE (<MODE>mode) > 16")
+ (const_string "V8SF")
+ (const_string "<sseinsnmode>"))
+ (ior (not (match_test "TARGET_SSE2"))
+ (match_test "optimize_function_for_size_p (cfun)"))
+ (const_string "V4SF")
+ ]
+ (const_string "<sseinsnmode>")))])
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;