[PATCH, i386]: Handle TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL in SSE bitops
Uros Bizjak
ubizjak@gmail.com
Sun May 13 17:16:00 GMT 2012
On Sun, May 13, 2012 at 5:16 PM, Uros Bizjak <ubizjak@gmail.com> wrote:
> 2012-05-13 Uros Bizjak <ubizjak@gmail.com>
>
> * config/i386/sse.md (<sse>_andnot<mode>3): Handle
> TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL.
> (<code><mode>3): Ditto.
> (*andnot<mode>3): Ditto.
> (*andnottf3): Ditto.
> (*<code><mode>3): Ditto.
> (<code>tf3): Ditto.
>
> Tested on x86_64-pc-linux-gnu {,-m32}, committed to mainline SVN.
For some reason, the attached part was left out of my previous mail and commit.
Uros.
-------------- next part --------------
Index: config/i386/sse.md
===================================================================
--- config/i386/sse.md (revision 187438)
+++ config/i386/sse.md (working copy)
@@ -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>")))])
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
More information about the Gcc-patches
mailing list