[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / regbankselect / load-rv64.mir
blob77fb05edd7ec345baba6c506a177fdc43bc6c3b9
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv64 -run-pass=regbankselect \
3 # RUN:   -simplify-mir -verify-machineinstrs %s \
4 # RUN:   -o - | FileCheck -check-prefix=RV64I %s
6 ---
7 name:            load_i8
8 legalized:       true
9 tracksRegLiveness: true
10 body:             |
11   bb.0:
12     liveins: $x10
14     ; RV64I-LABEL: name: load_i8
15     ; RV64I: liveins: $x10
16     ; RV64I-NEXT: {{  $}}
17     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
18     ; RV64I-NEXT: [[LOAD:%[0-9]+]]:gprb(s32) = G_LOAD [[COPY]](p0) :: (load (s8))
19     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:gprb(s64) = G_ANYEXT [[LOAD]](s32)
20     ; RV64I-NEXT: $x10 = COPY [[ANYEXT]](s64)
21     ; RV64I-NEXT: PseudoRET implicit $x10
22     %0:_(p0) = COPY $x10
23     %3:_(s32) = G_LOAD %0(p0) :: (load (s8))
24     %2:_(s64) = G_ANYEXT %3(s32)
25     $x10 = COPY %2(s64)
26     PseudoRET implicit $x10
28 ...
29 ---
30 name:            load_i16
31 legalized:       true
32 tracksRegLiveness: true
33 body:             |
34   bb.0:
35     liveins: $x10
37     ; RV64I-LABEL: name: load_i16
38     ; RV64I: liveins: $x10
39     ; RV64I-NEXT: {{  $}}
40     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
41     ; RV64I-NEXT: [[LOAD:%[0-9]+]]:gprb(s32) = G_LOAD [[COPY]](p0) :: (load (s16))
42     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:gprb(s64) = G_ANYEXT [[LOAD]](s32)
43     ; RV64I-NEXT: $x10 = COPY [[ANYEXT]](s64)
44     ; RV64I-NEXT: PseudoRET implicit $x10
45     %0:_(p0) = COPY $x10
46     %3:_(s32) = G_LOAD %0(p0) :: (load (s16))
47     %2:_(s64) = G_ANYEXT %3(s32)
48     $x10 = COPY %2(s64)
49     PseudoRET implicit $x10
51 ...
52 ---
53 name:            load_i32
54 legalized:       true
55 tracksRegLiveness: true
56 body:             |
57   bb.0:
58     liveins: $x10
60     ; RV64I-LABEL: name: load_i32
61     ; RV64I: liveins: $x10
62     ; RV64I-NEXT: {{  $}}
63     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
64     ; RV64I-NEXT: [[LOAD:%[0-9]+]]:gprb(s32) = G_LOAD [[COPY]](p0) :: (load (s32))
65     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:gprb(s64) = G_ANYEXT [[LOAD]](s32)
66     ; RV64I-NEXT: $x10 = COPY [[ANYEXT]](s64)
67     ; RV64I-NEXT: PseudoRET implicit $x10
68     %0:_(p0) = COPY $x10
69     %1:_(s32) = G_LOAD %0(p0) :: (load (s32))
70     %2:_(s64) = G_ANYEXT %1(s32)
71     $x10 = COPY %2(s64)
72     PseudoRET implicit $x10
74 ...
75 ---
76 name:            load_i64
77 legalized:       true
78 tracksRegLiveness: true
79 body:             |
80   bb.0:
81     liveins: $x10
83     ; RV64I-LABEL: name: load_i64
84     ; RV64I: liveins: $x10
85     ; RV64I-NEXT: {{  $}}
86     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
87     ; RV64I-NEXT: [[LOAD:%[0-9]+]]:gprb(s64) = G_LOAD [[COPY]](p0) :: (load (s64))
88     ; RV64I-NEXT: $x10 = COPY [[LOAD]](s64)
89     ; RV64I-NEXT: PseudoRET implicit $x10
90     %0:_(p0) = COPY $x10
91     %1:_(s64) = G_LOAD %0(p0) :: (load (s64))
92     $x10 = COPY %1(s64)
93     PseudoRET implicit $x10
95 ...
96 ---
97 name:            load_ptr
98 legalized:       true
99 tracksRegLiveness: true
100 body:             |
101   bb.0:
102     liveins: $x10
104     ; RV64I-LABEL: name: load_ptr
105     ; RV64I: liveins: $x10
106     ; RV64I-NEXT: {{  $}}
107     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
108     ; RV64I-NEXT: [[LOAD:%[0-9]+]]:gprb(p0) = G_LOAD [[COPY]](p0) :: (load (p0))
109     ; RV64I-NEXT: $x10 = COPY [[LOAD]](p0)
110     ; RV64I-NEXT: PseudoRET implicit $x10
111     %0:_(p0) = COPY $x10
112     %1:_(p0) = G_LOAD %0(p0) :: (load (p0))
113     $x10 = COPY %1(p0)
114     PseudoRET implicit $x10
118 name:            zextload_i8
119 legalized:       true
120 tracksRegLiveness: true
121 body:             |
122   bb.0:
123     liveins: $x10
125     ; RV64I-LABEL: name: zextload_i8
126     ; RV64I: liveins: $x10
127     ; RV64I-NEXT: {{  $}}
128     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
129     ; RV64I-NEXT: [[ZEXTLOAD:%[0-9]+]]:gprb(s64) = G_ZEXTLOAD [[COPY]](p0) :: (load (s8))
130     ; RV64I-NEXT: $x10 = COPY [[ZEXTLOAD]](s64)
131     ; RV64I-NEXT: PseudoRET implicit $x10
132     %0:_(p0) = COPY $x10
133     %3:_(s64) = G_ZEXTLOAD %0(p0) :: (load (s8))
134     $x10 = COPY %3(s64)
135     PseudoRET implicit $x10
139 name:            zextload_i16
140 legalized:       true
141 tracksRegLiveness: true
142 body:             |
143   bb.0:
144     liveins: $x10
146     ; RV64I-LABEL: name: zextload_i16
147     ; RV64I: liveins: $x10
148     ; RV64I-NEXT: {{  $}}
149     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
150     ; RV64I-NEXT: [[ZEXTLOAD:%[0-9]+]]:gprb(s64) = G_ZEXTLOAD [[COPY]](p0) :: (load (s16))
151     ; RV64I-NEXT: $x10 = COPY [[ZEXTLOAD]](s64)
152     ; RV64I-NEXT: PseudoRET implicit $x10
153     %0:_(p0) = COPY $x10
154     %3:_(s64) = G_ZEXTLOAD %0(p0) :: (load (s16))
155     $x10 = COPY %3(s64)
156     PseudoRET implicit $x10
160 name:            zextload_i32
161 legalized:       true
162 tracksRegLiveness: true
163 body:             |
164   bb.0:
165     liveins: $x10
167     ; RV64I-LABEL: name: zextload_i32
168     ; RV64I: liveins: $x10
169     ; RV64I-NEXT: {{  $}}
170     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
171     ; RV64I-NEXT: [[ZEXTLOAD:%[0-9]+]]:gprb(s64) = G_ZEXTLOAD [[COPY]](p0) :: (load (s32))
172     ; RV64I-NEXT: $x10 = COPY [[ZEXTLOAD]](s64)
173     ; RV64I-NEXT: PseudoRET implicit $x10
174     %0:_(p0) = COPY $x10
175     %1:_(s64) = G_ZEXTLOAD %0(p0) :: (load (s32))
176     $x10 = COPY %1(s64)
177     PseudoRET implicit $x10
181 name:            sextload_i8
182 legalized:       true
183 tracksRegLiveness: true
184 body:             |
185   bb.0:
186     liveins: $x10
188     ; RV64I-LABEL: name: sextload_i8
189     ; RV64I: liveins: $x10
190     ; RV64I-NEXT: {{  $}}
191     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
192     ; RV64I-NEXT: [[SEXTLOAD:%[0-9]+]]:gprb(s64) = G_SEXTLOAD [[COPY]](p0) :: (load (s8))
193     ; RV64I-NEXT: $x10 = COPY [[SEXTLOAD]](s64)
194     ; RV64I-NEXT: PseudoRET implicit $x10
195     %0:_(p0) = COPY $x10
196     %3:_(s64) = G_SEXTLOAD %0(p0) :: (load (s8))
197     $x10 = COPY %3(s64)
198     PseudoRET implicit $x10
202 name:            sextload_i16
203 legalized:       true
204 tracksRegLiveness: true
205 body:             |
206   bb.0:
207     liveins: $x10
209     ; RV64I-LABEL: name: sextload_i16
210     ; RV64I: liveins: $x10
211     ; RV64I-NEXT: {{  $}}
212     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
213     ; RV64I-NEXT: [[SEXTLOAD:%[0-9]+]]:gprb(s64) = G_SEXTLOAD [[COPY]](p0) :: (load (s16))
214     ; RV64I-NEXT: $x10 = COPY [[SEXTLOAD]](s64)
215     ; RV64I-NEXT: PseudoRET implicit $x10
216     %0:_(p0) = COPY $x10
217     %3:_(s64) = G_SEXTLOAD %0(p0) :: (load (s16))
218     $x10 = COPY %3(s64)
219     PseudoRET implicit $x10
223 name:            sextload_i32
224 legalized:       true
225 tracksRegLiveness: true
226 body:             |
227   bb.0:
228     liveins: $x10
230     ; RV64I-LABEL: name: sextload_i32
231     ; RV64I: liveins: $x10
232     ; RV64I-NEXT: {{  $}}
233     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
234     ; RV64I-NEXT: [[SEXTLOAD:%[0-9]+]]:gprb(s64) = G_SEXTLOAD [[COPY]](p0) :: (load (s32))
235     ; RV64I-NEXT: $x10 = COPY [[SEXTLOAD]](s64)
236     ; RV64I-NEXT: PseudoRET implicit $x10
237     %0:_(p0) = COPY $x10
238     %1:_(s64) = G_SEXTLOAD %0(p0) :: (load (s32))
239     $x10 = COPY %1(s64)
240     PseudoRET implicit $x10