[llvm] 256c672 - [ConstraintElim] Add tests with GEP constant expressions.
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 22 06:13:01 PDT 2023
Author: Florian Hahn
Date: 2023-03-22T13:12:49Z
New Revision: 256c6729d371722ea558411957c4e2ef362c54a2
URL: https://github.com/llvm/llvm-project/commit/256c6729d371722ea558411957c4e2ef362c54a2
DIFF: https://github.com/llvm/llvm-project/commit/256c6729d371722ea558411957c4e2ef362c54a2.diff
LOG: [ConstraintElim] Add tests with GEP constant expressions.
Added:
llvm/test/Transforms/ConstraintElimination/gep-constexpr.ll
Modified:
Removed:
################################################################################
diff --git a/llvm/test/Transforms/ConstraintElimination/gep-constexpr.ll b/llvm/test/Transforms/ConstraintElimination/gep-constexpr.ll
new file mode 100644
index 0000000000000..38dbfc4aa4dc1
--- /dev/null
+++ b/llvm/test/Transforms/ConstraintElimination/gep-constexpr.ll
@@ -0,0 +1,44 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -passes=constraint-elimination -S %s | FileCheck %s
+
+declare void @llvm.assume(i1 noundef) #0
+
+ at arr1 = common global [3 x i16] zeroinitializer, align 2
+
+define i1 @gep_constexpr_index_lt_upper(i32 noundef %i) {
+; CHECK-LABEL: @gep_constexpr_index_lt_upper(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[I:%.*]], 3
+; CHECK-NEXT: call void @llvm.assume(i1 [[CMP]])
+; CHECK-NEXT: [[IDXPROM:%.*]] = zext i32 [[I]] to i64
+; CHECK-NEXT: [[UPPER:%.*]] = getelementptr inbounds i16, ptr @arr1, i64 [[IDXPROM]]
+; CHECK-NEXT: [[C_1:%.*]] = icmp ult ptr [[UPPER]], getelementptr inbounds ([3 x i16], ptr @arr1, i64 1, i64 0)
+; CHECK-NEXT: ret i1 [[C_1]]
+;
+entry:
+ %cmp = icmp ult i32 %i, 3
+ call void @llvm.assume(i1 %cmp)
+ %idxprom = zext i32 %i to i64
+ %upper = getelementptr inbounds i16, ptr @arr1, i64 %idxprom
+ %c.1 = icmp ult ptr %upper, getelementptr inbounds ([3 x i16], ptr @arr1, i64 1, i64 0)
+ ret i1 %c.1
+}
+
+define i1 @gep_constexpr_index_may_be_gt_upper(i32 noundef %i) {
+; CHECK-LABEL: @gep_constexpr_index_may_be_gt_upper(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[I:%.*]], 3
+; CHECK-NEXT: call void @llvm.assume(i1 [[CMP]])
+; CHECK-NEXT: [[IDXPROM:%.*]] = zext i32 [[I]] to i64
+; CHECK-NEXT: [[UPPER:%.*]] = getelementptr inbounds i16, ptr @arr1, i64 [[IDXPROM]]
+; CHECK-NEXT: [[C_1:%.*]] = icmp ult ptr [[UPPER]], getelementptr inbounds ([3 x i16], ptr @arr1, i64 0, i64 2)
+; CHECK-NEXT: ret i1 [[C_1]]
+;
+entry:
+ %cmp = icmp ult i32 %i, 3
+ call void @llvm.assume(i1 %cmp)
+ %idxprom = zext i32 %i to i64
+ %upper = getelementptr inbounds i16, ptr @arr1, i64 %idxprom
+ %c.1 = icmp ult ptr %upper, getelementptr inbounds ([3 x i16], ptr @arr1, i64 0, i64 2)
+ ret i1 %c.1
+}
More information about the llvm-commits
mailing list