Lines Matching refs:SSE2

2 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefix=SSE2
11 ; SSE2-LABEL: sad_16i8:
12 ; SSE2: # BB#0: # %entry
13 ; SSE2-NEXT: pxor %xmm0, %xmm0
14 ; SSE2-NEXT: movq $-1024, %rax # imm = 0xFC00
15 ; SSE2-NEXT: pxor %xmm1, %xmm1
16 ; SSE2-NEXT: .p2align 4, 0x90
17 ; SSE2-NEXT: .LBB0_1: # %vector.body
18 ; SSE2-NEXT: # =>This Inner Loop Header: Depth=1
19 ; SSE2-NEXT: movdqu a+1024(%rax), %xmm2
20 ; SSE2-NEXT: movdqu b+1024(%rax), %xmm3
21 ; SSE2-NEXT: psadbw %xmm2, %xmm3
22 ; SSE2-NEXT: paddd %xmm3, %xmm1
23 ; SSE2-NEXT: addq $4, %rax
24 ; SSE2-NEXT: jne .LBB0_1
25 ; SSE2-NEXT: # BB#2: # %middle.block
26 ; SSE2-NEXT: paddd %xmm0, %xmm1
27 ; SSE2-NEXT: paddd %xmm0, %xmm0
28 ; SSE2-NEXT: paddd %xmm1, %xmm0
29 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
30 ; SSE2-NEXT: paddd %xmm0, %xmm1
31 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,2,3]
32 ; SSE2-NEXT: paddd %xmm1, %xmm0
33 ; SSE2-NEXT: movd %xmm0, %eax
34 ; SSE2-NEXT: retq
148 ; SSE2-LABEL: sad_32i8:
149 ; SSE2: # BB#0: # %entry
150 ; SSE2-NEXT: pxor %xmm12, %xmm12
151 ; SSE2-NEXT: movq $-1024, %rax # imm = 0xFC00
152 ; SSE2-NEXT: pxor %xmm4, %xmm4
153 ; SSE2-NEXT: pxor %xmm2, %xmm2
154 ; SSE2-NEXT: pxor %xmm0, %xmm0
155 ; SSE2-NEXT: pxor %xmm1, %xmm1
156 ; SSE2-NEXT: pxor %xmm13, %xmm13
157 ; SSE2-NEXT: pxor %xmm15, %xmm15
158 ; SSE2-NEXT: pxor %xmm5, %xmm5
159 ; SSE2-NEXT: pxor %xmm14, %xmm14
160 ; SSE2-NEXT: .p2align 4, 0x90
161 ; SSE2-NEXT: .LBB1_1: # %vector.body
162 ; SSE2-NEXT: # =>This Inner Loop Header: Depth=1
163 ; SSE2-NEXT: movdqa %xmm5, -{{[0-9]+}}(%rsp) # 16-byte Spill
164 ; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) # 16-byte Spill
165 ; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) # 16-byte Spill
166 ; SSE2-NEXT: movdqa %xmm1, -{{[0-9]+}}(%rsp) # 16-byte Spill
167 ; SSE2-NEXT: movdqa a+1040(%rax), %xmm0
168 ; SSE2-NEXT: movdqa a+1024(%rax), %xmm1
169 ; SSE2-NEXT: pshufd {{.*#+}} xmm8 = xmm1[2,3,0,1]
170 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm8 = xmm8[0],xmm12[0],xmm8[1],xmm12[1],xmm8[2],xmm12[2],xmm8[3…
171 ; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm0[2,3,0,1]
172 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm12[0],xmm7[1],xmm12[1],xmm7[2],xmm12[2],xmm7[3…
173 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm12[0],xmm1[1],xmm12[1],xmm1[2],xmm12[2],xmm1[3…
174 ; SSE2-NEXT: movdqa %xmm1, %xmm6
175 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm12[4],xmm1[5],xmm12[5],xmm1[6],xmm12[6],xmm1[7…
176 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm12[0],xmm0[1],xmm12[1],xmm0[2],xmm12[2],xmm0[3…
177 ; SSE2-NEXT: movdqa %xmm0, %xmm2
178 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm12[0],xmm2[1],xmm12[1],xmm2[2],xmm12[2],xmm2[3…
179 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm12[4],xmm0[5],xmm12[5],xmm0[6],xmm12[6],xmm0[7…
180 ; SSE2-NEXT: movdqa b+1040(%rax), %xmm3
181 ; SSE2-NEXT: movdqa b+1024(%rax), %xmm5
182 ; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm3[2,3,0,1]
183 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm12[0],xmm3[1],xmm12[1],xmm3[2],xmm12[2],xmm3[3…
184 ; SSE2-NEXT: movdqa %xmm3, %xmm10
185 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm12[4],xmm3[5],xmm12[5],xmm3[6],xmm12[6],xmm3[7…
186 ; SSE2-NEXT: psubd %xmm3, %xmm0
187 ; SSE2-NEXT: pshufd {{.*#+}} xmm11 = xmm5[2,3,0,1]
188 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm12[0],xmm5[1],xmm12[1],xmm5[2],xmm12[2],xmm5[3…
189 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm10 = xmm10[0],xmm12[0],xmm10[1],xmm12[1],xmm10[2],xmm12[2],xm…
190 ; SSE2-NEXT: psubd %xmm10, %xmm2
191 ; SSE2-NEXT: movdqa %xmm5, %xmm3
192 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm5 = xmm5[4],xmm12[4],xmm5[5],xmm12[5],xmm5[6],xmm12[6],xmm5[7…
193 ; SSE2-NEXT: psubd %xmm5, %xmm1
194 ; SSE2-NEXT: movdqa %xmm7, %xmm5
195 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm7 = xmm7[4],xmm12[4],xmm7[5],xmm12[5],xmm7[6],xmm12[6],xmm7[7…
196 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm12[0],xmm6[1],xmm12[1],xmm6[2],xmm12[2],xmm6[3…
197 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm9 = xmm9[0],xmm12[0],xmm9[1],xmm12[1],xmm9[2],xmm12[2],xmm9[3…
198 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm12[0],xmm3[1],xmm12[1],xmm3[2],xmm12[2],xmm3[3…
199 ; SSE2-NEXT: psubd %xmm3, %xmm6
200 ; SSE2-NEXT: movdqa %xmm4, %xmm10
201 ; SSE2-NEXT: movdqa %xmm9, %xmm4
202 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm9 = xmm9[4],xmm12[4],xmm9[5],xmm12[5],xmm9[6],xmm12[6],xmm9[7…
203 ; SSE2-NEXT: psubd %xmm9, %xmm7
204 ; SSE2-NEXT: movdqa %xmm8, %xmm3
205 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm8 = xmm8[4],xmm12[4],xmm8[5],xmm12[5],xmm8[6],xmm12[6],xmm8[7…
206 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm12[0],xmm5[1],xmm12[1],xmm5[2],xmm12[2],xmm5[3…
207 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm11 = xmm11[0],xmm12[0],xmm11[1],xmm12[1],xmm11[2],xmm12[2],xm…
208 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm12[0],xmm4[1],xmm12[1],xmm4[2],xmm12[2],xmm4[3…
209 ; SSE2-NEXT: psubd %xmm4, %xmm5
210 ; SSE2-NEXT: movdqa %xmm11, %xmm4
211 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm11 = xmm11[4],xmm12[4],xmm11[5],xmm12[5],xmm11[6],xmm12[6],xm…
212 ; SSE2-NEXT: psubd %xmm11, %xmm8
213 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm12[0],xmm3[1],xmm12[1],xmm3[2],xmm12[2],xmm3[3…
214 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm12[0],xmm4[1],xmm12[1],xmm4[2],xmm12[2],xmm4[3…
215 ; SSE2-NEXT: psubd %xmm4, %xmm3
216 ; SSE2-NEXT: movdqa %xmm3, %xmm4
217 ; SSE2-NEXT: psrad $31, %xmm4
218 ; SSE2-NEXT: paddd %xmm4, %xmm3
219 ; SSE2-NEXT: pxor %xmm4, %xmm3
220 ; SSE2-NEXT: movdqa %xmm8, %xmm4
221 ; SSE2-NEXT: psrad $31, %xmm4
222 ; SSE2-NEXT: paddd %xmm4, %xmm8
223 ; SSE2-NEXT: pxor %xmm4, %xmm8
224 ; SSE2-NEXT: movdqa %xmm5, %xmm4
225 ; SSE2-NEXT: psrad $31, %xmm4
226 ; SSE2-NEXT: paddd %xmm4, %xmm5
227 ; SSE2-NEXT: pxor %xmm4, %xmm5
228 ; SSE2-NEXT: movdqa %xmm7, %xmm4
229 ; SSE2-NEXT: psrad $31, %xmm4
230 ; SSE2-NEXT: paddd %xmm4, %xmm7
231 ; SSE2-NEXT: pxor %xmm4, %xmm7
232 ; SSE2-NEXT: movdqa %xmm6, %xmm4
233 ; SSE2-NEXT: psrad $31, %xmm4
234 ; SSE2-NEXT: paddd %xmm4, %xmm6
235 ; SSE2-NEXT: pxor %xmm4, %xmm6
236 ; SSE2-NEXT: movdqa %xmm1, %xmm4
237 ; SSE2-NEXT: psrad $31, %xmm4
238 ; SSE2-NEXT: paddd %xmm4, %xmm1
239 ; SSE2-NEXT: pxor %xmm4, %xmm1
240 ; SSE2-NEXT: movdqa %xmm2, %xmm4
241 ; SSE2-NEXT: psrad $31, %xmm4
242 ; SSE2-NEXT: paddd %xmm4, %xmm2
243 ; SSE2-NEXT: pxor %xmm4, %xmm2
244 ; SSE2-NEXT: movdqa %xmm0, %xmm4
245 ; SSE2-NEXT: psrad $31, %xmm4
246 ; SSE2-NEXT: paddd %xmm4, %xmm0
247 ; SSE2-NEXT: pxor %xmm4, %xmm0
248 ; SSE2-NEXT: movdqa %xmm10, %xmm4
249 ; SSE2-NEXT: paddd %xmm0, %xmm15
250 ; SSE2-NEXT: movdqa -{{[0-9]+}}(%rsp), %xmm0 # 16-byte Reload
251 ; SSE2-NEXT: paddd %xmm2, %xmm13
252 ; SSE2-NEXT: movdqa -{{[0-9]+}}(%rsp), %xmm2 # 16-byte Reload
253 ; SSE2-NEXT: paddd %xmm1, %xmm2
254 ; SSE2-NEXT: movdqa -{{[0-9]+}}(%rsp), %xmm1 # 16-byte Reload
255 ; SSE2-NEXT: paddd %xmm6, %xmm4
256 ; SSE2-NEXT: paddd %xmm7, %xmm14
257 ; SSE2-NEXT: movdqa -{{[0-9]+}}(%rsp), %xmm6 # 16-byte Reload
258 ; SSE2-NEXT: paddd %xmm5, %xmm6
259 ; SSE2-NEXT: movdqa %xmm6, -{{[0-9]+}}(%rsp) # 16-byte Spill
260 ; SSE2-NEXT: movdqa -{{[0-9]+}}(%rsp), %xmm5 # 16-byte Reload
261 ; SSE2-NEXT: paddd %xmm8, %xmm1
262 ; SSE2-NEXT: paddd %xmm3, %xmm0
263 ; SSE2-NEXT: addq $4, %rax
264 ; SSE2-NEXT: jne .LBB1_1
265 ; SSE2-NEXT: # BB#2: # %middle.block
266 ; SSE2-NEXT: paddd %xmm15, %xmm2
267 ; SSE2-NEXT: paddd %xmm14, %xmm1
268 ; SSE2-NEXT: paddd %xmm13, %xmm4
269 ; SSE2-NEXT: paddd %xmm5, %xmm0
270 ; SSE2-NEXT: paddd %xmm4, %xmm0
271 ; SSE2-NEXT: paddd %xmm2, %xmm1
272 ; SSE2-NEXT: paddd %xmm0, %xmm1
273 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,0,1]
274 ; SSE2-NEXT: paddd %xmm1, %xmm0
275 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
276 ; SSE2-NEXT: paddd %xmm0, %xmm1
277 ; SSE2-NEXT: movd %xmm1, %eax
278 ; SSE2-NEXT: retq
399 ; SSE2-LABEL: sad_avx64i8:
400 ; SSE2: # BB#0: # %entry
401 ; SSE2-NEXT: subq $232, %rsp
402 ; SSE2-NEXT: pxor %xmm8, %xmm8
403 ; SSE2-NEXT: movq $-1024, %rax # imm = 0xFC00
404 ; SSE2-NEXT: pxor %xmm5, %xmm5
405 ; SSE2-NEXT: pxor %xmm2, %xmm2
406 ; SSE2-NEXT: pxor %xmm1, %xmm1
407 ; SSE2-NEXT: pxor %xmm3, %xmm3
408 ; SSE2-NEXT: pxor %xmm6, %xmm6
409 ; SSE2-NEXT: pxor %xmm0, %xmm0
410 ; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) # 16-byte Spill
411 ; SSE2-NEXT: pxor %xmm13, %xmm13
412 ; SSE2-NEXT: pxor %xmm10, %xmm10
413 ; SSE2-NEXT: pxor %xmm0, %xmm0
414 ; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) # 16-byte Spill
415 ; SSE2-NEXT: pxor %xmm12, %xmm12
416 ; SSE2-NEXT: pxor %xmm0, %xmm0
417 ; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) # 16-byte Spill
418 ; SSE2-NEXT: pxor %xmm11, %xmm11
419 ; SSE2-NEXT: pxor %xmm15, %xmm15
420 ; SSE2-NEXT: pxor %xmm9, %xmm9
421 ; SSE2-NEXT: pxor %xmm7, %xmm7
422 ; SSE2-NEXT: pxor %xmm0, %xmm0
423 ; SSE2-NEXT: .p2align 4, 0x90
424 ; SSE2-NEXT: .LBB2_1: # %vector.body
425 ; SSE2-NEXT: # =>This Inner Loop Header: Depth=1
426 ; SSE2-NEXT: movdqa %xmm12, {{[0-9]+}}(%rsp) # 16-byte Spill
427 ; SSE2-NEXT: movdqa %xmm7, -{{[0-9]+}}(%rsp) # 16-byte Spill
428 ; SSE2-NEXT: movdqa %xmm15, {{[0-9]+}}(%rsp) # 16-byte Spill
429 ; SSE2-NEXT: movdqa %xmm0, (%rsp) # 16-byte Spill
430 ; SSE2-NEXT: movdqa %xmm11, {{[0-9]+}}(%rsp) # 16-byte Spill
431 ; SSE2-NEXT: movdqa %xmm9, {{[0-9]+}}(%rsp) # 16-byte Spill
432 ; SSE2-NEXT: movdqa %xmm3, {{[0-9]+}}(%rsp) # 16-byte Spill
433 ; SSE2-NEXT: movdqa %xmm2, {{[0-9]+}}(%rsp) # 16-byte Spill
434 ; SSE2-NEXT: movdqa %xmm6, {{[0-9]+}}(%rsp) # 16-byte Spill
435 ; SSE2-NEXT: movdqa %xmm1, {{[0-9]+}}(%rsp) # 16-byte Spill
436 ; SSE2-NEXT: movdqa %xmm5, {{[0-9]+}}(%rsp) # 16-byte Spill
437 ; SSE2-NEXT: movdqa %xmm13, {{[0-9]+}}(%rsp) # 16-byte Spill
438 ; SSE2-NEXT: movdqa %xmm10, {{[0-9]+}}(%rsp) # 16-byte Spill
439 ; SSE2-NEXT: movdqa a+1040(%rax), %xmm13
440 ; SSE2-NEXT: movdqa a+1024(%rax), %xmm1
441 ; SSE2-NEXT: movdqa a+1056(%rax), %xmm3
442 ; SSE2-NEXT: movdqa a+1072(%rax), %xmm6
443 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm3[2,3,0,1]
444 ; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) # 16-byte Spill
445 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm8[0],xmm3[1],xmm8[1],xmm3[2],xmm8[2],xmm3[3],x…
446 ; SSE2-NEXT: movdqa %xmm3, %xmm12
447 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm1[2,3,0,1]
448 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1],xmm2[2],xmm8[2],xmm2[3],x…
449 ; SSE2-NEXT: pshufd {{.*#+}} xmm10 = xmm13[2,3,0,1]
450 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm10 = xmm10[0],xmm8[0],xmm10[1],xmm8[1],xmm10[2],xmm8[2],xmm10…
451 ; SSE2-NEXT: movdqa %xmm10, -{{[0-9]+}}(%rsp) # 16-byte Spill
452 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm10 = xmm10[4],xmm8[4],xmm10[5],xmm8[5],xmm10[6],xmm8[6],xmm10…
453 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm8[0],xmm3[1],xmm8[1],xmm3[2],xmm8[2],xmm3[3],x…
454 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],x…
455 ; SSE2-NEXT: movdqa %xmm1, %xmm0
456 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1],xmm0[2],xmm8[2],xmm0[3],x…
457 ; SSE2-NEXT: movdqa %xmm0, %xmm15
458 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],x…
459 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm13 = xmm13[0],xmm8[0],xmm13[1],xmm8[1],xmm13[2],xmm8[2],xmm13…
460 ; SSE2-NEXT: movdqa %xmm13, %xmm0
461 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1],xmm0[2],xmm8[2],xmm0[3],x…
462 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm13 = xmm13[4],xmm8[4],xmm13[5],xmm8[5],xmm13[6],xmm8[6],xmm13…
463 ; SSE2-NEXT: movdqa b+1040(%rax), %xmm7
464 ; SSE2-NEXT: movdqa b+1024(%rax), %xmm11
465 ; SSE2-NEXT: movdqa b+1056(%rax), %xmm9
466 ; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm7[2,3,0,1]
467 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm8[0],xmm7[1],xmm8[1],xmm7[2],xmm8[2],xmm7[3],x…
468 ; SSE2-NEXT: movdqa %xmm7, %xmm4
469 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm7 = xmm7[4],xmm8[4],xmm7[5],xmm8[5],xmm7[6],xmm8[6],xmm7[7],x…
470 ; SSE2-NEXT: psubd %xmm7, %xmm13
471 ; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm11[2,3,0,1]
472 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm11 = xmm11[0],xmm8[0],xmm11[1],xmm8[1],xmm11[2],xmm8[2],xmm11…
473 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm8[0],xmm4[1],xmm8[1],xmm4[2],xmm8[2],xmm4[3],x…
474 ; SSE2-NEXT: psubd %xmm4, %xmm0
475 ; SSE2-NEXT: movdqa %xmm0, {{[0-9]+}}(%rsp) # 16-byte Spill
476 ; SSE2-NEXT: movdqa %xmm11, %xmm4
477 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm11 = xmm11[4],xmm8[4],xmm11[5],xmm8[5],xmm11[6],xmm8[6],xmm11…
478 ; SSE2-NEXT: psubd %xmm11, %xmm1
479 ; SSE2-NEXT: pshufd {{.*#+}} xmm14 = xmm9[2,3,0,1]
480 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm9 = xmm9[0],xmm8[0],xmm9[1],xmm8[1],xmm9[2],xmm8[2],xmm9[3],x…
481 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm8[0],xmm4[1],xmm8[1],xmm4[2],xmm8[2],xmm4[3],x…
482 ; SSE2-NEXT: psubd %xmm4, %xmm15
483 ; SSE2-NEXT: movdqa %xmm15, -{{[0-9]+}}(%rsp) # 16-byte Spill
484 ; SSE2-NEXT: movdqa %xmm9, %xmm4
485 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm8[0],xmm5[1],xmm8[1],xmm5[2],xmm8[2],xmm5[3],x…
486 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm9 = xmm9[0],xmm8[0],xmm9[1],xmm8[1],xmm9[2],xmm8[2],xmm9[3],x…
487 ; SSE2-NEXT: psubd %xmm9, %xmm3
488 ; SSE2-NEXT: movdqa %xmm5, %xmm0
489 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm5 = xmm5[4],xmm8[4],xmm5[5],xmm8[5],xmm5[6],xmm8[6],xmm5[7],x…
490 ; SSE2-NEXT: psubd %xmm5, %xmm10
491 ; SSE2-NEXT: movdqa %xmm2, %xmm15
492 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm8[4],xmm2[5],xmm8[5],xmm2[6],xmm8[6],xmm2[7],x…
493 ; SSE2-NEXT: movdqa -{{[0-9]+}}(%rsp), %xmm5 # 16-byte Reload
494 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm8[0],xmm5[1],xmm8[1],xmm5[2],xmm8[2],xmm5[3],x…
495 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm8[0],xmm7[1],xmm8[1],xmm7[2],xmm8[2],xmm7[3],x…
496 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1],xmm0[2],xmm8[2],xmm0[3],x…
497 ; SSE2-NEXT: psubd %xmm0, %xmm5
498 ; SSE2-NEXT: movdqa %xmm5, -{{[0-9]+}}(%rsp) # 16-byte Spill
499 ; SSE2-NEXT: movdqa %xmm7, %xmm0
500 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm7 = xmm7[4],xmm8[4],xmm7[5],xmm8[5],xmm7[6],xmm8[6],xmm7[7],x…
501 ; SSE2-NEXT: psubd %xmm7, %xmm2
502 ; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) # 16-byte Spill
503 ; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm6[2,3,0,1]
504 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm8[0],xmm6[1],xmm8[1],xmm6[2],xmm8[2],xmm6[3],x…
505 ; SSE2-NEXT: movdqa -{{[0-9]+}}(%rsp), %xmm2 # 16-byte Reload
506 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1],xmm2[2],xmm8[2],xmm2[3],x…
507 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm15 = xmm15[0],xmm8[0],xmm15[1],xmm8[1],xmm15[2],xmm8[2],xmm15…
508 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1],xmm0[2],xmm8[2],xmm0[3],x…
509 ; SSE2-NEXT: psubd %xmm0, %xmm15
510 ; SSE2-NEXT: movdqa %xmm2, %xmm11
511 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1],xmm2[2],xmm8[2],xmm2[3],x…
512 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm12 = xmm12[4],xmm8[4],xmm12[5],xmm8[5],xmm12[6],xmm8[6],xmm12…
513 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm14 = xmm14[0],xmm8[0],xmm14[1],xmm8[1],xmm14[2],xmm8[2],xmm14…
514 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm4 = xmm4[4],xmm8[4],xmm4[5],xmm8[5],xmm4[6],xmm8[6],xmm4[7],x…
515 ; SSE2-NEXT: psubd %xmm4, %xmm12
516 ; SSE2-NEXT: movdqa %xmm14, %xmm0
517 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm14 = xmm14[0],xmm8[0],xmm14[1],xmm8[1],xmm14[2],xmm8[2],xmm14…
518 ; SSE2-NEXT: psubd %xmm14, %xmm2
519 ; SSE2-NEXT: movdqa %xmm2, %xmm14
520 ; SSE2-NEXT: movdqa %xmm6, %xmm9
521 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm8[0],xmm6[1],xmm8[1],xmm6[2],xmm8[2],xmm6[3],x…
522 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm11 = xmm11[4],xmm8[4],xmm11[5],xmm8[5],xmm11[6],xmm8[6],xmm11…
523 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm8[4],xmm0[5],xmm8[5],xmm0[6],xmm8[6],xmm0[7],x…
524 ; SSE2-NEXT: psubd %xmm0, %xmm11
525 ; SSE2-NEXT: movdqa b+1072(%rax), %xmm0
526 ; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm0[2,3,0,1]
527 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1],xmm0[2],xmm8[2],xmm0[3],x…
528 ; SSE2-NEXT: movdqa %xmm0, %xmm5
529 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1],xmm0[2],xmm8[2],xmm0[3],x…
530 ; SSE2-NEXT: psubd %xmm0, %xmm6
531 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm9 = xmm9[4],xmm8[4],xmm9[5],xmm8[5],xmm9[6],xmm8[6],xmm9[7],x…
532 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm5 = xmm5[4],xmm8[4],xmm5[5],xmm8[5],xmm5[6],xmm8[6],xmm5[7],x…
533 ; SSE2-NEXT: psubd %xmm5, %xmm9
534 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm8[0],xmm7[1],xmm8[1],xmm7[2],xmm8[2],xmm7[3],x…
535 ; SSE2-NEXT: movdqa %xmm7, %xmm0
536 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm7 = xmm7[0],xmm8[0],xmm7[1],xmm8[1],xmm7[2],xmm8[2],xmm7[3],x…
537 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm8[0],xmm4[1],xmm8[1],xmm4[2],xmm8[2],xmm4[3],x…
538 ; SSE2-NEXT: movdqa %xmm4, %xmm5
539 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm8[0],xmm4[1],xmm8[1],xmm4[2],xmm8[2],xmm4[3],x…
540 ; SSE2-NEXT: psubd %xmm4, %xmm7
541 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm8[4],xmm0[5],xmm8[5],xmm0[6],xmm8[6],xmm0[7],x…
542 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm5 = xmm5[4],xmm8[4],xmm5[5],xmm8[5],xmm5[6],xmm8[6],xmm5[7],x…
543 ; SSE2-NEXT: psubd %xmm5, %xmm0
544 ; SSE2-NEXT: movdqa %xmm0, %xmm4
545 ; SSE2-NEXT: psrad $31, %xmm4
546 ; SSE2-NEXT: paddd %xmm4, %xmm0
547 ; SSE2-NEXT: pxor %xmm4, %xmm0
548 ; SSE2-NEXT: movdqa %xmm7, %xmm4
549 ; SSE2-NEXT: psrad $31, %xmm4
550 ; SSE2-NEXT: paddd %xmm4, %xmm7
551 ; SSE2-NEXT: pxor %xmm4, %xmm7
552 ; SSE2-NEXT: movdqa %xmm9, %xmm4
553 ; SSE2-NEXT: psrad $31, %xmm4
554 ; SSE2-NEXT: paddd %xmm4, %xmm9
555 ; SSE2-NEXT: pxor %xmm4, %xmm9
556 ; SSE2-NEXT: movdqa %xmm6, %xmm4
557 ; SSE2-NEXT: psrad $31, %xmm4
558 ; SSE2-NEXT: paddd %xmm4, %xmm6
559 ; SSE2-NEXT: pxor %xmm4, %xmm6
560 ; SSE2-NEXT: movdqa %xmm6, -{{[0-9]+}}(%rsp) # 16-byte Spill
561 ; SSE2-NEXT: movdqa %xmm11, %xmm4
562 ; SSE2-NEXT: psrad $31, %xmm4
563 ; SSE2-NEXT: paddd %xmm4, %xmm11
564 ; SSE2-NEXT: pxor %xmm4, %xmm11
565 ; SSE2-NEXT: movdqa %xmm14, %xmm4
566 ; SSE2-NEXT: psrad $31, %xmm4
567 ; SSE2-NEXT: paddd %xmm4, %xmm14
568 ; SSE2-NEXT: pxor %xmm4, %xmm14
569 ; SSE2-NEXT: movdqa %xmm12, %xmm4
570 ; SSE2-NEXT: psrad $31, %xmm4
571 ; SSE2-NEXT: paddd %xmm4, %xmm12
572 ; SSE2-NEXT: pxor %xmm4, %xmm12
573 ; SSE2-NEXT: movdqa %xmm12, {{[0-9]+}}(%rsp) # 16-byte Spill
574 ; SSE2-NEXT: movdqa %xmm15, %xmm4
575 ; SSE2-NEXT: psrad $31, %xmm4
576 ; SSE2-NEXT: paddd %xmm4, %xmm15
577 ; SSE2-NEXT: pxor %xmm4, %xmm15
578 ; SSE2-NEXT: movdqa -{{[0-9]+}}(%rsp), %xmm2 # 16-byte Reload
579 ; SSE2-NEXT: movdqa %xmm2, %xmm4
580 ; SSE2-NEXT: psrad $31, %xmm4
581 ; SSE2-NEXT: paddd %xmm4, %xmm2
582 ; SSE2-NEXT: pxor %xmm4, %xmm2
583 ; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) # 16-byte Spill
584 ; SSE2-NEXT: movdqa -{{[0-9]+}}(%rsp), %xmm2 # 16-byte Reload
585 ; SSE2-NEXT: movdqa %xmm2, %xmm4
586 ; SSE2-NEXT: psrad $31, %xmm4
587 ; SSE2-NEXT: paddd %xmm4, %xmm2
588 ; SSE2-NEXT: pxor %xmm4, %xmm2
589 ; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) # 16-byte Spill
590 ; SSE2-NEXT: movdqa %xmm10, %xmm4
591 ; SSE2-NEXT: psrad $31, %xmm4
592 ; SSE2-NEXT: paddd %xmm4, %xmm10
593 ; SSE2-NEXT: pxor %xmm4, %xmm10
594 ; SSE2-NEXT: movdqa %xmm3, %xmm4
595 ; SSE2-NEXT: psrad $31, %xmm4
596 ; SSE2-NEXT: paddd %xmm4, %xmm3
597 ; SSE2-NEXT: pxor %xmm4, %xmm3
598 ; SSE2-NEXT: movdqa -{{[0-9]+}}(%rsp), %xmm2 # 16-byte Reload
599 ; SSE2-NEXT: movdqa %xmm2, %xmm4
600 ; SSE2-NEXT: psrad $31, %xmm4
601 ; SSE2-NEXT: paddd %xmm4, %xmm2
602 ; SSE2-NEXT: pxor %xmm4, %xmm2
603 ; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) # 16-byte Spill
604 ; SSE2-NEXT: movdqa %xmm1, %xmm4
605 ; SSE2-NEXT: psrad $31, %xmm4
606 ; SSE2-NEXT: paddd %xmm4, %xmm1
607 ; SSE2-NEXT: pxor %xmm4, %xmm1
608 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm2 # 16-byte Reload
609 ; SSE2-NEXT: movdqa %xmm2, %xmm4
610 ; SSE2-NEXT: psrad $31, %xmm4
611 ; SSE2-NEXT: paddd %xmm4, %xmm2
612 ; SSE2-NEXT: pxor %xmm4, %xmm2
613 ; SSE2-NEXT: movdqa %xmm2, %xmm5
614 ; SSE2-NEXT: movdqa %xmm13, %xmm4
615 ; SSE2-NEXT: psrad $31, %xmm4
616 ; SSE2-NEXT: paddd %xmm4, %xmm13
617 ; SSE2-NEXT: pxor %xmm4, %xmm13
618 ; SSE2-NEXT: movdqa -{{[0-9]+}}(%rsp), %xmm2 # 16-byte Reload
619 ; SSE2-NEXT: paddd %xmm13, %xmm2
620 ; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp) # 16-byte Spill
621 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm12 # 16-byte Reload
622 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm6 # 16-byte Reload
623 ; SSE2-NEXT: paddd %xmm5, %xmm6
624 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm4 # 16-byte Reload
625 ; SSE2-NEXT: paddd %xmm1, %xmm4
626 ; SSE2-NEXT: movdqa %xmm4, {{[0-9]+}}(%rsp) # 16-byte Spill
627 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm2 # 16-byte Reload
628 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm5 # 16-byte Reload
629 ; SSE2-NEXT: paddd -{{[0-9]+}}(%rsp), %xmm5 # 16-byte Folded Reload
630 ; SSE2-NEXT: movdqa -{{[0-9]+}}(%rsp), %xmm4 # 16-byte Reload
631 ; SSE2-NEXT: paddd %xmm3, %xmm4
632 ; SSE2-NEXT: movdqa %xmm4, -{{[0-9]+}}(%rsp) # 16-byte Spill
633 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3 # 16-byte Reload
634 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm4 # 16-byte Reload
635 ; SSE2-NEXT: paddd %xmm10, %xmm4
636 ; SSE2-NEXT: movdqa %xmm4, {{[0-9]+}}(%rsp) # 16-byte Spill
637 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm13 # 16-byte Reload
638 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm10 # 16-byte Reload
639 ; SSE2-NEXT: paddd -{{[0-9]+}}(%rsp), %xmm13 # 16-byte Folded Reload
640 ; SSE2-NEXT: paddd -{{[0-9]+}}(%rsp), %xmm3 # 16-byte Folded Reload
641 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm1 # 16-byte Reload
642 ; SSE2-NEXT: paddd %xmm15, %xmm1
643 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm15 # 16-byte Reload
644 ; SSE2-NEXT: paddd {{[0-9]+}}(%rsp), %xmm12 # 16-byte Folded Reload
645 ; SSE2-NEXT: movdqa -{{[0-9]+}}(%rsp), %xmm4 # 16-byte Reload
646 ; SSE2-NEXT: paddd %xmm14, %xmm4
647 ; SSE2-NEXT: movdqa %xmm4, -{{[0-9]+}}(%rsp) # 16-byte Spill
648 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm4 # 16-byte Reload
649 ; SSE2-NEXT: paddd %xmm11, %xmm4
650 ; SSE2-NEXT: movdqa %xmm4, {{[0-9]+}}(%rsp) # 16-byte Spill
651 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm11 # 16-byte Reload
652 ; SSE2-NEXT: paddd -{{[0-9]+}}(%rsp), %xmm15 # 16-byte Folded Reload
653 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm4 # 16-byte Reload
654 ; SSE2-NEXT: paddd %xmm9, %xmm4
655 ; SSE2-NEXT: movdqa %xmm4, {{[0-9]+}}(%rsp) # 16-byte Spill
656 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm9 # 16-byte Reload
657 ; SSE2-NEXT: movdqa -{{[0-9]+}}(%rsp), %xmm4 # 16-byte Reload
658 ; SSE2-NEXT: paddd %xmm7, %xmm4
659 ; SSE2-NEXT: movdqa %xmm4, -{{[0-9]+}}(%rsp) # 16-byte Spill
660 ; SSE2-NEXT: movdqa -{{[0-9]+}}(%rsp), %xmm7 # 16-byte Reload
661 ; SSE2-NEXT: movdqa (%rsp), %xmm4 # 16-byte Reload
662 ; SSE2-NEXT: paddd %xmm0, %xmm4
663 ; SSE2-NEXT: movdqa %xmm4, (%rsp) # 16-byte Spill
664 ; SSE2-NEXT: movdqa (%rsp), %xmm0 # 16-byte Reload
665 ; SSE2-NEXT: addq $4, %rax
666 ; SSE2-NEXT: jne .LBB2_1
667 ; SSE2-NEXT: # BB#2: # %middle.block
668 ; SSE2-NEXT: paddd -{{[0-9]+}}(%rsp), %xmm1 # 16-byte Folded Reload
669 ; SSE2-NEXT: paddd %xmm7, %xmm13
670 ; SSE2-NEXT: paddd -{{[0-9]+}}(%rsp), %xmm5 # 16-byte Folded Reload
671 ; SSE2-NEXT: paddd %xmm15, %xmm6
672 ; SSE2-NEXT: paddd %xmm11, %xmm3
673 ; SSE2-NEXT: paddd %xmm0, %xmm10
674 ; SSE2-NEXT: paddd %xmm12, %xmm2
675 ; SSE2-NEXT: movdqa -{{[0-9]+}}(%rsp), %xmm0 # 16-byte Reload
676 ; SSE2-NEXT: paddd %xmm9, %xmm0
677 ; SSE2-NEXT: paddd %xmm2, %xmm0
678 ; SSE2-NEXT: paddd %xmm3, %xmm10
679 ; SSE2-NEXT: paddd %xmm5, %xmm6
680 ; SSE2-NEXT: paddd %xmm1, %xmm13
681 ; SSE2-NEXT: paddd %xmm6, %xmm13
682 ; SSE2-NEXT: paddd %xmm0, %xmm10
683 ; SSE2-NEXT: paddd %xmm13, %xmm10
684 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm10[2,3,0,1]
685 ; SSE2-NEXT: paddd %xmm10, %xmm0
686 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
687 ; SSE2-NEXT: paddd %xmm0, %xmm1
688 ; SSE2-NEXT: movd %xmm1, %eax
689 ; SSE2-NEXT: addq $232, %rsp
690 ; SSE2-NEXT: retq
884 ; SSE2-LABEL: sad_2i8:
885 ; SSE2: # BB#0: # %entry
886 ; SSE2-NEXT: pxor %xmm0, %xmm0
887 ; SSE2-NEXT: movq $-1024, %rax # imm = 0xFC00
888 ; SSE2-NEXT: movl $65535, %ecx # imm = 0xFFFF
889 ; SSE2-NEXT: movd %ecx, %xmm1
890 ; SSE2-NEXT: .p2align 4, 0x90
891 ; SSE2-NEXT: .LBB3_1: # %vector.body
892 ; SSE2-NEXT: # =>This Inner Loop Header: Depth=1
893 ; SSE2-NEXT: movd {{.*#+}} xmm2 = mem[0],zero,zero,zero
894 ; SSE2-NEXT: movd {{.*#+}} xmm3 = mem[0],zero,zero,zero
895 ; SSE2-NEXT: pand %xmm1, %xmm3
896 ; SSE2-NEXT: pand %xmm1, %xmm2
897 ; SSE2-NEXT: psadbw %xmm3, %xmm2
898 ; SSE2-NEXT: paddq %xmm2, %xmm0
899 ; SSE2-NEXT: addq $4, %rax
900 ; SSE2-NEXT: jne .LBB3_1
901 ; SSE2-NEXT: # BB#2: # %middle.block
902 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
903 ; SSE2-NEXT: paddq %xmm0, %xmm1
904 ; SSE2-NEXT: movd %xmm1, %eax
905 ; SSE2-NEXT: retq