1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
5 define void @long_chain_ambiguous_i64_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {
7 br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1
9 pre.PHI.1: ; preds = %entry
10 br i1 %cnd1, label %b.PHI.1.1, label %pre.PHI.1.0
12 pre.PHI.1.0: ; preds = %pre.PHI.1
13 br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0
15 b.PHI.1.0: ; preds = %pre.PHI.1.0
16 %phi1.0 = load i64, ptr %a
19 b.PHI.1.1: ; preds = %pre.PHI.1
20 %phi1.1 = load i64, ptr %b
23 b.PHI.1.2: ; preds = %pre.PHI.1.0
24 %phi1.2 = load i64, ptr %c
27 b.PHI.1: ; preds = %b.PHI.1.2, %b.PHI.1.1, %b.PHI.1.0
28 %phi1 = phi i64 [ %phi1.0, %b.PHI.1.0 ], [ %phi1.1, %b.PHI.1.1 ], [ %phi1.2, %b.PHI.1.2 ]
29 br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3
31 b.PHI.1.end: ; preds = %b.PHI.1
32 store i64 %phi1, ptr %result
35 pre.PHI.2: ; preds = %entry
36 br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1
38 b.PHI.2.0: ; preds = %pre.PHI.2
39 %phi2.0 = load i64, ptr %a
42 b.PHI.2.1: ; preds = %pre.PHI.2
43 %phi2.1 = load i64, ptr %b
46 b.PHI.2: ; preds = %b.PHI.2.1, %b.PHI.2.0
47 %phi2 = phi i64 [ %phi2.0, %b.PHI.2.0 ], [ %phi2.1, %b.PHI.2.1 ]
48 br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end
50 b.PHI.2.end: ; preds = %b.PHI.2
51 store i64 %phi2, ptr %result
54 b.PHI.3: ; preds = %b.PHI.2, %b.PHI.1
55 %phi3 = phi i64 [ %phi2, %b.PHI.2 ], [ %phi1, %b.PHI.1 ]
56 %phi4 = phi i64 [ %phi2, %b.PHI.2 ], [ %phi1, %b.PHI.1 ]
57 %sel_1.2 = select i1 %cnd2, i64 %phi3, i64 %phi4
58 %sel_3_1.2 = select i1 %cnd1, i64 %sel_1.2, i64 %phi3
59 store i64 %sel_3_1.2, ptr %result
60 store i64 %phi3, ptr %result
64 define void @long_chain_i64_in_gpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {
66 br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1
68 pre.PHI.1: ; preds = %entry
69 br i1 %cnd1, label %b.PHI.1.1, label %pre.PHI.1.0
71 pre.PHI.1.0: ; preds = %pre.PHI.1
72 br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0
74 b.PHI.1.0: ; preds = %pre.PHI.1.0
75 %phi1.0 = load i64, ptr %a
78 b.PHI.1.1: ; preds = %pre.PHI.1
79 %phi1.1 = load i64, ptr %b
82 b.PHI.1.2: ; preds = %pre.PHI.1.0
83 %phi1.2 = load i64, ptr %c
86 b.PHI.1: ; preds = %b.PHI.1.2, %b.PHI.1.1, %b.PHI.1.0
87 %phi1 = phi i64 [ %phi1.0, %b.PHI.1.0 ], [ %phi1.1, %b.PHI.1.1 ], [ %phi1.2, %b.PHI.1.2 ]
88 br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3
90 b.PHI.1.end: ; preds = %b.PHI.1
91 store i64 %phi1, ptr %result
94 pre.PHI.2: ; preds = %entry
95 br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1
97 b.PHI.2.0: ; preds = %pre.PHI.2
98 %phi2.0 = load i64, ptr %a
101 b.PHI.2.1: ; preds = %pre.PHI.2
102 %phi2.1 = load i64, ptr %b
105 b.PHI.2: ; preds = %b.PHI.2.1, %b.PHI.2.0
106 %phi2 = phi i64 [ %phi2.0, %b.PHI.2.0 ], [ %phi2.1, %b.PHI.2.1 ]
107 br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end
109 b.PHI.2.end: ; preds = %b.PHI.2
110 store i64 %phi2, ptr %result
113 b.PHI.3: ; preds = %b.PHI.2, %b.PHI.1
114 %phi3 = phi i64 [ %phi2, %b.PHI.2 ], [ %phi1, %b.PHI.1 ]
115 %phi4 = phi i64 [ %phi2, %b.PHI.2 ], [ 0, %b.PHI.1 ]
116 %sel_1.2 = select i1 %cnd2, i64 %phi3, i64 %phi4
117 %sel_3_1.2 = select i1 %cnd1, i64 %sel_1.2, i64 %phi3
118 store i64 %sel_3_1.2, ptr %result
119 store i64 %phi3, ptr %result
123 define void @long_chain_ambiguous_double_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {
125 br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1
127 pre.PHI.1: ; preds = %entry
128 br i1 %cnd1, label %b.PHI.1.1, label %pre.PHI.1.0
130 pre.PHI.1.0: ; preds = %pre.PHI.1
131 br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0
133 b.PHI.1.0: ; preds = %pre.PHI.1.0
134 %phi1.0 = load double, ptr %a
137 b.PHI.1.1: ; preds = %pre.PHI.1
138 %phi1.1 = load double, ptr %b
141 b.PHI.1.2: ; preds = %pre.PHI.1.0
142 %phi1.2 = load double, ptr %c
145 b.PHI.1: ; preds = %b.PHI.1.2, %b.PHI.1.1, %b.PHI.1.0
146 %phi1 = phi double [ %phi1.0, %b.PHI.1.0 ], [ %phi1.1, %b.PHI.1.1 ], [ %phi1.2, %b.PHI.1.2 ]
147 br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3
149 b.PHI.1.end: ; preds = %b.PHI.1
150 store double %phi1, ptr %result
153 pre.PHI.2: ; preds = %entry
154 br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1
156 b.PHI.2.0: ; preds = %pre.PHI.2
157 %phi2.0 = load double, ptr %a
160 b.PHI.2.1: ; preds = %pre.PHI.2
161 %phi2.1 = load double, ptr %b
164 b.PHI.2: ; preds = %b.PHI.2.1, %b.PHI.2.0
165 %phi2 = phi double [ %phi2.0, %b.PHI.2.0 ], [ %phi2.1, %b.PHI.2.1 ]
166 br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end
168 b.PHI.2.end: ; preds = %b.PHI.2
169 store double %phi2, ptr %result
172 b.PHI.3: ; preds = %b.PHI.2, %b.PHI.1
173 %phi3 = phi double [ %phi2, %b.PHI.2 ], [ %phi1, %b.PHI.1 ]
174 %phi4 = phi double [ %phi2, %b.PHI.2 ], [ %phi1, %b.PHI.1 ]
175 %sel_1.2 = select i1 %cnd2, double %phi3, double %phi4
176 %sel_3_1.2 = select i1 %cnd1, double %sel_1.2, double %phi3
177 store double %sel_3_1.2, ptr %result
178 store double %phi3, ptr %result
182 define void @long_chain_double_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {
184 br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1
186 pre.PHI.1: ; preds = %entry
187 br i1 %cnd1, label %b.PHI.1.1, label %pre.PHI.1.0
189 pre.PHI.1.0: ; preds = %pre.PHI.1
190 br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0
192 b.PHI.1.0: ; preds = %pre.PHI.1.0
193 %phi1.0 = load double, ptr %a
196 b.PHI.1.1: ; preds = %pre.PHI.1
197 %phi1.1 = load double, ptr %b
200 b.PHI.1.2: ; preds = %pre.PHI.1.0
201 %phi1.2 = load double, ptr %c
204 b.PHI.1: ; preds = %b.PHI.1.2, %b.PHI.1.1, %b.PHI.1.0
205 %phi1 = phi double [ %phi1.0, %b.PHI.1.0 ], [ %phi1.1, %b.PHI.1.1 ], [ %phi1.2, %b.PHI.1.2 ]
206 br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3
208 b.PHI.1.end: ; preds = %b.PHI.1
209 store double %phi1, ptr %result
212 pre.PHI.2: ; preds = %entry
213 br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1
215 b.PHI.2.0: ; preds = %pre.PHI.2
216 %phi2.0 = load double, ptr %a
219 b.PHI.2.1: ; preds = %pre.PHI.2
220 %phi2.1 = load double, ptr %b
223 b.PHI.2: ; preds = %b.PHI.2.1, %b.PHI.2.0
224 %phi2 = phi double [ %phi2.0, %b.PHI.2.0 ], [ %phi2.1, %b.PHI.2.1 ]
225 br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end
227 b.PHI.2.end: ; preds = %b.PHI.2
228 store double %phi2, ptr %result
231 b.PHI.3: ; preds = %b.PHI.2, %b.PHI.1
232 %phi3 = phi double [ %phi2, %b.PHI.2 ], [ %phi1, %b.PHI.1 ]
233 %phi4 = phi double [ %phi2, %b.PHI.2 ], [ 0.000000e+00, %b.PHI.1 ]
234 %sel_1.2 = select i1 %cnd2, double %phi3, double %phi4
235 %sel_3_1.2 = select i1 %cnd1, double %sel_1.2, double %phi3
236 store double %sel_3_1.2, ptr %result
237 store double %phi3, ptr %result
243 name: long_chain_ambiguous_i64_in_fpr
246 tracksRegLiveness: true
248 - { id: 0, offset: 24, size: 4, alignment: 8, isImmutable: true }
249 - { id: 1, offset: 20, size: 4, alignment: 4, isImmutable: true }
250 - { id: 2, offset: 16, size: 4, alignment: 8, isImmutable: true }
252 ; MIPS32-LABEL: name: long_chain_ambiguous_i64_in_fpr
253 ; MIPS32: bb.0.entry:
254 ; MIPS32: successors: %bb.8(0x40000000), %bb.1(0x40000000)
255 ; MIPS32: liveins: $a0, $a1, $a2, $a3
256 ; MIPS32: [[COPY:%[0-9]+]]:gprb(s32) = COPY $a0
257 ; MIPS32: [[COPY1:%[0-9]+]]:gprb(s32) = COPY $a1
258 ; MIPS32: [[COPY2:%[0-9]+]]:gprb(s32) = COPY $a2
259 ; MIPS32: [[COPY3:%[0-9]+]]:gprb(p0) = COPY $a3
260 ; MIPS32: [[FRAME_INDEX:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.0
261 ; MIPS32: [[LOAD:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX]](p0) :: (load (p0) from %fixed-stack.0, align 8)
262 ; MIPS32: [[FRAME_INDEX1:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.1
263 ; MIPS32: [[LOAD1:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX1]](p0) :: (load (p0) from %fixed-stack.1)
264 ; MIPS32: [[FRAME_INDEX2:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.2
265 ; MIPS32: [[LOAD2:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX2]](p0) :: (load (p0) from %fixed-stack.2, align 8)
266 ; MIPS32: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
267 ; MIPS32: [[COPY4:%[0-9]+]]:gprb(s32) = COPY [[COPY]](s32)
268 ; MIPS32: [[AND:%[0-9]+]]:gprb(s32) = G_AND [[COPY4]], [[C]]
269 ; MIPS32: G_BRCOND [[AND]](s32), %bb.8
270 ; MIPS32: bb.1.pre.PHI.1:
271 ; MIPS32: successors: %bb.4(0x40000000), %bb.2(0x40000000)
272 ; MIPS32: [[C1:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
273 ; MIPS32: [[COPY5:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)
274 ; MIPS32: [[AND1:%[0-9]+]]:gprb(s32) = G_AND [[COPY5]], [[C1]]
275 ; MIPS32: G_BRCOND [[AND1]](s32), %bb.4
276 ; MIPS32: bb.2.pre.PHI.1.0:
277 ; MIPS32: successors: %bb.5(0x40000000), %bb.3(0x40000000)
278 ; MIPS32: [[C2:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
279 ; MIPS32: [[COPY6:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)
280 ; MIPS32: [[AND2:%[0-9]+]]:gprb(s32) = G_AND [[COPY6]], [[C2]]
281 ; MIPS32: G_BRCOND [[AND2]](s32), %bb.5
282 ; MIPS32: bb.3.b.PHI.1.0:
283 ; MIPS32: successors: %bb.6(0x80000000)
284 ; MIPS32: [[LOAD3:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY3]](p0) :: (load (s64) from %ir.a)
286 ; MIPS32: bb.4.b.PHI.1.1:
287 ; MIPS32: successors: %bb.6(0x80000000)
288 ; MIPS32: [[LOAD4:%[0-9]+]]:fprb(s64) = G_LOAD [[LOAD]](p0) :: (load (s64) from %ir.b)
290 ; MIPS32: bb.5.b.PHI.1.2:
291 ; MIPS32: successors: %bb.6(0x80000000)
292 ; MIPS32: [[LOAD5:%[0-9]+]]:fprb(s64) = G_LOAD [[LOAD1]](p0) :: (load (s64) from %ir.c)
293 ; MIPS32: bb.6.b.PHI.1:
294 ; MIPS32: successors: %bb.7(0x40000000), %bb.13(0x40000000)
295 ; MIPS32: [[PHI:%[0-9]+]]:fprb(s64) = G_PHI [[LOAD3]](s64), %bb.3, [[LOAD4]](s64), %bb.4, [[LOAD5]](s64), %bb.5
296 ; MIPS32: [[C3:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
297 ; MIPS32: [[COPY7:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)
298 ; MIPS32: [[AND3:%[0-9]+]]:gprb(s32) = G_AND [[COPY7]], [[C3]]
299 ; MIPS32: G_BRCOND [[AND3]](s32), %bb.7
300 ; MIPS32: G_BR %bb.13
301 ; MIPS32: bb.7.b.PHI.1.end:
302 ; MIPS32: G_STORE [[PHI]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)
304 ; MIPS32: bb.8.pre.PHI.2:
305 ; MIPS32: successors: %bb.9(0x40000000), %bb.10(0x40000000)
306 ; MIPS32: [[C4:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
307 ; MIPS32: [[COPY8:%[0-9]+]]:gprb(s32) = COPY [[COPY]](s32)
308 ; MIPS32: [[AND4:%[0-9]+]]:gprb(s32) = G_AND [[COPY8]], [[C4]]
309 ; MIPS32: G_BRCOND [[AND4]](s32), %bb.9
310 ; MIPS32: G_BR %bb.10
311 ; MIPS32: bb.9.b.PHI.2.0:
312 ; MIPS32: successors: %bb.11(0x80000000)
313 ; MIPS32: [[LOAD6:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY3]](p0) :: (load (s64) from %ir.a)
314 ; MIPS32: G_BR %bb.11
315 ; MIPS32: bb.10.b.PHI.2.1:
316 ; MIPS32: successors: %bb.11(0x80000000)
317 ; MIPS32: [[LOAD7:%[0-9]+]]:fprb(s64) = G_LOAD [[LOAD]](p0) :: (load (s64) from %ir.b)
318 ; MIPS32: bb.11.b.PHI.2:
319 ; MIPS32: successors: %bb.13(0x40000000), %bb.12(0x40000000)
320 ; MIPS32: [[PHI1:%[0-9]+]]:fprb(s64) = G_PHI [[LOAD6]](s64), %bb.9, [[LOAD7]](s64), %bb.10
321 ; MIPS32: [[C5:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
322 ; MIPS32: [[COPY9:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)
323 ; MIPS32: [[AND5:%[0-9]+]]:gprb(s32) = G_AND [[COPY9]], [[C5]]
324 ; MIPS32: G_BRCOND [[AND5]](s32), %bb.13
325 ; MIPS32: bb.12.b.PHI.2.end:
326 ; MIPS32: G_STORE [[PHI1]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)
328 ; MIPS32: bb.13.b.PHI.3:
329 ; MIPS32: [[PHI2:%[0-9]+]]:fprb(s64) = G_PHI [[PHI1]](s64), %bb.11, [[PHI]](s64), %bb.6
330 ; MIPS32: [[PHI3:%[0-9]+]]:fprb(s64) = G_PHI [[PHI1]](s64), %bb.11, [[PHI]](s64), %bb.6
331 ; MIPS32: [[C6:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
332 ; MIPS32: [[COPY10:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)
333 ; MIPS32: [[AND6:%[0-9]+]]:gprb(s32) = G_AND [[COPY10]], [[C6]]
334 ; MIPS32: [[SELECT:%[0-9]+]]:fprb(s64) = G_SELECT [[AND6]](s32), [[PHI2]], [[PHI3]]
335 ; MIPS32: [[COPY11:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)
336 ; MIPS32: [[AND7:%[0-9]+]]:gprb(s32) = G_AND [[COPY11]], [[C6]]
337 ; MIPS32: [[SELECT1:%[0-9]+]]:fprb(s64) = G_SELECT [[AND7]](s32), [[SELECT]], [[PHI2]]
338 ; MIPS32: G_STORE [[SELECT1]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)
339 ; MIPS32: G_STORE [[PHI2]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)
342 liveins: $a0, $a1, $a2, $a3
348 %10:_(p0) = G_FRAME_INDEX %fixed-stack.2
349 %4:_(p0) = G_LOAD %10(p0) :: (load (p0) from %fixed-stack.2, align 8)
350 %11:_(p0) = G_FRAME_INDEX %fixed-stack.1
351 %5:_(p0) = G_LOAD %11(p0) :: (load (p0) from %fixed-stack.1)
352 %12:_(p0) = G_FRAME_INDEX %fixed-stack.0
353 %6:_(p0) = G_LOAD %12(p0) :: (load (p0) from %fixed-stack.0, align 8)
354 %32:_(s32) = G_CONSTANT i32 1
355 %33:_(s32) = COPY %7(s32)
356 %31:_(s32) = G_AND %33, %32
357 G_BRCOND %31(s32), %bb.9
360 %34:_(s32) = G_CONSTANT i32 1
361 %35:_(s32) = COPY %8(s32)
362 %30:_(s32) = G_AND %35, %34
363 G_BRCOND %30(s32), %bb.5
366 %36:_(s32) = G_CONSTANT i32 1
367 %37:_(s32) = COPY %9(s32)
368 %29:_(s32) = G_AND %37, %36
369 G_BRCOND %29(s32), %bb.6
372 %13:_(s64) = G_LOAD %3(p0) :: (load (s64) from %ir.a)
376 %15:_(s64) = G_LOAD %4(p0) :: (load (s64) from %ir.b)
380 %14:_(s64) = G_LOAD %5(p0) :: (load (s64) from %ir.c)
383 %16:_(s64) = G_PHI %13(s64), %bb.4, %15(s64), %bb.5, %14(s64), %bb.6
384 %38:_(s32) = G_CONSTANT i32 1
385 %39:_(s32) = COPY %9(s32)
386 %28:_(s32) = G_AND %39, %38
387 G_BRCOND %28(s32), %bb.8
391 G_STORE %16(s64), %6(p0) :: (store (s64) into %ir.result)
395 %40:_(s32) = G_CONSTANT i32 1
396 %41:_(s32) = COPY %7(s32)
397 %27:_(s32) = G_AND %41, %40
398 G_BRCOND %27(s32), %bb.10
402 %18:_(s64) = G_LOAD %3(p0) :: (load (s64) from %ir.a)
406 %17:_(s64) = G_LOAD %4(p0) :: (load (s64) from %ir.b)
409 %19:_(s64) = G_PHI %18(s64), %bb.10, %17(s64), %bb.11
410 %42:_(s32) = G_CONSTANT i32 1
411 %43:_(s32) = COPY %8(s32)
412 %26:_(s32) = G_AND %43, %42
413 G_BRCOND %26(s32), %bb.14
416 G_STORE %19(s64), %6(p0) :: (store (s64) into %ir.result)
420 %20:_(s64) = G_PHI %19(s64), %bb.12, %16(s64), %bb.7
421 %21:_(s64) = G_PHI %19(s64), %bb.12, %16(s64), %bb.7
422 %44:_(s32) = G_CONSTANT i32 1
423 %45:_(s32) = COPY %9(s32)
424 %25:_(s32) = G_AND %45, %44
425 %22:_(s64) = G_SELECT %25(s32), %20, %21
426 %46:_(s32) = COPY %8(s32)
427 %24:_(s32) = G_AND %46, %44
428 %23:_(s64) = G_SELECT %24(s32), %22, %20
429 G_STORE %23(s64), %6(p0) :: (store (s64) into %ir.result)
430 G_STORE %20(s64), %6(p0) :: (store (s64) into %ir.result)
435 name: long_chain_i64_in_gpr
438 tracksRegLiveness: true
440 - { id: 0, offset: 24, size: 4, alignment: 8, isImmutable: true }
441 - { id: 1, offset: 20, size: 4, alignment: 4, isImmutable: true }
442 - { id: 2, offset: 16, size: 4, alignment: 8, isImmutable: true }
444 ; MIPS32-LABEL: name: long_chain_i64_in_gpr
445 ; MIPS32: bb.0.entry:
446 ; MIPS32: successors: %bb.8(0x40000000), %bb.1(0x40000000)
447 ; MIPS32: liveins: $a0, $a1, $a2, $a3
448 ; MIPS32: [[COPY:%[0-9]+]]:gprb(s32) = COPY $a0
449 ; MIPS32: [[COPY1:%[0-9]+]]:gprb(s32) = COPY $a1
450 ; MIPS32: [[COPY2:%[0-9]+]]:gprb(s32) = COPY $a2
451 ; MIPS32: [[COPY3:%[0-9]+]]:gprb(p0) = COPY $a3
452 ; MIPS32: [[FRAME_INDEX:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.0
453 ; MIPS32: [[LOAD:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX]](p0) :: (load (p0) from %fixed-stack.0, align 8)
454 ; MIPS32: [[FRAME_INDEX1:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.1
455 ; MIPS32: [[LOAD1:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX1]](p0) :: (load (p0) from %fixed-stack.1)
456 ; MIPS32: [[FRAME_INDEX2:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.2
457 ; MIPS32: [[LOAD2:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX2]](p0) :: (load (p0) from %fixed-stack.2, align 8)
458 ; MIPS32: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
459 ; MIPS32: [[C1:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
460 ; MIPS32: [[COPY4:%[0-9]+]]:gprb(s32) = COPY [[COPY]](s32)
461 ; MIPS32: [[AND:%[0-9]+]]:gprb(s32) = G_AND [[COPY4]], [[C1]]
462 ; MIPS32: G_BRCOND [[AND]](s32), %bb.8
463 ; MIPS32: bb.1.pre.PHI.1:
464 ; MIPS32: successors: %bb.4(0x40000000), %bb.2(0x40000000)
465 ; MIPS32: [[C2:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
466 ; MIPS32: [[COPY5:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)
467 ; MIPS32: [[AND1:%[0-9]+]]:gprb(s32) = G_AND [[COPY5]], [[C2]]
468 ; MIPS32: G_BRCOND [[AND1]](s32), %bb.4
469 ; MIPS32: bb.2.pre.PHI.1.0:
470 ; MIPS32: successors: %bb.5(0x40000000), %bb.3(0x40000000)
471 ; MIPS32: [[C3:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
472 ; MIPS32: [[COPY6:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)
473 ; MIPS32: [[AND2:%[0-9]+]]:gprb(s32) = G_AND [[COPY6]], [[C3]]
474 ; MIPS32: G_BRCOND [[AND2]](s32), %bb.5
475 ; MIPS32: bb.3.b.PHI.1.0:
476 ; MIPS32: successors: %bb.6(0x80000000)
477 ; MIPS32: [[LOAD3:%[0-9]+]]:gprb(s32) = G_LOAD [[COPY3]](p0) :: (load (s32) from %ir.a, align 8)
478 ; MIPS32: [[C4:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 4
479 ; MIPS32: [[PTR_ADD:%[0-9]+]]:gprb(p0) = G_PTR_ADD [[COPY3]], [[C4]](s32)
480 ; MIPS32: [[LOAD4:%[0-9]+]]:gprb(s32) = G_LOAD [[PTR_ADD]](p0) :: (load (s32) from %ir.a + 4, basealign 8)
482 ; MIPS32: bb.4.b.PHI.1.1:
483 ; MIPS32: successors: %bb.6(0x80000000)
484 ; MIPS32: [[LOAD5:%[0-9]+]]:gprb(s32) = G_LOAD [[LOAD]](p0) :: (load (s32) from %ir.b, align 8)
485 ; MIPS32: [[C5:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 4
486 ; MIPS32: [[PTR_ADD1:%[0-9]+]]:gprb(p0) = G_PTR_ADD [[LOAD]], [[C5]](s32)
487 ; MIPS32: [[LOAD6:%[0-9]+]]:gprb(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s32) from %ir.b + 4, basealign 8)
489 ; MIPS32: bb.5.b.PHI.1.2:
490 ; MIPS32: successors: %bb.6(0x80000000)
491 ; MIPS32: [[LOAD7:%[0-9]+]]:gprb(s32) = G_LOAD [[LOAD1]](p0) :: (load (s32) from %ir.c, align 8)
492 ; MIPS32: [[C6:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 4
493 ; MIPS32: [[PTR_ADD2:%[0-9]+]]:gprb(p0) = G_PTR_ADD [[LOAD1]], [[C6]](s32)
494 ; MIPS32: [[LOAD8:%[0-9]+]]:gprb(s32) = G_LOAD [[PTR_ADD2]](p0) :: (load (s32) from %ir.c + 4, basealign 8)
495 ; MIPS32: bb.6.b.PHI.1:
496 ; MIPS32: successors: %bb.7(0x40000000), %bb.13(0x40000000)
497 ; MIPS32: [[PHI:%[0-9]+]]:gprb(s32) = G_PHI [[LOAD3]](s32), %bb.3, [[LOAD5]](s32), %bb.4, [[LOAD7]](s32), %bb.5
498 ; MIPS32: [[PHI1:%[0-9]+]]:gprb(s32) = G_PHI [[LOAD4]](s32), %bb.3, [[LOAD6]](s32), %bb.4, [[LOAD8]](s32), %bb.5
499 ; MIPS32: [[C7:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
500 ; MIPS32: [[COPY7:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)
501 ; MIPS32: [[AND3:%[0-9]+]]:gprb(s32) = G_AND [[COPY7]], [[C7]]
502 ; MIPS32: G_BRCOND [[AND3]](s32), %bb.7
503 ; MIPS32: G_BR %bb.13
504 ; MIPS32: bb.7.b.PHI.1.end:
505 ; MIPS32: G_STORE [[PHI]](s32), [[LOAD2]](p0) :: (store (s32) into %ir.result, align 8)
506 ; MIPS32: [[C8:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 4
507 ; MIPS32: [[PTR_ADD3:%[0-9]+]]:gprb(p0) = G_PTR_ADD [[LOAD2]], [[C8]](s32)
508 ; MIPS32: G_STORE [[PHI1]](s32), [[PTR_ADD3]](p0) :: (store (s32) into %ir.result + 4, basealign 8)
510 ; MIPS32: bb.8.pre.PHI.2:
511 ; MIPS32: successors: %bb.9(0x40000000), %bb.10(0x40000000)
512 ; MIPS32: [[C9:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
513 ; MIPS32: [[COPY8:%[0-9]+]]:gprb(s32) = COPY [[COPY]](s32)
514 ; MIPS32: [[AND4:%[0-9]+]]:gprb(s32) = G_AND [[COPY8]], [[C9]]
515 ; MIPS32: G_BRCOND [[AND4]](s32), %bb.9
516 ; MIPS32: G_BR %bb.10
517 ; MIPS32: bb.9.b.PHI.2.0:
518 ; MIPS32: successors: %bb.11(0x80000000)
519 ; MIPS32: [[LOAD9:%[0-9]+]]:gprb(s32) = G_LOAD [[COPY3]](p0) :: (load (s32) from %ir.a, align 8)
520 ; MIPS32: [[C10:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 4
521 ; MIPS32: [[PTR_ADD4:%[0-9]+]]:gprb(p0) = G_PTR_ADD [[COPY3]], [[C10]](s32)
522 ; MIPS32: [[LOAD10:%[0-9]+]]:gprb(s32) = G_LOAD [[PTR_ADD4]](p0) :: (load (s32) from %ir.a + 4, basealign 8)
523 ; MIPS32: G_BR %bb.11
524 ; MIPS32: bb.10.b.PHI.2.1:
525 ; MIPS32: successors: %bb.11(0x80000000)
526 ; MIPS32: [[LOAD11:%[0-9]+]]:gprb(s32) = G_LOAD [[LOAD]](p0) :: (load (s32) from %ir.b, align 8)
527 ; MIPS32: [[C11:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 4
528 ; MIPS32: [[PTR_ADD5:%[0-9]+]]:gprb(p0) = G_PTR_ADD [[LOAD]], [[C11]](s32)
529 ; MIPS32: [[LOAD12:%[0-9]+]]:gprb(s32) = G_LOAD [[PTR_ADD5]](p0) :: (load (s32) from %ir.b + 4, basealign 8)
530 ; MIPS32: bb.11.b.PHI.2:
531 ; MIPS32: successors: %bb.13(0x40000000), %bb.12(0x40000000)
532 ; MIPS32: [[PHI2:%[0-9]+]]:gprb(s32) = G_PHI [[LOAD9]](s32), %bb.9, [[LOAD11]](s32), %bb.10
533 ; MIPS32: [[PHI3:%[0-9]+]]:gprb(s32) = G_PHI [[LOAD10]](s32), %bb.9, [[LOAD12]](s32), %bb.10
534 ; MIPS32: [[C12:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
535 ; MIPS32: [[COPY9:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)
536 ; MIPS32: [[AND5:%[0-9]+]]:gprb(s32) = G_AND [[COPY9]], [[C12]]
537 ; MIPS32: G_BRCOND [[AND5]](s32), %bb.13
538 ; MIPS32: bb.12.b.PHI.2.end:
539 ; MIPS32: G_STORE [[PHI2]](s32), [[LOAD2]](p0) :: (store (s32) into %ir.result, align 8)
540 ; MIPS32: [[C13:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 4
541 ; MIPS32: [[PTR_ADD6:%[0-9]+]]:gprb(p0) = G_PTR_ADD [[LOAD2]], [[C13]](s32)
542 ; MIPS32: G_STORE [[PHI3]](s32), [[PTR_ADD6]](p0) :: (store (s32) into %ir.result + 4, basealign 8)
544 ; MIPS32: bb.13.b.PHI.3:
545 ; MIPS32: [[PHI4:%[0-9]+]]:gprb(s32) = G_PHI [[PHI2]](s32), %bb.11, [[PHI]](s32), %bb.6
546 ; MIPS32: [[PHI5:%[0-9]+]]:gprb(s32) = G_PHI [[PHI3]](s32), %bb.11, [[PHI1]](s32), %bb.6
547 ; MIPS32: [[PHI6:%[0-9]+]]:gprb(s32) = G_PHI [[PHI2]](s32), %bb.11, [[C]](s32), %bb.6
548 ; MIPS32: [[PHI7:%[0-9]+]]:gprb(s32) = G_PHI [[PHI3]](s32), %bb.11, [[C]](s32), %bb.6
549 ; MIPS32: [[C14:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
550 ; MIPS32: [[COPY10:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)
551 ; MIPS32: [[AND6:%[0-9]+]]:gprb(s32) = G_AND [[COPY10]], [[C14]]
552 ; MIPS32: [[SELECT:%[0-9]+]]:gprb(s32) = G_SELECT [[AND6]](s32), [[PHI4]], [[PHI6]]
553 ; MIPS32: [[SELECT1:%[0-9]+]]:gprb(s32) = G_SELECT [[AND6]](s32), [[PHI5]], [[PHI7]]
554 ; MIPS32: [[COPY11:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)
555 ; MIPS32: [[AND7:%[0-9]+]]:gprb(s32) = G_AND [[COPY11]], [[C14]]
556 ; MIPS32: [[SELECT2:%[0-9]+]]:gprb(s32) = G_SELECT [[AND7]](s32), [[SELECT]], [[PHI4]]
557 ; MIPS32: [[SELECT3:%[0-9]+]]:gprb(s32) = G_SELECT [[AND7]](s32), [[SELECT1]], [[PHI5]]
558 ; MIPS32: G_STORE [[SELECT2]](s32), [[LOAD2]](p0) :: (store (s32) into %ir.result, align 8)
559 ; MIPS32: [[C15:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 4
560 ; MIPS32: [[PTR_ADD7:%[0-9]+]]:gprb(p0) = G_PTR_ADD [[LOAD2]], [[C15]](s32)
561 ; MIPS32: G_STORE [[SELECT3]](s32), [[PTR_ADD7]](p0) :: (store (s32) into %ir.result + 4, basealign 8)
562 ; MIPS32: G_STORE [[PHI4]](s32), [[LOAD2]](p0) :: (store (s32) into %ir.result, align 8)
563 ; MIPS32: [[C16:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 4
564 ; MIPS32: [[PTR_ADD8:%[0-9]+]]:gprb(p0) = G_PTR_ADD [[LOAD2]], [[C16]](s32)
565 ; MIPS32: G_STORE [[PHI5]](s32), [[PTR_ADD8]](p0) :: (store (s32) into %ir.result + 4, basealign 8)
568 liveins: $a0, $a1, $a2, $a3
574 %10:_(p0) = G_FRAME_INDEX %fixed-stack.2
575 %4:_(p0) = G_LOAD %10(p0) :: (load (p0) from %fixed-stack.2, align 8)
576 %11:_(p0) = G_FRAME_INDEX %fixed-stack.1
577 %5:_(p0) = G_LOAD %11(p0) :: (load (p0) from %fixed-stack.1)
578 %12:_(p0) = G_FRAME_INDEX %fixed-stack.0
579 %6:_(p0) = G_LOAD %12(p0) :: (load (p0) from %fixed-stack.0, align 8)
580 %33:_(s32) = G_CONSTANT i32 0
581 %24:_(s64) = G_MERGE_VALUES %33(s32), %33(s32)
582 %34:_(s32) = G_CONSTANT i32 1
583 %35:_(s32) = COPY %7(s32)
584 %32:_(s32) = G_AND %35, %34
585 G_BRCOND %32(s32), %bb.9
588 %36:_(s32) = G_CONSTANT i32 1
589 %37:_(s32) = COPY %8(s32)
590 %31:_(s32) = G_AND %37, %36
591 G_BRCOND %31(s32), %bb.5
594 %38:_(s32) = G_CONSTANT i32 1
595 %39:_(s32) = COPY %9(s32)
596 %30:_(s32) = G_AND %39, %38
597 G_BRCOND %30(s32), %bb.6
600 %13:_(s64) = G_LOAD %3(p0) :: (load (s64) from %ir.a)
604 %15:_(s64) = G_LOAD %4(p0) :: (load (s64) from %ir.b)
608 %14:_(s64) = G_LOAD %5(p0) :: (load (s64) from %ir.c)
611 %16:_(s64) = G_PHI %13(s64), %bb.4, %15(s64), %bb.5, %14(s64), %bb.6
612 %40:_(s32) = G_CONSTANT i32 1
613 %41:_(s32) = COPY %9(s32)
614 %29:_(s32) = G_AND %41, %40
615 G_BRCOND %29(s32), %bb.8
619 G_STORE %16(s64), %6(p0) :: (store (s64) into %ir.result)
623 %42:_(s32) = G_CONSTANT i32 1
624 %43:_(s32) = COPY %7(s32)
625 %28:_(s32) = G_AND %43, %42
626 G_BRCOND %28(s32), %bb.10
630 %18:_(s64) = G_LOAD %3(p0) :: (load (s64) from %ir.a)
634 %17:_(s64) = G_LOAD %4(p0) :: (load (s64) from %ir.b)
637 %19:_(s64) = G_PHI %18(s64), %bb.10, %17(s64), %bb.11
638 %44:_(s32) = G_CONSTANT i32 1
639 %45:_(s32) = COPY %8(s32)
640 %27:_(s32) = G_AND %45, %44
641 G_BRCOND %27(s32), %bb.14
644 G_STORE %19(s64), %6(p0) :: (store (s64) into %ir.result)
648 %20:_(s64) = G_PHI %19(s64), %bb.12, %16(s64), %bb.7
649 %21:_(s64) = G_PHI %19(s64), %bb.12, %24(s64), %bb.7
650 %46:_(s32) = G_CONSTANT i32 1
651 %47:_(s32) = COPY %9(s32)
652 %26:_(s32) = G_AND %47, %46
653 %22:_(s64) = G_SELECT %26(s32), %20, %21
654 %48:_(s32) = COPY %8(s32)
655 %25:_(s32) = G_AND %48, %46
656 %23:_(s64) = G_SELECT %25(s32), %22, %20
657 G_STORE %23(s64), %6(p0) :: (store (s64) into %ir.result)
658 G_STORE %20(s64), %6(p0) :: (store (s64) into %ir.result)
663 name: long_chain_ambiguous_double_in_fpr
666 tracksRegLiveness: true
668 - { id: 0, offset: 24, size: 4, alignment: 8, isImmutable: true }
669 - { id: 1, offset: 20, size: 4, alignment: 4, isImmutable: true }
670 - { id: 2, offset: 16, size: 4, alignment: 8, isImmutable: true }
672 ; MIPS32-LABEL: name: long_chain_ambiguous_double_in_fpr
673 ; MIPS32: bb.0.entry:
674 ; MIPS32: successors: %bb.8(0x40000000), %bb.1(0x40000000)
675 ; MIPS32: liveins: $a0, $a1, $a2, $a3
676 ; MIPS32: [[COPY:%[0-9]+]]:gprb(s32) = COPY $a0
677 ; MIPS32: [[COPY1:%[0-9]+]]:gprb(s32) = COPY $a1
678 ; MIPS32: [[COPY2:%[0-9]+]]:gprb(s32) = COPY $a2
679 ; MIPS32: [[COPY3:%[0-9]+]]:gprb(p0) = COPY $a3
680 ; MIPS32: [[FRAME_INDEX:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.0
681 ; MIPS32: [[LOAD:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX]](p0) :: (load (p0) from %fixed-stack.0, align 8)
682 ; MIPS32: [[FRAME_INDEX1:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.1
683 ; MIPS32: [[LOAD1:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX1]](p0) :: (load (p0) from %fixed-stack.1)
684 ; MIPS32: [[FRAME_INDEX2:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.2
685 ; MIPS32: [[LOAD2:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX2]](p0) :: (load (p0) from %fixed-stack.2, align 8)
686 ; MIPS32: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
687 ; MIPS32: [[COPY4:%[0-9]+]]:gprb(s32) = COPY [[COPY]](s32)
688 ; MIPS32: [[AND:%[0-9]+]]:gprb(s32) = G_AND [[COPY4]], [[C]]
689 ; MIPS32: G_BRCOND [[AND]](s32), %bb.8
690 ; MIPS32: bb.1.pre.PHI.1:
691 ; MIPS32: successors: %bb.4(0x40000000), %bb.2(0x40000000)
692 ; MIPS32: [[C1:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
693 ; MIPS32: [[COPY5:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)
694 ; MIPS32: [[AND1:%[0-9]+]]:gprb(s32) = G_AND [[COPY5]], [[C1]]
695 ; MIPS32: G_BRCOND [[AND1]](s32), %bb.4
696 ; MIPS32: bb.2.pre.PHI.1.0:
697 ; MIPS32: successors: %bb.5(0x40000000), %bb.3(0x40000000)
698 ; MIPS32: [[C2:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
699 ; MIPS32: [[COPY6:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)
700 ; MIPS32: [[AND2:%[0-9]+]]:gprb(s32) = G_AND [[COPY6]], [[C2]]
701 ; MIPS32: G_BRCOND [[AND2]](s32), %bb.5
702 ; MIPS32: bb.3.b.PHI.1.0:
703 ; MIPS32: successors: %bb.6(0x80000000)
704 ; MIPS32: [[LOAD3:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY3]](p0) :: (load (s64) from %ir.a)
706 ; MIPS32: bb.4.b.PHI.1.1:
707 ; MIPS32: successors: %bb.6(0x80000000)
708 ; MIPS32: [[LOAD4:%[0-9]+]]:fprb(s64) = G_LOAD [[LOAD]](p0) :: (load (s64) from %ir.b)
710 ; MIPS32: bb.5.b.PHI.1.2:
711 ; MIPS32: successors: %bb.6(0x80000000)
712 ; MIPS32: [[LOAD5:%[0-9]+]]:fprb(s64) = G_LOAD [[LOAD1]](p0) :: (load (s64) from %ir.c)
713 ; MIPS32: bb.6.b.PHI.1:
714 ; MIPS32: successors: %bb.7(0x40000000), %bb.13(0x40000000)
715 ; MIPS32: [[PHI:%[0-9]+]]:fprb(s64) = G_PHI [[LOAD3]](s64), %bb.3, [[LOAD4]](s64), %bb.4, [[LOAD5]](s64), %bb.5
716 ; MIPS32: [[C3:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
717 ; MIPS32: [[COPY7:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)
718 ; MIPS32: [[AND3:%[0-9]+]]:gprb(s32) = G_AND [[COPY7]], [[C3]]
719 ; MIPS32: G_BRCOND [[AND3]](s32), %bb.7
720 ; MIPS32: G_BR %bb.13
721 ; MIPS32: bb.7.b.PHI.1.end:
722 ; MIPS32: G_STORE [[PHI]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)
724 ; MIPS32: bb.8.pre.PHI.2:
725 ; MIPS32: successors: %bb.9(0x40000000), %bb.10(0x40000000)
726 ; MIPS32: [[C4:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
727 ; MIPS32: [[COPY8:%[0-9]+]]:gprb(s32) = COPY [[COPY]](s32)
728 ; MIPS32: [[AND4:%[0-9]+]]:gprb(s32) = G_AND [[COPY8]], [[C4]]
729 ; MIPS32: G_BRCOND [[AND4]](s32), %bb.9
730 ; MIPS32: G_BR %bb.10
731 ; MIPS32: bb.9.b.PHI.2.0:
732 ; MIPS32: successors: %bb.11(0x80000000)
733 ; MIPS32: [[LOAD6:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY3]](p0) :: (load (s64) from %ir.a)
734 ; MIPS32: G_BR %bb.11
735 ; MIPS32: bb.10.b.PHI.2.1:
736 ; MIPS32: successors: %bb.11(0x80000000)
737 ; MIPS32: [[LOAD7:%[0-9]+]]:fprb(s64) = G_LOAD [[LOAD]](p0) :: (load (s64) from %ir.b)
738 ; MIPS32: bb.11.b.PHI.2:
739 ; MIPS32: successors: %bb.13(0x40000000), %bb.12(0x40000000)
740 ; MIPS32: [[PHI1:%[0-9]+]]:fprb(s64) = G_PHI [[LOAD6]](s64), %bb.9, [[LOAD7]](s64), %bb.10
741 ; MIPS32: [[C5:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
742 ; MIPS32: [[COPY9:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)
743 ; MIPS32: [[AND5:%[0-9]+]]:gprb(s32) = G_AND [[COPY9]], [[C5]]
744 ; MIPS32: G_BRCOND [[AND5]](s32), %bb.13
745 ; MIPS32: bb.12.b.PHI.2.end:
746 ; MIPS32: G_STORE [[PHI1]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)
748 ; MIPS32: bb.13.b.PHI.3:
749 ; MIPS32: [[PHI2:%[0-9]+]]:fprb(s64) = G_PHI [[PHI1]](s64), %bb.11, [[PHI]](s64), %bb.6
750 ; MIPS32: [[PHI3:%[0-9]+]]:fprb(s64) = G_PHI [[PHI1]](s64), %bb.11, [[PHI]](s64), %bb.6
751 ; MIPS32: [[C6:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
752 ; MIPS32: [[COPY10:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)
753 ; MIPS32: [[AND6:%[0-9]+]]:gprb(s32) = G_AND [[COPY10]], [[C6]]
754 ; MIPS32: [[SELECT:%[0-9]+]]:fprb(s64) = G_SELECT [[AND6]](s32), [[PHI2]], [[PHI3]]
755 ; MIPS32: [[COPY11:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)
756 ; MIPS32: [[AND7:%[0-9]+]]:gprb(s32) = G_AND [[COPY11]], [[C6]]
757 ; MIPS32: [[SELECT1:%[0-9]+]]:fprb(s64) = G_SELECT [[AND7]](s32), [[SELECT]], [[PHI2]]
758 ; MIPS32: G_STORE [[SELECT1]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)
759 ; MIPS32: G_STORE [[PHI2]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)
762 liveins: $a0, $a1, $a2, $a3
768 %10:_(p0) = G_FRAME_INDEX %fixed-stack.2
769 %4:_(p0) = G_LOAD %10(p0) :: (load (p0) from %fixed-stack.2, align 8)
770 %11:_(p0) = G_FRAME_INDEX %fixed-stack.1
771 %5:_(p0) = G_LOAD %11(p0) :: (load (p0) from %fixed-stack.1)
772 %12:_(p0) = G_FRAME_INDEX %fixed-stack.0
773 %6:_(p0) = G_LOAD %12(p0) :: (load (p0) from %fixed-stack.0, align 8)
774 %32:_(s32) = G_CONSTANT i32 1
775 %33:_(s32) = COPY %7(s32)
776 %31:_(s32) = G_AND %33, %32
777 G_BRCOND %31(s32), %bb.9
780 %34:_(s32) = G_CONSTANT i32 1
781 %35:_(s32) = COPY %8(s32)
782 %30:_(s32) = G_AND %35, %34
783 G_BRCOND %30(s32), %bb.5
786 %36:_(s32) = G_CONSTANT i32 1
787 %37:_(s32) = COPY %9(s32)
788 %29:_(s32) = G_AND %37, %36
789 G_BRCOND %29(s32), %bb.6
792 %13:_(s64) = G_LOAD %3(p0) :: (load (s64) from %ir.a)
796 %15:_(s64) = G_LOAD %4(p0) :: (load (s64) from %ir.b)
800 %14:_(s64) = G_LOAD %5(p0) :: (load (s64) from %ir.c)
803 %16:_(s64) = G_PHI %13(s64), %bb.4, %15(s64), %bb.5, %14(s64), %bb.6
804 %38:_(s32) = G_CONSTANT i32 1
805 %39:_(s32) = COPY %9(s32)
806 %28:_(s32) = G_AND %39, %38
807 G_BRCOND %28(s32), %bb.8
811 G_STORE %16(s64), %6(p0) :: (store (s64) into %ir.result)
815 %40:_(s32) = G_CONSTANT i32 1
816 %41:_(s32) = COPY %7(s32)
817 %27:_(s32) = G_AND %41, %40
818 G_BRCOND %27(s32), %bb.10
822 %18:_(s64) = G_LOAD %3(p0) :: (load (s64) from %ir.a)
826 %17:_(s64) = G_LOAD %4(p0) :: (load (s64) from %ir.b)
829 %19:_(s64) = G_PHI %18(s64), %bb.10, %17(s64), %bb.11
830 %42:_(s32) = G_CONSTANT i32 1
831 %43:_(s32) = COPY %8(s32)
832 %26:_(s32) = G_AND %43, %42
833 G_BRCOND %26(s32), %bb.14
836 G_STORE %19(s64), %6(p0) :: (store (s64) into %ir.result)
840 %20:_(s64) = G_PHI %19(s64), %bb.12, %16(s64), %bb.7
841 %21:_(s64) = G_PHI %19(s64), %bb.12, %16(s64), %bb.7
842 %44:_(s32) = G_CONSTANT i32 1
843 %45:_(s32) = COPY %9(s32)
844 %25:_(s32) = G_AND %45, %44
845 %22:_(s64) = G_SELECT %25(s32), %20, %21
846 %46:_(s32) = COPY %8(s32)
847 %24:_(s32) = G_AND %46, %44
848 %23:_(s64) = G_SELECT %24(s32), %22, %20
849 G_STORE %23(s64), %6(p0) :: (store (s64) into %ir.result)
850 G_STORE %20(s64), %6(p0) :: (store (s64) into %ir.result)
855 name: long_chain_double_in_fpr
858 tracksRegLiveness: true
860 - { id: 0, offset: 24, size: 4, alignment: 8, isImmutable: true }
861 - { id: 1, offset: 20, size: 4, alignment: 4, isImmutable: true }
862 - { id: 2, offset: 16, size: 4, alignment: 8, isImmutable: true }
864 ; MIPS32-LABEL: name: long_chain_double_in_fpr
865 ; MIPS32: bb.0.entry:
866 ; MIPS32: successors: %bb.8(0x40000000), %bb.1(0x40000000)
867 ; MIPS32: liveins: $a0, $a1, $a2, $a3
868 ; MIPS32: [[COPY:%[0-9]+]]:gprb(s32) = COPY $a0
869 ; MIPS32: [[COPY1:%[0-9]+]]:gprb(s32) = COPY $a1
870 ; MIPS32: [[COPY2:%[0-9]+]]:gprb(s32) = COPY $a2
871 ; MIPS32: [[COPY3:%[0-9]+]]:gprb(p0) = COPY $a3
872 ; MIPS32: [[FRAME_INDEX:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.0
873 ; MIPS32: [[LOAD:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX]](p0) :: (load (p0) from %fixed-stack.0, align 8)
874 ; MIPS32: [[FRAME_INDEX1:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.1
875 ; MIPS32: [[LOAD1:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX1]](p0) :: (load (p0) from %fixed-stack.1)
876 ; MIPS32: [[FRAME_INDEX2:%[0-9]+]]:gprb(p0) = G_FRAME_INDEX %fixed-stack.2
877 ; MIPS32: [[LOAD2:%[0-9]+]]:gprb(p0) = G_LOAD [[FRAME_INDEX2]](p0) :: (load (p0) from %fixed-stack.2, align 8)
878 ; MIPS32: [[C:%[0-9]+]]:fprb(s64) = G_FCONSTANT double 0.000000e+00
879 ; MIPS32: [[C1:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
880 ; MIPS32: [[COPY4:%[0-9]+]]:gprb(s32) = COPY [[COPY]](s32)
881 ; MIPS32: [[AND:%[0-9]+]]:gprb(s32) = G_AND [[COPY4]], [[C1]]
882 ; MIPS32: G_BRCOND [[AND]](s32), %bb.8
883 ; MIPS32: bb.1.pre.PHI.1:
884 ; MIPS32: successors: %bb.4(0x40000000), %bb.2(0x40000000)
885 ; MIPS32: [[C2:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
886 ; MIPS32: [[COPY5:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)
887 ; MIPS32: [[AND1:%[0-9]+]]:gprb(s32) = G_AND [[COPY5]], [[C2]]
888 ; MIPS32: G_BRCOND [[AND1]](s32), %bb.4
889 ; MIPS32: bb.2.pre.PHI.1.0:
890 ; MIPS32: successors: %bb.5(0x40000000), %bb.3(0x40000000)
891 ; MIPS32: [[C3:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
892 ; MIPS32: [[COPY6:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)
893 ; MIPS32: [[AND2:%[0-9]+]]:gprb(s32) = G_AND [[COPY6]], [[C3]]
894 ; MIPS32: G_BRCOND [[AND2]](s32), %bb.5
895 ; MIPS32: bb.3.b.PHI.1.0:
896 ; MIPS32: successors: %bb.6(0x80000000)
897 ; MIPS32: [[LOAD3:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY3]](p0) :: (load (s64) from %ir.a)
899 ; MIPS32: bb.4.b.PHI.1.1:
900 ; MIPS32: successors: %bb.6(0x80000000)
901 ; MIPS32: [[LOAD4:%[0-9]+]]:fprb(s64) = G_LOAD [[LOAD]](p0) :: (load (s64) from %ir.b)
903 ; MIPS32: bb.5.b.PHI.1.2:
904 ; MIPS32: successors: %bb.6(0x80000000)
905 ; MIPS32: [[LOAD5:%[0-9]+]]:fprb(s64) = G_LOAD [[LOAD1]](p0) :: (load (s64) from %ir.c)
906 ; MIPS32: bb.6.b.PHI.1:
907 ; MIPS32: successors: %bb.7(0x40000000), %bb.13(0x40000000)
908 ; MIPS32: [[PHI:%[0-9]+]]:fprb(s64) = G_PHI [[LOAD3]](s64), %bb.3, [[LOAD4]](s64), %bb.4, [[LOAD5]](s64), %bb.5
909 ; MIPS32: [[C4:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
910 ; MIPS32: [[COPY7:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)
911 ; MIPS32: [[AND3:%[0-9]+]]:gprb(s32) = G_AND [[COPY7]], [[C4]]
912 ; MIPS32: G_BRCOND [[AND3]](s32), %bb.7
913 ; MIPS32: G_BR %bb.13
914 ; MIPS32: bb.7.b.PHI.1.end:
915 ; MIPS32: G_STORE [[PHI]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)
917 ; MIPS32: bb.8.pre.PHI.2:
918 ; MIPS32: successors: %bb.9(0x40000000), %bb.10(0x40000000)
919 ; MIPS32: [[C5:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
920 ; MIPS32: [[COPY8:%[0-9]+]]:gprb(s32) = COPY [[COPY]](s32)
921 ; MIPS32: [[AND4:%[0-9]+]]:gprb(s32) = G_AND [[COPY8]], [[C5]]
922 ; MIPS32: G_BRCOND [[AND4]](s32), %bb.9
923 ; MIPS32: G_BR %bb.10
924 ; MIPS32: bb.9.b.PHI.2.0:
925 ; MIPS32: successors: %bb.11(0x80000000)
926 ; MIPS32: [[LOAD6:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY3]](p0) :: (load (s64) from %ir.a)
927 ; MIPS32: G_BR %bb.11
928 ; MIPS32: bb.10.b.PHI.2.1:
929 ; MIPS32: successors: %bb.11(0x80000000)
930 ; MIPS32: [[LOAD7:%[0-9]+]]:fprb(s64) = G_LOAD [[LOAD]](p0) :: (load (s64) from %ir.b)
931 ; MIPS32: bb.11.b.PHI.2:
932 ; MIPS32: successors: %bb.13(0x40000000), %bb.12(0x40000000)
933 ; MIPS32: [[PHI1:%[0-9]+]]:fprb(s64) = G_PHI [[LOAD6]](s64), %bb.9, [[LOAD7]](s64), %bb.10
934 ; MIPS32: [[C6:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
935 ; MIPS32: [[COPY9:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)
936 ; MIPS32: [[AND5:%[0-9]+]]:gprb(s32) = G_AND [[COPY9]], [[C6]]
937 ; MIPS32: G_BRCOND [[AND5]](s32), %bb.13
938 ; MIPS32: bb.12.b.PHI.2.end:
939 ; MIPS32: G_STORE [[PHI1]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)
941 ; MIPS32: bb.13.b.PHI.3:
942 ; MIPS32: [[PHI2:%[0-9]+]]:fprb(s64) = G_PHI [[PHI1]](s64), %bb.11, [[PHI]](s64), %bb.6
943 ; MIPS32: [[PHI3:%[0-9]+]]:fprb(s64) = G_PHI [[PHI1]](s64), %bb.11, [[C]](s64), %bb.6
944 ; MIPS32: [[C7:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
945 ; MIPS32: [[COPY10:%[0-9]+]]:gprb(s32) = COPY [[COPY2]](s32)
946 ; MIPS32: [[AND6:%[0-9]+]]:gprb(s32) = G_AND [[COPY10]], [[C7]]
947 ; MIPS32: [[SELECT:%[0-9]+]]:fprb(s64) = G_SELECT [[AND6]](s32), [[PHI2]], [[PHI3]]
948 ; MIPS32: [[COPY11:%[0-9]+]]:gprb(s32) = COPY [[COPY1]](s32)
949 ; MIPS32: [[AND7:%[0-9]+]]:gprb(s32) = G_AND [[COPY11]], [[C7]]
950 ; MIPS32: [[SELECT1:%[0-9]+]]:fprb(s64) = G_SELECT [[AND7]](s32), [[SELECT]], [[PHI2]]
951 ; MIPS32: G_STORE [[SELECT1]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)
952 ; MIPS32: G_STORE [[PHI2]](s64), [[LOAD2]](p0) :: (store (s64) into %ir.result)
955 liveins: $a0, $a1, $a2, $a3
961 %10:_(p0) = G_FRAME_INDEX %fixed-stack.2
962 %4:_(p0) = G_LOAD %10(p0) :: (load (p0) from %fixed-stack.2, align 8)
963 %11:_(p0) = G_FRAME_INDEX %fixed-stack.1
964 %5:_(p0) = G_LOAD %11(p0) :: (load (p0) from %fixed-stack.1)
965 %12:_(p0) = G_FRAME_INDEX %fixed-stack.0
966 %6:_(p0) = G_LOAD %12(p0) :: (load (p0) from %fixed-stack.0, align 8)
967 %24:_(s64) = G_FCONSTANT double 0.000000e+00
968 %33:_(s32) = G_CONSTANT i32 1
969 %34:_(s32) = COPY %7(s32)
970 %32:_(s32) = G_AND %34, %33
971 G_BRCOND %32(s32), %bb.9
974 %35:_(s32) = G_CONSTANT i32 1
975 %36:_(s32) = COPY %8(s32)
976 %31:_(s32) = G_AND %36, %35
977 G_BRCOND %31(s32), %bb.5
980 %37:_(s32) = G_CONSTANT i32 1
981 %38:_(s32) = COPY %9(s32)
982 %30:_(s32) = G_AND %38, %37
983 G_BRCOND %30(s32), %bb.6
986 %13:_(s64) = G_LOAD %3(p0) :: (load (s64) from %ir.a)
990 %15:_(s64) = G_LOAD %4(p0) :: (load (s64) from %ir.b)
994 %14:_(s64) = G_LOAD %5(p0) :: (load (s64) from %ir.c)
997 %16:_(s64) = G_PHI %13(s64), %bb.4, %15(s64), %bb.5, %14(s64), %bb.6
998 %39:_(s32) = G_CONSTANT i32 1
999 %40:_(s32) = COPY %9(s32)
1000 %29:_(s32) = G_AND %40, %39
1001 G_BRCOND %29(s32), %bb.8
1005 G_STORE %16(s64), %6(p0) :: (store (s64) into %ir.result)
1009 %41:_(s32) = G_CONSTANT i32 1
1010 %42:_(s32) = COPY %7(s32)
1011 %28:_(s32) = G_AND %42, %41
1012 G_BRCOND %28(s32), %bb.10
1016 %18:_(s64) = G_LOAD %3(p0) :: (load (s64) from %ir.a)
1020 %17:_(s64) = G_LOAD %4(p0) :: (load (s64) from %ir.b)
1023 %19:_(s64) = G_PHI %18(s64), %bb.10, %17(s64), %bb.11
1024 %43:_(s32) = G_CONSTANT i32 1
1025 %44:_(s32) = COPY %8(s32)
1026 %27:_(s32) = G_AND %44, %43
1027 G_BRCOND %27(s32), %bb.14
1030 G_STORE %19(s64), %6(p0) :: (store (s64) into %ir.result)
1034 %20:_(s64) = G_PHI %19(s64), %bb.12, %16(s64), %bb.7
1035 %21:_(s64) = G_PHI %19(s64), %bb.12, %24(s64), %bb.7
1036 %45:_(s32) = G_CONSTANT i32 1
1037 %46:_(s32) = COPY %9(s32)
1038 %26:_(s32) = G_AND %46, %45
1039 %22:_(s64) = G_SELECT %26(s32), %20, %21
1040 %47:_(s32) = COPY %8(s32)
1041 %25:_(s32) = G_AND %47, %45
1042 %23:_(s64) = G_SELECT %25(s32), %22, %20
1043 G_STORE %23(s64), %6(p0) :: (store (s64) into %ir.result)
1044 G_STORE %20(s64), %6(p0) :: (store (s64) into %ir.result)