[gn] port afa8aeeeec (RISCVGenExegesis.inc)
[llvm-project.git] / llvm / test / CodeGen / Mips / GlobalISel / legalizer / branch.mir
blob621f1c478ebde40af5326699f12f8d8bad88792b
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 --- |
5   define i32 @Unconditional_branch(i32 %a, i32 %b) {
6   entry:
7     br label %block
9   end:                                              ; preds = %block
10     ret i32 %a
12   block:                                            ; preds = %entry
13     br label %end
14   }
16   define i32 @Conditional_branch(i1 %cond, i32 %a, i32 %b) {
17     br i1 %cond, label %if.then, label %if.else
19   if.then:                                          ; preds = %0
20     ret i32 %a
22   if.else:                                          ; preds = %0
23     ret i32 %b
24   }
26 ...
27 ---
28 name:            Unconditional_branch
29 alignment:       4
30 tracksRegLiveness: true
31 body:             |
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
47     %0:_(s32) = COPY $a0
48     G_BR %bb.3
50   bb.2.end:
51     $v0 = COPY %0(s32)
52     RetRA implicit $v0
54   bb.3.block:
55     G_BR %bb.2
57 ...
58 ---
59 name:            Conditional_branch
60 alignment:       4
61 tracksRegLiveness: true
62 body:             |
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
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
90   bb.2.if.then:
91     $v0 = COPY %1(s32)
92     RetRA implicit $v0
94   bb.3.if.else:
95     $v0 = COPY %2(s32)
96     RetRA implicit $v0
98 ...