@@ -447,6 +447,60 @@ define void @umul_with_overflow_test(i32 %0, i32 %1, <8 x i32> %2, <8 x i32> %3)
447447 ret void
448448}
449449
450+ ; CHECK-LABEL: llvm.func @sadd_sat_test
451+ define void @sadd_sat_test (i32 %0 , i32 %1 , <8 x i32 > %2 , <8 x i32 > %3 ) {
452+ ; CHECK: llvm.intr.sadd.sat(%{{.*}}, %{{.*}}) : (i32, i32) -> i32
453+ %5 = call i32 @llvm.sadd.sat.i32 (i32 %0 , i32 %1 )
454+ ; CHECK: llvm.intr.sadd.sat(%{{.*}}, %{{.*}}) : (vector<8xi32>, vector<8xi32>) -> vector<8xi32>
455+ %6 = call <8 x i32 > @llvm.sadd.sat.v8i32 (<8 x i32 > %2 , <8 x i32 > %3 )
456+ ret void
457+ }
458+
459+ ; CHECK-LABEL: llvm.func @uadd_sat_test
460+ define void @uadd_sat_test (i32 %0 , i32 %1 , <8 x i32 > %2 , <8 x i32 > %3 ) {
461+ ; CHECK: llvm.intr.uadd.sat(%{{.*}}, %{{.*}}) : (i32, i32) -> i32
462+ %5 = call i32 @llvm.uadd.sat.i32 (i32 %0 , i32 %1 )
463+ ; CHECK: llvm.intr.uadd.sat(%{{.*}}, %{{.*}}) : (vector<8xi32>, vector<8xi32>) -> vector<8xi32>
464+ %6 = call <8 x i32 > @llvm.uadd.sat.v8i32 (<8 x i32 > %2 , <8 x i32 > %3 )
465+ ret void
466+ }
467+
468+ ; CHECK-LABEL: llvm.func @ssub_sat_test
469+ define void @ssub_sat_test (i32 %0 , i32 %1 , <8 x i32 > %2 , <8 x i32 > %3 ) {
470+ ; CHECK: llvm.intr.ssub.sat(%{{.*}}, %{{.*}}) : (i32, i32) -> i32
471+ %5 = call i32 @llvm.ssub.sat.i32 (i32 %0 , i32 %1 )
472+ ; CHECK: llvm.intr.ssub.sat(%{{.*}}, %{{.*}}) : (vector<8xi32>, vector<8xi32>) -> vector<8xi32>
473+ %6 = call <8 x i32 > @llvm.ssub.sat.v8i32 (<8 x i32 > %2 , <8 x i32 > %3 )
474+ ret void
475+ }
476+
477+ ; CHECK-LABEL: llvm.func @usub_sat_test
478+ define void @usub_sat_test (i32 %0 , i32 %1 , <8 x i32 > %2 , <8 x i32 > %3 ) {
479+ ; CHECK: llvm.intr.usub.sat(%{{.*}}, %{{.*}}) : (i32, i32) -> i32
480+ %5 = call i32 @llvm.usub.sat.i32 (i32 %0 , i32 %1 )
481+ ; CHECK: llvm.intr.usub.sat(%{{.*}}, %{{.*}}) : (vector<8xi32>, vector<8xi32>) -> vector<8xi32>
482+ %6 = call <8 x i32 > @llvm.usub.sat.v8i32 (<8 x i32 > %2 , <8 x i32 > %3 )
483+ ret void
484+ }
485+
486+ ; CHECK-LABEL: llvm.func @sshl_sat_test
487+ define void @sshl_sat_test (i32 %0 , i32 %1 , <8 x i32 > %2 , <8 x i32 > %3 ) {
488+ ; CHECK: llvm.intr.sshl.sat(%{{.*}}, %{{.*}}) : (i32, i32) -> i32
489+ %5 = call i32 @llvm.sshl.sat.i32 (i32 %0 , i32 %1 )
490+ ; CHECK: llvm.intr.sshl.sat(%{{.*}}, %{{.*}}) : (vector<8xi32>, vector<8xi32>) -> vector<8xi32>
491+ %6 = call <8 x i32 > @llvm.sshl.sat.v8i32 (<8 x i32 > %2 , <8 x i32 > %3 )
492+ ret void
493+ }
494+
495+ ; CHECK-LABEL: llvm.func @ushl_sat_test
496+ define void @ushl_sat_test (i32 %0 , i32 %1 , <8 x i32 > %2 , <8 x i32 > %3 ) {
497+ ; CHECK: llvm.intr.ushl.sat(%{{.*}}, %{{.*}}) : (i32, i32) -> i32
498+ %5 = call i32 @llvm.ushl.sat.i32 (i32 %0 , i32 %1 )
499+ ; CHECK: llvm.intr.ushl.sat(%{{.*}}, %{{.*}}) : (vector<8xi32>, vector<8xi32>) -> vector<8xi32>
500+ %6 = call <8 x i32 > @llvm.ushl.sat.v8i32 (<8 x i32 > %2 , <8 x i32 > %3 )
501+ ret void
502+ }
503+
450504; CHECK-LABEL: llvm.func @va_intrinsics_test
451505define void @va_intrinsics_test (ptr %0 , ptr %1 ) {
452506; CHECK: llvm.intr.vastart %{{.*}}
@@ -771,6 +825,18 @@ declare { i32, i1 } @llvm.smul.with.overflow.i32(i32, i32)
771825declare { <8 x i32 >, <8 x i1 > } @llvm.smul.with.overflow.v8i32 (<8 x i32 >, <8 x i32 >)
772826declare { i32 , i1 } @llvm.umul.with.overflow.i32 (i32 , i32 )
773827declare { <8 x i32 >, <8 x i1 > } @llvm.umul.with.overflow.v8i32 (<8 x i32 >, <8 x i32 >)
828+ declare i32 @llvm.sadd.sat.i32 (i32 , i32 )
829+ declare <8 x i32 > @llvm.sadd.sat.v8i32 (<8 x i32 >, <8 x i32 >)
830+ declare i32 @llvm.uadd.sat.i32 (i32 , i32 )
831+ declare <8 x i32 > @llvm.uadd.sat.v8i32 (<8 x i32 >, <8 x i32 >)
832+ declare i32 @llvm.ssub.sat.i32 (i32 , i32 )
833+ declare <8 x i32 > @llvm.ssub.sat.v8i32 (<8 x i32 >, <8 x i32 >)
834+ declare i32 @llvm.usub.sat.i32 (i32 , i32 )
835+ declare <8 x i32 > @llvm.usub.sat.v8i32 (<8 x i32 >, <8 x i32 >)
836+ declare i32 @llvm.sshl.sat.i32 (i32 , i32 )
837+ declare <8 x i32 > @llvm.sshl.sat.v8i32 (<8 x i32 >, <8 x i32 >)
838+ declare i32 @llvm.ushl.sat.i32 (i32 , i32 )
839+ declare <8 x i32 > @llvm.ushl.sat.v8i32 (<8 x i32 >, <8 x i32 >)
774840declare token @llvm.coro.id (i32 , ptr readnone , ptr nocapture readonly , ptr )
775841declare ptr @llvm.coro.begin (token, ptr writeonly )
776842declare i64 @llvm.coro.size.i64 ()
0 commit comments