blob: 5ca8009828276a8b1418874a09f2066fca303521 [file] [log] [blame]
Craig Topper551862d2013-10-24 07:00:06 +00001; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=-avx,+sse4.2 | FileCheck %s
Craig Topper5b7c2b42013-10-24 06:45:13 +00002
3define i32 @test_x86_sse42_pcmpestri128(<16 x i8> %a0, <16 x i8> %a2) {
4 ; CHECK: movl $7
5 ; CHECK: movl $7
6 ; CHECK: pcmpestri $7
7 ; CHECK: movl
8 %res = call i32 @llvm.x86.sse42.pcmpestri128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1]
9 ret i32 %res
10}
11declare i32 @llvm.x86.sse42.pcmpestri128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
12
13
14define i32 @test_x86_sse42_pcmpestri128_load(<16 x i8>* %a0, <16 x i8>* %a2) {
15 ; CHECK: movl $7
16 ; CHECK: movl $7
17 ; CHECK: pcmpestri $7, (
18 ; CHECK: movl
19 %1 = load <16 x i8>* %a0
20 %2 = load <16 x i8>* %a2
21 %res = call i32 @llvm.x86.sse42.pcmpestri128(<16 x i8> %1, i32 7, <16 x i8> %2, i32 7, i8 7) ; <i32> [#uses=1]
22 ret i32 %res
23}
24
25
26define i32 @test_x86_sse42_pcmpestria128(<16 x i8> %a0, <16 x i8> %a2) {
27 ; CHECK: movl
28 ; CHECK: movl
29 ; CHECK: pcmpestri
30 ; CHECK: seta
31 %res = call i32 @llvm.x86.sse42.pcmpestria128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1]
32 ret i32 %res
33}
34declare i32 @llvm.x86.sse42.pcmpestria128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
35
36
37define i32 @test_x86_sse42_pcmpestric128(<16 x i8> %a0, <16 x i8> %a2) {
38 ; CHECK: movl
39 ; CHECK: movl
40 ; CHECK: pcmpestri
41 ; CHECK: sbbl
42 %res = call i32 @llvm.x86.sse42.pcmpestric128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1]
43 ret i32 %res
44}
45declare i32 @llvm.x86.sse42.pcmpestric128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
46
47
48define i32 @test_x86_sse42_pcmpestrio128(<16 x i8> %a0, <16 x i8> %a2) {
49 ; CHECK: movl
50 ; CHECK: movl
51 ; CHECK: pcmpestri
52 ; CHECK: seto
53 %res = call i32 @llvm.x86.sse42.pcmpestrio128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1]
54 ret i32 %res
55}
56declare i32 @llvm.x86.sse42.pcmpestrio128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
57
58
59define i32 @test_x86_sse42_pcmpestris128(<16 x i8> %a0, <16 x i8> %a2) {
60 ; CHECK: movl
61 ; CHECK: movl
62 ; CHECK: pcmpestri
63 ; CHECK: sets
64 %res = call i32 @llvm.x86.sse42.pcmpestris128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1]
65 ret i32 %res
66}
67declare i32 @llvm.x86.sse42.pcmpestris128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
68
69
70define i32 @test_x86_sse42_pcmpestriz128(<16 x i8> %a0, <16 x i8> %a2) {
71 ; CHECK: movl
72 ; CHECK: movl
73 ; CHECK: pcmpestri
74 ; CHECK: sete
75 %res = call i32 @llvm.x86.sse42.pcmpestriz128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1]
76 ret i32 %res
77}
78declare i32 @llvm.x86.sse42.pcmpestriz128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
79
80
81define <16 x i8> @test_x86_sse42_pcmpestrm128(<16 x i8> %a0, <16 x i8> %a2) {
82 ; CHECK: movl
83 ; CHECK: movl
84 ; CHECK: pcmpestrm
85 ; CHECK-NOT: vmov
86 %res = call <16 x i8> @llvm.x86.sse42.pcmpestrm128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <<16 x i8>> [#uses=1]
87 ret <16 x i8> %res
88}
89declare <16 x i8> @llvm.x86.sse42.pcmpestrm128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
90
91
92define <16 x i8> @test_x86_sse42_pcmpestrm128_load(<16 x i8> %a0, <16 x i8>* %a2) {
93 ; CHECK: movl $7
94 ; CHECK: movl $7
95 ; CHECK: pcmpestrm $7,
96 ; CHECK-NOT: vmov
97 %1 = load <16 x i8>* %a2
98 %res = call <16 x i8> @llvm.x86.sse42.pcmpestrm128(<16 x i8> %a0, i32 7, <16 x i8> %1, i32 7, i8 7) ; <<16 x i8>> [#uses=1]
99 ret <16 x i8> %res
100}
101
102
103define i32 @test_x86_sse42_pcmpistri128(<16 x i8> %a0, <16 x i8> %a1) {
104 ; CHECK: pcmpistri $7
105 ; CHECK: movl
106 %res = call i32 @llvm.x86.sse42.pcmpistri128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1]
107 ret i32 %res
108}
109declare i32 @llvm.x86.sse42.pcmpistri128(<16 x i8>, <16 x i8>, i8) nounwind readnone
110
111
112define i32 @test_x86_sse42_pcmpistri128_load(<16 x i8>* %a0, <16 x i8>* %a1) {
113 ; CHECK: pcmpistri $7, (
114 ; CHECK: movl
115 %1 = load <16 x i8>* %a0
116 %2 = load <16 x i8>* %a1
117 %res = call i32 @llvm.x86.sse42.pcmpistri128(<16 x i8> %1, <16 x i8> %2, i8 7) ; <i32> [#uses=1]
118 ret i32 %res
119}
120
121
122define i32 @test_x86_sse42_pcmpistria128(<16 x i8> %a0, <16 x i8> %a1) {
123 ; CHECK: pcmpistri
124 ; CHECK: seta
125 %res = call i32 @llvm.x86.sse42.pcmpistria128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1]
126 ret i32 %res
127}
128declare i32 @llvm.x86.sse42.pcmpistria128(<16 x i8>, <16 x i8>, i8) nounwind readnone
129
130
131define i32 @test_x86_sse42_pcmpistric128(<16 x i8> %a0, <16 x i8> %a1) {
132 ; CHECK: pcmpistri
133 ; CHECK: sbbl
134 %res = call i32 @llvm.x86.sse42.pcmpistric128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1]
135 ret i32 %res
136}
137declare i32 @llvm.x86.sse42.pcmpistric128(<16 x i8>, <16 x i8>, i8) nounwind readnone
138
139
140define i32 @test_x86_sse42_pcmpistrio128(<16 x i8> %a0, <16 x i8> %a1) {
141 ; CHECK: pcmpistri
142 ; CHECK: seto
143 %res = call i32 @llvm.x86.sse42.pcmpistrio128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1]
144 ret i32 %res
145}
146declare i32 @llvm.x86.sse42.pcmpistrio128(<16 x i8>, <16 x i8>, i8) nounwind readnone
147
148
149define i32 @test_x86_sse42_pcmpistris128(<16 x i8> %a0, <16 x i8> %a1) {
150 ; CHECK: pcmpistri
151 ; CHECK: sets
152 %res = call i32 @llvm.x86.sse42.pcmpistris128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1]
153 ret i32 %res
154}
155declare i32 @llvm.x86.sse42.pcmpistris128(<16 x i8>, <16 x i8>, i8) nounwind readnone
156
157
158define i32 @test_x86_sse42_pcmpistriz128(<16 x i8> %a0, <16 x i8> %a1) {
159 ; CHECK: pcmpistri
160 ; CHECK: sete
161 %res = call i32 @llvm.x86.sse42.pcmpistriz128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1]
162 ret i32 %res
163}
164declare i32 @llvm.x86.sse42.pcmpistriz128(<16 x i8>, <16 x i8>, i8) nounwind readnone
165
166
167define <16 x i8> @test_x86_sse42_pcmpistrm128(<16 x i8> %a0, <16 x i8> %a1) {
168 ; CHECK: pcmpistrm $7
169 ; CHECK-NOT: vmov
170 %res = call <16 x i8> @llvm.x86.sse42.pcmpistrm128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <<16 x i8>> [#uses=1]
171 ret <16 x i8> %res
172}
173declare <16 x i8> @llvm.x86.sse42.pcmpistrm128(<16 x i8>, <16 x i8>, i8) nounwind readnone
174
175
176define <16 x i8> @test_x86_sse42_pcmpistrm128_load(<16 x i8> %a0, <16 x i8>* %a1) {
177 ; CHECK: pcmpistrm $7, (
178 ; CHECK-NOT: vmov
179 %1 = load <16 x i8>* %a1
180 %res = call <16 x i8> @llvm.x86.sse42.pcmpistrm128(<16 x i8> %a0, <16 x i8> %1, i8 7) ; <<16 x i8>> [#uses=1]
181 ret <16 x i8> %res
182}