[TableGen] Add TreePatternNode::children and use it in for loops (NFC) (#119877)
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / regbankselect / load-rv32.mir
blob45e96b152f875c6f165296eee765704acbdf42b7
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv32 -run-pass=regbankselect \
3 # RUN:   -simplify-mir -verify-machineinstrs %s \
4 # RUN:   -o - | FileCheck -check-prefix=RV32I %s
6 ---
7 name:            load_i8
8 legalized:       true
9 tracksRegLiveness: true
10 body:             |
11   bb.0:
12     liveins: $x10
14     ; RV32I-LABEL: name: load_i8
15     ; RV32I: liveins: $x10
16     ; RV32I-NEXT: {{  $}}
17     ; RV32I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
18     ; RV32I-NEXT: [[LOAD:%[0-9]+]]:gprb(s32) = G_LOAD [[COPY]](p0) :: (load (s8))
19     ; RV32I-NEXT: $x10 = COPY [[LOAD]](s32)
20     ; RV32I-NEXT: PseudoRET implicit $x10
21     %0:_(p0) = COPY $x10
22     %3:_(s32) = G_LOAD %0(p0) :: (load (s8))
23     $x10 = COPY %3(s32)
24     PseudoRET implicit $x10
26 ...
27 ---
28 name:            load_i16
29 legalized:       true
30 tracksRegLiveness: true
31 body:             |
32   bb.0:
33     liveins: $x10
35     ; RV32I-LABEL: name: load_i16
36     ; RV32I: liveins: $x10
37     ; RV32I-NEXT: {{  $}}
38     ; RV32I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
39     ; RV32I-NEXT: [[LOAD:%[0-9]+]]:gprb(s32) = G_LOAD [[COPY]](p0) :: (load (s16))
40     ; RV32I-NEXT: $x10 = COPY [[LOAD]](s32)
41     ; RV32I-NEXT: PseudoRET implicit $x10
42     %0:_(p0) = COPY $x10
43     %3:_(s32) = G_LOAD %0(p0) :: (load (s16))
44     $x10 = COPY %3(s32)
45     PseudoRET implicit $x10
47 ...
48 ---
49 name:            load_i32
50 legalized:       true
51 tracksRegLiveness: true
52 body:             |
53   bb.0:
54     liveins: $x10
56     ; RV32I-LABEL: name: load_i32
57     ; RV32I: liveins: $x10
58     ; RV32I-NEXT: {{  $}}
59     ; RV32I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
60     ; RV32I-NEXT: [[LOAD:%[0-9]+]]:gprb(s32) = G_LOAD [[COPY]](p0) :: (load (s32))
61     ; RV32I-NEXT: $x10 = COPY [[LOAD]](s32)
62     ; RV32I-NEXT: PseudoRET implicit $x10
63     %0:_(p0) = COPY $x10
64     %3:_(s32) = G_LOAD %0(p0) :: (load (s32))
65     $x10 = COPY %3(s32)
66     PseudoRET implicit $x10
68 ...
69 ---
70 name:            load_ptr
71 legalized:       true
72 tracksRegLiveness: true
73 body:             |
74   bb.0:
75     liveins: $x10
77     ; RV32I-LABEL: name: load_ptr
78     ; RV32I: liveins: $x10
79     ; RV32I-NEXT: {{  $}}
80     ; RV32I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
81     ; RV32I-NEXT: [[LOAD:%[0-9]+]]:gprb(p0) = G_LOAD [[COPY]](p0) :: (load (p0))
82     ; RV32I-NEXT: $x10 = COPY [[LOAD]](p0)
83     ; RV32I-NEXT: PseudoRET implicit $x10
84     %0:_(p0) = COPY $x10
85     %3:_(p0) = G_LOAD %0(p0) :: (load (p0))
86     $x10 = COPY %3(p0)
87     PseudoRET implicit $x10
89 ...
90 ---
91 name:            zextload_i8
92 legalized:       true
93 tracksRegLiveness: true
94 body:             |
95   bb.0:
96     liveins: $x10
98     ; RV32I-LABEL: name: zextload_i8
99     ; RV32I: liveins: $x10
100     ; RV32I-NEXT: {{  $}}
101     ; RV32I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
102     ; RV32I-NEXT: [[ZEXTLOAD:%[0-9]+]]:gprb(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s8))
103     ; RV32I-NEXT: $x10 = COPY [[ZEXTLOAD]](s32)
104     ; RV32I-NEXT: PseudoRET implicit $x10
105     %0:_(p0) = COPY $x10
106     %1:_(s32) = G_ZEXTLOAD %0(p0) :: (load (s8))
107     $x10 = COPY %1(s32)
108     PseudoRET implicit $x10
112 name:            zextload_i16
113 legalized:       true
114 tracksRegLiveness: true
115 body:             |
116   bb.0:
117     liveins: $x10
119     ; RV32I-LABEL: name: zextload_i16
120     ; RV32I: liveins: $x10
121     ; RV32I-NEXT: {{  $}}
122     ; RV32I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
123     ; RV32I-NEXT: [[ZEXTLOAD:%[0-9]+]]:gprb(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s16))
124     ; RV32I-NEXT: $x10 = COPY [[ZEXTLOAD]](s32)
125     ; RV32I-NEXT: PseudoRET implicit $x10
126     %0:_(p0) = COPY $x10
127     %1:_(s32) = G_ZEXTLOAD %0(p0) :: (load (s16))
128     $x10 = COPY %1(s32)
129     PseudoRET implicit $x10
133 name:            sextload_i8
134 legalized:       true
135 tracksRegLiveness: true
136 body:             |
137   bb.0:
138     liveins: $x10
140     ; RV32I-LABEL: name: sextload_i8
141     ; RV32I: liveins: $x10
142     ; RV32I-NEXT: {{  $}}
143     ; RV32I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
144     ; RV32I-NEXT: [[SEXTLOAD:%[0-9]+]]:gprb(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8))
145     ; RV32I-NEXT: $x10 = COPY [[SEXTLOAD]](s32)
146     ; RV32I-NEXT: PseudoRET implicit $x10
147     %0:_(p0) = COPY $x10
148     %1:_(s32) = G_SEXTLOAD %0(p0) :: (load (s8))
149     $x10 = COPY %1(s32)
150     PseudoRET implicit $x10
154 name:            sextload_i16
155 legalized:       true
156 tracksRegLiveness: true
157 body:             |
158   bb.0:
159     liveins: $x10
161     ; RV32I-LABEL: name: sextload_i16
162     ; RV32I: liveins: $x10
163     ; RV32I-NEXT: {{  $}}
164     ; RV32I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
165     ; RV32I-NEXT: [[SEXTLOAD:%[0-9]+]]:gprb(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s16))
166     ; RV32I-NEXT: $x10 = COPY [[SEXTLOAD]](s32)
167     ; RV32I-NEXT: PseudoRET implicit $x10
168     %0:_(p0) = COPY $x10
169     %1:_(s32) = G_SEXTLOAD %0(p0) :: (load (s16))
170     $x10 = COPY %1(s32)
171     PseudoRET implicit $x10