1; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=corei7 | FileCheck %s
2
3
4define <2 x double> @test_x86_sse41_blend_pd(<2 x double> %a0, <2 x double> %a1) {
5  %1 = call <2 x double> @llvm.x86.sse41.blendpd(<2 x double> %a0, <2 x double> %a1, i32 0)
6  ret <2 x double> %1
7}
8; CHECK-LABEL: test_x86_sse41_blend_pd
9; CHECK-NOT: blendpd
10; CHECK: ret
11
12
13define <4 x float> @test_x86_sse41_blend_ps(<4 x float> %a0, <4 x float> %a1) {
14  %1 = call <4 x float> @llvm.x86.sse41.blendps(<4 x float> %a0, <4 x float> %a1, i32 0)
15  ret <4 x float> %1
16}
17; CHECK-LABEL: test_x86_sse41_blend_ps
18; CHECK-NOT: blendps
19; CHECK: ret
20
21
22define <8 x i16> @test_x86_sse41_pblend_w(<8 x i16> %a0, <8 x i16> %a1) {
23  %1 = call <8 x i16> @llvm.x86.sse41.pblendw(<8 x i16> %a0, <8 x i16> %a1, i32 0)
24  ret <8 x i16> %1
25}
26; CHECK-LABEL: test_x86_sse41_pblend_w
27; CHECK-NOT: pblendw
28; CHECK: ret
29
30
31define <2 x double> @test2_x86_sse41_blend_pd(<2 x double> %a0, <2 x double> %a1) {
32  %1 = call <2 x double> @llvm.x86.sse41.blendpd(<2 x double> %a0, <2 x double> %a1, i32 -1)
33  ret <2 x double> %1
34}
35; CHECK-LABEL: test2_x86_sse41_blend_pd
36; CHECK-NOT: blendpd
37; CHECK: movaps %xmm1, %xmm0
38; CHECK-NEXT: ret
39
40
41define <4 x float> @test2_x86_sse41_blend_ps(<4 x float> %a0, <4 x float> %a1) {
42  %1 = call <4 x float> @llvm.x86.sse41.blendps(<4 x float> %a0, <4 x float> %a1, i32 -1)
43  ret <4 x float> %1
44}
45; CHECK-LABEL: test2_x86_sse41_blend_ps
46; CHECK-NOT: blendps
47; CHECK: movaps %xmm1, %xmm0
48; CHECK-NEXT: ret
49
50
51define <8 x i16> @test2_x86_sse41_pblend_w(<8 x i16> %a0, <8 x i16> %a1) {
52  %1 = call <8 x i16> @llvm.x86.sse41.pblendw(<8 x i16> %a0, <8 x i16> %a1, i32 -1)
53  ret <8 x i16> %1
54}
55; CHECK-LABEL: test2_x86_sse41_pblend_w
56; CHECK-NOT: pblendw
57; CHECK: movaps %xmm1, %xmm0
58; CHECK-NEXT: ret
59
60
61define <2 x double> @test3_x86_sse41_blend_pd(<2 x double> %a0) {
62  %1 = call <2 x double> @llvm.x86.sse41.blendpd(<2 x double> %a0, <2 x double> %a0, i32 7)
63  ret <2 x double> %1
64}
65; CHECK-LABEL: test3_x86_sse41_blend_pd
66; CHECK-NOT: blendpd
67; CHECK: ret
68
69
70define <4 x float> @test3_x86_sse41_blend_ps(<4 x float> %a0) {
71  %1 = call <4 x float> @llvm.x86.sse41.blendps(<4 x float> %a0, <4 x float> %a0, i32 7)
72  ret <4 x float> %1
73}
74; CHECK-LABEL: test3_x86_sse41_blend_ps
75; CHECK-NOT: blendps
76; CHECK: ret
77
78
79define <8 x i16> @test3_x86_sse41_pblend_w(<8 x i16> %a0) {
80  %1 = call <8 x i16> @llvm.x86.sse41.pblendw(<8 x i16> %a0, <8 x i16> %a0, i32 7)
81  ret <8 x i16> %1
82}
83; CHECK-LABEL: test3_x86_sse41_pblend_w
84; CHECK-NOT: pblendw
85; CHECK: ret
86
87
88declare <2 x double> @llvm.x86.sse41.blendpd(<2 x double>, <2 x double>, i32)
89declare <4 x float> @llvm.x86.sse41.blendps(<4 x float>, <4 x float>, i32)
90declare <8 x i16> @llvm.x86.sse41.pblendw(<8 x i16>, <8 x i16>, i32)
91
92