158 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -run-pass=amdgpu-postlegalizer-combiner -verify-machineinstrs -o - %s | FileCheck %s3 4---5name: v2s16_trunc_same_bitcast_lshr166tracksRegLiveness: true7legalized: true8body: |9 bb.0:10 liveins: $vgpr011 ; CHECK-LABEL: name: v2s16_trunc_same_bitcast_lshr1612 ; CHECK: liveins: $vgpr013 ; CHECK-NEXT: {{ $}}14 ; CHECK-NEXT: %src:_(<2 x s16>) = COPY $vgpr015 ; CHECK-NEXT: $vgpr0 = COPY %src(<2 x s16>)16 %src:_(<2 x s16>) = COPY $vgpr017 %bitcast:_(s32) = G_BITCAST %src18 %lshr_amount:_(s32) = G_CONSTANT i32 1619 %lshr:_(s32) = G_LSHR %bitcast, %lshr_amount20 %root:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC %bitcast, %lshr21 $vgpr0 = COPY %root22...23 24---25name: v2s16_trunc_different_bitcast_lshr1626tracksRegLiveness: true27legalized: true28body: |29 bb.0:30 liveins: $vgpr031 ; CHECK-LABEL: name: v2s16_trunc_different_bitcast_lshr1632 ; CHECK: liveins: $vgpr033 ; CHECK-NEXT: {{ $}}34 ; CHECK-NEXT: %src:_(<2 x s16>) = COPY $vgpr035 ; CHECK-NEXT: $vgpr0 = COPY %src(<2 x s16>)36 %src:_(<2 x s16>) = COPY $vgpr037 %bitcast0:_(s32) = G_BITCAST %src38 %bitcast1:_(s32) = G_BITCAST %src39 %lshr_amount:_(s32) = G_CONSTANT i32 1640 %lshr:_(s32) = G_LSHR %bitcast1, %lshr_amount41 %root:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC %bitcast0, %lshr42 $vgpr0 = COPY %root43...44 45---46name: v2s16_trunc_same_bitcast_lshr8_nocombine47tracksRegLiveness: true48legalized: true49body: |50 bb.0:51 liveins: $vgpr052 ; CHECK-LABEL: name: v2s16_trunc_same_bitcast_lshr8_nocombine53 ; CHECK: liveins: $vgpr054 ; CHECK-NEXT: {{ $}}55 ; CHECK-NEXT: %src:_(<2 x s16>) = COPY $vgpr056 ; CHECK-NEXT: %bitcast:_(s32) = G_BITCAST %src(<2 x s16>)57 ; CHECK-NEXT: %lshr_amount:_(s32) = G_CONSTANT i32 858 ; CHECK-NEXT: %lshr:_(s32) = G_LSHR %bitcast, %lshr_amount(s32)59 ; CHECK-NEXT: %root:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC %bitcast(s32), %lshr(s32)60 ; CHECK-NEXT: $vgpr0 = COPY %root(<2 x s16>)61 %src:_(<2 x s16>) = COPY $vgpr062 %bitcast:_(s32) = G_BITCAST %src63 %lshr_amount:_(s32) = G_CONSTANT i32 864 %lshr:_(s32) = G_LSHR %bitcast, %lshr_amount65 %root:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC %bitcast, %lshr66 $vgpr0 = COPY %root67...68 69---70name: v2s16_same_bitcast_lshr1671tracksRegLiveness: true72legalized: true73body: |74 bb.0:75 liveins: $vgpr076 ; CHECK-LABEL: name: v2s16_same_bitcast_lshr1677 ; CHECK: liveins: $vgpr078 ; CHECK-NEXT: {{ $}}79 ; CHECK-NEXT: %src:_(<2 x s16>) = COPY $vgpr080 ; CHECK-NEXT: $vgpr0 = COPY %src(<2 x s16>)81 %src:_(<2 x s16>) = COPY $vgpr082 %bitcast:_(s32) = G_BITCAST %src83 %lshr_amount:_(s32) = G_CONSTANT i32 1684 %lshr:_(s32) = G_LSHR %bitcast, %lshr_amount85 %trunclo:_(s16) = G_TRUNC %bitcast86 %trunchi:_(s16) = G_TRUNC %lshr87 %root:_(<2 x s16>) = G_BUILD_VECTOR %trunclo, %trunchi88 $vgpr0 = COPY %root89...90 91---92name: v2s16_same_bitcast_lshr8_nocombine93tracksRegLiveness: true94legalized: true95body: |96 bb.0:97 liveins: $vgpr098 ; CHECK-LABEL: name: v2s16_same_bitcast_lshr8_nocombine99 ; CHECK: liveins: $vgpr0100 ; CHECK-NEXT: {{ $}}101 ; CHECK-NEXT: %src:_(<2 x s16>) = COPY $vgpr0102 ; CHECK-NEXT: %bitcast:_(s32) = G_BITCAST %src(<2 x s16>)103 ; CHECK-NEXT: %lshr_amount:_(s32) = G_CONSTANT i32 8104 ; CHECK-NEXT: %lshr:_(s32) = G_LSHR %bitcast, %lshr_amount(s32)105 ; CHECK-NEXT: %trunclo:_(s16) = G_TRUNC %bitcast(s32)106 ; CHECK-NEXT: %trunchi:_(s16) = G_TRUNC %lshr(s32)107 ; CHECK-NEXT: %root:_(<2 x s16>) = G_BUILD_VECTOR %trunclo(s16), %trunchi(s16)108 ; CHECK-NEXT: $vgpr0 = COPY %root(<2 x s16>)109 %src:_(<2 x s16>) = COPY $vgpr0110 %bitcast:_(s32) = G_BITCAST %src111 %lshr_amount:_(s32) = G_CONSTANT i32 8112 %lshr:_(s32) = G_LSHR %bitcast, %lshr_amount113 %trunclo:_(s16) = G_TRUNC %bitcast114 %trunchi:_(s16) = G_TRUNC %lshr115 %root:_(<2 x s16>) = G_BUILD_VECTOR %trunclo, %trunchi116 $vgpr0 = COPY %root117...118 119---120name: v2s16_undefhi121tracksRegLiveness: true122legalized: true123body: |124 bb.0:125 liveins: $vgpr0126 ; CHECK-LABEL: name: v2s16_undefhi127 ; CHECK: liveins: $vgpr0128 ; CHECK-NEXT: {{ $}}129 ; CHECK-NEXT: %src:_(<2 x s16>) = COPY $vgpr0130 ; CHECK-NEXT: $vgpr0 = COPY %src(<2 x s16>)131 %src:_(<2 x s16>) = COPY $vgpr0132 %bitcast:_(s32) = G_BITCAST %src133 %trunc:_(s16) = G_TRUNC %bitcast134 %undef:_(s16) = G_IMPLICIT_DEF135 %root:_(<2 x s16>) = G_BUILD_VECTOR %trunc, %undef136 $vgpr0 = COPY %root137...138 139---140name: v2s32_undefhi141tracksRegLiveness: true142legalized: true143body: |144 bb.0:145 liveins: $vgpr0_vgpr1146 ; CHECK-LABEL: name: v2s32_undefhi147 ; CHECK: liveins: $vgpr0_vgpr1148 ; CHECK-NEXT: {{ $}}149 ; CHECK-NEXT: %src:_(<2 x s32>) = COPY $vgpr0_vgpr1150 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY %src(<2 x s32>)151 %src:_(<2 x s32>) = COPY $vgpr0_vgpr1152 %bitcast:_(s64) = G_BITCAST %src153 %trunc:_(s32) = G_TRUNC %bitcast154 %undef:_(s32) = G_IMPLICIT_DEF155 %root:_(<2 x s32>) = G_BUILD_VECTOR %trunc, %undef156 $vgpr0_vgpr1 = COPY %root157...158