[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