summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/InstCombine/unrecognized_three-way-comparison.ll16
-rw-r--r--llvm/test/Transforms/InstSimplify/select-implied.ll (renamed from llvm/test/Transforms/InstCombine/select-implied.ll)10
2 files changed, 8 insertions, 18 deletions
diff --git a/llvm/test/Transforms/InstCombine/unrecognized_three-way-comparison.ll b/llvm/test/Transforms/InstCombine/unrecognized_three-way-comparison.ll
index 551efa7078a..dcd046e6760 100644
--- a/llvm/test/Transforms/InstCombine/unrecognized_three-way-comparison.ll
+++ b/llvm/test/Transforms/InstCombine/unrecognized_three-way-comparison.ll
@@ -1,6 +1,4 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; Various patterns of three-ways comparison that are not currently recognized.
-
; RUN: opt < %s -instcombine -S | FileCheck %s
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
@@ -8,17 +6,12 @@ target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f3
declare void @foo(i32 %x)
define i32 @compare_against_arbitrary_value(i32 %x, i32 %c) {
-; TODO: We can prove that if %x s> %c then %x != c, so there should be no actual
-; calculations in callfoo block. @foo can be invoked with 1. We only do it
-; for constants that are not 0 currently while it could be generalized.
; CHECK-LABEL: @compare_against_arbitrary_value(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = icmp sgt i32 [[X:%.*]], [[C:%.*]]
; CHECK-NEXT: br i1 [[TMP0]], label [[CALLFOO:%.*]], label [[EXIT:%.*]]
; CHECK: callfoo:
-; CHECK-NEXT: [[CMP1:%.*]] = icmp ne i32 [[X]], [[C]]
-; CHECK-NEXT: [[SELECT2:%.*]] = zext i1 [[CMP1]] to i32
-; CHECK-NEXT: call void @foo(i32 [[SELECT2]])
+; CHECK-NEXT: call void @foo(i32 1)
; CHECK-NEXT: br label [[EXIT]]
; CHECK: exit:
; CHECK-NEXT: ret i32 42
@@ -353,17 +346,12 @@ exit:
}
define i32 @compare_against_arbitrary_value_type_mismatch(i64 %x, i64 %c) {
-; TODO: We can prove that if %x s> %c then %x != c, so there should be no actual
-; calculations in callfoo block. @foo can be invoked with 1. We only do it
-; for constants that are not 0 currently while it could be generalized.
; CHECK-LABEL: @compare_against_arbitrary_value_type_mismatch(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = icmp sgt i64 [[X:%.*]], [[C:%.*]]
; CHECK-NEXT: br i1 [[TMP0]], label [[CALLFOO:%.*]], label [[EXIT:%.*]]
; CHECK: callfoo:
-; CHECK-NEXT: [[CMP1:%.*]] = icmp ne i64 [[X]], [[C]]
-; CHECK-NEXT: [[SELECT2:%.*]] = zext i1 [[CMP1]] to i32
-; CHECK-NEXT: call void @foo(i32 [[SELECT2]])
+; CHECK-NEXT: call void @foo(i32 1)
; CHECK-NEXT: br label [[EXIT]]
; CHECK: exit:
; CHECK-NEXT: ret i32 42
diff --git a/llvm/test/Transforms/InstCombine/select-implied.ll b/llvm/test/Transforms/InstSimplify/select-implied.ll
index e925031b653..a456e291b51 100644
--- a/llvm/test/Transforms/InstCombine/select-implied.ll
+++ b/llvm/test/Transforms/InstSimplify/select-implied.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt < %s -instcombine -S | FileCheck %s
+; RUN: opt < %s -instsimplify -S | FileCheck %s
; A == B implies A >u B is false.
@@ -98,8 +98,8 @@ end:
}
; We know the condition of the select is true based on a dominating condition.
-; Therefore, we can replace %cond with %len. However, now the inner icmp is
-; always false and can be elided.
+; Therefore, we can replace %cond with %len.
+; TODO: len == 8 is known false in bb. This is handled by other passes, but should it be handled here?
define void @test4(i32 %len) {
; CHECK-LABEL: @test4(
@@ -108,8 +108,10 @@ define void @test4(i32 %len) {
; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[LEN]], 4
; CHECK-NEXT: br i1 [[CMP]], label [[BB:%.*]], label [[B1:%.*]]
; CHECK: bb:
-; CHECK-NEXT: br i1 false, label [[B0:%.*]], label [[B1]]
+; CHECK-NEXT: [[CMP11:%.*]] = icmp eq i32 [[LEN]], 8
+; CHECK-NEXT: br i1 [[CMP11]], label [[B0:%.*]], label [[B1]]
; CHECK: b0:
+; CHECK-NEXT: call void @foo(i32 [[LEN]])
; CHECK-NEXT: br label [[B1]]
; CHECK: b1:
; CHECK-NEXT: [[TMP1:%.*]] = phi i32 [ [[LEN]], [[BB]] ], [ undef, [[B0]] ], [ [[TMP0]], [[ENTRY:%.*]] ]
OpenPOWER on IntegriCloud