brintos

brintos / llvm-project-archived public Read only

0
0
Text · 22.8 KiB · b229981 Raw
536 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2 3# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=instruction-select -global-isel-abort=2 -disable-gisel-legality-check -pass-remarks-missed='gisel*' -verify-machineinstrs %s -o - 2>%t | FileCheck -check-prefix=GFX8 %s4# RUN: FileCheck --check-prefix=ERR %s < %t5 6# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=instruction-select -global-isel-abort=2 -disable-gisel-legality-check -pass-remarks-missed='gisel*' -verify-machineinstrs %s -o - 2>%t | FileCheck -check-prefix=GFX9 %s7# RUN: FileCheck --check-prefix=ERR %s < %t8 9# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -global-isel-abort=2 -disable-gisel-legality-check -pass-remarks-missed='gisel*' -verify-machineinstrs %s -o - 2>%t | FileCheck -check-prefix=GFX10 %s10# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 -run-pass=instruction-select -global-isel-abort=2 -disable-gisel-legality-check -pass-remarks-missed='gisel*' -verify-machineinstrs %s -o - 2>%t | FileCheck -check-prefixes=GFX11 %s11# RUN: FileCheck --check-prefix=ERR %s < %t12 13# ERR-NOT: remark14# ERR: remark: <unknown>:0:0: cannot select: %4:sgpr(s16) = G_SHL %2:sgpr, %3:sgpr(s16) (in function: shl_s16_s16_ss)15# ERR-NEXT: remark: <unknown>:0:0: cannot select: %3:vgpr(s16) = G_SHL %2:vgpr, %1:vgpr(s32) (in function: shl_s16_s32_vv)16# ERR-NEXT: remark: <unknown>:0:0: cannot select: %3:sgpr(s16) = G_SHL %2:sgpr, %1:sgpr(s32) (in function: shl_s16_s32_ss)17# ERR-NEXT: remark: <unknown>:0:0: cannot select: %3:vgpr(s16) = G_SHL %2:sgpr, %1:vgpr(s32) (in function: shl_s16_s32_sv)18# ERR-NEXT: remark: <unknown>:0:0: cannot select: %3:vgpr(s16) = G_SHL %2:vgpr, %1:sgpr(s32) (in function: shl_s16_s32_vs)19# ERR-NOT: remark20 21---22name: shl_s16_s16_ss23legalized: true24regBankSelected: true25 26body: |27  bb.0:28    liveins: $sgpr0, $sgpr129 30    ; GFX8-LABEL: name: shl_s16_s16_ss31    ; GFX8: liveins: $sgpr0, $sgpr132    ; GFX8-NEXT: {{  $}}33    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr034    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr135    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)36    ; GFX8-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY1]](s32)37    ; GFX8-NEXT: [[SHL:%[0-9]+]]:sgpr(s16) = G_SHL [[TRUNC]], [[TRUNC1]](s16)38    ; GFX8-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)39    ;40    ; GFX9-LABEL: name: shl_s16_s16_ss41    ; GFX9: liveins: $sgpr0, $sgpr142    ; GFX9-NEXT: {{  $}}43    ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr044    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr145    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)46    ; GFX9-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY1]](s32)47    ; GFX9-NEXT: [[SHL:%[0-9]+]]:sgpr(s16) = G_SHL [[TRUNC]], [[TRUNC1]](s16)48    ; GFX9-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)49    ;50    ; GFX10-LABEL: name: shl_s16_s16_ss51    ; GFX10: liveins: $sgpr0, $sgpr152    ; GFX10-NEXT: {{  $}}53    ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr054    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr155    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)56    ; GFX10-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY1]](s32)57    ; GFX10-NEXT: [[SHL:%[0-9]+]]:sgpr(s16) = G_SHL [[TRUNC]], [[TRUNC1]](s16)58    ; GFX10-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)59    ;60    ; GFX11-LABEL: name: shl_s16_s16_ss61    ; GFX11: liveins: $sgpr0, $sgpr162    ; GFX11-NEXT: {{  $}}63    ; GFX11-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr064    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr165    ; GFX11-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)66    ; GFX11-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY1]](s32)67    ; GFX11-NEXT: [[SHL:%[0-9]+]]:sgpr(s16) = G_SHL [[TRUNC]], [[TRUNC1]](s16)68    ; GFX11-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)69    %0:sgpr(s32) = COPY $sgpr070    %1:sgpr(s32) = COPY $sgpr171    %2:sgpr(s16) = G_TRUNC %072    %3:sgpr(s16) = G_TRUNC %173    %4:sgpr(s16) = G_SHL %2, %374    S_ENDPGM 0, implicit %475...76 77---78name: shl_s16_s16_vs79legalized: true80regBankSelected: true81 82body: |83  bb.0:84    liveins: $sgpr0, $vgpr085    ; GFX8-LABEL: name: shl_s16_s16_vs86    ; GFX8: liveins: $sgpr0, $vgpr087    ; GFX8-NEXT: {{  $}}88    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr089    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr090    ; GFX8-NEXT: [[V_LSHLREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec91    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B16_e64_]]92    ;93    ; GFX9-LABEL: name: shl_s16_s16_vs94    ; GFX9: liveins: $sgpr0, $vgpr095    ; GFX9-NEXT: {{  $}}96    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr097    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr098    ; GFX9-NEXT: [[V_LSHLREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec99    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B16_e64_]]100    ;101    ; GFX10-LABEL: name: shl_s16_s16_vs102    ; GFX10: liveins: $sgpr0, $vgpr0103    ; GFX10-NEXT: {{  $}}104    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0105    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0106    ; GFX10-NEXT: [[V_LSHLREV_B16_opsel_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_opsel_e64 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $exec107    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B16_opsel_e64_]]108    ;109    ; GFX11-LABEL: name: shl_s16_s16_vs110    ; GFX11: liveins: $sgpr0, $vgpr0111    ; GFX11-NEXT: {{  $}}112    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0113    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0114    ; GFX11-NEXT: [[V_LSHLREV_B16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_fake16_e64 [[COPY1]], [[COPY]], implicit $exec115    ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B16_fake16_e64_]]116    %0:vgpr(s32) = COPY $vgpr0117    %1:sgpr(s32) = COPY $sgpr0118    %2:vgpr(s16) = G_TRUNC %0119    %3:sgpr(s16) = G_TRUNC %1120    %4:vgpr(s16) = G_SHL %2, %3121    S_ENDPGM 0, implicit %4122...123 124---125name: shl_s16_s32_vv126legalized: true127regBankSelected: true128 129body: |130  bb.0:131    liveins: $vgpr0, $vgpr1132 133    ; GFX8-LABEL: name: shl_s16_s32_vv134    ; GFX8: liveins: $vgpr0, $vgpr1135    ; GFX8-NEXT: {{  $}}136    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0137    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1138    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)139    ; GFX8-NEXT: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)140    ; GFX8-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)141    ;142    ; GFX9-LABEL: name: shl_s16_s32_vv143    ; GFX9: liveins: $vgpr0, $vgpr1144    ; GFX9-NEXT: {{  $}}145    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0146    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1147    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)148    ; GFX9-NEXT: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)149    ; GFX9-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)150    ;151    ; GFX10-LABEL: name: shl_s16_s32_vv152    ; GFX10: liveins: $vgpr0, $vgpr1153    ; GFX10-NEXT: {{  $}}154    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0155    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1156    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)157    ; GFX10-NEXT: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)158    ; GFX10-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)159    ;160    ; GFX11-LABEL: name: shl_s16_s32_vv161    ; GFX11: liveins: $vgpr0, $vgpr1162    ; GFX11-NEXT: {{  $}}163    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0164    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1165    ; GFX11-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)166    ; GFX11-NEXT: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)167    ; GFX11-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)168    %0:vgpr(s32) = COPY $vgpr0169    %1:vgpr(s32) = COPY $vgpr1170    %2:vgpr(s16) = G_TRUNC %0171    %3:vgpr(s16) = G_SHL %2, %1172    S_ENDPGM 0, implicit %3173...174 175---176name: shl_s16_s16_vv177legalized: true178regBankSelected: true179 180body: |181  bb.0:182    liveins: $vgpr0, $vgpr1183 184    ; GFX8-LABEL: name: shl_s16_s16_vv185    ; GFX8: liveins: $vgpr0, $vgpr1186    ; GFX8-NEXT: {{  $}}187    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0188    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1189    ; GFX8-NEXT: [[V_LSHLREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec190    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B16_e64_]]191    ;192    ; GFX9-LABEL: name: shl_s16_s16_vv193    ; GFX9: liveins: $vgpr0, $vgpr1194    ; GFX9-NEXT: {{  $}}195    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0196    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1197    ; GFX9-NEXT: [[V_LSHLREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec198    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B16_e64_]]199    ;200    ; GFX10-LABEL: name: shl_s16_s16_vv201    ; GFX10: liveins: $vgpr0, $vgpr1202    ; GFX10-NEXT: {{  $}}203    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0204    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1205    ; GFX10-NEXT: [[V_LSHLREV_B16_opsel_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_opsel_e64 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $exec206    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B16_opsel_e64_]]207    ;208    ; GFX11-LABEL: name: shl_s16_s16_vv209    ; GFX11: liveins: $vgpr0, $vgpr1210    ; GFX11-NEXT: {{  $}}211    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0212    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1213    ; GFX11-NEXT: [[V_LSHLREV_B16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_fake16_e64 [[COPY1]], [[COPY]], implicit $exec214    ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B16_fake16_e64_]]215    %0:vgpr(s32) = COPY $vgpr0216    %1:vgpr(s32) = COPY $vgpr1217    %2:vgpr(s16) = G_TRUNC %0218    %3:vgpr(s16) = G_TRUNC %1219    %4:vgpr(s16) = G_SHL %2, %3220    S_ENDPGM 0, implicit %4221...222 223---224name: shl_s16_s16_vv_zext_to_s32225legalized: true226regBankSelected: true227 228body: |229  bb.0:230    liveins: $vgpr0, $vgpr1231 232    ; GFX8-LABEL: name: shl_s16_s16_vv_zext_to_s32233    ; GFX8: liveins: $vgpr0, $vgpr1234    ; GFX8-NEXT: {{  $}}235    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0236    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1237    ; GFX8-NEXT: [[V_LSHLREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec238    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B16_e64_]]239    ;240    ; GFX9-LABEL: name: shl_s16_s16_vv_zext_to_s32241    ; GFX9: liveins: $vgpr0, $vgpr1242    ; GFX9-NEXT: {{  $}}243    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0244    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1245    ; GFX9-NEXT: [[V_LSHLREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec246    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B16_e64_]]247    ;248    ; GFX10-LABEL: name: shl_s16_s16_vv_zext_to_s32249    ; GFX10: liveins: $vgpr0, $vgpr1250    ; GFX10-NEXT: {{  $}}251    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0252    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1253    ; GFX10-NEXT: [[V_LSHLREV_B16_opsel_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_opsel_e64 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $exec254    ; GFX10-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 65535255    ; GFX10-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[S_MOV_B32_]], [[V_LSHLREV_B16_opsel_e64_]], implicit $exec256    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e64_]]257    ;258    ; GFX11-LABEL: name: shl_s16_s16_vv_zext_to_s32259    ; GFX11: liveins: $vgpr0, $vgpr1260    ; GFX11-NEXT: {{  $}}261    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0262    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1263    ; GFX11-NEXT: [[V_LSHLREV_B16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_fake16_e64 [[COPY1]], [[COPY]], implicit $exec264    ; GFX11-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 65535265    ; GFX11-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[S_MOV_B32_]], [[V_LSHLREV_B16_fake16_e64_]], implicit $exec266    ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e64_]]267    %0:vgpr(s32) = COPY $vgpr0268    %1:vgpr(s32) = COPY $vgpr1269    %2:vgpr(s16) = G_TRUNC %0270    %3:vgpr(s16) = G_TRUNC %1271    %4:vgpr(s16) = G_SHL %2, %3272    %5:vgpr(s32) = G_ZEXT %4273    S_ENDPGM 0, implicit %5274...275 276---277name: shl_s16_vv_zext_to_s64278legalized: true279regBankSelected: true280 281body: |282  bb.0:283    liveins: $vgpr0, $vgpr1284 285    ; GFX8-LABEL: name: shl_s16_vv_zext_to_s64286    ; GFX8: liveins: $vgpr0, $vgpr1287    ; GFX8-NEXT: {{  $}}288    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0289    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1290    ; GFX8-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec291    ; GFX8-NEXT: [[V_LSHLREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec292    ; GFX8-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_LSHLREV_B16_e64_]], %subreg.sub0, [[V_MOV_B32_e32_]], %subreg.sub1293    ; GFX8-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]294    ;295    ; GFX9-LABEL: name: shl_s16_vv_zext_to_s64296    ; GFX9: liveins: $vgpr0, $vgpr1297    ; GFX9-NEXT: {{  $}}298    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0299    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1300    ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec301    ; GFX9-NEXT: [[V_LSHLREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec302    ; GFX9-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_LSHLREV_B16_e64_]], %subreg.sub0, [[V_MOV_B32_e32_]], %subreg.sub1303    ; GFX9-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]304    ;305    ; GFX10-LABEL: name: shl_s16_vv_zext_to_s64306    ; GFX10: liveins: $vgpr0, $vgpr1307    ; GFX10-NEXT: {{  $}}308    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0309    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1310    ; GFX10-NEXT: [[V_LSHLREV_B16_opsel_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_opsel_e64 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $exec311    ; GFX10-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0312    ; GFX10-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 65535313    ; GFX10-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[S_MOV_B32_1]], [[V_LSHLREV_B16_opsel_e64_]], implicit $exec314    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]]315    ; GFX10-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[COPY2]], %subreg.sub1316    ; GFX10-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]317    ;318    ; GFX11-LABEL: name: shl_s16_vv_zext_to_s64319    ; GFX11: liveins: $vgpr0, $vgpr1320    ; GFX11-NEXT: {{  $}}321    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0322    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1323    ; GFX11-NEXT: [[V_LSHLREV_B16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_fake16_e64 [[COPY1]], [[COPY]], implicit $exec324    ; GFX11-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0325    ; GFX11-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 65535326    ; GFX11-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[S_MOV_B32_1]], [[V_LSHLREV_B16_fake16_e64_]], implicit $exec327    ; GFX11-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]]328    ; GFX11-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[COPY2]], %subreg.sub1329    ; GFX11-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]330    %0:vgpr(s32) = COPY $vgpr0331    %1:vgpr(s32) = COPY $vgpr1332    %2:vgpr(s16) = G_TRUNC %0333    %3:vgpr(s16) = G_TRUNC %1334    %4:vgpr(s16) = G_SHL %2, %3335    %5:vgpr(s64) = G_ZEXT %4336    S_ENDPGM 0, implicit %5337...338 339---340name: shl_s16_s32_ss341legalized: true342regBankSelected: true343 344body: |345  bb.0:346    liveins: $sgpr0, $sgpr1347 348    ; GFX8-LABEL: name: shl_s16_s32_ss349    ; GFX8: liveins: $sgpr0, $sgpr1350    ; GFX8-NEXT: {{  $}}351    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0352    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1353    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)354    ; GFX8-NEXT: [[SHL:%[0-9]+]]:sgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)355    ; GFX8-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)356    ;357    ; GFX9-LABEL: name: shl_s16_s32_ss358    ; GFX9: liveins: $sgpr0, $sgpr1359    ; GFX9-NEXT: {{  $}}360    ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0361    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1362    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)363    ; GFX9-NEXT: [[SHL:%[0-9]+]]:sgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)364    ; GFX9-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)365    ;366    ; GFX10-LABEL: name: shl_s16_s32_ss367    ; GFX10: liveins: $sgpr0, $sgpr1368    ; GFX10-NEXT: {{  $}}369    ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0370    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1371    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)372    ; GFX10-NEXT: [[SHL:%[0-9]+]]:sgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)373    ; GFX10-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)374    ;375    ; GFX11-LABEL: name: shl_s16_s32_ss376    ; GFX11: liveins: $sgpr0, $sgpr1377    ; GFX11-NEXT: {{  $}}378    ; GFX11-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0379    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1380    ; GFX11-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)381    ; GFX11-NEXT: [[SHL:%[0-9]+]]:sgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)382    ; GFX11-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)383    %0:sgpr(s32) = COPY $sgpr0384    %1:sgpr(s32) = COPY $sgpr1385    %2:sgpr(s16) = G_TRUNC %0386    %3:sgpr(s16) = G_SHL %2, %1387    S_ENDPGM 0, implicit %3388...389 390---391name: shl_s16_s32_sv392legalized: true393regBankSelected: true394 395body: |396  bb.0:397    liveins: $sgpr0, $vgpr0398    ; GFX8-LABEL: name: shl_s16_s32_sv399    ; GFX8: liveins: $sgpr0, $vgpr0400    ; GFX8-NEXT: {{  $}}401    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0402    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0403    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)404    ; GFX8-NEXT: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)405    ; GFX8-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)406    ;407    ; GFX9-LABEL: name: shl_s16_s32_sv408    ; GFX9: liveins: $sgpr0, $vgpr0409    ; GFX9-NEXT: {{  $}}410    ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0411    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0412    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)413    ; GFX9-NEXT: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)414    ; GFX9-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)415    ;416    ; GFX10-LABEL: name: shl_s16_s32_sv417    ; GFX10: liveins: $sgpr0, $vgpr0418    ; GFX10-NEXT: {{  $}}419    ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0420    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0421    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)422    ; GFX10-NEXT: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)423    ; GFX10-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)424    ;425    ; GFX11-LABEL: name: shl_s16_s32_sv426    ; GFX11: liveins: $sgpr0, $vgpr0427    ; GFX11-NEXT: {{  $}}428    ; GFX11-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0429    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0430    ; GFX11-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)431    ; GFX11-NEXT: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)432    ; GFX11-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)433    %0:sgpr(s32) = COPY $sgpr0434    %1:vgpr(s32) = COPY $vgpr0435    %2:sgpr(s16) = G_TRUNC %0436    %3:vgpr(s16) = G_SHL %2, %1437    S_ENDPGM 0, implicit %3438...439 440---441name: shl_s16_s16_sv442legalized: true443regBankSelected: true444 445body: |446  bb.0:447    liveins: $sgpr0, $vgpr0448    ; GFX8-LABEL: name: shl_s16_s16_sv449    ; GFX8: liveins: $sgpr0, $vgpr0450    ; GFX8-NEXT: {{  $}}451    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0452    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0453    ; GFX8-NEXT: [[V_LSHLREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec454    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B16_e64_]]455    ;456    ; GFX9-LABEL: name: shl_s16_s16_sv457    ; GFX9: liveins: $sgpr0, $vgpr0458    ; GFX9-NEXT: {{  $}}459    ; GFX9-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0460    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0461    ; GFX9-NEXT: [[V_LSHLREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec462    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B16_e64_]]463    ;464    ; GFX10-LABEL: name: shl_s16_s16_sv465    ; GFX10: liveins: $sgpr0, $vgpr0466    ; GFX10-NEXT: {{  $}}467    ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0468    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0469    ; GFX10-NEXT: [[V_LSHLREV_B16_opsel_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_opsel_e64 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $exec470    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B16_opsel_e64_]]471    ;472    ; GFX11-LABEL: name: shl_s16_s16_sv473    ; GFX11: liveins: $sgpr0, $vgpr0474    ; GFX11-NEXT: {{  $}}475    ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0476    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0477    ; GFX11-NEXT: [[V_LSHLREV_B16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B16_fake16_e64 [[COPY1]], [[COPY]], implicit $exec478    ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_LSHLREV_B16_fake16_e64_]]479    %0:sgpr(s32) = COPY $sgpr0480    %1:vgpr(s32) = COPY $vgpr0481    %2:sgpr(s16) = G_TRUNC %0482    %3:vgpr(s16) = G_TRUNC %1483    %4:vgpr(s16) = G_SHL %2, %3484    S_ENDPGM 0, implicit %4485...486 487---488name: shl_s16_s32_vs489legalized: true490regBankSelected: true491 492body: |493  bb.0:494    liveins: $sgpr0, $vgpr0495    ; GFX8-LABEL: name: shl_s16_s32_vs496    ; GFX8: liveins: $sgpr0, $vgpr0497    ; GFX8-NEXT: {{  $}}498    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0499    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0500    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)501    ; GFX8-NEXT: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)502    ; GFX8-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)503    ;504    ; GFX9-LABEL: name: shl_s16_s32_vs505    ; GFX9: liveins: $sgpr0, $vgpr0506    ; GFX9-NEXT: {{  $}}507    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0508    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0509    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)510    ; GFX9-NEXT: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)511    ; GFX9-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)512    ;513    ; GFX10-LABEL: name: shl_s16_s32_vs514    ; GFX10: liveins: $sgpr0, $vgpr0515    ; GFX10-NEXT: {{  $}}516    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0517    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0518    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)519    ; GFX10-NEXT: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)520    ; GFX10-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)521    ;522    ; GFX11-LABEL: name: shl_s16_s32_vs523    ; GFX11: liveins: $sgpr0, $vgpr0524    ; GFX11-NEXT: {{  $}}525    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0526    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0527    ; GFX11-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)528    ; GFX11-NEXT: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)529    ; GFX11-NEXT: S_ENDPGM 0, implicit [[SHL]](s16)530    %0:vgpr(s32) = COPY $vgpr0531    %1:sgpr(s32) = COPY $sgpr0532    %2:vgpr(s16) = G_TRUNC %0533    %3:vgpr(s16) = G_SHL %2, %1534    S_ENDPGM 0, implicit %3535...536