@@ -293,3 +293,99 @@ define <4 x i1> @shuf_nonzero_rhs2_fail(<4 x i8> %xx) {
293
293
%r = icmp eq <4 x i8 > %shuf , zeroinitializer
294
294
ret <4 x i1 > %r
295
295
}
296
+
297
+ define <2 x i1 > @insert_nonzero0 (<2 x i8 > %xx , i8 %yy ) {
298
+ ; CHECK-LABEL: @insert_nonzero0(
299
+ ; CHECK-NEXT: [[X:%.*]] = add nuw <2 x i8> [[XX:%.*]], <i8 1, i8 0>
300
+ ; CHECK-NEXT: [[Y:%.*]] = add nuw i8 [[YY:%.*]], 1
301
+ ; CHECK-NEXT: [[INS:%.*]] = insertelement <2 x i8> [[X]], i8 [[Y]], i32 1
302
+ ; CHECK-NEXT: [[R:%.*]] = icmp eq <2 x i8> [[INS]], zeroinitializer
303
+ ; CHECK-NEXT: ret <2 x i1> [[R]]
304
+ ;
305
+ %x = add nuw <2 x i8 > %xx , <i8 1 , i8 0 >
306
+ %y = add nuw i8 %yy , 1
307
+
308
+ %ins = insertelement <2 x i8 > %x , i8 %y , i32 1
309
+ %r = icmp eq <2 x i8 > %ins , zeroinitializer
310
+ ret <2 x i1 > %r
311
+ }
312
+
313
+ define <2 x i1 > @insert_nonzero1 (<2 x i8 > %xx , i8 %yy ) {
314
+ ; CHECK-LABEL: @insert_nonzero1(
315
+ ; CHECK-NEXT: [[X:%.*]] = add nuw <2 x i8> [[XX:%.*]], <i8 0, i8 1>
316
+ ; CHECK-NEXT: [[Y:%.*]] = add nuw i8 [[YY:%.*]], 1
317
+ ; CHECK-NEXT: [[INS:%.*]] = insertelement <2 x i8> [[X]], i8 [[Y]], i32 0
318
+ ; CHECK-NEXT: [[R:%.*]] = icmp eq <2 x i8> [[INS]], zeroinitializer
319
+ ; CHECK-NEXT: ret <2 x i1> [[R]]
320
+ ;
321
+ %x = add nuw <2 x i8 > %xx , <i8 0 , i8 1 >
322
+ %y = add nuw i8 %yy , 1
323
+
324
+ %ins = insertelement <2 x i8 > %x , i8 %y , i32 0
325
+ %r = icmp eq <2 x i8 > %ins , zeroinitializer
326
+ ret <2 x i1 > %r
327
+ }
328
+
329
+ define <2 x i1 > @insert_nonzero_fail (<2 x i8 > %xx , i8 %yy ) {
330
+ ; CHECK-LABEL: @insert_nonzero_fail(
331
+ ; CHECK-NEXT: [[X:%.*]] = add nuw <2 x i8> [[XX:%.*]], <i8 1, i8 0>
332
+ ; CHECK-NEXT: [[Y:%.*]] = add nuw i8 [[YY:%.*]], 1
333
+ ; CHECK-NEXT: [[INS:%.*]] = insertelement <2 x i8> [[X]], i8 [[Y]], i32 0
334
+ ; CHECK-NEXT: [[R:%.*]] = icmp eq <2 x i8> [[INS]], zeroinitializer
335
+ ; CHECK-NEXT: ret <2 x i1> [[R]]
336
+ ;
337
+ %x = add nuw <2 x i8 > %xx , <i8 1 , i8 0 >
338
+ %y = add nuw i8 %yy , 1
339
+
340
+ %ins = insertelement <2 x i8 > %x , i8 %y , i32 0
341
+ %r = icmp eq <2 x i8 > %ins , zeroinitializer
342
+ ret <2 x i1 > %r
343
+ }
344
+
345
+ define <2 x i1 > @insert_nonzero_fail2 (<2 x i8 > %xx , i8 %yy ) {
346
+ ; CHECK-LABEL: @insert_nonzero_fail2(
347
+ ; CHECK-NEXT: [[X:%.*]] = add nuw <2 x i8> [[XX:%.*]], <i8 0, i8 1>
348
+ ; CHECK-NEXT: [[Y:%.*]] = add i8 [[YY:%.*]], 1
349
+ ; CHECK-NEXT: [[INS:%.*]] = insertelement <2 x i8> [[X]], i8 [[Y]], i32 0
350
+ ; CHECK-NEXT: [[R:%.*]] = icmp eq <2 x i8> [[INS]], zeroinitializer
351
+ ; CHECK-NEXT: ret <2 x i1> [[R]]
352
+ ;
353
+ %x = add nuw <2 x i8 > %xx , <i8 0 , i8 1 >
354
+ %y = add i8 %yy , 1
355
+
356
+ %ins = insertelement <2 x i8 > %x , i8 %y , i32 0
357
+ %r = icmp eq <2 x i8 > %ins , zeroinitializer
358
+ ret <2 x i1 > %r
359
+ }
360
+
361
+ define <2 x i1 > @insert_nonzero_any_idx (<2 x i8 > %xx , i8 %yy , i32 %idx ) {
362
+ ; CHECK-LABEL: @insert_nonzero_any_idx(
363
+ ; CHECK-NEXT: [[X:%.*]] = add nuw <2 x i8> [[XX:%.*]], <i8 1, i8 1>
364
+ ; CHECK-NEXT: [[Y:%.*]] = add nuw i8 [[YY:%.*]], 1
365
+ ; CHECK-NEXT: [[INS:%.*]] = insertelement <2 x i8> [[X]], i8 [[Y]], i32 [[IDX:%.*]]
366
+ ; CHECK-NEXT: [[R:%.*]] = icmp eq <2 x i8> [[INS]], zeroinitializer
367
+ ; CHECK-NEXT: ret <2 x i1> [[R]]
368
+ ;
369
+ %x = add nuw <2 x i8 > %xx , <i8 1 , i8 1 >
370
+ %y = add nuw i8 %yy , 1
371
+
372
+ %ins = insertelement <2 x i8 > %x , i8 %y , i32 %idx
373
+ %r = icmp eq <2 x i8 > %ins , zeroinitializer
374
+ ret <2 x i1 > %r
375
+ }
376
+
377
+ define <2 x i1 > @insert_nonzero_any_idx_fail (<2 x i8 > %xx , i8 %yy , i32 %idx ) {
378
+ ; CHECK-LABEL: @insert_nonzero_any_idx_fail(
379
+ ; CHECK-NEXT: [[X:%.*]] = add nuw <2 x i8> [[XX:%.*]], <i8 1, i8 0>
380
+ ; CHECK-NEXT: [[Y:%.*]] = add nuw i8 [[YY:%.*]], 1
381
+ ; CHECK-NEXT: [[INS:%.*]] = insertelement <2 x i8> [[X]], i8 [[Y]], i32 [[IDX:%.*]]
382
+ ; CHECK-NEXT: [[R:%.*]] = icmp eq <2 x i8> [[INS]], zeroinitializer
383
+ ; CHECK-NEXT: ret <2 x i1> [[R]]
384
+ ;
385
+ %x = add nuw <2 x i8 > %xx , <i8 1 , i8 0 >
386
+ %y = add nuw i8 %yy , 1
387
+
388
+ %ins = insertelement <2 x i8 > %x , i8 %y , i32 %idx
389
+ %r = icmp eq <2 x i8 > %ins , zeroinitializer
390
+ ret <2 x i1 > %r
391
+ }
0 commit comments