Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / regbankselect / phi-rv32.mir
blobb8bedfae987d31bdb016ef6e087da9ba4c19d95b
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv32 -run-pass=regbankselect \
3 # RUN:   -disable-gisel-legality-check -simplify-mir -verify-machineinstrs %s \
4 # RUN:   -o - | FileCheck -check-prefix=RV32I %s
6 ---
7 name:            phi_i32
8 legalized:       true
9 tracksRegLiveness: true
10 body:             |
11   ; RV32I-LABEL: name: phi_i32
12   ; RV32I: bb.0:
13   ; RV32I-NEXT:   liveins: $x10, $x11, $x12
14   ; RV32I-NEXT: {{  $}}
15   ; RV32I-NEXT:   [[COPY:%[0-9]+]]:gprb(s32) = COPY $x10
16   ; RV32I-NEXT:   [[COPY1:%[0-9]+]]:gprb(s32) = COPY $x11
17   ; RV32I-NEXT:   [[COPY2:%[0-9]+]]:gprb(s32) = COPY $x12
18   ; RV32I-NEXT:   [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
19   ; RV32I-NEXT:   [[AND:%[0-9]+]]:gprb(s32) = G_AND [[COPY]], [[C]]
20   ; RV32I-NEXT:   G_BRCOND [[AND]](s32), %bb.2
21   ; RV32I-NEXT:   G_BR %bb.1
22   ; RV32I-NEXT: {{  $}}
23   ; RV32I-NEXT: bb.1:
24   ; RV32I-NEXT: {{  $}}
25   ; RV32I-NEXT: bb.2:
26   ; RV32I-NEXT:   [[PHI:%[0-9]+]]:gprb(s32) = G_PHI [[COPY2]](s32), %bb.1, [[COPY1]](s32), %bb.0
27   ; RV32I-NEXT:   $x10 = COPY [[PHI]](s32)
28   ; RV32I-NEXT:   PseudoRET implicit $x10
29   bb.0:
30     liveins: $x10, $x11, $x12
32     %3:_(s32) = COPY $x10
33     %1:_(s32) = COPY $x11
34     %2:_(s32) = COPY $x12
35     %6:_(s32) = G_CONSTANT i32 1
36     %5:_(s32) = G_AND %3, %6
37     G_BRCOND %5(s32), %bb.2
38     G_BR %bb.1
40   bb.1:
42   bb.2:
43     %4:_(s32) = G_PHI %2(s32), %bb.1, %1(s32), %bb.0
44     $x10 = COPY %4(s32)
45     PseudoRET implicit $x10
47 ...
48 ---
49 name:            phi_ptr
50 legalized:       true
51 tracksRegLiveness: true
52 body:             |
53   ; RV32I-LABEL: name: phi_ptr
54   ; RV32I: bb.0.entry:
55   ; RV32I-NEXT:   liveins: $x10, $x11, $x12
56   ; RV32I-NEXT: {{  $}}
57   ; RV32I-NEXT:   [[COPY:%[0-9]+]]:gprb(s32) = COPY $x10
58   ; RV32I-NEXT:   [[COPY1:%[0-9]+]]:gprb(p0) = COPY $x11
59   ; RV32I-NEXT:   [[COPY2:%[0-9]+]]:gprb(p0) = COPY $x12
60   ; RV32I-NEXT:   [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1
61   ; RV32I-NEXT:   [[AND:%[0-9]+]]:gprb(s32) = G_AND [[COPY]], [[C]]
62   ; RV32I-NEXT:   G_BRCOND [[AND]](s32), %bb.2
63   ; RV32I-NEXT:   G_BR %bb.1
64   ; RV32I-NEXT: {{  $}}
65   ; RV32I-NEXT: bb.1:
66   ; RV32I-NEXT: {{  $}}
67   ; RV32I-NEXT: bb.2:
68   ; RV32I-NEXT:   [[PHI:%[0-9]+]]:gprb(p0) = G_PHI [[COPY2]](p0), %bb.1, [[COPY1]](p0), %bb.0
69   ; RV32I-NEXT:   $x10 = COPY [[PHI]](p0)
70   ; RV32I-NEXT:   PseudoRET implicit $x10
71   bb.0.entry:
72     liveins: $x10, $x11, $x12
74     %3:_(s32) = COPY $x10
75     %1:_(p0) = COPY $x11
76     %2:_(p0) = COPY $x12
77     %6:_(s32) = G_CONSTANT i32 1
78     %5:_(s32) = G_AND %3, %6
79     G_BRCOND %5(s32), %bb.2
80     G_BR %bb.1
82   bb.1:
84   bb.2:
85     %4:_(p0) = G_PHI %2(p0), %bb.1, %1(p0), %bb.0
86     $x10 = COPY %4(p0)
87     PseudoRET implicit $x10
89 ...