[InstCombine] add tests for icmp with constant offset and no-wrap flags; NFC
authorSanjay Patel <spatel@rotateright.com>
Wed, 14 Jul 2021 15:35:23 +0000 (11:35 -0400)
committerSanjay Patel <spatel@rotateright.com>
Wed, 14 Jul 2021 16:12:05 +0000 (12:12 -0400)
llvm/test/Transforms/InstCombine/icmp-add.ll

index aa69325..3a98806 100644 (file)
@@ -794,6 +794,16 @@ define i1 @ugt_wrong_offset(i8 %a) {
   ret i1 %ov
 }
 
+define i1 @ugt_offset_nuw(i8 %a) {
+; CHECK-LABEL: @ugt_offset_nuw(
+; CHECK-NEXT:    [[OV:%.*]] = icmp slt i8 [[A:%.*]], -124
+; CHECK-NEXT:    ret i1 [[OV]]
+;
+  %t = add nuw i8 %a, 124
+  %ov = icmp ugt i8 %t, 251
+  ret i1 %ov
+}
+
 define i1 @ult_offset(i8 %a) {
 ; CHECK-LABEL: @ult_offset(
 ; CHECK-NEXT:    [[OV:%.*]] = icmp sgt i8 [[A:%.*]], 5
@@ -840,6 +850,16 @@ define i1 @ult_wrong_offset(i8 %a) {
   ret i1 %ov
 }
 
+define i1 @ult_offset_nuw(i8 %a) {
+; CHECK-LABEL: @ult_offset_nuw(
+; CHECK-NEXT:    [[OV:%.*]] = icmp sgt i8 [[A:%.*]], -43
+; CHECK-NEXT:    ret i1 [[OV]]
+;
+  %t = add nuw i8 %a, 42
+  %ov = icmp ult i8 %t, 170
+  ret i1 %ov
+}
+
 define i1 @sgt_offset(i8 %a) {
 ; CHECK-LABEL: @sgt_offset(
 ; CHECK-NEXT:    [[OV:%.*]] = icmp ult i8 [[A:%.*]], -122
@@ -886,6 +906,16 @@ define i1 @sgt_wrong_offset(i8 %a) {
   ret i1 %ov
 }
 
+define i1 @sgt_offset_nsw(i8 %a, i8 %c) {
+; CHECK-LABEL: @sgt_offset_nsw(
+; CHECK-NEXT:    [[OV:%.*]] = icmp ult i8 [[A:%.*]], 86
+; CHECK-NEXT:    ret i1 [[OV]]
+;
+  %t = add nsw i8 %a, 42
+  %ov = icmp sgt i8 %t, 41
+  ret i1 %ov
+}
+
 define i1 @slt_offset(i8 %a) {
 ; CHECK-LABEL: @slt_offset(
 ; CHECK-NEXT:    [[OV:%.*]] = icmp ugt i8 [[A:%.*]], -123
@@ -931,3 +961,13 @@ define i1 @slt_wrong_offset(i8 %a) {
   %ov = icmp slt i8 %t, -7
   ret i1 %ov
 }
+
+define i1 @slt_offset_nsw(i8 %a, i8 %c) {
+; CHECK-LABEL: @slt_offset_nsw(
+; CHECK-NEXT:    [[OV:%.*]] = icmp slt i8 [[A:%.*]], 0
+; CHECK-NEXT:    ret i1 [[OV]]
+;
+  %t = add nsw i8 %a, 42
+  %ov = icmp slt i8 %t, 42
+  ret i1 %ov
+}