-; 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
%r6 = load i32* %a3
%r8 = load i32* %a4
%r14 = load i32* %a5
- %r = sext i32 %r2 to i64
+ %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
%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* %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* %ras2, i64 %s2013
+ %r42 = shl i64 %r12, 0
%s2011 = add i64 %r42, 16
- %c22010 = getelementptr i8* %r, i64 %s2011
+ %c22010 = getelementptr 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* %ras2, i64 %r28s
%r60 = sub i32 %r2, %r
%r61 = icmp slt i32 %r60, 0
br i1 %r61, label %a29b, label %b63
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
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
%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
+ %r347 = getelementptr float* bitcast ([128 x i64]* @i6000 to float*), i64 %r346
%r348 = load float* %r347
%r352 = add i64 %r343, 0
- %r353 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r352
+ %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*)
+ %r362 = load float* bitcast ([128 x i64]* @i6000 to float*)
+ %r363 = fadd float 0.000000e+00, %r362
+ %r370 = load float* bitcast ([128 x i64]* @i6000 to float*)
%r376 = icmp slt i64 %r16, 0
br i1 %r376, label %b377, label %a35b
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
%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
+ %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*)
+ %r551 = load 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
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
%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
a45b714:
%r717 = add i64 %e944, 0
%r720 = add i64 %r717, 0
- %r721 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r720
+ %r721 = getelementptr float* bitcast ([128 x i64]* @i6000 to float*), i64 %r720
%r722 = load float* %r721
%r726 = add i64 %r717, 0
- %r727 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r726
+ %r727 = getelementptr float* bitcast ([128 x i64]* @i6000 to float*), i64 %r726
%r728 = load float* %r727
%r732 = add i64 %r717, 0
- %r733 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r732
+ %r733 = getelementptr float* bitcast ([128 x i64]* @i6000 to float*), i64 %r732
%r734 = load float* %r733
%r738 = add i64 %r717, 0
- %r739 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r738
+ %r739 = getelementptr float* bitcast ([128 x i64]* @i6000 to float*), i64 %r738
%r740 = load float* %r739
%r744 = add i64 %r717, 0
- %r745 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r744
+ %r745 = getelementptr float* bitcast ([128 x i64]* @i6000 to float*), i64 %r744
%r746 = load float* %r745
%r750 = add i64 %r717, 0
- %r751 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r750
+ %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
+ %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
+ %r771 = getelementptr float* bitcast ([128 x i64]* @i6000 to float*), i64 %r770
%r772 = load float* %r771
%r776 = add i64 %r717, 0
- %r777 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r776
+ %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
+ %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
%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* 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
+ %r863 = getelementptr float* bitcast ([128 x i64]* @i6000 to float*), i64 %r862
%r864 = load float* %r863
%r868 = add i64 %w1891, 0
- %r869 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r868
+ %r869 = getelementptr float* bitcast ([128 x i64]* @i6000 to float*), i64 %r868
%r870 = load float* %r869
%r873 = sub i64 %r859, 0
%r876 = sub i64 %s1173, 0
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
%r1035 = load 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
+ %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
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
%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
+ %r1122 = getelementptr float* bitcast ([128 x i64]* @i6000 to float*), i64 %r1121
%r1123 = load float* %r1122
%r1132 = bitcast i8* %c22012 to float*
%r1134 = getelementptr float* %r1132, i64 %w1915
%r1135 = load float* %r1134
- %r1136 = add float %r1123, %r1135
+ %r1136 = fadd float %r1123, %r1135
%r1138 = icmp slt i64 %r1114, 0
br i1 %r1138, label %b1139, label %a63b
b1139:
%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
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
%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
+ %r1371 = getelementptr float* bitcast ([128 x i64]* @i6000 to float*), i64 %r1370
%r1372 = load float* %r1371
br label %a74b
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
%r1756 = getelementptr float* %r1754, i64 %w1970
%r1757 = load float* %r1756
%r1761 = add i64 %r1622, 0
- %r1762 = getelementptr float* bitcast ([128 x i64]* %i6000 to float*), i64 %r1761
+ %r1762 = getelementptr float* bitcast ([128 x i64]* @i6000 to float*), i64 %r1761
%r1763 = load 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* 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