@@ -216,3 +216,73 @@ body: |
216216    $q0 = COPY %2(<2 x s64>) 
217217    RET_ReallyLR 
218218 ...
219+ ---
220+ name :            v3s8_crash 
221+ body :             | 
222+   ; CHECK-LABEL: name: v3s8_crash 
223+   ; CHECK: bb.0: 
224+   ; CHECK-NEXT:   successors: %bb.1(0x80000000) 
225+   ; CHECK-NEXT:   liveins: $w1, $w2, $w3, $x0 
226+   ; CHECK-NEXT: {{  $}} 
227+   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p0) = COPY $x0 
228+   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $w1 
229+   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:_(s32) = COPY $w2 
230+   ; CHECK-NEXT:   [[COPY3:%[0-9]+]]:_(s32) = COPY $w3 
231+   ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(s8) = G_IMPLICIT_DEF 
232+   ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 0 
233+   ; CHECK-NEXT: {{  $}} 
234+   ; CHECK-NEXT: bb.1: 
235+   ; CHECK-NEXT:   successors: %bb.1(0x80000000) 
236+   ; CHECK-NEXT: {{  $}} 
237+   ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 
238+   ; CHECK-NEXT:   [[DEF1:%[0-9]+]]:_(s8) = G_IMPLICIT_DEF 
239+   ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 
240+   ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32) 
241+   ; CHECK-NEXT:   [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY3]](s32) 
242+   ; CHECK-NEXT:   [[DEF2:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF 
243+   ; CHECK-NEXT:   [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s16>) = G_BUILD_VECTOR [[TRUNC]](s16), [[TRUNC1]](s16), [[TRUNC2]](s16), [[DEF2]](s16) 
244+   ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s16) = G_CONSTANT i16 0 
245+   ; CHECK-NEXT:   [[IVEC:%[0-9]+]]:_(<4 x s16>) = G_INSERT_VECTOR_ELT [[BUILD_VECTOR]], [[C2]](s16), [[C1]](s64) 
246+   ; CHECK-NEXT:   [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16), [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[IVEC]](<4 x s16>) 
247+   ; CHECK-NEXT:   [[TRUNC3:%[0-9]+]]:_(s8) = G_TRUNC [[UV]](s16) 
248+   ; CHECK-NEXT:   [[TRUNC4:%[0-9]+]]:_(s8) = G_TRUNC [[UV1]](s16) 
249+   ; CHECK-NEXT:   [[TRUNC5:%[0-9]+]]:_(s8) = G_TRUNC [[UV2]](s16) 
250+   ; CHECK-NEXT:   [[BUILD_VECTOR1:%[0-9]+]]:_(<16 x s8>) = G_BUILD_VECTOR [[TRUNC3]](s8), [[TRUNC4]](s8), [[TRUNC5]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8) 
251+   ; CHECK-NEXT:   [[BUILD_VECTOR2:%[0-9]+]]:_(<16 x s8>) = G_BUILD_VECTOR [[C]](s8), [[DEF]](s8), [[DEF]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8), [[DEF1]](s8) 
252+   ; CHECK-NEXT:   [[SHUF:%[0-9]+]]:_(<16 x s8>) = G_SHUFFLE_VECTOR [[BUILD_VECTOR1]](<16 x s8>), [[BUILD_VECTOR2]], shufflemask(0, 16, 16, 16, 1, 16, 16, 16, 2, 16, 16, 16, undef, undef, undef, undef) 
253+   ; CHECK-NEXT:   [[BITCAST:%[0-9]+]]:_(<4 x s32>) = G_BITCAST [[SHUF]](<16 x s8>) 
254+   ; CHECK-NEXT:   [[UITOFP:%[0-9]+]]:_(<4 x s32>) = G_UITOFP [[BITCAST]](<4 x s32>) 
255+   ; CHECK-NEXT:   [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[UITOFP]](<4 x s32>) 
256+   ; CHECK-NEXT:   G_STORE [[UV4]](s32), [[COPY]](p0) :: (store (s32), align 16) 
257+   ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 4 
258+   ; CHECK-NEXT:   [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C3]](s64) 
259+   ; CHECK-NEXT:   G_STORE [[UV5]](s32), [[PTR_ADD]](p0) :: (store (s32) into unknown-address + 4) 
260+   ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 8 
261+   ; CHECK-NEXT:   [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C4]](s64) 
262+   ; CHECK-NEXT:   G_STORE [[UV6]](s32), [[PTR_ADD1]](p0) :: (store (s32) into unknown-address + 8, align 8) 
263+   ; CHECK-NEXT:   G_BR %bb.1 
264+   bb.1: 
265+     liveins: $w1, $w2, $w3, $x0 
266+ 
267+     %0:_(p0) = COPY $x0 
268+     %2:_(s32) = COPY $w1 
269+     %3:_(s32) = COPY $w2 
270+     %4:_(s32) = COPY $w3 
271+     %5:_(<3 x s32>) = G_BUILD_VECTOR %2(s32), %3(s32), %4(s32) 
272+     %1:_(<3 x s8>) = G_TRUNC %5(<3 x s32>) 
273+     %8:_(s64) = G_CONSTANT i64 0 
274+     %11:_(s8) = G_IMPLICIT_DEF 
275+     %7:_(s8) = G_CONSTANT i8 0 
276+     %10:_(<3 x s8>) = G_BUILD_VECTOR %7(s8), %11(s8), %11(s8) 
277+ 
278+   bb.2: 
279+     %14:_(s64) = G_CONSTANT i64 0 
280+     %15:_(s8) = G_CONSTANT i8 0 
281+     %6:_(<3 x s8>) = G_INSERT_VECTOR_ELT %1, %15(s8), %14(s64) 
282+     %9:_(<12 x s8>) = G_SHUFFLE_VECTOR %6(<3 x s8>), %10, shufflemask(0, 3, 3, 3, 1, 3, 3, 3, 2, 3, 3, 3) 
283+     %12:_(<3 x s32>) = G_BITCAST %9(<12 x s8>) 
284+     %13:_(<3 x s32>) = G_UITOFP %12(<3 x s32>) 
285+     G_STORE %13(<3 x s32>), %0(p0) :: (store (<3 x s32>)) 
286+     G_BR %bb.2 
287+ 
288+  ...
0 commit comments