[opaque pointer type] Add textual IR support for explicit type parameter to getelemen...
[oota-llvm.git] / test / Transforms / LoopReroll / basic.ll
index 75334611d5f290a8f2c3849934528326e1b64587..4ae78270eb88d2dec0a4a4b81f87bb1860abd663 100644 (file)
@@ -60,15 +60,15 @@ entry:
 for.body:                                         ; preds = %entry, %for.body
   %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
   %call = tail call i32 @foo(i32 0) #1
-  %arrayidx = getelementptr inbounds i32* %x, i64 %indvars.iv
+  %arrayidx = getelementptr inbounds i32, i32* %x, i64 %indvars.iv
   store i32 %call, i32* %arrayidx, align 4
   %call1 = tail call i32 @foo(i32 0) #1
   %0 = add nsw i64 %indvars.iv, 1
-  %arrayidx3 = getelementptr inbounds i32* %x, i64 %0
+  %arrayidx3 = getelementptr inbounds i32, i32* %x, i64 %0
   store i32 %call1, i32* %arrayidx3, align 4
   %call4 = tail call i32 @foo(i32 0) #1
   %1 = add nsw i64 %indvars.iv, 2
-  %arrayidx7 = getelementptr inbounds i32* %x, i64 %1
+  %arrayidx7 = getelementptr inbounds i32, i32* %x, i64 %1
   store i32 %call4, i32* %arrayidx7, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 3
   %2 = trunc i64 %indvars.iv.next to i32
@@ -80,7 +80,7 @@ for.body:                                         ; preds = %entry, %for.body
 ; CHECK: for.body:
 ; CHECK: %indvar = phi i64 [ %indvar.next, %for.body ], [ 0, %entry ]
 ; CHECK: %call = tail call i32 @foo(i32 0) #1
-; CHECK: %arrayidx = getelementptr inbounds i32* %x, i64 %indvar
+; CHECK: %arrayidx = getelementptr inbounds i32, i32* %x, i64 %indvar
 ; CHECK: store i32 %call, i32* %arrayidx, align 4
 ; CHECK: %indvar.next = add i64 %indvar, 1
 ; CHECK: %exitcond = icmp eq i64 %indvar, 1499
@@ -109,15 +109,15 @@ for.body:                                         ; preds = %for.body, %entry
   %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
   %call = tail call i32 @foo(i32 0) #1
   %0 = mul nsw i64 %indvars.iv, 3
-  %arrayidx = getelementptr inbounds i32* %x, i64 %0
+  %arrayidx = getelementptr inbounds i32, i32* %x, i64 %0
   store i32 %call, i32* %arrayidx, align 4
   %call1 = tail call i32 @foo(i32 0) #1
   %1 = add nsw i64 %0, 1
-  %arrayidx4 = getelementptr inbounds i32* %x, i64 %1
+  %arrayidx4 = getelementptr inbounds i32, i32* %x, i64 %1
   store i32 %call1, i32* %arrayidx4, align 4
   %call5 = tail call i32 @foo(i32 0) #1
   %2 = add nsw i64 %0, 2
-  %arrayidx9 = getelementptr inbounds i32* %x, i64 %2
+  %arrayidx9 = getelementptr inbounds i32, i32* %x, i64 %2
   store i32 %call5, i32* %arrayidx9, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 500
@@ -128,7 +128,7 @@ for.body:                                         ; preds = %for.body, %entry
 ; CHECK: for.body:
 ; CHECK: %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
 ; CHECK: %call = tail call i32 @foo(i32 0) #1
-; CHECK: %arrayidx = getelementptr inbounds i32* %x, i64 %indvars.iv
+; CHECK: %arrayidx = getelementptr inbounds i32, i32* %x, i64 %indvars.iv
 ; CHECK: store i32 %call, i32* %arrayidx, align 4
 ; CHECK: %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
 ; CHECK: %exitcond1 = icmp eq i64 %indvars.iv, 1499
@@ -157,42 +157,42 @@ entry:
 
 for.body:                                         ; preds = %entry, %for.body
   %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
-  %arrayidx = getelementptr inbounds float* %b, i64 %indvars.iv
+  %arrayidx = getelementptr inbounds float, float* %b, i64 %indvars.iv
   %0 = load float* %arrayidx, align 4
   %mul = fmul float %0, %alpha
-  %arrayidx2 = getelementptr inbounds float* %a, i64 %indvars.iv
+  %arrayidx2 = getelementptr inbounds float, float* %a, i64 %indvars.iv
   %1 = load float* %arrayidx2, align 4
   %add = fadd float %1, %mul
   store float %add, float* %arrayidx2, align 4
   %2 = add nsw i64 %indvars.iv, 1
-  %arrayidx5 = getelementptr inbounds float* %b, i64 %2
+  %arrayidx5 = getelementptr inbounds float, float* %b, i64 %2
   %3 = load float* %arrayidx5, align 4
   %mul6 = fmul float %3, %alpha
-  %arrayidx9 = getelementptr inbounds float* %a, i64 %2
+  %arrayidx9 = getelementptr inbounds float, float* %a, i64 %2
   %4 = load float* %arrayidx9, align 4
   %add10 = fadd float %4, %mul6
   store float %add10, float* %arrayidx9, align 4
   %5 = add nsw i64 %indvars.iv, 2
-  %arrayidx13 = getelementptr inbounds float* %b, i64 %5
+  %arrayidx13 = getelementptr inbounds float, float* %b, i64 %5
   %6 = load float* %arrayidx13, align 4
   %mul14 = fmul float %6, %alpha
-  %arrayidx17 = getelementptr inbounds float* %a, i64 %5
+  %arrayidx17 = getelementptr inbounds float, float* %a, i64 %5
   %7 = load float* %arrayidx17, align 4
   %add18 = fadd float %7, %mul14
   store float %add18, float* %arrayidx17, align 4
   %8 = add nsw i64 %indvars.iv, 3
-  %arrayidx21 = getelementptr inbounds float* %b, i64 %8
+  %arrayidx21 = getelementptr inbounds float, float* %b, i64 %8
   %9 = load float* %arrayidx21, align 4
   %mul22 = fmul float %9, %alpha
-  %arrayidx25 = getelementptr inbounds float* %a, i64 %8
+  %arrayidx25 = getelementptr inbounds float, float* %a, i64 %8
   %10 = load float* %arrayidx25, align 4
   %add26 = fadd float %10, %mul22
   store float %add26, float* %arrayidx25, align 4
   %11 = add nsw i64 %indvars.iv, 4
-  %arrayidx29 = getelementptr inbounds float* %b, i64 %11
+  %arrayidx29 = getelementptr inbounds float, float* %b, i64 %11
   %12 = load float* %arrayidx29, align 4
   %mul30 = fmul float %12, %alpha
-  %arrayidx33 = getelementptr inbounds float* %a, i64 %11
+  %arrayidx33 = getelementptr inbounds float, float* %a, i64 %11
   %13 = load float* %arrayidx33, align 4
   %add34 = fadd float %13, %mul30
   store float %add34, float* %arrayidx33, align 4
@@ -205,10 +205,10 @@ for.body:                                         ; preds = %entry, %for.body
 
 ; CHECK: for.body:
 ; CHECK: %indvar = phi i64 [ %indvar.next, %for.body ], [ 0, %entry ]
-; CHECK: %arrayidx = getelementptr inbounds float* %b, i64 %indvar
+; CHECK: %arrayidx = getelementptr inbounds float, float* %b, i64 %indvar
 ; CHECK: %0 = load float* %arrayidx, align 4
 ; CHECK: %mul = fmul float %0, %alpha
-; CHECK: %arrayidx2 = getelementptr inbounds float* %a, i64 %indvar
+; CHECK: %arrayidx2 = getelementptr inbounds float, float* %a, i64 %indvar
 ; CHECK: %1 = load float* %arrayidx2, align 4
 ; CHECK: %add = fadd float %1, %mul
 ; CHECK: store float %add, float* %arrayidx2, align 4
@@ -239,57 +239,57 @@ entry:
 
 for.body:                                         ; preds = %entry, %for.body
   %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
-  %arrayidx = getelementptr inbounds i32* %ip, i64 %indvars.iv
+  %arrayidx = getelementptr inbounds i32, i32* %ip, i64 %indvars.iv
   %0 = load i32* %arrayidx, align 4
   %idxprom1 = sext i32 %0 to i64
-  %arrayidx2 = getelementptr inbounds float* %b, i64 %idxprom1
+  %arrayidx2 = getelementptr inbounds float, float* %b, i64 %idxprom1
   %1 = load float* %arrayidx2, align 4
   %mul = fmul float %1, %alpha
-  %arrayidx4 = getelementptr inbounds float* %a, i64 %indvars.iv
+  %arrayidx4 = getelementptr inbounds float, float* %a, i64 %indvars.iv
   %2 = load float* %arrayidx4, align 4
   %add = fadd float %2, %mul
   store float %add, float* %arrayidx4, align 4
   %3 = add nsw i64 %indvars.iv, 1
-  %arrayidx7 = getelementptr inbounds i32* %ip, i64 %3
+  %arrayidx7 = getelementptr inbounds i32, i32* %ip, i64 %3
   %4 = load i32* %arrayidx7, align 4
   %idxprom8 = sext i32 %4 to i64
-  %arrayidx9 = getelementptr inbounds float* %b, i64 %idxprom8
+  %arrayidx9 = getelementptr inbounds float, float* %b, i64 %idxprom8
   %5 = load float* %arrayidx9, align 4
   %mul10 = fmul float %5, %alpha
-  %arrayidx13 = getelementptr inbounds float* %a, i64 %3
+  %arrayidx13 = getelementptr inbounds float, float* %a, i64 %3
   %6 = load float* %arrayidx13, align 4
   %add14 = fadd float %6, %mul10
   store float %add14, float* %arrayidx13, align 4
   %7 = add nsw i64 %indvars.iv, 2
-  %arrayidx17 = getelementptr inbounds i32* %ip, i64 %7
+  %arrayidx17 = getelementptr inbounds i32, i32* %ip, i64 %7
   %8 = load i32* %arrayidx17, align 4
   %idxprom18 = sext i32 %8 to i64
-  %arrayidx19 = getelementptr inbounds float* %b, i64 %idxprom18
+  %arrayidx19 = getelementptr inbounds float, float* %b, i64 %idxprom18
   %9 = load float* %arrayidx19, align 4
   %mul20 = fmul float %9, %alpha
-  %arrayidx23 = getelementptr inbounds float* %a, i64 %7
+  %arrayidx23 = getelementptr inbounds float, float* %a, i64 %7
   %10 = load float* %arrayidx23, align 4
   %add24 = fadd float %10, %mul20
   store float %add24, float* %arrayidx23, align 4
   %11 = add nsw i64 %indvars.iv, 3
-  %arrayidx27 = getelementptr inbounds i32* %ip, i64 %11
+  %arrayidx27 = getelementptr inbounds i32, i32* %ip, i64 %11
   %12 = load i32* %arrayidx27, align 4
   %idxprom28 = sext i32 %12 to i64
-  %arrayidx29 = getelementptr inbounds float* %b, i64 %idxprom28
+  %arrayidx29 = getelementptr inbounds float, float* %b, i64 %idxprom28
   %13 = load float* %arrayidx29, align 4
   %mul30 = fmul float %13, %alpha
-  %arrayidx33 = getelementptr inbounds float* %a, i64 %11
+  %arrayidx33 = getelementptr inbounds float, float* %a, i64 %11
   %14 = load float* %arrayidx33, align 4
   %add34 = fadd float %14, %mul30
   store float %add34, float* %arrayidx33, align 4
   %15 = add nsw i64 %indvars.iv, 4
-  %arrayidx37 = getelementptr inbounds i32* %ip, i64 %15
+  %arrayidx37 = getelementptr inbounds i32, i32* %ip, i64 %15
   %16 = load i32* %arrayidx37, align 4
   %idxprom38 = sext i32 %16 to i64
-  %arrayidx39 = getelementptr inbounds float* %b, i64 %idxprom38
+  %arrayidx39 = getelementptr inbounds float, float* %b, i64 %idxprom38
   %17 = load float* %arrayidx39, align 4
   %mul40 = fmul float %17, %alpha
-  %arrayidx43 = getelementptr inbounds float* %a, i64 %15
+  %arrayidx43 = getelementptr inbounds float, float* %a, i64 %15
   %18 = load float* %arrayidx43, align 4
   %add44 = fadd float %18, %mul40
   store float %add44, float* %arrayidx43, align 4
@@ -302,13 +302,13 @@ for.body:                                         ; preds = %entry, %for.body
 
 ; CHECK: for.body:
 ; CHECK: %indvar = phi i64 [ %indvar.next, %for.body ], [ 0, %entry ]
-; CHECK: %arrayidx = getelementptr inbounds i32* %ip, i64 %indvar
+; CHECK: %arrayidx = getelementptr inbounds i32, i32* %ip, i64 %indvar
 ; CHECK: %0 = load i32* %arrayidx, align 4
 ; CHECK: %idxprom1 = sext i32 %0 to i64
-; CHECK: %arrayidx2 = getelementptr inbounds float* %b, i64 %idxprom1
+; CHECK: %arrayidx2 = getelementptr inbounds float, float* %b, i64 %idxprom1
 ; CHECK: %1 = load float* %arrayidx2, align 4
 ; CHECK: %mul = fmul float %1, %alpha
-; CHECK: %arrayidx4 = getelementptr inbounds float* %a, i64 %indvar
+; CHECK: %arrayidx4 = getelementptr inbounds float, float* %a, i64 %indvar
 ; CHECK: %2 = load float* %arrayidx4, align 4
 ; CHECK: %add = fadd float %2, %mul
 ; CHECK: store float %add, float* %arrayidx4, align 4
@@ -343,22 +343,22 @@ entry:
 for.body:                                         ; preds = %for.body, %entry
   %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
   %0 = mul nsw i64 %indvars.iv, 3
-  %arrayidx = getelementptr inbounds i32* %x, i64 %0
+  %arrayidx = getelementptr inbounds i32, i32* %x, i64 %0
   store i32 %call, i32* %arrayidx, align 4
   %1 = add nsw i64 %0, 1
-  %arrayidx4 = getelementptr inbounds i32* %x, i64 %1
+  %arrayidx4 = getelementptr inbounds i32, i32* %x, i64 %1
   store i32 %call, i32* %arrayidx4, align 4
   %2 = add nsw i64 %0, 2
-  %arrayidx9 = getelementptr inbounds i32* %x, i64 %2
+  %arrayidx9 = getelementptr inbounds i32, i32* %x, i64 %2
   store i32 %call, i32* %arrayidx9, align 4
   %3 = add nsw i64 %0, 6
-  %arrayidx6 = getelementptr inbounds i32* %x, i64 %3
+  %arrayidx6 = getelementptr inbounds i32, i32* %x, i64 %3
   store i32 %call, i32* %arrayidx6, align 4
   %4 = add nsw i64 %0, 7
-  %arrayidx7 = getelementptr inbounds i32* %x, i64 %4
+  %arrayidx7 = getelementptr inbounds i32, i32* %x, i64 %4
   store i32 %call, i32* %arrayidx7, align 4
   %5 = add nsw i64 %0, 8
-  %arrayidx8 = getelementptr inbounds i32* %x, i64 %5
+  %arrayidx8 = getelementptr inbounds i32, i32* %x, i64 %5
   store i32 %call, i32* %arrayidx8, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 500
@@ -369,9 +369,9 @@ for.body:                                         ; preds = %for.body, %entry
 ; CHECK:for.body:
 ; CHECK:  %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
 ; CHECK:  %0 = add i64 %indvars.iv, 6
-; CHECK:  %arrayidx = getelementptr inbounds i32* %x, i64 %indvars.iv
+; CHECK:  %arrayidx = getelementptr inbounds i32, i32* %x, i64 %indvars.iv
 ; CHECK:  store i32 %call, i32* %arrayidx, align 4
-; CHECK:  %arrayidx6 = getelementptr inbounds i32* %x, i64 %0
+; CHECK:  %arrayidx6 = getelementptr inbounds i32, i32* %x, i64 %0
 ; CHECK:  store i32 %call, i32* %arrayidx6, align 4
 ; CHECK:  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
 ; CHECK:  %exitcond2 = icmp eq i64 %0, 1505
@@ -404,21 +404,21 @@ for.body:                                         ; preds = %for.body, %entry
   %0 = mul nsw i64 %indvars.iv, 3
   %add = add nsw i64 %indvars.iv, 1
   %newmul = mul nsw i64 %add, 3
-  %arrayidx = getelementptr inbounds i32* %x, i64 %0
+  %arrayidx = getelementptr inbounds i32, i32* %x, i64 %0
   store i32 %call, i32* %arrayidx, align 4
   %1 = add nsw i64 %0, 1
-  %arrayidx4 = getelementptr inbounds i32* %x, i64 %1
+  %arrayidx4 = getelementptr inbounds i32, i32* %x, i64 %1
   store i32 %call, i32* %arrayidx4, align 4
   %2 = add nsw i64 %0, 2
-  %arrayidx9 = getelementptr inbounds i32* %x, i64 %2
+  %arrayidx9 = getelementptr inbounds i32, i32* %x, i64 %2
   store i32 %call, i32* %arrayidx9, align 4
-  %arrayidx6 = getelementptr inbounds i32* %x, i64 %newmul
+  %arrayidx6 = getelementptr inbounds i32, i32* %x, i64 %newmul
   store i32 %call, i32* %arrayidx6, align 4
   %3 = add nsw i64 %newmul, 1
-  %arrayidx7 = getelementptr inbounds i32* %x, i64 %3
+  %arrayidx7 = getelementptr inbounds i32, i32* %x, i64 %3
   store i32 %call, i32* %arrayidx7, align 4
   %4 = add nsw i64 %newmul, 2
-  %arrayidx8 = getelementptr inbounds i32* %x, i64 %4
+  %arrayidx8 = getelementptr inbounds i32, i32* %x, i64 %4
   store i32 %call, i32* %arrayidx8, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 500
@@ -429,9 +429,9 @@ for.body:                                         ; preds = %for.body, %entry
 ; CHECK:for.body:
 ; CHECK:  %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
 ; CHECK:  %0 = add i64 %indvars.iv, 3
-; CHECK:  %arrayidx = getelementptr inbounds i32* %x, i64 %indvars.iv
+; CHECK:  %arrayidx = getelementptr inbounds i32, i32* %x, i64 %indvars.iv
 ; CHECK:  store i32 %call, i32* %arrayidx, align 4
-; CHECK:  %arrayidx6 = getelementptr inbounds i32* %x, i64 %0
+; CHECK:  %arrayidx6 = getelementptr inbounds i32, i32* %x, i64 %0
 ; CHECK:  store i32 %call, i32* %arrayidx6, align 4
 ; CHECK:  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
 ; CHECK:  %exitcond2 = icmp eq i64 %indvars.iv, 1499
@@ -462,13 +462,13 @@ for.body:                                         ; preds = %for.body, %entry
   %0 = mul nsw i64 %indvars.iv, 3
   %x0 = add nsw i64 %0, 3
   %add = add nsw i64 %indvars.iv, 1
-  %arrayidx = getelementptr inbounds i32* %x, i64 %x0
+  %arrayidx = getelementptr inbounds i32, i32* %x, i64 %x0
   store i32 %call, i32* %arrayidx, align 4
   %1 = add nsw i64 %0, 4
-  %arrayidx4 = getelementptr inbounds i32* %x, i64 %1
+  %arrayidx4 = getelementptr inbounds i32, i32* %x, i64 %1
   store i32 %call, i32* %arrayidx4, align 4
   %2 = add nsw i64 %0, 5
-  %arrayidx9 = getelementptr inbounds i32* %x, i64 %2
+  %arrayidx9 = getelementptr inbounds i32, i32* %x, i64 %2
   store i32 %call, i32* %arrayidx9, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 500
@@ -478,7 +478,7 @@ for.body:                                         ; preds = %for.body, %entry
 ; CHECK: for.body:
 ; CHECK:   %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
 ; CHECK:   %0 = add i64 %indvars.iv, 3
-; CHECK:   %arrayidx = getelementptr inbounds i32* %x, i64 %0
+; CHECK:   %arrayidx = getelementptr inbounds i32, i32* %x, i64 %0
 ; CHECK:   store i32 %call, i32* %arrayidx, align 4
 ; CHECK:   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
 ; CHECK:   %exitcond1 = icmp eq i64 %0, 1502
@@ -556,13 +556,13 @@ entry:
 for.body:                                         ; preds = %for.body, %entry
   %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
   %0 = mul nsw i64 %indvars.iv, 3
-  %arrayidx = getelementptr inbounds %struct.s* %x, i64 %0, i32 0
+  %arrayidx = getelementptr inbounds %struct.s, %struct.s* %x, i64 %0, i32 0
   store i32 %call, i32* %arrayidx, align 4
   %1 = add nsw i64 %0, 1
-  %arrayidx4 = getelementptr inbounds %struct.s* %x, i64 %1, i32 0
+  %arrayidx4 = getelementptr inbounds %struct.s, %struct.s* %x, i64 %1, i32 0
   store i32 %call, i32* %arrayidx4, align 4
   %2 = add nsw i64 %0, 2
-  %arrayidx9 = getelementptr inbounds %struct.s* %x, i64 %2, i32 0
+  %arrayidx9 = getelementptr inbounds %struct.s, %struct.s* %x, i64 %2, i32 0
   store i32 %call, i32* %arrayidx9, align 4
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
   %exitcond = icmp eq i64 %indvars.iv.next, 500