Home | History | Annotate | Download | only in X86

Lines Matching full:sse41

2 ; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=+sse4.1 | FileCheck %s --check-prefix=CHECK --check-prefix=SSE41
6 ; SSE41-LABEL: test_x86_sse41_blendvpd:
7 ; SSE41: ## BB#0:
8 ; SSE41-NEXT: movapd %xmm0, %xmm3
9 ; SSE41-NEXT: movaps %xmm2, %xmm0
10 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
11 ; SSE41-NEXT: movapd %xmm3, %xmm0
12 ; SSE41-NEXT: retl
18 %res = call <2 x double> @llvm.x86.sse41.blendvpd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) ; <<2 x double>> [#uses=1]
21 declare <2 x double> @llvm.x86.sse41.blendvpd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone
25 ; SSE41-LABEL: test_x86_sse41_blendvps:
26 ; SSE41: ## BB#0:
27 ; SSE41-NEXT: movaps %xmm0, %xmm3
28 ; SSE41-NEXT: movaps %xmm2, %xmm0
29 ; SSE41-NEXT: blendvps %xmm1, %xmm3
30 ; SSE41-NEXT: movaps %xmm3, %xmm0
31 ; SSE41-NEXT: retl
37 %res = call <4 x float> @llvm.x86.sse41.blendvps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) ; <<4 x float>> [#uses=1]
40 declare <4 x float> @llvm.x86.sse41.blendvps(<4 x float>, <4 x float>, <4 x float>) nounwind readnone
44 ; SSE41-LABEL: test_x86_sse41_dppd:
45 ; SSE41: ## BB#0:
46 ; SSE41-NEXT: dppd $7, %xmm1, %xmm0
47 ; SSE41-NEXT: retl
53 %res = call <2 x double> @llvm.x86.sse41.dppd(<2 x double> %a0, <2 x double> %a1, i8 7) ; <<2 x double>> [#uses=1]
56 declare <2 x double> @llvm.x86.sse41.dppd(<2 x double>, <2 x double>, i8) nounwind readnone
60 ; SSE41-LABEL: test_x86_sse41_dpps:
61 ; SSE41: ## BB#0:
62 ; SSE41-NEXT: dpps $7, %xmm1, %xmm0
63 ; SSE41-NEXT: retl
69 %res = call <4 x float> @llvm.x86.sse41.dpps(<4 x float> %a0, <4 x float> %a1, i8 7) ; <<4 x float>> [#uses=1]
72 declare <4 x float> @llvm.x86.sse41.dpps(<4 x float>, <4 x float>, i8) nounwind readnone
76 ; SSE41-LABEL: test_x86_sse41_insertps:
77 ; SSE41: ## BB#0:
78 ; SSE41-NEXT: insertps {{.*#+}} xmm0 = zero,xmm1[0],xmm0[2,3]
79 ; SSE41-NEXT: retl
85 %res = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %a0, <4 x float> %a1, i8 17) ; <<4 x float>> [#uses=1]
88 declare <4 x float> @llvm.x86.sse41.insertps(<4 x float>, <4 x float>, i8) nounwind readnone
93 ; SSE41-LABEL: test_x86_sse41_mpsadbw:
94 ; SSE41: ## BB#0:
95 ; SSE41-NEXT: mpsadbw $7, %xmm1, %xmm0
96 ; SSE41-NEXT: retl
102 %res = call <8 x i16> @llvm.x86.sse41.mpsadbw(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <<8 x i16>> [#uses=1]
105 declare <8 x i16> @llvm.x86.sse41.mpsadbw(<16 x i8>, <16 x i8>, i8) nounwind readnone
109 ; SSE41-LABEL: test_x86_sse41_packusdw:
110 ; SSE41: ## BB#0:
111 ; SSE41-NEXT: packusdw %xmm1, %xmm0
112 ; SSE41-NEXT: retl
118 %res = call <8 x i16> @llvm.x86.sse41.packusdw(<4 x i32> %a0, <4 x i32> %a1) ; <<8 x i16>> [#uses=1]
121 declare <8 x i16> @llvm.x86.sse41.packusdw(<4 x i32>, <4 x i32>) nounwind readnone
125 ; SSE41-LABEL: test_x86_sse41_pblendvb:
126 ; SSE41: ## BB#0:
127 ; SSE41-NEXT: movdqa %xmm0, %xmm3
128 ; SSE41-NEXT: movaps %xmm2, %xmm0
129 ; SSE41-NEXT: pblendvb %xmm1, %xmm3
130 ; SSE41-NEXT: movdqa %xmm3, %xmm0
131 ; SSE41-NEXT: retl
137 %res = call <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) ; <<16 x i8>> [#uses=1]
140 declare <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8>, <16 x i8>, <16 x i8>) nounwind readnone
144 ; SSE41-LABEL: test_x86_sse41_phminposuw:
145 ; SSE41: ## BB#0:
146 ; SSE41-NEXT: phminposuw %xmm0, %xmm0
147 ; SSE41-NEXT: retl
153 %res = call <8 x i16> @llvm.x86.sse41.phminposuw(<8 x i16> %a0) ; <<8 x i16>> [#uses=1]
156 declare <8 x i16> @llvm.x86.sse41.phminposuw(<8 x i16>) nounwind readnone
160 ; SSE41-LABEL: test_x86_sse41_pmaxsb:
161 ; SSE41: ## BB#0:
162 ; SSE41-NEXT: pmaxsb %xmm1, %xmm0
163 ; SSE41-NEXT: retl
169 %res = call <16 x i8> @llvm.x86.sse41.pmaxsb(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
172 declare <16 x i8> @llvm.x86.sse41.pmaxsb(<16 x i8>, <16 x i8>) nounwind readnone
176 ; SSE41-LABEL: test_x86_sse41_pmaxsd:
177 ; SSE41: ## BB#0:
178 ; SSE41-NEXT: pmaxsd %xmm1, %xmm0
179 ; SSE41-NEXT: retl
185 %res = call <4 x i32> @llvm.x86.sse41.pmaxsd(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
188 declare <4 x i32> @llvm.x86.sse41.pmaxsd(<4 x i32>, <4 x i32>) nounwind readnone
192 ; SSE41-LABEL: test_x86_sse41_pmaxud:
193 ; SSE41: ## BB#0:
194 ; SSE41-NEXT: pmaxud %xmm1, %xmm0
195 ; SSE41-NEXT: retl
201 %res = call <4 x i32> @llvm.x86.sse41.pmaxud(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
204 declare <4 x i32> @llvm.x86.sse41.pmaxud(<4 x i32>, <4 x i32>) nounwind readnone
208 ; SSE41-LABEL: test_x86_sse41_pmaxuw:
209 ; SSE41: ## BB#0:
210 ; SSE41-NEXT: pmaxuw %xmm1, %xmm0
211 ; SSE41-NEXT: retl
217 %res = call <8 x i16> @llvm.x86.sse41.pmaxuw(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
220 declare <8 x i16> @llvm.x86.sse41.pmaxuw(<8 x i16>, <8 x i16>) nounwind readnone
224 ; SSE41-LABEL: test_x86_sse41_pminsb:
225 ; SSE41: ## BB#0:
226 ; SSE41-NEXT: pminsb %xmm1, %xmm0
227 ; SSE41-NEXT: retl
233 %res = call <16 x i8> @llvm.x86.sse41.pminsb(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
236 declare <16 x i8> @llvm.x86.sse41.pminsb(<16 x i8>, <16 x i8>) nounwind readnone
240 ; SSE41-LABEL: test_x86_sse41_pminsd:
241 ; SSE41: ## BB#0:
242 ; SSE41-NEXT: pminsd %xmm1, %xmm0
243 ; SSE41-NEXT: retl
249 %res = call <4 x i32> @llvm.x86.sse41.pminsd(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
252 declare <4 x i32> @llvm.x86.sse41.pminsd(<4 x i32>, <4 x i32>) nounwind readnone
256 ; SSE41-LABEL: test_x86_sse41_pminud:
257 ; SSE41: ## BB#0:
258 ; SSE41-NEXT: pminud %xmm1, %xmm0
259 ; SSE41-NEXT: retl
265 %res = call <4 x i32> @llvm.x86.sse41.pminud(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
268 declare <4 x i32> @llvm.x86.sse41.pminud(<4 x i32>, <4 x i32>) nounwind readnone
272 ; SSE41-LABEL: test_x86_sse41_pminuw:
273 ; SSE41: ## BB#0:
274 ; SSE41-NEXT: pminuw %xmm1, %xmm0
275 ; SSE41-NEXT: retl
281 %res = call <8 x i16> @llvm.x86.sse41.pminuw(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
284 declare <8 x i16> @llvm.x86.sse41.pminuw(<8 x i16>, <8 x i16>) nounwind readnone
288 ; SSE41-LABEL: test_x86_sse41_pmuldq:
289 ; SSE41: ## BB#0:
290 ; SSE41-NEXT: pmuldq %xmm1, %xmm0
291 ; SSE41-NEXT: retl
297 %res = call <2 x i64> @llvm.x86.sse41.pmuldq(<4 x i32> %a0, <4 x i32> %a1) ; <<2 x i64>> [#uses=1]
300 declare <2 x i64> @llvm.x86.sse41.pmuldq(<4 x i32>, <4 x i32>) nounwind readnone
304 ; SSE41-LABEL: test_x86_sse41_ptestc:
305 ; SSE41: ## BB#0:
306 ; SSE41-NEXT: ptest %xmm1, %xmm0
307 ; SSE41-NEXT: sbbl %eax, %eax
308 ; SSE41-NEXT: andl $1, %eax
309 ; SSE41-NEXT: retl
317 %res = call i32 @llvm.x86.sse41.ptestc(<2 x i64> %a0, <2 x i64> %a1) ; <i32> [#uses=1]
320 declare i32 @llvm.x86.sse41.ptestc(<2 x i64>, <2 x i64>) nounwind readnone
324 ; SSE41-LABEL: test_x86_sse41_ptestnzc:
325 ; SSE41: ## BB#0:
326 ; SSE41-NEXT: xorl %eax, %eax
327 ; SSE41-NEXT: ptest %xmm1, %xmm0
328 ; SSE41-NEXT: seta %al
329 ; SSE41-NEXT: retl
337 %res = call i32 @llvm.x86.sse41.ptestnzc(<2 x i64> %a0, <2 x i64> %a1) ; <i32> [#uses=1]
340 declare i32 @llvm.x86.sse41.ptestnzc(<2 x i64>, <2 x i64>) nounwind readnone
344 ; SSE41-LABEL: test_x86_sse41_ptestz:
345 ; SSE41: ## BB#0:
346 ; SSE41-NEXT: xorl %eax, %eax
347 ; SSE41-NEXT: ptest %xmm1, %xmm0
348 ; SSE41-NEXT: sete %al
349 ; SSE41-NEXT: retl
357 %res = call i32 @llvm.x86.sse41.ptestz(<2 x i64> %a0, <2 x i64> %a1) ; <i32> [#uses=1]
360 declare i32 @llvm.x86.sse41.ptestz(<2 x i64>, <2 x i64>) nounwind readnone
364 ; SSE41-LABEL: test_x86_sse41_round_pd:
365 ; SSE41: ## BB#0:
366 ; SSE41-NEXT: roundpd $7, %xmm0, %xmm0
367 ; SSE41-NEXT: retl
373 %res = call <2 x double> @llvm.x86.sse41.round.pd(<2 x double> %a0, i32 7) ; <<2 x double>> [#uses=1]
376 declare <2 x double> @llvm.x86.sse41.round.pd(<2 x double>, i32) nounwind readnone
380 ; SSE41-LABEL: test_x86_sse41_round_ps:
381 ; SSE41: ## BB#0:
382 ; SSE41-NEXT: roundps $7, %xmm0, %xmm0
383 ; SSE41-NEXT: retl
389 %res = call <4 x float> @llvm.x86.sse41.round.ps(<4 x float> %a0, i32 7) ; <<4 x float>> [#uses=1]
392 declare <4 x float> @llvm.x86.sse41.round.ps(<4 x float>, i32) nounwind readnone
396 ; SSE41-LABEL: test_x86_sse41_round_sd:
397 ; SSE41: ## BB#0:
398 ; SSE41-NEXT: roundsd $7, %xmm1, %xmm0
399 ; SSE41-NEXT: retl
405 %res = call <2 x double> @llvm.x86.sse41.round.sd(<2 x double> %a0, <2 x double> %a1, i32 7) ; <<2 x double>> [#uses=1]
408 declare <2 x double> @llvm.x86.sse41.round.sd(<2 x double>, <2 x double>, i32) nounwind readnone
412 ; SSE41-LABEL: test_x86_sse41_round_ss:
413 ; SSE41: ## BB#0:
414 ; SSE41-NEXT: roundss $7, %xmm1, %xmm0
415 ; SSE41-NEXT: retl
421 %res = call <4 x float> @llvm.x86.sse41.round.ss(<4 x float> %a0, <4 x float> %a1, i32 7) ; <<4 x float>> [#uses=1]
424 declare <4 x float> @llvm.x86.sse41.round.ss(<4 x float>, <4 x float>, i32) nounwind readnone