OLD | NEW |
1 ; RUN: llc < %s -march=x86 -mcpu=yonah -mtriple=i386-apple-darwin | FileCheck %s | 1 ; RUN: llc < %s -march=x86 -mcpu=yonah -mtriple=i386-apple-darwin | FileCheck %s |
2 | 2 |
3 | 3 |
4 define <4 x i32> @test1(<4 x i32> %A, <4 x i32> %B) nounwind { | 4 define <4 x i32> @test1(<4 x i32> %A, <4 x i32> %B) nounwind { |
5 ; CHECK: test1: | 5 ; CHECK: test1: |
6 ; CHECK: pcmpgtd | 6 ; CHECK: pcmpgtd |
7 ; CHECK: ret | 7 ; CHECK: ret |
8 | 8 |
9 %C = icmp sgt <4 x i32> %A, %B | 9 %C = icmp sgt <4 x i32> %A, %B |
10 %D = sext <4 x i1> %C to <4 x i32> | 10 %D = sext <4 x i1> %C to <4 x i32> |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 ; CHECK: pand | 60 ; CHECK: pand |
61 ; CHECK: pcmpeqd | 61 ; CHECK: pcmpeqd |
62 ; CHECK: pxor | 62 ; CHECK: pxor |
63 ; CHECK: ret | 63 ; CHECK: ret |
64 %C = icmp ne <2 x i64> %A, %B | 64 %C = icmp ne <2 x i64> %A, %B |
65 %D = sext <2 x i1> %C to <2 x i64> | 65 %D = sext <2 x i1> %C to <2 x i64> |
66 ret <2 x i64> %D | 66 ret <2 x i64> %D |
67 } | 67 } |
68 | 68 |
69 define <2 x i64> @test7(<2 x i64> %A, <2 x i64> %B) nounwind { | 69 define <2 x i64> @test7(<2 x i64> %A, <2 x i64> %B) nounwind { |
70 ; CHECK: [[CONSTSEG:[A-Z0-9_]*]]: | |
71 ; CHECK: .long 2147483648 | |
72 ; CHECK-NEXT: .long 0 | |
73 ; CHECK-NEXT: .long 2147483648 | |
74 ; CHECK-NEXT: .long 0 | |
75 ; CHECK: test7: | 70 ; CHECK: test7: |
76 ; CHECK: movdqa [[CONSTSEG]], [[CONSTREG:%xmm[0-9]*]] | |
77 ; CHECK: pxor [[CONSTREG]] | |
78 ; CHECK: pxor [[CONSTREG]] | |
79 ; CHECK: pcmpgtd %xmm1 | 71 ; CHECK: pcmpgtd %xmm1 |
80 ; CHECK: pshufd $-96 | 72 ; CHECK: pshufd $-96 |
81 ; CHECK: pcmpeqd | 73 ; CHECK: pcmpeqd |
82 ; CHECK: pshufd $-11 | 74 ; CHECK: pshufd $-11 |
83 ; CHECK: pand | 75 ; CHECK: pand |
84 ; CHECK: pshufd $-11 | 76 ; CHECK: pshufd $-11 |
85 ; CHECK: por | 77 ; CHECK: por |
86 ; CHECK: ret | 78 ; CHECK: ret |
87 %C = icmp sgt <2 x i64> %A, %B | 79 %C = icmp sgt <2 x i64> %A, %B |
88 %D = sext <2 x i1> %C to <2 x i64> | 80 %D = sext <2 x i1> %C to <2 x i64> |
89 ret <2 x i64> %D | 81 ret <2 x i64> %D |
90 } | 82 } |
91 | 83 |
92 define <2 x i64> @test8(<2 x i64> %A, <2 x i64> %B) nounwind { | 84 define <2 x i64> @test8(<2 x i64> %A, <2 x i64> %B) nounwind { |
93 ; CHECK: test8: | 85 ; CHECK: test8: |
94 ; CHECK: pxor | |
95 ; CHECK: pxor | |
96 ; CHECK: pcmpgtd %xmm0 | 86 ; CHECK: pcmpgtd %xmm0 |
97 ; CHECK: pshufd $-96 | 87 ; CHECK: pshufd $-96 |
98 ; CHECK: pcmpeqd | 88 ; CHECK: pcmpeqd |
99 ; CHECK: pshufd $-11 | 89 ; CHECK: pshufd $-11 |
100 ; CHECK: pand | 90 ; CHECK: pand |
101 ; CHECK: pshufd $-11 | 91 ; CHECK: pshufd $-11 |
102 ; CHECK: por | 92 ; CHECK: por |
103 ; CHECK: ret | 93 ; CHECK: ret |
104 %C = icmp slt <2 x i64> %A, %B | 94 %C = icmp slt <2 x i64> %A, %B |
105 %D = sext <2 x i1> %C to <2 x i64> | 95 %D = sext <2 x i1> %C to <2 x i64> |
106 ret <2 x i64> %D | 96 ret <2 x i64> %D |
107 } | 97 } |
108 | 98 |
109 define <2 x i64> @test9(<2 x i64> %A, <2 x i64> %B) nounwind { | 99 define <2 x i64> @test9(<2 x i64> %A, <2 x i64> %B) nounwind { |
110 ; CHECK: test9: | 100 ; CHECK: test9: |
111 ; CHECK: pxor | |
112 ; CHECK: pxor | |
113 ; CHECK: pcmpgtd %xmm0 | 101 ; CHECK: pcmpgtd %xmm0 |
114 ; CHECK: pshufd $-96 | 102 ; CHECK: pshufd $-96 |
115 ; CHECK: pcmpeqd | 103 ; CHECK: pcmpeqd |
116 ; CHECK: pshufd $-11 | 104 ; CHECK: pshufd $-11 |
117 ; CHECK: pand | 105 ; CHECK: pand |
118 ; CHECK: pshufd $-11 | 106 ; CHECK: pshufd $-11 |
119 ; CHECK: por | 107 ; CHECK: por |
120 ; CHECK: pcmpeqd | 108 ; CHECK: pcmpeqd |
121 ; CHECK: pxor | 109 ; CHECK: pxor |
122 ; CHECK: ret | 110 ; CHECK: ret |
123 %C = icmp sge <2 x i64> %A, %B | 111 %C = icmp sge <2 x i64> %A, %B |
124 %D = sext <2 x i1> %C to <2 x i64> | 112 %D = sext <2 x i1> %C to <2 x i64> |
125 ret <2 x i64> %D | 113 ret <2 x i64> %D |
126 } | 114 } |
127 | 115 |
128 define <2 x i64> @test10(<2 x i64> %A, <2 x i64> %B) nounwind { | 116 define <2 x i64> @test10(<2 x i64> %A, <2 x i64> %B) nounwind { |
129 ; CHECK: test10: | 117 ; CHECK: test10: |
130 ; CHECK: pxor | |
131 ; CHECK: pxor | |
132 ; CHECK: pcmpgtd %xmm1 | 118 ; CHECK: pcmpgtd %xmm1 |
133 ; CHECK: pshufd $-96 | 119 ; CHECK: pshufd $-96 |
134 ; CHECK: pcmpeqd | 120 ; CHECK: pcmpeqd |
135 ; CHECK: pshufd $-11 | 121 ; CHECK: pshufd $-11 |
136 ; CHECK: pand | 122 ; CHECK: pand |
137 ; CHECK: pshufd $-11 | 123 ; CHECK: pshufd $-11 |
138 ; CHECK: por | 124 ; CHECK: por |
139 ; CHECK: pcmpeqd | 125 ; CHECK: pcmpeqd |
140 ; CHECK: pxor | 126 ; CHECK: pxor |
141 ; CHECK: ret | 127 ; CHECK: ret |
142 %C = icmp sle <2 x i64> %A, %B | 128 %C = icmp sle <2 x i64> %A, %B |
143 %D = sext <2 x i1> %C to <2 x i64> | 129 %D = sext <2 x i1> %C to <2 x i64> |
144 ret <2 x i64> %D | 130 ret <2 x i64> %D |
145 } | 131 } |
146 | 132 |
147 define <2 x i64> @test11(<2 x i64> %A, <2 x i64> %B) nounwind { | 133 define <2 x i64> @test11(<2 x i64> %A, <2 x i64> %B) nounwind { |
148 ; CHECK: [[CONSTSEG:[A-Z0-9_]*]]: | |
149 ; CHECK: .long 2147483648 | |
150 ; CHECK-NEXT: .long 2147483648 | |
151 ; CHECK-NEXT: .long 2147483648 | |
152 ; CHECK-NEXT: .long 2147483648 | |
153 ; CHECK: test11: | 134 ; CHECK: test11: |
154 ; CHECK: movdqa [[CONSTSEG]], [[CONSTREG:%xmm[0-9]*]] | 135 ; CHECK: pxor |
155 ; CHECK: pxor [[CONSTREG]] | 136 ; CHECK: pxor |
156 ; CHECK: pxor [[CONSTREG]] | |
157 ; CHECK: pcmpgtd %xmm1 | 137 ; CHECK: pcmpgtd %xmm1 |
158 ; CHECK: pshufd $-96 | 138 ; CHECK: pshufd $-96 |
159 ; CHECK: pcmpeqd | 139 ; CHECK: pcmpeqd |
160 ; CHECK: pshufd $-11 | 140 ; CHECK: pshufd $-11 |
161 ; CHECK: pand | 141 ; CHECK: pand |
162 ; CHECK: pshufd $-11 | 142 ; CHECK: pshufd $-11 |
163 ; CHECK: por | 143 ; CHECK: por |
164 ; CHECK: ret | 144 ; CHECK: ret |
165 %C = icmp ugt <2 x i64> %A, %B | 145 %C = icmp ugt <2 x i64> %A, %B |
166 %D = sext <2 x i1> %C to <2 x i64> | 146 %D = sext <2 x i1> %C to <2 x i64> |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 ; CHECK: pand | 194 ; CHECK: pand |
215 ; CHECK: pshufd $-11 | 195 ; CHECK: pshufd $-11 |
216 ; CHECK: por | 196 ; CHECK: por |
217 ; CHECK: pcmpeqd | 197 ; CHECK: pcmpeqd |
218 ; CHECK: pxor | 198 ; CHECK: pxor |
219 ; CHECK: ret | 199 ; CHECK: ret |
220 %C = icmp ule <2 x i64> %A, %B | 200 %C = icmp ule <2 x i64> %A, %B |
221 %D = sext <2 x i1> %C to <2 x i64> | 201 %D = sext <2 x i1> %C to <2 x i64> |
222 ret <2 x i64> %D | 202 ret <2 x i64> %D |
223 } | 203 } |
OLD | NEW |