Mercurial > hg > CbC > CbC_llvm
diff polly/test/ScopInfo/ranged_parameter_wrap_2.ll @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children | c4bab56944e8 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/polly/test/ScopInfo/ranged_parameter_wrap_2.ll Thu Feb 13 15:10:13 2020 +0900 @@ -0,0 +1,207 @@ +; RUN: opt %loadPolly -polly-scops -analyze < %s | FileCheck %s +; +; Check that the context is built fast and does not explode due to us +; combining a large number of non-convex ranges. Instead, after a certain +; time, we store range information with reduced precision. +; +; CHECK: Context: +; CHECK: [tmp_0, tmp_1, tmp_2, tmp_3, tmp_4, tmp_5, tmp_6, tmp_7, tmp_8, +; CHECK: tmp_9, tmp_10, tmp_11, tmp_12, tmp_13, tmp_14, tmp_15] -> { : +; CHECK: -2147483648 <= tmp_0 <= 2147483647 and +; CHECK: -2147483648 <= tmp_1 <= 2147483647 and +; CHECK: -2147483648 <= tmp_2 <= 2147483647 and +; CHECK: -2147483648 <= tmp_3 <= 2147483647 and +; CHECK: -2147483648 <= tmp_4 <= 2147483647 and +; CHECK: -2147483648 <= tmp_5 <= 2147483647 and +; CHECK: -2147483648 <= tmp_6 <= 2147483647 and +; CHECK: -2147483648 <= tmp_7 <= 2147483647 and +; CHECK: -2147483648 <= tmp_8 <= 2147483647 and +; CHECK: -2147483648 <= tmp_9 <= 2147483647 and +; CHECK: -2147483648 <= tmp_10 <= 2147483647 and +; CHECK: -2147483648 <= tmp_11 <= 2147483647 and +; CHECK: -2147483648 <= tmp_12 <= 2147483647 and +; CHECK: -2147483648 <= tmp_13 <= 2147483647 and +; CHECK: -2147483648 <= tmp_14 <= 2147483647 and +; CHECK: -2147483648 <= tmp_15 <= 2147483647 and +; CHECK: ((tmp_0 >= 256 and tmp_1 >= 256 and tmp_2 >= 256) or +; CHECK: (tmp_0 >= 256 and tmp_1 >= 256 and tmp_2 < 0) or +; CHECK: (tmp_0 >= 256 and tmp_1 < 0 and tmp_2 >= 256) or +; CHECK: (tmp_0 >= 256 and tmp_1 < 0 and tmp_2 < 0) or +; CHECK: (tmp_0 < 0 and tmp_1 >= 256 and tmp_2 >= 256) or +; CHECK: (tmp_0 < 0 and tmp_1 >= 256 and tmp_2 < 0) or +; CHECK: (tmp_0 < 0 and tmp_1 < 0 and tmp_2 >= 256) or +; CHECK: (tmp_0 < 0 and tmp_1 < 0 and tmp_2 < 0)) } +; +; void jd(int *A, int *p /* in [256, 0) */) { +; for (int i = 0; i < 1024; i++) +; A[i + *p] = i; +; } +; +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" + +define void @jd(i32* %A, + i32* %p_0, + i32* %p_1, + i32* %p_2, + i32* %p_3, + i32* %p_4, + i32* %p_5, + i32* %p_6, + i32* %p_7, + i32* %p_8, + i32* %p_9, + i32* %p_10, + i32* %p_11, + i32* %p_12, + i32* %p_13, + i32* %p_14, + i32* %p_15 + ) { +entry: + %tmp_0 = load i32, i32* %p_0, !range !0 + %tmp_1 = load i32, i32* %p_1, !range !0 + %tmp_2 = load i32, i32* %p_2, !range !0 + %tmp_3 = load i32, i32* %p_3, !range !0 + %tmp_4 = load i32, i32* %p_4, !range !0 + %tmp_5 = load i32, i32* %p_5, !range !0 + %tmp_6 = load i32, i32* %p_6, !range !0 + %tmp_7 = load i32, i32* %p_7, !range !0 + %tmp_8 = load i32, i32* %p_8, !range !0 + %tmp_9 = load i32, i32* %p_9, !range !0 + %tmp_10 = load i32, i32* %p_10, !range !0 + %tmp_11 = load i32, i32* %p_11, !range !0 + %tmp_12 = load i32, i32* %p_12, !range !0 + %tmp_13 = load i32, i32* %p_13, !range !0 + %tmp_14 = load i32, i32* %p_14, !range !0 + %tmp_15 = load i32, i32* %p_15, !range !0 + br label %for.cond + +for.cond: ; preds = %for.inc, %entry + %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.inc ] + %exitcond = icmp ne i32 %i.0, 1024 + br i1 %exitcond, label %for.body_0, label %for.end + +for.body_0: + %add_0 = add i32 %i.0, %tmp_0 + %idxprom_0 = sext i32 %add_0 to i64 + %arrayidx_0 = getelementptr inbounds i32, i32* %A, i64 %idxprom_0 + store i32 %i.0, i32* %arrayidx_0, align 4 + br label %for.body_1 + +for.body_1: + %add_1 = add i32 %i.0, %tmp_1 + %idxprom_1 = sext i32 %add_1 to i64 + %arrayidx_1 = getelementptr inbounds i32, i32* %A, i64 %idxprom_1 + store i32 %i.0, i32* %arrayidx_1, align 4 + br label %for.body_2 + +for.body_2: + %add_2 = add i32 %i.0, %tmp_2 + %idxprom_2 = sext i32 %add_2 to i64 + %arrayidx_2 = getelementptr inbounds i32, i32* %A, i64 %idxprom_2 + store i32 %i.0, i32* %arrayidx_2, align 4 + br label %for.body_3 + +for.body_3: + %add_3 = add i32 %i.0, %tmp_3 + %idxprom_3 = sext i32 %add_3 to i64 + %arrayidx_3 = getelementptr inbounds i32, i32* %A, i64 %idxprom_3 + store i32 %i.0, i32* %arrayidx_3, align 4 + br label %for.body_4 + +for.body_4: + %add_4 = add i32 %i.0, %tmp_4 + %idxprom_4 = sext i32 %add_4 to i64 + %arrayidx_4 = getelementptr inbounds i32, i32* %A, i64 %idxprom_4 + store i32 %i.0, i32* %arrayidx_4, align 4 + br label %for.body_5 + +for.body_5: + %add_5 = add i32 %i.0, %tmp_5 + %idxprom_5 = sext i32 %add_5 to i64 + %arrayidx_5 = getelementptr inbounds i32, i32* %A, i64 %idxprom_5 + store i32 %i.0, i32* %arrayidx_5, align 4 + br label %for.body_6 + +for.body_6: + %add_6 = add i32 %i.0, %tmp_6 + %idxprom_6 = sext i32 %add_6 to i64 + %arrayidx_6 = getelementptr inbounds i32, i32* %A, i64 %idxprom_6 + store i32 %i.0, i32* %arrayidx_6, align 4 + br label %for.body_7 + +for.body_7: + %add_7 = add i32 %i.0, %tmp_7 + %idxprom_7 = sext i32 %add_7 to i64 + %arrayidx_7 = getelementptr inbounds i32, i32* %A, i64 %idxprom_7 + store i32 %i.0, i32* %arrayidx_7, align 4 + br label %for.body_8 + +for.body_8: + %add_8 = add i32 %i.0, %tmp_8 + %idxprom_8 = sext i32 %add_8 to i64 + %arrayidx_8 = getelementptr inbounds i32, i32* %A, i64 %idxprom_8 + store i32 %i.0, i32* %arrayidx_8, align 4 + br label %for.body_9 + +for.body_9: + %add_9 = add i32 %i.0, %tmp_9 + %idxprom_9 = sext i32 %add_9 to i64 + %arrayidx_9 = getelementptr inbounds i32, i32* %A, i64 %idxprom_9 + store i32 %i.0, i32* %arrayidx_9, align 4 + br label %for.body_10 + +for.body_10: + %add_10 = add i32 %i.0, %tmp_10 + %idxprom_10 = sext i32 %add_10 to i64 + %arrayidx_10 = getelementptr inbounds i32, i32* %A, i64 %idxprom_10 + store i32 %i.0, i32* %arrayidx_10, align 4 + br label %for.body_11 + +for.body_11: + %add_11 = add i32 %i.0, %tmp_11 + %idxprom_11 = sext i32 %add_11 to i64 + %arrayidx_11 = getelementptr inbounds i32, i32* %A, i64 %idxprom_11 + store i32 %i.0, i32* %arrayidx_11, align 4 + br label %for.body_12 + +for.body_12: + %add_12 = add i32 %i.0, %tmp_12 + %idxprom_12 = sext i32 %add_12 to i64 + %arrayidx_12 = getelementptr inbounds i32, i32* %A, i64 %idxprom_12 + store i32 %i.0, i32* %arrayidx_12, align 4 + br label %for.body_13 + +for.body_13: + %add_13 = add i32 %i.0, %tmp_13 + %idxprom_13 = sext i32 %add_13 to i64 + %arrayidx_13 = getelementptr inbounds i32, i32* %A, i64 %idxprom_13 + store i32 %i.0, i32* %arrayidx_13, align 4 + br label %for.body_14 + +for.body_14: + %add_14 = add i32 %i.0, %tmp_14 + %idxprom_14 = sext i32 %add_14 to i64 + %arrayidx_14 = getelementptr inbounds i32, i32* %A, i64 %idxprom_14 + store i32 %i.0, i32* %arrayidx_14, align 4 + br label %for.body_15 + +for.body_15: + %add_15 = add i32 %i.0, %tmp_15 + %idxprom_15 = sext i32 %add_15 to i64 + %arrayidx_15 = getelementptr inbounds i32, i32* %A, i64 %idxprom_15 + store i32 %i.0, i32* %arrayidx_15, align 4 + br label %for.body_end + +for.body_end: + br label %for.inc + +for.inc: + %inc = add nsw i32 %i.0, 1 + br label %for.cond + +for.end: ; preds = %for.cond + ret void +} + +!0 = !{ i32 256, i32 0 }