88 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1030 -run-pass=amdgpu-regbank-combiner %s -o - | FileCheck %s3 4# Check (sext (trunc (sext_inreg x))) can be folded, as it's a pattern that can arise when5# CGP widening of uniform i16 ops is disabled.6# Two separate combines make it happen (sext_trunc and sext_inreg_of_sext_inreg).7 8---9name: trunc_s16_inreg_810tracksRegLiveness: true11body: |12 bb.0:13 liveins: $vgpr014 ; CHECK-LABEL: name: trunc_s16_inreg_815 ; CHECK: liveins: $vgpr016 ; CHECK-NEXT: {{ $}}17 ; CHECK-NEXT: %copy:_(s32) = COPY $vgpr018 ; CHECK-NEXT: %inreg:_(s32) = G_SEXT_INREG %copy, 819 ; CHECK-NEXT: $vgpr0 = COPY %inreg(s32)20 %copy:_(s32) = COPY $vgpr021 %inreg:_(s32) = G_SEXT_INREG %copy, 822 %trunc:_(s16) = G_TRUNC %inreg23 %sext:_(s32) = G_SEXT %trunc24 $vgpr0 = COPY %sext25...26 27---28name: trunc_s16_inreg_1629tracksRegLiveness: true30body: |31 bb.0:32 liveins: $vgpr033 ; CHECK-LABEL: name: trunc_s16_inreg_1634 ; CHECK: liveins: $vgpr035 ; CHECK-NEXT: {{ $}}36 ; CHECK-NEXT: %copy:_(s32) = COPY $vgpr037 ; CHECK-NEXT: %inreg:_(s32) = G_SEXT_INREG %copy, 1638 ; CHECK-NEXT: $vgpr0 = COPY %inreg(s32)39 %copy:_(s32) = COPY $vgpr040 %inreg:_(s32) = G_SEXT_INREG %copy, 1641 %trunc:_(s16) = G_TRUNC %inreg42 %sext:_(s32) = G_SEXT %trunc43 $vgpr0 = COPY %sext44...45 46---47name: trunc_s8_inreg_1648tracksRegLiveness: true49body: |50 bb.0:51 liveins: $vgpr052 ; CHECK-LABEL: name: trunc_s8_inreg_1653 ; CHECK: liveins: $vgpr054 ; CHECK-NEXT: {{ $}}55 ; CHECK-NEXT: %copy:_(s32) = COPY $vgpr056 ; CHECK-NEXT: %sext:_(s32) = G_SEXT_INREG %copy, 857 ; CHECK-NEXT: $vgpr0 = COPY %sext(s32)58 %copy:_(s32) = COPY $vgpr059 %inreg:_(s32) = G_SEXT_INREG %copy, 1660 %trunc:_(s8) = G_TRUNC %inreg61 %sext:_(s32) = G_SEXT %trunc62 $vgpr0 = COPY %sext63...64 65# TODO?: We could handle this by inserting a trunc, but I'm not sure how useful that'd be.66---67name: mismatching_types68tracksRegLiveness: true69body: |70 bb.0:71 liveins: $vgpr072 ; CHECK-LABEL: name: mismatching_types73 ; CHECK: liveins: $vgpr074 ; CHECK-NEXT: {{ $}}75 ; CHECK-NEXT: %copy:_(s32) = COPY $vgpr076 ; CHECK-NEXT: %inreg:_(s32) = G_SEXT_INREG %copy, 877 ; CHECK-NEXT: %trunc:_(s8) = G_TRUNC %inreg(s32)78 ; CHECK-NEXT: %sext:_(s16) = G_SEXT %trunc(s8)79 ; CHECK-NEXT: %anyext:_(s32) = G_ANYEXT %sext(s16)80 ; CHECK-NEXT: $vgpr0 = COPY %anyext(s32)81 %copy:_(s32) = COPY $vgpr082 %inreg:_(s32) = G_SEXT_INREG %copy, 883 %trunc:_(s8) = G_TRUNC %inreg84 %sext:_(s16) = G_SEXT %trunc85 %anyext:_(s32) = G_ANYEXT %sext86 $vgpr0 = COPY %anyext87...88