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
3--- |
4
5  define i32 @Unconditional_branch(i32 %a, i32 %b) {
6  entry:
7    br label %block
8
9  end:                                              ; preds = %block
10    ret i32 %a
11
12  block:                                            ; preds = %entry
13    br label %end
14  }
15
16  define i32 @Conditional_branch(i1 %cond, i32 %a, i32 %b) {
17    br i1 %cond, label %if.then, label %if.else
18
19  if.then:                                          ; preds = %0
20    ret i32 %a
21
22  if.else:                                          ; preds = %0
23    ret i32 %b
24  }
25
26...
27---
28name:            Unconditional_branch
29alignment:       4
30legalized:       true
31tracksRegLiveness: true
32body:             |
33  ; MIPS32-LABEL: name: Unconditional_branch
34  ; MIPS32: bb.0.entry:
35  ; MIPS32:   successors: %bb.2(0x80000000)
36  ; MIPS32:   liveins: $a0, $a1
37  ; MIPS32:   [[COPY:%[0-9]+]]:gprb(s32) = COPY $a0
38  ; MIPS32:   G_BR %bb.2
39  ; MIPS32: bb.1.end:
40  ; MIPS32:   $v0 = COPY [[COPY]](s32)
41  ; MIPS32:   RetRA implicit $v0
42  ; MIPS32: bb.2.block:
43  ; MIPS32:   successors: %bb.1(0x80000000)
44  ; MIPS32:   G_BR %bb.1
45  bb.1.entry:
46    liveins: $a0, $a1
47
48    %0:_(s32) = COPY $a0
49    G_BR %bb.3
50
51  bb.2.end:
52    $v0 = COPY %0(s32)
53    RetRA implicit $v0
54
55  bb.3.block:
56    G_BR %bb.2
57
58...
59---
60name:            Conditional_branch
61alignment:       4
62legalized:       true
63tracksRegLiveness: true
64body:             |
65  ; MIPS32-LABEL: name: Conditional_branch
66  ; MIPS32: bb.0 (%ir-block.0):
67  ; MIPS32:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
68  ; MIPS32:   liveins: $a0, $a1, $a2
69  ; MIPS32:   [[COPY:%[0-9]+]]:gprb(s32) = COPY $a0
70  ; MIPS32:   [[COPY1:%[0-9]+]]:gprb(s32) = COPY $a1
71  ; MIPS32:   [[COPY2:%[0-9]+]]:gprb(s32) = COPY $a2
72  ; MIPS32:   [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
73  ; MIPS32:   [[COPY3:%[0-9]+]]:gprb(s32) = COPY [[COPY]](s32)
74  ; MIPS32:   [[AND:%[0-9]+]]:gprb(s32) = G_AND [[COPY3]], [[C]]
75  ; MIPS32:   G_BRCOND [[AND]](s32), %bb.1
76  ; MIPS32:   G_BR %bb.2
77  ; MIPS32: bb.1.if.then:
78  ; MIPS32:   $v0 = COPY [[COPY1]](s32)
79  ; MIPS32:   RetRA implicit $v0
80  ; MIPS32: bb.2.if.else:
81  ; MIPS32:   $v0 = COPY [[COPY2]](s32)
82  ; MIPS32:   RetRA implicit $v0
83  bb.1 (%ir-block.0):
84    liveins: $a0, $a1, $a2
85
86    %3:_(s32) = COPY $a0
87    %1:_(s32) = COPY $a1
88    %2:_(s32) = COPY $a2
89    %5:_(s32) = G_CONSTANT i32 1
90    %6:_(s32) = COPY %3(s32)
91    %4:_(s32) = G_AND %6, %5
92    G_BRCOND %4(s32), %bb.2
93    G_BR %bb.3
94
95  bb.2.if.then:
96    $v0 = COPY %1(s32)
97    RetRA implicit $v0
98
99  bb.3.if.else:
100    $v0 = COPY %2(s32)
101    RetRA implicit $v0
102
103...
104