[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