Mercurial > hg > CbC > CbC_gcc
diff gcc/config/i386/sse.md @ 36:855418dad1a3
gcc-4.4-20091020
author | e075725 |
---|---|
date | Tue, 22 Dec 2009 21:19:31 +0900 |
parents | 58ad6c70ea60 |
children | 3bfb6c00c1e0 |
line wrap: on
line diff
--- a/gcc/config/i386/sse.md Thu Sep 24 13:21:57 2009 +0900 +++ b/gcc/config/i386/sse.md Tue Dec 22 21:19:31 2009 +0900 @@ -64,6 +64,10 @@ (define_mode_iterator SSEMODE4S [V4SF V4SI]) (define_mode_iterator SSEMODE2D [V2DF V2DI]) +;; Modes handled by integer vcond pattern +(define_mode_iterator SSEMODE124C8 [V16QI V8HI V4SI + (V2DI "TARGET_SSE4_2 || TARGET_SSE5")]) + ;; Mapping from float mode to required SSE level (define_mode_attr sse [(SF "sse") (DF "sse2") (V4SF "sse") (V2DF "sse2")]) @@ -1493,10 +1497,9 @@ (match_operand:SSEMODEF2P 2 "general_operand" "")))] "SSE_VEC_FLOAT_MODE_P (<MODE>mode)" { - if (ix86_expand_fp_vcond (operands)) - DONE; - else - FAIL; + bool ok = ix86_expand_fp_vcond (operands); + gcc_assert (ok); + DONE; }) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -5837,35 +5840,33 @@ (set_attr "mode" "TI")]) (define_expand "vcond<mode>" - [(set (match_operand:SSEMODEI 0 "register_operand" "") - (if_then_else:SSEMODEI + [(set (match_operand:SSEMODE124C8 0 "register_operand" "") + (if_then_else:SSEMODE124C8 (match_operator 3 "" - [(match_operand:SSEMODEI 4 "nonimmediate_operand" "") - (match_operand:SSEMODEI 5 "nonimmediate_operand" "")]) - (match_operand:SSEMODEI 1 "general_operand" "") - (match_operand:SSEMODEI 2 "general_operand" "")))] - "TARGET_SSE2" -{ - if (ix86_expand_int_vcond (operands)) - DONE; - else - FAIL; + [(match_operand:SSEMODE124C8 4 "nonimmediate_operand" "") + (match_operand:SSEMODE124C8 5 "nonimmediate_operand" "")]) + (match_operand:SSEMODE124C8 1 "general_operand" "") + (match_operand:SSEMODE124C8 2 "general_operand" "")))] + "TARGET_SSE2" +{ + bool ok = ix86_expand_int_vcond (operands); + gcc_assert (ok); + DONE; }) (define_expand "vcondu<mode>" - [(set (match_operand:SSEMODEI 0 "register_operand" "") - (if_then_else:SSEMODEI + [(set (match_operand:SSEMODE124C8 0 "register_operand" "") + (if_then_else:SSEMODE124C8 (match_operator 3 "" - [(match_operand:SSEMODEI 4 "nonimmediate_operand" "") - (match_operand:SSEMODEI 5 "nonimmediate_operand" "")]) - (match_operand:SSEMODEI 1 "general_operand" "") - (match_operand:SSEMODEI 2 "general_operand" "")))] - "TARGET_SSE2" -{ - if (ix86_expand_int_vcond (operands)) - DONE; - else - FAIL; + [(match_operand:SSEMODE124C8 4 "nonimmediate_operand" "") + (match_operand:SSEMODE124C8 5 "nonimmediate_operand" "")]) + (match_operand:SSEMODE124C8 1 "general_operand" "") + (match_operand:SSEMODE124C8 2 "general_operand" "")))] + "TARGET_SSE2" +{ + bool ok = ix86_expand_int_vcond (operands); + gcc_assert (ok); + DONE; }) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;