[InstCombine] Add PR34063 test coverage
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Sat, 5 Feb 2022 15:21:51 +0000 (15:21 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Sat, 5 Feb 2022 15:22:13 +0000 (15:22 +0000)
llvm/test/Transforms/InstCombine/div.ll

index 71e83e64d7ccebf92f82ec52b3b5caf5df998231..fea6c188500fb75b8811b71701a8f7ba4a17f3de 100644 (file)
@@ -1301,3 +1301,46 @@ define i32 @udiv_select_of_constants_divisor(i1 %b, i32 %x) {
   %r = udiv i32 %x, %s
   ret i32 %r
 }
+
+; PR34063
+; 1 / X !=/== -1
+
+define i1 @sdiv_one_icmpeq_one(i32 %x) {
+; CHECK-LABEL: @sdiv_one_icmpeq_one(
+; CHECK-NEXT:    [[TMP1:%.*]] = icmp eq i32 [[X:%.*]], 1
+; CHECK-NEXT:    ret i1 [[TMP1]]
+;
+  %A = sdiv i32 1, %x
+  %B = icmp eq i32 %A, 1
+  ret i1 %B
+}
+
+define i1 @sdiv_one_icmpeq_negone(i32 %x) {
+; CHECK-LABEL: @sdiv_one_icmpeq_negone(
+; CHECK-NEXT:    [[TMP1:%.*]] = icmp eq i32 [[X:%.*]], -1
+; CHECK-NEXT:    ret i1 [[TMP1]]
+;
+  %A = sdiv i32 1, %x
+  %B = icmp eq i32 %A, -1
+  ret i1 %B
+}
+
+define i1 @udiv_one_icmpeq_one(i32 %x) {
+; CHECK-LABEL: @udiv_one_icmpeq_one(
+; CHECK-NEXT:    [[TMP1:%.*]] = icmp eq i32 [[X:%.*]], 1
+; CHECK-NEXT:    ret i1 [[TMP1]]
+;
+  %A = udiv i32 1, %x
+  %B = icmp eq i32 %A, 1
+  ret i1 %B
+}
+
+define i1 @udiv_one_icmpne_one(i32 %x) {
+; CHECK-LABEL: @udiv_one_icmpne_one(
+; CHECK-NEXT:    [[TMP1:%.*]] = icmp ne i32 [[X:%.*]], 1
+; CHECK-NEXT:    ret i1 [[TMP1]]
+;
+  %A = udiv i32 1, %x
+  %B = icmp ne i32 %A, 1
+  ret i1 %B
+}