comparison 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
comparison
equal deleted inserted replaced
19:58ad6c70ea60 36:855418dad1a3
61 (define_mode_iterator AVXMODEDCVTPS2DQ [V4SI V8SI]) 61 (define_mode_iterator AVXMODEDCVTPS2DQ [V4SI V8SI])
62 62
63 ;; Int-float size matches 63 ;; Int-float size matches
64 (define_mode_iterator SSEMODE4S [V4SF V4SI]) 64 (define_mode_iterator SSEMODE4S [V4SF V4SI])
65 (define_mode_iterator SSEMODE2D [V2DF V2DI]) 65 (define_mode_iterator SSEMODE2D [V2DF V2DI])
66
67 ;; Modes handled by integer vcond pattern
68 (define_mode_iterator SSEMODE124C8 [V16QI V8HI V4SI
69 (V2DI "TARGET_SSE4_2 || TARGET_SSE5")])
66 70
67 ;; Mapping from float mode to required SSE level 71 ;; Mapping from float mode to required SSE level
68 (define_mode_attr sse [(SF "sse") (DF "sse2") (V4SF "sse") (V2DF "sse2")]) 72 (define_mode_attr sse [(SF "sse") (DF "sse2") (V4SF "sse") (V2DF "sse2")])
69 73
70 ;; Mapping from integer vector mode to mnemonic suffix 74 ;; Mapping from integer vector mode to mnemonic suffix
1491 (match_operand:SSEMODEF2P 5 "nonimmediate_operand" "")]) 1495 (match_operand:SSEMODEF2P 5 "nonimmediate_operand" "")])
1492 (match_operand:SSEMODEF2P 1 "general_operand" "") 1496 (match_operand:SSEMODEF2P 1 "general_operand" "")
1493 (match_operand:SSEMODEF2P 2 "general_operand" "")))] 1497 (match_operand:SSEMODEF2P 2 "general_operand" "")))]
1494 "SSE_VEC_FLOAT_MODE_P (<MODE>mode)" 1498 "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
1495 { 1499 {
1496 if (ix86_expand_fp_vcond (operands)) 1500 bool ok = ix86_expand_fp_vcond (operands);
1497 DONE; 1501 gcc_assert (ok);
1498 else 1502 DONE;
1499 FAIL;
1500 }) 1503 })
1501 1504
1502 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1505 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1503 ;; 1506 ;;
1504 ;; Parallel floating point logical operations 1507 ;; Parallel floating point logical operations
5835 "pcmpgtq\t{%2, %0|%0, %2}" 5838 "pcmpgtq\t{%2, %0|%0, %2}"
5836 [(set_attr "type" "ssecmp") 5839 [(set_attr "type" "ssecmp")
5837 (set_attr "mode" "TI")]) 5840 (set_attr "mode" "TI")])
5838 5841
5839 (define_expand "vcond<mode>" 5842 (define_expand "vcond<mode>"
5840 [(set (match_operand:SSEMODEI 0 "register_operand" "") 5843 [(set (match_operand:SSEMODE124C8 0 "register_operand" "")
5841 (if_then_else:SSEMODEI 5844 (if_then_else:SSEMODE124C8
5842 (match_operator 3 "" 5845 (match_operator 3 ""
5843 [(match_operand:SSEMODEI 4 "nonimmediate_operand" "") 5846 [(match_operand:SSEMODE124C8 4 "nonimmediate_operand" "")
5844 (match_operand:SSEMODEI 5 "nonimmediate_operand" "")]) 5847 (match_operand:SSEMODE124C8 5 "nonimmediate_operand" "")])
5845 (match_operand:SSEMODEI 1 "general_operand" "") 5848 (match_operand:SSEMODE124C8 1 "general_operand" "")
5846 (match_operand:SSEMODEI 2 "general_operand" "")))] 5849 (match_operand:SSEMODE124C8 2 "general_operand" "")))]
5847 "TARGET_SSE2" 5850 "TARGET_SSE2"
5848 { 5851 {
5849 if (ix86_expand_int_vcond (operands)) 5852 bool ok = ix86_expand_int_vcond (operands);
5850 DONE; 5853 gcc_assert (ok);
5851 else 5854 DONE;
5852 FAIL;
5853 }) 5855 })
5854 5856
5855 (define_expand "vcondu<mode>" 5857 (define_expand "vcondu<mode>"
5856 [(set (match_operand:SSEMODEI 0 "register_operand" "") 5858 [(set (match_operand:SSEMODE124C8 0 "register_operand" "")
5857 (if_then_else:SSEMODEI 5859 (if_then_else:SSEMODE124C8
5858 (match_operator 3 "" 5860 (match_operator 3 ""
5859 [(match_operand:SSEMODEI 4 "nonimmediate_operand" "") 5861 [(match_operand:SSEMODE124C8 4 "nonimmediate_operand" "")
5860 (match_operand:SSEMODEI 5 "nonimmediate_operand" "")]) 5862 (match_operand:SSEMODE124C8 5 "nonimmediate_operand" "")])
5861 (match_operand:SSEMODEI 1 "general_operand" "") 5863 (match_operand:SSEMODE124C8 1 "general_operand" "")
5862 (match_operand:SSEMODEI 2 "general_operand" "")))] 5864 (match_operand:SSEMODE124C8 2 "general_operand" "")))]
5863 "TARGET_SSE2" 5865 "TARGET_SSE2"
5864 { 5866 {
5865 if (ix86_expand_int_vcond (operands)) 5867 bool ok = ix86_expand_int_vcond (operands);
5866 DONE; 5868 gcc_assert (ok);
5867 else 5869 DONE;
5868 FAIL;
5869 }) 5870 })
5870 5871
5871 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 5872 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5872 ;; 5873 ;;
5873 ;; Parallel bitwise logical operations 5874 ;; Parallel bitwise logical operations