Mercurial > hg > CbC > CbC_llvm
comparison test/CodeGen/X86/vector-lzcnt-512.ll @ 95:afa8332a0e37 LLVM3.8
LLVM 3.8
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 13 Oct 2015 17:48:58 +0900 |
parents | |
children | 7d135dc70f03 |
comparison
equal
deleted
inserted
replaced
84:f3e34b893a5f | 95:afa8332a0e37 |
---|---|
1 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=knl -mattr=+avx512cd | FileCheck %s --check-prefix=ALL --check-prefix=AVX512 --check-prefix=AVX512CD | |
2 | |
3 define <8 x i64> @testv8i64(<8 x i64> %in) nounwind { | |
4 ; ALL-LABEL: testv8i64: | |
5 ; ALL: ## BB#0: | |
6 ; ALL-NEXT: vplzcntq %zmm0, %zmm0 | |
7 ; ALL-NEXT: retq | |
8 %out = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %in, i1 0) | |
9 ret <8 x i64> %out | |
10 } | |
11 | |
12 define <8 x i64> @testv8i64u(<8 x i64> %in) nounwind { | |
13 ; ALL-LABEL: testv8i64u: | |
14 ; ALL: ## BB#0: | |
15 ; ALL-NEXT: vplzcntq %zmm0, %zmm0 | |
16 ; ALL-NEXT: retq | |
17 %out = call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %in, i1 -1) | |
18 ret <8 x i64> %out | |
19 } | |
20 | |
21 define <16 x i32> @testv16i32(<16 x i32> %in) nounwind { | |
22 ; ALL-LABEL: testv16i32: | |
23 ; ALL: ## BB#0: | |
24 ; ALL-NEXT: vplzcntd %zmm0, %zmm0 | |
25 ; ALL-NEXT: retq | |
26 %out = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %in, i1 0) | |
27 ret <16 x i32> %out | |
28 } | |
29 | |
30 define <16 x i32> @testv16i32u(<16 x i32> %in) nounwind { | |
31 ; ALL-LABEL: testv16i32u: | |
32 ; ALL: ## BB#0: | |
33 ; ALL-NEXT: vplzcntd %zmm0, %zmm0 | |
34 ; ALL-NEXT: retq | |
35 %out = call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %in, i1 -1) | |
36 ret <16 x i32> %out | |
37 } | |
38 | |
39 define <32 x i16> @testv32i16(<32 x i16> %in) nounwind { | |
40 ; ALL-LABEL: testv32i16: | |
41 ; ALL: ## BB#0: | |
42 ; ALL-NEXT: vextracti128 $1, %ymm0, %xmm2 | |
43 ; ALL-NEXT: vpextrw $1, %xmm2, %eax | |
44 ; ALL-NEXT: lzcntw %ax, %ax | |
45 ; ALL-NEXT: vmovd %xmm2, %ecx | |
46 ; ALL-NEXT: lzcntw %cx, %cx | |
47 ; ALL-NEXT: vmovd %ecx, %xmm3 | |
48 ; ALL-NEXT: vpinsrw $1, %eax, %xmm3, %xmm3 | |
49 ; ALL-NEXT: vpextrw $2, %xmm2, %eax | |
50 ; ALL-NEXT: lzcntw %ax, %ax | |
51 ; ALL-NEXT: vpinsrw $2, %eax, %xmm3, %xmm3 | |
52 ; ALL-NEXT: vpextrw $3, %xmm2, %eax | |
53 ; ALL-NEXT: lzcntw %ax, %ax | |
54 ; ALL-NEXT: vpinsrw $3, %eax, %xmm3, %xmm3 | |
55 ; ALL-NEXT: vpextrw $4, %xmm2, %eax | |
56 ; ALL-NEXT: lzcntw %ax, %ax | |
57 ; ALL-NEXT: vpinsrw $4, %eax, %xmm3, %xmm3 | |
58 ; ALL-NEXT: vpextrw $5, %xmm2, %eax | |
59 ; ALL-NEXT: lzcntw %ax, %ax | |
60 ; ALL-NEXT: vpinsrw $5, %eax, %xmm3, %xmm3 | |
61 ; ALL-NEXT: vpextrw $6, %xmm2, %eax | |
62 ; ALL-NEXT: lzcntw %ax, %ax | |
63 ; ALL-NEXT: vpinsrw $6, %eax, %xmm3, %xmm3 | |
64 ; ALL-NEXT: vpextrw $7, %xmm2, %eax | |
65 ; ALL-NEXT: lzcntw %ax, %ax | |
66 ; ALL-NEXT: vpinsrw $7, %eax, %xmm3, %xmm2 | |
67 ; ALL-NEXT: vpextrw $1, %xmm0, %eax | |
68 ; ALL-NEXT: lzcntw %ax, %ax | |
69 ; ALL-NEXT: vmovd %xmm0, %ecx | |
70 ; ALL-NEXT: lzcntw %cx, %cx | |
71 ; ALL-NEXT: vmovd %ecx, %xmm3 | |
72 ; ALL-NEXT: vpinsrw $1, %eax, %xmm3, %xmm3 | |
73 ; ALL-NEXT: vpextrw $2, %xmm0, %eax | |
74 ; ALL-NEXT: lzcntw %ax, %ax | |
75 ; ALL-NEXT: vpinsrw $2, %eax, %xmm3, %xmm3 | |
76 ; ALL-NEXT: vpextrw $3, %xmm0, %eax | |
77 ; ALL-NEXT: lzcntw %ax, %ax | |
78 ; ALL-NEXT: vpinsrw $3, %eax, %xmm3, %xmm3 | |
79 ; ALL-NEXT: vpextrw $4, %xmm0, %eax | |
80 ; ALL-NEXT: lzcntw %ax, %ax | |
81 ; ALL-NEXT: vpinsrw $4, %eax, %xmm3, %xmm3 | |
82 ; ALL-NEXT: vpextrw $5, %xmm0, %eax | |
83 ; ALL-NEXT: lzcntw %ax, %ax | |
84 ; ALL-NEXT: vpinsrw $5, %eax, %xmm3, %xmm3 | |
85 ; ALL-NEXT: vpextrw $6, %xmm0, %eax | |
86 ; ALL-NEXT: lzcntw %ax, %ax | |
87 ; ALL-NEXT: vpinsrw $6, %eax, %xmm3, %xmm3 | |
88 ; ALL-NEXT: vpextrw $7, %xmm0, %eax | |
89 ; ALL-NEXT: lzcntw %ax, %ax | |
90 ; ALL-NEXT: vpinsrw $7, %eax, %xmm3, %xmm0 | |
91 ; ALL-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0 | |
92 ; ALL-NEXT: vextracti128 $1, %ymm1, %xmm2 | |
93 ; ALL-NEXT: vpextrw $1, %xmm2, %eax | |
94 ; ALL-NEXT: lzcntw %ax, %ax | |
95 ; ALL-NEXT: vmovd %xmm2, %ecx | |
96 ; ALL-NEXT: lzcntw %cx, %cx | |
97 ; ALL-NEXT: vmovd %ecx, %xmm3 | |
98 ; ALL-NEXT: vpinsrw $1, %eax, %xmm3, %xmm3 | |
99 ; ALL-NEXT: vpextrw $2, %xmm2, %eax | |
100 ; ALL-NEXT: lzcntw %ax, %ax | |
101 ; ALL-NEXT: vpinsrw $2, %eax, %xmm3, %xmm3 | |
102 ; ALL-NEXT: vpextrw $3, %xmm2, %eax | |
103 ; ALL-NEXT: lzcntw %ax, %ax | |
104 ; ALL-NEXT: vpinsrw $3, %eax, %xmm3, %xmm3 | |
105 ; ALL-NEXT: vpextrw $4, %xmm2, %eax | |
106 ; ALL-NEXT: lzcntw %ax, %ax | |
107 ; ALL-NEXT: vpinsrw $4, %eax, %xmm3, %xmm3 | |
108 ; ALL-NEXT: vpextrw $5, %xmm2, %eax | |
109 ; ALL-NEXT: lzcntw %ax, %ax | |
110 ; ALL-NEXT: vpinsrw $5, %eax, %xmm3, %xmm3 | |
111 ; ALL-NEXT: vpextrw $6, %xmm2, %eax | |
112 ; ALL-NEXT: lzcntw %ax, %ax | |
113 ; ALL-NEXT: vpinsrw $6, %eax, %xmm3, %xmm3 | |
114 ; ALL-NEXT: vpextrw $7, %xmm2, %eax | |
115 ; ALL-NEXT: lzcntw %ax, %ax | |
116 ; ALL-NEXT: vpinsrw $7, %eax, %xmm3, %xmm2 | |
117 ; ALL-NEXT: vpextrw $1, %xmm1, %eax | |
118 ; ALL-NEXT: lzcntw %ax, %ax | |
119 ; ALL-NEXT: vmovd %xmm1, %ecx | |
120 ; ALL-NEXT: lzcntw %cx, %cx | |
121 ; ALL-NEXT: vmovd %ecx, %xmm3 | |
122 ; ALL-NEXT: vpinsrw $1, %eax, %xmm3, %xmm3 | |
123 ; ALL-NEXT: vpextrw $2, %xmm1, %eax | |
124 ; ALL-NEXT: lzcntw %ax, %ax | |
125 ; ALL-NEXT: vpinsrw $2, %eax, %xmm3, %xmm3 | |
126 ; ALL-NEXT: vpextrw $3, %xmm1, %eax | |
127 ; ALL-NEXT: lzcntw %ax, %ax | |
128 ; ALL-NEXT: vpinsrw $3, %eax, %xmm3, %xmm3 | |
129 ; ALL-NEXT: vpextrw $4, %xmm1, %eax | |
130 ; ALL-NEXT: lzcntw %ax, %ax | |
131 ; ALL-NEXT: vpinsrw $4, %eax, %xmm3, %xmm3 | |
132 ; ALL-NEXT: vpextrw $5, %xmm1, %eax | |
133 ; ALL-NEXT: lzcntw %ax, %ax | |
134 ; ALL-NEXT: vpinsrw $5, %eax, %xmm3, %xmm3 | |
135 ; ALL-NEXT: vpextrw $6, %xmm1, %eax | |
136 ; ALL-NEXT: lzcntw %ax, %ax | |
137 ; ALL-NEXT: vpinsrw $6, %eax, %xmm3, %xmm3 | |
138 ; ALL-NEXT: vpextrw $7, %xmm1, %eax | |
139 ; ALL-NEXT: lzcntw %ax, %ax | |
140 ; ALL-NEXT: vpinsrw $7, %eax, %xmm3, %xmm1 | |
141 ; ALL-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1 | |
142 ; ALL-NEXT: retq | |
143 %out = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %in, i1 0) | |
144 ret <32 x i16> %out | |
145 } | |
146 | |
147 define <32 x i16> @testv32i16u(<32 x i16> %in) nounwind { | |
148 ; ALL-LABEL: testv32i16u: | |
149 ; ALL: ## BB#0: | |
150 ; ALL-NEXT: vextracti128 $1, %ymm0, %xmm2 | |
151 ; ALL-NEXT: vpextrw $1, %xmm2, %eax | |
152 ; ALL-NEXT: lzcntw %ax, %ax | |
153 ; ALL-NEXT: vmovd %xmm2, %ecx | |
154 ; ALL-NEXT: lzcntw %cx, %cx | |
155 ; ALL-NEXT: vmovd %ecx, %xmm3 | |
156 ; ALL-NEXT: vpinsrw $1, %eax, %xmm3, %xmm3 | |
157 ; ALL-NEXT: vpextrw $2, %xmm2, %eax | |
158 ; ALL-NEXT: lzcntw %ax, %ax | |
159 ; ALL-NEXT: vpinsrw $2, %eax, %xmm3, %xmm3 | |
160 ; ALL-NEXT: vpextrw $3, %xmm2, %eax | |
161 ; ALL-NEXT: lzcntw %ax, %ax | |
162 ; ALL-NEXT: vpinsrw $3, %eax, %xmm3, %xmm3 | |
163 ; ALL-NEXT: vpextrw $4, %xmm2, %eax | |
164 ; ALL-NEXT: lzcntw %ax, %ax | |
165 ; ALL-NEXT: vpinsrw $4, %eax, %xmm3, %xmm3 | |
166 ; ALL-NEXT: vpextrw $5, %xmm2, %eax | |
167 ; ALL-NEXT: lzcntw %ax, %ax | |
168 ; ALL-NEXT: vpinsrw $5, %eax, %xmm3, %xmm3 | |
169 ; ALL-NEXT: vpextrw $6, %xmm2, %eax | |
170 ; ALL-NEXT: lzcntw %ax, %ax | |
171 ; ALL-NEXT: vpinsrw $6, %eax, %xmm3, %xmm3 | |
172 ; ALL-NEXT: vpextrw $7, %xmm2, %eax | |
173 ; ALL-NEXT: lzcntw %ax, %ax | |
174 ; ALL-NEXT: vpinsrw $7, %eax, %xmm3, %xmm2 | |
175 ; ALL-NEXT: vpextrw $1, %xmm0, %eax | |
176 ; ALL-NEXT: lzcntw %ax, %ax | |
177 ; ALL-NEXT: vmovd %xmm0, %ecx | |
178 ; ALL-NEXT: lzcntw %cx, %cx | |
179 ; ALL-NEXT: vmovd %ecx, %xmm3 | |
180 ; ALL-NEXT: vpinsrw $1, %eax, %xmm3, %xmm3 | |
181 ; ALL-NEXT: vpextrw $2, %xmm0, %eax | |
182 ; ALL-NEXT: lzcntw %ax, %ax | |
183 ; ALL-NEXT: vpinsrw $2, %eax, %xmm3, %xmm3 | |
184 ; ALL-NEXT: vpextrw $3, %xmm0, %eax | |
185 ; ALL-NEXT: lzcntw %ax, %ax | |
186 ; ALL-NEXT: vpinsrw $3, %eax, %xmm3, %xmm3 | |
187 ; ALL-NEXT: vpextrw $4, %xmm0, %eax | |
188 ; ALL-NEXT: lzcntw %ax, %ax | |
189 ; ALL-NEXT: vpinsrw $4, %eax, %xmm3, %xmm3 | |
190 ; ALL-NEXT: vpextrw $5, %xmm0, %eax | |
191 ; ALL-NEXT: lzcntw %ax, %ax | |
192 ; ALL-NEXT: vpinsrw $5, %eax, %xmm3, %xmm3 | |
193 ; ALL-NEXT: vpextrw $6, %xmm0, %eax | |
194 ; ALL-NEXT: lzcntw %ax, %ax | |
195 ; ALL-NEXT: vpinsrw $6, %eax, %xmm3, %xmm3 | |
196 ; ALL-NEXT: vpextrw $7, %xmm0, %eax | |
197 ; ALL-NEXT: lzcntw %ax, %ax | |
198 ; ALL-NEXT: vpinsrw $7, %eax, %xmm3, %xmm0 | |
199 ; ALL-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0 | |
200 ; ALL-NEXT: vextracti128 $1, %ymm1, %xmm2 | |
201 ; ALL-NEXT: vpextrw $1, %xmm2, %eax | |
202 ; ALL-NEXT: lzcntw %ax, %ax | |
203 ; ALL-NEXT: vmovd %xmm2, %ecx | |
204 ; ALL-NEXT: lzcntw %cx, %cx | |
205 ; ALL-NEXT: vmovd %ecx, %xmm3 | |
206 ; ALL-NEXT: vpinsrw $1, %eax, %xmm3, %xmm3 | |
207 ; ALL-NEXT: vpextrw $2, %xmm2, %eax | |
208 ; ALL-NEXT: lzcntw %ax, %ax | |
209 ; ALL-NEXT: vpinsrw $2, %eax, %xmm3, %xmm3 | |
210 ; ALL-NEXT: vpextrw $3, %xmm2, %eax | |
211 ; ALL-NEXT: lzcntw %ax, %ax | |
212 ; ALL-NEXT: vpinsrw $3, %eax, %xmm3, %xmm3 | |
213 ; ALL-NEXT: vpextrw $4, %xmm2, %eax | |
214 ; ALL-NEXT: lzcntw %ax, %ax | |
215 ; ALL-NEXT: vpinsrw $4, %eax, %xmm3, %xmm3 | |
216 ; ALL-NEXT: vpextrw $5, %xmm2, %eax | |
217 ; ALL-NEXT: lzcntw %ax, %ax | |
218 ; ALL-NEXT: vpinsrw $5, %eax, %xmm3, %xmm3 | |
219 ; ALL-NEXT: vpextrw $6, %xmm2, %eax | |
220 ; ALL-NEXT: lzcntw %ax, %ax | |
221 ; ALL-NEXT: vpinsrw $6, %eax, %xmm3, %xmm3 | |
222 ; ALL-NEXT: vpextrw $7, %xmm2, %eax | |
223 ; ALL-NEXT: lzcntw %ax, %ax | |
224 ; ALL-NEXT: vpinsrw $7, %eax, %xmm3, %xmm2 | |
225 ; ALL-NEXT: vpextrw $1, %xmm1, %eax | |
226 ; ALL-NEXT: lzcntw %ax, %ax | |
227 ; ALL-NEXT: vmovd %xmm1, %ecx | |
228 ; ALL-NEXT: lzcntw %cx, %cx | |
229 ; ALL-NEXT: vmovd %ecx, %xmm3 | |
230 ; ALL-NEXT: vpinsrw $1, %eax, %xmm3, %xmm3 | |
231 ; ALL-NEXT: vpextrw $2, %xmm1, %eax | |
232 ; ALL-NEXT: lzcntw %ax, %ax | |
233 ; ALL-NEXT: vpinsrw $2, %eax, %xmm3, %xmm3 | |
234 ; ALL-NEXT: vpextrw $3, %xmm1, %eax | |
235 ; ALL-NEXT: lzcntw %ax, %ax | |
236 ; ALL-NEXT: vpinsrw $3, %eax, %xmm3, %xmm3 | |
237 ; ALL-NEXT: vpextrw $4, %xmm1, %eax | |
238 ; ALL-NEXT: lzcntw %ax, %ax | |
239 ; ALL-NEXT: vpinsrw $4, %eax, %xmm3, %xmm3 | |
240 ; ALL-NEXT: vpextrw $5, %xmm1, %eax | |
241 ; ALL-NEXT: lzcntw %ax, %ax | |
242 ; ALL-NEXT: vpinsrw $5, %eax, %xmm3, %xmm3 | |
243 ; ALL-NEXT: vpextrw $6, %xmm1, %eax | |
244 ; ALL-NEXT: lzcntw %ax, %ax | |
245 ; ALL-NEXT: vpinsrw $6, %eax, %xmm3, %xmm3 | |
246 ; ALL-NEXT: vpextrw $7, %xmm1, %eax | |
247 ; ALL-NEXT: lzcntw %ax, %ax | |
248 ; ALL-NEXT: vpinsrw $7, %eax, %xmm3, %xmm1 | |
249 ; ALL-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1 | |
250 ; ALL-NEXT: retq | |
251 %out = call <32 x i16> @llvm.ctlz.v32i16(<32 x i16> %in, i1 -1) | |
252 ret <32 x i16> %out | |
253 } | |
254 | |
255 define <64 x i8> @testv64i8(<64 x i8> %in) nounwind { | |
256 ; ALL-LABEL: testv64i8: | |
257 ; ALL: ## BB#0: | |
258 ; ALL-NEXT: vextracti128 $1, %ymm0, %xmm2 | |
259 ; ALL-NEXT: vpextrb $1, %xmm2, %eax | |
260 ; ALL-NEXT: lzcntl %eax, %eax | |
261 ; ALL-NEXT: addl $-24, %eax | |
262 ; ALL-NEXT: vpextrb $0, %xmm2, %ecx | |
263 ; ALL-NEXT: lzcntl %ecx, %ecx | |
264 ; ALL-NEXT: addl $-24, %ecx | |
265 ; ALL-NEXT: vmovd %ecx, %xmm3 | |
266 ; ALL-NEXT: vpinsrb $1, %eax, %xmm3, %xmm3 | |
267 ; ALL-NEXT: vpextrb $2, %xmm2, %eax | |
268 ; ALL-NEXT: lzcntl %eax, %eax | |
269 ; ALL-NEXT: addl $-24, %eax | |
270 ; ALL-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3 | |
271 ; ALL-NEXT: vpextrb $3, %xmm2, %eax | |
272 ; ALL-NEXT: lzcntl %eax, %eax | |
273 ; ALL-NEXT: addl $-24, %eax | |
274 ; ALL-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3 | |
275 ; ALL-NEXT: vpextrb $4, %xmm2, %eax | |
276 ; ALL-NEXT: lzcntl %eax, %eax | |
277 ; ALL-NEXT: addl $-24, %eax | |
278 ; ALL-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3 | |
279 ; ALL-NEXT: vpextrb $5, %xmm2, %eax | |
280 ; ALL-NEXT: lzcntl %eax, %eax | |
281 ; ALL-NEXT: addl $-24, %eax | |
282 ; ALL-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3 | |
283 ; ALL-NEXT: vpextrb $6, %xmm2, %eax | |
284 ; ALL-NEXT: lzcntl %eax, %eax | |
285 ; ALL-NEXT: addl $-24, %eax | |
286 ; ALL-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3 | |
287 ; ALL-NEXT: vpextrb $7, %xmm2, %eax | |
288 ; ALL-NEXT: lzcntl %eax, %eax | |
289 ; ALL-NEXT: addl $-24, %eax | |
290 ; ALL-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3 | |
291 ; ALL-NEXT: vpextrb $8, %xmm2, %eax | |
292 ; ALL-NEXT: lzcntl %eax, %eax | |
293 ; ALL-NEXT: addl $-24, %eax | |
294 ; ALL-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3 | |
295 ; ALL-NEXT: vpextrb $9, %xmm2, %eax | |
296 ; ALL-NEXT: lzcntl %eax, %eax | |
297 ; ALL-NEXT: addl $-24, %eax | |
298 ; ALL-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3 | |
299 ; ALL-NEXT: vpextrb $10, %xmm2, %eax | |
300 ; ALL-NEXT: lzcntl %eax, %eax | |
301 ; ALL-NEXT: addl $-24, %eax | |
302 ; ALL-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3 | |
303 ; ALL-NEXT: vpextrb $11, %xmm2, %eax | |
304 ; ALL-NEXT: lzcntl %eax, %eax | |
305 ; ALL-NEXT: addl $-24, %eax | |
306 ; ALL-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3 | |
307 ; ALL-NEXT: vpextrb $12, %xmm2, %eax | |
308 ; ALL-NEXT: lzcntl %eax, %eax | |
309 ; ALL-NEXT: addl $-24, %eax | |
310 ; ALL-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3 | |
311 ; ALL-NEXT: vpextrb $13, %xmm2, %eax | |
312 ; ALL-NEXT: lzcntl %eax, %eax | |
313 ; ALL-NEXT: addl $-24, %eax | |
314 ; ALL-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3 | |
315 ; ALL-NEXT: vpextrb $14, %xmm2, %eax | |
316 ; ALL-NEXT: lzcntl %eax, %eax | |
317 ; ALL-NEXT: addl $-24, %eax | |
318 ; ALL-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3 | |
319 ; ALL-NEXT: vpextrb $15, %xmm2, %eax | |
320 ; ALL-NEXT: lzcntl %eax, %eax | |
321 ; ALL-NEXT: addl $-24, %eax | |
322 ; ALL-NEXT: vpinsrb $15, %eax, %xmm3, %xmm2 | |
323 ; ALL-NEXT: vpextrb $1, %xmm0, %eax | |
324 ; ALL-NEXT: lzcntl %eax, %eax | |
325 ; ALL-NEXT: addl $-24, %eax | |
326 ; ALL-NEXT: vpextrb $0, %xmm0, %ecx | |
327 ; ALL-NEXT: lzcntl %ecx, %ecx | |
328 ; ALL-NEXT: addl $-24, %ecx | |
329 ; ALL-NEXT: vmovd %ecx, %xmm3 | |
330 ; ALL-NEXT: vpinsrb $1, %eax, %xmm3, %xmm3 | |
331 ; ALL-NEXT: vpextrb $2, %xmm0, %eax | |
332 ; ALL-NEXT: lzcntl %eax, %eax | |
333 ; ALL-NEXT: addl $-24, %eax | |
334 ; ALL-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3 | |
335 ; ALL-NEXT: vpextrb $3, %xmm0, %eax | |
336 ; ALL-NEXT: lzcntl %eax, %eax | |
337 ; ALL-NEXT: addl $-24, %eax | |
338 ; ALL-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3 | |
339 ; ALL-NEXT: vpextrb $4, %xmm0, %eax | |
340 ; ALL-NEXT: lzcntl %eax, %eax | |
341 ; ALL-NEXT: addl $-24, %eax | |
342 ; ALL-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3 | |
343 ; ALL-NEXT: vpextrb $5, %xmm0, %eax | |
344 ; ALL-NEXT: lzcntl %eax, %eax | |
345 ; ALL-NEXT: addl $-24, %eax | |
346 ; ALL-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3 | |
347 ; ALL-NEXT: vpextrb $6, %xmm0, %eax | |
348 ; ALL-NEXT: lzcntl %eax, %eax | |
349 ; ALL-NEXT: addl $-24, %eax | |
350 ; ALL-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3 | |
351 ; ALL-NEXT: vpextrb $7, %xmm0, %eax | |
352 ; ALL-NEXT: lzcntl %eax, %eax | |
353 ; ALL-NEXT: addl $-24, %eax | |
354 ; ALL-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3 | |
355 ; ALL-NEXT: vpextrb $8, %xmm0, %eax | |
356 ; ALL-NEXT: lzcntl %eax, %eax | |
357 ; ALL-NEXT: addl $-24, %eax | |
358 ; ALL-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3 | |
359 ; ALL-NEXT: vpextrb $9, %xmm0, %eax | |
360 ; ALL-NEXT: lzcntl %eax, %eax | |
361 ; ALL-NEXT: addl $-24, %eax | |
362 ; ALL-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3 | |
363 ; ALL-NEXT: vpextrb $10, %xmm0, %eax | |
364 ; ALL-NEXT: lzcntl %eax, %eax | |
365 ; ALL-NEXT: addl $-24, %eax | |
366 ; ALL-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3 | |
367 ; ALL-NEXT: vpextrb $11, %xmm0, %eax | |
368 ; ALL-NEXT: lzcntl %eax, %eax | |
369 ; ALL-NEXT: addl $-24, %eax | |
370 ; ALL-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3 | |
371 ; ALL-NEXT: vpextrb $12, %xmm0, %eax | |
372 ; ALL-NEXT: lzcntl %eax, %eax | |
373 ; ALL-NEXT: addl $-24, %eax | |
374 ; ALL-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3 | |
375 ; ALL-NEXT: vpextrb $13, %xmm0, %eax | |
376 ; ALL-NEXT: lzcntl %eax, %eax | |
377 ; ALL-NEXT: addl $-24, %eax | |
378 ; ALL-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3 | |
379 ; ALL-NEXT: vpextrb $14, %xmm0, %eax | |
380 ; ALL-NEXT: lzcntl %eax, %eax | |
381 ; ALL-NEXT: addl $-24, %eax | |
382 ; ALL-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3 | |
383 ; ALL-NEXT: vpextrb $15, %xmm0, %eax | |
384 ; ALL-NEXT: lzcntl %eax, %eax | |
385 ; ALL-NEXT: addl $-24, %eax | |
386 ; ALL-NEXT: vpinsrb $15, %eax, %xmm3, %xmm0 | |
387 ; ALL-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0 | |
388 ; ALL-NEXT: vextracti128 $1, %ymm1, %xmm2 | |
389 ; ALL-NEXT: vpextrb $1, %xmm2, %eax | |
390 ; ALL-NEXT: lzcntl %eax, %eax | |
391 ; ALL-NEXT: addl $-24, %eax | |
392 ; ALL-NEXT: vpextrb $0, %xmm2, %ecx | |
393 ; ALL-NEXT: lzcntl %ecx, %ecx | |
394 ; ALL-NEXT: addl $-24, %ecx | |
395 ; ALL-NEXT: vmovd %ecx, %xmm3 | |
396 ; ALL-NEXT: vpinsrb $1, %eax, %xmm3, %xmm3 | |
397 ; ALL-NEXT: vpextrb $2, %xmm2, %eax | |
398 ; ALL-NEXT: lzcntl %eax, %eax | |
399 ; ALL-NEXT: addl $-24, %eax | |
400 ; ALL-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3 | |
401 ; ALL-NEXT: vpextrb $3, %xmm2, %eax | |
402 ; ALL-NEXT: lzcntl %eax, %eax | |
403 ; ALL-NEXT: addl $-24, %eax | |
404 ; ALL-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3 | |
405 ; ALL-NEXT: vpextrb $4, %xmm2, %eax | |
406 ; ALL-NEXT: lzcntl %eax, %eax | |
407 ; ALL-NEXT: addl $-24, %eax | |
408 ; ALL-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3 | |
409 ; ALL-NEXT: vpextrb $5, %xmm2, %eax | |
410 ; ALL-NEXT: lzcntl %eax, %eax | |
411 ; ALL-NEXT: addl $-24, %eax | |
412 ; ALL-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3 | |
413 ; ALL-NEXT: vpextrb $6, %xmm2, %eax | |
414 ; ALL-NEXT: lzcntl %eax, %eax | |
415 ; ALL-NEXT: addl $-24, %eax | |
416 ; ALL-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3 | |
417 ; ALL-NEXT: vpextrb $7, %xmm2, %eax | |
418 ; ALL-NEXT: lzcntl %eax, %eax | |
419 ; ALL-NEXT: addl $-24, %eax | |
420 ; ALL-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3 | |
421 ; ALL-NEXT: vpextrb $8, %xmm2, %eax | |
422 ; ALL-NEXT: lzcntl %eax, %eax | |
423 ; ALL-NEXT: addl $-24, %eax | |
424 ; ALL-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3 | |
425 ; ALL-NEXT: vpextrb $9, %xmm2, %eax | |
426 ; ALL-NEXT: lzcntl %eax, %eax | |
427 ; ALL-NEXT: addl $-24, %eax | |
428 ; ALL-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3 | |
429 ; ALL-NEXT: vpextrb $10, %xmm2, %eax | |
430 ; ALL-NEXT: lzcntl %eax, %eax | |
431 ; ALL-NEXT: addl $-24, %eax | |
432 ; ALL-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3 | |
433 ; ALL-NEXT: vpextrb $11, %xmm2, %eax | |
434 ; ALL-NEXT: lzcntl %eax, %eax | |
435 ; ALL-NEXT: addl $-24, %eax | |
436 ; ALL-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3 | |
437 ; ALL-NEXT: vpextrb $12, %xmm2, %eax | |
438 ; ALL-NEXT: lzcntl %eax, %eax | |
439 ; ALL-NEXT: addl $-24, %eax | |
440 ; ALL-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3 | |
441 ; ALL-NEXT: vpextrb $13, %xmm2, %eax | |
442 ; ALL-NEXT: lzcntl %eax, %eax | |
443 ; ALL-NEXT: addl $-24, %eax | |
444 ; ALL-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3 | |
445 ; ALL-NEXT: vpextrb $14, %xmm2, %eax | |
446 ; ALL-NEXT: lzcntl %eax, %eax | |
447 ; ALL-NEXT: addl $-24, %eax | |
448 ; ALL-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3 | |
449 ; ALL-NEXT: vpextrb $15, %xmm2, %eax | |
450 ; ALL-NEXT: lzcntl %eax, %eax | |
451 ; ALL-NEXT: addl $-24, %eax | |
452 ; ALL-NEXT: vpinsrb $15, %eax, %xmm3, %xmm2 | |
453 ; ALL-NEXT: vpextrb $1, %xmm1, %eax | |
454 ; ALL-NEXT: lzcntl %eax, %eax | |
455 ; ALL-NEXT: addl $-24, %eax | |
456 ; ALL-NEXT: vpextrb $0, %xmm1, %ecx | |
457 ; ALL-NEXT: lzcntl %ecx, %ecx | |
458 ; ALL-NEXT: addl $-24, %ecx | |
459 ; ALL-NEXT: vmovd %ecx, %xmm3 | |
460 ; ALL-NEXT: vpinsrb $1, %eax, %xmm3, %xmm3 | |
461 ; ALL-NEXT: vpextrb $2, %xmm1, %eax | |
462 ; ALL-NEXT: lzcntl %eax, %eax | |
463 ; ALL-NEXT: addl $-24, %eax | |
464 ; ALL-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3 | |
465 ; ALL-NEXT: vpextrb $3, %xmm1, %eax | |
466 ; ALL-NEXT: lzcntl %eax, %eax | |
467 ; ALL-NEXT: addl $-24, %eax | |
468 ; ALL-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3 | |
469 ; ALL-NEXT: vpextrb $4, %xmm1, %eax | |
470 ; ALL-NEXT: lzcntl %eax, %eax | |
471 ; ALL-NEXT: addl $-24, %eax | |
472 ; ALL-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3 | |
473 ; ALL-NEXT: vpextrb $5, %xmm1, %eax | |
474 ; ALL-NEXT: lzcntl %eax, %eax | |
475 ; ALL-NEXT: addl $-24, %eax | |
476 ; ALL-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3 | |
477 ; ALL-NEXT: vpextrb $6, %xmm1, %eax | |
478 ; ALL-NEXT: lzcntl %eax, %eax | |
479 ; ALL-NEXT: addl $-24, %eax | |
480 ; ALL-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3 | |
481 ; ALL-NEXT: vpextrb $7, %xmm1, %eax | |
482 ; ALL-NEXT: lzcntl %eax, %eax | |
483 ; ALL-NEXT: addl $-24, %eax | |
484 ; ALL-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3 | |
485 ; ALL-NEXT: vpextrb $8, %xmm1, %eax | |
486 ; ALL-NEXT: lzcntl %eax, %eax | |
487 ; ALL-NEXT: addl $-24, %eax | |
488 ; ALL-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3 | |
489 ; ALL-NEXT: vpextrb $9, %xmm1, %eax | |
490 ; ALL-NEXT: lzcntl %eax, %eax | |
491 ; ALL-NEXT: addl $-24, %eax | |
492 ; ALL-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3 | |
493 ; ALL-NEXT: vpextrb $10, %xmm1, %eax | |
494 ; ALL-NEXT: lzcntl %eax, %eax | |
495 ; ALL-NEXT: addl $-24, %eax | |
496 ; ALL-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3 | |
497 ; ALL-NEXT: vpextrb $11, %xmm1, %eax | |
498 ; ALL-NEXT: lzcntl %eax, %eax | |
499 ; ALL-NEXT: addl $-24, %eax | |
500 ; ALL-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3 | |
501 ; ALL-NEXT: vpextrb $12, %xmm1, %eax | |
502 ; ALL-NEXT: lzcntl %eax, %eax | |
503 ; ALL-NEXT: addl $-24, %eax | |
504 ; ALL-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3 | |
505 ; ALL-NEXT: vpextrb $13, %xmm1, %eax | |
506 ; ALL-NEXT: lzcntl %eax, %eax | |
507 ; ALL-NEXT: addl $-24, %eax | |
508 ; ALL-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3 | |
509 ; ALL-NEXT: vpextrb $14, %xmm1, %eax | |
510 ; ALL-NEXT: lzcntl %eax, %eax | |
511 ; ALL-NEXT: addl $-24, %eax | |
512 ; ALL-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3 | |
513 ; ALL-NEXT: vpextrb $15, %xmm1, %eax | |
514 ; ALL-NEXT: lzcntl %eax, %eax | |
515 ; ALL-NEXT: addl $-24, %eax | |
516 ; ALL-NEXT: vpinsrb $15, %eax, %xmm3, %xmm1 | |
517 ; ALL-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1 | |
518 ; ALL-NEXT: retq | |
519 %out = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %in, i1 0) | |
520 ret <64 x i8> %out | |
521 } | |
522 | |
523 define <64 x i8> @testv64i8u(<64 x i8> %in) nounwind { | |
524 ; ALL-LABEL: testv64i8u: | |
525 ; ALL: ## BB#0: | |
526 ; ALL-NEXT: vextracti128 $1, %ymm0, %xmm2 | |
527 ; ALL-NEXT: vpextrb $1, %xmm2, %eax | |
528 ; ALL-NEXT: lzcntl %eax, %eax | |
529 ; ALL-NEXT: addl $-24, %eax | |
530 ; ALL-NEXT: vpextrb $0, %xmm2, %ecx | |
531 ; ALL-NEXT: lzcntl %ecx, %ecx | |
532 ; ALL-NEXT: addl $-24, %ecx | |
533 ; ALL-NEXT: vmovd %ecx, %xmm3 | |
534 ; ALL-NEXT: vpinsrb $1, %eax, %xmm3, %xmm3 | |
535 ; ALL-NEXT: vpextrb $2, %xmm2, %eax | |
536 ; ALL-NEXT: lzcntl %eax, %eax | |
537 ; ALL-NEXT: addl $-24, %eax | |
538 ; ALL-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3 | |
539 ; ALL-NEXT: vpextrb $3, %xmm2, %eax | |
540 ; ALL-NEXT: lzcntl %eax, %eax | |
541 ; ALL-NEXT: addl $-24, %eax | |
542 ; ALL-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3 | |
543 ; ALL-NEXT: vpextrb $4, %xmm2, %eax | |
544 ; ALL-NEXT: lzcntl %eax, %eax | |
545 ; ALL-NEXT: addl $-24, %eax | |
546 ; ALL-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3 | |
547 ; ALL-NEXT: vpextrb $5, %xmm2, %eax | |
548 ; ALL-NEXT: lzcntl %eax, %eax | |
549 ; ALL-NEXT: addl $-24, %eax | |
550 ; ALL-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3 | |
551 ; ALL-NEXT: vpextrb $6, %xmm2, %eax | |
552 ; ALL-NEXT: lzcntl %eax, %eax | |
553 ; ALL-NEXT: addl $-24, %eax | |
554 ; ALL-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3 | |
555 ; ALL-NEXT: vpextrb $7, %xmm2, %eax | |
556 ; ALL-NEXT: lzcntl %eax, %eax | |
557 ; ALL-NEXT: addl $-24, %eax | |
558 ; ALL-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3 | |
559 ; ALL-NEXT: vpextrb $8, %xmm2, %eax | |
560 ; ALL-NEXT: lzcntl %eax, %eax | |
561 ; ALL-NEXT: addl $-24, %eax | |
562 ; ALL-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3 | |
563 ; ALL-NEXT: vpextrb $9, %xmm2, %eax | |
564 ; ALL-NEXT: lzcntl %eax, %eax | |
565 ; ALL-NEXT: addl $-24, %eax | |
566 ; ALL-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3 | |
567 ; ALL-NEXT: vpextrb $10, %xmm2, %eax | |
568 ; ALL-NEXT: lzcntl %eax, %eax | |
569 ; ALL-NEXT: addl $-24, %eax | |
570 ; ALL-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3 | |
571 ; ALL-NEXT: vpextrb $11, %xmm2, %eax | |
572 ; ALL-NEXT: lzcntl %eax, %eax | |
573 ; ALL-NEXT: addl $-24, %eax | |
574 ; ALL-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3 | |
575 ; ALL-NEXT: vpextrb $12, %xmm2, %eax | |
576 ; ALL-NEXT: lzcntl %eax, %eax | |
577 ; ALL-NEXT: addl $-24, %eax | |
578 ; ALL-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3 | |
579 ; ALL-NEXT: vpextrb $13, %xmm2, %eax | |
580 ; ALL-NEXT: lzcntl %eax, %eax | |
581 ; ALL-NEXT: addl $-24, %eax | |
582 ; ALL-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3 | |
583 ; ALL-NEXT: vpextrb $14, %xmm2, %eax | |
584 ; ALL-NEXT: lzcntl %eax, %eax | |
585 ; ALL-NEXT: addl $-24, %eax | |
586 ; ALL-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3 | |
587 ; ALL-NEXT: vpextrb $15, %xmm2, %eax | |
588 ; ALL-NEXT: lzcntl %eax, %eax | |
589 ; ALL-NEXT: addl $-24, %eax | |
590 ; ALL-NEXT: vpinsrb $15, %eax, %xmm3, %xmm2 | |
591 ; ALL-NEXT: vpextrb $1, %xmm0, %eax | |
592 ; ALL-NEXT: lzcntl %eax, %eax | |
593 ; ALL-NEXT: addl $-24, %eax | |
594 ; ALL-NEXT: vpextrb $0, %xmm0, %ecx | |
595 ; ALL-NEXT: lzcntl %ecx, %ecx | |
596 ; ALL-NEXT: addl $-24, %ecx | |
597 ; ALL-NEXT: vmovd %ecx, %xmm3 | |
598 ; ALL-NEXT: vpinsrb $1, %eax, %xmm3, %xmm3 | |
599 ; ALL-NEXT: vpextrb $2, %xmm0, %eax | |
600 ; ALL-NEXT: lzcntl %eax, %eax | |
601 ; ALL-NEXT: addl $-24, %eax | |
602 ; ALL-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3 | |
603 ; ALL-NEXT: vpextrb $3, %xmm0, %eax | |
604 ; ALL-NEXT: lzcntl %eax, %eax | |
605 ; ALL-NEXT: addl $-24, %eax | |
606 ; ALL-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3 | |
607 ; ALL-NEXT: vpextrb $4, %xmm0, %eax | |
608 ; ALL-NEXT: lzcntl %eax, %eax | |
609 ; ALL-NEXT: addl $-24, %eax | |
610 ; ALL-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3 | |
611 ; ALL-NEXT: vpextrb $5, %xmm0, %eax | |
612 ; ALL-NEXT: lzcntl %eax, %eax | |
613 ; ALL-NEXT: addl $-24, %eax | |
614 ; ALL-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3 | |
615 ; ALL-NEXT: vpextrb $6, %xmm0, %eax | |
616 ; ALL-NEXT: lzcntl %eax, %eax | |
617 ; ALL-NEXT: addl $-24, %eax | |
618 ; ALL-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3 | |
619 ; ALL-NEXT: vpextrb $7, %xmm0, %eax | |
620 ; ALL-NEXT: lzcntl %eax, %eax | |
621 ; ALL-NEXT: addl $-24, %eax | |
622 ; ALL-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3 | |
623 ; ALL-NEXT: vpextrb $8, %xmm0, %eax | |
624 ; ALL-NEXT: lzcntl %eax, %eax | |
625 ; ALL-NEXT: addl $-24, %eax | |
626 ; ALL-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3 | |
627 ; ALL-NEXT: vpextrb $9, %xmm0, %eax | |
628 ; ALL-NEXT: lzcntl %eax, %eax | |
629 ; ALL-NEXT: addl $-24, %eax | |
630 ; ALL-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3 | |
631 ; ALL-NEXT: vpextrb $10, %xmm0, %eax | |
632 ; ALL-NEXT: lzcntl %eax, %eax | |
633 ; ALL-NEXT: addl $-24, %eax | |
634 ; ALL-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3 | |
635 ; ALL-NEXT: vpextrb $11, %xmm0, %eax | |
636 ; ALL-NEXT: lzcntl %eax, %eax | |
637 ; ALL-NEXT: addl $-24, %eax | |
638 ; ALL-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3 | |
639 ; ALL-NEXT: vpextrb $12, %xmm0, %eax | |
640 ; ALL-NEXT: lzcntl %eax, %eax | |
641 ; ALL-NEXT: addl $-24, %eax | |
642 ; ALL-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3 | |
643 ; ALL-NEXT: vpextrb $13, %xmm0, %eax | |
644 ; ALL-NEXT: lzcntl %eax, %eax | |
645 ; ALL-NEXT: addl $-24, %eax | |
646 ; ALL-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3 | |
647 ; ALL-NEXT: vpextrb $14, %xmm0, %eax | |
648 ; ALL-NEXT: lzcntl %eax, %eax | |
649 ; ALL-NEXT: addl $-24, %eax | |
650 ; ALL-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3 | |
651 ; ALL-NEXT: vpextrb $15, %xmm0, %eax | |
652 ; ALL-NEXT: lzcntl %eax, %eax | |
653 ; ALL-NEXT: addl $-24, %eax | |
654 ; ALL-NEXT: vpinsrb $15, %eax, %xmm3, %xmm0 | |
655 ; ALL-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0 | |
656 ; ALL-NEXT: vextracti128 $1, %ymm1, %xmm2 | |
657 ; ALL-NEXT: vpextrb $1, %xmm2, %eax | |
658 ; ALL-NEXT: lzcntl %eax, %eax | |
659 ; ALL-NEXT: addl $-24, %eax | |
660 ; ALL-NEXT: vpextrb $0, %xmm2, %ecx | |
661 ; ALL-NEXT: lzcntl %ecx, %ecx | |
662 ; ALL-NEXT: addl $-24, %ecx | |
663 ; ALL-NEXT: vmovd %ecx, %xmm3 | |
664 ; ALL-NEXT: vpinsrb $1, %eax, %xmm3, %xmm3 | |
665 ; ALL-NEXT: vpextrb $2, %xmm2, %eax | |
666 ; ALL-NEXT: lzcntl %eax, %eax | |
667 ; ALL-NEXT: addl $-24, %eax | |
668 ; ALL-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3 | |
669 ; ALL-NEXT: vpextrb $3, %xmm2, %eax | |
670 ; ALL-NEXT: lzcntl %eax, %eax | |
671 ; ALL-NEXT: addl $-24, %eax | |
672 ; ALL-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3 | |
673 ; ALL-NEXT: vpextrb $4, %xmm2, %eax | |
674 ; ALL-NEXT: lzcntl %eax, %eax | |
675 ; ALL-NEXT: addl $-24, %eax | |
676 ; ALL-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3 | |
677 ; ALL-NEXT: vpextrb $5, %xmm2, %eax | |
678 ; ALL-NEXT: lzcntl %eax, %eax | |
679 ; ALL-NEXT: addl $-24, %eax | |
680 ; ALL-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3 | |
681 ; ALL-NEXT: vpextrb $6, %xmm2, %eax | |
682 ; ALL-NEXT: lzcntl %eax, %eax | |
683 ; ALL-NEXT: addl $-24, %eax | |
684 ; ALL-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3 | |
685 ; ALL-NEXT: vpextrb $7, %xmm2, %eax | |
686 ; ALL-NEXT: lzcntl %eax, %eax | |
687 ; ALL-NEXT: addl $-24, %eax | |
688 ; ALL-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3 | |
689 ; ALL-NEXT: vpextrb $8, %xmm2, %eax | |
690 ; ALL-NEXT: lzcntl %eax, %eax | |
691 ; ALL-NEXT: addl $-24, %eax | |
692 ; ALL-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3 | |
693 ; ALL-NEXT: vpextrb $9, %xmm2, %eax | |
694 ; ALL-NEXT: lzcntl %eax, %eax | |
695 ; ALL-NEXT: addl $-24, %eax | |
696 ; ALL-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3 | |
697 ; ALL-NEXT: vpextrb $10, %xmm2, %eax | |
698 ; ALL-NEXT: lzcntl %eax, %eax | |
699 ; ALL-NEXT: addl $-24, %eax | |
700 ; ALL-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3 | |
701 ; ALL-NEXT: vpextrb $11, %xmm2, %eax | |
702 ; ALL-NEXT: lzcntl %eax, %eax | |
703 ; ALL-NEXT: addl $-24, %eax | |
704 ; ALL-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3 | |
705 ; ALL-NEXT: vpextrb $12, %xmm2, %eax | |
706 ; ALL-NEXT: lzcntl %eax, %eax | |
707 ; ALL-NEXT: addl $-24, %eax | |
708 ; ALL-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3 | |
709 ; ALL-NEXT: vpextrb $13, %xmm2, %eax | |
710 ; ALL-NEXT: lzcntl %eax, %eax | |
711 ; ALL-NEXT: addl $-24, %eax | |
712 ; ALL-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3 | |
713 ; ALL-NEXT: vpextrb $14, %xmm2, %eax | |
714 ; ALL-NEXT: lzcntl %eax, %eax | |
715 ; ALL-NEXT: addl $-24, %eax | |
716 ; ALL-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3 | |
717 ; ALL-NEXT: vpextrb $15, %xmm2, %eax | |
718 ; ALL-NEXT: lzcntl %eax, %eax | |
719 ; ALL-NEXT: addl $-24, %eax | |
720 ; ALL-NEXT: vpinsrb $15, %eax, %xmm3, %xmm2 | |
721 ; ALL-NEXT: vpextrb $1, %xmm1, %eax | |
722 ; ALL-NEXT: lzcntl %eax, %eax | |
723 ; ALL-NEXT: addl $-24, %eax | |
724 ; ALL-NEXT: vpextrb $0, %xmm1, %ecx | |
725 ; ALL-NEXT: lzcntl %ecx, %ecx | |
726 ; ALL-NEXT: addl $-24, %ecx | |
727 ; ALL-NEXT: vmovd %ecx, %xmm3 | |
728 ; ALL-NEXT: vpinsrb $1, %eax, %xmm3, %xmm3 | |
729 ; ALL-NEXT: vpextrb $2, %xmm1, %eax | |
730 ; ALL-NEXT: lzcntl %eax, %eax | |
731 ; ALL-NEXT: addl $-24, %eax | |
732 ; ALL-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3 | |
733 ; ALL-NEXT: vpextrb $3, %xmm1, %eax | |
734 ; ALL-NEXT: lzcntl %eax, %eax | |
735 ; ALL-NEXT: addl $-24, %eax | |
736 ; ALL-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3 | |
737 ; ALL-NEXT: vpextrb $4, %xmm1, %eax | |
738 ; ALL-NEXT: lzcntl %eax, %eax | |
739 ; ALL-NEXT: addl $-24, %eax | |
740 ; ALL-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3 | |
741 ; ALL-NEXT: vpextrb $5, %xmm1, %eax | |
742 ; ALL-NEXT: lzcntl %eax, %eax | |
743 ; ALL-NEXT: addl $-24, %eax | |
744 ; ALL-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3 | |
745 ; ALL-NEXT: vpextrb $6, %xmm1, %eax | |
746 ; ALL-NEXT: lzcntl %eax, %eax | |
747 ; ALL-NEXT: addl $-24, %eax | |
748 ; ALL-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3 | |
749 ; ALL-NEXT: vpextrb $7, %xmm1, %eax | |
750 ; ALL-NEXT: lzcntl %eax, %eax | |
751 ; ALL-NEXT: addl $-24, %eax | |
752 ; ALL-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3 | |
753 ; ALL-NEXT: vpextrb $8, %xmm1, %eax | |
754 ; ALL-NEXT: lzcntl %eax, %eax | |
755 ; ALL-NEXT: addl $-24, %eax | |
756 ; ALL-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3 | |
757 ; ALL-NEXT: vpextrb $9, %xmm1, %eax | |
758 ; ALL-NEXT: lzcntl %eax, %eax | |
759 ; ALL-NEXT: addl $-24, %eax | |
760 ; ALL-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3 | |
761 ; ALL-NEXT: vpextrb $10, %xmm1, %eax | |
762 ; ALL-NEXT: lzcntl %eax, %eax | |
763 ; ALL-NEXT: addl $-24, %eax | |
764 ; ALL-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3 | |
765 ; ALL-NEXT: vpextrb $11, %xmm1, %eax | |
766 ; ALL-NEXT: lzcntl %eax, %eax | |
767 ; ALL-NEXT: addl $-24, %eax | |
768 ; ALL-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3 | |
769 ; ALL-NEXT: vpextrb $12, %xmm1, %eax | |
770 ; ALL-NEXT: lzcntl %eax, %eax | |
771 ; ALL-NEXT: addl $-24, %eax | |
772 ; ALL-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3 | |
773 ; ALL-NEXT: vpextrb $13, %xmm1, %eax | |
774 ; ALL-NEXT: lzcntl %eax, %eax | |
775 ; ALL-NEXT: addl $-24, %eax | |
776 ; ALL-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3 | |
777 ; ALL-NEXT: vpextrb $14, %xmm1, %eax | |
778 ; ALL-NEXT: lzcntl %eax, %eax | |
779 ; ALL-NEXT: addl $-24, %eax | |
780 ; ALL-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3 | |
781 ; ALL-NEXT: vpextrb $15, %xmm1, %eax | |
782 ; ALL-NEXT: lzcntl %eax, %eax | |
783 ; ALL-NEXT: addl $-24, %eax | |
784 ; ALL-NEXT: vpinsrb $15, %eax, %xmm3, %xmm1 | |
785 ; ALL-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1 | |
786 ; ALL-NEXT: retq | |
787 %out = call <64 x i8> @llvm.ctlz.v64i8(<64 x i8> %in, i1 -1) | |
788 ret <64 x i8> %out | |
789 } | |
790 | |
791 declare <8 x i64> @llvm.ctlz.v8i64(<8 x i64>, i1) | |
792 declare <16 x i32> @llvm.ctlz.v16i32(<16 x i32>, i1) | |
793 declare <32 x i16> @llvm.ctlz.v32i16(<32 x i16>, i1) | |
794 declare <64 x i8> @llvm.ctlz.v64i8(<64 x i8>, i1) |