@@ -201,3 +201,113 @@ body: |
201201 RET_ReallyLR
202202
203203 ...
204+ ---
205+ name : test_idx_undef
206+ body : |
207+ bb.1:
208+ liveins: $x0
209+ ; CHECK-LABEL: name: test_idx_undef
210+ ; CHECK: liveins: $x0
211+ ; CHECK-NEXT: {{ $}}
212+ ; CHECK-NEXT: RET_ReallyLR
213+ %3:_(s8) = G_CONSTANT i8 127
214+ %2:_(<32 x s8>) = G_BUILD_VECTOR %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8)
215+ %4:_(s8) = G_CONSTANT i8 -128
216+ %5:_(s64) = G_IMPLICIT_DEF
217+ %0:_(p0) = COPY $x0
218+ %1:_(<32 x s8>) = G_INSERT_VECTOR_ELT %2, %4(s8), %5(s64)
219+ G_STORE %1(<32 x s8>), %0(p0) :: (store (<32 x s8>))
220+ RET_ReallyLR
221+
222+ ...
223+ ---
224+ name : test_elt_undef
225+ body : |
226+ bb.1:
227+ liveins: $x0
228+ ; CHECK-LABEL: name: test_elt_undef
229+ ; CHECK: liveins: $x0
230+ ; CHECK-NEXT: {{ $}}
231+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 127
232+ ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s8) = G_IMPLICIT_DEF
233+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
234+ ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s8>) = G_BUILD_VECTOR [[C]](s8), [[C]](s8), [[C]](s8), [[DEF]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8)
235+ ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<32 x s8>), [[COPY]](p0) :: (store (<32 x s8>))
236+ ; CHECK-NEXT: RET_ReallyLR
237+ %3:_(s8) = G_CONSTANT i8 127
238+ %2:_(<32 x s8>) = G_BUILD_VECTOR %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8)
239+ %4:_(s8) = G_IMPLICIT_DEF
240+ %5:_(s64) = G_CONSTANT i64 3
241+ %0:_(p0) = COPY $x0
242+ %1:_(<32 x s8>) = G_INSERT_VECTOR_ELT %2, %4(s8), %5(s64)
243+ G_STORE %1(<32 x s8>), %0(p0) :: (store (<32 x s8>))
244+ RET_ReallyLR
245+
246+ ...
247+ ---
248+ name : test_elt_undef_with_freeze
249+ body : |
250+ bb.1:
251+ liveins: $x0
252+ ; CHECK-LABEL: name: test_elt_undef_with_freeze
253+ ; CHECK: liveins: $x0
254+ ; CHECK-NEXT: {{ $}}
255+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 127
256+ ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s8>) = G_BUILD_VECTOR [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8)
257+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
258+ ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(<32 x s8>) = G_FREEZE [[BUILD_VECTOR]]
259+ ; CHECK-NEXT: G_STORE [[FREEZE]](<32 x s8>), [[COPY]](p0) :: (store (<32 x s8>))
260+ ; CHECK-NEXT: RET_ReallyLR
261+ %3:_(s8) = G_CONSTANT i8 127
262+ %2:_(<32 x s8>) = G_BUILD_VECTOR %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8)
263+ %4:_(s8) = G_IMPLICIT_DEF
264+ %5:_(s64) = G_CONSTANT i64 3
265+ %0:_(p0) = COPY $x0
266+ %9:_(<32 x s8>) = G_FREEZE %2
267+ %1:_(<32 x s8>) = G_INSERT_VECTOR_ELT %9, %4(s8), %5(s64)
268+ G_STORE %1(<32 x s8>), %0(p0) :: (store (<32 x s8>))
269+ RET_ReallyLR
270+
271+ ...
272+ ---
273+ name : test_insert_extract
274+ body : |
275+ bb.1:
276+ liveins: $x0
277+ ; CHECK-LABEL: name: test_insert_extract
278+ ; CHECK: liveins: $x0
279+ ; CHECK-NEXT: {{ $}}
280+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 127
281+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
282+ ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s8>) = G_BUILD_VECTOR [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8)
283+ ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<32 x s8>), [[COPY]](p0) :: (store (<32 x s8>))
284+ ; CHECK-NEXT: RET_ReallyLR
285+ %3:_(s8) = G_CONSTANT i8 127
286+ %2:_(<32 x s8>) = G_BUILD_VECTOR %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8)
287+ %5:_(s64) = G_CONSTANT i64 3
288+ %4:_(s8) = G_EXTRACT_VECTOR_ELT %2, %5
289+ %0:_(p0) = COPY $x0
290+ %1:_(<32 x s8>) = G_INSERT_VECTOR_ELT %2, %4(s8), %5(s64)
291+ G_STORE %1(<32 x s8>), %0(p0) :: (store (<32 x s8>))
292+ RET_ReallyLR
293+
294+ ...
295+ ---
296+ name : test_idx_oob
297+ body : |
298+ bb.1:
299+ liveins: $x0
300+ ; CHECK-LABEL: name: test_idx_oob
301+ ; CHECK: liveins: $x0
302+ ; CHECK-NEXT: {{ $}}
303+ ; CHECK-NEXT: RET_ReallyLR
304+ %3:_(s8) = G_CONSTANT i8 127
305+ %2:_(<32 x s8>) = G_BUILD_VECTOR %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8), %3(s8)
306+ %4:_(s8) = G_CONSTANT i8 -128
307+ %5:_(s64) = G_CONSTANT i64 1024
308+ %0:_(p0) = COPY $x0
309+ %1:_(<32 x s8>) = G_INSERT_VECTOR_ELT %2, %4(s8), %5(s64)
310+ G_STORE %1(<32 x s8>), %0(p0) :: (store (<32 x s8>))
311+ RET_ReallyLR
312+
313+ ...
0 commit comments