brintos

brintos / llvm-project-archived public Read only

0
0
Text · 32.9 KiB · 5b00f3c Raw
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