174 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: s16_trunc_v2s16_buildvector6tracksRegLiveness: true7body: |8 bb.0:9 liveins: $vgpr0, $vgpr110 ; CHECK-LABEL: name: s16_trunc_v2s16_buildvector11 ; CHECK: liveins: $vgpr0, $vgpr112 ; CHECK-NEXT: {{ $}}13 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr014 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)15 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 4216 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[TRUNC]], [[C]]17 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16)18 ; CHECK-NEXT: $vgpr0 = COPY [[ZEXT]](s32)19 %0:_(s32) = COPY $vgpr020 %1:_(s32) = COPY $vgpr121 %2:_(s16) = G_TRUNC %022 %3:_(s16) = G_TRUNC %123 %4:_(<2 x s16>) = G_BUILD_VECTOR %2, %324 %5:_(s32) = G_BITCAST %425 %6:_(s16) = G_TRUNC %526 %7:_(s16) = G_CONSTANT i16 4227 %8:_(s16) = G_OR %7, %628 %9:_(s32) = G_ZEXT %829 $vgpr0 = COPY %930...31 32---33name: s16_trunc_v2s16_buildvector_shift8_nofold34tracksRegLiveness: true35body: |36 bb.0:37 liveins: $vgpr0, $vgpr138 ; CHECK-LABEL: name: s16_trunc_v2s16_buildvector_shift8_nofold39 ; CHECK: liveins: $vgpr0, $vgpr140 ; CHECK-NEXT: {{ $}}41 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr042 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr143 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)44 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)45 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[TRUNC]](s16), [[TRUNC1]](s16)46 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[BUILD_VECTOR]](<2 x s16>)47 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 848 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)49 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)50 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 4251 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[TRUNC2]], [[C1]]52 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16)53 ; CHECK-NEXT: $vgpr0 = COPY [[ZEXT]](s32)54 %0:_(s32) = COPY $vgpr055 %1:_(s32) = COPY $vgpr156 %2:_(s16) = G_TRUNC %057 %3:_(s16) = G_TRUNC %158 %4:_(<2 x s16>) = G_BUILD_VECTOR %2, %359 %5:_(s32) = G_BITCAST %460 %6:_(s32) = G_CONSTANT i32 861 %7:_(s32) = G_LSHR %5, %662 %8:_(s16) = G_TRUNC %763 %9:_(s16) = G_CONSTANT i16 4264 %10:_(s16) = G_OR %9, %865 %11:_(s32) = G_ZEXT %1066 $vgpr0 = COPY %1167...68 69---70name: s16_trunc_v2s16_buildvector_shift1671tracksRegLiveness: true72body: |73 bb.0:74 liveins: $vgpr0, $vgpr175 ; CHECK-LABEL: name: s16_trunc_v2s16_buildvector_shift1676 ; CHECK: liveins: $vgpr0, $vgpr177 ; CHECK-NEXT: {{ $}}78 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr179 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)80 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 4281 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[TRUNC]], [[C]]82 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16)83 ; CHECK-NEXT: $vgpr0 = COPY [[ZEXT]](s32)84 %0:_(s32) = COPY $vgpr085 %1:_(s32) = COPY $vgpr186 %2:_(s16) = G_TRUNC %087 %3:_(s16) = G_TRUNC %188 %4:_(<2 x s16>) = G_BUILD_VECTOR %2, %389 %5:_(s32) = G_BITCAST %490 %6:_(s32) = G_CONSTANT i32 1691 %7:_(s32) = G_LSHR %5, %692 %8:_(s16) = G_TRUNC %793 %9:_(s16) = G_CONSTANT i16 4294 %10:_(s16) = G_OR %9, %895 %11:_(s32) = G_ZEXT %1096 $vgpr0 = COPY %1197...98 99---100name: s16_trunc_v2s32_buildvector_nofold101tracksRegLiveness: true102body: |103 bb.0:104 liveins: $vgpr0, $vgpr1105 ; CHECK-LABEL: name: s16_trunc_v2s32_buildvector_nofold106 ; CHECK: liveins: $vgpr0, $vgpr1107 ; CHECK-NEXT: {{ $}}108 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0109 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1110 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32)111 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s64) = G_BITCAST [[BUILD_VECTOR]](<2 x s32>)112 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST]](s64)113 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 42114 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[TRUNC]], [[C]]115 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16)116 ; CHECK-NEXT: $vgpr0 = COPY [[ZEXT]](s32)117 %0:_(s32) = COPY $vgpr0118 %1:_(s32) = COPY $vgpr1119 %2:_(<2 x s32>) = G_BUILD_VECTOR %0, %1120 %3:_(s64) = G_BITCAST %2121 %4:_(s16) = G_TRUNC %3122 %5:_(s16) = G_CONSTANT i16 42123 %6:_(s16) = G_OR %5, %4124 %7:_(s32) = G_ZEXT %6125 $vgpr0 = COPY %7126...127 128---129name: s32_trunc_v2s32_buildvector130tracksRegLiveness: true131body: |132 bb.0:133 liveins: $vgpr0, $vgpr1134 ; CHECK-LABEL: name: s32_trunc_v2s32_buildvector135 ; CHECK: liveins: $vgpr0, $vgpr1136 ; CHECK-NEXT: {{ $}}137 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0138 ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)139 %0:_(s32) = COPY $vgpr0140 %1:_(s32) = COPY $vgpr1141 %2:_(<2 x s32>) = G_BUILD_VECTOR %0, %1142 %3:_(s64) = G_BITCAST %2143 %4:_(s32) = G_TRUNC %3144 $vgpr0 = COPY %4145...146 147---148name: s32_trunc_v2s32_buildvector_multiple_users149tracksRegLiveness: true150body: |151 bb.0:152 liveins: $vgpr0, $vgpr1153 ; CHECK-LABEL: name: s32_trunc_v2s32_buildvector_multiple_users154 ; CHECK: liveins: $vgpr0, $vgpr1155 ; CHECK-NEXT: {{ $}}156 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0157 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1158 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32)159 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s64) = G_BITCAST [[BUILD_VECTOR]](<2 x s32>)160 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<2 x s32>), [[COPY1]](s32)161 ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)162 ; CHECK-NEXT: $vgpr1 = COPY [[EVEC]](s32)163 ; CHECK-NEXT: $vgpr2_vgpr3 = COPY [[BITCAST]](s64)164 %0:_(s32) = COPY $vgpr0165 %1:_(s32) = COPY $vgpr1166 %2:_(<2 x s32>) = G_BUILD_VECTOR %0, %1167 %3:_(s64) = G_BITCAST %2168 %4:_(s32) = G_TRUNC %3169 %5:_(s32) = G_EXTRACT_VECTOR_ELT %2, %1170 $vgpr0 = COPY %4171 $vgpr1 = COPY %5172 $vgpr2_vgpr3 = COPY %3173...174