1 ; RUN: opt %loadPolly -polly-detect-unprofitable -polly-independent < %s
2 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
3 target triple = "x86_64-unknown-linux-gnu"
5 define i32 @main() nounwind uwtable readnone {
6 %arr = alloca [100 x i32], align 16
9 ; <label>:1 ; preds = %1, %0
10 %indvars.iv3 = phi i64 [ 0, %0 ], [ %indvars.iv.next4, %1 ]
11 %2 = getelementptr inbounds [100 x i32], [100 x i32]* %arr, i64 0, i64 %indvars.iv3
12 %3 = trunc i64 %indvars.iv3 to i32
13 store i32 %3, i32* %2, align 4, !tbaa !0
14 %indvars.iv.next4 = add i64 %indvars.iv3, 1
15 %lftr.wideiv5 = trunc i64 %indvars.iv.next4 to i32
16 %exitcond6 = icmp eq i32 %lftr.wideiv5, 100
17 br i1 %exitcond6, label %.preheader, label %1
19 .preheader: ; preds = %.preheader, %1
20 %indvars.iv = phi i64 [ %indvars.iv.next, %.preheader ], [ 0, %1 ]
21 %4 = getelementptr inbounds [100 x i32], [100 x i32]* %arr, i64 0, i64 %indvars.iv
22 %5 = load i32* %4, align 4, !tbaa !0
25 %8 = add nsw i32 %7, %6
30 %13 = xor i32 %12, %11
31 %14 = mul nsw i32 %13, 20571
32 %15 = ashr i32 %14, 16
33 %16 = xor i32 %15, %14
36 %19 = add nsw i32 %18, %17
37 %20 = ashr i32 %19, 12
38 %21 = xor i32 %20, %19
41 %24 = xor i32 %23, %22
42 %25 = mul nsw i32 %24, 20576
43 %26 = ashr i32 %25, 16
44 %27 = xor i32 %26, %25
47 %30 = add nsw i32 %29, %28
48 %31 = ashr i32 %30, 12
49 %32 = xor i32 %31, %30
52 %35 = xor i32 %34, %33
53 %36 = mul nsw i32 %35, 2057
54 %37 = ashr i32 %36, 16
55 %38 = xor i32 %37, %36
58 %41 = add nsw i32 %40, %39
59 %42 = ashr i32 %41, 12
60 %43 = xor i32 %42, %41
63 %46 = xor i32 %45, %44
64 %47 = mul nsw i32 %46, 20572
65 %48 = ashr i32 %47, 16
66 %49 = xor i32 %48, %47
69 %52 = add nsw i32 %51, %50
70 %53 = ashr i32 %52, 12
71 %54 = xor i32 %53, %52
74 %57 = xor i32 %56, %55
75 %58 = mul nsw i32 %57, 2051
76 %59 = ashr i32 %58, 16
77 %60 = xor i32 %59, %58
80 %63 = add nsw i32 %62, %61
81 %64 = ashr i32 %63, 12
82 %65 = xor i32 %64, %63
85 %68 = xor i32 %67, %66
86 %69 = mul nsw i32 %68, 2057
87 %70 = ashr i32 %69, 16
88 %71 = xor i32 %70, %69
91 %74 = add nsw i32 %73, %72
92 %75 = ashr i32 %74, 12
93 %76 = xor i32 %75, %74
96 %79 = xor i32 %78, %77
97 %80 = mul nsw i32 %79, 205
98 %81 = ashr i32 %80, 17
99 %82 = xor i32 %81, %80
100 %83 = xor i32 %82, -1
101 %84 = shl i32 %82, 15
102 %85 = add nsw i32 %84, %83
103 %86 = ashr i32 %85, 12
104 %87 = xor i32 %86, %85
106 %89 = ashr i32 %88, 4
107 %90 = xor i32 %89, %88
108 %91 = mul nsw i32 %90, 2057
109 %92 = ashr i32 %91, 16
110 %93 = xor i32 %92, %91
111 %94 = xor i32 %93, -1
112 %95 = shl i32 %93, 15
113 %96 = add nsw i32 %95, %94
114 %97 = ashr i32 %96, 12
115 %98 = xor i32 %97, %96
117 %100 = ashr i32 %99, 3
118 %101 = xor i32 %100, %99
119 %102 = mul nsw i32 %101, 20571
120 %103 = ashr i32 %102, 16
121 %104 = xor i32 %103, %102
122 %105 = xor i32 %104, -1
123 %106 = shl i32 %104, 15
124 %107 = add nsw i32 %106, %105
125 %108 = ashr i32 %107, 12
126 %109 = xor i32 %108, %107
127 %110 = mul i32 %109, 5
128 %111 = ashr i32 %110, 4
129 %112 = xor i32 %111, %110
130 %113 = mul nsw i32 %112, 2057
131 %114 = ashr i32 %113, 16
132 %115 = xor i32 %114, %113
133 %116 = xor i32 %115, -1
134 %117 = shl i32 %115, 15
135 %118 = add nsw i32 %117, %116
136 %119 = ashr i32 %118, 12
137 %120 = xor i32 %119, %118
138 %121 = mul i32 %120, 5
139 %122 = ashr i32 %121, 4
140 %123 = xor i32 %122, %121
141 %124 = mul nsw i32 %123, 20572
142 %125 = ashr i32 %124, 16
143 %126 = xor i32 %125, %124
144 %127 = xor i32 %126, -1
145 %128 = shl i32 %126, 15
146 %129 = add nsw i32 %128, %127
147 %130 = ashr i32 %129, 12
148 %131 = xor i32 %130, %129
149 %132 = mul i32 %131, 5
150 %133 = ashr i32 %132, 4
151 %134 = xor i32 %133, %132
152 %135 = mul nsw i32 %134, 2057
153 %136 = ashr i32 %135, 16
154 %137 = xor i32 %136, %135
155 %138 = xor i32 %137, -1
156 %139 = shl i32 %137, 15
157 %140 = add nsw i32 %139, %138
158 %141 = ashr i32 %140, 12
159 %142 = xor i32 %141, %140
160 %143 = mul i32 %142, 5
161 %144 = ashr i32 %143, 4
162 %145 = xor i32 %144, %143
163 %146 = mul nsw i32 %145, 2057
164 %147 = ashr i32 %146, 16
165 %148 = xor i32 %147, %146
166 %149 = xor i32 %148, -1
167 %150 = shl i32 %148, 15
168 %151 = add nsw i32 %150, %149
169 %152 = ashr i32 %151, 12
170 %153 = xor i32 %152, %151
171 %154 = mul i32 %153, 5
172 %155 = ashr i32 %154, 4
173 %156 = xor i32 %155, %154
174 %157 = mul nsw i32 %156, 2057
175 %158 = ashr i32 %157, 16
176 %159 = xor i32 %158, %157
177 %160 = xor i32 %159, -1
178 %161 = shl i32 %159, 15
179 %162 = add nsw i32 %161, %160
180 %163 = ashr i32 %162, 12
181 %164 = xor i32 %163, %162
182 %165 = mul i32 %164, 5
183 %166 = ashr i32 %165, 4
184 %167 = xor i32 %166, %165
185 %168 = mul nsw i32 %167, 2057
186 %169 = ashr i32 %168, 16
187 %170 = xor i32 %169, %168
188 store i32 %170, i32* %4, align 4, !tbaa !0
189 %indvars.iv.next = add i64 %indvars.iv, 1
190 %lftr.wideiv = trunc i64 %indvars.iv.next to i32
191 %exitcond = icmp eq i32 %lftr.wideiv, 100
192 br i1 %exitcond, label %171, label %.preheader
194 ; <label>:171 ; preds = %.preheader
199 !1 = !{!"omnipotent char", !2}
200 !2 = !{!"Simple C/C++ TBAA", null}