forked from OSchip/llvm-project
				
			Update Polly tests to handle explicitly typed gep changes in LLVM
llvm-svn: 230784
This commit is contained in:
		
							parent
							
								
									218b783192
								
							
						
					
					
						commit
						bad3ff207f
					
				| 
						 | 
					@ -20,7 +20,7 @@ entry:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.i:
 | 
					for.i:
 | 
				
			||||||
  %indvar = phi i64 [ 0, %entry ], [ %indvar.next, %merge ]
 | 
					  %indvar = phi i64 [ 0, %entry ], [ %indvar.next, %merge ]
 | 
				
			||||||
  %scevgep = getelementptr i64* %A, i64 %indvar
 | 
					  %scevgep = getelementptr i64, i64* %A, i64 %indvar
 | 
				
			||||||
  %cmp = icmp eq i64 %indvar, 3
 | 
					  %cmp = icmp eq i64 %indvar, 3
 | 
				
			||||||
  br i1 %cmp, label %then, label %else
 | 
					  br i1 %cmp, label %then, label %else
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,7 +30,7 @@ for.inc:                                          ; preds = %for.body, %for.inc
 | 
				
			||||||
  %sum.12 = phi i32 [ %mul, %for.body ], [ %add4, %for.inc ]
 | 
					  %sum.12 = phi i32 [ %mul, %for.body ], [ %add4, %for.inc ]
 | 
				
			||||||
  %indvars.iv1 = phi i64 [ 0, %for.body ], [ %1, %for.inc ]
 | 
					  %indvars.iv1 = phi i64 [ 0, %for.body ], [ %1, %for.inc ]
 | 
				
			||||||
  %0 = add i64 %indvars.iv23, %indvars.iv1
 | 
					  %0 = add i64 %indvars.iv23, %indvars.iv1
 | 
				
			||||||
  %arrayidx = getelementptr i32* %A, i64 %0
 | 
					  %arrayidx = getelementptr i32, i32* %A, i64 %0
 | 
				
			||||||
  %tmp5 = load i32* %arrayidx, align 4
 | 
					  %tmp5 = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add4 = add nsw i32 %tmp5, %sum.12
 | 
					  %add4 = add nsw i32 %tmp5, %sum.12
 | 
				
			||||||
  %1 = add nuw nsw i64 %indvars.iv1, 1
 | 
					  %1 = add nuw nsw i64 %indvars.iv1, 1
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,7 +24,7 @@ for.inc.lr.ph:                                    ; preds = %entry
 | 
				
			||||||
for.inc:                                          ; preds = %for.inc.lr.ph, %for.inc
 | 
					for.inc:                                          ; preds = %for.inc.lr.ph, %for.inc
 | 
				
			||||||
  %sum.03 = phi i32 [ 0, %for.inc.lr.ph ], [ %add, %for.inc ]
 | 
					  %sum.03 = phi i32 [ 0, %for.inc.lr.ph ], [ %add, %for.inc ]
 | 
				
			||||||
  %indvars.iv2 = phi i64 [ 0, %for.inc.lr.ph ], [ %indvars.iv.next, %for.inc ]
 | 
					  %indvars.iv2 = phi i64 [ 0, %for.inc.lr.ph ], [ %indvars.iv.next, %for.inc ]
 | 
				
			||||||
  %arrayidx = getelementptr i32* %A, i64 %indvars.iv2
 | 
					  %arrayidx = getelementptr i32, i32* %A, i64 %indvars.iv2
 | 
				
			||||||
  %tmp1 = load i32* %arrayidx, align 4
 | 
					  %tmp1 = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp1, %sum.03
 | 
					  %add = add nsw i32 %tmp1, %sum.03
 | 
				
			||||||
  %indvars.iv.next = add nuw nsw i64 %indvars.iv2, 1
 | 
					  %indvars.iv.next = add nuw nsw i64 %indvars.iv2, 1
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,7 +18,7 @@ entry:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body.1:
 | 
					for.body.1:
 | 
				
			||||||
  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %for.body.1 ]
 | 
					  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %for.body.1 ]
 | 
				
			||||||
  %arrayidx.1 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
					  %arrayidx.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
				
			||||||
  store i32 2, i32* %arrayidx.1, align 4
 | 
					  store i32 2, i32* %arrayidx.1, align 4
 | 
				
			||||||
  %indvar.next.1 = add i64 %indvar.1, 1
 | 
					  %indvar.next.1 = add i64 %indvar.1, 1
 | 
				
			||||||
  %exitcond.1 = icmp ne i64 %indvar.next.1, 200
 | 
					  %exitcond.1 = icmp ne i64 %indvar.next.1, 200
 | 
				
			||||||
| 
						 | 
					@ -29,7 +29,7 @@ exit.1:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body.2:
 | 
					for.body.2:
 | 
				
			||||||
  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %for.body.2 ]
 | 
					  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %for.body.2 ]
 | 
				
			||||||
  %arrayidx.2 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.2
 | 
					  %arrayidx.2 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.2
 | 
				
			||||||
  store i32 5, i32* %arrayidx.2, align 4
 | 
					  store i32 5, i32* %arrayidx.2, align 4
 | 
				
			||||||
  %indvar.next.2 = add i64 %indvar.2, 1
 | 
					  %indvar.next.2 = add i64 %indvar.2, 1
 | 
				
			||||||
  %exitcond.2 = icmp ne i64 %indvar.next.2, 200
 | 
					  %exitcond.2 = icmp ne i64 %indvar.next.2, 200
 | 
				
			||||||
| 
						 | 
					@ -40,7 +40,7 @@ exit.2:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body.3:
 | 
					for.body.3:
 | 
				
			||||||
  %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %for.body.3 ]
 | 
					  %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %for.body.3 ]
 | 
				
			||||||
  %arrayidx.3 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.3
 | 
					  %arrayidx.3 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.3
 | 
				
			||||||
  store i32 7, i32* %arrayidx.3, align 4
 | 
					  store i32 7, i32* %arrayidx.3, align 4
 | 
				
			||||||
  %indvar.next.3 = add i64 %indvar.3, 1
 | 
					  %indvar.next.3 = add i64 %indvar.3, 1
 | 
				
			||||||
  %exitcond.3 = icmp ne i64 %indvar.next.3, 200
 | 
					  %exitcond.3 = icmp ne i64 %indvar.next.3, 200
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,7 +19,7 @@ entry:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body.1:
 | 
					for.body.1:
 | 
				
			||||||
  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %for.body.1 ]
 | 
					  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %for.body.1 ]
 | 
				
			||||||
  %arrayidx.1 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
					  %arrayidx.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
				
			||||||
  store i32 2, i32* %arrayidx.1, align 4
 | 
					  store i32 2, i32* %arrayidx.1, align 4
 | 
				
			||||||
  %indvar.next.1 = add i64 %indvar.1, 1
 | 
					  %indvar.next.1 = add i64 %indvar.1, 1
 | 
				
			||||||
  %exitcond.1 = icmp ne i64 %indvar.next.1, 200
 | 
					  %exitcond.1 = icmp ne i64 %indvar.next.1, 200
 | 
				
			||||||
| 
						 | 
					@ -30,9 +30,9 @@ exit.1:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body.2:
 | 
					for.body.2:
 | 
				
			||||||
  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %for.body.2 ]
 | 
					  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %for.body.2 ]
 | 
				
			||||||
  %arrayidx.2.a = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.2
 | 
					  %arrayidx.2.a = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.2
 | 
				
			||||||
  %val = load i32* %arrayidx.2.a, align 4
 | 
					  %val = load i32* %arrayidx.2.a, align 4
 | 
				
			||||||
  %arrayidx.2.b = getelementptr [200 x i32]* %B, i64 0, i64 %indvar.2
 | 
					  %arrayidx.2.b = getelementptr [200 x i32], [200 x i32]* %B, i64 0, i64 %indvar.2
 | 
				
			||||||
  store i32 %val, i32* %arrayidx.2.b, align 4
 | 
					  store i32 %val, i32* %arrayidx.2.b, align 4
 | 
				
			||||||
  %indvar.next.2 = add i64 %indvar.2, 1
 | 
					  %indvar.next.2 = add i64 %indvar.2, 1
 | 
				
			||||||
  %exitcond.2 = icmp ne i64 %indvar.next.2, 200
 | 
					  %exitcond.2 = icmp ne i64 %indvar.next.2, 200
 | 
				
			||||||
| 
						 | 
					@ -43,8 +43,8 @@ exit.2:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body.3:
 | 
					for.body.3:
 | 
				
			||||||
  %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %for.body.3 ]
 | 
					  %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %for.body.3 ]
 | 
				
			||||||
  %arrayidx.3.a = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.3
 | 
					  %arrayidx.3.a = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.3
 | 
				
			||||||
  %arrayidx.3.b = getelementptr [200 x i32]* %B, i64 0, i64 %indvar.3
 | 
					  %arrayidx.3.b = getelementptr [200 x i32], [200 x i32]* %B, i64 0, i64 %indvar.3
 | 
				
			||||||
  store i32 5, i32* %arrayidx.3.a, align 4
 | 
					  store i32 5, i32* %arrayidx.3.a, align 4
 | 
				
			||||||
  store i32 5, i32* %arrayidx.3.b, align 4
 | 
					  store i32 5, i32* %arrayidx.3.b, align 4
 | 
				
			||||||
  %indvar.next.3 = add i64 %indvar.3, 1
 | 
					  %indvar.next.3 = add i64 %indvar.3, 1
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,7 +19,7 @@ entry:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S1:
 | 
					S1:
 | 
				
			||||||
  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
 | 
					  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
 | 
				
			||||||
  %arrayidx.1 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
					  %arrayidx.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
				
			||||||
  store i32 2, i32* %arrayidx.1
 | 
					  store i32 2, i32* %arrayidx.1
 | 
				
			||||||
  %indvar.next.1 = add i64 %indvar.1, 1
 | 
					  %indvar.next.1 = add i64 %indvar.1, 1
 | 
				
			||||||
  %exitcond.1 = icmp ne i64 %indvar.next.1, 100
 | 
					  %exitcond.1 = icmp ne i64 %indvar.next.1, 100
 | 
				
			||||||
| 
						 | 
					@ -30,7 +30,7 @@ exit.1:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S2:
 | 
					S2:
 | 
				
			||||||
  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %S2 ]
 | 
					  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %S2 ]
 | 
				
			||||||
  %arrayidx.2 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.2
 | 
					  %arrayidx.2 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.2
 | 
				
			||||||
  store i32 5, i32* %arrayidx.2
 | 
					  store i32 5, i32* %arrayidx.2
 | 
				
			||||||
  %indvar.next.2 = add i64 %indvar.2, 1
 | 
					  %indvar.next.2 = add i64 %indvar.2, 1
 | 
				
			||||||
  %exitcond.2 = icmp ne i64 %indvar.next.2, 10
 | 
					  %exitcond.2 = icmp ne i64 %indvar.next.2, 10
 | 
				
			||||||
| 
						 | 
					@ -41,7 +41,7 @@ exit.2:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S3:
 | 
					S3:
 | 
				
			||||||
  %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %S3 ]
 | 
					  %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %S3 ]
 | 
				
			||||||
  %arrayidx.3 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.3
 | 
					  %arrayidx.3 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.3
 | 
				
			||||||
  store i32 7, i32* %arrayidx.3
 | 
					  store i32 7, i32* %arrayidx.3
 | 
				
			||||||
  %indvar.next.3 = add i64 %indvar.3, 1
 | 
					  %indvar.next.3 = add i64 %indvar.3, 1
 | 
				
			||||||
  %exitcond.3 = icmp ne i64 %indvar.next.3, 200
 | 
					  %exitcond.3 = icmp ne i64 %indvar.next.3, 200
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,7 +21,7 @@ entry:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body.1:
 | 
					for.body.1:
 | 
				
			||||||
  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %for.body.1 ]
 | 
					  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %for.body.1 ]
 | 
				
			||||||
  %arrayidx.1 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
					  %arrayidx.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
				
			||||||
  store i32 2, i32* %arrayidx.1, align 4
 | 
					  store i32 2, i32* %arrayidx.1, align 4
 | 
				
			||||||
  %indvar.next.1 = add i64 %indvar.1, 1
 | 
					  %indvar.next.1 = add i64 %indvar.1, 1
 | 
				
			||||||
  %exitcond.1 = icmp ne i64 %indvar.next.1, 200
 | 
					  %exitcond.1 = icmp ne i64 %indvar.next.1, 200
 | 
				
			||||||
| 
						 | 
					@ -32,7 +32,7 @@ exit.1:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body.2:
 | 
					for.body.2:
 | 
				
			||||||
  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %for.body.2 ]
 | 
					  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %for.body.2 ]
 | 
				
			||||||
  %arrayidx.2 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.2
 | 
					  %arrayidx.2 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.2
 | 
				
			||||||
  store i32 5, i32* %arrayidx.2, align 4
 | 
					  store i32 5, i32* %arrayidx.2, align 4
 | 
				
			||||||
  %indvar.next.2 = add i64 %indvar.2, 1
 | 
					  %indvar.next.2 = add i64 %indvar.2, 1
 | 
				
			||||||
  %exitcond.2 = icmp ne i64 %indvar.next.2, 50
 | 
					  %exitcond.2 = icmp ne i64 %indvar.next.2, 50
 | 
				
			||||||
| 
						 | 
					@ -43,7 +43,7 @@ exit.2:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body.3:
 | 
					for.body.3:
 | 
				
			||||||
  %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %for.body.3 ]
 | 
					  %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %for.body.3 ]
 | 
				
			||||||
  %arrayidx.3 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.3
 | 
					  %arrayidx.3 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.3
 | 
				
			||||||
  %val = load i32* %arrayidx.3, align 4
 | 
					  %val = load i32* %arrayidx.3, align 4
 | 
				
			||||||
  %add = add nsw i32 %val, 5
 | 
					  %add = add nsw i32 %val, 5
 | 
				
			||||||
  store i32 %add, i32* %arrayidx.3, align 4
 | 
					  store i32 %add, i32* %arrayidx.3, align 4
 | 
				
			||||||
| 
						 | 
					@ -58,7 +58,7 @@ for.body.4:
 | 
				
			||||||
  %indvar.4 = phi i64 [ 0, %exit.3 ], [ %indvar.next.4, %for.body.4 ]
 | 
					  %indvar.4 = phi i64 [ 0, %exit.3 ], [ %indvar.next.4, %for.body.4 ]
 | 
				
			||||||
  %indvar.plus = add i64 %indvar.4, 100
 | 
					  %indvar.plus = add i64 %indvar.4, 100
 | 
				
			||||||
  %trunc = trunc i64 %indvar.plus to i32
 | 
					  %trunc = trunc i64 %indvar.plus to i32
 | 
				
			||||||
  %arrayidx.4 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.plus
 | 
					  %arrayidx.4 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.plus
 | 
				
			||||||
  store i32 %trunc, i32* %arrayidx.4, align 4
 | 
					  store i32 %trunc, i32* %arrayidx.4, align 4
 | 
				
			||||||
  %indvar.next.4 = add i64 %indvar.4, 1
 | 
					  %indvar.next.4 = add i64 %indvar.4, 1
 | 
				
			||||||
  %exitcond.4 = icmp ne i64 %indvar.next.4, 10
 | 
					  %exitcond.4 = icmp ne i64 %indvar.next.4, 10
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,7 +29,7 @@ for.cond:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S1:
 | 
					S1:
 | 
				
			||||||
  %rem = srem i32 %i.0, 2
 | 
					  %rem = srem i32 %i.0, 2
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %rem
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %rem
 | 
				
			||||||
  store i32 %i.0, i32* %arrayidx, align 4
 | 
					  store i32 %i.0, i32* %arrayidx, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,7 +46,7 @@ for.cond.2:
 | 
				
			||||||
  br i1 %exitcond.2, label %S2, label %for.end
 | 
					  br i1 %exitcond.2, label %S2, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S2:
 | 
					S2:
 | 
				
			||||||
  %arrayidx.2 = getelementptr inbounds i32* %A, i32 %i.2
 | 
					  %arrayidx.2 = getelementptr inbounds i32, i32* %A, i32 %i.2
 | 
				
			||||||
  store i32 %i.2, i32* %arrayidx.2, align 4
 | 
					  store i32 %i.2, i32* %arrayidx.2, align 4
 | 
				
			||||||
  br label %for.inc.2
 | 
					  br label %for.inc.2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,7 +20,7 @@ for.cond:                                         ; preds = %for.inc, %entry
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.cond
 | 
					for.body:                                         ; preds = %for.cond
 | 
				
			||||||
  %rem = srem i32 %i.0, 2
 | 
					  %rem = srem i32 %i.0, 2
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %rem
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %rem
 | 
				
			||||||
  store i32 %i.0, i32* %arrayidx, align 4
 | 
					  store i32 %i.0, i32* %arrayidx, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,7 +15,7 @@ entry:
 | 
				
			||||||
  %A = alloca [200 x i32], align 16
 | 
					  %A = alloca [200 x i32], align 16
 | 
				
			||||||
  %B = alloca [200 x i32], align 16
 | 
					  %B = alloca [200 x i32], align 16
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  %A.zero = getelementptr [200 x i32]* %A, i64 0, i64 0
 | 
					  %A.zero = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 0
 | 
				
			||||||
  store i32 1, i32* %A.zero, align 4
 | 
					  store i32 1, i32* %A.zero, align 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  br label %for.body.1
 | 
					  br label %for.body.1
 | 
				
			||||||
| 
						 | 
					@ -24,10 +24,10 @@ for.body.1:
 | 
				
			||||||
  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %for.body.1 ]
 | 
					  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %for.body.1 ]
 | 
				
			||||||
  %indvar.next.1 = add i64 %indvar.1, 1
 | 
					  %indvar.next.1 = add i64 %indvar.1, 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  %A.current.1 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
					  %A.current.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
				
			||||||
  %val1.1 = load i32* %A.current.1, align 4
 | 
					  %val1.1 = load i32* %A.current.1, align 4
 | 
				
			||||||
  %val2.1 = mul i32 %val1.1, 2
 | 
					  %val2.1 = mul i32 %val1.1, 2
 | 
				
			||||||
  %A.next.1 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.next.1
 | 
					  %A.next.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.next.1
 | 
				
			||||||
  store i32 %val2.1, i32* %A.next.1, align 4
 | 
					  store i32 %val2.1, i32* %A.next.1, align 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  %exitcond.1 = icmp ne i64 %indvar.next.1, 100
 | 
					  %exitcond.1 = icmp ne i64 %indvar.next.1, 100
 | 
				
			||||||
| 
						 | 
					@ -39,10 +39,10 @@ exit.1:
 | 
				
			||||||
for.body.2:
 | 
					for.body.2:
 | 
				
			||||||
  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %for.body.2 ]
 | 
					  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %for.body.2 ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  %B.current.2 = getelementptr [200 x i32]* %B, i64 0, i64 %indvar.2
 | 
					  %B.current.2 = getelementptr [200 x i32], [200 x i32]* %B, i64 0, i64 %indvar.2
 | 
				
			||||||
  %val1.2 = load i32* %B.current.2, align 4
 | 
					  %val1.2 = load i32* %B.current.2, align 4
 | 
				
			||||||
  %val2.2 = mul i32 %val1.2, 2
 | 
					  %val2.2 = mul i32 %val1.2, 2
 | 
				
			||||||
  %A.current.2 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.2
 | 
					  %A.current.2 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.2
 | 
				
			||||||
  store i32 %val2.2, i32* %A.current.2, align 4
 | 
					  store i32 %val2.2, i32* %A.current.2, align 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  %indvar.next.2 = add i64 %indvar.2, 1
 | 
					  %indvar.next.2 = add i64 %indvar.2, 1
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,7 +19,7 @@ entry:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S1:
 | 
					S1:
 | 
				
			||||||
  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
 | 
					  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
 | 
				
			||||||
  %arrayidx.1 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
					  %arrayidx.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
				
			||||||
  store i32 2, i32* %arrayidx.1
 | 
					  store i32 2, i32* %arrayidx.1
 | 
				
			||||||
  %indvar.next.1 = add i64 %indvar.1, 1
 | 
					  %indvar.next.1 = add i64 %indvar.1, 1
 | 
				
			||||||
  %exitcond.1 = icmp ne i64 %indvar.next.1, 100
 | 
					  %exitcond.1 = icmp ne i64 %indvar.next.1, 100
 | 
				
			||||||
| 
						 | 
					@ -30,7 +30,7 @@ exit.1:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S2:
 | 
					S2:
 | 
				
			||||||
  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %S2 ]
 | 
					  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %S2 ]
 | 
				
			||||||
  %arrayidx.2 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.2
 | 
					  %arrayidx.2 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.2
 | 
				
			||||||
  store i32 5, i32* %arrayidx.2
 | 
					  store i32 5, i32* %arrayidx.2
 | 
				
			||||||
  %indvar.next.2 = add i64 %indvar.2, 1
 | 
					  %indvar.next.2 = add i64 %indvar.2, 1
 | 
				
			||||||
  %exitcond.2 = icmp ne i64 %indvar.next.2, 10
 | 
					  %exitcond.2 = icmp ne i64 %indvar.next.2, 10
 | 
				
			||||||
| 
						 | 
					@ -41,7 +41,7 @@ exit.2:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S3:
 | 
					S3:
 | 
				
			||||||
  %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %S3 ]
 | 
					  %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %S3 ]
 | 
				
			||||||
  %arrayidx.3 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.3
 | 
					  %arrayidx.3 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.3
 | 
				
			||||||
  store i32 7, i32* %arrayidx.3
 | 
					  store i32 7, i32* %arrayidx.3
 | 
				
			||||||
  %indvar.next.3 = add i64 %indvar.3, 1
 | 
					  %indvar.next.3 = add i64 %indvar.3, 1
 | 
				
			||||||
  %exitcond.3 = icmp ne i64 %indvar.next.3, 200
 | 
					  %exitcond.3 = icmp ne i64 %indvar.next.3, 200
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,13 +22,13 @@ do.body:                                          ; preds = %do.cond42, %entry
 | 
				
			||||||
 | 
					
 | 
				
			||||||
do.body1:                                         ; preds = %do.cond36, %do.body
 | 
					do.body1:                                         ; preds = %do.cond36, %do.body
 | 
				
			||||||
  %indvar1 = phi i64 [ %indvar.next2, %do.cond36 ], [ 0, %do.body ] ; <i64> [#uses=3]
 | 
					  %indvar1 = phi i64 [ %indvar.next2, %do.cond36 ], [ 0, %do.body ] ; <i64> [#uses=3]
 | 
				
			||||||
  %arrayidx5 = getelementptr [36 x [49 x double]]* @C, i64 0, i64 %indvar3, i64 %indvar1 ; <double*> [#uses=2]
 | 
					  %arrayidx5 = getelementptr [36 x [49 x double]], [36 x [49 x double]]* @C, i64 0, i64 %indvar3, i64 %indvar1 ; <double*> [#uses=2]
 | 
				
			||||||
  br label %do.body2
 | 
					  br label %do.body2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
do.body2:                                         ; preds = %do.cond, %do.body1
 | 
					do.body2:                                         ; preds = %do.cond, %do.body1
 | 
				
			||||||
  %indvar = phi i64 [ %indvar.next, %do.cond ], [ 0, %do.body1 ] ; <i64> [#uses=3]
 | 
					  %indvar = phi i64 [ %indvar.next, %do.cond ], [ 0, %do.body1 ] ; <i64> [#uses=3]
 | 
				
			||||||
  %arrayidx13 = getelementptr [36 x [49 x double]]* @A, i64 0, i64 %indvar3, i64 %indvar ; <double*> [#uses=1]
 | 
					  %arrayidx13 = getelementptr [36 x [49 x double]], [36 x [49 x double]]* @A, i64 0, i64 %indvar3, i64 %indvar ; <double*> [#uses=1]
 | 
				
			||||||
  %arrayidx22 = getelementptr [36 x [49 x double]]* @B, i64 0, i64 %indvar, i64 %indvar1 ; <double*> [#uses=1]
 | 
					  %arrayidx22 = getelementptr [36 x [49 x double]], [36 x [49 x double]]* @B, i64 0, i64 %indvar, i64 %indvar1 ; <double*> [#uses=1]
 | 
				
			||||||
  %tmp6 = load double* %arrayidx5                 ; <double> [#uses=1]
 | 
					  %tmp6 = load double* %arrayidx5                 ; <double> [#uses=1]
 | 
				
			||||||
  %mul = fmul double 1.000000e+00, %tmp6          ; <double> [#uses=1]
 | 
					  %mul = fmul double 1.000000e+00, %tmp6          ; <double> [#uses=1]
 | 
				
			||||||
  %tmp14 = load double* %arrayidx13               ; <double> [#uses=1]
 | 
					  %tmp14 = load double* %arrayidx13               ; <double> [#uses=1]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -37,7 +37,7 @@ for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %mul = mul nsw i32 %j.0, %i.0
 | 
					  %mul = mul nsw i32 %j.0, %i.0
 | 
				
			||||||
  %mul4 = shl nsw i32 %j.0, 1
 | 
					  %mul4 = shl nsw i32 %j.0, 1
 | 
				
			||||||
  %add = add nsw i32 %i.0, %mul4
 | 
					  %add = add nsw i32 %i.0, %mul4
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %sum, i32 %add
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %sum, i32 %add
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add5 = add nsw i32 %tmp, %mul
 | 
					  %add5 = add nsw i32 %tmp, %mul
 | 
				
			||||||
  store i32 %add5, i32* %arrayidx, align 4
 | 
					  store i32 %add5, i32* %arrayidx, align 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,20 +33,20 @@ for.cond:                                         ; preds = %for.inc, %entry
 | 
				
			||||||
  br i1 %exitcond, label %for.body, label %for.end
 | 
					  br i1 %exitcond, label %for.body, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.cond
 | 
					for.body:                                         ; preds = %for.cond
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %sub = add nsw i32 %i.0, -1
 | 
					  %sub = add nsw i32 %i.0, -1
 | 
				
			||||||
  %arrayidx1 = getelementptr inbounds i32* %A, i32 %sub
 | 
					  %arrayidx1 = getelementptr inbounds i32, i32* %A, i32 %sub
 | 
				
			||||||
  %tmp1 = load i32* %arrayidx1, align 4
 | 
					  %tmp1 = load i32* %arrayidx1, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, %tmp1
 | 
					  %add = add nsw i32 %tmp, %tmp1
 | 
				
			||||||
  %arrayidx2 = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx2 = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  store i32 %add, i32* %arrayidx2, align 4
 | 
					  store i32 %add, i32* %arrayidx2, align 4
 | 
				
			||||||
  %sub4 = add nsw i32 %i.0, -2
 | 
					  %sub4 = add nsw i32 %i.0, -2
 | 
				
			||||||
  %arrayidx5 = getelementptr inbounds i32* %A, i32 %sub4
 | 
					  %arrayidx5 = getelementptr inbounds i32, i32* %A, i32 %sub4
 | 
				
			||||||
  %tmp2 = load i32* %arrayidx5, align 4
 | 
					  %tmp2 = load i32* %arrayidx5, align 4
 | 
				
			||||||
  %add6 = add nsw i32 %add, %tmp2
 | 
					  %add6 = add nsw i32 %add, %tmp2
 | 
				
			||||||
  %sub7 = add nsw i32 %i.0, -1
 | 
					  %sub7 = add nsw i32 %i.0, -1
 | 
				
			||||||
  %arrayidx8 = getelementptr inbounds i32* %A, i32 %sub7
 | 
					  %arrayidx8 = getelementptr inbounds i32, i32* %A, i32 %sub7
 | 
				
			||||||
  store i32 %add6, i32* %arrayidx8, align 4
 | 
					  store i32 %add6, i32* %arrayidx8, align 4
 | 
				
			||||||
  %tmp3 = load i32* %sum, align 4
 | 
					  %tmp3 = load i32* %sum, align 4
 | 
				
			||||||
  %add9 = add nsw i32 %tmp3, %i.0
 | 
					  %add9 = add nsw i32 %tmp3, %i.0
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,11 +35,11 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 | 
				
			||||||
  br i1 %exitcond, label %for.body3, label %for.end
 | 
					  br i1 %exitcond, label %for.body3, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body3:                                        ; preds = %for.cond1
 | 
					for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %sum, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %sum, i32 %i.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, 3
 | 
					  %add = add nsw i32 %tmp, 3
 | 
				
			||||||
  %add4 = add nsw i32 %i.0, %j.0
 | 
					  %add4 = add nsw i32 %i.0, %j.0
 | 
				
			||||||
  %arrayidx5 = getelementptr inbounds i32* %sum, i32 %add4
 | 
					  %arrayidx5 = getelementptr inbounds i32, i32* %sum, i32 %add4
 | 
				
			||||||
  store i32 %add, i32* %arrayidx5, align 4
 | 
					  store i32 %add, i32* %arrayidx5, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,7 +39,7 @@ for.cond1:                                        ; preds = %for.inc8, %for.body
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body3:                                        ; preds = %for.cond1
 | 
					for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %add = add nsw i32 %i.0, %j.0
 | 
					  %add = add nsw i32 %i.0, %j.0
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %add
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %add
 | 
				
			||||||
  %tmp3 = load i32* %arrayidx, align 4
 | 
					  %tmp3 = load i32* %arrayidx, align 4
 | 
				
			||||||
  %tmp4 = load i32* %sum, align 4
 | 
					  %tmp4 = load i32* %sum, align 4
 | 
				
			||||||
  %add4 = add nsw i32 %tmp4, %tmp3
 | 
					  %add4 = add nsw i32 %tmp4, %tmp3
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -41,7 +41,7 @@ for.cond1:                                        ; preds = %for.inc8, %for.body
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body3:                                        ; preds = %for.cond1
 | 
					for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %add = add nsw i32 %i.0, %j.0
 | 
					  %add = add nsw i32 %i.0, %j.0
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %add
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %add
 | 
				
			||||||
  %tmp3 = load i32* %arrayidx, align 4
 | 
					  %tmp3 = load i32* %arrayidx, align 4
 | 
				
			||||||
  %tmp4 = load i32* %sum, align 4
 | 
					  %tmp4 = load i32* %sum, align 4
 | 
				
			||||||
  %add4 = add nsw i32 %tmp4, %tmp3
 | 
					  %add4 = add nsw i32 %tmp4, %tmp3
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,7 +49,7 @@ for.inc:                                          ; preds = %for.inc, %for.body
 | 
				
			||||||
  %indvars.iv1 = phi i64 [ 0, %for.body ], [ %1, %for.inc ]
 | 
					  %indvars.iv1 = phi i64 [ 0, %for.body ], [ %1, %for.inc ]
 | 
				
			||||||
  %sum.12.reload = load i32* %sum.12.reg2mem
 | 
					  %sum.12.reload = load i32* %sum.12.reg2mem
 | 
				
			||||||
  %0 = add i64 %indvars.iv23, %indvars.iv1
 | 
					  %0 = add i64 %indvars.iv23, %indvars.iv1
 | 
				
			||||||
  %arrayidx = getelementptr i32* %A, i64 %0
 | 
					  %arrayidx = getelementptr i32, i32* %A, i64 %0
 | 
				
			||||||
  %tmp5 = load i32* %arrayidx, align 4
 | 
					  %tmp5 = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add4 = add nsw i32 %tmp5, %sum.12.reload
 | 
					  %add4 = add nsw i32 %tmp5, %sum.12.reload
 | 
				
			||||||
  %1 = add nuw nsw i64 %indvars.iv1, 1
 | 
					  %1 = add nuw nsw i64 %indvars.iv1, 1
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,10 +28,10 @@ for.cond:                                         ; preds = %for.inc, %entry
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.cond
 | 
					for.body:                                         ; preds = %for.cond
 | 
				
			||||||
  %sub = sub nsw i32 99, %i.0
 | 
					  %sub = sub nsw i32 99, %i.0
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %sum, i32 %sub
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %sum, i32 %sub
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, %i.0
 | 
					  %add = add nsw i32 %tmp, %i.0
 | 
				
			||||||
  %arrayidx1 = getelementptr inbounds i32* %sum, i32 %i.0
 | 
					  %arrayidx1 = getelementptr inbounds i32, i32* %sum, i32 %i.0
 | 
				
			||||||
  store i32 %add, i32* %arrayidx1, align 4
 | 
					  store i32 %add, i32* %arrayidx1, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,7 +32,7 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 | 
				
			||||||
  br i1 %exitcond, label %for.body3, label %for.end
 | 
					  br i1 %exitcond, label %for.body3, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body3:                                        ; preds = %for.cond1
 | 
					for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %sums, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %sums, i32 %i.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, 5
 | 
					  %add = add nsw i32 %tmp, 5
 | 
				
			||||||
  store i32 %add, i32* %arrayidx, align 4
 | 
					  store i32 %add, i32* %arrayidx, align 4
 | 
				
			||||||
| 
						 | 
					@ -42,11 +42,11 @@ for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  br i1 %cmp5, label %if.then, label %if.end
 | 
					  br i1 %cmp5, label %if.then, label %if.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if.then:                                          ; preds = %for.body3
 | 
					if.then:                                          ; preds = %for.body3
 | 
				
			||||||
  %arrayidx6 = getelementptr inbounds i32* %sums, i32 %i.0
 | 
					  %arrayidx6 = getelementptr inbounds i32, i32* %sums, i32 %i.0
 | 
				
			||||||
  %tmp2 = load i32* %arrayidx6, align 4
 | 
					  %tmp2 = load i32* %arrayidx6, align 4
 | 
				
			||||||
  %sub7 = sub nsw i32 %N, %i.0
 | 
					  %sub7 = sub nsw i32 %N, %i.0
 | 
				
			||||||
  %add8 = add nsw i32 %sub7, %j.0
 | 
					  %add8 = add nsw i32 %sub7, %j.0
 | 
				
			||||||
  %arrayidx9 = getelementptr inbounds i32* %escape, i32 %add8
 | 
					  %arrayidx9 = getelementptr inbounds i32, i32* %escape, i32 %add8
 | 
				
			||||||
  store i32 %tmp2, i32* %arrayidx9, align 4
 | 
					  store i32 %tmp2, i32* %arrayidx9, align 4
 | 
				
			||||||
  br label %if.end
 | 
					  br label %if.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,7 +36,7 @@ for.body:                                         ; preds = %for.cond
 | 
				
			||||||
  br label %S0
 | 
					  br label %S0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S0:                                               ; preds = %for.body
 | 
					S0:                                               ; preds = %for.body
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %sum, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %sum, i32 %i.0
 | 
				
			||||||
  store i32 0, i32* %arrayidx, align 4
 | 
					  store i32 0, i32* %arrayidx, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -65,7 +65,7 @@ for.body7:                                        ; preds = %for.cond5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S1:                                               ; preds = %for.body7
 | 
					S1:                                               ; preds = %for.body7
 | 
				
			||||||
  %add = add nsw i32 %i1.0, %j.0
 | 
					  %add = add nsw i32 %i1.0, %j.0
 | 
				
			||||||
  %arrayidx8 = getelementptr inbounds i32* %sum, i32 %add
 | 
					  %arrayidx8 = getelementptr inbounds i32, i32* %sum, i32 %add
 | 
				
			||||||
  %tmp = load i32* %arrayidx8, align 4
 | 
					  %tmp = load i32* %arrayidx8, align 4
 | 
				
			||||||
  %add9 = add nsw i32 %tmp, %i1.0
 | 
					  %add9 = add nsw i32 %tmp, %i1.0
 | 
				
			||||||
  store i32 %add9, i32* %arrayidx8, align 4
 | 
					  store i32 %add9, i32* %arrayidx8, align 4
 | 
				
			||||||
| 
						 | 
					@ -95,10 +95,10 @@ for.body19:                                       ; preds = %for.cond17
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S2:                                               ; preds = %for.body19
 | 
					S2:                                               ; preds = %for.body19
 | 
				
			||||||
  %add20 = add nsw i32 %i16.0, 1
 | 
					  %add20 = add nsw i32 %i16.0, 1
 | 
				
			||||||
  %arrayidx21 = getelementptr inbounds i32* %sum, i32 %add20
 | 
					  %arrayidx21 = getelementptr inbounds i32, i32* %sum, i32 %add20
 | 
				
			||||||
  %tmp4 = load i32* %arrayidx21, align 4
 | 
					  %tmp4 = load i32* %arrayidx21, align 4
 | 
				
			||||||
  %mul = mul nsw i32 %tmp4, 3
 | 
					  %mul = mul nsw i32 %tmp4, 3
 | 
				
			||||||
  %arrayidx22 = getelementptr inbounds i32* %sum, i32 %i16.0
 | 
					  %arrayidx22 = getelementptr inbounds i32, i32* %sum, i32 %i16.0
 | 
				
			||||||
  store i32 %mul, i32* %arrayidx22, align 4
 | 
					  store i32 %mul, i32* %arrayidx22, align 4
 | 
				
			||||||
  br label %for.inc23
 | 
					  br label %for.inc23
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,7 +40,7 @@ for.body:                                         ; preds = %for.cond
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S1:                                               ; preds = %for.body
 | 
					S1:                                               ; preds = %for.body
 | 
				
			||||||
  %add = add nsw i32 %i.0, 1
 | 
					  %add = add nsw i32 %i.0, 1
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %sum, i32 %add
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %sum, i32 %add
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add1 = add nsw i32 %tmp, 42
 | 
					  %add1 = add nsw i32 %tmp, 42
 | 
				
			||||||
  store i32 %add1, i32* %arrayidx, align 4
 | 
					  store i32 %add1, i32* %arrayidx, align 4
 | 
				
			||||||
| 
						 | 
					@ -56,7 +56,7 @@ for.body4:                                        ; preds = %for.cond2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S2:                                               ; preds = %for.body4
 | 
					S2:                                               ; preds = %for.body4
 | 
				
			||||||
  %mul = mul nsw i32 %i.0, %j.0
 | 
					  %mul = mul nsw i32 %i.0, %j.0
 | 
				
			||||||
  %arrayidx5 = getelementptr inbounds i32* %sum, i32 %i.0
 | 
					  %arrayidx5 = getelementptr inbounds i32, i32* %sum, i32 %i.0
 | 
				
			||||||
  %tmp2 = load i32* %arrayidx5, align 4
 | 
					  %tmp2 = load i32* %arrayidx5, align 4
 | 
				
			||||||
  %add6 = add nsw i32 %tmp2, %mul
 | 
					  %add6 = add nsw i32 %tmp2, %mul
 | 
				
			||||||
  store i32 %add6, i32* %arrayidx5, align 4
 | 
					  store i32 %add6, i32* %arrayidx5, align 4
 | 
				
			||||||
| 
						 | 
					@ -71,7 +71,7 @@ for.end:                                          ; preds = %for.cond2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S3:                                               ; preds = %for.end
 | 
					S3:                                               ; preds = %for.end
 | 
				
			||||||
  %add7 = add nsw i32 %i.0, 1
 | 
					  %add7 = add nsw i32 %i.0, 1
 | 
				
			||||||
  %arrayidx8 = getelementptr inbounds i32* %sum, i32 %add7
 | 
					  %arrayidx8 = getelementptr inbounds i32, i32* %sum, i32 %add7
 | 
				
			||||||
  %tmp3 = load i32* %arrayidx8, align 4
 | 
					  %tmp3 = load i32* %arrayidx8, align 4
 | 
				
			||||||
  %add9 = add nsw i32 %tmp3, 7
 | 
					  %add9 = add nsw i32 %tmp3, 7
 | 
				
			||||||
  store i32 %add9, i32* %arrayidx8, align 4
 | 
					  store i32 %add9, i32* %arrayidx8, align 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,7 +40,7 @@ for.body:                                         ; preds = %for.cond
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S1:                                               ; preds = %for.body
 | 
					S1:                                               ; preds = %for.body
 | 
				
			||||||
  %add = add nsw i32 %i.0, 1
 | 
					  %add = add nsw i32 %i.0, 1
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %sum, i32 %add
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %sum, i32 %add
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add1 = add nsw i32 %tmp, 42
 | 
					  %add1 = add nsw i32 %tmp, 42
 | 
				
			||||||
  store i32 %add1, i32* %arrayidx, align 4
 | 
					  store i32 %add1, i32* %arrayidx, align 4
 | 
				
			||||||
| 
						 | 
					@ -57,7 +57,7 @@ for.body4:                                        ; preds = %for.cond2
 | 
				
			||||||
S2:                                               ; preds = %for.body4
 | 
					S2:                                               ; preds = %for.body4
 | 
				
			||||||
  %mul = mul nsw i32 %i.0, %j.0
 | 
					  %mul = mul nsw i32 %i.0, %j.0
 | 
				
			||||||
  %sub = sub nsw i32 %i.0, %j.0
 | 
					  %sub = sub nsw i32 %i.0, %j.0
 | 
				
			||||||
  %arrayidx5 = getelementptr inbounds i32* %sum, i32 %sub
 | 
					  %arrayidx5 = getelementptr inbounds i32, i32* %sum, i32 %sub
 | 
				
			||||||
  %tmp2 = load i32* %arrayidx5, align 4
 | 
					  %tmp2 = load i32* %arrayidx5, align 4
 | 
				
			||||||
  %add6 = add nsw i32 %tmp2, %mul
 | 
					  %add6 = add nsw i32 %tmp2, %mul
 | 
				
			||||||
  store i32 %add6, i32* %arrayidx5, align 4
 | 
					  store i32 %add6, i32* %arrayidx5, align 4
 | 
				
			||||||
| 
						 | 
					@ -72,7 +72,7 @@ for.end:                                          ; preds = %for.cond2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S3:                                               ; preds = %for.end
 | 
					S3:                                               ; preds = %for.end
 | 
				
			||||||
  %sub7 = add nsw i32 %i.0, -1
 | 
					  %sub7 = add nsw i32 %i.0, -1
 | 
				
			||||||
  %arrayidx8 = getelementptr inbounds i32* %sum, i32 %sub7
 | 
					  %arrayidx8 = getelementptr inbounds i32, i32* %sum, i32 %sub7
 | 
				
			||||||
  %tmp3 = load i32* %arrayidx8, align 4
 | 
					  %tmp3 = load i32* %arrayidx8, align 4
 | 
				
			||||||
  %add9 = add nsw i32 %tmp3, 7
 | 
					  %add9 = add nsw i32 %tmp3, 7
 | 
				
			||||||
  store i32 %add9, i32* %arrayidx8, align 4
 | 
					  store i32 %add9, i32* %arrayidx8, align 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,7 +39,7 @@ for.body:                                         ; preds = %for.cond
 | 
				
			||||||
  br label %S1
 | 
					  br label %S1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S1:                                               ; preds = %for.body
 | 
					S1:                                               ; preds = %for.body
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %sum, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %sum, i32 %i.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, 42
 | 
					  %add = add nsw i32 %tmp, 42
 | 
				
			||||||
  store i32 %add, i32* %arrayidx, align 4
 | 
					  store i32 %add, i32* %arrayidx, align 4
 | 
				
			||||||
| 
						 | 
					@ -55,7 +55,7 @@ for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S2:                                               ; preds = %for.body3
 | 
					S2:                                               ; preds = %for.body3
 | 
				
			||||||
  %mul = mul nsw i32 %i.0, %j.0
 | 
					  %mul = mul nsw i32 %i.0, %j.0
 | 
				
			||||||
  %arrayidx4 = getelementptr inbounds i32* %sum, i32 %j.0
 | 
					  %arrayidx4 = getelementptr inbounds i32, i32* %sum, i32 %j.0
 | 
				
			||||||
  %tmp2 = load i32* %arrayidx4, align 4
 | 
					  %tmp2 = load i32* %arrayidx4, align 4
 | 
				
			||||||
  %add5 = add nsw i32 %tmp2, %mul
 | 
					  %add5 = add nsw i32 %tmp2, %mul
 | 
				
			||||||
  store i32 %add5, i32* %arrayidx4, align 4
 | 
					  store i32 %add5, i32* %arrayidx4, align 4
 | 
				
			||||||
| 
						 | 
					@ -69,7 +69,7 @@ for.end:                                          ; preds = %for.cond1
 | 
				
			||||||
  br label %S3
 | 
					  br label %S3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S3:                                               ; preds = %for.end
 | 
					S3:                                               ; preds = %for.end
 | 
				
			||||||
  %arrayidx6 = getelementptr inbounds i32* %sum, i32 %i.0
 | 
					  %arrayidx6 = getelementptr inbounds i32, i32* %sum, i32 %i.0
 | 
				
			||||||
  %tmp3 = load i32* %arrayidx6, align 4
 | 
					  %tmp3 = load i32* %arrayidx6, align 4
 | 
				
			||||||
  %add7 = add nsw i32 %tmp3, 7
 | 
					  %add7 = add nsw i32 %tmp3, 7
 | 
				
			||||||
  store i32 %add7, i32* %arrayidx6, align 4
 | 
					  store i32 %add7, i32* %arrayidx6, align 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,7 +43,7 @@ for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  br label %S1
 | 
					  br label %S1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S1:                                               ; preds = %for.body3
 | 
					S1:                                               ; preds = %for.body3
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %sum, i32 %j.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %sum, i32 %j.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, 42
 | 
					  %add = add nsw i32 %tmp, 42
 | 
				
			||||||
  store i32 %add, i32* %arrayidx, align 4
 | 
					  store i32 %add, i32* %arrayidx, align 4
 | 
				
			||||||
| 
						 | 
					@ -66,7 +66,7 @@ for.body6:                                        ; preds = %for.cond4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S2:                                               ; preds = %for.body6
 | 
					S2:                                               ; preds = %for.body6
 | 
				
			||||||
  %mul = mul nsw i32 %i.0, %j.1
 | 
					  %mul = mul nsw i32 %i.0, %j.1
 | 
				
			||||||
  %arrayidx7 = getelementptr inbounds i32* %sum, i32 %j.1
 | 
					  %arrayidx7 = getelementptr inbounds i32, i32* %sum, i32 %j.1
 | 
				
			||||||
  %tmp3 = load i32* %arrayidx7, align 4
 | 
					  %tmp3 = load i32* %arrayidx7, align 4
 | 
				
			||||||
  %add8 = add nsw i32 %tmp3, %mul
 | 
					  %add8 = add nsw i32 %tmp3, %mul
 | 
				
			||||||
  store i32 %add8, i32* %arrayidx7, align 4
 | 
					  store i32 %add8, i32* %arrayidx7, align 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,17 +40,17 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 | 
				
			||||||
for.body3:                                        ; preds = %for.cond1
 | 
					for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %add = add nsw i32 %i.0, %j.0
 | 
					  %add = add nsw i32 %i.0, %j.0
 | 
				
			||||||
  %sub = add nsw i32 %add, -1
 | 
					  %sub = add nsw i32 %add, -1
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %Values, i32 %sub
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %Values, i32 %sub
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %arrayidx4 = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx4 = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  %tmp2 = load i32* %arrayidx4, align 4
 | 
					  %tmp2 = load i32* %arrayidx4, align 4
 | 
				
			||||||
  %add5 = add nsw i32 %tmp2, %tmp
 | 
					  %add5 = add nsw i32 %tmp2, %tmp
 | 
				
			||||||
  store i32 %add5, i32* %arrayidx4, align 4
 | 
					  store i32 %add5, i32* %arrayidx4, align 4
 | 
				
			||||||
  %add6 = add nsw i32 %i.0, %j.0
 | 
					  %add6 = add nsw i32 %i.0, %j.0
 | 
				
			||||||
  %add7 = add nsw i32 %add6, 42
 | 
					  %add7 = add nsw i32 %add6, 42
 | 
				
			||||||
  %arrayidx8 = getelementptr inbounds i32* %Values, i32 %add7
 | 
					  %arrayidx8 = getelementptr inbounds i32, i32* %Values, i32 %add7
 | 
				
			||||||
  %tmp3 = load i32* %arrayidx8, align 4
 | 
					  %tmp3 = load i32* %arrayidx8, align 4
 | 
				
			||||||
  %arrayidx9 = getelementptr inbounds i32* %B, i32 %j.0
 | 
					  %arrayidx9 = getelementptr inbounds i32, i32* %B, i32 %j.0
 | 
				
			||||||
  %tmp4 = load i32* %arrayidx9, align 4
 | 
					  %tmp4 = load i32* %arrayidx9, align 4
 | 
				
			||||||
  %add10 = add nsw i32 %tmp4, %tmp3
 | 
					  %add10 = add nsw i32 %tmp4, %tmp3
 | 
				
			||||||
  store i32 %add10, i32* %arrayidx9, align 4
 | 
					  store i32 %add10, i32* %arrayidx9, align 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,7 +19,7 @@ entry:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S1:
 | 
					S1:
 | 
				
			||||||
  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
 | 
					  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
 | 
				
			||||||
  %arrayidx.1 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
					  %arrayidx.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
				
			||||||
  store i32 2, i32* %arrayidx.1
 | 
					  store i32 2, i32* %arrayidx.1
 | 
				
			||||||
  %indvar.next.1 = add i64 %indvar.1, 1
 | 
					  %indvar.next.1 = add i64 %indvar.1, 1
 | 
				
			||||||
  %exitcond.1 = icmp ne i64 %indvar.next.1, 100
 | 
					  %exitcond.1 = icmp ne i64 %indvar.next.1, 100
 | 
				
			||||||
| 
						 | 
					@ -30,7 +30,7 @@ exit.1:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S2:
 | 
					S2:
 | 
				
			||||||
  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %S2 ]
 | 
					  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %S2 ]
 | 
				
			||||||
  %arrayidx.2 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.2
 | 
					  %arrayidx.2 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.2
 | 
				
			||||||
  store i32 5, i32* %arrayidx.2
 | 
					  store i32 5, i32* %arrayidx.2
 | 
				
			||||||
  %indvar.next.2 = add i64 %indvar.2, 1
 | 
					  %indvar.next.2 = add i64 %indvar.2, 1
 | 
				
			||||||
  %exitcond.2 = icmp ne i64 %indvar.next.2, 10
 | 
					  %exitcond.2 = icmp ne i64 %indvar.next.2, 10
 | 
				
			||||||
| 
						 | 
					@ -41,7 +41,7 @@ exit.2:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S3:
 | 
					S3:
 | 
				
			||||||
  %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %S3 ]
 | 
					  %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %S3 ]
 | 
				
			||||||
  %arrayidx.3 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.3
 | 
					  %arrayidx.3 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.3
 | 
				
			||||||
  store i32 7, i32* %arrayidx.3
 | 
					  store i32 7, i32* %arrayidx.3
 | 
				
			||||||
  %indvar.next.3 = add i64 %indvar.3, 1
 | 
					  %indvar.next.3 = add i64 %indvar.3, 1
 | 
				
			||||||
  %exitcond.3 = icmp ne i64 %indvar.next.3, 200
 | 
					  %exitcond.3 = icmp ne i64 %indvar.next.3, 200
 | 
				
			||||||
| 
						 | 
					@ -92,7 +92,7 @@ entry:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S1:
 | 
					S1:
 | 
				
			||||||
  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
 | 
					  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
 | 
				
			||||||
  %arrayidx.1 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
					  %arrayidx.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
				
			||||||
  store i32 2, i32* %arrayidx.1
 | 
					  store i32 2, i32* %arrayidx.1
 | 
				
			||||||
  %indvar.next.1 = add i64 %indvar.1, 1
 | 
					  %indvar.next.1 = add i64 %indvar.1, 1
 | 
				
			||||||
  %exitcond.1 = icmp ne i64 %indvar.next.1, 100
 | 
					  %exitcond.1 = icmp ne i64 %indvar.next.1, 100
 | 
				
			||||||
| 
						 | 
					@ -103,7 +103,7 @@ exit.1:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S2:
 | 
					S2:
 | 
				
			||||||
  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %S2 ]
 | 
					  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %S2 ]
 | 
				
			||||||
  %arrayidx.2 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.2
 | 
					  %arrayidx.2 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.2
 | 
				
			||||||
  store i32 5, i32* %arrayidx.2
 | 
					  store i32 5, i32* %arrayidx.2
 | 
				
			||||||
  %indvar.next.2 = add i64 %indvar.2, 1
 | 
					  %indvar.next.2 = add i64 %indvar.2, 1
 | 
				
			||||||
  %exitcond.2 = icmp ne i64 %indvar.next.2, 10
 | 
					  %exitcond.2 = icmp ne i64 %indvar.next.2, 10
 | 
				
			||||||
| 
						 | 
					@ -114,8 +114,8 @@ exit.2:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S3:
 | 
					S3:
 | 
				
			||||||
  %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %S3 ]
 | 
					  %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %S3 ]
 | 
				
			||||||
  %arrayidx.3.a = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.3
 | 
					  %arrayidx.3.a = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.3
 | 
				
			||||||
  %arrayidx.3.b = getelementptr [200 x i32]* %B, i64 0, i64 %indvar.3
 | 
					  %arrayidx.3.b = getelementptr [200 x i32], [200 x i32]* %B, i64 0, i64 %indvar.3
 | 
				
			||||||
  %val = load i32* %arrayidx.3.a
 | 
					  %val = load i32* %arrayidx.3.a
 | 
				
			||||||
  store i32 %val, i32* %arrayidx.3.b
 | 
					  store i32 %val, i32* %arrayidx.3.b
 | 
				
			||||||
  %indvar.next.3 = add i64 %indvar.3, 1
 | 
					  %indvar.next.3 = add i64 %indvar.3, 1
 | 
				
			||||||
| 
						 | 
					@ -169,8 +169,8 @@ entry:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S1:
 | 
					S1:
 | 
				
			||||||
  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
 | 
					  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
 | 
				
			||||||
  %arrayidx.1.a = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
					  %arrayidx.1.a = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
				
			||||||
  %arrayidx.1.b = getelementptr [200 x i32]* %B, i64 0, i64 %indvar.1
 | 
					  %arrayidx.1.b = getelementptr [200 x i32], [200 x i32]* %B, i64 0, i64 %indvar.1
 | 
				
			||||||
  %val = load i32* %arrayidx.1.a
 | 
					  %val = load i32* %arrayidx.1.a
 | 
				
			||||||
  store i32 %val, i32* %arrayidx.1.b
 | 
					  store i32 %val, i32* %arrayidx.1.b
 | 
				
			||||||
  %indvar.next.1 = add i64 %indvar.1, 1
 | 
					  %indvar.next.1 = add i64 %indvar.1, 1
 | 
				
			||||||
| 
						 | 
					@ -182,7 +182,7 @@ exit.1:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S2:
 | 
					S2:
 | 
				
			||||||
  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %S2 ]
 | 
					  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %S2 ]
 | 
				
			||||||
  %arrayidx.2 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.2
 | 
					  %arrayidx.2 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.2
 | 
				
			||||||
  store i32 5, i32* %arrayidx.2
 | 
					  store i32 5, i32* %arrayidx.2
 | 
				
			||||||
  %indvar.next.2 = add i64 %indvar.2, 1
 | 
					  %indvar.next.2 = add i64 %indvar.2, 1
 | 
				
			||||||
  %exitcond.2 = icmp ne i64 %indvar.next.2, 10
 | 
					  %exitcond.2 = icmp ne i64 %indvar.next.2, 10
 | 
				
			||||||
| 
						 | 
					@ -193,7 +193,7 @@ exit.2:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S3:
 | 
					S3:
 | 
				
			||||||
  %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %S3 ]
 | 
					  %indvar.3 = phi i64 [ 0, %exit.2 ], [ %indvar.next.3, %S3 ]
 | 
				
			||||||
  %arrayidx.3 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.3
 | 
					  %arrayidx.3 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.3
 | 
				
			||||||
  store i32 10, i32* %arrayidx.3
 | 
					  store i32 10, i32* %arrayidx.3
 | 
				
			||||||
  %indvar.next.3 = add i64 %indvar.3, 1
 | 
					  %indvar.next.3 = add i64 %indvar.3, 1
 | 
				
			||||||
  %exitcond.3 = icmp ne i64 %indvar.next.3, 200
 | 
					  %exitcond.3 = icmp ne i64 %indvar.next.3, 200
 | 
				
			||||||
| 
						 | 
					@ -245,7 +245,7 @@ entry:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S1:
 | 
					S1:
 | 
				
			||||||
  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
 | 
					  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
 | 
				
			||||||
  %arrayidx.1 = getelementptr [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
					  %arrayidx.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
 | 
				
			||||||
  store i32 10, i32* %arrayidx.1
 | 
					  store i32 10, i32* %arrayidx.1
 | 
				
			||||||
  %indvar.next.1 = add i64 %indvar.1, 1
 | 
					  %indvar.next.1 = add i64 %indvar.1, 1
 | 
				
			||||||
  %exitcond.1 = icmp ne i64 %indvar.next.1, 100
 | 
					  %exitcond.1 = icmp ne i64 %indvar.next.1, 100
 | 
				
			||||||
| 
						 | 
					@ -257,8 +257,8 @@ exit.1:
 | 
				
			||||||
S2:
 | 
					S2:
 | 
				
			||||||
  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %S2 ]
 | 
					  %indvar.2 = phi i64 [ 0, %exit.1 ], [ %indvar.next.2, %S2 ]
 | 
				
			||||||
  %sum = add i64 %indvar.2, %p
 | 
					  %sum = add i64 %indvar.2, %p
 | 
				
			||||||
  %arrayidx.2.a = getelementptr [200 x i32]* %A, i64 0, i64 %sum
 | 
					  %arrayidx.2.a = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %sum
 | 
				
			||||||
  %arrayidx.2.b = getelementptr [200 x i32]* %B, i64 0, i64 %indvar.2
 | 
					  %arrayidx.2.b = getelementptr [200 x i32], [200 x i32]* %B, i64 0, i64 %indvar.2
 | 
				
			||||||
  %val = load i32* %arrayidx.2.a
 | 
					  %val = load i32* %arrayidx.2.a
 | 
				
			||||||
  store i32 %val, i32* %arrayidx.2.b
 | 
					  store i32 %val, i32* %arrayidx.2.b
 | 
				
			||||||
  %indvar.next.2 = add i64 %indvar.2, 1
 | 
					  %indvar.next.2 = add i64 %indvar.2, 1
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,7 +43,7 @@ for.j:
 | 
				
			||||||
; CHECK: %init.loadarray = load i64* %init.s2a
 | 
					; CHECK: %init.loadarray = load i64* %init.s2a
 | 
				
			||||||
; CHECK: %init_plus_two = add i64 %init.loadarray, 2
 | 
					; CHECK: %init_plus_two = add i64 %init.loadarray, 2
 | 
				
			||||||
; SCALARACCESS: %init_plus_two = add i64 %init, 2
 | 
					; SCALARACCESS: %init_plus_two = add i64 %init, 2
 | 
				
			||||||
  %scevgep = getelementptr i64* %A, i64 %indvar.j
 | 
					  %scevgep = getelementptr i64, i64* %A, i64 %indvar.j
 | 
				
			||||||
  store i64 %init_plus_two, i64* %scevgep
 | 
					  store i64 %init_plus_two, i64* %scevgep
 | 
				
			||||||
  %indvar.j.next = add nsw i64 %indvar.j, 1
 | 
					  %indvar.j.next = add nsw i64 %indvar.j, 1
 | 
				
			||||||
  %exitcond.j = icmp eq i64 %indvar.j.next, %N
 | 
					  %exitcond.j = icmp eq i64 %indvar.j.next, %N
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -52,7 +52,7 @@ for.j:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; SCALARACCESS: %init_2 = load i64* %init_ptr
 | 
					; SCALARACCESS: %init_2 = load i64* %init_ptr
 | 
				
			||||||
; SCALARACCESS: %init_sum = add i64 %init, %init_2
 | 
					; SCALARACCESS: %init_sum = add i64 %init, %init_2
 | 
				
			||||||
  %scevgep = getelementptr i64* %A, i64 %indvar.j
 | 
					  %scevgep = getelementptr i64, i64* %A, i64 %indvar.j
 | 
				
			||||||
  store i64 %init_sum, i64* %scevgep
 | 
					  store i64 %init_sum, i64* %scevgep
 | 
				
			||||||
  %indvar.j.next = add nsw i64 %indvar.j, 1
 | 
					  %indvar.j.next = add nsw i64 %indvar.j, 1
 | 
				
			||||||
  %exitcond.j = icmp eq i64 %indvar.j.next, %N
 | 
					  %exitcond.j = icmp eq i64 %indvar.j.next, %N
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,7 +39,7 @@ for.j:
 | 
				
			||||||
; The scalar evolution of %init_plus_two is (2 + %init). So we have a
 | 
					; The scalar evolution of %init_plus_two is (2 + %init). So we have a
 | 
				
			||||||
; non-trivial scalar evolution referring to a value in the same basic block.
 | 
					; non-trivial scalar evolution referring to a value in the same basic block.
 | 
				
			||||||
; We want to ensure that this scalar is not translated into a memory copy.
 | 
					; We want to ensure that this scalar is not translated into a memory copy.
 | 
				
			||||||
  %scevgep = getelementptr i64* %A, i64 %indvar.j
 | 
					  %scevgep = getelementptr i64, i64* %A, i64 %indvar.j
 | 
				
			||||||
  store i64 %init_plus_two, i64* %scevgep
 | 
					  store i64 %init_plus_two, i64* %scevgep
 | 
				
			||||||
  %indvar.j.next = add nsw i64 %indvar.j, 1
 | 
					  %indvar.j.next = add nsw i64 %indvar.j, 1
 | 
				
			||||||
  %exitcond.j = icmp eq i64 %indvar.j.next, %N
 | 
					  %exitcond.j = icmp eq i64 %indvar.j.next, %N
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -47,7 +47,7 @@ for.cond:
 | 
				
			||||||
  br i1 %exitcond, label %for.body, label %return
 | 
					  br i1 %exitcond, label %for.body, label %return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:
 | 
					for.body:
 | 
				
			||||||
  %arrayidx = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
 | 
					  %arrayidx = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
 | 
				
			||||||
  %float = uitofp i64 %indvar to float
 | 
					  %float = uitofp i64 %indvar to float
 | 
				
			||||||
  store float %float, float* %arrayidx
 | 
					  store float %float, float* %arrayidx
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
| 
						 | 
					@ -87,31 +87,31 @@ for.cond:
 | 
				
			||||||
  br i1 %exitcond, label %for.body.a, label %return
 | 
					  br i1 %exitcond, label %for.body.a, label %return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body.a:
 | 
					for.body.a:
 | 
				
			||||||
  %arrayidx = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
 | 
					  %arrayidx = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
 | 
				
			||||||
  %scalar = load float* %arrayidx
 | 
					  %scalar = load float* %arrayidx
 | 
				
			||||||
  br label %for.body.b
 | 
					  br label %for.body.b
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; CHECK: for.body.a:
 | 
					; CHECK: for.body.a:
 | 
				
			||||||
; CHECK: %arrayidx = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
 | 
					; CHECK: %arrayidx = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
 | 
				
			||||||
; CHECK: %scalar = load float* %arrayidx
 | 
					; CHECK: %scalar = load float* %arrayidx
 | 
				
			||||||
; CHECK: store float %scalar, float* %scalar.s2a
 | 
					; CHECK: store float %scalar, float* %scalar.s2a
 | 
				
			||||||
; CHECK: br label %for.body.b
 | 
					; CHECK: br label %for.body.b
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; SCALARACCESS: for.body.a:
 | 
					; SCALARACCESS: for.body.a:
 | 
				
			||||||
; SCALARACCESS: %arrayidx = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
 | 
					; SCALARACCESS: %arrayidx = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
 | 
				
			||||||
; SCALARACCESS: %scalar = load float* %arrayidx
 | 
					; SCALARACCESS: %scalar = load float* %arrayidx
 | 
				
			||||||
; SCALARACCESS-NOT: store
 | 
					; SCALARACCESS-NOT: store
 | 
				
			||||||
; SCALARACCESS: br label %for.body.b
 | 
					; SCALARACCESS: br label %for.body.b
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body.b:
 | 
					for.body.b:
 | 
				
			||||||
  %arrayidx2 = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
 | 
					  %arrayidx2 = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
 | 
				
			||||||
  %float = uitofp i64 %indvar to float
 | 
					  %float = uitofp i64 %indvar to float
 | 
				
			||||||
  %sum = fadd float %scalar, %float
 | 
					  %sum = fadd float %scalar, %float
 | 
				
			||||||
  store float %sum, float* %arrayidx2
 | 
					  store float %sum, float* %arrayidx2
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; CHECK: for.body.b:
 | 
					; CHECK: for.body.b:
 | 
				
			||||||
; CHECK: %arrayidx2 = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
 | 
					; CHECK: %arrayidx2 = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
 | 
				
			||||||
; CHECK: %float = uitofp i64 %indvar to float
 | 
					; CHECK: %float = uitofp i64 %indvar to float
 | 
				
			||||||
; CHECK: %scalar.loadarray = load float* %scalar.s2a
 | 
					; CHECK: %scalar.loadarray = load float* %scalar.s2a
 | 
				
			||||||
; CHECK: %sum = fadd float %scalar.loadarray, %float
 | 
					; CHECK: %sum = fadd float %scalar.loadarray, %float
 | 
				
			||||||
| 
						 | 
					@ -119,7 +119,7 @@ for.body.b:
 | 
				
			||||||
; CHECK: br label %for.inc
 | 
					; CHECK: br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; SCALARACCESS: for.body.b:
 | 
					; SCALARACCESS: for.body.b:
 | 
				
			||||||
; SCALARACCESS: %arrayidx2 = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
 | 
					; SCALARACCESS: %arrayidx2 = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
 | 
				
			||||||
; SCALARACCESS: %float = uitofp i64 %indvar to float
 | 
					; SCALARACCESS: %float = uitofp i64 %indvar to float
 | 
				
			||||||
; SCALARACCESS-NOT: load
 | 
					; SCALARACCESS-NOT: load
 | 
				
			||||||
; SCALARACCESS: %sum = fadd float %scalar, %float
 | 
					; SCALARACCESS: %sum = fadd float %scalar, %float
 | 
				
			||||||
| 
						 | 
					@ -159,7 +159,7 @@ for.head:
 | 
				
			||||||
  br label %for.body
 | 
					  br label %for.body
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:
 | 
					for.body:
 | 
				
			||||||
  %arrayidx = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
 | 
					  %arrayidx = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
 | 
				
			||||||
  %scalar = load float* %arrayidx
 | 
					  %scalar = load float* %arrayidx
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -219,7 +219,7 @@ for.cond:
 | 
				
			||||||
  br i1 %exitcond, label %for.body, label %return
 | 
					  br i1 %exitcond, label %for.body, label %return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:
 | 
					for.body:
 | 
				
			||||||
  %arrayidx = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
 | 
					  %arrayidx = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
 | 
				
			||||||
  store float %scalar, float* %arrayidx
 | 
					  store float %scalar, float* %arrayidx
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -253,7 +253,7 @@ for.cond:
 | 
				
			||||||
  br i1 %exitcond, label %for.body, label %return
 | 
					  br i1 %exitcond, label %for.body, label %return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:
 | 
					for.body:
 | 
				
			||||||
  %arrayidx = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
 | 
					  %arrayidx = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
 | 
				
			||||||
  store float %scalar, float* %arrayidx
 | 
					  store float %scalar, float* %arrayidx
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,7 +21,7 @@ for.cond:                                         ; preds = %for.inc, %entry
 | 
				
			||||||
  br i1 %exitcond3, label %for.body, label %for.end
 | 
					  br i1 %exitcond3, label %for.body, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.cond
 | 
					for.body:                                         ; preds = %for.cond
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i64 %indvars.iv1
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv1
 | 
				
			||||||
  store i32 1, i32* %arrayidx, align 4
 | 
					  store i32 1, i32* %arrayidx, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,10 +38,10 @@ for.cond2:                                        ; preds = %for.inc9, %for.end
 | 
				
			||||||
  br i1 %exitcond, label %for.body4, label %for.end11
 | 
					  br i1 %exitcond, label %for.body4, label %for.end11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body4:                                        ; preds = %for.cond2
 | 
					for.body4:                                        ; preds = %for.cond2
 | 
				
			||||||
  %arrayidx6 = getelementptr inbounds i32* %A, i64 %indvars.iv
 | 
					  %arrayidx6 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
 | 
				
			||||||
  %tmp = load i32* %arrayidx6, align 4
 | 
					  %tmp = load i32* %arrayidx6, align 4
 | 
				
			||||||
  %mul = shl nsw i32 %tmp, 1
 | 
					  %mul = shl nsw i32 %tmp, 1
 | 
				
			||||||
  %arrayidx8 = getelementptr inbounds i32* %A, i64 %indvars.iv
 | 
					  %arrayidx8 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
 | 
				
			||||||
  store i32 %mul, i32* %arrayidx8, align 4
 | 
					  store i32 %mul, i32* %arrayidx8, align 4
 | 
				
			||||||
  br label %for.inc9
 | 
					  br label %for.inc9
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,7 @@ loop.j:
 | 
				
			||||||
  br i1 %exitcond.j, label %loop.body, label %loop.i.backedge
 | 
					  br i1 %exitcond.j, label %loop.body, label %loop.i.backedge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
loop.body:
 | 
					loop.body:
 | 
				
			||||||
  %scevgep = getelementptr [1024 x [1024 x i32] ]* @A, i64 0, i64 %j, i64 %i
 | 
					  %scevgep = getelementptr [1024 x [1024 x i32] ], [1024 x [1024 x i32] ]* @A, i64 0, i64 %j, i64 %i
 | 
				
			||||||
  store i32 1, i32* %scevgep
 | 
					  store i32 1, i32* %scevgep
 | 
				
			||||||
  br label %loop.j.backedge
 | 
					  br label %loop.j.backedge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,7 +24,7 @@ loop.j:
 | 
				
			||||||
  br i1 %exitcond.j, label %loop.body, label %loop.i.backedge
 | 
					  br i1 %exitcond.j, label %loop.body, label %loop.i.backedge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
loop.body:
 | 
					loop.body:
 | 
				
			||||||
  %scevgep = getelementptr [1024 x [1024 x i32] ]* @A, i64 0, i64 %j, i64 %i
 | 
					  %scevgep = getelementptr [1024 x [1024 x i32] ], [1024 x [1024 x i32] ]* @A, i64 0, i64 %j, i64 %i
 | 
				
			||||||
  store i32 1, i32* %scevgep
 | 
					  store i32 1, i32* %scevgep
 | 
				
			||||||
  br label %loop.j.backedge
 | 
					  br label %loop.j.backedge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,7 @@ loop.j:
 | 
				
			||||||
  br i1 %exitcond.j, label %loop.body, label %loop.i.backedge
 | 
					  br i1 %exitcond.j, label %loop.body, label %loop.i.backedge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
loop.body:
 | 
					loop.body:
 | 
				
			||||||
  %scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %j
 | 
					  %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %j
 | 
				
			||||||
  store i32 1, i32* %scevgep
 | 
					  store i32 1, i32* %scevgep
 | 
				
			||||||
  br label %loop.j.backedge
 | 
					  br label %loop.j.backedge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,7 @@ loop.j:
 | 
				
			||||||
  br i1 %exitcond.j, label %loop.body, label %loop.i.backedge
 | 
					  br i1 %exitcond.j, label %loop.body, label %loop.i.backedge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
loop.body:
 | 
					loop.body:
 | 
				
			||||||
  %scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %i
 | 
					  %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %i
 | 
				
			||||||
  store i32 1, i32* %scevgep
 | 
					  store i32 1, i32* %scevgep
 | 
				
			||||||
  br label %loop.j.backedge
 | 
					  br label %loop.j.backedge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,7 +13,7 @@ start:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
loop.header:
 | 
					loop.header:
 | 
				
			||||||
  %i = phi i64 [ 0, %start ], [ %i.next, %loop.backedge ]
 | 
					  %i = phi i64 [ 0, %start ], [ %i.next, %loop.backedge ]
 | 
				
			||||||
  %scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 0
 | 
					  %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 0
 | 
				
			||||||
  %exitcond = icmp ne i64 %i, %n
 | 
					  %exitcond = icmp ne i64 %i, %n
 | 
				
			||||||
  br i1 %exitcond, label %loop.body, label %ret
 | 
					  br i1 %exitcond, label %loop.body, label %ret
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,7 +13,7 @@ start:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
loop.header:
 | 
					loop.header:
 | 
				
			||||||
  %i = phi i64 [ 0, %start ], [ %i.next, %loop.backedge ]
 | 
					  %i = phi i64 [ 0, %start ], [ %i.next, %loop.backedge ]
 | 
				
			||||||
  %scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %i
 | 
					  %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %i
 | 
				
			||||||
  %exitcond = icmp ne i64 %i, %n
 | 
					  %exitcond = icmp ne i64 %i, %n
 | 
				
			||||||
  br i1 %exitcond, label %loop.body, label %ret
 | 
					  br i1 %exitcond, label %loop.body, label %ret
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,7 +13,7 @@ start:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
loop.header:
 | 
					loop.header:
 | 
				
			||||||
  %i = phi i64 [ 0, %start ], [ %i.next, %loop.backedge ]
 | 
					  %i = phi i64 [ 0, %start ], [ %i.next, %loop.backedge ]
 | 
				
			||||||
  %scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %i
 | 
					  %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %i
 | 
				
			||||||
  %exitcond = icmp ne i64 %i, %n
 | 
					  %exitcond = icmp ne i64 %i, %n
 | 
				
			||||||
  br i1 %exitcond, label %loop.body, label %ret
 | 
					  br i1 %exitcond, label %loop.body, label %ret
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,10 +32,10 @@ for.body.preheader:                               ; preds = %entry
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.body.preheader, %for.body
 | 
					for.body:                                         ; preds = %for.body.preheader, %for.body
 | 
				
			||||||
  %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %for.body.preheader ]
 | 
					  %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %for.body.preheader ]
 | 
				
			||||||
  %arrayidx = getelementptr inbounds float* %B, i64 %indvars.iv
 | 
					  %arrayidx = getelementptr inbounds float, float* %B, i64 %indvars.iv
 | 
				
			||||||
  %tmp = load float* %arrayidx, align 4, !tbaa !1
 | 
					  %tmp = load float* %arrayidx, align 4, !tbaa !1
 | 
				
			||||||
  %conv = fptosi float %tmp to i32
 | 
					  %conv = fptosi float %tmp to i32
 | 
				
			||||||
  %arrayidx2 = getelementptr inbounds [1024 x i32]* @A, i64 0, i64 %indvars.iv
 | 
					  %arrayidx2 = getelementptr inbounds [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvars.iv
 | 
				
			||||||
  store i32 %conv, i32* %arrayidx2, align 4, !tbaa !5
 | 
					  store i32 %conv, i32* %arrayidx2, align 4, !tbaa !5
 | 
				
			||||||
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
 | 
					  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
 | 
				
			||||||
  %lftr.wideiv1 = trunc i64 %indvars.iv.next to i32
 | 
					  %lftr.wideiv1 = trunc i64 %indvars.iv.next to i32
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,9 +33,9 @@ for.body.preheader:                               ; preds = %entry
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.body.preheader, %for.body
 | 
					for.body:                                         ; preds = %for.body.preheader, %for.body
 | 
				
			||||||
  %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %for.body.preheader ]
 | 
					  %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %for.body.preheader ]
 | 
				
			||||||
  %arrayidx = getelementptr inbounds  [1024 x i32]* @B, i64 0, i64 %indvars.iv
 | 
					  %arrayidx = getelementptr inbounds  [1024 x i32],  [1024 x i32]* @B, i64 0, i64 %indvars.iv
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4, !tbaa !5
 | 
					  %tmp = load i32* %arrayidx, align 4, !tbaa !5
 | 
				
			||||||
  %arrayidx2 = getelementptr inbounds [1024 x i32]* @A, i64 0, i64 %indvars.iv
 | 
					  %arrayidx2 = getelementptr inbounds [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvars.iv
 | 
				
			||||||
  store i32 %tmp, i32* %arrayidx2, align 4, !tbaa !5
 | 
					  store i32 %tmp, i32* %arrayidx2, align 4, !tbaa !5
 | 
				
			||||||
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
 | 
					  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
 | 
				
			||||||
  %lftr.wideiv1 = trunc i64 %indvars.iv.next to i32
 | 
					  %lftr.wideiv1 = trunc i64 %indvars.iv.next to i32
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,10 +33,10 @@ for.body.preheader:                               ; preds = %entry
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.body.preheader, %for.body
 | 
					for.body:                                         ; preds = %for.body.preheader, %for.body
 | 
				
			||||||
  %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %for.body.preheader ]
 | 
					  %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %for.body.preheader ]
 | 
				
			||||||
  %arrayidx = getelementptr inbounds  [1024 x float]* @B, i64 0, i64 %indvars.iv
 | 
					  %arrayidx = getelementptr inbounds  [1024 x float],  [1024 x float]* @B, i64 0, i64 %indvars.iv
 | 
				
			||||||
  %tmp = load float* %arrayidx, align 4, !tbaa !1
 | 
					  %tmp = load float* %arrayidx, align 4, !tbaa !1
 | 
				
			||||||
  %conv = fptosi float %tmp to i32
 | 
					  %conv = fptosi float %tmp to i32
 | 
				
			||||||
  %arrayidx2 = getelementptr inbounds [1024 x i32]* @A, i64 0, i64 %indvars.iv
 | 
					  %arrayidx2 = getelementptr inbounds [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvars.iv
 | 
				
			||||||
  store i32 %conv, i32* %arrayidx2, align 4, !tbaa !5
 | 
					  store i32 %conv, i32* %arrayidx2, align 4, !tbaa !5
 | 
				
			||||||
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
 | 
					  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
 | 
				
			||||||
  %lftr.wideiv1 = trunc i64 %indvars.iv.next to i32
 | 
					  %lftr.wideiv1 = trunc i64 %indvars.iv.next to i32
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,13 +29,13 @@ entry:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.body, %entry
 | 
					for.body:                                         ; preds = %for.body, %entry
 | 
				
			||||||
  %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
 | 
					  %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %Int1, i64 %indvars.iv
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %Int1, i64 %indvars.iv
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4, !tbaa !0
 | 
					  %tmp = load i32* %arrayidx, align 4, !tbaa !0
 | 
				
			||||||
  %arrayidx2 = getelementptr inbounds i32* %Int0, i64 %indvars.iv
 | 
					  %arrayidx2 = getelementptr inbounds i32, i32* %Int0, i64 %indvars.iv
 | 
				
			||||||
  store i32 %tmp, i32* %arrayidx2, align 4, !tbaa !0
 | 
					  store i32 %tmp, i32* %arrayidx2, align 4, !tbaa !0
 | 
				
			||||||
  %arrayidx4 = getelementptr inbounds float* %Float1, i64 %indvars.iv
 | 
					  %arrayidx4 = getelementptr inbounds float, float* %Float1, i64 %indvars.iv
 | 
				
			||||||
  %tmp1 = load float* %arrayidx4, align 4, !tbaa !4
 | 
					  %tmp1 = load float* %arrayidx4, align 4, !tbaa !4
 | 
				
			||||||
  %arrayidx6 = getelementptr inbounds float* %Float0, i64 %indvars.iv
 | 
					  %arrayidx6 = getelementptr inbounds float, float* %Float0, i64 %indvars.iv
 | 
				
			||||||
  store float %tmp1, float* %arrayidx6, align 4, !tbaa !4
 | 
					  store float %tmp1, float* %arrayidx6, align 4, !tbaa !4
 | 
				
			||||||
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
 | 
					  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
 | 
				
			||||||
  %exitcond = icmp eq i64 %indvars.iv.next, 1024
 | 
					  %exitcond = icmp eq i64 %indvars.iv.next, 1024
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,9 +24,9 @@ for.cond:                                         ; preds = %for.inc, %entry
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.cond
 | 
					for.body:                                         ; preds = %for.cond
 | 
				
			||||||
  %idxprom = sext i32 %c to i64
 | 
					  %idxprom = sext i32 %c to i64
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %B, i64 %idxprom
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %B, i64 %idxprom
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %arrayidx2 = getelementptr inbounds i32* %A, i64 %indvars.iv
 | 
					  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
 | 
				
			||||||
  store i32 %tmp, i32* %arrayidx2, align 4
 | 
					  store i32 %tmp, i32* %arrayidx2, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,12 +25,12 @@ for.cond:                                         ; preds = %for.inc, %entry
 | 
				
			||||||
for.body:                                         ; preds = %for.cond
 | 
					for.body:                                         ; preds = %for.cond
 | 
				
			||||||
  %sub = add nsw i32 %c, -10
 | 
					  %sub = add nsw i32 %c, -10
 | 
				
			||||||
  %idxprom = sext i32 %sub to i64
 | 
					  %idxprom = sext i32 %sub to i64
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %B, i64 %idxprom
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %B, i64 %idxprom
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %arrayidx1 = getelementptr inbounds i32* %B, i64 5
 | 
					  %arrayidx1 = getelementptr inbounds i32, i32* %B, i64 5
 | 
				
			||||||
  %tmp1 = load i32* %arrayidx1, align 4
 | 
					  %tmp1 = load i32* %arrayidx1, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, %tmp1
 | 
					  %add = add nsw i32 %tmp, %tmp1
 | 
				
			||||||
  %arrayidx3 = getelementptr inbounds i32* %A, i64 %indvars.iv
 | 
					  %arrayidx3 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
 | 
				
			||||||
  store i32 %add, i32* %arrayidx3, align 4
 | 
					  store i32 %add, i32* %arrayidx3, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,11 +28,11 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 | 
				
			||||||
  br i1 %exitcond, label %for.body3, label %for.end
 | 
					  br i1 %exitcond, label %for.body3, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body3:                                        ; preds = %for.cond1
 | 
					for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, 1
 | 
					  %add = add nsw i32 %tmp, 1
 | 
				
			||||||
  %add4 = add nsw i32 %i.0, 8
 | 
					  %add4 = add nsw i32 %i.0, 8
 | 
				
			||||||
  %arrayidx5 = getelementptr inbounds i32* %A, i32 %add4
 | 
					  %arrayidx5 = getelementptr inbounds i32, i32* %A, i32 %add4
 | 
				
			||||||
  store i32 %add, i32* %arrayidx5, align 4
 | 
					  store i32 %add, i32* %arrayidx5, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,17 +20,17 @@ for.cond:                                         ; preds = %for.inc, %entry
 | 
				
			||||||
  br i1 %cmp, label %for.body, label %for.end
 | 
					  br i1 %cmp, label %for.body, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.cond
 | 
					for.body:                                         ; preds = %for.cond
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, 1
 | 
					  %add = add nsw i32 %tmp, 1
 | 
				
			||||||
  %add1 = add nsw i32 %i.0, 7
 | 
					  %add1 = add nsw i32 %i.0, 7
 | 
				
			||||||
  %arrayidx2 = getelementptr inbounds i32* %A, i32 %add1
 | 
					  %arrayidx2 = getelementptr inbounds i32, i32* %A, i32 %add1
 | 
				
			||||||
  store i32 %add, i32* %arrayidx2, align 4
 | 
					  store i32 %add, i32* %arrayidx2, align 4
 | 
				
			||||||
  %arrayidx3 = getelementptr inbounds i32* %B, i32 %i.0
 | 
					  %arrayidx3 = getelementptr inbounds i32, i32* %B, i32 %i.0
 | 
				
			||||||
  %tmp1 = load i32* %arrayidx3, align 4
 | 
					  %tmp1 = load i32* %arrayidx3, align 4
 | 
				
			||||||
  %add4 = add nsw i32 %tmp1, 1
 | 
					  %add4 = add nsw i32 %tmp1, 1
 | 
				
			||||||
  %add5 = add nsw i32 %i.0, 5
 | 
					  %add5 = add nsw i32 %i.0, 5
 | 
				
			||||||
  %arrayidx6 = getelementptr inbounds i32* %B, i32 %add5
 | 
					  %arrayidx6 = getelementptr inbounds i32, i32* %B, i32 %add5
 | 
				
			||||||
  store i32 %add4, i32* %arrayidx6, align 4
 | 
					  store i32 %add4, i32* %arrayidx6, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,11 +28,11 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 | 
				
			||||||
  br i1 %exitcond, label %for.body3, label %for.end
 | 
					  br i1 %exitcond, label %for.body3, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body3:                                        ; preds = %for.cond1
 | 
					for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, 1
 | 
					  %add = add nsw i32 %tmp, 1
 | 
				
			||||||
  %add4 = add nsw i32 %i.0, %c
 | 
					  %add4 = add nsw i32 %i.0, %c
 | 
				
			||||||
  %arrayidx5 = getelementptr inbounds i32* %A, i32 %add4
 | 
					  %arrayidx5 = getelementptr inbounds i32, i32* %A, i32 %add4
 | 
				
			||||||
  store i32 %add, i32* %arrayidx5, align 4
 | 
					  store i32 %add, i32* %arrayidx5, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,12 +28,12 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 | 
				
			||||||
  br i1 %exitcond, label %for.body3, label %for.end
 | 
					  br i1 %exitcond, label %for.body3, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body3:                                        ; preds = %for.cond1
 | 
					for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, 1
 | 
					  %add = add nsw i32 %tmp, 1
 | 
				
			||||||
  %add4 = add nsw i32 %i.0, %c
 | 
					  %add4 = add nsw i32 %i.0, %c
 | 
				
			||||||
  %add5 = add nsw i32 %add4, %v
 | 
					  %add5 = add nsw i32 %add4, %v
 | 
				
			||||||
  %arrayidx6 = getelementptr inbounds i32* %A, i32 %add5
 | 
					  %arrayidx6 = getelementptr inbounds i32, i32* %A, i32 %add5
 | 
				
			||||||
  store i32 %add, i32* %arrayidx6, align 4
 | 
					  store i32 %add, i32* %arrayidx6, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,10 +19,10 @@ for.cond:                                         ; preds = %for.inc, %entry
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.cond
 | 
					for.body:                                         ; preds = %for.cond
 | 
				
			||||||
  %sub = sub nsw i32 %N, %i.0
 | 
					  %sub = sub nsw i32 %N, %i.0
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %sub
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %sub
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, 1
 | 
					  %add = add nsw i32 %tmp, 1
 | 
				
			||||||
  %arrayidx1 = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx1 = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  store i32 %add, i32* %arrayidx1, align 4
 | 
					  store i32 %add, i32* %arrayidx1, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,12 +28,12 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 | 
				
			||||||
  br i1 %exitcond, label %for.body3, label %for.end
 | 
					  br i1 %exitcond, label %for.body3, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body3:                                        ; preds = %for.cond1
 | 
					for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %j.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %j.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = mul nsw i32 %tmp, 3
 | 
					  %add = mul nsw i32 %tmp, 3
 | 
				
			||||||
  %add5 = add nsw i32 %add, 2
 | 
					  %add5 = add nsw i32 %add, 2
 | 
				
			||||||
  %sub = add nsw i32 %i.0, -3
 | 
					  %sub = add nsw i32 %i.0, -3
 | 
				
			||||||
  %arrayidx6 = getelementptr inbounds i32* %A, i32 %sub
 | 
					  %arrayidx6 = getelementptr inbounds i32, i32* %A, i32 %sub
 | 
				
			||||||
  store i32 %add5, i32* %arrayidx6, align 4
 | 
					  store i32 %add5, i32* %arrayidx6, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,38 +26,38 @@ for.cond:                                         ; preds = %for.inc, %entry
 | 
				
			||||||
for.body:                                         ; preds = %for.cond
 | 
					for.body:                                         ; preds = %for.cond
 | 
				
			||||||
  %mul = shl nsw i32 %i.0, 1
 | 
					  %mul = shl nsw i32 %i.0, 1
 | 
				
			||||||
  %sub = sub nsw i32 100, %mul
 | 
					  %sub = sub nsw i32 100, %mul
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %sub
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %sub
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, 1
 | 
					  %add = add nsw i32 %tmp, 1
 | 
				
			||||||
  %arrayidx1 = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx1 = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  store i32 %add, i32* %arrayidx1, align 4
 | 
					  store i32 %add, i32* %arrayidx1, align 4
 | 
				
			||||||
  %tmp1 = mul i32 %i.0, -3
 | 
					  %tmp1 = mul i32 %i.0, -3
 | 
				
			||||||
  %sub3 = add i32 %tmp1, 100
 | 
					  %sub3 = add i32 %tmp1, 100
 | 
				
			||||||
  %arrayidx4 = getelementptr inbounds i32* %B, i32 %sub3
 | 
					  %arrayidx4 = getelementptr inbounds i32, i32* %B, i32 %sub3
 | 
				
			||||||
  %tmp2 = load i32* %arrayidx4, align 4
 | 
					  %tmp2 = load i32* %arrayidx4, align 4
 | 
				
			||||||
  %add5 = add nsw i32 %tmp2, 1
 | 
					  %add5 = add nsw i32 %tmp2, 1
 | 
				
			||||||
  %arrayidx6 = getelementptr inbounds i32* %B, i32 %i.0
 | 
					  %arrayidx6 = getelementptr inbounds i32, i32* %B, i32 %i.0
 | 
				
			||||||
  store i32 %add5, i32* %arrayidx6, align 4
 | 
					  store i32 %add5, i32* %arrayidx6, align 4
 | 
				
			||||||
  %mul7 = shl nsw i32 %i.0, 2
 | 
					  %mul7 = shl nsw i32 %i.0, 2
 | 
				
			||||||
  %sub8 = sub nsw i32 100, %mul7
 | 
					  %sub8 = sub nsw i32 100, %mul7
 | 
				
			||||||
  %arrayidx9 = getelementptr inbounds i32* %C, i32 %sub8
 | 
					  %arrayidx9 = getelementptr inbounds i32, i32* %C, i32 %sub8
 | 
				
			||||||
  %tmp3 = load i32* %arrayidx9, align 4
 | 
					  %tmp3 = load i32* %arrayidx9, align 4
 | 
				
			||||||
  %add10 = add nsw i32 %tmp3, 1
 | 
					  %add10 = add nsw i32 %tmp3, 1
 | 
				
			||||||
  %arrayidx11 = getelementptr inbounds i32* %C, i32 %i.0
 | 
					  %arrayidx11 = getelementptr inbounds i32, i32* %C, i32 %i.0
 | 
				
			||||||
  store i32 %add10, i32* %arrayidx11, align 4
 | 
					  store i32 %add10, i32* %arrayidx11, align 4
 | 
				
			||||||
  %tmp4 = mul i32 %i.0, -5
 | 
					  %tmp4 = mul i32 %i.0, -5
 | 
				
			||||||
  %sub13 = add i32 %tmp4, 100
 | 
					  %sub13 = add i32 %tmp4, 100
 | 
				
			||||||
  %arrayidx14 = getelementptr inbounds i32* %D, i32 %sub13
 | 
					  %arrayidx14 = getelementptr inbounds i32, i32* %D, i32 %sub13
 | 
				
			||||||
  %tmp5 = load i32* %arrayidx14, align 4
 | 
					  %tmp5 = load i32* %arrayidx14, align 4
 | 
				
			||||||
  %add15 = add nsw i32 %tmp5, 1
 | 
					  %add15 = add nsw i32 %tmp5, 1
 | 
				
			||||||
  %arrayidx16 = getelementptr inbounds i32* %D, i32 %i.0
 | 
					  %arrayidx16 = getelementptr inbounds i32, i32* %D, i32 %i.0
 | 
				
			||||||
  store i32 %add15, i32* %arrayidx16, align 4
 | 
					  store i32 %add15, i32* %arrayidx16, align 4
 | 
				
			||||||
  %tmp6 = mul i32 %i.0, -6
 | 
					  %tmp6 = mul i32 %i.0, -6
 | 
				
			||||||
  %sub18 = add i32 %tmp6, 100
 | 
					  %sub18 = add i32 %tmp6, 100
 | 
				
			||||||
  %arrayidx19 = getelementptr inbounds i32* %E, i32 %sub18
 | 
					  %arrayidx19 = getelementptr inbounds i32, i32* %E, i32 %sub18
 | 
				
			||||||
  %tmp7 = load i32* %arrayidx19, align 4
 | 
					  %tmp7 = load i32* %arrayidx19, align 4
 | 
				
			||||||
  %add20 = add nsw i32 %tmp7, 1
 | 
					  %add20 = add nsw i32 %tmp7, 1
 | 
				
			||||||
  %arrayidx21 = getelementptr inbounds i32* %E, i32 %i.0
 | 
					  %arrayidx21 = getelementptr inbounds i32, i32* %E, i32 %i.0
 | 
				
			||||||
  store i32 %add20, i32* %arrayidx21, align 4
 | 
					  store i32 %add20, i32* %arrayidx21, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,7 +39,7 @@ for.cond4:                                        ; preds = %for.inc, %for.body3
 | 
				
			||||||
for.body6:                                        ; preds = %for.cond4
 | 
					for.body6:                                        ; preds = %for.cond4
 | 
				
			||||||
  %tmp = mul nsw i32 %j.0, %M
 | 
					  %tmp = mul nsw i32 %j.0, %M
 | 
				
			||||||
  %arrayidx.sum = add i32 %tmp, %k.0
 | 
					  %arrayidx.sum = add i32 %tmp, %k.0
 | 
				
			||||||
  %arrayidx7 = getelementptr inbounds i32* %sum, i32 %arrayidx.sum
 | 
					  %arrayidx7 = getelementptr inbounds i32, i32* %sum, i32 %arrayidx.sum
 | 
				
			||||||
  %tmp1 = load i32* %arrayidx7, align 4
 | 
					  %tmp1 = load i32* %arrayidx7, align 4
 | 
				
			||||||
  %xor = xor i32 %tmp1, %j.0
 | 
					  %xor = xor i32 %tmp1, %j.0
 | 
				
			||||||
  store i32 %xor, i32* %arrayidx7, align 4
 | 
					  store i32 %xor, i32* %arrayidx7, align 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,7 +28,7 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 | 
				
			||||||
  br i1 %cmp2, label %for.body3, label %for.end
 | 
					  br i1 %cmp2, label %for.body3, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body3:                                        ; preds = %for.cond1
 | 
					for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %sum, i32 %j.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %sum, i32 %j.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %xor = xor i32 %tmp, %j.0
 | 
					  %xor = xor i32 %tmp, %j.0
 | 
				
			||||||
  store i32 %xor, i32* %arrayidx, align 4
 | 
					  store i32 %xor, i32* %arrayidx, align 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,20 +28,20 @@ for.cond:                                         ; preds = %for.inc, %entry
 | 
				
			||||||
  br i1 %exitcond, label %for.body, label %for.end
 | 
					  br i1 %exitcond, label %for.body, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.cond
 | 
					for.body:                                         ; preds = %for.cond
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %sub = add nsw i32 %i.0, -1
 | 
					  %sub = add nsw i32 %i.0, -1
 | 
				
			||||||
  %arrayidx1 = getelementptr inbounds i32* %A, i32 %sub
 | 
					  %arrayidx1 = getelementptr inbounds i32, i32* %A, i32 %sub
 | 
				
			||||||
  %tmp1 = load i32* %arrayidx1, align 4
 | 
					  %tmp1 = load i32* %arrayidx1, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, %tmp1
 | 
					  %add = add nsw i32 %tmp, %tmp1
 | 
				
			||||||
  %arrayidx2 = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx2 = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  store i32 %add, i32* %arrayidx2, align 4
 | 
					  store i32 %add, i32* %arrayidx2, align 4
 | 
				
			||||||
  %sub4 = add nsw i32 %i.0, -2
 | 
					  %sub4 = add nsw i32 %i.0, -2
 | 
				
			||||||
  %arrayidx5 = getelementptr inbounds i32* %A, i32 %sub4
 | 
					  %arrayidx5 = getelementptr inbounds i32, i32* %A, i32 %sub4
 | 
				
			||||||
  %tmp2 = load i32* %arrayidx5, align 4
 | 
					  %tmp2 = load i32* %arrayidx5, align 4
 | 
				
			||||||
  %add6 = add nsw i32 %add, %tmp2
 | 
					  %add6 = add nsw i32 %add, %tmp2
 | 
				
			||||||
  %sub7 = add nsw i32 %i.0, -1
 | 
					  %sub7 = add nsw i32 %i.0, -1
 | 
				
			||||||
  %arrayidx8 = getelementptr inbounds i32* %A, i32 %sub7
 | 
					  %arrayidx8 = getelementptr inbounds i32, i32* %A, i32 %sub7
 | 
				
			||||||
  store i32 %add6, i32* %arrayidx8, align 4
 | 
					  store i32 %add6, i32* %arrayidx8, align 4
 | 
				
			||||||
  %tmp3 = load i32* %sum, align 4
 | 
					  %tmp3 = load i32* %sum, align 4
 | 
				
			||||||
  %add9 = add nsw i32 %tmp3, %i.0
 | 
					  %add9 = add nsw i32 %tmp3, %i.0
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,7 +35,7 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 | 
				
			||||||
  br i1 %exitcond, label %for.body3, label %for.end
 | 
					  br i1 %exitcond, label %for.body3, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body3:                                        ; preds = %for.cond1
 | 
					for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, %i.0
 | 
					  %add = add nsw i32 %tmp, %i.0
 | 
				
			||||||
  store i32 %add, i32* %arrayidx, align 4
 | 
					  store i32 %add, i32* %arrayidx, align 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -52,7 +52,7 @@ for.body5:                                        ; preds = %for.cond2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S1:                                               ; preds = %for.body5
 | 
					S1:                                               ; preds = %for.body5
 | 
				
			||||||
  %add6 = add nsw i32 %i1.0, 1
 | 
					  %add6 = add nsw i32 %i1.0, 1
 | 
				
			||||||
  %arrayidx7 = getelementptr inbounds i32* %A, i32 %add6
 | 
					  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
 | 
				
			||||||
  store i32 1, i32* %arrayidx7, align 4
 | 
					  store i32 1, i32* %arrayidx7, align 4
 | 
				
			||||||
  br label %for.inc8
 | 
					  br label %for.inc8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -55,7 +55,7 @@ for.body5:                                        ; preds = %for.cond2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S1:                                               ; preds = %for.body5
 | 
					S1:                                               ; preds = %for.body5
 | 
				
			||||||
  %add6 = add nsw i32 %i1.0, 1
 | 
					  %add6 = add nsw i32 %i1.0, 1
 | 
				
			||||||
  %arrayidx7 = getelementptr inbounds i32* %A, i32 %add6
 | 
					  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
 | 
				
			||||||
  store i32 1, i32* %arrayidx7, align 4
 | 
					  store i32 1, i32* %arrayidx7, align 4
 | 
				
			||||||
  br label %for.inc8
 | 
					  br label %for.inc8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -62,7 +62,7 @@ for.body5:                                        ; preds = %for.cond2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S1:                                               ; preds = %for.body5
 | 
					S1:                                               ; preds = %for.body5
 | 
				
			||||||
  %add6 = add nsw i32 %i1.0, 1
 | 
					  %add6 = add nsw i32 %i1.0, 1
 | 
				
			||||||
  %arrayidx7 = getelementptr inbounds i32* %A, i32 %add6
 | 
					  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
 | 
				
			||||||
  store i32 1, i32* %arrayidx7, align 4
 | 
					  store i32 1, i32* %arrayidx7, align 4
 | 
				
			||||||
  br label %for.inc8
 | 
					  br label %for.inc8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -55,7 +55,7 @@ for.body5:                                        ; preds = %for.cond2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S1:                                               ; preds = %for.body5
 | 
					S1:                                               ; preds = %for.body5
 | 
				
			||||||
  %add6 = add nsw i32 %i1.0, 1
 | 
					  %add6 = add nsw i32 %i1.0, 1
 | 
				
			||||||
  %arrayidx7 = getelementptr inbounds i32* %A, i32 %add6
 | 
					  %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %add6
 | 
				
			||||||
  store i32 1, i32* %arrayidx7, align 4
 | 
					  store i32 1, i32* %arrayidx7, align 4
 | 
				
			||||||
  br label %for.inc8
 | 
					  br label %for.inc8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,7 +34,7 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 | 
				
			||||||
  br i1 %exitcond, label %for.body3, label %for.end
 | 
					  br i1 %exitcond, label %for.body3, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body3:                                        ; preds = %for.cond1
 | 
					for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, %i.0
 | 
					  %add = add nsw i32 %tmp, %i.0
 | 
				
			||||||
  store i32 %add, i32* %arrayidx, align 4
 | 
					  store i32 %add, i32* %arrayidx, align 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,7 +36,7 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 | 
				
			||||||
  br i1 %exitcond, label %for.body3, label %for.end
 | 
					  br i1 %exitcond, label %for.body3, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body3:                                        ; preds = %for.cond1
 | 
					for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, %i.0
 | 
					  %add = add nsw i32 %tmp, %i.0
 | 
				
			||||||
  store i32 %add, i32* %arrayidx, align 4
 | 
					  store i32 %add, i32* %arrayidx, align 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,7 +36,7 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 | 
				
			||||||
  br i1 %exitcond, label %for.body3, label %for.end
 | 
					  br i1 %exitcond, label %for.body3, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body3:                                        ; preds = %for.cond1
 | 
					for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, %i.0
 | 
					  %add = add nsw i32 %tmp, %i.0
 | 
				
			||||||
  store i32 %add, i32* %arrayidx, align 4
 | 
					  store i32 %add, i32* %arrayidx, align 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,7 +40,7 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 | 
				
			||||||
  br i1 %exitcond, label %for.body3, label %for.end
 | 
					  br i1 %exitcond, label %for.body3, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body3:                                        ; preds = %for.cond1
 | 
					for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, %i.0
 | 
					  %add = add nsw i32 %tmp, %i.0
 | 
				
			||||||
  store i32 %add, i32* %arrayidx, align 4
 | 
					  store i32 %add, i32* %arrayidx, align 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,7 +43,7 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 | 
				
			||||||
  br i1 %exitcond, label %for.body3, label %for.end
 | 
					  br i1 %exitcond, label %for.body3, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body3:                                        ; preds = %for.cond1
 | 
					for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, %i.0
 | 
					  %add = add nsw i32 %tmp, %i.0
 | 
				
			||||||
  store i32 %add, i32* %arrayidx, align 4
 | 
					  store i32 %add, i32* %arrayidx, align 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,7 +43,7 @@ for.cond4:                                        ; preds = %for.inc, %for.body3
 | 
				
			||||||
  br i1 %exitcond, label %for.body6, label %for.end
 | 
					  br i1 %exitcond, label %for.body6, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body6:                                        ; preds = %for.cond4
 | 
					for.body6:                                        ; preds = %for.cond4
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, %i.0
 | 
					  %add = add nsw i32 %tmp, %i.0
 | 
				
			||||||
  store i32 %add, i32* %arrayidx, align 4
 | 
					  store i32 %add, i32* %arrayidx, align 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,7 +43,7 @@ for.cond4:                                        ; preds = %for.inc, %for.body3
 | 
				
			||||||
  br i1 %exitcond, label %for.body6, label %for.end
 | 
					  br i1 %exitcond, label %for.body6, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body6:                                        ; preds = %for.cond4
 | 
					for.body6:                                        ; preds = %for.cond4
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, %i.0
 | 
					  %add = add nsw i32 %tmp, %i.0
 | 
				
			||||||
  store i32 %add, i32* %arrayidx, align 4
 | 
					  store i32 %add, i32* %arrayidx, align 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,7 +43,7 @@ for.cond4:                                        ; preds = %for.inc, %for.body3
 | 
				
			||||||
  br i1 %exitcond, label %for.body6, label %for.end
 | 
					  br i1 %exitcond, label %for.body6, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body6:                                        ; preds = %for.cond4
 | 
					for.body6:                                        ; preds = %for.cond4
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, %i.0
 | 
					  %add = add nsw i32 %tmp, %i.0
 | 
				
			||||||
  store i32 %add, i32* %arrayidx, align 4
 | 
					  store i32 %add, i32* %arrayidx, align 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,7 +43,7 @@ for.cond4:                                        ; preds = %for.inc, %for.body3
 | 
				
			||||||
  br i1 %exitcond, label %for.body6, label %for.end
 | 
					  br i1 %exitcond, label %for.body6, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body6:                                        ; preds = %for.cond4
 | 
					for.body6:                                        ; preds = %for.cond4
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i32 %i.0
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
 | 
				
			||||||
  %tmp = load i32* %arrayidx, align 4
 | 
					  %tmp = load i32* %arrayidx, align 4
 | 
				
			||||||
  %add = add nsw i32 %tmp, %i.0
 | 
					  %add = add nsw i32 %tmp, %i.0
 | 
				
			||||||
  store i32 %add, i32* %arrayidx, align 4
 | 
					  store i32 %add, i32* %arrayidx, align 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,10 +16,10 @@ for.cond:                                         ; preds = %for.body, %entry
 | 
				
			||||||
  br i1 %cmp, label %for.body, label %for.end
 | 
					  br i1 %cmp, label %for.body, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.cond
 | 
					for.body:                                         ; preds = %for.cond
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i16* %B, i64 0
 | 
					  %arrayidx = getelementptr inbounds i16, i16* %B, i64 0
 | 
				
			||||||
  %load = load i16* %arrayidx
 | 
					  %load = load i16* %arrayidx
 | 
				
			||||||
  %add10 = add nsw i16 %load, 1
 | 
					  %add10 = add nsw i16 %load, 1
 | 
				
			||||||
  %arrayidx13 = getelementptr inbounds i16* %A, i64 %indvar
 | 
					  %arrayidx13 = getelementptr inbounds i16, i16* %A, i64 %indvar
 | 
				
			||||||
  store i16 %add10, i16* %arrayidx13, align 2
 | 
					  store i16 %add10, i16* %arrayidx13, align 2
 | 
				
			||||||
  %inc = add nsw i64 %indvar, 1
 | 
					  %inc = add nsw i64 %indvar, 1
 | 
				
			||||||
  br label %for.cond
 | 
					  br label %for.cond
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -54,7 +54,7 @@ for.j:
 | 
				
			||||||
  %subscript0 = mul i64 %offset0, %m
 | 
					  %subscript0 = mul i64 %offset0, %m
 | 
				
			||||||
  %offset1 = add nsw i64 %j, %q
 | 
					  %offset1 = add nsw i64 %j, %q
 | 
				
			||||||
  %subscript1 = add i64 %offset1, %subscript0
 | 
					  %subscript1 = add i64 %offset1, %subscript0
 | 
				
			||||||
  %idx = getelementptr inbounds double* %A, i64 %subscript1
 | 
					  %idx = getelementptr inbounds double, double* %A, i64 %subscript1
 | 
				
			||||||
  store double 1.0, double* %idx
 | 
					  store double 1.0, double* %idx
 | 
				
			||||||
  br label %for.j.inc
 | 
					  br label %for.j.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -79,7 +79,7 @@ for.j.1:
 | 
				
			||||||
  %offset1.1 = add nsw i64 %j.1, %q
 | 
					  %offset1.1 = add nsw i64 %j.1, %q
 | 
				
			||||||
  %subscript1.1 = add i64 %offset1.1, %subscript0.1
 | 
					  %subscript1.1 = add i64 %offset1.1, %subscript0.1
 | 
				
			||||||
  %subscript1.2 = sub i64 %subscript1.1, 100
 | 
					  %subscript1.2 = sub i64 %subscript1.1, 100
 | 
				
			||||||
  %idx.1 = getelementptr inbounds double* %A, i64 %subscript1.2
 | 
					  %idx.1 = getelementptr inbounds double, double* %A, i64 %subscript1.2
 | 
				
			||||||
  store double 1.0, double* %idx.1
 | 
					  store double 1.0, double* %idx.1
 | 
				
			||||||
  br label %for.j.inc.1
 | 
					  br label %for.j.inc.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,10 +17,10 @@ for.cond:                                         ; preds = %for.body, %entry
 | 
				
			||||||
  br i1 %cmp, label %for.body, label %for.end
 | 
					  br i1 %cmp, label %for.body, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.cond
 | 
					for.body:                                         ; preds = %for.cond
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i16* %B, i64 0
 | 
					  %arrayidx = getelementptr inbounds i16, i16* %B, i64 0
 | 
				
			||||||
  %load = load i16* %arrayidx
 | 
					  %load = load i16* %arrayidx
 | 
				
			||||||
  %add10 = add nsw i16 %load, 1
 | 
					  %add10 = add nsw i16 %load, 1
 | 
				
			||||||
  %arrayidx13 = getelementptr inbounds i16* %A, i64 %indvar
 | 
					  %arrayidx13 = getelementptr inbounds i16, i16* %A, i64 %indvar
 | 
				
			||||||
  store i16 %add10, i16* %arrayidx13, align 2
 | 
					  store i16 %add10, i16* %arrayidx13, align 2
 | 
				
			||||||
  %inc = add nsw i64 %indvar, 1
 | 
					  %inc = add nsw i64 %indvar, 1
 | 
				
			||||||
  br label %for.cond
 | 
					  br label %for.cond
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -37,44 +37,44 @@ bb32:                                             ; preds = %bb27
 | 
				
			||||||
  br label %bb37
 | 
					  br label %bb37
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bb34:                                             ; preds = %bb35
 | 
					bb34:                                             ; preds = %bb35
 | 
				
			||||||
  %0 = getelementptr inbounds [36 x double]* undef, i64 0, i64 0 ; <double*> [#uses=0]
 | 
					  %0 = getelementptr inbounds [36 x double], [36 x double]* undef, i64 0, i64 0 ; <double*> [#uses=0]
 | 
				
			||||||
  %1 = getelementptr inbounds [18 x [32 x double]]* undef, i64 0, i64 0 ; <[32 x double]*> [#uses=1]
 | 
					  %1 = getelementptr inbounds [18 x [32 x double]], [18 x [32 x double]]* undef, i64 0, i64 0 ; <[32 x double]*> [#uses=1]
 | 
				
			||||||
  %2 = getelementptr inbounds [32 x double]* %1, i64 0, i64 0 ; <double*> [#uses=0]
 | 
					  %2 = getelementptr inbounds [32 x double], [32 x double]* %1, i64 0, i64 0 ; <double*> [#uses=0]
 | 
				
			||||||
  %3 = getelementptr inbounds [36 x double]* undef, i64 0, i64 0 ; <double*> [#uses=0]
 | 
					  %3 = getelementptr inbounds [36 x double], [36 x double]* undef, i64 0, i64 0 ; <double*> [#uses=0]
 | 
				
			||||||
  %4 = sub nsw i32 17, %k.4                       ; <i32> [#uses=1]
 | 
					  %4 = sub nsw i32 17, %k.4                       ; <i32> [#uses=1]
 | 
				
			||||||
  %5 = getelementptr inbounds [2 x [2 x [18 x [32 x double]]]]* @sb_sample, i64 0, i64 0 ; <[2 x [18 x [32 x double]]]*> [#uses=1]
 | 
					  %5 = getelementptr inbounds [2 x [2 x [18 x [32 x double]]]], [2 x [2 x [18 x [32 x double]]]]* @sb_sample, i64 0, i64 0 ; <[2 x [18 x [32 x double]]]*> [#uses=1]
 | 
				
			||||||
  %6 = getelementptr inbounds [2 x [18 x [32 x double]]]* %5, i64 0, i64 0 ; <[18 x [32 x double]]*> [#uses=1]
 | 
					  %6 = getelementptr inbounds [2 x [18 x [32 x double]]], [2 x [18 x [32 x double]]]* %5, i64 0, i64 0 ; <[18 x [32 x double]]*> [#uses=1]
 | 
				
			||||||
  %7 = sext i32 %4 to i64                         ; <i64> [#uses=1]
 | 
					  %7 = sext i32 %4 to i64                         ; <i64> [#uses=1]
 | 
				
			||||||
  %8 = getelementptr inbounds [18 x [32 x double]]* %6, i64 0, i64 %7 ; <[32 x double]*> [#uses=1]
 | 
					  %8 = getelementptr inbounds [18 x [32 x double]], [18 x [32 x double]]* %6, i64 0, i64 %7 ; <[32 x double]*> [#uses=1]
 | 
				
			||||||
  %9 = getelementptr inbounds [32 x double]* %8, i64 0, i64 0 ; <double*> [#uses=1]
 | 
					  %9 = getelementptr inbounds [32 x double], [32 x double]* %8, i64 0, i64 0 ; <double*> [#uses=1]
 | 
				
			||||||
  %10 = load double* %9, align 8                  ; <double> [#uses=0]
 | 
					  %10 = load double* %9, align 8                  ; <double> [#uses=0]
 | 
				
			||||||
  %11 = fsub double 0.000000e+00, undef           ; <double> [#uses=1]
 | 
					  %11 = fsub double 0.000000e+00, undef           ; <double> [#uses=1]
 | 
				
			||||||
  %12 = getelementptr inbounds double* getelementptr inbounds ([4 x [36 x double]]* @win193, i64 0, i64 2, i64 4), i64 0 ; <double*> [#uses=1]
 | 
					  %12 = getelementptr inbounds double, double* getelementptr inbounds ([4 x [36 x double]]* @win193, i64 0, i64 2, i64 4), i64 0 ; <double*> [#uses=1]
 | 
				
			||||||
  store double %11, double* %12, align 8
 | 
					  store double %11, double* %12, align 8
 | 
				
			||||||
  %13 = add nsw i32 %k.4, 9                       ; <i32> [#uses=1]
 | 
					  %13 = add nsw i32 %k.4, 9                       ; <i32> [#uses=1]
 | 
				
			||||||
  %14 = add nsw i32 %k.4, 18                      ; <i32> [#uses=1]
 | 
					  %14 = add nsw i32 %k.4, 18                      ; <i32> [#uses=1]
 | 
				
			||||||
  %15 = getelementptr inbounds [4 x [36 x double]]* @win193, i64 0, i64 0 ; <[36 x double]*> [#uses=1]
 | 
					  %15 = getelementptr inbounds [4 x [36 x double]], [4 x [36 x double]]* @win193, i64 0, i64 0 ; <[36 x double]*> [#uses=1]
 | 
				
			||||||
  %16 = sext i32 %14 to i64                       ; <i64> [#uses=1]
 | 
					  %16 = sext i32 %14 to i64                       ; <i64> [#uses=1]
 | 
				
			||||||
  %17 = getelementptr inbounds [36 x double]* %15, i64 0, i64 %16 ; <double*> [#uses=1]
 | 
					  %17 = getelementptr inbounds [36 x double], [36 x double]* %15, i64 0, i64 %16 ; <double*> [#uses=1]
 | 
				
			||||||
  %18 = load double* %17, align 8                 ; <double> [#uses=0]
 | 
					  %18 = load double* %17, align 8                 ; <double> [#uses=0]
 | 
				
			||||||
  %19 = sext i32 %k.4 to i64                      ; <i64> [#uses=1]
 | 
					  %19 = sext i32 %k.4 to i64                      ; <i64> [#uses=1]
 | 
				
			||||||
  %20 = getelementptr inbounds [18 x [32 x double]]* undef, i64 0, i64 %19 ; <[32 x double]*> [#uses=1]
 | 
					  %20 = getelementptr inbounds [18 x [32 x double]], [18 x [32 x double]]* undef, i64 0, i64 %19 ; <[32 x double]*> [#uses=1]
 | 
				
			||||||
  %21 = sext i32 %band.2 to i64                   ; <i64> [#uses=1]
 | 
					  %21 = sext i32 %band.2 to i64                   ; <i64> [#uses=1]
 | 
				
			||||||
  %22 = getelementptr inbounds [32 x double]* %20, i64 0, i64 %21 ; <double*> [#uses=1]
 | 
					  %22 = getelementptr inbounds [32 x double], [32 x double]* %20, i64 0, i64 %21 ; <double*> [#uses=1]
 | 
				
			||||||
  %23 = load double* %22, align 8                 ; <double> [#uses=0]
 | 
					  %23 = load double* %22, align 8                 ; <double> [#uses=0]
 | 
				
			||||||
  %24 = sext i32 %39 to i64                       ; <i64> [#uses=1]
 | 
					  %24 = sext i32 %39 to i64                       ; <i64> [#uses=1]
 | 
				
			||||||
  %25 = getelementptr inbounds [4 x [36 x double]]* @win193, i64 0, i64 %24 ; <[36 x double]*> [#uses=1]
 | 
					  %25 = getelementptr inbounds [4 x [36 x double]], [4 x [36 x double]]* @win193, i64 0, i64 %24 ; <[36 x double]*> [#uses=1]
 | 
				
			||||||
  %26 = getelementptr inbounds [36 x double]* %25, i64 0, i64 0 ; <double*> [#uses=1]
 | 
					  %26 = getelementptr inbounds [36 x double], [36 x double]* %25, i64 0, i64 0 ; <double*> [#uses=1]
 | 
				
			||||||
  %27 = load double* %26, align 8                 ; <double> [#uses=0]
 | 
					  %27 = load double* %26, align 8                 ; <double> [#uses=0]
 | 
				
			||||||
  %28 = sub nsw i32 17, %k.4                      ; <i32> [#uses=1]
 | 
					  %28 = sub nsw i32 17, %k.4                      ; <i32> [#uses=1]
 | 
				
			||||||
  %29 = getelementptr inbounds [2 x [2 x [18 x [32 x double]]]]* @sb_sample, i64 0, i64 0 ; <[2 x [18 x [32 x double]]]*> [#uses=1]
 | 
					  %29 = getelementptr inbounds [2 x [2 x [18 x [32 x double]]]], [2 x [2 x [18 x [32 x double]]]]* @sb_sample, i64 0, i64 0 ; <[2 x [18 x [32 x double]]]*> [#uses=1]
 | 
				
			||||||
  %30 = getelementptr inbounds [2 x [18 x [32 x double]]]* %29, i64 0, i64 0 ; <[18 x [32 x double]]*> [#uses=1]
 | 
					  %30 = getelementptr inbounds [2 x [18 x [32 x double]]], [2 x [18 x [32 x double]]]* %29, i64 0, i64 0 ; <[18 x [32 x double]]*> [#uses=1]
 | 
				
			||||||
  %31 = sext i32 %28 to i64                       ; <i64> [#uses=1]
 | 
					  %31 = sext i32 %28 to i64                       ; <i64> [#uses=1]
 | 
				
			||||||
  %32 = getelementptr inbounds [18 x [32 x double]]* %30, i64 0, i64 %31 ; <[32 x double]*> [#uses=1]
 | 
					  %32 = getelementptr inbounds [18 x [32 x double]], [18 x [32 x double]]* %30, i64 0, i64 %31 ; <[32 x double]*> [#uses=1]
 | 
				
			||||||
  %33 = getelementptr inbounds [32 x double]* %32, i64 0, i64 0 ; <double*> [#uses=1]
 | 
					  %33 = getelementptr inbounds [32 x double], [32 x double]* %32, i64 0, i64 0 ; <double*> [#uses=1]
 | 
				
			||||||
  %34 = load double* %33, align 8                 ; <double> [#uses=0]
 | 
					  %34 = load double* %33, align 8                 ; <double> [#uses=0]
 | 
				
			||||||
  %35 = sext i32 %13 to i64                       ; <i64> [#uses=1]
 | 
					  %35 = sext i32 %13 to i64                       ; <i64> [#uses=1]
 | 
				
			||||||
  %36 = getelementptr inbounds double* getelementptr inbounds ([4 x [36 x double]]* @win193, i64 0, i64 2, i64 4), i64 %35 ; <double*> [#uses=1]
 | 
					  %36 = getelementptr inbounds double, double* getelementptr inbounds ([4 x [36 x double]]* @win193, i64 0, i64 2, i64 4), i64 %35 ; <double*> [#uses=1]
 | 
				
			||||||
  store double 0.000000e+00, double* %36, align 8
 | 
					  store double 0.000000e+00, double* %36, align 8
 | 
				
			||||||
  %37 = sub nsw i32 %k.4, 1                       ; <i32> [#uses=1]
 | 
					  %37 = sub nsw i32 %k.4, 1                       ; <i32> [#uses=1]
 | 
				
			||||||
  br label %bb35
 | 
					  br label %bb35
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,7 +26,7 @@ bb5:                                              ; preds = %bb4
 | 
				
			||||||
  unreachable
 | 
					  unreachable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bb6:                                              ; preds = %bb4
 | 
					bb6:                                              ; preds = %bb4
 | 
				
			||||||
  %1 = getelementptr inbounds i8* undef, i64 %0   ; <i8*> [#uses=0]
 | 
					  %1 = getelementptr inbounds i8, i8* undef, i64 %0   ; <i8*> [#uses=0]
 | 
				
			||||||
  ret void
 | 
					  ret void
 | 
				
			||||||
 | 
					
 | 
				
			||||||
return:                                           ; preds = %bb, %entry
 | 
					return:                                           ; preds = %bb, %entry
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,11 +11,11 @@ bb:                                               ; preds = %bb4
 | 
				
			||||||
  br label %bb2
 | 
					  br label %bb2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bb1:                                              ; preds = %bb2
 | 
					bb1:                                              ; preds = %bb2
 | 
				
			||||||
  %1 = getelementptr inbounds double** %A, i64 0  ; <double**> [#uses=0]
 | 
					  %1 = getelementptr inbounds double*, double** %A, i64 0  ; <double**> [#uses=0]
 | 
				
			||||||
  %2 = getelementptr inbounds double** %A, i64 0  ; <double**> [#uses=0]
 | 
					  %2 = getelementptr inbounds double*, double** %A, i64 0  ; <double**> [#uses=0]
 | 
				
			||||||
  %3 = getelementptr inbounds double** %A, i64 0  ; <double**> [#uses=0]
 | 
					  %3 = getelementptr inbounds double*, double** %A, i64 0  ; <double**> [#uses=0]
 | 
				
			||||||
  %4 = sext i32 %j.0 to i64                       ; <i64> [#uses=1]
 | 
					  %4 = sext i32 %j.0 to i64                       ; <i64> [#uses=1]
 | 
				
			||||||
  %5 = getelementptr inbounds double** %A, i64 %4 ; <double**> [#uses=1]
 | 
					  %5 = getelementptr inbounds double*, double** %A, i64 %4 ; <double**> [#uses=1]
 | 
				
			||||||
  %6 = load double** %5, align 8                  ; <double*> [#uses=0]
 | 
					  %6 = load double** %5, align 8                  ; <double*> [#uses=0]
 | 
				
			||||||
  %7 = add nsw i32 %j.0, 1                        ; <i32> [#uses=1]
 | 
					  %7 = add nsw i32 %j.0, 1                        ; <i32> [#uses=1]
 | 
				
			||||||
  br label %bb2
 | 
					  br label %bb2
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -37,7 +37,7 @@ define i32 @main() nounwind {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; <label>:1                                       ; preds = %12, %0
 | 
					; <label>:1                                       ; preds = %12, %0
 | 
				
			||||||
  %indvar = phi i64 [ %indvar.next, %12 ], [ 0, %0 ] ; <i64> [#uses=4]
 | 
					  %indvar = phi i64 [ %indvar.next, %12 ], [ 0, %0 ] ; <i64> [#uses=4]
 | 
				
			||||||
  %scevgep = getelementptr [100 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=3]
 | 
					  %scevgep = getelementptr [100 x i32], [100 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=3]
 | 
				
			||||||
  %i.0 = trunc i64 %indvar to i32                 ; <i32> [#uses=3]
 | 
					  %i.0 = trunc i64 %indvar to i32                 ; <i32> [#uses=3]
 | 
				
			||||||
  %exitcond = icmp ne i64 %indvar, 100            ; <i1> [#uses=1]
 | 
					  %exitcond = icmp ne i64 %indvar, 100            ; <i1> [#uses=1]
 | 
				
			||||||
  br i1 %exitcond, label %2, label %13
 | 
					  br i1 %exitcond, label %2, label %13
 | 
				
			||||||
| 
						 | 
					@ -76,7 +76,7 @@ define i32 @main() nounwind {
 | 
				
			||||||
; <label>:13                                      ; preds = %1
 | 
					; <label>:13                                      ; preds = %1
 | 
				
			||||||
  fence seq_cst
 | 
					  fence seq_cst
 | 
				
			||||||
  %14 = sext i32 undef to i64                     ; <i64> [#uses=1]
 | 
					  %14 = sext i32 undef to i64                     ; <i64> [#uses=1]
 | 
				
			||||||
  %15 = getelementptr inbounds i32* getelementptr inbounds ([100 x i32]* @A, i32 0, i32 0), i64 %14 ; <i32*> [#uses=1]
 | 
					  %15 = getelementptr inbounds i32, i32* getelementptr inbounds ([100 x i32]* @A, i32 0, i32 0), i64 %14 ; <i32*> [#uses=1]
 | 
				
			||||||
  %16 = load i32* %15                             ; <i32> [#uses=1]
 | 
					  %16 = load i32* %15                             ; <i32> [#uses=1]
 | 
				
			||||||
  ret i32 %16
 | 
					  ret i32 %16
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,7 +14,7 @@ bb20:                                             ; preds = %bb34
 | 
				
			||||||
  br i1 false, label %bb21, label %bb23
 | 
					  br i1 false, label %bb21, label %bb23
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bb21:                                             ; preds = %bb20
 | 
					bb21:                                             ; preds = %bb20
 | 
				
			||||||
  %0 = getelementptr inbounds [2 x float]* %x, i64 undef ; <[2 x float]*> [#uses=1]
 | 
					  %0 = getelementptr inbounds [2 x float], [2 x float]* %x, i64 undef ; <[2 x float]*> [#uses=1]
 | 
				
			||||||
  store [2 x float]* %0, [2 x float]** %d.1.reg2mem
 | 
					  store [2 x float]* %0, [2 x float]** %d.1.reg2mem
 | 
				
			||||||
  br label %bb23
 | 
					  br label %bb23
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,7 @@ bb23:                                             ; preds = %bb21, %bb20
 | 
				
			||||||
  br i1 undef, label %bb29, label %bb34
 | 
					  br i1 undef, label %bb29, label %bb34
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bb29:                                             ; preds = %bb23
 | 
					bb29:                                             ; preds = %bb23
 | 
				
			||||||
  %1 = getelementptr inbounds [2 x float]* %d.1.reload, i64 undef ; <[2 x float]*> [#uses=0]
 | 
					  %1 = getelementptr inbounds [2 x float], [2 x float]* %d.1.reload, i64 undef ; <[2 x float]*> [#uses=0]
 | 
				
			||||||
  br label %bb34
 | 
					  br label %bb34
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bb34:                                             ; preds = %bb29, %bb23, %entry
 | 
					bb34:                                             ; preds = %bb29, %bb23, %entry
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,7 @@ bb20:
 | 
				
			||||||
  br label %bb22
 | 
					  br label %bb22
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bb21:                                             ; preds = %bb22
 | 
					bb21:                                             ; preds = %bb22
 | 
				
			||||||
  %r_addr.1.moved.to.bb21 = getelementptr i16* %r, i64 0
 | 
					  %r_addr.1.moved.to.bb21 = getelementptr i16, i16* %r, i64 0
 | 
				
			||||||
  store i16 0, i16* %r_addr.1.moved.to.bb21, align 2
 | 
					  store i16 0, i16* %r_addr.1.moved.to.bb21, align 2
 | 
				
			||||||
  %indvar.next = add i64 %indvar, 1
 | 
					  %indvar.next = add i64 %indvar, 1
 | 
				
			||||||
  br label %bb22
 | 
					  br label %bb22
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,7 +18,7 @@ for.cond:                                         ; preds = %for.body, %entry
 | 
				
			||||||
  br i1 %cmp, label %for.body, label %for.end
 | 
					  br i1 %cmp, label %for.body, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.cond
 | 
					for.body:                                         ; preds = %for.cond
 | 
				
			||||||
  %arrayidx = getelementptr inbounds [2048 x i64]* @b, i64 0, i64 %indvar
 | 
					  %arrayidx = getelementptr inbounds [2048 x i64], [2048 x i64]* @b, i64 0, i64 %indvar
 | 
				
			||||||
  store i64 1, i64* %arrayidx
 | 
					  store i64 1, i64* %arrayidx
 | 
				
			||||||
  %inc = add nsw i64 %indvar, 1
 | 
					  %inc = add nsw i64 %indvar, 1
 | 
				
			||||||
  br label %for.cond
 | 
					  br label %for.cond
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@ entry:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.body, %entry
 | 
					for.body:                                         ; preds = %for.body, %entry
 | 
				
			||||||
  %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
 | 
					  %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %0, i64 %indvars.iv, !dbg !21
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %0, i64 %indvars.iv, !dbg !21
 | 
				
			||||||
  %1 = load i32* %arrayidx, align 4, !dbg !21, !tbaa !30
 | 
					  %1 = load i32* %arrayidx, align 4, !dbg !21, !tbaa !30
 | 
				
			||||||
  %add = add nsw i32 %1, 1, !dbg !21
 | 
					  %add = add nsw i32 %1, 1, !dbg !21
 | 
				
			||||||
  store i32 %add, i32* %arrayidx, align 4, !dbg !21, !tbaa !30
 | 
					  store i32 %add, i32* %arrayidx, align 4, !dbg !21, !tbaa !30
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,7 +43,7 @@ for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %tmp = add nsw i64 %indvars.iv3, %indvars.iv
 | 
					  %tmp = add nsw i64 %indvars.iv3, %indvars.iv
 | 
				
			||||||
  %tmp7 = shl nsw i64 %indvars.iv3, 9
 | 
					  %tmp7 = shl nsw i64 %indvars.iv3, 9
 | 
				
			||||||
  %tmp8 = add nsw i64 %tmp7, %indvars.iv
 | 
					  %tmp8 = add nsw i64 %tmp7, %indvars.iv
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i64 %tmp8
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %tmp8
 | 
				
			||||||
  %tmp9 = trunc i64 %tmp to i32
 | 
					  %tmp9 = trunc i64 %tmp to i32
 | 
				
			||||||
  store i32 %tmp9, i32* %arrayidx, align 4
 | 
					  store i32 %tmp9, i32* %arrayidx, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,7 +21,7 @@ loop.header:
 | 
				
			||||||
  br i1 %exitcond, label %loop.body, label %ret
 | 
					  br i1 %exitcond, label %loop.body, label %ret
 | 
				
			||||||
 | 
					
 | 
				
			||||||
loop.body:
 | 
					loop.body:
 | 
				
			||||||
  %scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %i
 | 
					  %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %i
 | 
				
			||||||
  store i32 1, i32* %scevgep
 | 
					  store i32 1, i32* %scevgep
 | 
				
			||||||
  br label %loop.backedge
 | 
					  br label %loop.backedge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -61,10 +61,10 @@ loop.header:
 | 
				
			||||||
loop.body:
 | 
					loop.body:
 | 
				
			||||||
  %loadoffset1 = mul nsw i64 %i, 2
 | 
					  %loadoffset1 = mul nsw i64 %i, 2
 | 
				
			||||||
  %loadoffset2 = add nsw i64 %loadoffset1, 1
 | 
					  %loadoffset2 = add nsw i64 %loadoffset1, 1
 | 
				
			||||||
  %scevgepload = getelementptr [1024 x i32]* @A, i64 0, i64 %loadoffset2
 | 
					  %scevgepload = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %loadoffset2
 | 
				
			||||||
  %val = load i32* %scevgepload
 | 
					  %val = load i32* %scevgepload
 | 
				
			||||||
  %storeoffset = mul i64 %i, 2
 | 
					  %storeoffset = mul i64 %i, 2
 | 
				
			||||||
  %scevgepstore = getelementptr [1024 x i32]* @A, i64 0, i64 %storeoffset
 | 
					  %scevgepstore = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %storeoffset
 | 
				
			||||||
  store i32 %val, i32* %scevgepstore
 | 
					  store i32 %val, i32* %scevgepstore
 | 
				
			||||||
  br label %loop.backedge
 | 
					  br label %loop.backedge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,7 +22,7 @@ for.cond:                                         ; preds = %for.inc, %entry
 | 
				
			||||||
  br i1 %cmp, label %for.body, label %for.end
 | 
					  br i1 %cmp, label %for.body, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.cond
 | 
					for.body:                                         ; preds = %for.cond
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %A, i64 %indvars.iv
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
 | 
				
			||||||
  %tmp = trunc i64 %indvars.iv to i32
 | 
					  %tmp = trunc i64 %indvars.iv to i32
 | 
				
			||||||
  store i32 %tmp, i32* %arrayidx, align 8
 | 
					  store i32 %tmp, i32* %arrayidx, align 8
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,8 +21,8 @@ entry:
 | 
				
			||||||
for.cond:                                         ; preds = %for.inc, %entry
 | 
					for.cond:                                         ; preds = %for.inc, %entry
 | 
				
			||||||
  %tmp1 = phi i32 [ 0, %entry ], [ %inc, %for.inc ]
 | 
					  %tmp1 = phi i32 [ 0, %entry ], [ %inc, %for.inc ]
 | 
				
			||||||
  %tmp = add i32 %tmp1, -1
 | 
					  %tmp = add i32 %tmp1, -1
 | 
				
			||||||
  %arrayidx4 = getelementptr [100 x i32]* @A, i32 0, i32 %tmp
 | 
					  %arrayidx4 = getelementptr [100 x i32], [100 x i32]* @A, i32 0, i32 %tmp
 | 
				
			||||||
  %arrayidx = getelementptr [100 x i32]* @A, i32 0, i32 %tmp1
 | 
					  %arrayidx = getelementptr [100 x i32], [100 x i32]* @A, i32 0, i32 %tmp1
 | 
				
			||||||
  %exitcond = icmp ne i32 %tmp1, 12
 | 
					  %exitcond = icmp ne i32 %tmp1, 12
 | 
				
			||||||
  br i1 %exitcond, label %for.body, label %for.end
 | 
					  br i1 %exitcond, label %for.body, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,8 +21,8 @@ entry:
 | 
				
			||||||
for.cond:                                         ; preds = %for.inc, %entry
 | 
					for.cond:                                         ; preds = %for.inc, %entry
 | 
				
			||||||
  %tmp1 = phi i32 [ 0, %entry ], [ %inc, %for.inc ]
 | 
					  %tmp1 = phi i32 [ 0, %entry ], [ %inc, %for.inc ]
 | 
				
			||||||
  %tmp = add i32 %tmp1, -1
 | 
					  %tmp = add i32 %tmp1, -1
 | 
				
			||||||
  %arrayidx4 = getelementptr [100 x i32]* @A, i32 0, i32 %tmp
 | 
					  %arrayidx4 = getelementptr [100 x i32], [100 x i32]* @A, i32 0, i32 %tmp
 | 
				
			||||||
  %arrayidx = getelementptr [100 x i32]* @A, i32 0, i32 %tmp1
 | 
					  %arrayidx = getelementptr [100 x i32], [100 x i32]* @A, i32 0, i32 %tmp1
 | 
				
			||||||
  %exitcond = icmp ne i32 %tmp1, 12
 | 
					  %exitcond = icmp ne i32 %tmp1, 12
 | 
				
			||||||
  br i1 %exitcond, label %for.body, label %for.end
 | 
					  br i1 %exitcond, label %for.body, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,8 +19,8 @@ entry:
 | 
				
			||||||
for.cond:                                         ; preds = %for.inc, %entry
 | 
					for.cond:                                         ; preds = %for.inc, %entry
 | 
				
			||||||
  %tmp1 = phi i32 [ 0, %entry ], [ %inc, %for.inc ]
 | 
					  %tmp1 = phi i32 [ 0, %entry ], [ %inc, %for.inc ]
 | 
				
			||||||
  %tmp = add i32 %tmp1, -1
 | 
					  %tmp = add i32 %tmp1, -1
 | 
				
			||||||
  %arrayidx4 = getelementptr [100 x float]* @A, i32 0, i32 %tmp
 | 
					  %arrayidx4 = getelementptr [100 x float], [100 x float]* @A, i32 0, i32 %tmp
 | 
				
			||||||
  %arrayidx = getelementptr [100 x float]* @A, i32 0, i32 %tmp1
 | 
					  %arrayidx = getelementptr [100 x float], [100 x float]* @A, i32 0, i32 %tmp1
 | 
				
			||||||
  %exitcond = icmp ne i32 %tmp1, 12
 | 
					  %exitcond = icmp ne i32 %tmp1, 12
 | 
				
			||||||
  br i1 %exitcond, label %for.body, label %for.end
 | 
					  br i1 %exitcond, label %for.body, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,7 +38,7 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 | 
				
			||||||
for.body3:                                        ; preds = %for.cond1
 | 
					for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %mul = shl nsw i32 %i.0, 5
 | 
					  %mul = shl nsw i32 %i.0, 5
 | 
				
			||||||
  %add = add nsw i32 %mul, %j.0
 | 
					  %add = add nsw i32 %mul, %j.0
 | 
				
			||||||
  %arrayidx = getelementptr inbounds [1040 x i32]* @A, i32 0, i32 %add
 | 
					  %arrayidx = getelementptr inbounds [1040 x i32], [1040 x i32]* @A, i32 0, i32 %add
 | 
				
			||||||
  store i32 100, i32* %arrayidx, align 4
 | 
					  store i32 100, i32* %arrayidx, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -63,7 +63,7 @@ for.end6:                                         ; preds = %for.cond
 | 
				
			||||||
; WITHCONST:  %[[MUL2:[._a-zA-Z0-9]+]] = mul nsw i64 2, %[[IVIn]]
 | 
					; WITHCONST:  %[[MUL2:[._a-zA-Z0-9]+]] = mul nsw i64 2, %[[IVIn]]
 | 
				
			||||||
; WITHCONST:  %[[SUM1:[._a-zA-Z0-9]+]] = add nsw i64 %[[MUL1]], %[[MUL2]]
 | 
					; WITHCONST:  %[[SUM1:[._a-zA-Z0-9]+]] = add nsw i64 %[[MUL1]], %[[MUL2]]
 | 
				
			||||||
; WITHCONST:  %[[SUM2:[._a-zA-Z0-9]+]] = add nsw i64 %[[SUM1]], 5
 | 
					; WITHCONST:  %[[SUM2:[._a-zA-Z0-9]+]] = add nsw i64 %[[SUM1]], 5
 | 
				
			||||||
; WITHCONST:  %[[ACC:[._a-zA-Z0-9]*]] = getelementptr i32* getelementptr inbounds ([1040 x i32]* @A, i{{(32|64)}} 0, i{{(32|64)}} 0), i64 %[[SUM2]]
 | 
					; WITHCONST:  %[[ACC:[._a-zA-Z0-9]*]] = getelementptr i32, i32* getelementptr inbounds ([1040 x i32]* @A, i{{(32|64)}} 0, i{{(32|64)}} 0), i64 %[[SUM2]]
 | 
				
			||||||
; WITHCONST:  store i32 100, i32* %[[ACC]]
 | 
					; WITHCONST:  store i32 100, i32* %[[ACC]]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; WITHOUTCONST:  %[[IVOut:polly.indvar[0-9]*]] = phi i64 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
 | 
					; WITHOUTCONST:  %[[IVOut:polly.indvar[0-9]*]] = phi i64 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
 | 
				
			||||||
| 
						 | 
					@ -71,5 +71,5 @@ for.end6:                                         ; preds = %for.cond
 | 
				
			||||||
; WITHOUTCONST:  %[[MUL1:[._a-zA-Z0-9]+]] = mul nsw i64 16, %[[IVOut]]
 | 
					; WITHOUTCONST:  %[[MUL1:[._a-zA-Z0-9]+]] = mul nsw i64 16, %[[IVOut]]
 | 
				
			||||||
; WITHOUTCONST:  %[[MUL2:[._a-zA-Z0-9]+]] = mul nsw i64 2, %[[IVIn]]
 | 
					; WITHOUTCONST:  %[[MUL2:[._a-zA-Z0-9]+]] = mul nsw i64 2, %[[IVIn]]
 | 
				
			||||||
; WITHOUTCONST:  %[[SUM1:[._a-zA-Z0-9]+]] = add nsw i64 %[[MUL1]], %[[MUL2]]
 | 
					; WITHOUTCONST:  %[[SUM1:[._a-zA-Z0-9]+]] = add nsw i64 %[[MUL1]], %[[MUL2]]
 | 
				
			||||||
; WITHOUTCONST:  %[[ACC:[._a-zA-Z0-9]*]] = getelementptr i32* getelementptr inbounds ([1040 x i32]* @A, i{{(32|64)}} 0, i{{(32|64)}} 0), i64 %[[SUM1]]
 | 
					; WITHOUTCONST:  %[[ACC:[._a-zA-Z0-9]*]] = getelementptr i32, i32* getelementptr inbounds ([1040 x i32]* @A, i{{(32|64)}} 0, i{{(32|64)}} 0), i64 %[[SUM1]]
 | 
				
			||||||
; WITHOUTCONST:  store i32 100, i32* %[[ACC]]
 | 
					; WITHOUTCONST:  store i32 100, i32* %[[ACC]]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,7 +34,7 @@ for.cond1:                                        ; preds = %for.inc, %for.body
 | 
				
			||||||
for.body3:                                        ; preds = %for.cond1
 | 
					for.body3:                                        ; preds = %for.cond1
 | 
				
			||||||
  %mul = shl nsw i32 %i.0, 5
 | 
					  %mul = shl nsw i32 %i.0, 5
 | 
				
			||||||
  %add = add nsw i32 %mul, %j.0
 | 
					  %add = add nsw i32 %mul, %j.0
 | 
				
			||||||
  %arrayidx = getelementptr inbounds [1040 x float]* @A, i32 0, i32 %add
 | 
					  %arrayidx = getelementptr inbounds [1040 x float], [1040 x float]* @A, i32 0, i32 %add
 | 
				
			||||||
  store float 100.0, float* %arrayidx, align 4
 | 
					  store float 100.0, float* %arrayidx, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -59,7 +59,7 @@ for.end6:                                         ; preds = %for.cond
 | 
				
			||||||
; WITHCONST:  %[[MUL2:[._a-zA-Z0-9]+]] = mul nsw i64 2, %[[IVIn]]
 | 
					; WITHCONST:  %[[MUL2:[._a-zA-Z0-9]+]] = mul nsw i64 2, %[[IVIn]]
 | 
				
			||||||
; WITHCONST:  %[[SUM1:[._a-zA-Z0-9]+]] = add nsw i64 %[[MUL1]], %[[MUL2]]
 | 
					; WITHCONST:  %[[SUM1:[._a-zA-Z0-9]+]] = add nsw i64 %[[MUL1]], %[[MUL2]]
 | 
				
			||||||
; WITHCONST:  %[[SUM2:[._a-zA-Z0-9]+]] = add nsw i64 %[[SUM1]], 5
 | 
					; WITHCONST:  %[[SUM2:[._a-zA-Z0-9]+]] = add nsw i64 %[[SUM1]], 5
 | 
				
			||||||
; WITHCONST:  %[[ACC:[._a-zA-Z0-9]*]] = getelementptr float* getelementptr inbounds ([1040 x float]* @A, i{{(32|64)}} 0, i{{(32|64)}} 0), i64 %[[SUM2]]
 | 
					; WITHCONST:  %[[ACC:[._a-zA-Z0-9]*]] = getelementptr float, float* getelementptr inbounds ([1040 x float]* @A, i{{(32|64)}} 0, i{{(32|64)}} 0), i64 %[[SUM2]]
 | 
				
			||||||
; WITHCONST:  store float 1.000000e+02, float* %[[ACC]]
 | 
					; WITHCONST:  store float 1.000000e+02, float* %[[ACC]]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; WITHOUTCONST:  %[[IVOut:polly.indvar[0-9]*]] = phi i64 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
 | 
					; WITHOUTCONST:  %[[IVOut:polly.indvar[0-9]*]] = phi i64 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
 | 
				
			||||||
| 
						 | 
					@ -67,5 +67,5 @@ for.end6:                                         ; preds = %for.cond
 | 
				
			||||||
; WITHOUTCONST:  %[[MUL1:[._a-zA-Z0-9]+]] = mul nsw i64 16, %[[IVOut]]
 | 
					; WITHOUTCONST:  %[[MUL1:[._a-zA-Z0-9]+]] = mul nsw i64 16, %[[IVOut]]
 | 
				
			||||||
; WITHOUTCONST:  %[[MUL2:[._a-zA-Z0-9]+]] = mul nsw i64 2, %[[IVIn]]
 | 
					; WITHOUTCONST:  %[[MUL2:[._a-zA-Z0-9]+]] = mul nsw i64 2, %[[IVIn]]
 | 
				
			||||||
; WITHOUTCONST:  %[[SUM1:[._a-zA-Z0-9]+]] = add nsw i64 %[[MUL1]], %[[MUL2]]
 | 
					; WITHOUTCONST:  %[[SUM1:[._a-zA-Z0-9]+]] = add nsw i64 %[[MUL1]], %[[MUL2]]
 | 
				
			||||||
; WITHOUTCONST:  %[[ACC:[._a-zA-Z0-9]*]] = getelementptr float* getelementptr inbounds ([1040 x float]* @A, i{{(32|64)}} 0, i{{(32|64)}} 0), i64 %[[SUM1]]
 | 
					; WITHOUTCONST:  %[[ACC:[._a-zA-Z0-9]*]] = getelementptr float, float* getelementptr inbounds ([1040 x float]* @A, i{{(32|64)}} 0, i{{(32|64)}} 0), i64 %[[SUM1]]
 | 
				
			||||||
; WITHOUTCONST:  store float 1.000000e+02, float* %[[ACC]]
 | 
					; WITHOUTCONST:  store float 1.000000e+02, float* %[[ACC]]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,10 +25,10 @@ for.cond:                                         ; preds = %for.inc, %entry
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.cond
 | 
					for.body:                                         ; preds = %for.cond
 | 
				
			||||||
  %tmp = shl nsw i64 %indvars.iv, 1
 | 
					  %tmp = shl nsw i64 %indvars.iv, 1
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %B, i64 %tmp
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %B, i64 %tmp
 | 
				
			||||||
  %tmp4 = load i32* %arrayidx, align 4
 | 
					  %tmp4 = load i32* %arrayidx, align 4
 | 
				
			||||||
  %tmp5 = shl nsw i64 %indvars.iv, 1
 | 
					  %tmp5 = shl nsw i64 %indvars.iv, 1
 | 
				
			||||||
  %arrayidx3 = getelementptr inbounds i32* %A, i64 %tmp5
 | 
					  %arrayidx3 = getelementptr inbounds i32, i32* %A, i64 %tmp5
 | 
				
			||||||
  store i32 %tmp4, i32* %arrayidx3, align 4
 | 
					  store i32 %tmp4, i32* %arrayidx3, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,7 +31,7 @@ entry:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.cond:                                         ; preds = %for.inc, %entry
 | 
					for.cond:                                         ; preds = %for.inc, %entry
 | 
				
			||||||
  %0 = phi i32 [ 0, %entry ], [ %inc, %for.inc ]
 | 
					  %0 = phi i32 [ 0, %entry ], [ %inc, %for.inc ]
 | 
				
			||||||
  %arrayidx = getelementptr [100 x i32]* @A, i32 0, i32 %0
 | 
					  %arrayidx = getelementptr [100 x i32], [100 x i32]* @A, i32 0, i32 %0
 | 
				
			||||||
  %exitcond1 = icmp ne i32 %0, 12
 | 
					  %exitcond1 = icmp ne i32 %0, 12
 | 
				
			||||||
  br i1 %exitcond1, label %for.body, label %for.end
 | 
					  br i1 %exitcond1, label %for.body, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -48,7 +48,7 @@ for.end:                                          ; preds = %for.cond
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.cond4:                                        ; preds = %for.inc11, %for.end
 | 
					for.cond4:                                        ; preds = %for.inc11, %for.end
 | 
				
			||||||
  %1 = phi i32 [ 0, %for.end ], [ %inc13, %for.inc11 ]
 | 
					  %1 = phi i32 [ 0, %for.end ], [ %inc13, %for.inc11 ]
 | 
				
			||||||
  %arrayidx10 = getelementptr [100 x i32]* @B, i32 0, i32 %1
 | 
					  %arrayidx10 = getelementptr [100 x i32], [100 x i32]* @B, i32 0, i32 %1
 | 
				
			||||||
  %exitcond = icmp ne i32 %1, 12
 | 
					  %exitcond = icmp ne i32 %1, 12
 | 
				
			||||||
  br i1 %exitcond, label %for.body7, label %for.end14
 | 
					  br i1 %exitcond, label %for.body7, label %for.end14
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,7 +11,7 @@ entry:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.cond:                                         ; preds = %for.inc, %entry
 | 
					for.cond:                                         ; preds = %for.inc, %entry
 | 
				
			||||||
  %0 = phi i32 [ 0, %entry ], [ %inc, %for.inc ]
 | 
					  %0 = phi i32 [ 0, %entry ], [ %inc, %for.inc ]
 | 
				
			||||||
  %arrayidx = getelementptr [100 x i32]* @A, i32 0, i32 %0
 | 
					  %arrayidx = getelementptr [100 x i32], [100 x i32]* @A, i32 0, i32 %0
 | 
				
			||||||
  %exitcond1 = icmp ne i32 %0, 12
 | 
					  %exitcond1 = icmp ne i32 %0, 12
 | 
				
			||||||
  br i1 %exitcond1, label %for.body, label %for.end
 | 
					  br i1 %exitcond1, label %for.body, label %for.end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,7 +29,7 @@ for.end:                                          ; preds = %for.cond
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.cond4:                                        ; preds = %for.inc11, %for.end
 | 
					for.cond4:                                        ; preds = %for.inc11, %for.end
 | 
				
			||||||
  %1 = phi i32 [ 0, %for.end ], [ %inc13, %for.inc11 ]
 | 
					  %1 = phi i32 [ 0, %for.end ], [ %inc13, %for.inc11 ]
 | 
				
			||||||
  %arrayidx10 = getelementptr [100 x i32]* @B, i32 0, i32 %1
 | 
					  %arrayidx10 = getelementptr [100 x i32], [100 x i32]* @B, i32 0, i32 %1
 | 
				
			||||||
  %exitcond = icmp ne i32 %1, 12
 | 
					  %exitcond = icmp ne i32 %1, 12
 | 
				
			||||||
  br i1 %exitcond, label %for.body7, label %for.end14
 | 
					  br i1 %exitcond, label %for.body7, label %for.end14
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,12 +4,12 @@
 | 
				
			||||||
;    stride zero for B
 | 
					;    stride zero for B
 | 
				
			||||||
;    stride one for A
 | 
					;    stride one for A
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
; CHECK:  %polly.access.B = getelementptr i32* %B, i64 0
 | 
					; CHECK:  %polly.access.B = getelementptr i32, i32* %B, i64 0
 | 
				
			||||||
; CHECK:  %[[BC:[._a-zA-Z0-9]*]] = bitcast i32* %polly.access.B to <1 x i32>*
 | 
					; CHECK:  %[[BC:[._a-zA-Z0-9]*]] = bitcast i32* %polly.access.B to <1 x i32>*
 | 
				
			||||||
; CHECK:  %[[LD:[._a-zA-Z0-9]*]] = load <1 x i32>* %[[BC]], align 8
 | 
					; CHECK:  %[[LD:[._a-zA-Z0-9]*]] = load <1 x i32>* %[[BC]], align 8
 | 
				
			||||||
; CHECK:  %[[SV:[._a-zA-Z0-9]*]] = shufflevector <1 x i32> %[[LD]], <1 x i32> %[[LD]], <16 x i32> zeroinitializer
 | 
					; CHECK:  %[[SV:[._a-zA-Z0-9]*]] = shufflevector <1 x i32> %[[LD]], <1 x i32> %[[LD]], <16 x i32> zeroinitializer
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
; CHECK:  %polly.access.A = getelementptr i32* %A, i64 0
 | 
					; CHECK:  %polly.access.A = getelementptr i32, i32* %A, i64 0
 | 
				
			||||||
; CHECK:  %[[VP:[._a-zA-Z0-9]*]] = bitcast i32* %polly.access.A to <16 x i32>*
 | 
					; CHECK:  %[[VP:[._a-zA-Z0-9]*]] = bitcast i32* %polly.access.A to <16 x i32>*
 | 
				
			||||||
; CHECK:  store <16 x i32> %[[SV]], <16 x i32>* %[[VP]], align 8
 | 
					; CHECK:  store <16 x i32> %[[SV]], <16 x i32>* %[[VP]], align 8
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
| 
						 | 
					@ -31,10 +31,10 @@ for.cond:                                         ; preds = %for.inc, %entry
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.cond
 | 
					for.body:                                         ; preds = %for.cond
 | 
				
			||||||
  %tmp = shl nsw i64 %indvars.iv, 1
 | 
					  %tmp = shl nsw i64 %indvars.iv, 1
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i32* %B, i64 %tmp
 | 
					  %arrayidx = getelementptr inbounds i32, i32* %B, i64 %tmp
 | 
				
			||||||
  %tmp4 = load i32* %arrayidx, align 4
 | 
					  %tmp4 = load i32* %arrayidx, align 4
 | 
				
			||||||
  %tmp5 = shl nsw i64 %indvars.iv, 1
 | 
					  %tmp5 = shl nsw i64 %indvars.iv, 1
 | 
				
			||||||
  %arrayidx3 = getelementptr inbounds i32* %A, i64 %tmp5
 | 
					  %arrayidx3 = getelementptr inbounds i32, i32* %A, i64 %tmp5
 | 
				
			||||||
  store i32 %tmp4, i32* %arrayidx3, align 4
 | 
					  store i32 %tmp4, i32* %arrayidx3, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,7 +27,7 @@ for.i:
 | 
				
			||||||
for.j:
 | 
					for.j:
 | 
				
			||||||
  %indvar.j = phi i64 [ %indvar.j.next, %for.j], [ 0, %for.i ]
 | 
					  %indvar.j = phi i64 [ %indvar.j.next, %for.j], [ 0, %for.i ]
 | 
				
			||||||
  %sum = add i64 %indvar.j, %indvar.i
 | 
					  %sum = add i64 %indvar.j, %indvar.i
 | 
				
			||||||
  %scevgep = getelementptr [1024 x float]* @A, i64 0, i64 %sum
 | 
					  %scevgep = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %sum
 | 
				
			||||||
  store float 0.0, float *%scevgep
 | 
					  store float 0.0, float *%scevgep
 | 
				
			||||||
  %indvar.j.next = add i64 %indvar.j, 1
 | 
					  %indvar.j.next = add i64 %indvar.j, 1
 | 
				
			||||||
  %exitcond.j = icmp slt i64 %indvar.j.next, 1024
 | 
					  %exitcond.j = icmp slt i64 %indvar.j.next, 1024
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@
 | 
				
			||||||
; AST: for (int c0 = 0; c0 <= 1023; c0 += 1)
 | 
					; AST: for (int c0 = 0; c0 <= 1023; c0 += 1)
 | 
				
			||||||
; AST:   Stmt_for_i(c0);
 | 
					; AST:   Stmt_for_i(c0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; IR: getelementptr inbounds { [1024 x double]* }* %polly.par.userContext, i32 0, i32 0
 | 
					; IR: getelementptr inbounds { [1024 x double]* }, { [1024 x double]* }* %polly.par.userContext, i32 0, i32 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 | 
					target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 | 
				
			||||||
target triple = "x86_64-unknown-linux-gnu"
 | 
					target triple = "x86_64-unknown-linux-gnu"
 | 
				
			||||||
| 
						 | 
					@ -21,7 +21,7 @@ for.cond1.preheader:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.i:
 | 
					for.i:
 | 
				
			||||||
  %indvar.i = phi i64 [ %indvar.i.next, %for.i ], [ 0, %for.cond1.preheader ]
 | 
					  %indvar.i = phi i64 [ %indvar.i.next, %for.i ], [ 0, %for.cond1.preheader ]
 | 
				
			||||||
  %getelementptr = getelementptr [1024 x double]* %B, i64 %extern, i64 %indvar.i
 | 
					  %getelementptr = getelementptr [1024 x double], [1024 x double]* %B, i64 %extern, i64 %indvar.i
 | 
				
			||||||
  store double 0.000000e+00, double* %getelementptr
 | 
					  store double 0.000000e+00, double* %getelementptr
 | 
				
			||||||
  %indvar.i.next = add i64 %indvar.i, 1
 | 
					  %indvar.i.next = add i64 %indvar.i, 1
 | 
				
			||||||
  %exitcond.i = icmp ne i64 %indvar.i.next, 1024
 | 
					  %exitcond.i = icmp ne i64 %indvar.i.next, 1024
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,9 +24,9 @@ entry:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:
 | 
					for.body:
 | 
				
			||||||
  %indvar = phi i64 [ %indvar.next, %for.body ], [ 0, %entry ]
 | 
					  %indvar = phi i64 [ %indvar.next, %for.body ], [ 0, %entry ]
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i64** %tmp, i64 0
 | 
					  %arrayidx = getelementptr inbounds i64*, i64** %tmp, i64 0
 | 
				
			||||||
  %tmp1 = load i64** %arrayidx, align 8
 | 
					  %tmp1 = load i64** %arrayidx, align 8
 | 
				
			||||||
  %arrayidx.2 = getelementptr inbounds i64* %tmp1, i64 %indvar
 | 
					  %arrayidx.2 = getelementptr inbounds i64, i64* %tmp1, i64 %indvar
 | 
				
			||||||
  store i64 1, i64* %arrayidx.2, align 4
 | 
					  store i64 1, i64* %arrayidx.2, align 4
 | 
				
			||||||
  %indvar.next = add nsw i64 %indvar, 1
 | 
					  %indvar.next = add nsw i64 %indvar, 1
 | 
				
			||||||
  %cmp = icmp slt i64 %indvar.next, %cols
 | 
					  %cmp = icmp slt i64 %indvar.next, %cols
 | 
				
			||||||
| 
						 | 
					@ -48,13 +48,13 @@ end:
 | 
				
			||||||
define void @bar(i64 %cols, i8* noalias %call) {
 | 
					define void @bar(i64 %cols, i8* noalias %call) {
 | 
				
			||||||
entry:
 | 
					entry:
 | 
				
			||||||
  %tmp = bitcast i8* %call to i64**
 | 
					  %tmp = bitcast i8* %call to i64**
 | 
				
			||||||
  %arrayidx = getelementptr inbounds i64** %tmp, i64 0
 | 
					  %arrayidx = getelementptr inbounds i64*, i64** %tmp, i64 0
 | 
				
			||||||
  br label %for.body
 | 
					  br label %for.body
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:
 | 
					for.body:
 | 
				
			||||||
  %indvar = phi i64 [ %indvar.next, %for.body ], [ 0, %entry ]
 | 
					  %indvar = phi i64 [ %indvar.next, %for.body ], [ 0, %entry ]
 | 
				
			||||||
  %tmp1 = load i64** %arrayidx, align 8
 | 
					  %tmp1 = load i64** %arrayidx, align 8
 | 
				
			||||||
  %arrayidx.2 = getelementptr inbounds i64* %tmp1, i64 %indvar
 | 
					  %arrayidx.2 = getelementptr inbounds i64, i64* %tmp1, i64 %indvar
 | 
				
			||||||
  store i64 1, i64* %arrayidx.2, align 4
 | 
					  store i64 1, i64* %arrayidx.2, align 4
 | 
				
			||||||
  %indvar.next = add nsw i64 %indvar, 1
 | 
					  %indvar.next = add nsw i64 %indvar, 1
 | 
				
			||||||
  %cmp = icmp slt i64 %indvar.next, %cols
 | 
					  %cmp = icmp slt i64 %indvar.next, %cols
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,7 +18,7 @@
 | 
				
			||||||
; IR-LABEL: polly.start:
 | 
					; IR-LABEL: polly.start:
 | 
				
			||||||
; IR-NEXT:  %0 = bitcast { float* }* %polly.par.userContext to i8*
 | 
					; IR-NEXT:  %0 = bitcast { float* }* %polly.par.userContext to i8*
 | 
				
			||||||
; IR-NEXT:  call void @llvm.lifetime.start(i64 8, i8* %0)
 | 
					; IR-NEXT:  call void @llvm.lifetime.start(i64 8, i8* %0)
 | 
				
			||||||
; IR-NEXT:  %1 = getelementptr inbounds { float* }* %polly.par.userContext, i32 0, i32 0
 | 
					; IR-NEXT:  %1 = getelementptr inbounds { float* }, { float* }* %polly.par.userContext, i32 0, i32 0
 | 
				
			||||||
; IR-NEXT:  store float* %A, float** %1
 | 
					; IR-NEXT:  store float* %A, float** %1
 | 
				
			||||||
; IR-NEXT:  %polly.par.userContext1 = bitcast { float* }* %polly.par.userContext to i8*
 | 
					; IR-NEXT:  %polly.par.userContext1 = bitcast { float* }* %polly.par.userContext to i8*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,7 +35,7 @@ for.cond:                                         ; preds = %for.inc, %entry
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.body:                                         ; preds = %for.cond
 | 
					for.body:                                         ; preds = %for.cond
 | 
				
			||||||
  %conv = sitofp i64 %i.0 to float
 | 
					  %conv = sitofp i64 %i.0 to float
 | 
				
			||||||
  %arrayidx = getelementptr inbounds float* %A, i64 %i.0
 | 
					  %arrayidx = getelementptr inbounds float, float* %A, i64 %i.0
 | 
				
			||||||
  store float %conv, float* %arrayidx, align 4
 | 
					  store float %conv, float* %arrayidx, align 4
 | 
				
			||||||
  br label %for.inc
 | 
					  br label %for.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,17 +26,17 @@
 | 
				
			||||||
; IR:      %polly.par.userContext = alloca { i64, i64 }
 | 
					; IR:      %polly.par.userContext = alloca { i64, i64 }
 | 
				
			||||||
; IR:      %[[R0:[0-9]+]] = bitcast { i64, i64 }* %polly.par.userContext to i8*
 | 
					; IR:      %[[R0:[0-9]+]] = bitcast { i64, i64 }* %polly.par.userContext to i8*
 | 
				
			||||||
; IR-NEXT: call void @llvm.lifetime.start(i64 16, i8* %[[R0]])
 | 
					; IR-NEXT: call void @llvm.lifetime.start(i64 16, i8* %[[R0]])
 | 
				
			||||||
; IR-NEXT: %[[R1:[0-9]+]] = getelementptr inbounds { i64, i64 }* %polly.par.userContext, i32 0, i32 0
 | 
					; IR-NEXT: %[[R1:[0-9]+]] = getelementptr inbounds { i64, i64 }, { i64, i64 }* %polly.par.userContext, i32 0, i32 0
 | 
				
			||||||
; IR-NEXT: store i64 %n, i64* %[[R1]]
 | 
					; IR-NEXT: store i64 %n, i64* %[[R1]]
 | 
				
			||||||
; IR-NEXT: %[[R2:[0-9]+]] = getelementptr inbounds { i64, i64 }* %polly.par.userContext, i32 0, i32 1
 | 
					; IR-NEXT: %[[R2:[0-9]+]] = getelementptr inbounds { i64, i64 }, { i64, i64 }* %polly.par.userContext, i32 0, i32 1
 | 
				
			||||||
; IR-NEXT: store i64 %polly.indvar, i64* %[[R2]]
 | 
					; IR-NEXT: store i64 %polly.indvar, i64* %[[R2]]
 | 
				
			||||||
; IR-NEXT: %polly.par.userContext1 = bitcast { i64, i64 }* %polly.par.userContext to i8*
 | 
					; IR-NEXT: %polly.par.userContext1 = bitcast { i64, i64 }* %polly.par.userContext to i8*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; IR-LABEL: @loop_references_outer_ids.polly.subfn(i8* %polly.par.userContext)
 | 
					; IR-LABEL: @loop_references_outer_ids.polly.subfn(i8* %polly.par.userContext)
 | 
				
			||||||
; IR:       %polly.par.userContext1 = bitcast i8* %polly.par.userContext to { i64, i64 }*
 | 
					; IR:       %polly.par.userContext1 = bitcast i8* %polly.par.userContext to { i64, i64 }*
 | 
				
			||||||
; IR-NEXT:  %[[R3:[0-9]+]] = getelementptr inbounds { i64, i64 }* %polly.par.userContext1, i32 0, i32 0
 | 
					; IR-NEXT:  %[[R3:[0-9]+]] = getelementptr inbounds { i64, i64 }, { i64, i64 }* %polly.par.userContext1, i32 0, i32 0
 | 
				
			||||||
; IR-NEXT:  %[[R4:[0-9]+]] = load i64* %[[R3]]
 | 
					; IR-NEXT:  %[[R4:[0-9]+]] = load i64* %[[R3]]
 | 
				
			||||||
; IR-NEXT:  %[[R5:[0-9]+]] = getelementptr inbounds { i64, i64 }* %polly.par.userContext1, i32 0, i32 1
 | 
					; IR-NEXT:  %[[R5:[0-9]+]] = getelementptr inbounds { i64, i64 }, { i64, i64 }* %polly.par.userContext1, i32 0, i32 1
 | 
				
			||||||
; IR-NEXT:  %[[R6:[0-9]+]] = load i64* %[[R5]]
 | 
					; IR-NEXT:  %[[R6:[0-9]+]] = load i64* %[[R5]]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 | 
					target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 | 
				
			||||||
| 
						 | 
					@ -73,7 +73,7 @@ for.body6:                                        ; preds = %for.cond4
 | 
				
			||||||
  %add7 = add nsw i64 %i.0, %j.0
 | 
					  %add7 = add nsw i64 %i.0, %j.0
 | 
				
			||||||
  %add8 = add nsw i64 %add7, %k.0
 | 
					  %add8 = add nsw i64 %add7, %k.0
 | 
				
			||||||
  %conv = sitofp i64 %add8 to float
 | 
					  %conv = sitofp i64 %add8 to float
 | 
				
			||||||
  %arrayidx = getelementptr inbounds [100 x float]* @A, i64 0, i64 %j.0
 | 
					  %arrayidx = getelementptr inbounds [100 x float], [100 x float]* @A, i64 0, i64 %j.0
 | 
				
			||||||
  %tmp = load float* %arrayidx, align 4
 | 
					  %tmp = load float* %arrayidx, align 4
 | 
				
			||||||
  %add9 = fadd float %tmp, %conv
 | 
					  %add9 = fadd float %tmp, %conv
 | 
				
			||||||
  store float %add9, float* %arrayidx, align 4
 | 
					  store float %add9, float* %arrayidx, align 4
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@ sw.bb3:
 | 
				
			||||||
for.body:
 | 
					for.body:
 | 
				
			||||||
  %i.16 = phi i32 [ %inc04, %for.body ], [ 0, %sw.bb3 ]
 | 
					  %i.16 = phi i32 [ %inc04, %for.body ], [ 0, %sw.bb3 ]
 | 
				
			||||||
  %idxprom11 = sext i32 %i.16 to i64
 | 
					  %idxprom11 = sext i32 %i.16 to i64
 | 
				
			||||||
  %arrayidx12 = getelementptr inbounds double* %tmp, i64 %idxprom11
 | 
					  %arrayidx12 = getelementptr inbounds double, double* %tmp, i64 %idxprom11
 | 
				
			||||||
  store double 1.0, double* %arrayidx12, align 8
 | 
					  store double 1.0, double* %arrayidx12, align 8
 | 
				
			||||||
  %inc04 = add nsw i32 %i.16, 1
 | 
					  %inc04 = add nsw i32 %i.16, 1
 | 
				
			||||||
  %cmp7 = icmp slt i32 %inc04, %sendcount
 | 
					  %cmp7 = icmp slt i32 %inc04, %sendcount
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -37,7 +37,7 @@ for.one:
 | 
				
			||||||
while.body:
 | 
					while.body:
 | 
				
			||||||
  %indvar = phi i64 [ %sub42, %while.body ], [ %i.1, %for.one ]
 | 
					  %indvar = phi i64 [ %sub42, %while.body ], [ %i.1, %for.one ]
 | 
				
			||||||
  %sub42 = add nsw i64 %indvar, -1
 | 
					  %sub42 = add nsw i64 %indvar, -1
 | 
				
			||||||
  %arrayidx44 = getelementptr inbounds [258 x i64]* @cum_freq, i64 0, i64 %sub42
 | 
					  %arrayidx44 = getelementptr inbounds [258 x i64], [258 x i64]* @cum_freq, i64 0, i64 %sub42
 | 
				
			||||||
  store i64 1, i64* %arrayidx44, align 4
 | 
					  store i64 1, i64* %arrayidx44, align 4
 | 
				
			||||||
  %cmp40 = icmp sgt i64 %sub42, 0
 | 
					  %cmp40 = icmp sgt i64 %sub42, 0
 | 
				
			||||||
  br i1 %cmp40, label %while.body, label %while.end
 | 
					  br i1 %cmp40, label %while.body, label %while.end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -73,7 +73,7 @@
 | 
				
			||||||
; IR-NEXT:   br label %polly.stmt.S
 | 
					; IR-NEXT:   br label %polly.stmt.S
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; IR-LABEL: polly.stmt.S:
 | 
					; IR-LABEL: polly.stmt.S:
 | 
				
			||||||
; IR-NEXT:   %[[gep:[._a-zA-Z0-9]*]] = getelementptr [1024 x float]* {{.*}}, i64 0, i64 %polly.indvar
 | 
					; IR-NEXT:   %[[gep:[._a-zA-Z0-9]*]] = getelementptr [1024 x float], [1024 x float]* {{.*}}, i64 0, i64 %polly.indvar
 | 
				
			||||||
; IR-NEXT:   store float 1.000000e+00, float* %[[gep]]
 | 
					; IR-NEXT:   store float 1.000000e+00, float* %[[gep]]
 | 
				
			||||||
; IR-NEXT:   %polly.indvar_next = add nsw i64 %polly.indvar, 1
 | 
					; IR-NEXT:   %polly.indvar_next = add nsw i64 %polly.indvar, 1
 | 
				
			||||||
; IR-NEXT:   %polly.adjust_ub = sub i64 %polly.par.UBAdjusted, 1
 | 
					; IR-NEXT:   %polly.adjust_ub = sub i64 %polly.par.UBAdjusted, 1
 | 
				
			||||||
| 
						 | 
					@ -101,7 +101,7 @@ entry:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for.i:
 | 
					for.i:
 | 
				
			||||||
  %indvar = phi i64 [ %indvar.next, %for.inc], [ 0, %entry ]
 | 
					  %indvar = phi i64 [ %indvar.next, %for.inc], [ 0, %entry ]
 | 
				
			||||||
  %scevgep = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
 | 
					  %scevgep = getelementptr [1024 x float], [1024 x float]* @A, i64 0, i64 %indvar
 | 
				
			||||||
  %exitcond = icmp ne i64 %indvar, 1024
 | 
					  %exitcond = icmp ne i64 %indvar, 1024
 | 
				
			||||||
  br i1 %exitcond, label %S, label %exit
 | 
					  br i1 %exitcond, label %S, label %exit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue