602 lines · plain
1; Test that the correct instruction is chosen for spill and reload by trying2; to have 33 live MSA registers simultaneously3 4; RUN: llc -mtriple=mips-elf -mattr=+msa,+fp64,+mips32r2 < %s | FileCheck %s5; RUN: llc -mtriple=mipsel-elf -mattr=+msa,+fp64,+mips32r2 < %s | FileCheck %s6 7define i32 @test_i8(ptr %p0, ptr %q1) nounwind {8entry:9 %p1 = getelementptr <16 x i8>, ptr %p0, i32 110 %p2 = getelementptr <16 x i8>, ptr %p0, i32 211 %p3 = getelementptr <16 x i8>, ptr %p0, i32 312 %p4 = getelementptr <16 x i8>, ptr %p0, i32 413 %p5 = getelementptr <16 x i8>, ptr %p0, i32 514 %p6 = getelementptr <16 x i8>, ptr %p0, i32 615 %p7 = getelementptr <16 x i8>, ptr %p0, i32 716 %p8 = getelementptr <16 x i8>, ptr %p0, i32 817 %p9 = getelementptr <16 x i8>, ptr %p0, i32 918 %p10 = getelementptr <16 x i8>, ptr %p0, i32 1019 %p11 = getelementptr <16 x i8>, ptr %p0, i32 1120 %p12 = getelementptr <16 x i8>, ptr %p0, i32 1221 %p13 = getelementptr <16 x i8>, ptr %p0, i32 1322 %p14 = getelementptr <16 x i8>, ptr %p0, i32 1423 %p15 = getelementptr <16 x i8>, ptr %p0, i32 1524 %p16 = getelementptr <16 x i8>, ptr %p0, i32 1625 %p17 = getelementptr <16 x i8>, ptr %p0, i32 1726 %p18 = getelementptr <16 x i8>, ptr %p0, i32 1827 %p19 = getelementptr <16 x i8>, ptr %p0, i32 1928 %p20 = getelementptr <16 x i8>, ptr %p0, i32 2029 %p21 = getelementptr <16 x i8>, ptr %p0, i32 2130 %p22 = getelementptr <16 x i8>, ptr %p0, i32 2231 %p23 = getelementptr <16 x i8>, ptr %p0, i32 2332 %p24 = getelementptr <16 x i8>, ptr %p0, i32 2433 %p25 = getelementptr <16 x i8>, ptr %p0, i32 2534 %p26 = getelementptr <16 x i8>, ptr %p0, i32 2635 %p27 = getelementptr <16 x i8>, ptr %p0, i32 2736 %p28 = getelementptr <16 x i8>, ptr %p0, i32 2837 %p29 = getelementptr <16 x i8>, ptr %p0, i32 2938 %p30 = getelementptr <16 x i8>, ptr %p0, i32 3039 %p31 = getelementptr <16 x i8>, ptr %p0, i32 3140 %p32 = getelementptr <16 x i8>, ptr %p0, i32 3241 %p33 = getelementptr <16 x i8>, ptr %p0, i32 3342 %0 = load <16 x i8>, ptr %p0, align 1643 %1 = load <16 x i8>, ptr %p1, align 1644 %2 = load <16 x i8>, ptr %p2, align 1645 %3 = load <16 x i8>, ptr %p3, align 1646 %4 = load <16 x i8>, ptr %p4, align 1647 %5 = load <16 x i8>, ptr %p5, align 1648 %6 = load <16 x i8>, ptr %p6, align 1649 %7 = load <16 x i8>, ptr %p7, align 1650 %8 = load <16 x i8>, ptr %p8, align 1651 %9 = load <16 x i8>, ptr %p9, align 1652 %10 = load <16 x i8>, ptr %p10, align 1653 %11 = load <16 x i8>, ptr %p11, align 1654 %12 = load <16 x i8>, ptr %p12, align 1655 %13 = load <16 x i8>, ptr %p13, align 1656 %14 = load <16 x i8>, ptr %p14, align 1657 %15 = load <16 x i8>, ptr %p15, align 1658 %16 = load <16 x i8>, ptr %p16, align 1659 %17 = load <16 x i8>, ptr %p17, align 1660 %18 = load <16 x i8>, ptr %p18, align 1661 %19 = load <16 x i8>, ptr %p19, align 1662 %20 = load <16 x i8>, ptr %p20, align 1663 %21 = load <16 x i8>, ptr %p21, align 1664 %22 = load <16 x i8>, ptr %p22, align 1665 %23 = load <16 x i8>, ptr %p23, align 1666 %24 = load <16 x i8>, ptr %p24, align 1667 %25 = load <16 x i8>, ptr %p25, align 1668 %26 = load <16 x i8>, ptr %p26, align 1669 %27 = load <16 x i8>, ptr %p27, align 1670 %28 = load <16 x i8>, ptr %p28, align 1671 %29 = load <16 x i8>, ptr %p29, align 1672 %30 = load <16 x i8>, ptr %p30, align 1673 %31 = load <16 x i8>, ptr %p31, align 1674 %32 = load <16 x i8>, ptr %p32, align 1675 %33 = load <16 x i8>, ptr %p33, align 1676 %r1 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %0, <16 x i8> %1)77 %r2 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r1, <16 x i8> %2)78 %r3 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r2, <16 x i8> %3)79 %r4 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r3, <16 x i8> %4)80 %r5 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r4, <16 x i8> %5)81 %r6 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r5, <16 x i8> %6)82 %r7 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r6, <16 x i8> %7)83 %r8 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r7, <16 x i8> %8)84 %r9 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r8, <16 x i8> %9)85 %r10 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r9, <16 x i8> %10)86 %r11 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r10, <16 x i8> %11)87 %r12 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r11, <16 x i8> %12)88 %r13 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r12, <16 x i8> %13)89 %r14 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r13, <16 x i8> %14)90 %r15 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r14, <16 x i8> %15)91 %r16 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r15, <16 x i8> %16)92 %r17 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r16, <16 x i8> %17)93 %r18 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r17, <16 x i8> %18)94 %r19 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r18, <16 x i8> %19)95 %r20 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r19, <16 x i8> %20)96 %r21 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r20, <16 x i8> %21)97 %r22 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r21, <16 x i8> %22)98 %r23 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r22, <16 x i8> %23)99 %r24 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r23, <16 x i8> %24)100 %r25 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r24, <16 x i8> %25)101 %r26 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r25, <16 x i8> %26)102 %r27 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r26, <16 x i8> %27)103 %r28 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r27, <16 x i8> %28)104 %r29 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r28, <16 x i8> %29)105 %r30 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r29, <16 x i8> %30)106 %r31 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r30, <16 x i8> %31)107 %r32 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r31, <16 x i8> %32)108 %r33 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r32, <16 x i8> %33)109 %rx1 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r33, <16 x i8> %1)110 %rx2 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx1, <16 x i8> %2)111 %rx3 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx2, <16 x i8> %3)112 %rx4 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx3, <16 x i8> %4)113 %rx5 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx4, <16 x i8> %5)114 %rx6 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx5, <16 x i8> %6)115 %rx7 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx6, <16 x i8> %7)116 %rx8 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx7, <16 x i8> %8)117 %rx9 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx8, <16 x i8> %9)118 %rx10 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx9, <16 x i8> %10)119 %rx11 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx10, <16 x i8> %11)120 %rx12 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx11, <16 x i8> %12)121 %rx13 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx12, <16 x i8> %13)122 %rx14 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx13, <16 x i8> %14)123 %rx15 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx14, <16 x i8> %15)124 %rx16 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx15, <16 x i8> %16)125 %rx17 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx16, <16 x i8> %17)126 %rx18 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx17, <16 x i8> %18)127 %rx19 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx18, <16 x i8> %19)128 %rx20 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx19, <16 x i8> %20)129 %rx21 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx20, <16 x i8> %21)130 %rx22 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx21, <16 x i8> %22)131 %rx23 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx22, <16 x i8> %23)132 %rx24 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx23, <16 x i8> %24)133 %rx25 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx24, <16 x i8> %25)134 %rx26 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx25, <16 x i8> %26)135 %rx27 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx26, <16 x i8> %27)136 %rx28 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx27, <16 x i8> %28)137 %rx29 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx28, <16 x i8> %29)138 %rx30 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx29, <16 x i8> %30)139 %rx31 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx30, <16 x i8> %31)140 %rx32 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx31, <16 x i8> %32)141 %rx33 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx32, <16 x i8> %33)142 %res = call i32 @llvm.mips.copy.s.b(<16 x i8> %rx33, i32 0)143 ret i32 %res144}145 146declare <16 x i8> @llvm.mips.addv.b(<16 x i8>, <16 x i8>) nounwind147declare i32 @llvm.mips.copy.s.b(<16 x i8>, i32) nounwind148 149; CHECK: test_i8:150; CHECK: st.b {{.*}} Spill151; CHECK: st.b {{.*}} Spill152; CHECK: ld.b {{.*}} Reload153; CHECK: ld.b {{.*}} Reload154; CHECK: .size155 156define i32 @test_i16(ptr %p0, ptr %q1) nounwind {157entry:158 %p1 = getelementptr <8 x i16>, ptr %p0, i32 1159 %p2 = getelementptr <8 x i16>, ptr %p0, i32 2160 %p3 = getelementptr <8 x i16>, ptr %p0, i32 3161 %p4 = getelementptr <8 x i16>, ptr %p0, i32 4162 %p5 = getelementptr <8 x i16>, ptr %p0, i32 5163 %p6 = getelementptr <8 x i16>, ptr %p0, i32 6164 %p7 = getelementptr <8 x i16>, ptr %p0, i32 7165 %p8 = getelementptr <8 x i16>, ptr %p0, i32 8166 %p9 = getelementptr <8 x i16>, ptr %p0, i32 9167 %p10 = getelementptr <8 x i16>, ptr %p0, i32 10168 %p11 = getelementptr <8 x i16>, ptr %p0, i32 11169 %p12 = getelementptr <8 x i16>, ptr %p0, i32 12170 %p13 = getelementptr <8 x i16>, ptr %p0, i32 13171 %p14 = getelementptr <8 x i16>, ptr %p0, i32 14172 %p15 = getelementptr <8 x i16>, ptr %p0, i32 15173 %p16 = getelementptr <8 x i16>, ptr %p0, i32 16174 %p17 = getelementptr <8 x i16>, ptr %p0, i32 17175 %p18 = getelementptr <8 x i16>, ptr %p0, i32 18176 %p19 = getelementptr <8 x i16>, ptr %p0, i32 19177 %p20 = getelementptr <8 x i16>, ptr %p0, i32 20178 %p21 = getelementptr <8 x i16>, ptr %p0, i32 21179 %p22 = getelementptr <8 x i16>, ptr %p0, i32 22180 %p23 = getelementptr <8 x i16>, ptr %p0, i32 23181 %p24 = getelementptr <8 x i16>, ptr %p0, i32 24182 %p25 = getelementptr <8 x i16>, ptr %p0, i32 25183 %p26 = getelementptr <8 x i16>, ptr %p0, i32 26184 %p27 = getelementptr <8 x i16>, ptr %p0, i32 27185 %p28 = getelementptr <8 x i16>, ptr %p0, i32 28186 %p29 = getelementptr <8 x i16>, ptr %p0, i32 29187 %p30 = getelementptr <8 x i16>, ptr %p0, i32 30188 %p31 = getelementptr <8 x i16>, ptr %p0, i32 31189 %p32 = getelementptr <8 x i16>, ptr %p0, i32 32190 %p33 = getelementptr <8 x i16>, ptr %p0, i32 33191 %0 = load <8 x i16>, ptr %p0, align 16192 %1 = load <8 x i16>, ptr %p1, align 16193 %2 = load <8 x i16>, ptr %p2, align 16194 %3 = load <8 x i16>, ptr %p3, align 16195 %4 = load <8 x i16>, ptr %p4, align 16196 %5 = load <8 x i16>, ptr %p5, align 16197 %6 = load <8 x i16>, ptr %p6, align 16198 %7 = load <8 x i16>, ptr %p7, align 16199 %8 = load <8 x i16>, ptr %p8, align 16200 %9 = load <8 x i16>, ptr %p9, align 16201 %10 = load <8 x i16>, ptr %p10, align 16202 %11 = load <8 x i16>, ptr %p11, align 16203 %12 = load <8 x i16>, ptr %p12, align 16204 %13 = load <8 x i16>, ptr %p13, align 16205 %14 = load <8 x i16>, ptr %p14, align 16206 %15 = load <8 x i16>, ptr %p15, align 16207 %16 = load <8 x i16>, ptr %p16, align 16208 %17 = load <8 x i16>, ptr %p17, align 16209 %18 = load <8 x i16>, ptr %p18, align 16210 %19 = load <8 x i16>, ptr %p19, align 16211 %20 = load <8 x i16>, ptr %p20, align 16212 %21 = load <8 x i16>, ptr %p21, align 16213 %22 = load <8 x i16>, ptr %p22, align 16214 %23 = load <8 x i16>, ptr %p23, align 16215 %24 = load <8 x i16>, ptr %p24, align 16216 %25 = load <8 x i16>, ptr %p25, align 16217 %26 = load <8 x i16>, ptr %p26, align 16218 %27 = load <8 x i16>, ptr %p27, align 16219 %28 = load <8 x i16>, ptr %p28, align 16220 %29 = load <8 x i16>, ptr %p29, align 16221 %30 = load <8 x i16>, ptr %p30, align 16222 %31 = load <8 x i16>, ptr %p31, align 16223 %32 = load <8 x i16>, ptr %p32, align 16224 %33 = load <8 x i16>, ptr %p33, align 16225 %r1 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %0, <8 x i16> %1)226 %r2 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r1, <8 x i16> %2)227 %r3 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r2, <8 x i16> %3)228 %r4 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r3, <8 x i16> %4)229 %r5 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r4, <8 x i16> %5)230 %r6 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r5, <8 x i16> %6)231 %r7 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r6, <8 x i16> %7)232 %r8 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r7, <8 x i16> %8)233 %r9 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r8, <8 x i16> %9)234 %r10 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r9, <8 x i16> %10)235 %r11 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r10, <8 x i16> %11)236 %r12 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r11, <8 x i16> %12)237 %r13 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r12, <8 x i16> %13)238 %r14 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r13, <8 x i16> %14)239 %r15 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r14, <8 x i16> %15)240 %r16 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r15, <8 x i16> %16)241 %r17 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r16, <8 x i16> %17)242 %r18 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r17, <8 x i16> %18)243 %r19 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r18, <8 x i16> %19)244 %r20 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r19, <8 x i16> %20)245 %r21 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r20, <8 x i16> %21)246 %r22 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r21, <8 x i16> %22)247 %r23 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r22, <8 x i16> %23)248 %r24 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r23, <8 x i16> %24)249 %r25 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r24, <8 x i16> %25)250 %r26 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r25, <8 x i16> %26)251 %r27 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r26, <8 x i16> %27)252 %r28 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r27, <8 x i16> %28)253 %r29 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r28, <8 x i16> %29)254 %r30 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r29, <8 x i16> %30)255 %r31 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r30, <8 x i16> %31)256 %r32 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r31, <8 x i16> %32)257 %r33 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r32, <8 x i16> %33)258 %rx1 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r33, <8 x i16> %1)259 %rx2 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx1, <8 x i16> %2)260 %rx3 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx2, <8 x i16> %3)261 %rx4 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx3, <8 x i16> %4)262 %rx5 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx4, <8 x i16> %5)263 %rx6 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx5, <8 x i16> %6)264 %rx7 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx6, <8 x i16> %7)265 %rx8 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx7, <8 x i16> %8)266 %rx9 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx8, <8 x i16> %9)267 %rx10 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx9, <8 x i16> %10)268 %rx11 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx10, <8 x i16> %11)269 %rx12 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx11, <8 x i16> %12)270 %rx13 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx12, <8 x i16> %13)271 %rx14 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx13, <8 x i16> %14)272 %rx15 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx14, <8 x i16> %15)273 %rx16 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx15, <8 x i16> %16)274 %rx17 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx16, <8 x i16> %17)275 %rx18 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx17, <8 x i16> %18)276 %rx19 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx18, <8 x i16> %19)277 %rx20 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx19, <8 x i16> %20)278 %rx21 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx20, <8 x i16> %21)279 %rx22 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx21, <8 x i16> %22)280 %rx23 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx22, <8 x i16> %23)281 %rx24 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx23, <8 x i16> %24)282 %rx25 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx24, <8 x i16> %25)283 %rx26 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx25, <8 x i16> %26)284 %rx27 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx26, <8 x i16> %27)285 %rx28 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx27, <8 x i16> %28)286 %rx29 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx28, <8 x i16> %29)287 %rx30 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx29, <8 x i16> %30)288 %rx31 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx30, <8 x i16> %31)289 %rx32 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx31, <8 x i16> %32)290 %rx33 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx32, <8 x i16> %33)291 %res = call i32 @llvm.mips.copy.s.h(<8 x i16> %rx33, i32 0)292 ret i32 %res293}294 295declare <8 x i16> @llvm.mips.addv.h(<8 x i16>, <8 x i16>) nounwind296declare i32 @llvm.mips.copy.s.h(<8 x i16>, i32) nounwind297 298; CHECK: test_i16:299; CHECK: st.h {{.*}} Spill300; CHECK: st.h {{.*}} Spill301; CHECK: ld.h {{.*}} Reload302; CHECK: ld.h {{.*}} Reload303; CHECK: .size304 305define i32 @test_i32(ptr %p0, ptr %q1) nounwind {306entry:307 %p1 = getelementptr <4 x i32>, ptr %p0, i32 1308 %p2 = getelementptr <4 x i32>, ptr %p0, i32 2309 %p3 = getelementptr <4 x i32>, ptr %p0, i32 3310 %p4 = getelementptr <4 x i32>, ptr %p0, i32 4311 %p5 = getelementptr <4 x i32>, ptr %p0, i32 5312 %p6 = getelementptr <4 x i32>, ptr %p0, i32 6313 %p7 = getelementptr <4 x i32>, ptr %p0, i32 7314 %p8 = getelementptr <4 x i32>, ptr %p0, i32 8315 %p9 = getelementptr <4 x i32>, ptr %p0, i32 9316 %p10 = getelementptr <4 x i32>, ptr %p0, i32 10317 %p11 = getelementptr <4 x i32>, ptr %p0, i32 11318 %p12 = getelementptr <4 x i32>, ptr %p0, i32 12319 %p13 = getelementptr <4 x i32>, ptr %p0, i32 13320 %p14 = getelementptr <4 x i32>, ptr %p0, i32 14321 %p15 = getelementptr <4 x i32>, ptr %p0, i32 15322 %p16 = getelementptr <4 x i32>, ptr %p0, i32 16323 %p17 = getelementptr <4 x i32>, ptr %p0, i32 17324 %p18 = getelementptr <4 x i32>, ptr %p0, i32 18325 %p19 = getelementptr <4 x i32>, ptr %p0, i32 19326 %p20 = getelementptr <4 x i32>, ptr %p0, i32 20327 %p21 = getelementptr <4 x i32>, ptr %p0, i32 21328 %p22 = getelementptr <4 x i32>, ptr %p0, i32 22329 %p23 = getelementptr <4 x i32>, ptr %p0, i32 23330 %p24 = getelementptr <4 x i32>, ptr %p0, i32 24331 %p25 = getelementptr <4 x i32>, ptr %p0, i32 25332 %p26 = getelementptr <4 x i32>, ptr %p0, i32 26333 %p27 = getelementptr <4 x i32>, ptr %p0, i32 27334 %p28 = getelementptr <4 x i32>, ptr %p0, i32 28335 %p29 = getelementptr <4 x i32>, ptr %p0, i32 29336 %p30 = getelementptr <4 x i32>, ptr %p0, i32 30337 %p31 = getelementptr <4 x i32>, ptr %p0, i32 31338 %p32 = getelementptr <4 x i32>, ptr %p0, i32 32339 %p33 = getelementptr <4 x i32>, ptr %p0, i32 33340 %0 = load <4 x i32>, ptr %p0, align 16341 %1 = load <4 x i32>, ptr %p1, align 16342 %2 = load <4 x i32>, ptr %p2, align 16343 %3 = load <4 x i32>, ptr %p3, align 16344 %4 = load <4 x i32>, ptr %p4, align 16345 %5 = load <4 x i32>, ptr %p5, align 16346 %6 = load <4 x i32>, ptr %p6, align 16347 %7 = load <4 x i32>, ptr %p7, align 16348 %8 = load <4 x i32>, ptr %p8, align 16349 %9 = load <4 x i32>, ptr %p9, align 16350 %10 = load <4 x i32>, ptr %p10, align 16351 %11 = load <4 x i32>, ptr %p11, align 16352 %12 = load <4 x i32>, ptr %p12, align 16353 %13 = load <4 x i32>, ptr %p13, align 16354 %14 = load <4 x i32>, ptr %p14, align 16355 %15 = load <4 x i32>, ptr %p15, align 16356 %16 = load <4 x i32>, ptr %p16, align 16357 %17 = load <4 x i32>, ptr %p17, align 16358 %18 = load <4 x i32>, ptr %p18, align 16359 %19 = load <4 x i32>, ptr %p19, align 16360 %20 = load <4 x i32>, ptr %p20, align 16361 %21 = load <4 x i32>, ptr %p21, align 16362 %22 = load <4 x i32>, ptr %p22, align 16363 %23 = load <4 x i32>, ptr %p23, align 16364 %24 = load <4 x i32>, ptr %p24, align 16365 %25 = load <4 x i32>, ptr %p25, align 16366 %26 = load <4 x i32>, ptr %p26, align 16367 %27 = load <4 x i32>, ptr %p27, align 16368 %28 = load <4 x i32>, ptr %p28, align 16369 %29 = load <4 x i32>, ptr %p29, align 16370 %30 = load <4 x i32>, ptr %p30, align 16371 %31 = load <4 x i32>, ptr %p31, align 16372 %32 = load <4 x i32>, ptr %p32, align 16373 %33 = load <4 x i32>, ptr %p33, align 16374 %r1 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %0, <4 x i32> %1)375 %r2 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r1, <4 x i32> %2)376 %r3 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r2, <4 x i32> %3)377 %r4 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r3, <4 x i32> %4)378 %r5 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r4, <4 x i32> %5)379 %r6 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r5, <4 x i32> %6)380 %r7 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r6, <4 x i32> %7)381 %r8 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r7, <4 x i32> %8)382 %r9 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r8, <4 x i32> %9)383 %r10 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r9, <4 x i32> %10)384 %r11 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r10, <4 x i32> %11)385 %r12 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r11, <4 x i32> %12)386 %r13 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r12, <4 x i32> %13)387 %r14 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r13, <4 x i32> %14)388 %r15 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r14, <4 x i32> %15)389 %r16 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r15, <4 x i32> %16)390 %r17 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r16, <4 x i32> %17)391 %r18 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r17, <4 x i32> %18)392 %r19 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r18, <4 x i32> %19)393 %r20 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r19, <4 x i32> %20)394 %r21 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r20, <4 x i32> %21)395 %r22 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r21, <4 x i32> %22)396 %r23 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r22, <4 x i32> %23)397 %r24 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r23, <4 x i32> %24)398 %r25 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r24, <4 x i32> %25)399 %r26 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r25, <4 x i32> %26)400 %r27 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r26, <4 x i32> %27)401 %r28 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r27, <4 x i32> %28)402 %r29 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r28, <4 x i32> %29)403 %r30 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r29, <4 x i32> %30)404 %r31 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r30, <4 x i32> %31)405 %r32 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r31, <4 x i32> %32)406 %r33 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r32, <4 x i32> %33)407 %rx1 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r33, <4 x i32> %1)408 %rx2 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx1, <4 x i32> %2)409 %rx3 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx2, <4 x i32> %3)410 %rx4 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx3, <4 x i32> %4)411 %rx5 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx4, <4 x i32> %5)412 %rx6 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx5, <4 x i32> %6)413 %rx7 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx6, <4 x i32> %7)414 %rx8 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx7, <4 x i32> %8)415 %rx9 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx8, <4 x i32> %9)416 %rx10 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx9, <4 x i32> %10)417 %rx11 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx10, <4 x i32> %11)418 %rx12 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx11, <4 x i32> %12)419 %rx13 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx12, <4 x i32> %13)420 %rx14 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx13, <4 x i32> %14)421 %rx15 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx14, <4 x i32> %15)422 %rx16 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx15, <4 x i32> %16)423 %rx17 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx16, <4 x i32> %17)424 %rx18 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx17, <4 x i32> %18)425 %rx19 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx18, <4 x i32> %19)426 %rx20 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx19, <4 x i32> %20)427 %rx21 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx20, <4 x i32> %21)428 %rx22 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx21, <4 x i32> %22)429 %rx23 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx22, <4 x i32> %23)430 %rx24 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx23, <4 x i32> %24)431 %rx25 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx24, <4 x i32> %25)432 %rx26 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx25, <4 x i32> %26)433 %rx27 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx26, <4 x i32> %27)434 %rx28 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx27, <4 x i32> %28)435 %rx29 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx28, <4 x i32> %29)436 %rx30 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx29, <4 x i32> %30)437 %rx31 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx30, <4 x i32> %31)438 %rx32 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx31, <4 x i32> %32)439 %rx33 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx32, <4 x i32> %33)440 %res = call i32 @llvm.mips.copy.s.w(<4 x i32> %rx33, i32 0)441 ret i32 %res442}443 444declare <4 x i32> @llvm.mips.addv.w(<4 x i32>, <4 x i32>) nounwind445declare i32 @llvm.mips.copy.s.w(<4 x i32>, i32) nounwind446 447; CHECK: test_i32:448; CHECK: st.w {{.*}} Spill449; CHECK: st.w {{.*}} Spill450; CHECK: ld.w {{.*}} Reload451; CHECK: ld.w {{.*}} Reload452; CHECK: .size453 454define i32 @test_i64(ptr %p0, ptr %q1) nounwind {455entry:456 %p1 = getelementptr <2 x i64>, ptr %p0, i32 1457 %p2 = getelementptr <2 x i64>, ptr %p0, i32 2458 %p3 = getelementptr <2 x i64>, ptr %p0, i32 3459 %p4 = getelementptr <2 x i64>, ptr %p0, i32 4460 %p5 = getelementptr <2 x i64>, ptr %p0, i32 5461 %p6 = getelementptr <2 x i64>, ptr %p0, i32 6462 %p7 = getelementptr <2 x i64>, ptr %p0, i32 7463 %p8 = getelementptr <2 x i64>, ptr %p0, i32 8464 %p9 = getelementptr <2 x i64>, ptr %p0, i32 9465 %p10 = getelementptr <2 x i64>, ptr %p0, i32 10466 %p11 = getelementptr <2 x i64>, ptr %p0, i32 11467 %p12 = getelementptr <2 x i64>, ptr %p0, i32 12468 %p13 = getelementptr <2 x i64>, ptr %p0, i32 13469 %p14 = getelementptr <2 x i64>, ptr %p0, i32 14470 %p15 = getelementptr <2 x i64>, ptr %p0, i32 15471 %p16 = getelementptr <2 x i64>, ptr %p0, i32 16472 %p17 = getelementptr <2 x i64>, ptr %p0, i32 17473 %p18 = getelementptr <2 x i64>, ptr %p0, i32 18474 %p19 = getelementptr <2 x i64>, ptr %p0, i32 19475 %p20 = getelementptr <2 x i64>, ptr %p0, i32 20476 %p21 = getelementptr <2 x i64>, ptr %p0, i32 21477 %p22 = getelementptr <2 x i64>, ptr %p0, i32 22478 %p23 = getelementptr <2 x i64>, ptr %p0, i32 23479 %p24 = getelementptr <2 x i64>, ptr %p0, i32 24480 %p25 = getelementptr <2 x i64>, ptr %p0, i32 25481 %p26 = getelementptr <2 x i64>, ptr %p0, i32 26482 %p27 = getelementptr <2 x i64>, ptr %p0, i32 27483 %p28 = getelementptr <2 x i64>, ptr %p0, i32 28484 %p29 = getelementptr <2 x i64>, ptr %p0, i32 29485 %p30 = getelementptr <2 x i64>, ptr %p0, i32 30486 %p31 = getelementptr <2 x i64>, ptr %p0, i32 31487 %p32 = getelementptr <2 x i64>, ptr %p0, i32 32488 %p33 = getelementptr <2 x i64>, ptr %p0, i32 33489 %0 = load <2 x i64>, ptr %p0, align 16490 %1 = load <2 x i64>, ptr %p1, align 16491 %2 = load <2 x i64>, ptr %p2, align 16492 %3 = load <2 x i64>, ptr %p3, align 16493 %4 = load <2 x i64>, ptr %p4, align 16494 %5 = load <2 x i64>, ptr %p5, align 16495 %6 = load <2 x i64>, ptr %p6, align 16496 %7 = load <2 x i64>, ptr %p7, align 16497 %8 = load <2 x i64>, ptr %p8, align 16498 %9 = load <2 x i64>, ptr %p9, align 16499 %10 = load <2 x i64>, ptr %p10, align 16500 %11 = load <2 x i64>, ptr %p11, align 16501 %12 = load <2 x i64>, ptr %p12, align 16502 %13 = load <2 x i64>, ptr %p13, align 16503 %14 = load <2 x i64>, ptr %p14, align 16504 %15 = load <2 x i64>, ptr %p15, align 16505 %16 = load <2 x i64>, ptr %p16, align 16506 %17 = load <2 x i64>, ptr %p17, align 16507 %18 = load <2 x i64>, ptr %p18, align 16508 %19 = load <2 x i64>, ptr %p19, align 16509 %20 = load <2 x i64>, ptr %p20, align 16510 %21 = load <2 x i64>, ptr %p21, align 16511 %22 = load <2 x i64>, ptr %p22, align 16512 %23 = load <2 x i64>, ptr %p23, align 16513 %24 = load <2 x i64>, ptr %p24, align 16514 %25 = load <2 x i64>, ptr %p25, align 16515 %26 = load <2 x i64>, ptr %p26, align 16516 %27 = load <2 x i64>, ptr %p27, align 16517 %28 = load <2 x i64>, ptr %p28, align 16518 %29 = load <2 x i64>, ptr %p29, align 16519 %30 = load <2 x i64>, ptr %p30, align 16520 %31 = load <2 x i64>, ptr %p31, align 16521 %32 = load <2 x i64>, ptr %p32, align 16522 %33 = load <2 x i64>, ptr %p33, align 16523 %r1 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %0, <2 x i64> %1)524 %r2 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r1, <2 x i64> %2)525 %r3 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r2, <2 x i64> %3)526 %r4 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r3, <2 x i64> %4)527 %r5 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r4, <2 x i64> %5)528 %r6 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r5, <2 x i64> %6)529 %r7 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r6, <2 x i64> %7)530 %r8 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r7, <2 x i64> %8)531 %r9 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r8, <2 x i64> %9)532 %r10 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r9, <2 x i64> %10)533 %r11 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r10, <2 x i64> %11)534 %r12 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r11, <2 x i64> %12)535 %r13 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r12, <2 x i64> %13)536 %r14 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r13, <2 x i64> %14)537 %r15 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r14, <2 x i64> %15)538 %r16 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r15, <2 x i64> %16)539 %r17 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r16, <2 x i64> %17)540 %r18 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r17, <2 x i64> %18)541 %r19 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r18, <2 x i64> %19)542 %r20 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r19, <2 x i64> %20)543 %r21 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r20, <2 x i64> %21)544 %r22 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r21, <2 x i64> %22)545 %r23 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r22, <2 x i64> %23)546 %r24 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r23, <2 x i64> %24)547 %r25 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r24, <2 x i64> %25)548 %r26 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r25, <2 x i64> %26)549 %r27 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r26, <2 x i64> %27)550 %r28 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r27, <2 x i64> %28)551 %r29 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r28, <2 x i64> %29)552 %r30 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r29, <2 x i64> %30)553 %r31 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r30, <2 x i64> %31)554 %r32 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r31, <2 x i64> %32)555 %r33 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r32, <2 x i64> %33)556 %rx1 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r33, <2 x i64> %1)557 %rx2 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx1, <2 x i64> %2)558 %rx3 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx2, <2 x i64> %3)559 %rx4 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx3, <2 x i64> %4)560 %rx5 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx4, <2 x i64> %5)561 %rx6 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx5, <2 x i64> %6)562 %rx7 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx6, <2 x i64> %7)563 %rx8 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx7, <2 x i64> %8)564 %rx9 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx8, <2 x i64> %9)565 %rx10 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx9, <2 x i64> %10)566 %rx11 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx10, <2 x i64> %11)567 %rx12 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx11, <2 x i64> %12)568 %rx13 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx12, <2 x i64> %13)569 %rx14 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx13, <2 x i64> %14)570 %rx15 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx14, <2 x i64> %15)571 %rx16 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx15, <2 x i64> %16)572 %rx17 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx16, <2 x i64> %17)573 %rx18 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx17, <2 x i64> %18)574 %rx19 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx18, <2 x i64> %19)575 %rx20 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx19, <2 x i64> %20)576 %rx21 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx20, <2 x i64> %21)577 %rx22 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx21, <2 x i64> %22)578 %rx23 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx22, <2 x i64> %23)579 %rx24 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx23, <2 x i64> %24)580 %rx25 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx24, <2 x i64> %25)581 %rx26 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx25, <2 x i64> %26)582 %rx27 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx26, <2 x i64> %27)583 %rx28 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx27, <2 x i64> %28)584 %rx29 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx28, <2 x i64> %29)585 %rx30 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx29, <2 x i64> %30)586 %rx31 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx30, <2 x i64> %31)587 %rx32 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx31, <2 x i64> %32)588 %rx33 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx32, <2 x i64> %33)589 %res1 = bitcast <2 x i64> %rx33 to <4 x i32>590 %res = call i32 @llvm.mips.copy.s.w(<4 x i32> %res1, i32 0)591 ret i32 %res592}593 594declare <2 x i64> @llvm.mips.addv.d(<2 x i64>, <2 x i64>) nounwind595 596; CHECK: test_i64:597; CHECK: st.d {{.*}} Spill598; CHECK: st.d {{.*}} Spill599; CHECK: ld.d {{.*}} Reload600; CHECK: ld.d {{.*}} Reload601; CHECK: .size602