brintos

brintos / llvm-project-archived public Read only

0
0
Text · 22.7 KiB · f30b7c3 Raw
508 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: FileCheck --check-prefix=ERR %s < %t11 12# 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 %s13# RUN: FileCheck --check-prefix=ERR %s < %t14 15# ERR-NOT: remark16# ERR: remark: <unknown>:0:0: cannot select: %4:sgpr(s16) = G_ASHR %2:sgpr, %3:sgpr(s16) (in function: ashr_s16_s16_ss)17# ERR-NEXT: remark: <unknown>:0:0: cannot select: %3:vgpr(s16) = G_ASHR %2:vgpr, %1:vgpr(s32) (in function: ashr_s16_s32_vv)18# ERR-NEXT: remark: <unknown>:0:0: cannot select: %3:sgpr(s16) = G_ASHR %2:sgpr, %1:sgpr(s32) (in function: ashr_s16_s32_ss)19# ERR-NEXT: remark: <unknown>:0:0: cannot select: %3:vgpr(s16) = G_ASHR %2:sgpr, %1:vgpr(s32) (in function: ashr_s16_s32_sv)20# ERR-NEXT: remark: <unknown>:0:0: cannot select: %3:vgpr(s16) = G_ASHR %2:vgpr, %1:sgpr(s32) (in function: ashr_s16_s32_vs)21# ERR-NOT: remark22 23---24name: ashr_s16_s16_ss25legalized: true26regBankSelected: true27 28body: |29  bb.0:30    liveins: $sgpr0, $sgpr131 32    ; GFX8-LABEL: name: ashr_s16_s16_ss33    ; GFX8: liveins: $sgpr0, $sgpr134    ; GFX8-NEXT: {{  $}}35    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr036    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr137    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)38    ; GFX8-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY1]](s32)39    ; GFX8-NEXT: [[ASHR:%[0-9]+]]:sgpr(s16) = G_ASHR [[TRUNC]], [[TRUNC1]](s16)40    ; GFX8-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)41    ; GFX9-LABEL: name: ashr_s16_s16_ss42    ; GFX9: liveins: $sgpr0, $sgpr143    ; GFX9-NEXT: {{  $}}44    ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr045    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr146    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)47    ; GFX9-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY1]](s32)48    ; GFX9-NEXT: [[ASHR:%[0-9]+]]:sgpr(s16) = G_ASHR [[TRUNC]], [[TRUNC1]](s16)49    ; GFX9-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)50    ; GFX10-LABEL: name: ashr_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: [[ASHR:%[0-9]+]]:sgpr(s16) = G_ASHR [[TRUNC]], [[TRUNC1]](s16)58    ; GFX10-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)59    ; GFX11-LABEL: name: ashr_s16_s16_ss60    ; GFX11: liveins: $sgpr0, $sgpr161    ; GFX11-NEXT: {{  $}}62    ; GFX11-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr063    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr164    ; GFX11-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)65    ; GFX11-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY1]](s32)66    ; GFX11-NEXT: [[ASHR:%[0-9]+]]:sgpr(s16) = G_ASHR [[TRUNC]], [[TRUNC1]](s16)67    ; GFX11-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)68    %0:sgpr(s32) = COPY $sgpr069    %1:sgpr(s32) = COPY $sgpr170    %2:sgpr(s16) = G_TRUNC %071    %3:sgpr(s16) = G_TRUNC %172    %4:sgpr(s16) = G_ASHR %2, %373    S_ENDPGM 0, implicit %474...75 76---77name: ashr_s16_s16_vs78legalized: true79regBankSelected: true80 81body: |82  bb.0:83    liveins: $sgpr0, $vgpr084    ; GFX8-LABEL: name: ashr_s16_s16_vs85    ; GFX8: liveins: $sgpr0, $vgpr086    ; GFX8-NEXT: {{  $}}87    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr088    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr089    ; GFX8-NEXT: [[V_ASHRREV_I16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_e64 [[COPY1]], [[COPY]], implicit $exec90    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_ASHRREV_I16_e64_]]91    ; GFX9-LABEL: name: ashr_s16_s16_vs92    ; GFX9: liveins: $sgpr0, $vgpr093    ; GFX9-NEXT: {{  $}}94    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr095    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr096    ; GFX9-NEXT: [[V_ASHRREV_I16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_e64 [[COPY1]], [[COPY]], implicit $exec97    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_ASHRREV_I16_e64_]]98    ; GFX10-LABEL: name: ashr_s16_s16_vs99    ; GFX10: liveins: $sgpr0, $vgpr0100    ; GFX10-NEXT: {{  $}}101    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0102    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0103    ; GFX10-NEXT: [[V_ASHRREV_I16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_opsel_e64 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $exec104    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_ASHRREV_I16_e64_]]105    ; GFX11-LABEL: name: ashr_s16_s16_vs106    ; GFX11: liveins: $sgpr0, $vgpr0107    ; GFX11-NEXT: {{  $}}108    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0109    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0110    ; GFX11-NEXT: [[V_ASHRREV_I16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_fake16_e64 [[COPY1]], [[COPY]], implicit $exec111    ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_ASHRREV_I16_fake16_e64_]]112    %0:vgpr(s32) = COPY $vgpr0113    %1:sgpr(s32) = COPY $sgpr0114    %2:vgpr(s16) = G_TRUNC %0115    %3:sgpr(s16) = G_TRUNC %1116    %4:vgpr(s16) = G_ASHR %2, %3117    S_ENDPGM 0, implicit %4118...119 120---121name: ashr_s16_s32_vv122legalized: true123regBankSelected: true124 125body: |126  bb.0:127    liveins: $vgpr0, $vgpr1128 129    ; GFX8-LABEL: name: ashr_s16_s32_vv130    ; GFX8: liveins: $vgpr0, $vgpr1131    ; GFX8-NEXT: {{  $}}132    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0133    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1134    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)135    ; GFX8-NEXT: [[ASHR:%[0-9]+]]:vgpr(s16) = G_ASHR [[TRUNC]], [[COPY1]](s32)136    ; GFX8-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)137    ; GFX9-LABEL: name: ashr_s16_s32_vv138    ; GFX9: liveins: $vgpr0, $vgpr1139    ; GFX9-NEXT: {{  $}}140    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0141    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1142    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)143    ; GFX9-NEXT: [[ASHR:%[0-9]+]]:vgpr(s16) = G_ASHR [[TRUNC]], [[COPY1]](s32)144    ; GFX9-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)145    ; GFX10-LABEL: name: ashr_s16_s32_vv146    ; GFX10: liveins: $vgpr0, $vgpr1147    ; GFX10-NEXT: {{  $}}148    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0149    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1150    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)151    ; GFX10-NEXT: [[ASHR:%[0-9]+]]:vgpr(s16) = G_ASHR [[TRUNC]], [[COPY1]](s32)152    ; GFX10-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)153    ; GFX11-LABEL: name: ashr_s16_s32_vv154    ; GFX11: liveins: $vgpr0, $vgpr1155    ; GFX11-NEXT: {{  $}}156    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0157    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1158    ; GFX11-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)159    ; GFX11-NEXT: [[ASHR:%[0-9]+]]:vgpr(s16) = G_ASHR [[TRUNC]], [[COPY1]](s32)160    ; GFX11-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)161    %0:vgpr(s32) = COPY $vgpr0162    %1:vgpr(s32) = COPY $vgpr1163    %2:vgpr(s16) = G_TRUNC %0164    %3:vgpr(s16) = G_ASHR %2, %1165    S_ENDPGM 0, implicit %3166...167 168---169name: ashr_s16_s16_vv170legalized: true171regBankSelected: true172 173body: |174  bb.0:175    liveins: $vgpr0, $vgpr1176 177    ; GFX8-LABEL: name: ashr_s16_s16_vv178    ; GFX8: liveins: $vgpr0, $vgpr1179    ; GFX8-NEXT: {{  $}}180    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0181    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1182    ; GFX8-NEXT: [[V_ASHRREV_I16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_e64 [[COPY1]], [[COPY]], implicit $exec183    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_ASHRREV_I16_e64_]]184    ; GFX9-LABEL: name: ashr_s16_s16_vv185    ; GFX9: liveins: $vgpr0, $vgpr1186    ; GFX9-NEXT: {{  $}}187    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0188    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1189    ; GFX9-NEXT: [[V_ASHRREV_I16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_e64 [[COPY1]], [[COPY]], implicit $exec190    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_ASHRREV_I16_e64_]]191    ; GFX10-LABEL: name: ashr_s16_s16_vv192    ; GFX10: liveins: $vgpr0, $vgpr1193    ; GFX10-NEXT: {{  $}}194    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0195    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1196    ; GFX10-NEXT: [[V_ASHRREV_I16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_opsel_e64 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $exec197    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_ASHRREV_I16_e64_]]198    ; GFX11-LABEL: name: ashr_s16_s16_vv199    ; GFX11: liveins: $vgpr0, $vgpr1200    ; GFX11-NEXT: {{  $}}201    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0202    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1203    ; GFX11-NEXT: [[V_ASHRREV_I16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_fake16_e64 [[COPY1]], [[COPY]], implicit $exec204    ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_ASHRREV_I16_fake16_e64_]]205    %0:vgpr(s32) = COPY $vgpr0206    %1:vgpr(s32) = COPY $vgpr1207    %2:vgpr(s16) = G_TRUNC %0208    %3:vgpr(s16) = G_TRUNC %1209    %4:vgpr(s16) = G_ASHR %2, %3210    S_ENDPGM 0, implicit %4211...212 213---214name: ashr_s16_s16_vv_zext_to_s32215legalized: true216regBankSelected: true217 218body: |219  bb.0:220    liveins: $vgpr0, $vgpr1221 222    ; GFX8-LABEL: name: ashr_s16_s16_vv_zext_to_s32223    ; GFX8: liveins: $vgpr0, $vgpr1224    ; GFX8-NEXT: {{  $}}225    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0226    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1227    ; GFX8-NEXT: [[V_ASHRREV_I16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_e64 [[COPY1]], [[COPY]], implicit $exec228    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_ASHRREV_I16_e64_]]229    ; GFX9-LABEL: name: ashr_s16_s16_vv_zext_to_s32230    ; GFX9: liveins: $vgpr0, $vgpr1231    ; GFX9-NEXT: {{  $}}232    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0233    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1234    ; GFX9-NEXT: [[V_ASHRREV_I16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_e64 [[COPY1]], [[COPY]], implicit $exec235    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_ASHRREV_I16_e64_]]236    ; GFX10-LABEL: name: ashr_s16_s16_vv_zext_to_s32237    ; GFX10: liveins: $vgpr0, $vgpr1238    ; GFX10-NEXT: {{  $}}239    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0240    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1241    ; GFX10-NEXT: [[V_ASHRREV_I16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_opsel_e64 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $exec242    ; GFX10-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 65535243    ; GFX10-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[S_MOV_B32_]], [[V_ASHRREV_I16_e64_]], implicit $exec244    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e64_]]245    ; GFX11-LABEL: name: ashr_s16_s16_vv_zext_to_s32246    ; GFX11: liveins: $vgpr0, $vgpr1247    ; GFX11-NEXT: {{  $}}248    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0249    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1250    ; GFX11-NEXT: [[V_ASHRREV_I16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_fake16_e64 [[COPY1]], [[COPY]], implicit $exec251    ; GFX11-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 65535252    ; GFX11-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[S_MOV_B32_]], [[V_ASHRREV_I16_fake16_e64_]], implicit $exec253    ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e64_]]254    %0:vgpr(s32) = COPY $vgpr0255    %1:vgpr(s32) = COPY $vgpr1256    %2:vgpr(s16) = G_TRUNC %0257    %3:vgpr(s16) = G_TRUNC %1258    %4:vgpr(s16) = G_ASHR %2, %3259    %5:vgpr(s32) = G_ZEXT %4260    S_ENDPGM 0, implicit %5261...262 263---264name: ashr_s16_vv_zext_to_s64265legalized: true266regBankSelected: true267 268body: |269  bb.0:270    liveins: $vgpr0, $vgpr1271 272    ; GFX8-LABEL: name: ashr_s16_vv_zext_to_s64273    ; GFX8: liveins: $vgpr0, $vgpr1274    ; GFX8-NEXT: {{  $}}275    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0276    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1277    ; GFX8-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec278    ; GFX8-NEXT: [[V_ASHRREV_I16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_e64 [[COPY1]], [[COPY]], implicit $exec279    ; GFX8-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ASHRREV_I16_e64_]], %subreg.sub0, [[V_MOV_B32_e32_]], %subreg.sub1280    ; GFX8-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]281    ; GFX9-LABEL: name: ashr_s16_vv_zext_to_s64282    ; GFX9: liveins: $vgpr0, $vgpr1283    ; GFX9-NEXT: {{  $}}284    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0285    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1286    ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec287    ; GFX9-NEXT: [[V_ASHRREV_I16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_e64 [[COPY1]], [[COPY]], implicit $exec288    ; GFX9-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ASHRREV_I16_e64_]], %subreg.sub0, [[V_MOV_B32_e32_]], %subreg.sub1289    ; GFX9-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]290    ; GFX10-LABEL: name: ashr_s16_vv_zext_to_s64291    ; GFX10: liveins: $vgpr0, $vgpr1292    ; GFX10-NEXT: {{  $}}293    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0294    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1295    ; GFX10-NEXT: [[V_ASHRREV_I16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_opsel_e64 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $exec296    ; GFX10-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0297    ; GFX10-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 65535298    ; GFX10-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[S_MOV_B32_1]], [[V_ASHRREV_I16_e64_]], implicit $exec299    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]]300    ; GFX10-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[COPY2]], %subreg.sub1301    ; GFX10-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]302    ; GFX11-LABEL: name: ashr_s16_vv_zext_to_s64303    ; GFX11: liveins: $vgpr0, $vgpr1304    ; GFX11-NEXT: {{  $}}305    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0306    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1307    ; GFX11-NEXT: [[V_ASHRREV_I16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_fake16_e64 [[COPY1]], [[COPY]], implicit $exec308    ; GFX11-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0309    ; GFX11-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 65535310    ; GFX11-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[S_MOV_B32_1]], [[V_ASHRREV_I16_fake16_e64_]], implicit $exec311    ; GFX11-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]]312    ; GFX11-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[COPY2]], %subreg.sub1313    ; GFX11-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]314    %0:vgpr(s32) = COPY $vgpr0315    %1:vgpr(s32) = COPY $vgpr1316    %2:vgpr(s16) = G_TRUNC %0317    %3:vgpr(s16) = G_TRUNC %1318    %4:vgpr(s16) = G_ASHR %2, %3319    %5:vgpr(s64) = G_ZEXT %4320    S_ENDPGM 0, implicit %5321...322 323---324name: ashr_s16_s32_ss325legalized: true326regBankSelected: true327 328body: |329  bb.0:330    liveins: $sgpr0, $sgpr1331 332    ; GFX8-LABEL: name: ashr_s16_s32_ss333    ; GFX8: liveins: $sgpr0, $sgpr1334    ; GFX8-NEXT: {{  $}}335    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0336    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1337    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)338    ; GFX8-NEXT: [[ASHR:%[0-9]+]]:sgpr(s16) = G_ASHR [[TRUNC]], [[COPY1]](s32)339    ; GFX8-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)340    ; GFX9-LABEL: name: ashr_s16_s32_ss341    ; GFX9: liveins: $sgpr0, $sgpr1342    ; GFX9-NEXT: {{  $}}343    ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0344    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1345    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)346    ; GFX9-NEXT: [[ASHR:%[0-9]+]]:sgpr(s16) = G_ASHR [[TRUNC]], [[COPY1]](s32)347    ; GFX9-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)348    ; GFX10-LABEL: name: ashr_s16_s32_ss349    ; GFX10: liveins: $sgpr0, $sgpr1350    ; GFX10-NEXT: {{  $}}351    ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0352    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1353    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)354    ; GFX10-NEXT: [[ASHR:%[0-9]+]]:sgpr(s16) = G_ASHR [[TRUNC]], [[COPY1]](s32)355    ; GFX10-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)356    ; GFX11-LABEL: name: ashr_s16_s32_ss357    ; GFX11: liveins: $sgpr0, $sgpr1358    ; GFX11-NEXT: {{  $}}359    ; GFX11-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0360    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1361    ; GFX11-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)362    ; GFX11-NEXT: [[ASHR:%[0-9]+]]:sgpr(s16) = G_ASHR [[TRUNC]], [[COPY1]](s32)363    ; GFX11-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)364    %0:sgpr(s32) = COPY $sgpr0365    %1:sgpr(s32) = COPY $sgpr1366    %2:sgpr(s16) = G_TRUNC %0367    %3:sgpr(s16) = G_ASHR %2, %1368    S_ENDPGM 0, implicit %3369...370 371---372name: ashr_s16_s32_sv373legalized: true374regBankSelected: true375 376body: |377  bb.0:378    liveins: $sgpr0, $vgpr0379    ; GFX8-LABEL: name: ashr_s16_s32_sv380    ; GFX8: liveins: $sgpr0, $vgpr0381    ; GFX8-NEXT: {{  $}}382    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0383    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0384    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)385    ; GFX8-NEXT: [[ASHR:%[0-9]+]]:vgpr(s16) = G_ASHR [[TRUNC]], [[COPY1]](s32)386    ; GFX8-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)387    ; GFX9-LABEL: name: ashr_s16_s32_sv388    ; GFX9: liveins: $sgpr0, $vgpr0389    ; GFX9-NEXT: {{  $}}390    ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0391    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0392    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)393    ; GFX9-NEXT: [[ASHR:%[0-9]+]]:vgpr(s16) = G_ASHR [[TRUNC]], [[COPY1]](s32)394    ; GFX9-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)395    ; GFX10-LABEL: name: ashr_s16_s32_sv396    ; GFX10: liveins: $sgpr0, $vgpr0397    ; GFX10-NEXT: {{  $}}398    ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0399    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0400    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)401    ; GFX10-NEXT: [[ASHR:%[0-9]+]]:vgpr(s16) = G_ASHR [[TRUNC]], [[COPY1]](s32)402    ; GFX10-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)403    ; GFX11-LABEL: name: ashr_s16_s32_sv404    ; GFX11: liveins: $sgpr0, $vgpr0405    ; GFX11-NEXT: {{  $}}406    ; GFX11-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0407    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0408    ; GFX11-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)409    ; GFX11-NEXT: [[ASHR:%[0-9]+]]:vgpr(s16) = G_ASHR [[TRUNC]], [[COPY1]](s32)410    ; GFX11-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)411    %0:sgpr(s32) = COPY $sgpr0412    %1:vgpr(s32) = COPY $vgpr0413    %2:sgpr(s16) = G_TRUNC %0414    %3:vgpr(s16) = G_ASHR %2, %1415    S_ENDPGM 0, implicit %3416...417 418---419name: ashr_s16_s16_sv420legalized: true421regBankSelected: true422 423body: |424  bb.0:425    liveins: $sgpr0, $vgpr0426    ; GFX8-LABEL: name: ashr_s16_s16_sv427    ; GFX8: liveins: $sgpr0, $vgpr0428    ; GFX8-NEXT: {{  $}}429    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0430    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0431    ; GFX8-NEXT: [[V_ASHRREV_I16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_e64 [[COPY1]], [[COPY]], implicit $exec432    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_ASHRREV_I16_e64_]]433    ; GFX9-LABEL: name: ashr_s16_s16_sv434    ; GFX9: liveins: $sgpr0, $vgpr0435    ; GFX9-NEXT: {{  $}}436    ; GFX9-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0437    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0438    ; GFX9-NEXT: [[V_ASHRREV_I16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_e64 [[COPY1]], [[COPY]], implicit $exec439    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_ASHRREV_I16_e64_]]440    ; GFX10-LABEL: name: ashr_s16_s16_sv441    ; GFX10: liveins: $sgpr0, $vgpr0442    ; GFX10-NEXT: {{  $}}443    ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0444    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0445    ; GFX10-NEXT: [[V_ASHRREV_I16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_opsel_e64 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $exec446    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_ASHRREV_I16_e64_]]447    ; GFX11-LABEL: name: ashr_s16_s16_sv448    ; GFX11: liveins: $sgpr0, $vgpr0449    ; GFX11-NEXT: {{  $}}450    ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0451    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0452    ; GFX11-NEXT: [[V_ASHRREV_I16_fake16_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I16_fake16_e64 [[COPY1]], [[COPY]], implicit $exec453    ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_ASHRREV_I16_fake16_e64_]]454    %0:sgpr(s32) = COPY $sgpr0455    %1:vgpr(s32) = COPY $vgpr0456    %2:sgpr(s16) = G_TRUNC %0457    %3:vgpr(s16) = G_TRUNC %1458    %4:vgpr(s16) = G_ASHR %2, %3459    S_ENDPGM 0, implicit %4460...461 462---463name: ashr_s16_s32_vs464legalized: true465regBankSelected: true466 467body: |468  bb.0:469    liveins: $sgpr0, $vgpr0470    ; GFX8-LABEL: name: ashr_s16_s32_vs471    ; GFX8: liveins: $sgpr0, $vgpr0472    ; GFX8-NEXT: {{  $}}473    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0474    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0475    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)476    ; GFX8-NEXT: [[ASHR:%[0-9]+]]:vgpr(s16) = G_ASHR [[TRUNC]], [[COPY1]](s32)477    ; GFX8-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)478    ; GFX9-LABEL: name: ashr_s16_s32_vs479    ; GFX9: liveins: $sgpr0, $vgpr0480    ; GFX9-NEXT: {{  $}}481    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0482    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0483    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)484    ; GFX9-NEXT: [[ASHR:%[0-9]+]]:vgpr(s16) = G_ASHR [[TRUNC]], [[COPY1]](s32)485    ; GFX9-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)486    ; GFX10-LABEL: name: ashr_s16_s32_vs487    ; GFX10: liveins: $sgpr0, $vgpr0488    ; GFX10-NEXT: {{  $}}489    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0490    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0491    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)492    ; GFX10-NEXT: [[ASHR:%[0-9]+]]:vgpr(s16) = G_ASHR [[TRUNC]], [[COPY1]](s32)493    ; GFX10-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)494    ; GFX11-LABEL: name: ashr_s16_s32_vs495    ; GFX11: liveins: $sgpr0, $vgpr0496    ; GFX11-NEXT: {{  $}}497    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0498    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0499    ; GFX11-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)500    ; GFX11-NEXT: [[ASHR:%[0-9]+]]:vgpr(s16) = G_ASHR [[TRUNC]], [[COPY1]](s32)501    ; GFX11-NEXT: S_ENDPGM 0, implicit [[ASHR]](s16)502    %0:vgpr(s32) = COPY $vgpr0503    %1:sgpr(s32) = COPY $sgpr0504    %2:vgpr(s16) = G_TRUNC %0505    %3:vgpr(s16) = G_ASHR %2, %1506    S_ENDPGM 0, implicit %3507...508