Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / instruction-select / load-rv32.mir
blobd49afb20974c340af428cbbb4d3437aa908be808
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv32 -run-pass=instruction-select %s -o - \
3 # RUN: | FileCheck %s
5 --- |
6   define void @load_i8(ptr %addr) { ret void }
7   define void @load_i16(ptr %addr) { ret void }
8   define void @load_i32(ptr %addr) { ret void }
9   define void @zextload_i8(ptr %addr) { ret void }
10   define void @zextload_i16(ptr %addr) { ret void }
11   define void @sextload_i8(ptr %addr) { ret void }
12   define void @sextload_i16(ptr %addr) { ret void }
13   define void @load_p0(ptr %addr) { ret void }
14   define void @load_fi_i32() {
15     %ptr0 = alloca i32
16     ret void
17   }
18   define void @load_fi_gep_i32() {
19     %ptr0 = alloca [2 x i32]
20     ret void
21   }
22   define void @load_gep_i32(ptr %addr) { ret void }
23 ...
24 ---
25 name:            load_i8
26 legalized:       true
27 regBankSelected: true
28 tracksRegLiveness: true
29 body:            |
30   bb.0:
31     liveins: $x10
33     ; CHECK-LABEL: name: load_i8
34     ; CHECK: liveins: $x10
35     ; CHECK-NEXT: {{  $}}
36     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
37     ; CHECK-NEXT: [[LBU:%[0-9]+]]:gpr = LBU [[COPY]], 0 :: (load (s8))
38     ; CHECK-NEXT: $x10 = COPY [[LBU]]
39     ; CHECK-NEXT: PseudoRET implicit $x10
40     %0:gprb(p0) = COPY $x10
41     %1:gprb(s32) = G_LOAD %0(p0) :: (load (s8))
42     $x10 = COPY %1(s32)
43     PseudoRET implicit $x10
45 ...
46 ---
47 name:            load_i16
48 legalized:       true
49 regBankSelected: true
50 tracksRegLiveness: true
51 body:            |
52   bb.0:
53     liveins: $x10
55     ; CHECK-LABEL: name: load_i16
56     ; CHECK: liveins: $x10
57     ; CHECK-NEXT: {{  $}}
58     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
59     ; CHECK-NEXT: [[LH:%[0-9]+]]:gpr = LH [[COPY]], 0 :: (load (s16))
60     ; CHECK-NEXT: $x10 = COPY [[LH]]
61     ; CHECK-NEXT: PseudoRET implicit $x10
62     %0:gprb(p0) = COPY $x10
63     %1:gprb(s32) = G_LOAD %0(p0) :: (load (s16))
64     $x10 = COPY %1(s32)
65     PseudoRET implicit $x10
67 ...
68 ---
69 name:            load_i32
70 legalized:       true
71 regBankSelected: true
72 tracksRegLiveness: true
73 body:            |
74   bb.0:
75     liveins: $x10
77     ; CHECK-LABEL: name: load_i32
78     ; CHECK: liveins: $x10
79     ; CHECK-NEXT: {{  $}}
80     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
81     ; CHECK-NEXT: [[LW:%[0-9]+]]:gpr = LW [[COPY]], 0 :: (load (s32))
82     ; CHECK-NEXT: $x10 = COPY [[LW]]
83     ; CHECK-NEXT: PseudoRET implicit $x10
84     %0:gprb(p0) = COPY $x10
85     %1:gprb(s32) = G_LOAD %0(p0) :: (load (s32))
86     $x10 = COPY %1(s32)
87     PseudoRET implicit $x10
89 ...
90 ---
91 name:            zextload_i8
92 legalized:       true
93 regBankSelected: true
94 tracksRegLiveness: true
95 body:            |
96   bb.0:
97     liveins: $x10
99     ; CHECK-LABEL: name: zextload_i8
100     ; CHECK: liveins: $x10
101     ; CHECK-NEXT: {{  $}}
102     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
103     ; CHECK-NEXT: [[LBU:%[0-9]+]]:gpr = LBU [[COPY]], 0 :: (load (s8))
104     ; CHECK-NEXT: $x10 = COPY [[LBU]]
105     ; CHECK-NEXT: PseudoRET implicit $x10
106     %0:gprb(p0) = COPY $x10
107     %1:gprb(s32) = G_ZEXTLOAD %0(p0) :: (load (s8))
108     $x10 = COPY %1(s32)
109     PseudoRET implicit $x10
113 name:            zextload_i16
114 legalized:       true
115 regBankSelected: true
116 tracksRegLiveness: true
117 body:            |
118   bb.0:
119     liveins: $x10
121     ; CHECK-LABEL: name: zextload_i16
122     ; CHECK: liveins: $x10
123     ; CHECK-NEXT: {{  $}}
124     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
125     ; CHECK-NEXT: [[LHU:%[0-9]+]]:gpr = LHU [[COPY]], 0 :: (load (s16))
126     ; CHECK-NEXT: $x10 = COPY [[LHU]]
127     ; CHECK-NEXT: PseudoRET implicit $x10
128     %0:gprb(p0) = COPY $x10
129     %1:gprb(s32) = G_ZEXTLOAD %0(p0) :: (load (s16))
130     $x10 = COPY %1(s32)
131     PseudoRET implicit $x10
135 name:            sextload_i8
136 legalized:       true
137 regBankSelected: true
138 tracksRegLiveness: true
139 body:            |
140   bb.0:
141     liveins: $x10
143     ; CHECK-LABEL: name: sextload_i8
144     ; CHECK: liveins: $x10
145     ; CHECK-NEXT: {{  $}}
146     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
147     ; CHECK-NEXT: [[LB:%[0-9]+]]:gpr = LB [[COPY]], 0 :: (load (s8))
148     ; CHECK-NEXT: $x10 = COPY [[LB]]
149     ; CHECK-NEXT: PseudoRET implicit $x10
150     %0:gprb(p0) = COPY $x10
151     %1:gprb(s32) = G_SEXTLOAD %0(p0) :: (load (s8))
152     $x10 = COPY %1(s32)
153     PseudoRET implicit $x10
157 name:            sextload_i16
158 legalized:       true
159 regBankSelected: true
160 tracksRegLiveness: true
161 body:            |
162   bb.0:
163     liveins: $x10
165     ; CHECK-LABEL: name: sextload_i16
166     ; CHECK: liveins: $x10
167     ; CHECK-NEXT: {{  $}}
168     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
169     ; CHECK-NEXT: [[LH:%[0-9]+]]:gpr = LH [[COPY]], 0 :: (load (s16))
170     ; CHECK-NEXT: $x10 = COPY [[LH]]
171     ; CHECK-NEXT: PseudoRET implicit $x10
172     %0:gprb(p0) = COPY $x10
173     %1:gprb(s32) = G_SEXTLOAD %0(p0) :: (load (s16))
174     $x10 = COPY %1(s32)
175     PseudoRET implicit $x10
179 name:            load_p0
180 legalized:       true
181 regBankSelected: true
182 tracksRegLiveness: true
183 body:            |
184   bb.0:
185     liveins: $x10
187     ; CHECK-LABEL: name: load_p0
188     ; CHECK: liveins: $x10
189     ; CHECK-NEXT: {{  $}}
190     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
191     ; CHECK-NEXT: [[LW:%[0-9]+]]:gpr = LW [[COPY]], 0 :: (load (p0))
192     ; CHECK-NEXT: $x10 = COPY [[LW]]
193     ; CHECK-NEXT: PseudoRET implicit $x10
194     %0:gprb(p0) = COPY $x10
195     %1:gprb(p0) = G_LOAD %0(p0) :: (load (p0))
196     $x10 = COPY %1(p0)
197     PseudoRET implicit $x10
201 name:            load_fi_i32
202 legalized:       true
203 regBankSelected: true
204 tracksRegLiveness: true
206 stack:
207   - { id: 0, name: ptr0, offset: 0, size: 4, alignment: 4 }
209 body:            |
210   bb.0:
211     ; CHECK-LABEL: name: load_fi_i32
212     ; CHECK: [[LW:%[0-9]+]]:gpr = LW %stack.0.ptr0, 0 :: (load (s32))
213     ; CHECK-NEXT: $x10 = COPY [[LW]]
214     ; CHECK-NEXT: PseudoRET implicit $x10
215     %0:gprb(p0) = G_FRAME_INDEX %stack.0.ptr0
216     %1:gprb(s32) = G_LOAD %0(p0) :: (load (s32))
217     $x10 = COPY %1(s32)
218     PseudoRET implicit $x10
222 name:            load_fi_gep_i32
223 legalized:       true
224 regBankSelected: true
225 tracksRegLiveness: true
227 stack:
228   - { id: 0, name: ptr0, offset: 0, size: 8, alignment: 4 }
230 body:            |
231   bb.0:
232     ; CHECK-LABEL: name: load_fi_gep_i32
233     ; CHECK: [[LW:%[0-9]+]]:gpr = LW %stack.0.ptr0, 4 :: (load (s32))
234     ; CHECK-NEXT: $x10 = COPY [[LW]]
235     ; CHECK-NEXT: PseudoRET implicit $x10
236     %0:gprb(p0) = G_FRAME_INDEX %stack.0.ptr0
237     %1:gprb(s32) = G_CONSTANT i32 4
238     %2:gprb(p0) = G_PTR_ADD %0(p0), %1(s32)
239     %3:gprb(s32) = G_LOAD %2(p0) :: (load (s32))
240     $x10 = COPY %3(s32)
241     PseudoRET implicit $x10
245 name:            load_gep_i32
246 legalized:       true
247 regBankSelected: true
248 tracksRegLiveness: true
249 body:            |
250   bb.0:
251     liveins: $x10
253     ; CHECK-LABEL: name: load_gep_i32
254     ; CHECK: liveins: $x10
255     ; CHECK-NEXT: {{  $}}
256     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
257     ; CHECK-NEXT: [[LW:%[0-9]+]]:gpr = LW [[COPY]], 4 :: (load (s32))
258     ; CHECK-NEXT: $x10 = COPY [[LW]]
259     ; CHECK-NEXT: PseudoRET implicit $x10
260     %0:gprb(p0) = COPY $x10
261     %1:gprb(s32) = G_CONSTANT i32 4
262     %2:gprb(p0) = G_PTR_ADD %0(p0), %1(s32)
263     %3:gprb(s32) = G_LOAD %2(p0) :: (load (s32))
264     $x10 = COPY %3(s32)
265     PseudoRET implicit $x10