Switch lowering: fix assert in buildBitTests (PR23738)
[oota-llvm.git] / test / CodeGen / X86 / 2007-01-13-StackPtrIndex.ll
index 9a73130a65343d2dddee0151cdbfc3c0f23508ba..f83eea179d6af5db47b804c2be97ea8d793d0925 100644 (file)
@@ -1,27 +1,24 @@
-; RUN: llvm-as < %s | llc -march=x86-64 -sched=none | grep leaq &&
-; RUN: llvm-as < %s | llc -march=x86-64 -sched=none | not grep ',%rsp)'
+; RUN: llc < %s -march=x86-64 > %t
+; RUN: not grep ",%rsp)" %t
 ; PR1103
 
 target datalayout = "e-p:64:64"
-target endian = little
-target pointersize = 64
-%i6000 = global [128 x i64] zeroinitializer, align 16
+@i6000 = global [128 x i64] zeroinitializer, align 16
 
-implementation
 
-define void %foo(i32* %a0, i32* %a1, i32* %a2, i32* %a3, i32* %a4, i32* %a5) {
+define void @foo(i32* %a0, i32* %a1, i32* %a2, i32* %a3, i32* %a4, i32* %a5) {
 b:
-       %r = load i32* %a0
-       %r2 = load i32* %a1
-       %r4 = load i32* %a2
-       %r6 = load i32* %a3
-       %r8 = load i32* %a4
-       %r14 = load i32* %a5
-       %r = sext i32 %r2 to i64
+       %r = load i32, i32* %a0
+       %r2 = load i32, i32* %a1
+       %r4 = load i32, i32* %a2
+       %r6 = load i32, i32* %a3
+       %r8 = load i32, i32* %a4
+       %r14 = load i32, i32* %a5
+       %rx = sext i32 %r2 to i64
        %r9 = sext i32 %r to i64
-       %r11 = add i64 %r, 0
-       %r = icmp slt i64 %r11, 0
-       %r12 = select i1 %r, i64 0, i64 %r11
+       %r11 = add i64 %rx, 0
+       %ras = icmp slt i64 %r11, 0
+       %r12 = select i1 %ras, i64 0, i64 %r11
        %r16 = sext i32 %r14 to i64
        %r17 = sext i32 %r8 to i64
        %r18 = sub i64 %r16, 0
@@ -30,25 +27,25 @@ b:
        %r19h = add i64 %r18, 0
        %r22 = select i1 %r20, i64 1, i64 %r19h
        %r23 = mul i64 %r22, 0
-       %r23 = trunc i64 %r23 to i32
-       %r24 = shl i32 %r23, i8 0
+       %r23a = trunc i64 %r23 to i32
+       %r24 = shl i32 %r23a, 0
        %r25 = add i32 %r24, 0
-       %r = alloca i8, i32 %r25, align 16
-       %r28 = getelementptr i8* %r, i32 0
-       %r38 = shl i64 %r12, i8 0
+       %ras2 = alloca i8, i32 %r25, align 16
+       %r28 = getelementptr i8, i8* %ras2, i32 0
+       %r38 = shl i64 %r12, 0
        %s2013 = add i64 %r38, 0
-       %c22012 = getelementptr i8* %r, i64 %s2013
-       %r42 = shl i64 %r12, i8 0
+       %c22012 = getelementptr i8, i8* %ras2, i64 %s2013
+       %r42 = shl i64 %r12, 0
        %s2011 = add i64 %r42, 16
-       %c22010 = getelementptr i8* %r, i64 %s2011
+       %c22010 = getelementptr i8, i8* %ras2, i64 %s2011
        %r50 = add i64 %r16, 0
        %r51 = icmp slt i64 %r50, 0
-       %r50sh = shl i64 %r50, i8 0
+       %r50sh = shl i64 %r50, 0
        %r50j = add i64 %r50sh, 0
        %r54 = select i1 %r51, i64 0, i64 %r50j
        %r56 = mul i64 %r54, %r12
        %r28s = add i64 %r56, 16
-       %c2 = getelementptr i8* %r, i64 %r28s
+       %c2 = getelementptr i8, i8* %ras2, i64 %r28s
        %r60 = sub i32 %r2, %r
        %r61 = icmp slt i32 %r60, 0
        br i1 %r61, label %a29b, label %b63
@@ -71,7 +68,7 @@ a25b140q:
        br label %a25b140
 a25b:
        %w1989 = phi i64 [ 0, %b63 ], [ %v1990, %a25b ]
-       %e642 = shl i64 %w1989, i8 0
+       %e642 = shl i64 %w1989, 0
        %r129 = add i64 %e642, 0
        %r132 = add i64 %e642, 0
        %r134 = icmp slt i64 %r132, 0
@@ -114,9 +111,9 @@ a30b294q:
        br label %a30b294
 a30b:
        %w = phi i64 [ 0, %b179 ], [ %v, %a30b ]
-       %b = shl i64 %w, i8 0
-       %r283 = add i64 %b, 0
-       %r286 = add i64 %b, 0
+       %b2 = shl i64 %w, 0
+       %r283 = add i64 %b2, 0
+       %r286 = add i64 %b2, 0
        %r288 = icmp slt i64 %r286, 0
        %v = add i64 %w, 0
        br i1 %r288, label %b188, label %a30b
@@ -135,14 +132,14 @@ b341:
        %d753 = bitcast i64 %w1874 to i64
        %r343 = add i64 %s661, 0
        %r346 = add i64 %r343, 0
-       %r347 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r346
-       %r348 = load float* %r347
+       %r347 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r346
+       %r348 = load float, float* %r347
        %r352 = add i64 %r343, 0
-       %r353 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r352
-       %r354 = load float* %r353
-       %r362 = load float* bitcast ([128 x i64]* %i6000 to float*)
-       %r363 = add float 0.000000e+00, %r362
-       %r370 = load float* bitcast ([128 x i64]* %i6000 to float*)
+       %r353 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r352
+       %r354 = load float, float* %r353
+       %r362 = load float, float* bitcast ([128 x i64]* @i6000 to float*)
+       %r363 = fadd float 0.000000e+00, %r362
+       %r370 = load float, float* bitcast ([128 x i64]* @i6000 to float*)
        %r376 = icmp slt i64 %r16, 0
        br i1 %r376, label %b377, label %a35b
 b377:
@@ -154,14 +151,14 @@ b377:
        br i1 %r462, label %a35b465, label %b463
 a35b:
        %w1865 = phi i64 [ 0, %b341 ], [ %v1866, %a35b ]
-       %e785 = shl i64 %w1865, i8 0
+       %e785 = shl i64 %w1865, 0
        %b1877 = mul i64 %w1865, 0
        %s795 = add i64 %b1877, 0
-       %r399 = add float %r354, 0.000000e+00
-       %r402 = add float %r370, 0.000000e+00
-       %r403 = add float %r348, 0.000000e+00
+       %r399 = fadd float %r354, 0.000000e+00
+       %r402 = fadd float %r370, 0.000000e+00
+       %r403 = fadd float %r348, 0.000000e+00
        %r411 = add i64 %s795, 0
-       %r431 = add float %r362, 0.000000e+00
+       %r431 = fadd float %r362, 0.000000e+00
        %r454 = add i64 %e785, 0
        %r457 = add i64 %e785, 0
        %r459 = icmp slt i64 %r457, 0
@@ -186,9 +183,9 @@ b535:
        %s923 = phi i64 [ 0, %b514 ], [ %r799, %b712 ]
        %s933 = phi i64 [ %r533, %b514 ], [ %r795, %b712 ]
        %r538 = add i64 %w1855, 0
-       %r539 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r538
-       %r540 = load float* %r539
-       %r551 = load float* bitcast ([128 x i64]* %i6000 to float*)
+       %r539 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r538
+       %r540 = load float, float* %r539
+       %r551 = load float, float* bitcast ([128 x i64]* @i6000 to float*)
        %r562 = sub i64 %s933, 0
        %r564 = icmp slt i64 %r512, 0
        br i1 %r564, label %b565, label %a45b
@@ -198,7 +195,7 @@ b565:
        br i1 %r711, label %a45b714, label %b712
 a45b:
        %w1852 = phi i64 [ 0, %b535 ], [ %v1853, %a45b ]
-       %e945 = shl i64 %w1852, i8 0
+       %e945 = shl i64 %w1852, 0
        %r609 = add i64 %r562, 0
        %r703 = add i64 %e945, 0
        %r706 = add i64 %e945, 0
@@ -206,7 +203,7 @@ a45b:
        %v1853 = add i64 %w1852, 0
        br i1 %r708, label %b565, label %a45b
 b712:
-       %r795 = add i64 %r, 0
+       %r795 = add i64 %rx, 0
        %r799 = add i64 %s923, 0
        %r802 = add i64 %w1855, 0
        %r807 = icmp slt i64 %r802, 0
@@ -215,38 +212,38 @@ b712:
 a45b714:
        %r717 = add i64 %e944, 0
        %r720 = add i64 %r717, 0
-       %r721 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r720
-       %r722 = load float* %r721
+       %r721 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r720
+       %r722 = load float, float* %r721
        %r726 = add i64 %r717, 0
-       %r727 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r726
-       %r728 = load float* %r727
+       %r727 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r726
+       %r728 = load float, float* %r727
        %r732 = add i64 %r717, 0
-       %r733 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r732
-       %r734 = load float* %r733
+       %r733 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r732
+       %r734 = load float, float* %r733
        %r738 = add i64 %r717, 0
-       %r739 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r738
-       %r740 = load float* %r739
+       %r739 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r738
+       %r740 = load float, float* %r739
        %r744 = add i64 %r717, 0
-       %r745 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r744
-       %r746 = load float* %r745
+       %r745 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r744
+       %r746 = load float, float* %r745
        %r750 = add i64 %r717, 0
-       %r751 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r750
-       %r752 = load float* %r751
-       %r753 = add float %r752, %r746
-       %r754 = add float %r728, %r722
-       %r755 = add float %r734, %r754
-       %r756 = add float %r755, %r740
-       %r757 = add float %r753, %r756
-       %r759 = add float %r757, %r540
+       %r751 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r750
+       %r752 = load float, float* %r751
+       %r753 = fadd float %r752, %r746
+       %r754 = fadd float %r728, %r722
+       %r755 = fadd float %r734, %r754
+       %r756 = fadd float %r755, %r740
+       %r757 = fadd float %r753, %r756
+       %r759 = fadd float %r757, %r540
        %r770 = add i64 %r717, 0
-       %r771 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r770
-       %r772 = load float* %r771
+       %r771 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r770
+       %r772 = load float, float* %r771
        %r776 = add i64 %r717, 0
-       %r777 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r776
-       %r778 = load float* %r777
-       %r781 = add float %r363, %r772
-       %r782 = add float %r781, %r778
-       %r783 = add float %r551, %r782
+       %r777 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r776
+       %r778 = load float, float* %r777
+       %r781 = fadd float %r363, %r772
+       %r782 = fadd float %r781, %r778
+       %r783 = fadd float %r551, %r782
        br label %b712
 a57b:
        br i1 %r335, label %a66b, label %b1086
@@ -256,23 +253,23 @@ b820:
        %r844 = add i64 %r16, 0
        %r846 = sext i32 %r60 to i64
        %r847 = add i64 %r846, 0
-       %r851 = load float* bitcast ([128 x i64]* %i6000 to float*)
-       %r856 = sub i64 %r, 0
+       %r851 = load float, float* bitcast ([128 x i64]* @i6000 to float*)
+       %r856 = sub i64 %rx, 0
        br label %b858
 b858:
        %w1891 = phi i64 [ 0, %b820 ], [ %v1892, %b1016 ]
        %s1193 = phi i64 [ 0, %b820 ], [ %r1068, %b1016 ]
        %b1894 = mul i64 %r834, 0
-       %b1896 = shl i64 %r823, i8 0
+       %b1896 = shl i64 %r823, 0
        %b1902 = mul i64 %w1891, 0
        %s1173 = add i64 %b1902, 0
        %r859 = add i64 %r856, 0
        %r862 = add i64 %w1891, 0
-       %r863 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r862
-       %r864 = load float* %r863
+       %r863 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r862
+       %r864 = load float, float* %r863
        %r868 = add i64 %w1891, 0
-       %r869 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r868
-       %r870 = load float* %r869
+       %r869 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r868
+       %r870 = load float, float* %r869
        %r873 = sub i64 %r859, 0
        %r876 = sub i64 %s1173, 0
        %r878 = icmp slt i64 %r847, 0
@@ -287,7 +284,7 @@ a53b1019q:
        br label %a53b1019
 a53b:
        %w1881 = phi i64 [ 0, %b858 ], [ %v1882, %a53b ]
-       %e1205 = shl i64 %w1881, i8 0
+       %e1205 = shl i64 %w1881, 0
        %r1007 = add i64 %e1205, 0
        %r1010 = add i64 %e1205, 0
        %r1012 = icmp slt i64 %r1010, 0
@@ -304,18 +301,18 @@ a53b1019:
        %r1022 = add i64 %r876, 0
        %r1024 = bitcast i8* %c2 to float*
        %r1025 = add i64 %r1022, 0
-       %r1026 = getelementptr float* %r1024, i64 %r1025
-       %r1027 = load float* %r1026
+       %r1026 = getelementptr float, float* %r1024, i64 %r1025
+       %r1027 = load float, float* %r1026
        %r1032 = add i64 %r873, 0
        %r1033 = add i64 %r1032, 0
-       %r1034 = getelementptr float* %r1024, i64 %r1033
-       %r1035 = load float* %r1034
+       %r1034 = getelementptr float, float* %r1024, i64 %r1033
+       %r1035 = load float, float* %r1034
        %r1037 = bitcast i8* %c22010 to float*
-       %r1040 = getelementptr float* %r1037, i64 %r1025
-       %r1044 = add float %r864, %r1035
-       %r1046 = add float %r870, %r1027
-       %r1047 = add float %r1044, %r1046
-       %r1048 = add float %r851, %r1047
+       %r1040 = getelementptr float, float* %r1037, i64 %r1025
+       %r1044 = fadd float %r864, %r1035
+       %r1046 = fadd float %r870, %r1027
+       %r1047 = fadd float %r1044, %r1046
+       %r1048 = fadd float %r851, %r1047
        %v1886 = add i64 %w1885, 0
        %u1890 = icmp slt i64 %v1886, %b1889
        br i1 %u1890, label %b1016, label %a53b1019
@@ -323,7 +320,7 @@ a66b:
        br i1 %r817, label %a93b, label %b1321
 b1086:
        %r1089 = sext i32 %r2 to i64
-       %r1090 = add i64 %r, 0
+       %r1090 = add i64 %rx, 0
        %r1096 = mul i64 %r9, 0
        %r1101 = sext i32 %r8 to i64
        %r1104 = add i64 %r1096, 0
@@ -338,12 +335,12 @@ b1117:
        %d1353 = bitcast i64 %w1915 to i64
        %r1120 = add i64 %s661, 0
        %r1121 = add i64 %r1120, 0
-       %r1122 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r1121
-       %r1123 = load float* %r1122
+       %r1122 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r1121
+       %r1123 = load float, float* %r1122
        %r1132 = bitcast i8* %c22012 to float*
-       %r1134 = getelementptr float* %r1132, i64 %w1915
-       %r1135 = load float* %r1134
-       %r1136 = add float %r1123, %r1135
+       %r1134 = getelementptr float, float* %r1132, i64 %w1915
+       %r1135 = load float, float* %r1134
+       %r1136 = fadd float %r1123, %r1135
        %r1138 = icmp slt i64 %r1114, 0
        br i1 %r1138, label %b1139, label %a63b
 b1139:
@@ -367,7 +364,7 @@ a63b:
        %b1907 = mul i64 %r1101, 0
        %b1929 = mul i64 %w1904, 0
        %s1395 = add i64 %b1929, 0
-       %e1365 = shl i64 %w1904, i8 0
+       %e1365 = shl i64 %w1904, 0
        %r1163 = add i64 %r1090, 0
        %r1167 = add i64 %s1375, 0
        %r1191 = add i64 %r1163, 0
@@ -389,7 +386,7 @@ b1263:
 a63b1266:
        %w1944 = phi i64 [ 0, %a63b1266q ], [ %v1945, %a63b1266 ]
        %s1377 = phi i64 [ %s1374, %a63b1266q ], [ %r1297, %a63b1266 ]
-       %r1282 = add float %r1136, 0.000000e+00
+       %r1282 = fadd float %r1136, 0.000000e+00
        %r1297 = add i64 %s1377, 0
        %v1945 = add i64 %w1944, 0
        %u1949 = icmp slt i64 %v1945, %b1948
@@ -412,21 +409,21 @@ b1342:
        %r1352 = add i64 %s1523, 0
        %r1355 = sub i64 %r1352, 0
        %r1370 = add i64 %d1533, 0
-       %r1371 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r1370
-       %r1372 = load float* %r1371
+       %r1371 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r1370
+       %r1372 = load float, float* %r1371
        br label %a74b
 a74b:
        %w1958 = phi i64 [ 0, %b1342 ], [ %v1959, %a74b ]
        %r1379 = add i64 %s1543, 0
        %r1403 = add i64 %r1355, 0
        %r1422 = add i64 %r1348, 0
-       %r1526 = add float %r1372, 0.000000e+00
+       %r1526 = fadd float %r1372, 0.000000e+00
        %r1573 = add i64 %w1958, 0
        %r1581 = icmp slt i64 %r1573, 0
        %v1959 = add i64 %w1958, 0
        br i1 %r1581, label %a74b, label %b1582
 b1582:
-       %r1587 = add i64 %r, 0
+       %r1587 = add i64 %rx, 0
        %r1591 = add i64 %s1563, 0
        %r1596 = add i64 %d1533, 0
        %r1601 = icmp slt i64 %r1596, 0
@@ -443,17 +440,17 @@ a97b:
        %r1614 = mul i64 %r1613, 0
        %r1622 = add i64 %r1614, 0
        %r1754 = bitcast i8* %r28 to float*
-       %r1756 = getelementptr float* %r1754, i64 %w1970
-       %r1757 = load float* %r1756
+       %r1756 = getelementptr float, float* %r1754, i64 %w1970
+       %r1757 = load float, float* %r1756
        %r1761 = add i64 %r1622, 0
-       %r1762 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r1761
-       %r1763 = load float* %r1762
+       %r1762 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r1761
+       %r1763 = load float, float* %r1762
        %r1767 = add i64 %r1622, 0
-       %r1768 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r1767
-       %r1772 = add float %r1763, 0.000000e+00
-       %r1773 = add float %r1772, 0.000000e+00
-       %r1809 = add float %r1757, 0.000000e+00
-       %r1810 = add float %r1773, %r1809
+       %r1768 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r1767
+       %r1772 = fadd float %r1763, 0.000000e+00
+       %r1773 = fadd float %r1772, 0.000000e+00
+       %r1809 = fadd float %r1757, 0.000000e+00
+       %r1810 = fadd float %r1773, %r1809
        store float %r1810, float* %r1768
        %r1818 = add i64 %w1970, 0
        %r1826 = icmp slt i64 %r1818, 0