brintos

brintos / llvm-project-archived public Read only

0
0
Text · 22.7 KiB · 3dd3fab Raw
506 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_LSHR %2:sgpr, %3:sgpr(s16) (in function: lshr_s16_s16_ss)15# ERR-NEXT: remark: <unknown>:0:0: cannot select: %3:vgpr(s16) = G_LSHR %2:vgpr, %1:vgpr(s32) (in function: lshr_s16_s32_vv)16# ERR-NEXT: remark: <unknown>:0:0: cannot select: %3:sgpr(s16) = G_LSHR %2:sgpr, %1:sgpr(s32) (in function: lshr_s16_s32_ss)17# ERR-NEXT: remark: <unknown>:0:0: cannot select: %3:vgpr(s16) = G_LSHR %2:sgpr, %1:vgpr(s32) (in function: lshr_s16_s32_sv)18# ERR-NEXT: remark: <unknown>:0:0: cannot select: %3:vgpr(s16) = G_LSHR %2:vgpr, %1:sgpr(s32) (in function: lshr_s16_s32_vs)19# ERR-NOT: remark20 21---22name: lshr_s16_s16_ss23legalized: true24regBankSelected: true25 26body: |27  bb.0:28    liveins: $sgpr0, $sgpr129 30    ; GFX8-LABEL: name: lshr_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: [[LSHR:%[0-9]+]]:sgpr(s16) = G_LSHR [[TRUNC]], [[TRUNC1]](s16)38    ; GFX8-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)39    ; GFX9-LABEL: name: lshr_s16_s16_ss40    ; GFX9: liveins: $sgpr0, $sgpr141    ; GFX9-NEXT: {{  $}}42    ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr043    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr144    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)45    ; GFX9-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY1]](s32)46    ; GFX9-NEXT: [[LSHR:%[0-9]+]]:sgpr(s16) = G_LSHR [[TRUNC]], [[TRUNC1]](s16)47    ; GFX9-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)48    ; GFX10-LABEL: name: lshr_s16_s16_ss49    ; GFX10: liveins: $sgpr0, $sgpr150    ; GFX10-NEXT: {{  $}}51    ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr052    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr153    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)54    ; GFX10-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY1]](s32)55    ; GFX10-NEXT: [[LSHR:%[0-9]+]]:sgpr(s16) = G_LSHR [[TRUNC]], [[TRUNC1]](s16)56    ; GFX10-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)57    ; GFX11-LABEL: name: lshr_s16_s16_ss58    ; GFX11: liveins: $sgpr0, $sgpr159    ; GFX11-NEXT: {{  $}}60    ; GFX11-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr061    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr162    ; GFX11-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)63    ; GFX11-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY1]](s32)64    ; GFX11-NEXT: [[LSHR:%[0-9]+]]:sgpr(s16) = G_LSHR [[TRUNC]], [[TRUNC1]](s16)65    ; GFX11-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)66    %0:sgpr(s32) = COPY $sgpr067    %1:sgpr(s32) = COPY $sgpr168    %2:sgpr(s16) = G_TRUNC %069    %3:sgpr(s16) = G_TRUNC %170    %4:sgpr(s16) = G_LSHR %2, %371    S_ENDPGM 0, implicit %472...73 74---75name: lshr_s16_s16_vs76legalized: true77regBankSelected: true78 79body: |80  bb.0:81    liveins: $sgpr0, $vgpr082    ; GFX8-LABEL: name: lshr_s16_s16_vs83    ; GFX8: liveins: $sgpr0, $vgpr084    ; GFX8-NEXT: {{  $}}85    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr086    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr087    ; GFX8-NEXT: [[V_LSHRREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec88    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_LSHRREV_B16_e64_]]89    ; GFX9-LABEL: name: lshr_s16_s16_vs90    ; GFX9: liveins: $sgpr0, $vgpr091    ; GFX9-NEXT: {{  $}}92    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr093    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr094    ; GFX9-NEXT: [[V_LSHRREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec95    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_LSHRREV_B16_e64_]]96    ; GFX10-LABEL: name: lshr_s16_s16_vs97    ; GFX10: liveins: $sgpr0, $vgpr098    ; GFX10-NEXT: {{  $}}99    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0100    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0101    ; GFX10-NEXT: [[V_LSHRREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_opsel_e64 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $exec102    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_LSHRREV_B16_e64_]]103    ; GFX11-LABEL: name: lshr_s16_s16_vs104    ; GFX11: liveins: $sgpr0, $vgpr0105    ; GFX11-NEXT: {{  $}}106    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0107    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0108    ; GFX11-NEXT: [[V_LSHRREV_B16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_fake16_e64 [[COPY1]], [[COPY]], implicit $exec109    ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_LSHRREV_B16_fake16_e64_]]110    %0:vgpr(s32) = COPY $vgpr0111    %1:sgpr(s32) = COPY $sgpr0112    %2:vgpr(s16) = G_TRUNC %0113    %3:sgpr(s16) = G_TRUNC %1114    %4:vgpr(s16) = G_LSHR %2, %3115    S_ENDPGM 0, implicit %4116...117 118---119name: lshr_s16_s32_vv120legalized: true121regBankSelected: true122 123body: |124  bb.0:125    liveins: $vgpr0, $vgpr1126 127    ; GFX8-LABEL: name: lshr_s16_s32_vv128    ; GFX8: liveins: $vgpr0, $vgpr1129    ; GFX8-NEXT: {{  $}}130    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0131    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1132    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)133    ; GFX8-NEXT: [[LSHR:%[0-9]+]]:vgpr(s16) = G_LSHR [[TRUNC]], [[COPY1]](s32)134    ; GFX8-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)135    ; GFX9-LABEL: name: lshr_s16_s32_vv136    ; GFX9: liveins: $vgpr0, $vgpr1137    ; GFX9-NEXT: {{  $}}138    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0139    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1140    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)141    ; GFX9-NEXT: [[LSHR:%[0-9]+]]:vgpr(s16) = G_LSHR [[TRUNC]], [[COPY1]](s32)142    ; GFX9-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)143    ; GFX10-LABEL: name: lshr_s16_s32_vv144    ; GFX10: liveins: $vgpr0, $vgpr1145    ; GFX10-NEXT: {{  $}}146    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0147    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1148    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)149    ; GFX10-NEXT: [[LSHR:%[0-9]+]]:vgpr(s16) = G_LSHR [[TRUNC]], [[COPY1]](s32)150    ; GFX10-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)151    ; GFX11-LABEL: name: lshr_s16_s32_vv152    ; GFX11: liveins: $vgpr0, $vgpr1153    ; GFX11-NEXT: {{  $}}154    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0155    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1156    ; GFX11-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)157    ; GFX11-NEXT: [[LSHR:%[0-9]+]]:vgpr(s16) = G_LSHR [[TRUNC]], [[COPY1]](s32)158    ; GFX11-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)159    %0:vgpr(s32) = COPY $vgpr0160    %1:vgpr(s32) = COPY $vgpr1161    %2:vgpr(s16) = G_TRUNC %0162    %3:vgpr(s16) = G_LSHR %2, %1163    S_ENDPGM 0, implicit %3164...165 166---167name: lshr_s16_s16_vv168legalized: true169regBankSelected: true170 171body: |172  bb.0:173    liveins: $vgpr0, $vgpr1174 175    ; GFX8-LABEL: name: lshr_s16_s16_vv176    ; GFX8: liveins: $vgpr0, $vgpr1177    ; GFX8-NEXT: {{  $}}178    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0179    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1180    ; GFX8-NEXT: [[V_LSHRREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec181    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_LSHRREV_B16_e64_]]182    ; GFX9-LABEL: name: lshr_s16_s16_vv183    ; GFX9: liveins: $vgpr0, $vgpr1184    ; GFX9-NEXT: {{  $}}185    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0186    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1187    ; GFX9-NEXT: [[V_LSHRREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec188    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_LSHRREV_B16_e64_]]189    ; GFX10-LABEL: name: lshr_s16_s16_vv190    ; GFX10: liveins: $vgpr0, $vgpr1191    ; GFX10-NEXT: {{  $}}192    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0193    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1194    ; GFX10-NEXT: [[V_LSHRREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_opsel_e64 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $exec195    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_LSHRREV_B16_e64_]]196    ; GFX11-LABEL: name: lshr_s16_s16_vv197    ; GFX11: liveins: $vgpr0, $vgpr1198    ; GFX11-NEXT: {{  $}}199    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0200    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1201    ; GFX11-NEXT: [[V_LSHRREV_B16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_fake16_e64 [[COPY1]], [[COPY]], implicit $exec202    ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_LSHRREV_B16_fake16_e64_]]203    %0:vgpr(s32) = COPY $vgpr0204    %1:vgpr(s32) = COPY $vgpr1205    %2:vgpr(s16) = G_TRUNC %0206    %3:vgpr(s16) = G_TRUNC %1207    %4:vgpr(s16) = G_LSHR %2, %3208    S_ENDPGM 0, implicit %4209...210 211---212name: lshr_s16_s16_vv_zext_to_s32213legalized: true214regBankSelected: true215 216body: |217  bb.0:218    liveins: $vgpr0, $vgpr1219 220    ; GFX8-LABEL: name: lshr_s16_s16_vv_zext_to_s32221    ; GFX8: liveins: $vgpr0, $vgpr1222    ; GFX8-NEXT: {{  $}}223    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0224    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1225    ; GFX8-NEXT: [[V_LSHRREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec226    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_LSHRREV_B16_e64_]]227    ; GFX9-LABEL: name: lshr_s16_s16_vv_zext_to_s32228    ; GFX9: liveins: $vgpr0, $vgpr1229    ; GFX9-NEXT: {{  $}}230    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0231    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1232    ; GFX9-NEXT: [[V_LSHRREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec233    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_LSHRREV_B16_e64_]]234    ; GFX10-LABEL: name: lshr_s16_s16_vv_zext_to_s32235    ; GFX10: liveins: $vgpr0, $vgpr1236    ; GFX10-NEXT: {{  $}}237    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0238    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1239    ; GFX10-NEXT: [[V_LSHRREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_opsel_e64 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $exec240    ; GFX10-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 65535241    ; GFX10-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[S_MOV_B32_]], [[V_LSHRREV_B16_e64_]], implicit $exec242    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e64_]]243    ; GFX11-LABEL: name: lshr_s16_s16_vv_zext_to_s32244    ; GFX11: liveins: $vgpr0, $vgpr1245    ; GFX11-NEXT: {{  $}}246    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0247    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1248    ; GFX11-NEXT: [[V_LSHRREV_B16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_fake16_e64 [[COPY1]], [[COPY]], implicit $exec249    ; GFX11-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 65535250    ; GFX11-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[S_MOV_B32_]], [[V_LSHRREV_B16_fake16_e64_]], implicit $exec251    ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e64_]]252    %0:vgpr(s32) = COPY $vgpr0253    %1:vgpr(s32) = COPY $vgpr1254    %2:vgpr(s16) = G_TRUNC %0255    %3:vgpr(s16) = G_TRUNC %1256    %4:vgpr(s16) = G_LSHR %2, %3257    %5:vgpr(s32) = G_ZEXT %4258    S_ENDPGM 0, implicit %5259...260 261---262name: lshr_s16_vv_zext_to_s64263legalized: true264regBankSelected: true265 266body: |267  bb.0:268    liveins: $vgpr0, $vgpr1269 270    ; GFX8-LABEL: name: lshr_s16_vv_zext_to_s64271    ; GFX8: liveins: $vgpr0, $vgpr1272    ; GFX8-NEXT: {{  $}}273    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0274    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1275    ; GFX8-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec276    ; GFX8-NEXT: [[V_LSHRREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec277    ; GFX8-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_LSHRREV_B16_e64_]], %subreg.sub0, [[V_MOV_B32_e32_]], %subreg.sub1278    ; GFX8-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]279    ; GFX9-LABEL: name: lshr_s16_vv_zext_to_s64280    ; GFX9: liveins: $vgpr0, $vgpr1281    ; GFX9-NEXT: {{  $}}282    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0283    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1284    ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec285    ; GFX9-NEXT: [[V_LSHRREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec286    ; GFX9-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_LSHRREV_B16_e64_]], %subreg.sub0, [[V_MOV_B32_e32_]], %subreg.sub1287    ; GFX9-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]288    ; GFX10-LABEL: name: lshr_s16_vv_zext_to_s64289    ; GFX10: liveins: $vgpr0, $vgpr1290    ; GFX10-NEXT: {{  $}}291    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0292    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1293    ; GFX10-NEXT: [[V_LSHRREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_opsel_e64 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $exec294    ; GFX10-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0295    ; GFX10-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 65535296    ; GFX10-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[S_MOV_B32_1]], [[V_LSHRREV_B16_e64_]], implicit $exec297    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]]298    ; GFX10-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[COPY2]], %subreg.sub1299    ; GFX10-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]300    ; GFX11-LABEL: name: lshr_s16_vv_zext_to_s64301    ; GFX11: liveins: $vgpr0, $vgpr1302    ; GFX11-NEXT: {{  $}}303    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0304    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1305    ; GFX11-NEXT: [[V_LSHRREV_B16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_fake16_e64 [[COPY1]], [[COPY]], implicit $exec306    ; GFX11-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0307    ; GFX11-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 65535308    ; GFX11-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[S_MOV_B32_1]], [[V_LSHRREV_B16_fake16_e64_]], implicit $exec309    ; GFX11-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]]310    ; GFX11-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[COPY2]], %subreg.sub1311    ; GFX11-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]312    %0:vgpr(s32) = COPY $vgpr0313    %1:vgpr(s32) = COPY $vgpr1314    %2:vgpr(s16) = G_TRUNC %0315    %3:vgpr(s16) = G_TRUNC %1316    %4:vgpr(s16) = G_LSHR %2, %3317    %5:vgpr(s64) = G_ZEXT %4318    S_ENDPGM 0, implicit %5319...320 321---322name: lshr_s16_s32_ss323legalized: true324regBankSelected: true325 326body: |327  bb.0:328    liveins: $sgpr0, $sgpr1329 330    ; GFX8-LABEL: name: lshr_s16_s32_ss331    ; GFX8: liveins: $sgpr0, $sgpr1332    ; GFX8-NEXT: {{  $}}333    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0334    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1335    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)336    ; GFX8-NEXT: [[LSHR:%[0-9]+]]:sgpr(s16) = G_LSHR [[TRUNC]], [[COPY1]](s32)337    ; GFX8-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)338    ; GFX9-LABEL: name: lshr_s16_s32_ss339    ; GFX9: liveins: $sgpr0, $sgpr1340    ; GFX9-NEXT: {{  $}}341    ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0342    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1343    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)344    ; GFX9-NEXT: [[LSHR:%[0-9]+]]:sgpr(s16) = G_LSHR [[TRUNC]], [[COPY1]](s32)345    ; GFX9-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)346    ; GFX10-LABEL: name: lshr_s16_s32_ss347    ; GFX10: liveins: $sgpr0, $sgpr1348    ; GFX10-NEXT: {{  $}}349    ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0350    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1351    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)352    ; GFX10-NEXT: [[LSHR:%[0-9]+]]:sgpr(s16) = G_LSHR [[TRUNC]], [[COPY1]](s32)353    ; GFX10-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)354    ; GFX11-LABEL: name: lshr_s16_s32_ss355    ; GFX11: liveins: $sgpr0, $sgpr1356    ; GFX11-NEXT: {{  $}}357    ; GFX11-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0358    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1359    ; GFX11-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)360    ; GFX11-NEXT: [[LSHR:%[0-9]+]]:sgpr(s16) = G_LSHR [[TRUNC]], [[COPY1]](s32)361    ; GFX11-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)362    %0:sgpr(s32) = COPY $sgpr0363    %1:sgpr(s32) = COPY $sgpr1364    %2:sgpr(s16) = G_TRUNC %0365    %3:sgpr(s16) = G_LSHR %2, %1366    S_ENDPGM 0, implicit %3367...368 369---370name: lshr_s16_s32_sv371legalized: true372regBankSelected: true373 374body: |375  bb.0:376    liveins: $sgpr0, $vgpr0377    ; GFX8-LABEL: name: lshr_s16_s32_sv378    ; GFX8: liveins: $sgpr0, $vgpr0379    ; GFX8-NEXT: {{  $}}380    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0381    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0382    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)383    ; GFX8-NEXT: [[LSHR:%[0-9]+]]:vgpr(s16) = G_LSHR [[TRUNC]], [[COPY1]](s32)384    ; GFX8-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)385    ; GFX9-LABEL: name: lshr_s16_s32_sv386    ; GFX9: liveins: $sgpr0, $vgpr0387    ; GFX9-NEXT: {{  $}}388    ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0389    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0390    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)391    ; GFX9-NEXT: [[LSHR:%[0-9]+]]:vgpr(s16) = G_LSHR [[TRUNC]], [[COPY1]](s32)392    ; GFX9-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)393    ; GFX10-LABEL: name: lshr_s16_s32_sv394    ; GFX10: liveins: $sgpr0, $vgpr0395    ; GFX10-NEXT: {{  $}}396    ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0397    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0398    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)399    ; GFX10-NEXT: [[LSHR:%[0-9]+]]:vgpr(s16) = G_LSHR [[TRUNC]], [[COPY1]](s32)400    ; GFX10-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)401    ; GFX11-LABEL: name: lshr_s16_s32_sv402    ; GFX11: liveins: $sgpr0, $vgpr0403    ; GFX11-NEXT: {{  $}}404    ; GFX11-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0405    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0406    ; GFX11-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)407    ; GFX11-NEXT: [[LSHR:%[0-9]+]]:vgpr(s16) = G_LSHR [[TRUNC]], [[COPY1]](s32)408    ; GFX11-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)409    %0:sgpr(s32) = COPY $sgpr0410    %1:vgpr(s32) = COPY $vgpr0411    %2:sgpr(s16) = G_TRUNC %0412    %3:vgpr(s16) = G_LSHR %2, %1413    S_ENDPGM 0, implicit %3414...415 416---417name: lshr_s16_s16_sv418legalized: true419regBankSelected: true420 421body: |422  bb.0:423    liveins: $sgpr0, $vgpr0424    ; GFX8-LABEL: name: lshr_s16_s16_sv425    ; GFX8: liveins: $sgpr0, $vgpr0426    ; GFX8-NEXT: {{  $}}427    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0428    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0429    ; GFX8-NEXT: [[V_LSHRREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec430    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_LSHRREV_B16_e64_]]431    ; GFX9-LABEL: name: lshr_s16_s16_sv432    ; GFX9: liveins: $sgpr0, $vgpr0433    ; GFX9-NEXT: {{  $}}434    ; GFX9-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0435    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0436    ; GFX9-NEXT: [[V_LSHRREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_e64 [[COPY1]], [[COPY]], implicit $exec437    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_LSHRREV_B16_e64_]]438    ; GFX10-LABEL: name: lshr_s16_s16_sv439    ; GFX10: liveins: $sgpr0, $vgpr0440    ; GFX10-NEXT: {{  $}}441    ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0442    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0443    ; GFX10-NEXT: [[V_LSHRREV_B16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_opsel_e64 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $exec444    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_LSHRREV_B16_e64_]]445    ; GFX11-LABEL: name: lshr_s16_s16_sv446    ; GFX11: liveins: $sgpr0, $vgpr0447    ; GFX11-NEXT: {{  $}}448    ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0449    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0450    ; GFX11-NEXT: [[V_LSHRREV_B16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_fake16_e64 [[COPY1]], [[COPY]], implicit $exec451    ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_LSHRREV_B16_fake16_e64_]]452    %0:sgpr(s32) = COPY $sgpr0453    %1:vgpr(s32) = COPY $vgpr0454    %2:sgpr(s16) = G_TRUNC %0455    %3:vgpr(s16) = G_TRUNC %1456    %4:vgpr(s16) = G_LSHR %2, %3457    S_ENDPGM 0, implicit %4458...459 460---461name: lshr_s16_s32_vs462legalized: true463regBankSelected: true464 465body: |466  bb.0:467    liveins: $sgpr0, $vgpr0468    ; GFX8-LABEL: name: lshr_s16_s32_vs469    ; GFX8: liveins: $sgpr0, $vgpr0470    ; GFX8-NEXT: {{  $}}471    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0472    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0473    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)474    ; GFX8-NEXT: [[LSHR:%[0-9]+]]:vgpr(s16) = G_LSHR [[TRUNC]], [[COPY1]](s32)475    ; GFX8-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)476    ; GFX9-LABEL: name: lshr_s16_s32_vs477    ; GFX9: liveins: $sgpr0, $vgpr0478    ; GFX9-NEXT: {{  $}}479    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0480    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0481    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)482    ; GFX9-NEXT: [[LSHR:%[0-9]+]]:vgpr(s16) = G_LSHR [[TRUNC]], [[COPY1]](s32)483    ; GFX9-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)484    ; GFX10-LABEL: name: lshr_s16_s32_vs485    ; GFX10: liveins: $sgpr0, $vgpr0486    ; GFX10-NEXT: {{  $}}487    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0488    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0489    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)490    ; GFX10-NEXT: [[LSHR:%[0-9]+]]:vgpr(s16) = G_LSHR [[TRUNC]], [[COPY1]](s32)491    ; GFX10-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)492    ; GFX11-LABEL: name: lshr_s16_s32_vs493    ; GFX11: liveins: $sgpr0, $vgpr0494    ; GFX11-NEXT: {{  $}}495    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0496    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0497    ; GFX11-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)498    ; GFX11-NEXT: [[LSHR:%[0-9]+]]:vgpr(s16) = G_LSHR [[TRUNC]], [[COPY1]](s32)499    ; GFX11-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)500    %0:vgpr(s32) = COPY $vgpr0501    %1:sgpr(s32) = COPY $sgpr0502    %2:vgpr(s16) = G_TRUNC %0503    %3:vgpr(s16) = G_LSHR %2, %1504    S_ENDPGM 0, implicit %3505...506