xref: /llvm-project/llvm/test/CodeGen/Mips/GlobalISel/legalizer/branch.mir (revision 2bf4eeeeb60daba9534dd55088067fcf5a65f86b)
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:   [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]
72  ; MIPS32:   G_BRCOND [[AND]](s32), %bb.1
73  ; MIPS32:   G_BR %bb.2
74  ; MIPS32: bb.1.if.then:
75  ; MIPS32:   $v0 = COPY [[COPY1]](s32)
76  ; MIPS32:   RetRA implicit $v0
77  ; MIPS32: bb.2.if.else:
78  ; MIPS32:   $v0 = COPY [[COPY2]](s32)
79  ; MIPS32:   RetRA implicit $v0
80  bb.1 (%ir-block.0):
81    liveins: $a0, $a1, $a2
82
83    %3:_(s32) = COPY $a0
84    %0:_(s1) = G_TRUNC %3(s32)
85    %1:_(s32) = COPY $a1
86    %2:_(s32) = COPY $a2
87    G_BRCOND %0(s1), %bb.2
88    G_BR %bb.3
89
90  bb.2.if.then:
91    $v0 = COPY %1(s32)
92    RetRA implicit $v0
93
94  bb.3.if.else:
95    $v0 = COPY %2(s32)
96    RetRA implicit $v0
97
98...
99
100