Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / CodeGen / X86 / cycle-info.mir
blob358ccb2c5e731dec599a33b52690e7ae8264408c
1 # RUN: llc -mtriple=x86_64-unknown-linux-gnu -run-pass=print-machine-cycles -o - %s 2>&1 | FileCheck %s
3 ...
4 ---
5 # CHECK-LABEL: MachineCycleInfo for function: empty
6 name:            empty
7 alignment:       16
8 tracksRegLiveness: true
9 frameInfo:
10   maxAlignment:    1
11 machineFunctionInfo: {}
12 body:             |
13   bb.0:
14     RET64
16 ...
17 ---
18 # CHECK-LABEL: MachineCycleInfo for function: simple
19 # CHECK:           depth=1: entries(bb.1)
20 name:            simple
21 alignment:       16
22 tracksRegLiveness: true
23 registers:
24   - { id: 0, class: gr8 }
25 frameInfo:
26   maxAlignment:    1
27 machineFunctionInfo: {}
28 body:             |
29   bb.0:
30     JMP_1 %bb.1
32   bb.1:
33     %0:gr8 = IMPLICIT_DEF
34     TEST8ri %0, 1, implicit-def $eflags
35     JCC_1 %bb.1, 5, implicit $eflags
36     JMP_1 %bb.2
38   bb.2:
39     RET64
41 ...
42 ---
43 # CHECK-LABEL: MachineCycleInfo for function: two_latches
44 # CHECK:           depth=1: entries(bb.1) bb.2
45 name:            two_latches
46 alignment:       16
47 tracksRegLiveness: true
48 registers:
49   - { id: 0, class: gr8 }
50   - { id: 1, class: gr8 }
51 frameInfo:
52   maxAlignment:    1
53 machineFunctionInfo: {}
54 body:             |
55   bb.0:
56     JMP_1 %bb.1
58   bb.1:
59     %0:gr8 = IMPLICIT_DEF
60     TEST8ri %0, 1, implicit-def $eflags
61     JCC_1 %bb.1, 5, implicit $eflags
62     JMP_1 %bb.2
64   bb.2:
65     %1:gr8 = IMPLICIT_DEF
66     TEST8ri %1, 1, implicit-def $eflags
67     JCC_1 %bb.3, 5, implicit $eflags
68     JMP_1 %bb.1
70   bb.3:
71     RET64
73 ...
74 ---
75 # CHECK-LABEL: MachineCycleInfo for function: nested_simple
76 # CHECK:           depth=1: entries(bb.1) bb.3 bb.2
77 # CHECK:               depth=2: entries(bb.2)
78 name:            nested_simple
79 alignment:       16
80 tracksRegLiveness: true
81 registers:
82   - { id: 0, class: gr8 }
83   - { id: 1, class: gr8 }
84 frameInfo:
85   maxAlignment:    1
86 machineFunctionInfo: {}
87 body:             |
88   bb.0:
89     JMP_1 %bb.1
91   bb.1:
92     JMP_1 %bb.2
94   bb.2:
95     %0:gr8 = IMPLICIT_DEF
96     TEST8ri %0, 1, implicit-def $eflags
97     JCC_1 %bb.2, 5, implicit $eflags
98     JMP_1 %bb.3
100   bb.3:
101     %1:gr8 = IMPLICIT_DEF
102     TEST8ri %1, 1, implicit-def $eflags
103     JCC_1 %bb.1, 5, implicit $eflags
104     JMP_1 %bb.4
106   bb.4:
107     RET64
111 # CHECK-LABEL: MachineCycleInfo for function: nested_outer_latch_in_inner_loop
112 # CHECK:           depth=1: entries(bb.1) bb.2 bb.3
113 # CHECK:               depth=2: entries(bb.2) bb.3
114 name:            nested_outer_latch_in_inner_loop
115 alignment:       16
116 tracksRegLiveness: true
117 registers:
118   - { id: 0, class: gr8 }
119   - { id: 1, class: gr8 }
120 frameInfo:
121   maxAlignment:    1
122 machineFunctionInfo: {}
123 body:             |
124   bb.0:
125     JMP_1 %bb.1
127   bb.1:
128     JMP_1 %bb.2
130   bb.2:
131     %0:gr8 = IMPLICIT_DEF
132     TEST8ri %0, 1, implicit-def $eflags
133     JCC_1 %bb.3, 5, implicit $eflags
134     JMP_1 %bb.1
136   bb.3:
137     %1:gr8 = IMPLICIT_DEF
138     TEST8ri %1, 1, implicit-def $eflags
139     JCC_1 %bb.4, 5, implicit $eflags
140     JMP_1 %bb.2
142   bb.4:
143     RET64
147 # CHECK-LABEL: MachineCycleInfo for function: sibling_loops
148 # CHECK:           depth=1: entries(bb.1)
149 # CHECK:           depth=1: entries(bb.2)
150 name:            sibling_loops
151 alignment:       16
152 tracksRegLiveness: true
153 registers:
154   - { id: 0, class: gr8 }
155   - { id: 1, class: gr8 }
156   - { id: 2, class: gr8 }
157 frameInfo:
158   maxAlignment:    1
159 machineFunctionInfo: {}
160 body:             |
161   bb.0:
162     %0:gr8 = IMPLICIT_DEF
163     TEST8ri %0, 1, implicit-def $eflags
164     JCC_1 %bb.1, 5, implicit $eflags
165     JMP_1 %bb.2
167   bb.1:
168     %2:gr8 = IMPLICIT_DEF
169     TEST8ri %2, 1, implicit-def $eflags
170     JCC_1 %bb.1, 5, implicit $eflags
171     JMP_1 %bb.3
173   bb.2:
174     %1:gr8 = IMPLICIT_DEF
175     TEST8ri %1, 1, implicit-def $eflags
176     JCC_1 %bb.2, 5, implicit $eflags
177     JMP_1 %bb.3
179   bb.3:
180     RET64
184 # CHECK-LABEL: MachineCycleInfo for function: serial_loops
185 # CHECK:           depth=1: entries(bb.2)
186 # CHECK:           depth=1: entries(bb.1)
187 name:            serial_loops
188 alignment:       16
189 tracksRegLiveness: true
190 registers:
191   - { id: 0, class: gr8 }
192   - { id: 1, class: gr8 }
193 frameInfo:
194   maxAlignment:    1
195 machineFunctionInfo: {}
196 body:             |
197   bb.0:
198     JMP_1 %bb.1
200   bb.1:
201     %0:gr8 = IMPLICIT_DEF
202     TEST8ri %0, 1, implicit-def $eflags
203     JCC_1 %bb.1, 5, implicit $eflags
204     JMP_1 %bb.2
206   bb.2:
207     %1:gr8 = IMPLICIT_DEF
208     TEST8ri %1, 1, implicit-def $eflags
209     JCC_1 %bb.2, 5, implicit $eflags
210     JMP_1 %bb.3
212   bb.3:
213     RET64
217 # CHECK-LABEL: MachineCycleInfo for function: nested_sibling_loops
218 # CHECK:           depth=1: entries(bb.1) bb.4 bb.5 bb.3 bb.2
219 # CHECK:               depth=2: entries(bb.4) bb.5
220 # CHECK:               depth=2: entries(bb.2)
221 name:            nested_sibling_loops
222 alignment:       16
223 tracksRegLiveness: true
224 registers:
225   - { id: 0, class: gr8 }
226   - { id: 1, class: gr32 }
227   - { id: 2, class: gr8 }
228   - { id: 3, class: gr32 }
229   - { id: 4, class: gr8 }
230   - { id: 5, class: gr32 }
231   - { id: 6, class: gr8 }
232   - { id: 7, class: gr32 }
233   - { id: 8, class: gr8 }
234 frameInfo:
235   maxAlignment:    1
236 machineFunctionInfo: {}
237 body:             |
238   bb.0:
239     JMP_1 %bb.1
241   bb.1:
242     %0:gr8 = IMPLICIT_DEF
243     TEST8ri %0, 1, implicit-def $eflags
244     JCC_1 %bb.2, 5, implicit $eflags
245     JMP_1 %bb.3
247   bb.2:
248     %5:gr32 = MOV32r0 implicit-def dead $eflags
249     %6:gr8 = COPY %5.sub_8bit
250     TEST8rr %6, %6, implicit-def $eflags
251     JCC_1 %bb.2, 5, implicit $eflags
252     JMP_1 %bb.6
254   bb.6:
255     %7:gr32 = MOV32r0 implicit-def dead $eflags
256     %8:gr8 = COPY %7.sub_8bit
257     TEST8rr %8, %8, implicit-def $eflags
258     JCC_1 %bb.1, 5, implicit $eflags
259     JMP_1 %bb.4
261   bb.3:
262     %1:gr32 = MOV32r0 implicit-def dead $eflags
263     %2:gr8 = COPY %1.sub_8bit
264     TEST8rr %2, %2, implicit-def $eflags
265     JCC_1 %bb.4, 5, implicit $eflags
266     JMP_1 %bb.5
268   bb.5:
269     %3:gr32 = MOV32r0 implicit-def dead $eflags
270     %4:gr8 = COPY %3.sub_8bit
271     TEST8rr %4, %4, implicit-def $eflags
272     JCC_1 %bb.3, 5, implicit $eflags
273     JMP_1 %bb.1
275   bb.4:
276     RET64
280 # CHECK-LABEL: MachineCycleInfo for function: deeper_nest
281 # CHECK:           depth=1: entries(bb.1) bb.5 bb.2 bb.3 bb.4
282 # CHECK:               depth=2: entries(bb.2) bb.3 bb.4
283 # CHECK:                   depth=3: entries(bb.3) bb.4
284 name:            deeper_nest
285 alignment:       16
286 tracksRegLiveness: true
287 registers:
288   - { id: 0, class: gr8 }
289   - { id: 1, class: gr8 }
290   - { id: 2, class: gr8 }
291 frameInfo:
292   maxAlignment:    1
293 machineFunctionInfo: {}
294 body:             |
295   bb.0:
296     JMP_1 %bb.1
298   bb.1:
299     JMP_1 %bb.2
301   bb.2:
302     JMP_1 %bb.3
304   bb.3:
305     %0:gr8 = IMPLICIT_DEF
306     TEST8ri %0, 1, implicit-def $eflags
307     JCC_1 %bb.2, 5, implicit $eflags
308     JMP_1 %bb.4
310   bb.4:
311     %1:gr8 = IMPLICIT_DEF
312     TEST8ri %1, 1, implicit-def $eflags
313     JCC_1 %bb.3, 5, implicit $eflags
314     JMP_1 %bb.5
316   bb.5:
317     %2:gr8 = IMPLICIT_DEF
318     TEST8ri %2, 1, implicit-def $eflags
319     JCC_1 %bb.1, 5, implicit $eflags
320     JMP_1 %bb.6
322   bb.6:
323     RET64
327 # CHECK-LABEL: MachineCycleInfo for function: irreducible_basic
328 # CHECK:           depth=1: entries(bb.2 bb.1)
329 name:            irreducible_basic
330 alignment:       16
331 tracksRegLiveness: true
332 registers:
333   - { id: 0, class: gr8 }
334   - { id: 1, class: gr8 }
335   - { id: 2, class: gr8 }
336 frameInfo:
337   maxAlignment:    1
338 machineFunctionInfo: {}
339 body:             |
340   bb.0:
341     %0:gr8 = IMPLICIT_DEF
342     TEST8ri %0, 1, implicit-def $eflags
343     JCC_1 %bb.1, 5, implicit $eflags
344     JMP_1 %bb.2
346   bb.1:
347     %1:gr8 = IMPLICIT_DEF
348     TEST8ri %1, 1, implicit-def $eflags
349     JCC_1 %bb.2, 5, implicit $eflags
350     JMP_1 %bb.3
352   bb.2:
353     %2:gr8 = IMPLICIT_DEF
354     TEST8ri %2, 1, implicit-def $eflags
355     JCC_1 %bb.1, 5, implicit $eflags
356     JMP_1 %bb.3
358   bb.3:
359     RET64
363 # CHECK-LABEL: MachineCycleInfo for function: irreducible_mess
364 # CHECK:           depth=1: entries(bb.2 bb.1) bb.6 bb.5 bb.3 bb.4
365 # CHECK:               depth=2: entries(bb.5 bb.3 bb.1) bb.4
366 # CHECK:                   depth=3: entries(bb.3 bb.1) bb.4
367 name:            irreducible_mess
368 alignment:       16
369 tracksRegLiveness: true
370 registers:
371   - { id: 0, class: gr8 }
372   - { id: 1, class: gr8 }
373   - { id: 2, class: gr32 }
374   - { id: 3, class: gr8 }
375   - { id: 4, class: gr32 }
376   - { id: 5, class: gr8 }
377   - { id: 6, class: gr32 }
378   - { id: 7, class: gr8 }
379   - { id: 8, class: gr32 }
380   - { id: 9, class: gr8 }
381   - { id: 10, class: gr8 }
382 frameInfo:
383   maxAlignment:    1
384 machineFunctionInfo: {}
385 body:             |
386   bb.0:
387     %0:gr8 = IMPLICIT_DEF
388     TEST8ri %0, 1, implicit-def $eflags
389     JCC_1 %bb.1, 5, implicit $eflags
390     JMP_1 %bb.2
392   bb.1:
393     %1:gr8 = IMPLICIT_DEF
394     TEST8ri %1, 1, implicit-def $eflags
395     JCC_1 %bb.3, 5, implicit $eflags
396     JMP_1 %bb.4
398   bb.2:
399     %10:gr8 = IMPLICIT_DEF
400     TEST8ri %10, 1, implicit-def $eflags
401     JCC_1 %bb.3, 5, implicit $eflags
402     JMP_1 %bb.4
404   bb.3:
405     %2:gr32 = MOV32r0 implicit-def dead $eflags
406     %3:gr8 = COPY %2.sub_8bit
407     TEST8rr %3, %3, implicit-def $eflags
408     JCC_1 %bb.4, 5, implicit $eflags
409     JMP_1 %bb.6
411   bb.6:
412     %4:gr32 = MOV32r0 implicit-def dead $eflags
413     %5:gr8 = COPY %4.sub_8bit
414     TEST8rr %5, %5, implicit-def $eflags
415     JCC_1 %bb.5, 5, implicit $eflags
416     JMP_1 %bb.1
418   bb.4:
419     %6:gr32 = MOV32r0 implicit-def dead $eflags
420     %7:gr8 = COPY %6.sub_8bit
421     TEST8rr %7, %7, implicit-def $eflags
422     JCC_1 %bb.3, 5, implicit $eflags
423     JMP_1 %bb.7
425   bb.7:
426     successors: %bb.5, %bb.2
428     %8:gr32 = MOV32r0 implicit-def dead $eflags
429     %9:gr8 = COPY %8.sub_8bit
430     TEST8rr %9, %9, implicit-def $eflags
431     JCC_1 %bb.2, 5, implicit $eflags
432     JMP_1 %bb.5
434   bb.5:
435     RET64
439 # CHECK-LABEL: MachineCycleInfo for function: irreducible_into_simple_cycle
440 # CHECK:           depth=1: entries(bb.2 bb.7 bb.4) bb.6 bb.5 bb.3
441 name:            irreducible_into_simple_cycle
442 alignment:       16
443 tracksRegLiveness: true
444 registers:
445   - { id: 0, class: gr32 }
446   - { id: 1, class: gr8 }
447   - { id: 2, class: gr32 }
448   - { id: 3, class: gr8 }
449   - { id: 4, class: gr8 }
450   - { id: 5, class: gr8 }
451 frameInfo:
452   maxAlignment:    1
453 machineFunctionInfo: {}
454 body:             |
455   bb.0:
456     %0:gr32 = MOV32r0 implicit-def dead $eflags
457     %1:gr8 = COPY %0.sub_8bit
458     TEST8rr %1, %1, implicit-def $eflags
459     JCC_1 %bb.3, 5, implicit $eflags
460     JMP_1 %bb.8
462   bb.8:
463     %2:gr32 = MOV32r0 implicit-def dead $eflags
464     %3:gr8 = COPY %2.sub_8bit
465     TEST8rr %3, %3, implicit-def $eflags
466     JCC_1 %bb.6, 5, implicit $eflags
467     JMP_1 %bb.1
469   bb.1:
470     JMP_1 %bb.2
472   bb.2:
473     JMP_1 %bb.3
475   bb.3:
476     JMP_1 %bb.4
478   bb.4:
479     %4:gr8 = IMPLICIT_DEF
480     TEST8ri %4, 1, implicit-def $eflags
481     JCC_1 %bb.5, 5, implicit $eflags
482     JMP_1 %bb.7
484   bb.5:
485     JMP_1 %bb.6
487   bb.6:
488     %5:gr8 = IMPLICIT_DEF
489     TEST8ri %5, 1, implicit-def $eflags
490     JCC_1 %bb.1, 5, implicit $eflags
491     JMP_1 %bb.7
493   bb.7:
494     RET64
498 # CHECK-LABEL: MachineCycleInfo for function: irreducible_mountain_bug
499 # CHECK:           depth=1: entries(bb.6) bb.11 bb.10 bb.8 bb.7 bb.9 bb.12
500 # CHECK:               depth=2: entries(bb.10 bb.7) bb.8 bb.9
501 # CHECK:                   depth=3: entries(bb.8 bb.7) bb.9
502 name:            irreducible_mountain_bug
503 alignment:       16
504 tracksRegLiveness: true
505 registers:
506   - { id: 0, class: gr8 }
507   - { id: 1, class: gr8 }
508   - { id: 2, class: gr8 }
509   - { id: 3, class: gr8 }
510   - { id: 4, class: gr8 }
511   - { id: 5, class: gr8 }
512   - { id: 6, class: gr8 }
513   - { id: 7, class: gr8 }
514   - { id: 8, class: gr8 }
515   - { id: 9, class: gr8 }
516   - { id: 10, class: gr8 }
517   - { id: 11, class: gr8 }
518   - { id: 12, class: gr8 }
519   - { id: 13, class: gr8 }
520 frameInfo:
521   maxAlignment:    1
522 machineFunctionInfo: {}
523 body:             |
524   bb.0:
525     %0:gr8 = IMPLICIT_DEF
526     TEST8ri %0, 1, implicit-def $eflags
527     JCC_1 %bb.1, 5, implicit $eflags
528     JMP_1 %bb.17
530   bb.1:
531     %3:gr8 = IMPLICIT_DEF
532     TEST8ri %3, 1, implicit-def $eflags
533     JCC_1 %bb.2, 5, implicit $eflags
534     JMP_1 %bb.3
536   bb.2:
537     JMP_1 %bb.4
539   bb.3:
540     JMP_1 %bb.4
542   bb.4:
543     %4:gr8 = IMPLICIT_DEF
544     TEST8ri %4, 1, implicit-def $eflags
545     JCC_1 %bb.5, 5, implicit $eflags
546     JMP_1 %bb.14
548   bb.5:
549     JMP_1 %bb.6
551   bb.6:
552     %7:gr8 = IMPLICIT_DEF
553     TEST8ri %7, 1, implicit-def $eflags
554     JCC_1 %bb.7, 5, implicit $eflags
555     JMP_1 %bb.12
557   bb.7:
558     %9:gr8 = IMPLICIT_DEF
559     TEST8ri %9, 1, implicit-def $eflags
560     JCC_1 %bb.11, 5, implicit $eflags
561     JMP_1 %bb.8
563   bb.8:
564     %10:gr8 = IMPLICIT_DEF
565     TEST8ri %10, 1, implicit-def $eflags
566     JCC_1 %bb.20, 5, implicit $eflags
567     JMP_1 %bb.9
569   bb.9:
570     %11:gr8 = IMPLICIT_DEF
571     TEST8ri %11, 1, implicit-def $eflags
572     JCC_1 %bb.7, 5, implicit $eflags
573     JMP_1 %bb.10
575   bb.10:
576     %12:gr8 = IMPLICIT_DEF
577     TEST8ri %12, 1, implicit-def $eflags
578     JCC_1 %bb.8, 5, implicit $eflags
579     JMP_1 %bb.6
581   bb.11:
582     %13:gr8 = IMPLICIT_DEF
583     TEST8ri %13, 1, implicit-def $eflags
584     JCC_1 %bb.20, 5, implicit $eflags
585     JMP_1 %bb.6
587   bb.12:
588     %8:gr8 = IMPLICIT_DEF
589     TEST8ri %8, 1, implicit-def $eflags
590     JCC_1 %bb.10, 5, implicit $eflags
591     JMP_1 %bb.13
593   bb.13:
594     JMP_1 %bb.20
596   bb.14:
597     %5:gr8 = IMPLICIT_DEF
598     TEST8ri %5, 1, implicit-def $eflags
599     JCC_1 %bb.20, 5, implicit $eflags
600     JMP_1 %bb.15
602   bb.15:
603     %6:gr8 = IMPLICIT_DEF
604     TEST8ri %6, 1, implicit-def $eflags
605     JCC_1 %bb.20, 5, implicit $eflags
606     JMP_1 %bb.16
608   bb.16:
609     JMP_1 %bb.20
611   bb.17:
612     %1:gr8 = IMPLICIT_DEF
613     TEST8ri %1, 1, implicit-def $eflags
614     JCC_1 %bb.20, 5, implicit $eflags
615     JMP_1 %bb.18
617   bb.18:
618     %2:gr8 = IMPLICIT_DEF
619     TEST8ri %2, 1, implicit-def $eflags
620     JCC_1 %bb.20, 5, implicit $eflags
621     JMP_1 %bb.19
623   bb.19:
624     JMP_1 %bb.20
626   bb.20:
627     RET64