1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=legalizer -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
30tracksRegLiveness: true
31body:             |
32  ; MIPS32-LABEL: name: Unconditional_branch
33  ; MIPS32: bb.0.entry:
34  ; MIPS32:   successors: %bb.2(0x80000000)
35  ; MIPS32:   liveins: $a0, $a1
36  ; MIPS32:   [[COPY:%[0-9]+]]:_(s32) = COPY $a0
37  ; MIPS32:   G_BR %bb.2
38  ; MIPS32: bb.1.end:
39  ; MIPS32:   $v0 = COPY [[COPY]](s32)
40  ; MIPS32:   RetRA implicit $v0
41  ; MIPS32: bb.2.block:
42  ; MIPS32:   successors: %bb.1(0x80000000)
43  ; MIPS32:   G_BR %bb.1
44  bb.1.entry:
45    liveins: $a0, $a1
46
47    %0:_(s32) = COPY $a0
48    G_BR %bb.3
49
50  bb.2.end:
51    $v0 = COPY %0(s32)
52    RetRA implicit $v0
53
54  bb.3.block:
55    G_BR %bb.2
56
57...
58---
59name:            Conditional_branch
60alignment:       4
61tracksRegLiveness: true
62body:             |
63  ; MIPS32-LABEL: name: Conditional_branch
64  ; MIPS32: bb.0 (%ir-block.0):
65  ; MIPS32:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
66  ; MIPS32:   liveins: $a0, $a1, $a2
67  ; MIPS32:   [[COPY:%[0-9]+]]:_(s32) = COPY $a0
68  ; MIPS32:   [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
69  ; MIPS32:   [[COPY2:%[0-9]+]]:_(s32) = COPY $a2
70  ; MIPS32:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
71  ; MIPS32:   [[COPY3:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)
72  ; MIPS32:   [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY3]], [[C]]
73  ; MIPS32:   G_BRCOND [[AND]](s32), %bb.1
74  ; MIPS32:   G_BR %bb.2
75  ; MIPS32: bb.1.if.then:
76  ; MIPS32:   $v0 = COPY [[COPY1]](s32)
77  ; MIPS32:   RetRA implicit $v0
78  ; MIPS32: bb.2.if.else:
79  ; MIPS32:   $v0 = COPY [[COPY2]](s32)
80  ; MIPS32:   RetRA implicit $v0
81  bb.1 (%ir-block.0):
82    liveins: $a0, $a1, $a2
83
84    %3:_(s32) = COPY $a0
85    %0:_(s1) = G_TRUNC %3(s32)
86    %1:_(s32) = COPY $a1
87    %2:_(s32) = COPY $a2
88    G_BRCOND %0(s1), %bb.2
89    G_BR %bb.3
90
91  bb.2.if.then:
92    $v0 = COPY %1(s32)
93    RetRA implicit $v0
94
95  bb.3.if.else:
96    $v0 = COPY %2(s32)
97    RetRA implicit $v0
98
99...
100
101