@@ -486,6 +486,28 @@ define <8 x i8> @intrinsics_different(<8 x i8> %a, <8 x i8> %b) {
486
486
ret <8 x i8 > %r
487
487
}
488
488
489
+ ; div and rem are currently excluded.
490
+ define <8 x i8 > @div (<8 x i8 > %a , <8 x i8 > %b ) {
491
+ ; CHECK-LABEL: @div(
492
+ ; CHECK-NEXT: [[AB:%.*]] = shufflevector <8 x i8> [[A:%.*]], <8 x i8> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
493
+ ; CHECK-NEXT: [[AT:%.*]] = shufflevector <8 x i8> [[A]], <8 x i8> poison, <4 x i32> <i32 7, i32 6, i32 5, i32 4>
494
+ ; CHECK-NEXT: [[BB:%.*]] = shufflevector <8 x i8> [[B:%.*]], <8 x i8> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
495
+ ; CHECK-NEXT: [[BT:%.*]] = shufflevector <8 x i8> [[B]], <8 x i8> poison, <4 x i32> <i32 7, i32 6, i32 5, i32 4>
496
+ ; CHECK-NEXT: [[ABT:%.*]] = udiv <4 x i8> [[AT]], [[BT]]
497
+ ; CHECK-NEXT: [[ABB:%.*]] = udiv <4 x i8> [[AB]], [[BB]]
498
+ ; CHECK-NEXT: [[R:%.*]] = shufflevector <4 x i8> [[ABT]], <4 x i8> [[ABB]], <8 x i32> <i32 7, i32 poison, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
499
+ ; CHECK-NEXT: ret <8 x i8> [[R]]
500
+ ;
501
+ %ab = shufflevector <8 x i8 > %a , <8 x i8 > poison, <4 x i32 > <i32 3 , i32 2 , i32 1 , i32 0 >
502
+ %at = shufflevector <8 x i8 > %a , <8 x i8 > poison, <4 x i32 > <i32 7 , i32 6 , i32 5 , i32 4 >
503
+ %bb = shufflevector <8 x i8 > %b , <8 x i8 > poison, <4 x i32 > <i32 3 , i32 2 , i32 1 , i32 0 >
504
+ %bt = shufflevector <8 x i8 > %b , <8 x i8 > poison, <4 x i32 > <i32 7 , i32 6 , i32 5 , i32 4 >
505
+ %abt = udiv <4 x i8 > %at , %bt
506
+ %abb = udiv <4 x i8 > %ab , %bb
507
+ %r = shufflevector <4 x i8 > %abt , <4 x i8 > %abb , <8 x i32 > <i32 7 , i32 poison, i32 5 , i32 4 , i32 3 , i32 2 , i32 1 , i32 0 >
508
+ ret <8 x i8 > %r
509
+ }
510
+
489
511
define void @v8f64interleave (i64 %0 , ptr %1 , ptr %x , double %z ) {
490
512
; CHECK-LABEL: @v8f64interleave(
491
513
; CHECK-NEXT: entry:
0 commit comments