1 ; Test that the correct instruction is chosen for spill and reload by trying 2 ; to have 33 live MSA registers simultaneously 3 4 ; RUN: llc -march=mips -mattr=+msa,+fp64 < %s | FileCheck %s 5 ; RUN: llc -march=mipsel -mattr=+msa,+fp64 < %s | FileCheck %s 6 7 define i32 @test_i8(<16 x i8>* %p0, <16 x i8>* %q1) nounwind { 8 entry: 9 %p1 = getelementptr <16 x i8>* %p0, i32 1 10 %p2 = getelementptr <16 x i8>* %p0, i32 2 11 %p3 = getelementptr <16 x i8>* %p0, i32 3 12 %p4 = getelementptr <16 x i8>* %p0, i32 4 13 %p5 = getelementptr <16 x i8>* %p0, i32 5 14 %p6 = getelementptr <16 x i8>* %p0, i32 6 15 %p7 = getelementptr <16 x i8>* %p0, i32 7 16 %p8 = getelementptr <16 x i8>* %p0, i32 8 17 %p9 = getelementptr <16 x i8>* %p0, i32 9 18 %p10 = getelementptr <16 x i8>* %p0, i32 10 19 %p11 = getelementptr <16 x i8>* %p0, i32 11 20 %p12 = getelementptr <16 x i8>* %p0, i32 12 21 %p13 = getelementptr <16 x i8>* %p0, i32 13 22 %p14 = getelementptr <16 x i8>* %p0, i32 14 23 %p15 = getelementptr <16 x i8>* %p0, i32 15 24 %p16 = getelementptr <16 x i8>* %p0, i32 16 25 %p17 = getelementptr <16 x i8>* %p0, i32 17 26 %p18 = getelementptr <16 x i8>* %p0, i32 18 27 %p19 = getelementptr <16 x i8>* %p0, i32 19 28 %p20 = getelementptr <16 x i8>* %p0, i32 20 29 %p21 = getelementptr <16 x i8>* %p0, i32 21 30 %p22 = getelementptr <16 x i8>* %p0, i32 22 31 %p23 = getelementptr <16 x i8>* %p0, i32 23 32 %p24 = getelementptr <16 x i8>* %p0, i32 24 33 %p25 = getelementptr <16 x i8>* %p0, i32 25 34 %p26 = getelementptr <16 x i8>* %p0, i32 26 35 %p27 = getelementptr <16 x i8>* %p0, i32 27 36 %p28 = getelementptr <16 x i8>* %p0, i32 28 37 %p29 = getelementptr <16 x i8>* %p0, i32 29 38 %p30 = getelementptr <16 x i8>* %p0, i32 30 39 %p31 = getelementptr <16 x i8>* %p0, i32 31 40 %p32 = getelementptr <16 x i8>* %p0, i32 32 41 %p33 = getelementptr <16 x i8>* %p0, i32 33 42 %0 = load <16 x i8>* %p0, align 16 43 %1 = load <16 x i8>* %p1, align 16 44 %2 = load <16 x i8>* %p2, align 16 45 %3 = load <16 x i8>* %p3, align 16 46 %4 = load <16 x i8>* %p4, align 16 47 %5 = load <16 x i8>* %p5, align 16 48 %6 = load <16 x i8>* %p6, align 16 49 %7 = load <16 x i8>* %p7, align 16 50 %8 = load <16 x i8>* %p8, align 16 51 %9 = load <16 x i8>* %p9, align 16 52 %10 = load <16 x i8>* %p10, align 16 53 %11 = load <16 x i8>* %p11, align 16 54 %12 = load <16 x i8>* %p12, align 16 55 %13 = load <16 x i8>* %p13, align 16 56 %14 = load <16 x i8>* %p14, align 16 57 %15 = load <16 x i8>* %p15, align 16 58 %16 = load <16 x i8>* %p16, align 16 59 %17 = load <16 x i8>* %p17, align 16 60 %18 = load <16 x i8>* %p18, align 16 61 %19 = load <16 x i8>* %p19, align 16 62 %20 = load <16 x i8>* %p20, align 16 63 %21 = load <16 x i8>* %p21, align 16 64 %22 = load <16 x i8>* %p22, align 16 65 %23 = load <16 x i8>* %p23, align 16 66 %24 = load <16 x i8>* %p24, align 16 67 %25 = load <16 x i8>* %p25, align 16 68 %26 = load <16 x i8>* %p26, align 16 69 %27 = load <16 x i8>* %p27, align 16 70 %28 = load <16 x i8>* %p28, align 16 71 %29 = load <16 x i8>* %p29, align 16 72 %30 = load <16 x i8>* %p30, align 16 73 %31 = load <16 x i8>* %p31, align 16 74 %32 = load <16 x i8>* %p32, align 16 75 %33 = load <16 x i8>* %p33, align 16 76 %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 %res 144 } 145 146 declare <16 x i8> @llvm.mips.addv.b(<16 x i8>, <16 x i8>) nounwind 147 declare i32 @llvm.mips.copy.s.b(<16 x i8>, i32) nounwind 148 149 ; CHECK: test_i8: 150 ; CHECK: st.b {{.*}} Spill 151 ; CHECK: st.b {{.*}} Spill 152 ; CHECK: ld.b {{.*}} Reload 153 ; CHECK: ld.b {{.*}} Reload 154 ; CHECK: .size 155 156 define i32 @test_i16(<8 x i16>* %p0, <8 x i16>* %q1) nounwind { 157 entry: 158 %p1 = getelementptr <8 x i16>* %p0, i32 1 159 %p2 = getelementptr <8 x i16>* %p0, i32 2 160 %p3 = getelementptr <8 x i16>* %p0, i32 3 161 %p4 = getelementptr <8 x i16>* %p0, i32 4 162 %p5 = getelementptr <8 x i16>* %p0, i32 5 163 %p6 = getelementptr <8 x i16>* %p0, i32 6 164 %p7 = getelementptr <8 x i16>* %p0, i32 7 165 %p8 = getelementptr <8 x i16>* %p0, i32 8 166 %p9 = getelementptr <8 x i16>* %p0, i32 9 167 %p10 = getelementptr <8 x i16>* %p0, i32 10 168 %p11 = getelementptr <8 x i16>* %p0, i32 11 169 %p12 = getelementptr <8 x i16>* %p0, i32 12 170 %p13 = getelementptr <8 x i16>* %p0, i32 13 171 %p14 = getelementptr <8 x i16>* %p0, i32 14 172 %p15 = getelementptr <8 x i16>* %p0, i32 15 173 %p16 = getelementptr <8 x i16>* %p0, i32 16 174 %p17 = getelementptr <8 x i16>* %p0, i32 17 175 %p18 = getelementptr <8 x i16>* %p0, i32 18 176 %p19 = getelementptr <8 x i16>* %p0, i32 19 177 %p20 = getelementptr <8 x i16>* %p0, i32 20 178 %p21 = getelementptr <8 x i16>* %p0, i32 21 179 %p22 = getelementptr <8 x i16>* %p0, i32 22 180 %p23 = getelementptr <8 x i16>* %p0, i32 23 181 %p24 = getelementptr <8 x i16>* %p0, i32 24 182 %p25 = getelementptr <8 x i16>* %p0, i32 25 183 %p26 = getelementptr <8 x i16>* %p0, i32 26 184 %p27 = getelementptr <8 x i16>* %p0, i32 27 185 %p28 = getelementptr <8 x i16>* %p0, i32 28 186 %p29 = getelementptr <8 x i16>* %p0, i32 29 187 %p30 = getelementptr <8 x i16>* %p0, i32 30 188 %p31 = getelementptr <8 x i16>* %p0, i32 31 189 %p32 = getelementptr <8 x i16>* %p0, i32 32 190 %p33 = getelementptr <8 x i16>* %p0, i32 33 191 %0 = load <8 x i16>* %p0, align 16 192 %1 = load <8 x i16>* %p1, align 16 193 %2 = load <8 x i16>* %p2, align 16 194 %3 = load <8 x i16>* %p3, align 16 195 %4 = load <8 x i16>* %p4, align 16 196 %5 = load <8 x i16>* %p5, align 16 197 %6 = load <8 x i16>* %p6, align 16 198 %7 = load <8 x i16>* %p7, align 16 199 %8 = load <8 x i16>* %p8, align 16 200 %9 = load <8 x i16>* %p9, align 16 201 %10 = load <8 x i16>* %p10, align 16 202 %11 = load <8 x i16>* %p11, align 16 203 %12 = load <8 x i16>* %p12, align 16 204 %13 = load <8 x i16>* %p13, align 16 205 %14 = load <8 x i16>* %p14, align 16 206 %15 = load <8 x i16>* %p15, align 16 207 %16 = load <8 x i16>* %p16, align 16 208 %17 = load <8 x i16>* %p17, align 16 209 %18 = load <8 x i16>* %p18, align 16 210 %19 = load <8 x i16>* %p19, align 16 211 %20 = load <8 x i16>* %p20, align 16 212 %21 = load <8 x i16>* %p21, align 16 213 %22 = load <8 x i16>* %p22, align 16 214 %23 = load <8 x i16>* %p23, align 16 215 %24 = load <8 x i16>* %p24, align 16 216 %25 = load <8 x i16>* %p25, align 16 217 %26 = load <8 x i16>* %p26, align 16 218 %27 = load <8 x i16>* %p27, align 16 219 %28 = load <8 x i16>* %p28, align 16 220 %29 = load <8 x i16>* %p29, align 16 221 %30 = load <8 x i16>* %p30, align 16 222 %31 = load <8 x i16>* %p31, align 16 223 %32 = load <8 x i16>* %p32, align 16 224 %33 = load <8 x i16>* %p33, align 16 225 %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 %res 293 } 294 295 declare <8 x i16> @llvm.mips.addv.h(<8 x i16>, <8 x i16>) nounwind 296 declare i32 @llvm.mips.copy.s.h(<8 x i16>, i32) nounwind 297 298 ; CHECK: test_i16: 299 ; CHECK: st.h {{.*}} Spill 300 ; CHECK: st.h {{.*}} Spill 301 ; CHECK: ld.h {{.*}} Reload 302 ; CHECK: ld.h {{.*}} Reload 303 ; CHECK: .size 304 305 define i32 @test_i32(<4 x i32>* %p0, <4 x i32>* %q1) nounwind { 306 entry: 307 %p1 = getelementptr <4 x i32>* %p0, i32 1 308 %p2 = getelementptr <4 x i32>* %p0, i32 2 309 %p3 = getelementptr <4 x i32>* %p0, i32 3 310 %p4 = getelementptr <4 x i32>* %p0, i32 4 311 %p5 = getelementptr <4 x i32>* %p0, i32 5 312 %p6 = getelementptr <4 x i32>* %p0, i32 6 313 %p7 = getelementptr <4 x i32>* %p0, i32 7 314 %p8 = getelementptr <4 x i32>* %p0, i32 8 315 %p9 = getelementptr <4 x i32>* %p0, i32 9 316 %p10 = getelementptr <4 x i32>* %p0, i32 10 317 %p11 = getelementptr <4 x i32>* %p0, i32 11 318 %p12 = getelementptr <4 x i32>* %p0, i32 12 319 %p13 = getelementptr <4 x i32>* %p0, i32 13 320 %p14 = getelementptr <4 x i32>* %p0, i32 14 321 %p15 = getelementptr <4 x i32>* %p0, i32 15 322 %p16 = getelementptr <4 x i32>* %p0, i32 16 323 %p17 = getelementptr <4 x i32>* %p0, i32 17 324 %p18 = getelementptr <4 x i32>* %p0, i32 18 325 %p19 = getelementptr <4 x i32>* %p0, i32 19 326 %p20 = getelementptr <4 x i32>* %p0, i32 20 327 %p21 = getelementptr <4 x i32>* %p0, i32 21 328 %p22 = getelementptr <4 x i32>* %p0, i32 22 329 %p23 = getelementptr <4 x i32>* %p0, i32 23 330 %p24 = getelementptr <4 x i32>* %p0, i32 24 331 %p25 = getelementptr <4 x i32>* %p0, i32 25 332 %p26 = getelementptr <4 x i32>* %p0, i32 26 333 %p27 = getelementptr <4 x i32>* %p0, i32 27 334 %p28 = getelementptr <4 x i32>* %p0, i32 28 335 %p29 = getelementptr <4 x i32>* %p0, i32 29 336 %p30 = getelementptr <4 x i32>* %p0, i32 30 337 %p31 = getelementptr <4 x i32>* %p0, i32 31 338 %p32 = getelementptr <4 x i32>* %p0, i32 32 339 %p33 = getelementptr <4 x i32>* %p0, i32 33 340 %0 = load <4 x i32>* %p0, align 16 341 %1 = load <4 x i32>* %p1, align 16 342 %2 = load <4 x i32>* %p2, align 16 343 %3 = load <4 x i32>* %p3, align 16 344 %4 = load <4 x i32>* %p4, align 16 345 %5 = load <4 x i32>* %p5, align 16 346 %6 = load <4 x i32>* %p6, align 16 347 %7 = load <4 x i32>* %p7, align 16 348 %8 = load <4 x i32>* %p8, align 16 349 %9 = load <4 x i32>* %p9, align 16 350 %10 = load <4 x i32>* %p10, align 16 351 %11 = load <4 x i32>* %p11, align 16 352 %12 = load <4 x i32>* %p12, align 16 353 %13 = load <4 x i32>* %p13, align 16 354 %14 = load <4 x i32>* %p14, align 16 355 %15 = load <4 x i32>* %p15, align 16 356 %16 = load <4 x i32>* %p16, align 16 357 %17 = load <4 x i32>* %p17, align 16 358 %18 = load <4 x i32>* %p18, align 16 359 %19 = load <4 x i32>* %p19, align 16 360 %20 = load <4 x i32>* %p20, align 16 361 %21 = load <4 x i32>* %p21, align 16 362 %22 = load <4 x i32>* %p22, align 16 363 %23 = load <4 x i32>* %p23, align 16 364 %24 = load <4 x i32>* %p24, align 16 365 %25 = load <4 x i32>* %p25, align 16 366 %26 = load <4 x i32>* %p26, align 16 367 %27 = load <4 x i32>* %p27, align 16 368 %28 = load <4 x i32>* %p28, align 16 369 %29 = load <4 x i32>* %p29, align 16 370 %30 = load <4 x i32>* %p30, align 16 371 %31 = load <4 x i32>* %p31, align 16 372 %32 = load <4 x i32>* %p32, align 16 373 %33 = load <4 x i32>* %p33, align 16 374 %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 %res 442 } 443 444 declare <4 x i32> @llvm.mips.addv.w(<4 x i32>, <4 x i32>) nounwind 445 declare i32 @llvm.mips.copy.s.w(<4 x i32>, i32) nounwind 446 447 ; CHECK: test_i32: 448 ; CHECK: st.w {{.*}} Spill 449 ; CHECK: st.w {{.*}} Spill 450 ; CHECK: ld.w {{.*}} Reload 451 ; CHECK: ld.w {{.*}} Reload 452 ; CHECK: .size 453 454 define i32 @test_i64(<2 x i64>* %p0, <2 x i64>* %q1) nounwind { 455 entry: 456 %p1 = getelementptr <2 x i64>* %p0, i32 1 457 %p2 = getelementptr <2 x i64>* %p0, i32 2 458 %p3 = getelementptr <2 x i64>* %p0, i32 3 459 %p4 = getelementptr <2 x i64>* %p0, i32 4 460 %p5 = getelementptr <2 x i64>* %p0, i32 5 461 %p6 = getelementptr <2 x i64>* %p0, i32 6 462 %p7 = getelementptr <2 x i64>* %p0, i32 7 463 %p8 = getelementptr <2 x i64>* %p0, i32 8 464 %p9 = getelementptr <2 x i64>* %p0, i32 9 465 %p10 = getelementptr <2 x i64>* %p0, i32 10 466 %p11 = getelementptr <2 x i64>* %p0, i32 11 467 %p12 = getelementptr <2 x i64>* %p0, i32 12 468 %p13 = getelementptr <2 x i64>* %p0, i32 13 469 %p14 = getelementptr <2 x i64>* %p0, i32 14 470 %p15 = getelementptr <2 x i64>* %p0, i32 15 471 %p16 = getelementptr <2 x i64>* %p0, i32 16 472 %p17 = getelementptr <2 x i64>* %p0, i32 17 473 %p18 = getelementptr <2 x i64>* %p0, i32 18 474 %p19 = getelementptr <2 x i64>* %p0, i32 19 475 %p20 = getelementptr <2 x i64>* %p0, i32 20 476 %p21 = getelementptr <2 x i64>* %p0, i32 21 477 %p22 = getelementptr <2 x i64>* %p0, i32 22 478 %p23 = getelementptr <2 x i64>* %p0, i32 23 479 %p24 = getelementptr <2 x i64>* %p0, i32 24 480 %p25 = getelementptr <2 x i64>* %p0, i32 25 481 %p26 = getelementptr <2 x i64>* %p0, i32 26 482 %p27 = getelementptr <2 x i64>* %p0, i32 27 483 %p28 = getelementptr <2 x i64>* %p0, i32 28 484 %p29 = getelementptr <2 x i64>* %p0, i32 29 485 %p30 = getelementptr <2 x i64>* %p0, i32 30 486 %p31 = getelementptr <2 x i64>* %p0, i32 31 487 %p32 = getelementptr <2 x i64>* %p0, i32 32 488 %p33 = getelementptr <2 x i64>* %p0, i32 33 489 %0 = load <2 x i64>* %p0, align 16 490 %1 = load <2 x i64>* %p1, align 16 491 %2 = load <2 x i64>* %p2, align 16 492 %3 = load <2 x i64>* %p3, align 16 493 %4 = load <2 x i64>* %p4, align 16 494 %5 = load <2 x i64>* %p5, align 16 495 %6 = load <2 x i64>* %p6, align 16 496 %7 = load <2 x i64>* %p7, align 16 497 %8 = load <2 x i64>* %p8, align 16 498 %9 = load <2 x i64>* %p9, align 16 499 %10 = load <2 x i64>* %p10, align 16 500 %11 = load <2 x i64>* %p11, align 16 501 %12 = load <2 x i64>* %p12, align 16 502 %13 = load <2 x i64>* %p13, align 16 503 %14 = load <2 x i64>* %p14, align 16 504 %15 = load <2 x i64>* %p15, align 16 505 %16 = load <2 x i64>* %p16, align 16 506 %17 = load <2 x i64>* %p17, align 16 507 %18 = load <2 x i64>* %p18, align 16 508 %19 = load <2 x i64>* %p19, align 16 509 %20 = load <2 x i64>* %p20, align 16 510 %21 = load <2 x i64>* %p21, align 16 511 %22 = load <2 x i64>* %p22, align 16 512 %23 = load <2 x i64>* %p23, align 16 513 %24 = load <2 x i64>* %p24, align 16 514 %25 = load <2 x i64>* %p25, align 16 515 %26 = load <2 x i64>* %p26, align 16 516 %27 = load <2 x i64>* %p27, align 16 517 %28 = load <2 x i64>* %p28, align 16 518 %29 = load <2 x i64>* %p29, align 16 519 %30 = load <2 x i64>* %p30, align 16 520 %31 = load <2 x i64>* %p31, align 16 521 %32 = load <2 x i64>* %p32, align 16 522 %33 = load <2 x i64>* %p33, align 16 523 %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 %res 592 } 593 594 declare <2 x i64> @llvm.mips.addv.d(<2 x i64>, <2 x i64>) nounwind 595 596 ; CHECK: test_i64: 597 ; CHECK: st.d {{.*}} Spill 598 ; CHECK: st.d {{.*}} Spill 599 ; CHECK: ld.d {{.*}} Reload 600 ; CHECK: ld.d {{.*}} Reload 601 ; CHECK: .size 602