@@ -177,236 +177,20 @@ define i32 @bitmask_v32i8(<32 x i8> %v) {
177177; CHECK:         .functype bitmask_v32i8 (v128, v128) -> (i32) 
178178; CHECK-NEXT:    .local v128 
179179; CHECK-NEXT:  # %bb.0: 
180- ; CHECK-NEXT:    global.get __stack_pointer 
181180; CHECK-NEXT:    i32.const 16 
182- ; CHECK-NEXT:    i32.sub 
183- ; CHECK-NEXT:    drop 
184181; CHECK-NEXT:    local.get 0 
185182; CHECK-NEXT:    v128.const 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 
186183; CHECK-NEXT:    local.tee 2 
187184; CHECK-NEXT:    i8x16.eq 
188- ; CHECK-NEXT:    local.tee 0 
189- ; CHECK-NEXT:    i8x16.extract_lane_u 0 
190- ; CHECK-NEXT:    i32.const 1 
191- ; CHECK-NEXT:    i32.and 
192- ; CHECK-NEXT:    local.get 0 
193- ; CHECK-NEXT:    i8x16.extract_lane_u 1 
194- ; CHECK-NEXT:    i32.const 1 
195- ; CHECK-NEXT:    i32.and 
196- ; CHECK-NEXT:    i32.const 1 
197- ; CHECK-NEXT:    i32.shl 
198- ; CHECK-NEXT:    i32.or 
199- ; CHECK-NEXT:    local.get 0 
200- ; CHECK-NEXT:    i8x16.extract_lane_u 2 
201- ; CHECK-NEXT:    i32.const 1 
202- ; CHECK-NEXT:    i32.and 
203- ; CHECK-NEXT:    i32.const 2 
204- ; CHECK-NEXT:    i32.shl 
205- ; CHECK-NEXT:    i32.or 
206- ; CHECK-NEXT:    local.get 0 
207- ; CHECK-NEXT:    i8x16.extract_lane_u 3 
208- ; CHECK-NEXT:    i32.const 1 
209- ; CHECK-NEXT:    i32.and 
210- ; CHECK-NEXT:    i32.const 3 
211- ; CHECK-NEXT:    i32.shl 
212- ; CHECK-NEXT:    i32.or 
213- ; CHECK-NEXT:    local.get 0 
214- ; CHECK-NEXT:    i8x16.extract_lane_u 4 
215- ; CHECK-NEXT:    i32.const 1 
216- ; CHECK-NEXT:    i32.and 
217- ; CHECK-NEXT:    i32.const 4 
218- ; CHECK-NEXT:    i32.shl 
219- ; CHECK-NEXT:    i32.or 
220- ; CHECK-NEXT:    local.get 0 
221- ; CHECK-NEXT:    i8x16.extract_lane_u 5 
222- ; CHECK-NEXT:    i32.const 1 
223- ; CHECK-NEXT:    i32.and 
224- ; CHECK-NEXT:    i32.const 5 
225- ; CHECK-NEXT:    i32.shl 
226- ; CHECK-NEXT:    i32.or 
227- ; CHECK-NEXT:    local.get 0 
228- ; CHECK-NEXT:    i8x16.extract_lane_u 6 
229- ; CHECK-NEXT:    i32.const 1 
230- ; CHECK-NEXT:    i32.and 
231- ; CHECK-NEXT:    i32.const 6 
232- ; CHECK-NEXT:    i32.shl 
233- ; CHECK-NEXT:    i32.or 
234- ; CHECK-NEXT:    local.get 0 
235- ; CHECK-NEXT:    i8x16.extract_lane_u 7 
236- ; CHECK-NEXT:    i32.const 1 
237- ; CHECK-NEXT:    i32.and 
238- ; CHECK-NEXT:    i32.const 7 
239- ; CHECK-NEXT:    i32.shl 
240- ; CHECK-NEXT:    i32.or 
241- ; CHECK-NEXT:    local.get 0 
242- ; CHECK-NEXT:    i8x16.extract_lane_u 8 
243- ; CHECK-NEXT:    i32.const 1 
244- ; CHECK-NEXT:    i32.and 
245- ; CHECK-NEXT:    i32.const 8 
246- ; CHECK-NEXT:    i32.shl 
247- ; CHECK-NEXT:    i32.or 
248- ; CHECK-NEXT:    local.get 0 
249- ; CHECK-NEXT:    i8x16.extract_lane_u 9 
250- ; CHECK-NEXT:    i32.const 1 
251- ; CHECK-NEXT:    i32.and 
252- ; CHECK-NEXT:    i32.const 9 
253- ; CHECK-NEXT:    i32.shl 
254- ; CHECK-NEXT:    i32.or 
255- ; CHECK-NEXT:    local.get 0 
256- ; CHECK-NEXT:    i8x16.extract_lane_u 10 
257- ; CHECK-NEXT:    i32.const 1 
258- ; CHECK-NEXT:    i32.and 
259- ; CHECK-NEXT:    i32.const 10 
260- ; CHECK-NEXT:    i32.shl 
261- ; CHECK-NEXT:    i32.or 
262- ; CHECK-NEXT:    local.get 0 
263- ; CHECK-NEXT:    i8x16.extract_lane_u 11 
264- ; CHECK-NEXT:    i32.const 1 
265- ; CHECK-NEXT:    i32.and 
266- ; CHECK-NEXT:    i32.const 11 
267- ; CHECK-NEXT:    i32.shl 
268- ; CHECK-NEXT:    i32.or 
269- ; CHECK-NEXT:    local.get 0 
270- ; CHECK-NEXT:    i8x16.extract_lane_u 12 
271- ; CHECK-NEXT:    i32.const 1 
272- ; CHECK-NEXT:    i32.and 
273- ; CHECK-NEXT:    i32.const 12 
274- ; CHECK-NEXT:    i32.shl 
275- ; CHECK-NEXT:    i32.or 
276- ; CHECK-NEXT:    local.get 0 
277- ; CHECK-NEXT:    i8x16.extract_lane_u 13 
278- ; CHECK-NEXT:    i32.const 1 
279- ; CHECK-NEXT:    i32.and 
280- ; CHECK-NEXT:    i32.const 13 
281- ; CHECK-NEXT:    i32.shl 
282- ; CHECK-NEXT:    i32.or 
283- ; CHECK-NEXT:    local.get 0 
284- ; CHECK-NEXT:    i8x16.extract_lane_u 14 
285- ; CHECK-NEXT:    i32.const 1 
286- ; CHECK-NEXT:    i32.and 
287- ; CHECK-NEXT:    i32.const 14 
288- ; CHECK-NEXT:    i32.shl 
289- ; CHECK-NEXT:    i32.or 
290- ; CHECK-NEXT:    local.get 0 
291- ; CHECK-NEXT:    i8x16.extract_lane_u 15 
292- ; CHECK-NEXT:    i32.const 15 
185+ ; CHECK-NEXT:    i8x16.bitmask 
186+ ; CHECK-NEXT:    i32.const 16 
187+ ; CHECK-NEXT:    i32.add 
293188; CHECK-NEXT:    i32.shl 
294- ; CHECK-NEXT:    i32.or 
295- ; CHECK-NEXT:    i32.const 65535 
296- ; CHECK-NEXT:    i32.and 
297189; CHECK-NEXT:    local.get 1 
298190; CHECK-NEXT:    local.get 2 
299191; CHECK-NEXT:    i8x16.eq 
300- ; CHECK-NEXT:    local.tee 0 
301- ; CHECK-NEXT:    i8x16.extract_lane_u 15 
302- ; CHECK-NEXT:    i32.const 31 
303- ; CHECK-NEXT:    i32.shl 
304- ; CHECK-NEXT:    local.get 0 
305- ; CHECK-NEXT:    i8x16.extract_lane_u 14 
306- ; CHECK-NEXT:    i32.const 1 
307- ; CHECK-NEXT:    i32.and 
308- ; CHECK-NEXT:    i32.const 30 
309- ; CHECK-NEXT:    i32.shl 
310- ; CHECK-NEXT:    local.get 0 
311- ; CHECK-NEXT:    i8x16.extract_lane_u 13 
312- ; CHECK-NEXT:    i32.const 1 
313- ; CHECK-NEXT:    i32.and 
314- ; CHECK-NEXT:    i32.const 29 
315- ; CHECK-NEXT:    i32.shl 
316- ; CHECK-NEXT:    local.get 0 
317- ; CHECK-NEXT:    i8x16.extract_lane_u 12 
318- ; CHECK-NEXT:    i32.const 1 
319- ; CHECK-NEXT:    i32.and 
320- ; CHECK-NEXT:    i32.const 28 
321- ; CHECK-NEXT:    i32.shl 
322- ; CHECK-NEXT:    local.get 0 
323- ; CHECK-NEXT:    i8x16.extract_lane_u 11 
324- ; CHECK-NEXT:    i32.const 1 
325- ; CHECK-NEXT:    i32.and 
326- ; CHECK-NEXT:    i32.const 27 
327- ; CHECK-NEXT:    i32.shl 
328- ; CHECK-NEXT:    local.get 0 
329- ; CHECK-NEXT:    i8x16.extract_lane_u 10 
330- ; CHECK-NEXT:    i32.const 1 
331- ; CHECK-NEXT:    i32.and 
332- ; CHECK-NEXT:    i32.const 26 
333- ; CHECK-NEXT:    i32.shl 
334- ; CHECK-NEXT:    local.get 0 
335- ; CHECK-NEXT:    i8x16.extract_lane_u 9 
336- ; CHECK-NEXT:    i32.const 1 
337- ; CHECK-NEXT:    i32.and 
338- ; CHECK-NEXT:    i32.const 25 
339- ; CHECK-NEXT:    i32.shl 
340- ; CHECK-NEXT:    local.get 0 
341- ; CHECK-NEXT:    i8x16.extract_lane_u 8 
342- ; CHECK-NEXT:    i32.const 1 
343- ; CHECK-NEXT:    i32.and 
344- ; CHECK-NEXT:    i32.const 24 
345- ; CHECK-NEXT:    i32.shl 
346- ; CHECK-NEXT:    local.get 0 
347- ; CHECK-NEXT:    i8x16.extract_lane_u 7 
348- ; CHECK-NEXT:    i32.const 1 
349- ; CHECK-NEXT:    i32.and 
350- ; CHECK-NEXT:    i32.const 23 
351- ; CHECK-NEXT:    i32.shl 
352- ; CHECK-NEXT:    local.get 0 
353- ; CHECK-NEXT:    i8x16.extract_lane_u 6 
354- ; CHECK-NEXT:    i32.const 1 
355- ; CHECK-NEXT:    i32.and 
356- ; CHECK-NEXT:    i32.const 22 
357- ; CHECK-NEXT:    i32.shl 
358- ; CHECK-NEXT:    local.get 0 
359- ; CHECK-NEXT:    i8x16.extract_lane_u 5 
360- ; CHECK-NEXT:    i32.const 1 
361- ; CHECK-NEXT:    i32.and 
362- ; CHECK-NEXT:    i32.const 21 
363- ; CHECK-NEXT:    i32.shl 
364- ; CHECK-NEXT:    local.get 0 
365- ; CHECK-NEXT:    i8x16.extract_lane_u 4 
366- ; CHECK-NEXT:    i32.const 1 
367- ; CHECK-NEXT:    i32.and 
368- ; CHECK-NEXT:    i32.const 20 
369- ; CHECK-NEXT:    i32.shl 
370- ; CHECK-NEXT:    local.get 0 
371- ; CHECK-NEXT:    i8x16.extract_lane_u 3 
372- ; CHECK-NEXT:    i32.const 1 
373- ; CHECK-NEXT:    i32.and 
374- ; CHECK-NEXT:    i32.const 19 
375- ; CHECK-NEXT:    i32.shl 
376- ; CHECK-NEXT:    local.get 0 
377- ; CHECK-NEXT:    i8x16.extract_lane_u 2 
378- ; CHECK-NEXT:    i32.const 1 
379- ; CHECK-NEXT:    i32.and 
380- ; CHECK-NEXT:    i32.const 18 
381- ; CHECK-NEXT:    i32.shl 
382- ; CHECK-NEXT:    local.get 0 
383- ; CHECK-NEXT:    i8x16.extract_lane_u 1 
384- ; CHECK-NEXT:    i32.const 1 
385- ; CHECK-NEXT:    i32.and 
386- ; CHECK-NEXT:    i32.const 17 
387- ; CHECK-NEXT:    i32.shl 
388- ; CHECK-NEXT:    local.get 0 
389- ; CHECK-NEXT:    i8x16.extract_lane_u 0 
390- ; CHECK-NEXT:    i32.const 1 
391- ; CHECK-NEXT:    i32.and 
392- ; CHECK-NEXT:    i32.const 16 
393- ; CHECK-NEXT:    i32.shl 
394- ; CHECK-NEXT:    i32.or 
395- ; CHECK-NEXT:    i32.or 
396- ; CHECK-NEXT:    i32.or 
397- ; CHECK-NEXT:    i32.or 
398- ; CHECK-NEXT:    i32.or 
399- ; CHECK-NEXT:    i32.or 
400- ; CHECK-NEXT:    i32.or 
401- ; CHECK-NEXT:    i32.or 
402- ; CHECK-NEXT:    i32.or 
403- ; CHECK-NEXT:    i32.or 
404- ; CHECK-NEXT:    i32.or 
405- ; CHECK-NEXT:    i32.or 
406- ; CHECK-NEXT:    i32.or 
407- ; CHECK-NEXT:    i32.or 
408- ; CHECK-NEXT:    i32.or 
409- ; CHECK-NEXT:    i32.or 
192+ ; CHECK-NEXT:    i8x16.bitmask 
193+ ; CHECK-NEXT:    i32.add 
410194; CHECK-NEXT:    # fallthrough-return 
411195  %cmp  = icmp  eq  <32  x i8 > %v , zeroinitializer 
412196  %bitmask  = bitcast  <32  x i1 > %cmp  to  i32 
0 commit comments