@@ -100,9 +100,8 @@ body: |
100100 ; CHECK: liveins: $w0, $w1
101101 ; CHECK-NEXT: {{ $}}
102102 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
103- ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = nuw G_TRUNC [[COPY]](s64)
104- ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[TRUNC]](s32)
105- ; CHECK-NEXT: $x1 = COPY [[SEXT]](s64)
103+ ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 32
104+ ; CHECK-NEXT: $x1 = COPY [[SEXT_INREG]](s64)
106105 %0:_(s64) = COPY $x0
107106 %2:_(s32) = nuw G_TRUNC %0
108107 %3:_(s64) = G_SEXT %2
@@ -117,9 +116,8 @@ body: |
117116 ; CHECK: liveins: $w0, $w1
118117 ; CHECK-NEXT: {{ $}}
119118 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
120- ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)
121- ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[TRUNC]](s32)
122- ; CHECK-NEXT: $x1 = COPY [[SEXT]](s64)
119+ ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 32
120+ ; CHECK-NEXT: $x1 = COPY [[SEXT_INREG]](s64)
123121 %0:_(s64) = COPY $x0
124122 %2:_(s32) = G_TRUNC %0
125123 %3:_(s64) = G_SEXT %2
@@ -372,3 +370,150 @@ body: |
372370 %3:_(s32) = G_SEXT %2
373371 $w1 = COPY %3
374372 ...
373+ ---
374+ name : trunc_sext_i32_i16
375+ tracksRegLiveness : true
376+ body : |
377+ bb.0:
378+ liveins: $w0
379+
380+ ; CHECK-LABEL: name: trunc_sext_i32_i16
381+ ; CHECK: liveins: $w0
382+ ; CHECK-NEXT: {{ $}}
383+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
384+ ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 16
385+ ; CHECK-NEXT: $w0 = COPY [[SEXT_INREG]](s32)
386+ %0:_(s32) = COPY $w0
387+ %1:_(s16) = G_TRUNC %0
388+ %2:_(s32) = G_SEXT %1
389+ $w0 = COPY %2
390+ ...
391+ ---
392+ name : trunc_sext_i32_i1
393+ tracksRegLiveness : true
394+ body : |
395+ bb.0:
396+ liveins: $w0
397+
398+ ; CHECK-LABEL: name: trunc_sext_i32_i1
399+ ; CHECK: liveins: $w0
400+ ; CHECK-NEXT: {{ $}}
401+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
402+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)
403+ ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s1)
404+ ; CHECK-NEXT: $w0 = COPY [[SEXT]](s32)
405+ %0:_(s32) = COPY $w0
406+ %1:_(s1) = G_TRUNC %0
407+ %2:_(s32) = G_SEXT %1
408+ $w0 = COPY %2
409+ ...
410+ ---
411+ name : trunc_sext_i32_i2
412+ tracksRegLiveness : true
413+ body : |
414+ bb.0:
415+ liveins: $w0
416+
417+ ; CHECK-LABEL: name: trunc_sext_i32_i2
418+ ; CHECK: liveins: $w0
419+ ; CHECK-NEXT: {{ $}}
420+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
421+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s2) = G_TRUNC [[COPY]](s32)
422+ ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s2)
423+ ; CHECK-NEXT: $w0 = COPY [[SEXT]](s32)
424+ %0:_(s32) = COPY $w0
425+ %1:_(s2) = G_TRUNC %0
426+ %2:_(s32) = G_SEXT %1
427+ $w0 = COPY %2
428+ ...
429+ ---
430+ name : trunc_sext_i32_i8
431+ tracksRegLiveness : true
432+ body : |
433+ bb.0:
434+ liveins: $w0
435+
436+ ; CHECK-LABEL: name: trunc_sext_i32_i8
437+ ; CHECK: liveins: $w0
438+ ; CHECK-NEXT: {{ $}}
439+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
440+ ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 8
441+ ; CHECK-NEXT: $w0 = COPY [[SEXT_INREG]](s32)
442+ %0:_(s32) = COPY $w0
443+ %1:_(s8) = G_TRUNC %0
444+ %2:_(s32) = G_SEXT %1
445+ $w0 = COPY %2
446+ ...
447+ ---
448+ name : trunc_sext_i64_i32
449+ tracksRegLiveness : true
450+ body : |
451+ bb.0:
452+ liveins: $w0, $w1
453+
454+ ; CHECK-LABEL: name: trunc_sext_i64_i32
455+ ; CHECK: liveins: $w0, $w1
456+ ; CHECK-NEXT: {{ $}}
457+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
458+ ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 32
459+ ; CHECK-NEXT: $x0 = COPY [[SEXT_INREG]](s64)
460+ %0:_(s64) = COPY $x0
461+ %1:_(s32) = G_TRUNC %0
462+ %2:_(s64) = G_SEXT %1
463+ $x0 = COPY %2
464+ ...
465+ ---
466+ name : trunc_sext_v2i32_v2i16
467+ tracksRegLiveness : true
468+ body : |
469+ bb.0:
470+ liveins: $w0, $w1
471+
472+ ; CHECK-LABEL: name: trunc_sext_v2i32_v2i16
473+ ; CHECK: liveins: $w0, $w1
474+ ; CHECK-NEXT: {{ $}}
475+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $x0
476+ ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(<2 x s32>) = G_SEXT_INREG [[COPY]], 16
477+ ; CHECK-NEXT: $x0 = COPY [[SEXT_INREG]](<2 x s32>)
478+ %0:_(<2 x s32>) = COPY $x0
479+ %1:_(<2 x s16>) = G_TRUNC %0
480+ %2:_(<2 x s32>) = G_SEXT %1
481+ $x0 = COPY %2
482+ ...
483+ ---
484+ name : trunc_sext_v4i16_v4i8
485+ tracksRegLiveness : true
486+ body : |
487+ bb.0:
488+ liveins: $w0, $w1
489+
490+ ; CHECK-LABEL: name: trunc_sext_v4i16_v4i8
491+ ; CHECK: liveins: $w0, $w1
492+ ; CHECK-NEXT: {{ $}}
493+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $x0
494+ ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(<4 x s16>) = G_SEXT_INREG [[COPY]], 8
495+ ; CHECK-NEXT: $x0 = COPY [[SEXT_INREG]](<4 x s16>)
496+ %0:_(<4 x s16>) = COPY $x0
497+ %1:_(<4 x s8>) = G_TRUNC %0
498+ %2:_(<4 x s16>) = G_SEXT %1
499+ $x0 = COPY %2
500+ ...
501+ ---
502+ name : trunc_sext_mismatching_types
503+ tracksRegLiveness : true
504+ body : |
505+ bb.0:
506+ liveins: $w0, $w1
507+
508+ ; CHECK-LABEL: name: trunc_sext_mismatching_types
509+ ; CHECK: liveins: $w0, $w1
510+ ; CHECK-NEXT: {{ $}}
511+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
512+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s64)
513+ ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s16)
514+ ; CHECK-NEXT: $w0 = COPY [[SEXT]](s32)
515+ %0:_(s64) = COPY $x0
516+ %1:_(s16) = G_TRUNC %0
517+ %2:_(s32) = G_SEXT %1
518+ $w0 = COPY %2
519+ ...
0 commit comments