[llvm] c59ae47 - InstCombine: Add baseline tests for saturating poison handling
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 23 06:42:37 PST 2022
Author: Matt Arsenault
Date: 2022-12-23T09:42:33-05:00
New Revision: c59ae4705558f7b4fff2819b6260a3b513197150
URL: https://github.com/llvm/llvm-project/commit/c59ae4705558f7b4fff2819b6260a3b513197150
DIFF: https://github.com/llvm/llvm-project/commit/c59ae4705558f7b4fff2819b6260a3b513197150.diff
LOG: InstCombine: Add baseline tests for saturating poison handling
Added:
Modified:
llvm/test/Transforms/InstCombine/freeze-integer-intrinsics.ll
Removed:
################################################################################
diff --git a/llvm/test/Transforms/InstCombine/freeze-integer-intrinsics.ll b/llvm/test/Transforms/InstCombine/freeze-integer-intrinsics.ll
index b96f1a1584376..68d8a33587142 100644
--- a/llvm/test/Transforms/InstCombine/freeze-integer-intrinsics.ll
+++ b/llvm/test/Transforms/InstCombine/freeze-integer-intrinsics.ll
@@ -240,6 +240,72 @@ define i32 @fptosi_sat(float %arg) {
ret i32 %freeze
}
+define i32 @sadd_sat_i32(i32 %arg0, i32 noundef %arg1) {
+; CHECK-LABEL: @sadd_sat_i32(
+; CHECK-NEXT: [[CALL:%.*]] = call i32 @llvm.sadd.sat.i32(i32 [[ARG0:%.*]], i32 [[ARG1:%.*]])
+; CHECK-NEXT: [[FREEZE:%.*]] = freeze i32 [[CALL]]
+; CHECK-NEXT: ret i32 [[FREEZE]]
+;
+ %call = call i32 @llvm.sadd.sat.i32(i32 %arg0, i32 %arg1)
+ %freeze = freeze i32 %call
+ ret i32 %freeze
+}
+
+define i32 @uadd_sat_i32(i32 %arg0, i32 noundef %arg1) {
+; CHECK-LABEL: @uadd_sat_i32(
+; CHECK-NEXT: [[CALL:%.*]] = call i32 @llvm.uadd.sat.i32(i32 [[ARG0:%.*]], i32 [[ARG1:%.*]])
+; CHECK-NEXT: [[FREEZE:%.*]] = freeze i32 [[CALL]]
+; CHECK-NEXT: ret i32 [[FREEZE]]
+;
+ %call = call i32 @llvm.uadd.sat.i32(i32 %arg0, i32 %arg1)
+ %freeze = freeze i32 %call
+ ret i32 %freeze
+}
+
+define i32 @ssub_sat_i32(i32 %arg0, i32 noundef %arg1) {
+; CHECK-LABEL: @ssub_sat_i32(
+; CHECK-NEXT: [[CALL:%.*]] = call i32 @llvm.ssub.sat.i32(i32 [[ARG0:%.*]], i32 [[ARG1:%.*]])
+; CHECK-NEXT: [[FREEZE:%.*]] = freeze i32 [[CALL]]
+; CHECK-NEXT: ret i32 [[FREEZE]]
+;
+ %call = call i32 @llvm.ssub.sat.i32(i32 %arg0, i32 %arg1)
+ %freeze = freeze i32 %call
+ ret i32 %freeze
+}
+
+define i32 @usub_sat_i32(i32 %arg0, i32 noundef %arg1) {
+; CHECK-LABEL: @usub_sat_i32(
+; CHECK-NEXT: [[CALL:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[ARG0:%.*]], i32 [[ARG1:%.*]])
+; CHECK-NEXT: [[FREEZE:%.*]] = freeze i32 [[CALL]]
+; CHECK-NEXT: ret i32 [[FREEZE]]
+;
+ %call = call i32 @llvm.usub.sat.i32(i32 %arg0, i32 %arg1)
+ %freeze = freeze i32 %call
+ ret i32 %freeze
+}
+
+define i32 @sshl_sat_i32(i32 %arg0, i32 noundef %arg1) {
+; CHECK-LABEL: @sshl_sat_i32(
+; CHECK-NEXT: [[CALL:%.*]] = call i32 @llvm.sshl.sat.i32(i32 [[ARG0:%.*]], i32 [[ARG1:%.*]])
+; CHECK-NEXT: [[FREEZE:%.*]] = freeze i32 [[CALL]]
+; CHECK-NEXT: ret i32 [[FREEZE]]
+;
+ %call = call i32 @llvm.sshl.sat.i32(i32 %arg0, i32 %arg1)
+ %freeze = freeze i32 %call
+ ret i32 %freeze
+}
+
+define i32 @ushl_sat_i32(i32 %arg0, i32 noundef %arg1) {
+; CHECK-LABEL: @ushl_sat_i32(
+; CHECK-NEXT: [[CALL:%.*]] = call i32 @llvm.ushl.sat.i32(i32 [[ARG0:%.*]], i32 [[ARG1:%.*]])
+; CHECK-NEXT: [[FREEZE:%.*]] = freeze i32 [[CALL]]
+; CHECK-NEXT: ret i32 [[FREEZE]]
+;
+ %call = call i32 @llvm.ushl.sat.i32(i32 %arg0, i32 %arg1)
+ %freeze = freeze i32 %call
+ ret i32 %freeze
+}
+
declare i32 @llvm.ctlz.i32(i32, i1 immarg)
declare i32 @llvm.cttz.i32(i32, i1 immarg)
declare i32 @llvm.abs.i32(i32, i1 immarg)
@@ -254,3 +320,9 @@ declare i32 @llvm.umin.i32(i32, i32)
declare ptr @llvm.ptrmask.p0.i64(ptr, i64)
declare i32 @llvm.fptoui.sat.i32.f32(float)
declare i32 @llvm.fptosi.sat.i32.f32(float)
+declare i32 @llvm.sadd.sat.i32(i32, i32)
+declare i32 @llvm.uadd.sat.i32(i32, i32)
+declare i32 @llvm.ssub.sat.i32(i32, i32)
+declare i32 @llvm.usub.sat.i32(i32, i32)
+declare i32 @llvm.sshl.sat.i32(i32, i32)
+declare i32 @llvm.ushl.sat.i32(i32, i32)
More information about the llvm-commits
mailing list