Polish atomic pointers
[oota-llvm.git] / test / CodeGen / X86 / abi-isel.ll
index 752b6e66b588968cdadae8d7009693b6f2e217fc..f363b64386f5175a6ce2e04f80204692408201f3 100644 (file)
@@ -33,8 +33,8 @@
 
 define void @foo00() nounwind {
 entry:
-       %0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 0), align 4
-       store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 0), align 4
+       %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 0), align 4
+       store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 0), align 4
        ret void
 
 ; LINUX-64-STATIC-LABEL: foo00:
@@ -105,8 +105,8 @@ entry:
 
 define void @fxo00() nounwind {
 entry:
-       %0 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 0), align 4
-       store i32 %0, i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 0), align 4
+       %0 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 0), align 4
+       store i32 %0, i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 0), align 4
        ret void
 
 ; LINUX-64-STATIC-LABEL: fxo00:
@@ -177,7 +177,7 @@ entry:
 
 define void @foo01() nounwind {
 entry:
-       store i32* getelementptr ([131072 x i32]* @dst, i32 0, i32 0), i32** @ptr, align 8
+       store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i32 0), i32** @ptr, align 8
        ret void
 ; LINUX-64-STATIC-LABEL: foo01:
 ; LINUX-64-STATIC: movq        $dst, ptr
@@ -237,7 +237,7 @@ entry:
 
 define void @fxo01() nounwind {
 entry:
-       store i32* getelementptr ([32 x i32]* @xdst, i32 0, i32 0), i32** @ptr, align 8
+       store i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i32 0), i32** @ptr, align 8
        ret void
 ; LINUX-64-STATIC-LABEL: fxo01:
 ; LINUX-64-STATIC: movq        $xdst, ptr
@@ -297,8 +297,8 @@ entry:
 
 define void @foo02() nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
-       %1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 0), align 4
+       %0 = load i32*, i32** @ptr, align 8
+       %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 0), align 4
        store i32 %1, i32* %0, align 4
        ret void
 ; LINUX-64-STATIC-LABEL: foo02:
@@ -379,8 +379,8 @@ entry:
 
 define void @fxo02() nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
-       %1 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 0), align 4
+       %0 = load i32*, i32** @ptr, align 8
+       %1 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 0), align 4
        store i32 %1, i32* %0, align 4
 ; LINUX-64-STATIC-LABEL: fxo02:
 ; LINUX-64-STATIC: movl    xsrc(%rip), %
@@ -461,8 +461,8 @@ entry:
 
 define void @foo03() nounwind {
 entry:
-       %0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 0), align 32
-       store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 0), align 32
+       %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 0), align 32
+       store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 0), align 32
        ret void
 ; LINUX-64-STATIC-LABEL: foo03:
 ; LINUX-64-STATIC: movl    dsrc(%rip), [[EAX:%e.x]]
@@ -522,7 +522,7 @@ entry:
 
 define void @foo04() nounwind {
 entry:
-       store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i32 0), i32** @dptr, align 8
+       store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i32 0), i32** @dptr, align 8
        ret void
 ; LINUX-64-STATIC-LABEL: foo04:
 ; LINUX-64-STATIC: movq    $ddst, dptr
@@ -576,8 +576,8 @@ entry:
 
 define void @foo05() nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
-       %1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 0), align 32
+       %0 = load i32*, i32** @dptr, align 8
+       %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 0), align 32
        store i32 %1, i32* %0, align 4
        ret void
 ; LINUX-64-STATIC-LABEL: foo05:
@@ -648,8 +648,8 @@ entry:
 
 define void @foo06() nounwind {
 entry:
-       %0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 0), align 4
-       store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 0), align 4
+       %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 0), align 4
+       store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 0), align 4
        ret void
 ; LINUX-64-STATIC-LABEL: foo06:
 ; LINUX-64-STATIC: movl    lsrc(%rip), [[EAX:%e.x]]
@@ -707,7 +707,7 @@ entry:
 
 define void @foo07() nounwind {
 entry:
-       store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i32 0), i32** @lptr, align 8
+       store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i32 0), i32** @lptr, align 8
        ret void
 ; LINUX-64-STATIC-LABEL: foo07:
 ; LINUX-64-STATIC: movq    $ldst, lptr
@@ -760,8 +760,8 @@ entry:
 
 define void @foo08() nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
-       %1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 0), align 4
+       %0 = load i32*, i32** @lptr, align 8
+       %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 0), align 4
        store i32 %1, i32* %0, align 4
        ret void
 ; LINUX-64-STATIC-LABEL: foo08:
@@ -830,8 +830,8 @@ entry:
 
 define void @qux00() nounwind {
 entry:
-       %0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16), align 4
-       store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16), align 4
+       %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16), align 4
+       store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16), align 4
        ret void
 ; LINUX-64-STATIC-LABEL: qux00:
 ; LINUX-64-STATIC: movl    src+64(%rip), [[EAX:%e.x]]
@@ -901,8 +901,8 @@ entry:
 
 define void @qxx00() nounwind {
 entry:
-       %0 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16), align 4
-       store i32 %0, i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16), align 4
+       %0 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16), align 4
+       store i32 %0, i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16), align 4
        ret void
 ; LINUX-64-STATIC-LABEL: qxx00:
 ; LINUX-64-STATIC: movl    xsrc+64(%rip), [[EAX:%e.x]]
@@ -972,7 +972,7 @@ entry:
 
 define void @qux01() nounwind {
 entry:
-       store i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16), i32** @ptr, align 8
+       store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16), i32** @ptr, align 8
        ret void
 ; LINUX-64-STATIC-LABEL: qux01:
 ; LINUX-64-STATIC: movq    $dst+64, ptr
@@ -1038,7 +1038,7 @@ entry:
 
 define void @qxx01() nounwind {
 entry:
-       store i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16), i32** @ptr, align 8
+       store i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16), i32** @ptr, align 8
        ret void
 ; LINUX-64-STATIC-LABEL: qxx01:
 ; LINUX-64-STATIC: movq    $xdst+64, ptr
@@ -1104,8 +1104,8 @@ entry:
 
 define void @qux02() nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
-       %1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16), align 4
+       %0 = load i32*, i32** @ptr, align 8
+       %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16), align 4
        %2 = getelementptr i32, i32* %0, i64 16
        store i32 %1, i32* %2, align 4
 ; LINUX-64-STATIC-LABEL: qux02:
@@ -1187,8 +1187,8 @@ entry:
 
 define void @qxx02() nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
-       %1 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16), align 4
+       %0 = load i32*, i32** @ptr, align 8
+       %1 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16), align 4
        %2 = getelementptr i32, i32* %0, i64 16
        store i32 %1, i32* %2, align 4
 ; LINUX-64-STATIC-LABEL: qxx02:
@@ -1270,8 +1270,8 @@ entry:
 
 define void @qux03() nounwind {
 entry:
-       %0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16), align 32
-       store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16), align 32
+       %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16), align 32
+       store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16), align 32
        ret void
 ; LINUX-64-STATIC-LABEL: qux03:
 ; LINUX-64-STATIC: movl    dsrc+64(%rip), [[EAX:%e.x]]
@@ -1331,7 +1331,7 @@ entry:
 
 define void @qux04() nounwind {
 entry:
-       store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16), i32** @dptr, align 8
+       store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16), i32** @dptr, align 8
        ret void
 ; LINUX-64-STATIC-LABEL: qux04:
 ; LINUX-64-STATIC: movq    $ddst+64, dptr(%rip)
@@ -1386,8 +1386,8 @@ entry:
 
 define void @qux05() nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
-       %1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16), align 32
+       %0 = load i32*, i32** @dptr, align 8
+       %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16), align 32
        %2 = getelementptr i32, i32* %0, i64 16
        store i32 %1, i32* %2, align 4
 ; LINUX-64-STATIC-LABEL: qux05:
@@ -1459,8 +1459,8 @@ entry:
 
 define void @qux06() nounwind {
 entry:
-       %0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16), align 4
-       store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16), align 4
+       %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16), align 4
+       store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16), align 4
        ret void
 ; LINUX-64-STATIC-LABEL: qux06:
 ; LINUX-64-STATIC: movl    lsrc+64(%rip), [[EAX:%e.x]]
@@ -1518,7 +1518,7 @@ entry:
 
 define void @qux07() nounwind {
 entry:
-       store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16), i32** @lptr, align 8
+       store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16), i32** @lptr, align 8
        ret void
 ; LINUX-64-STATIC-LABEL: qux07:
 ; LINUX-64-STATIC: movq    $ldst+64, lptr
@@ -1571,8 +1571,8 @@ entry:
 
 define void @qux08() nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
-       %1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16), align 4
+       %0 = load i32*, i32** @lptr, align 8
+       %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16), align 4
        %2 = getelementptr i32, i32* %0, i64 16
        store i32 %1, i32* %2, align 4
 ; LINUX-64-STATIC-LABEL: qux08:
@@ -1643,7 +1643,7 @@ entry:
 define void @ind00(i64 %i) nounwind {
 entry:
        %0 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %i
-       %1 = load i32* %0, align 4
+       %1 = load i32, i32* %0, align 4
        %2 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %i
        store i32 %1, i32* %2, align 4
        ret void
@@ -1721,7 +1721,7 @@ entry:
 define void @ixd00(i64 %i) nounwind {
 entry:
        %0 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %i
-       %1 = load i32* %0, align 4
+       %1 = load i32, i32* %0, align 4
        %2 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %i
        store i32 %1, i32* %2, align 4
        ret void
@@ -1950,9 +1950,9 @@ entry:
 
 define void @ind02(i64 %i) nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
+       %0 = load i32*, i32** @ptr, align 8
        %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %i
-       %2 = load i32* %1, align 4
+       %2 = load i32, i32* %1, align 4
        %3 = getelementptr i32, i32* %0, i64 %i
        store i32 %2, i32* %3, align 4
        ret void
@@ -2039,9 +2039,9 @@ entry:
 
 define void @ixd02(i64 %i) nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
+       %0 = load i32*, i32** @ptr, align 8
        %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %i
-       %2 = load i32* %1, align 4
+       %2 = load i32, i32* %1, align 4
        %3 = getelementptr i32, i32* %0, i64 %i
        store i32 %2, i32* %3, align 4
        ret void
@@ -2129,7 +2129,7 @@ entry:
 define void @ind03(i64 %i) nounwind {
 entry:
        %0 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %i
-       %1 = load i32* %0, align 4
+       %1 = load i32, i32* %0, align 4
        %2 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %i
        store i32 %1, i32* %2, align 4
        ret void
@@ -2271,9 +2271,9 @@ entry:
 
 define void @ind05(i64 %i) nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
+       %0 = load i32*, i32** @dptr, align 8
        %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %i
-       %2 = load i32* %1, align 4
+       %2 = load i32, i32* %1, align 4
        %3 = getelementptr i32, i32* %0, i64 %i
        store i32 %2, i32* %3, align 4
        ret void
@@ -2354,7 +2354,7 @@ entry:
 define void @ind06(i64 %i) nounwind {
 entry:
        %0 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %i
-       %1 = load i32* %0, align 4
+       %1 = load i32, i32* %0, align 4
        %2 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %i
        store i32 %1, i32* %2, align 4
        ret void
@@ -2495,9 +2495,9 @@ entry:
 
 define void @ind08(i64 %i) nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
+       %0 = load i32*, i32** @lptr, align 8
        %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %i
-       %2 = load i32* %1, align 4
+       %2 = load i32, i32* %1, align 4
        %3 = getelementptr i32, i32* %0, i64 %i
        store i32 %2, i32* %3, align 4
        ret void
@@ -2578,7 +2578,7 @@ define void @off00(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 16
        %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0
-       %2 = load i32* %1, align 4
+       %2 = load i32, i32* %1, align 4
        %3 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0
        store i32 %2, i32* %3, align 4
        ret void
@@ -2657,7 +2657,7 @@ define void @oxf00(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 16
        %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %0
-       %2 = load i32* %1, align 4
+       %2 = load i32, i32* %1, align 4
        %3 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %0
        store i32 %2, i32* %3, align 4
        ret void
@@ -2888,10 +2888,10 @@ entry:
 
 define void @off02(i64 %i) nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
+       %0 = load i32*, i32** @ptr, align 8
        %1 = add i64 %i, 16
        %2 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %1
-       %3 = load i32* %2, align 4
+       %3 = load i32, i32* %2, align 4
        %4 = getelementptr i32, i32* %0, i64 %1
        store i32 %3, i32* %4, align 4
        ret void
@@ -2978,10 +2978,10 @@ entry:
 
 define void @oxf02(i64 %i) nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
+       %0 = load i32*, i32** @ptr, align 8
        %1 = add i64 %i, 16
        %2 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %1
-       %3 = load i32* %2, align 4
+       %3 = load i32, i32* %2, align 4
        %4 = getelementptr i32, i32* %0, i64 %1
        store i32 %3, i32* %4, align 4
        ret void
@@ -3070,7 +3070,7 @@ define void @off03(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 16
        %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0
-       %2 = load i32* %1, align 4
+       %2 = load i32, i32* %1, align 4
        %3 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0
        store i32 %2, i32* %3, align 4
        ret void
@@ -3213,10 +3213,10 @@ entry:
 
 define void @off05(i64 %i) nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
+       %0 = load i32*, i32** @dptr, align 8
        %1 = add i64 %i, 16
        %2 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %1
-       %3 = load i32* %2, align 4
+       %3 = load i32, i32* %2, align 4
        %4 = getelementptr i32, i32* %0, i64 %1
        store i32 %3, i32* %4, align 4
        ret void
@@ -3298,7 +3298,7 @@ define void @off06(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 16
        %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0
-       %2 = load i32* %1, align 4
+       %2 = load i32, i32* %1, align 4
        %3 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0
        store i32 %2, i32* %3, align 4
        ret void
@@ -3440,10 +3440,10 @@ entry:
 
 define void @off08(i64 %i) nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
+       %0 = load i32*, i32** @lptr, align 8
        %1 = add i64 %i, 16
        %2 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %1
-       %3 = load i32* %2, align 4
+       %3 = load i32, i32* %2, align 4
        %4 = getelementptr i32, i32* %0, i64 %1
        store i32 %3, i32* %4, align 4
        ret void
@@ -3522,8 +3522,8 @@ entry:
 
 define void @moo00(i64 %i) nounwind {
 entry:
-       %0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536), align 4
-       store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536), align 4
+       %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536), align 4
+       store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536), align 4
        ret void
 ; LINUX-64-STATIC-LABEL: moo00:
 ; LINUX-64-STATIC: movl    src+262144(%rip), [[EAX:%e.x]]
@@ -3593,7 +3593,7 @@ entry:
 
 define void @moo01(i64 %i) nounwind {
 entry:
-       store i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536), i32** @ptr, align 8
+       store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536), i32** @ptr, align 8
        ret void
 ; LINUX-64-STATIC-LABEL: moo01:
 ; LINUX-64-STATIC: movq    $dst+262144, ptr(%rip)
@@ -3659,8 +3659,8 @@ entry:
 
 define void @moo02(i64 %i) nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
-       %1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536), align 4
+       %0 = load i32*, i32** @ptr, align 8
+       %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536), align 4
        %2 = getelementptr i32, i32* %0, i64 65536
        store i32 %1, i32* %2, align 4
        ret void
@@ -3742,8 +3742,8 @@ entry:
 
 define void @moo03(i64 %i) nounwind {
 entry:
-       %0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536), align 32
-       store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536), align 32
+       %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536), align 32
+       store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536), align 32
        ret void
 ; LINUX-64-STATIC-LABEL: moo03:
 ; LINUX-64-STATIC: movl    dsrc+262144(%rip), [[EAX:%e.x]]
@@ -3803,7 +3803,7 @@ entry:
 
 define void @moo04(i64 %i) nounwind {
 entry:
-       store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536), i32** @dptr, align 8
+       store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536), i32** @dptr, align 8
        ret void
 ; LINUX-64-STATIC-LABEL: moo04:
 ; LINUX-64-STATIC: movq    $ddst+262144, dptr
@@ -3858,8 +3858,8 @@ entry:
 
 define void @moo05(i64 %i) nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
-       %1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536), align 32
+       %0 = load i32*, i32** @dptr, align 8
+       %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536), align 32
        %2 = getelementptr i32, i32* %0, i64 65536
        store i32 %1, i32* %2, align 4
        ret void
@@ -3931,8 +3931,8 @@ entry:
 
 define void @moo06(i64 %i) nounwind {
 entry:
-       %0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536), align 4
-       store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536), align 4
+       %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536), align 4
+       store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536), align 4
        ret void
 ; LINUX-64-STATIC-LABEL: moo06:
 ; LINUX-64-STATIC: movl    lsrc+262144(%rip), [[EAX:%e.x]]
@@ -3990,7 +3990,7 @@ entry:
 
 define void @moo07(i64 %i) nounwind {
 entry:
-       store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536), i32** @lptr, align 8
+       store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536), i32** @lptr, align 8
        ret void
 ; LINUX-64-STATIC-LABEL: moo07:
 ; LINUX-64-STATIC: movq    $ldst+262144, lptr
@@ -4043,8 +4043,8 @@ entry:
 
 define void @moo08(i64 %i) nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
-       %1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536), align 4
+       %0 = load i32*, i32** @lptr, align 8
+       %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536), align 4
        %2 = getelementptr i32, i32* %0, i64 65536
        store i32 %1, i32* %2, align 4
        ret void
@@ -4116,7 +4116,7 @@ define void @big00(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 65536
        %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0
-       %2 = load i32* %1, align 4
+       %2 = load i32, i32* %1, align 4
        %3 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0
        store i32 %2, i32* %3, align 4
        ret void
@@ -4270,10 +4270,10 @@ entry:
 
 define void @big02(i64 %i) nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
+       %0 = load i32*, i32** @ptr, align 8
        %1 = add i64 %i, 65536
        %2 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %1
-       %3 = load i32* %2, align 4
+       %3 = load i32, i32* %2, align 4
        %4 = getelementptr i32, i32* %0, i64 %1
        store i32 %3, i32* %4, align 4
        ret void
@@ -4362,7 +4362,7 @@ define void @big03(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 65536
        %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0
-       %2 = load i32* %1, align 4
+       %2 = load i32, i32* %1, align 4
        %3 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0
        store i32 %2, i32* %3, align 4
        ret void
@@ -4505,10 +4505,10 @@ entry:
 
 define void @big05(i64 %i) nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
+       %0 = load i32*, i32** @dptr, align 8
        %1 = add i64 %i, 65536
        %2 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %1
-       %3 = load i32* %2, align 4
+       %3 = load i32, i32* %2, align 4
        %4 = getelementptr i32, i32* %0, i64 %1
        store i32 %3, i32* %4, align 4
        ret void
@@ -4590,7 +4590,7 @@ define void @big06(i64 %i) nounwind {
 entry:
        %0 = add i64 %i, 65536
        %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0
-       %2 = load i32* %1, align 4
+       %2 = load i32, i32* %1, align 4
        %3 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0
        store i32 %2, i32* %3, align 4
        ret void
@@ -4732,10 +4732,10 @@ entry:
 
 define void @big08(i64 %i) nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
+       %0 = load i32*, i32** @lptr, align 8
        %1 = add i64 %i, 65536
        %2 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %1
-       %3 = load i32* %2, align 4
+       %3 = load i32, i32* %2, align 4
        %4 = getelementptr i32, i32* %0, i64 %1
        store i32 %3, i32* %4, align 4
        ret void
@@ -5519,7 +5519,7 @@ entry:
 
 define i8* @har02() nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
+       %0 = load i32*, i32** @ptr, align 8
        %1 = bitcast i32* %0 to i8*
        ret i8* %1
 ; LINUX-64-STATIC-LABEL: har02:
@@ -5668,7 +5668,7 @@ entry:
 
 define i8* @har05() nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
+       %0 = load i32*, i32** @dptr, align 8
        %1 = bitcast i32* %0 to i8*
        ret i8* %1
 ; LINUX-64-STATIC-LABEL: har05:
@@ -5812,7 +5812,7 @@ entry:
 
 define i8* @har08() nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
+       %0 = load i32*, i32** @lptr, align 8
        %1 = bitcast i32* %0 to i8*
        ret i8* %1
 ; LINUX-64-STATIC-LABEL: har08:
@@ -5861,7 +5861,7 @@ entry:
 
 define i8* @bat00() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16) to i8*)
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16) to i8*)
 ; LINUX-64-STATIC-LABEL: bat00:
 ; LINUX-64-STATIC: movl    $src+64, %eax
 ; LINUX-64-STATIC: ret
@@ -5914,7 +5914,7 @@ entry:
 
 define i8* @bxt00() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16) to i8*)
+       ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16) to i8*)
 ; LINUX-64-STATIC-LABEL: bxt00:
 ; LINUX-64-STATIC: movl    $xsrc+64, %eax
 ; LINUX-64-STATIC: ret
@@ -5967,7 +5967,7 @@ entry:
 
 define i8* @bat01() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16) to i8*)
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16) to i8*)
 ; LINUX-64-STATIC-LABEL: bat01:
 ; LINUX-64-STATIC: movl    $dst+64, %eax
 ; LINUX-64-STATIC: ret
@@ -6020,7 +6020,7 @@ entry:
 
 define i8* @bxt01() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16) to i8*)
+       ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16) to i8*)
 ; LINUX-64-STATIC-LABEL: bxt01:
 ; LINUX-64-STATIC: movl    $xdst+64, %eax
 ; LINUX-64-STATIC: ret
@@ -6073,7 +6073,7 @@ entry:
 
 define i8* @bat02() nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
+       %0 = load i32*, i32** @ptr, align 8
        %1 = getelementptr i32, i32* %0, i64 16
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
@@ -6139,7 +6139,7 @@ entry:
 
 define i8* @bat03() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16) to i8*)
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16) to i8*)
 ; LINUX-64-STATIC-LABEL: bat03:
 ; LINUX-64-STATIC: movl    $dsrc+64, %eax
 ; LINUX-64-STATIC: ret
@@ -6187,7 +6187,7 @@ entry:
 
 define i8* @bat04() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16) to i8*)
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16) to i8*)
 ; LINUX-64-STATIC-LABEL: bat04:
 ; LINUX-64-STATIC: movl    $ddst+64, %eax
 ; LINUX-64-STATIC: ret
@@ -6235,7 +6235,7 @@ entry:
 
 define i8* @bat05() nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
+       %0 = load i32*, i32** @dptr, align 8
        %1 = getelementptr i32, i32* %0, i64 16
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
@@ -6296,7 +6296,7 @@ entry:
 
 define i8* @bat06() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16) to i8*)
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16) to i8*)
 ; LINUX-64-STATIC-LABEL: bat06:
 ; LINUX-64-STATIC: movl    $lsrc+64, %eax
 ; LINUX-64-STATIC: ret
@@ -6343,7 +6343,7 @@ entry:
 
 define i8* @bat07() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16) to i8*)
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16) to i8*)
 ; LINUX-64-STATIC-LABEL: bat07:
 ; LINUX-64-STATIC: movl    $ldst+64, %eax
 ; LINUX-64-STATIC: ret
@@ -6390,7 +6390,7 @@ entry:
 
 define i8* @bat08() nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
+       %0 = load i32*, i32** @lptr, align 8
        %1 = getelementptr i32, i32* %0, i64 16
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
@@ -6450,7 +6450,7 @@ entry:
 
 define i8* @bam00() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536) to i8*)
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536) to i8*)
 ; LINUX-64-STATIC-LABEL: bam00:
 ; LINUX-64-STATIC: movl    $src+262144, %eax
 ; LINUX-64-STATIC: ret
@@ -6503,7 +6503,7 @@ entry:
 
 define i8* @bam01() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536) to i8*)
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536) to i8*)
 ; LINUX-64-STATIC-LABEL: bam01:
 ; LINUX-64-STATIC: movl    $dst+262144, %eax
 ; LINUX-64-STATIC: ret
@@ -6556,7 +6556,7 @@ entry:
 
 define i8* @bxm01() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 65536) to i8*)
+       ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 65536) to i8*)
 ; LINUX-64-STATIC-LABEL: bxm01:
 ; LINUX-64-STATIC: movl    $xdst+262144, %eax
 ; LINUX-64-STATIC: ret
@@ -6609,7 +6609,7 @@ entry:
 
 define i8* @bam02() nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
+       %0 = load i32*, i32** @ptr, align 8
        %1 = getelementptr i32, i32* %0, i64 65536
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
@@ -6675,7 +6675,7 @@ entry:
 
 define i8* @bam03() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536) to i8*)
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536) to i8*)
 ; LINUX-64-STATIC-LABEL: bam03:
 ; LINUX-64-STATIC: movl    $dsrc+262144, %eax
 ; LINUX-64-STATIC: ret
@@ -6723,7 +6723,7 @@ entry:
 
 define i8* @bam04() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536) to i8*)
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536) to i8*)
 ; LINUX-64-STATIC-LABEL: bam04:
 ; LINUX-64-STATIC: movl    $ddst+262144, %eax
 ; LINUX-64-STATIC: ret
@@ -6771,7 +6771,7 @@ entry:
 
 define i8* @bam05() nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
+       %0 = load i32*, i32** @dptr, align 8
        %1 = getelementptr i32, i32* %0, i64 65536
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
@@ -6832,7 +6832,7 @@ entry:
 
 define i8* @bam06() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536) to i8*)
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536) to i8*)
 ; LINUX-64-STATIC-LABEL: bam06:
 ; LINUX-64-STATIC: movl    $lsrc+262144, %eax
 ; LINUX-64-STATIC: ret
@@ -6879,7 +6879,7 @@ entry:
 
 define i8* @bam07() nounwind {
 entry:
-       ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536) to i8*)
+       ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536) to i8*)
 ; LINUX-64-STATIC-LABEL: bam07:
 ; LINUX-64-STATIC: movl    $ldst+262144, %eax
 ; LINUX-64-STATIC: ret
@@ -6926,7 +6926,7 @@ entry:
 
 define i8* @bam08() nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
+       %0 = load i32*, i32** @lptr, align 8
        %1 = getelementptr i32, i32* %0, i64 65536
        %2 = bitcast i32* %1 to i8*
        ret i8* %2
@@ -7230,7 +7230,7 @@ entry:
 
 define i8* @cat02(i64 %i) nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
+       %0 = load i32*, i32** @ptr, align 8
        %1 = add i64 %i, 16
        %2 = getelementptr i32, i32* %0, i64 %1
        %3 = bitcast i32* %2 to i8*
@@ -7420,7 +7420,7 @@ entry:
 
 define i8* @cat05(i64 %i) nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
+       %0 = load i32*, i32** @dptr, align 8
        %1 = add i64 %i, 16
        %2 = getelementptr i32, i32* %0, i64 %1
        %3 = bitcast i32* %2 to i8*
@@ -7605,7 +7605,7 @@ entry:
 
 define i8* @cat08(i64 %i) nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
+       %0 = load i32*, i32** @lptr, align 8
        %1 = add i64 %i, 16
        %2 = getelementptr i32, i32* %0, i64 %1
        %3 = bitcast i32* %2 to i8*
@@ -7915,7 +7915,7 @@ entry:
 
 define i8* @cam02(i64 %i) nounwind {
 entry:
-       %0 = load i32** @ptr, align 8
+       %0 = load i32*, i32** @ptr, align 8
        %1 = add i64 %i, 65536
        %2 = getelementptr i32, i32* %0, i64 %1
        %3 = bitcast i32* %2 to i8*
@@ -8105,7 +8105,7 @@ entry:
 
 define i8* @cam05(i64 %i) nounwind {
 entry:
-       %0 = load i32** @dptr, align 8
+       %0 = load i32*, i32** @dptr, align 8
        %1 = add i64 %i, 65536
        %2 = getelementptr i32, i32* %0, i64 %1
        %3 = bitcast i32* %2 to i8*
@@ -8290,7 +8290,7 @@ entry:
 
 define i8* @cam08(i64 %i) nounwind {
 entry:
-       %0 = load i32** @lptr, align 8
+       %0 = load i32*, i32** @lptr, align 8
        %1 = add i64 %i, 65536
        %2 = getelementptr i32, i32* %0, i64 %1
        %3 = bitcast i32* %2 to i8*
@@ -9180,9 +9180,9 @@ entry:
 
 define void @icaller() nounwind {
 entry:
-       %0 = load void ()** @ifunc, align 8
+       %0 = load void ()*, void ()** @ifunc, align 8
        call void %0() nounwind
-       %1 = load void ()** @ifunc, align 8
+       %1 = load void ()*, void ()** @ifunc, align 8
        call void %1() nounwind
        ret void
 ; LINUX-64-STATIC-LABEL: icaller:
@@ -9270,9 +9270,9 @@ entry:
 
 define void @dicaller() nounwind {
 entry:
-       %0 = load void ()** @difunc, align 8
+       %0 = load void ()*, void ()** @difunc, align 8
        call void %0() nounwind
-       %1 = load void ()** @difunc, align 8
+       %1 = load void ()*, void ()** @difunc, align 8
        call void %1() nounwind
        ret void
 ; LINUX-64-STATIC-LABEL: dicaller:
@@ -9353,9 +9353,9 @@ entry:
 
 define void @licaller() nounwind {
 entry:
-       %0 = load void ()** @lifunc, align 8
+       %0 = load void ()*, void ()** @lifunc, align 8
        call void %0() nounwind
-       %1 = load void ()** @lifunc, align 8
+       %1 = load void ()*, void ()** @lifunc, align 8
        call void %1() nounwind
        ret void
 ; LINUX-64-STATIC-LABEL: licaller:
@@ -9435,9 +9435,9 @@ entry:
 
 define void @itailcaller() nounwind {
 entry:
-       %0 = load void ()** @ifunc, align 8
+       %0 = load void ()*, void ()** @ifunc, align 8
        call void %0() nounwind
-       %1 = load void ()** @ifunc, align 8
+       %1 = load void ()*, void ()** @ifunc, align 8
        call void %1() nounwind
        ret void
 ; LINUX-64-STATIC-LABEL: itailcaller:
@@ -9525,7 +9525,7 @@ entry:
 
 define void @ditailcaller() nounwind {
 entry:
-       %0 = load void ()** @difunc, align 8
+       %0 = load void ()*, void ()** @difunc, align 8
        call void %0() nounwind
        ret void
 ; LINUX-64-STATIC-LABEL: ditailcaller:
@@ -9593,7 +9593,7 @@ entry:
 
 define void @litailcaller() nounwind {
 entry:
-       %0 = load void ()** @lifunc, align 8
+       %0 = load void ()*, void ()** @lifunc, align 8
        call void %0() nounwind
        ret void
 ; LINUX-64-STATIC-LABEL: litailcaller: