brintos

brintos / llvm-project-archived public Read only

0
0
Text · 16.3 KiB · 5f9b71c Raw
383 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx908 -run-pass=si-fold-operands -verify-machineinstrs -o - %s | FileCheck --check-prefix=GFX908 %s3# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -run-pass=si-fold-operands -verify-machineinstrs -o - %s | FileCheck --check-prefix=GFX90A %s4 5# Should fold all copies for gfx908. In case of gfx90a, the folding must happen only for the aligned cases.6 7---8name:            aligned_vgpr_649tracksRegLiveness: true10body:             |11  bb.0:12    liveins: $vgpr0_vgpr113    ; GFX908-LABEL: name: aligned_vgpr_6414    ; GFX908: liveins: $vgpr0_vgpr115    ; GFX908-NEXT: {{  $}}16    ; GFX908-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr117    ; GFX908-NEXT: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF18    ; GFX908-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[DEF]], 0, 0, implicit $exec19    ;20    ; GFX90A-LABEL: name: aligned_vgpr_6421    ; GFX90A: liveins: $vgpr0_vgpr122    ; GFX90A-NEXT: {{  $}}23    ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr124    ; GFX90A-NEXT: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF25    ; GFX90A-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[DEF]], 0, 0, implicit $exec26    %0:vreg_64_align2 = COPY $vgpr0_vgpr127    %1:vreg_64_align2 = IMPLICIT_DEF28    %2:vreg_64_align2 = COPY killed %129    GLOBAL_STORE_DWORDX2 %0, %2, 0, 0, implicit $exec30...31 32---33name:            unaligned_vgpr_6434tracksRegLiveness: true35body:             |36  bb.0:37    liveins: $vgpr0_vgpr138    ; GFX908-LABEL: name: unaligned_vgpr_6439    ; GFX908: liveins: $vgpr0_vgpr140    ; GFX908-NEXT: {{  $}}41    ; GFX908-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr142    ; GFX908-NEXT: [[DEF:%[0-9]+]]:vreg_64 = IMPLICIT_DEF43    ; GFX908-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[DEF]], 0, 0, implicit $exec44    ;45    ; GFX90A-LABEL: name: unaligned_vgpr_6446    ; GFX90A: liveins: $vgpr0_vgpr147    ; GFX90A-NEXT: {{  $}}48    ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr149    ; GFX90A-NEXT: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF50    ; GFX90A-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[DEF]], 0, 0, implicit $exec51    %0:vreg_64_align2 = COPY $vgpr0_vgpr152    %1:vreg_64 = IMPLICIT_DEF53    %2:vreg_64_align2 = COPY killed %154    GLOBAL_STORE_DWORDX2 %0, %2, 0, 0, implicit $exec55...56 57---58name:            aligned_vgpr_96_sub0_subg159tracksRegLiveness: true60body:             |61  bb.0:62    liveins: $vgpr0_vgpr163    ; GFX908-LABEL: name: aligned_vgpr_96_sub0_subg164    ; GFX908: liveins: $vgpr0_vgpr165    ; GFX908-NEXT: {{  $}}66    ; GFX908-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr167    ; GFX908-NEXT: [[DEF:%[0-9]+]]:vreg_96_align2 = IMPLICIT_DEF68    ; GFX908-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[DEF]].sub0_sub1, 0, 0, implicit $exec69    ;70    ; GFX90A-LABEL: name: aligned_vgpr_96_sub0_subg171    ; GFX90A: liveins: $vgpr0_vgpr172    ; GFX90A-NEXT: {{  $}}73    ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr174    ; GFX90A-NEXT: [[DEF:%[0-9]+]]:vreg_96_align2 = IMPLICIT_DEF75    ; GFX90A-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[DEF]].sub0_sub1, 0, 0, implicit $exec76    %0:vreg_64_align2 = COPY $vgpr0_vgpr177    %1:vreg_96_align2 = IMPLICIT_DEF78    %2:vreg_64_align2 = COPY killed %1.sub0_sub1:vreg_96_align279    GLOBAL_STORE_DWORDX2 %0, %2, 0, 0, implicit $exec80...81 82---83name:            unaligned_vgpr_96_sub1_sub284tracksRegLiveness: true85body:             |86  bb.0:87    liveins: $vgpr0_vgpr188    ; GFX908-LABEL: name: unaligned_vgpr_96_sub1_sub289    ; GFX908: liveins: $vgpr0_vgpr190    ; GFX908-NEXT: {{  $}}91    ; GFX908-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr192    ; GFX908-NEXT: [[DEF:%[0-9]+]]:vreg_96_align2 = IMPLICIT_DEF93    ; GFX908-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[DEF]].sub1_sub2, 0, 0, implicit $exec94    ;95    ; GFX90A-LABEL: name: unaligned_vgpr_96_sub1_sub296    ; GFX90A: liveins: $vgpr0_vgpr197    ; GFX90A-NEXT: {{  $}}98    ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr199    ; GFX90A-NEXT: [[DEF:%[0-9]+]]:vreg_96_align2 = IMPLICIT_DEF100    ; GFX90A-NEXT: [[COPY1:%[0-9]+]]:vreg_64_align2 = COPY killed [[DEF]].sub1_sub2101    ; GFX90A-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec102    %0:vreg_64_align2 = COPY $vgpr0_vgpr1103    %1:vreg_96_align2 = IMPLICIT_DEF104    %2:vreg_64_align2 = COPY killed %1.sub1_sub2:vreg_96_align2105    GLOBAL_STORE_DWORDX2 %0, %2, 0, 0, implicit $exec106...107 108---109name:            aligned_vgpr_96110tracksRegLiveness: true111body:             |112  bb.0:113    liveins: $vgpr0_vgpr1114    ; GFX908-LABEL: name: aligned_vgpr_96115    ; GFX908: liveins: $vgpr0_vgpr1116    ; GFX908-NEXT: {{  $}}117    ; GFX908-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1118    ; GFX908-NEXT: [[DEF:%[0-9]+]]:vreg_96_align2 = IMPLICIT_DEF119    ; GFX908-NEXT: GLOBAL_STORE_DWORDX3 [[COPY]], [[DEF]], 0, 0, implicit $exec120    ;121    ; GFX90A-LABEL: name: aligned_vgpr_96122    ; GFX90A: liveins: $vgpr0_vgpr1123    ; GFX90A-NEXT: {{  $}}124    ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1125    ; GFX90A-NEXT: [[DEF:%[0-9]+]]:vreg_96_align2 = IMPLICIT_DEF126    ; GFX90A-NEXT: GLOBAL_STORE_DWORDX3 [[COPY]], [[DEF]], 0, 0, implicit $exec127    %0:vreg_64_align2 = COPY $vgpr0_vgpr1128    %1:vreg_96_align2 = IMPLICIT_DEF129    %2:vreg_96_align2 = COPY killed %1130    GLOBAL_STORE_DWORDX3 %0, %2, 0, 0, implicit $exec131...132 133---134name:            unaligned_vgpr_96135tracksRegLiveness: true136body:             |137  bb.0:138    liveins: $vgpr0_vgpr1139    ; GFX908-LABEL: name: unaligned_vgpr_96140    ; GFX908: liveins: $vgpr0_vgpr1141    ; GFX908-NEXT: {{  $}}142    ; GFX908-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1143    ; GFX908-NEXT: [[DEF:%[0-9]+]]:vreg_96 = IMPLICIT_DEF144    ; GFX908-NEXT: GLOBAL_STORE_DWORDX3 [[COPY]], [[DEF]], 0, 0, implicit $exec145    ;146    ; GFX90A-LABEL: name: unaligned_vgpr_96147    ; GFX90A: liveins: $vgpr0_vgpr1148    ; GFX90A-NEXT: {{  $}}149    ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1150    ; GFX90A-NEXT: [[DEF:%[0-9]+]]:vreg_96_align2 = IMPLICIT_DEF151    ; GFX90A-NEXT: GLOBAL_STORE_DWORDX3 [[COPY]], [[DEF]], 0, 0, implicit $exec152    %0:vreg_64_align2 = COPY $vgpr0_vgpr1153    %1:vreg_96 = IMPLICIT_DEF154    %2:vreg_96_align2 = COPY killed %1155    GLOBAL_STORE_DWORDX3 %0, %2, 0, 0, implicit $exec156...157 158---159name:            aligned_vgpr_128_sub0_sub1160tracksRegLiveness: true161body:             |162  bb.0:163    liveins: $vgpr0_vgpr1164    ; GFX908-LABEL: name: aligned_vgpr_128_sub0_sub1165    ; GFX908: liveins: $vgpr0_vgpr1166    ; GFX908-NEXT: {{  $}}167    ; GFX908-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1168    ; GFX908-NEXT: [[DEF:%[0-9]+]]:vreg_128_align2 = IMPLICIT_DEF169    ; GFX908-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[DEF]].sub0_sub1, 0, 0, implicit $exec170    ;171    ; GFX90A-LABEL: name: aligned_vgpr_128_sub0_sub1172    ; GFX90A: liveins: $vgpr0_vgpr1173    ; GFX90A-NEXT: {{  $}}174    ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1175    ; GFX90A-NEXT: [[DEF:%[0-9]+]]:vreg_128_align2 = IMPLICIT_DEF176    ; GFX90A-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[DEF]].sub0_sub1, 0, 0, implicit $exec177    %0:vreg_64_align2 = COPY $vgpr0_vgpr1178    %1:vreg_128_align2 = IMPLICIT_DEF179    %2:vreg_64_align2 = COPY killed %1.sub0_sub1:vreg_128_align2180    GLOBAL_STORE_DWORDX2 %0, %2, 0, 0, implicit $exec181...182 183---184name:            aligned_vgpr_128_sub2_sub3185tracksRegLiveness: true186body:             |187  bb.0:188    liveins: $vgpr0_vgpr1189    ; GFX908-LABEL: name: aligned_vgpr_128_sub2_sub3190    ; GFX908: liveins: $vgpr0_vgpr1191    ; GFX908-NEXT: {{  $}}192    ; GFX908-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1193    ; GFX908-NEXT: [[DEF:%[0-9]+]]:vreg_128_align2 = IMPLICIT_DEF194    ; GFX908-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[DEF]].sub2_sub3, 0, 0, implicit $exec195    ;196    ; GFX90A-LABEL: name: aligned_vgpr_128_sub2_sub3197    ; GFX90A: liveins: $vgpr0_vgpr1198    ; GFX90A-NEXT: {{  $}}199    ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1200    ; GFX90A-NEXT: [[DEF:%[0-9]+]]:vreg_128_align2 = IMPLICIT_DEF201    ; GFX90A-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[DEF]].sub2_sub3, 0, 0, implicit $exec202    %0:vreg_64_align2 = COPY $vgpr0_vgpr1203    %1:vreg_128_align2 = IMPLICIT_DEF204    %2:vreg_64_align2 = COPY killed %1.sub2_sub3:vreg_128_align2205    GLOBAL_STORE_DWORDX2 %0, %2, 0, 0, implicit $exec206...207 208---209name:            unaligned_vgpr_128_sub1_sub2210tracksRegLiveness: true211body:             |212  bb.0:213    liveins: $vgpr0_vgpr1214    ; GFX908-LABEL: name: unaligned_vgpr_128_sub1_sub2215    ; GFX908: liveins: $vgpr0_vgpr1216    ; GFX908-NEXT: {{  $}}217    ; GFX908-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1218    ; GFX908-NEXT: [[DEF:%[0-9]+]]:vreg_128_align2 = IMPLICIT_DEF219    ; GFX908-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[DEF]].sub1_sub2, 0, 0, implicit $exec220    ;221    ; GFX90A-LABEL: name: unaligned_vgpr_128_sub1_sub2222    ; GFX90A: liveins: $vgpr0_vgpr1223    ; GFX90A-NEXT: {{  $}}224    ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1225    ; GFX90A-NEXT: [[DEF:%[0-9]+]]:vreg_128_align2 = IMPLICIT_DEF226    ; GFX90A-NEXT: [[COPY1:%[0-9]+]]:vreg_64_align2 = COPY killed [[DEF]].sub1_sub2227    ; GFX90A-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec228    %0:vreg_64_align2 = COPY $vgpr0_vgpr1229    %1:vreg_128_align2 = IMPLICIT_DEF230    %2:vreg_64_align2 = COPY killed %1.sub1_sub2:vreg_128_align2231    GLOBAL_STORE_DWORDX2 %0, %2, 0, 0, implicit $exec232...233 234---235name:            aligned_vgpr_128_sub0_sub1_sub2236tracksRegLiveness: true237body:             |238  bb.0:239    liveins: $vgpr0_vgpr1240    ; GFX908-LABEL: name: aligned_vgpr_128_sub0_sub1_sub2241    ; GFX908: liveins: $vgpr0_vgpr1242    ; GFX908-NEXT: {{  $}}243    ; GFX908-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1244    ; GFX908-NEXT: [[DEF:%[0-9]+]]:vreg_128_align2 = IMPLICIT_DEF245    ; GFX908-NEXT: GLOBAL_STORE_DWORDX3 [[COPY]], [[DEF]].sub0_sub1_sub2, 0, 0, implicit $exec246    ;247    ; GFX90A-LABEL: name: aligned_vgpr_128_sub0_sub1_sub2248    ; GFX90A: liveins: $vgpr0_vgpr1249    ; GFX90A-NEXT: {{  $}}250    ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1251    ; GFX90A-NEXT: [[DEF:%[0-9]+]]:vreg_128_align2 = IMPLICIT_DEF252    ; GFX90A-NEXT: GLOBAL_STORE_DWORDX3 [[COPY]], [[DEF]].sub0_sub1_sub2, 0, 0, implicit $exec253    %0:vreg_64_align2 = COPY $vgpr0_vgpr1254    %1:vreg_128_align2 = IMPLICIT_DEF255    %2:vreg_96_align2 = COPY killed %1.sub0_sub1_sub2:vreg_128_align2256    GLOBAL_STORE_DWORDX3 %0, %2, 0, 0, implicit $exec257...258 259---260name:            unaligned_vgpr_128_sub1_sub2_sub3261tracksRegLiveness: true262body:             |263  bb.0:264    liveins: $vgpr0_vgpr1265    ; GFX908-LABEL: name: unaligned_vgpr_128_sub1_sub2_sub3266    ; GFX908: liveins: $vgpr0_vgpr1267    ; GFX908-NEXT: {{  $}}268    ; GFX908-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1269    ; GFX908-NEXT: [[DEF:%[0-9]+]]:vreg_128_align2 = IMPLICIT_DEF270    ; GFX908-NEXT: GLOBAL_STORE_DWORDX3 [[COPY]], [[DEF]].sub1_sub2_sub3, 0, 0, implicit $exec271    ;272    ; GFX90A-LABEL: name: unaligned_vgpr_128_sub1_sub2_sub3273    ; GFX90A: liveins: $vgpr0_vgpr1274    ; GFX90A-NEXT: {{  $}}275    ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1276    ; GFX90A-NEXT: [[DEF:%[0-9]+]]:vreg_128_align2 = IMPLICIT_DEF277    ; GFX90A-NEXT: [[COPY1:%[0-9]+]]:vreg_96_align2 = COPY killed [[DEF]].sub1_sub2_sub3278    ; GFX90A-NEXT: GLOBAL_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, implicit $exec279    %0:vreg_64_align2 = COPY $vgpr0_vgpr1280    %1:vreg_128_align2 = IMPLICIT_DEF281    %2:vreg_96_align2 = COPY killed %1.sub1_sub2_sub3:vreg_128_align2282    GLOBAL_STORE_DWORDX3 %0, %2, 0, 0, implicit $exec283...284 285---286name:            aligned_vgpr_128287tracksRegLiveness: true288body:             |289  bb.0:290    liveins: $vgpr0_vgpr1291    ; GFX908-LABEL: name: aligned_vgpr_128292    ; GFX908: liveins: $vgpr0_vgpr1293    ; GFX908-NEXT: {{  $}}294    ; GFX908-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1295    ; GFX908-NEXT: [[DEF:%[0-9]+]]:vreg_128_align2 = IMPLICIT_DEF296    ; GFX908-NEXT: GLOBAL_STORE_DWORDX4 [[COPY]], [[DEF]], 0, 0, implicit $exec297    ;298    ; GFX90A-LABEL: name: aligned_vgpr_128299    ; GFX90A: liveins: $vgpr0_vgpr1300    ; GFX90A-NEXT: {{  $}}301    ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1302    ; GFX90A-NEXT: [[DEF:%[0-9]+]]:vreg_128_align2 = IMPLICIT_DEF303    ; GFX90A-NEXT: GLOBAL_STORE_DWORDX4 [[COPY]], [[DEF]], 0, 0, implicit $exec304    %0:vreg_64_align2 = COPY $vgpr0_vgpr1305    %1:vreg_128_align2 = IMPLICIT_DEF306    %2:vreg_128_align2 = COPY killed %1307    GLOBAL_STORE_DWORDX4 %0, %2, 0, 0, implicit $exec308...309 310---311name:            unaligned_vgpr_128312tracksRegLiveness: true313body:             |314  bb.0:315    liveins: $vgpr0_vgpr1316    ; GFX908-LABEL: name: unaligned_vgpr_128317    ; GFX908: liveins: $vgpr0_vgpr1318    ; GFX908-NEXT: {{  $}}319    ; GFX908-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1320    ; GFX908-NEXT: [[DEF:%[0-9]+]]:vreg_128 = IMPLICIT_DEF321    ; GFX908-NEXT: GLOBAL_STORE_DWORDX4 [[COPY]], [[DEF]], 0, 0, implicit $exec322    ;323    ; GFX90A-LABEL: name: unaligned_vgpr_128324    ; GFX90A: liveins: $vgpr0_vgpr1325    ; GFX90A-NEXT: {{  $}}326    ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1327    ; GFX90A-NEXT: [[DEF:%[0-9]+]]:vreg_128_align2 = IMPLICIT_DEF328    ; GFX90A-NEXT: GLOBAL_STORE_DWORDX4 [[COPY]], [[DEF]], 0, 0, implicit $exec329    %0:vreg_64_align2 = COPY $vgpr0_vgpr1330    %1:vreg_128 = IMPLICIT_DEF331    %2:vreg_128_align2 = COPY killed %1332    GLOBAL_STORE_DWORDX4 %0, %2, 0, 0, implicit $exec333...334 335# Make sure the alignment requirement is respected for VS_64 operand336# uses.337---338name:            aligned_vgpr_vs_64_constraint339tracksRegLiveness: true340isSSA:           true341body:             |342  bb.0.entry:343    liveins: $vgpr0, $sgpr8_sgpr9344 345    ; GFX908-LABEL: name: aligned_vgpr_vs_64_constraint346    ; GFX908: liveins: $vgpr0, $sgpr8_sgpr9347    ; GFX908-NEXT: {{  $}}348    ; GFX908-NEXT: [[COPY:%[0-9]+]]:sgpr_64 = COPY $sgpr8_sgpr9349    ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0350    ; GFX908-NEXT: [[GLOBAL_LOAD_DWORDX3_SADDR:%[0-9]+]]:vreg_96_align2 = GLOBAL_LOAD_DWORDX3_SADDR [[COPY]], [[COPY1]], 16, 0, implicit $exec :: (load (s96), align 4, addrspace 1)351    ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[GLOBAL_LOAD_DWORDX3_SADDR]].sub0352    ; GFX908-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec353    ; GFX908-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64_align2 = REG_SEQUENCE [[COPY2]], %subreg.sub0, [[V_MOV_B32_e32_]], %subreg.sub1354    ; GFX908-NEXT: [[V_PK_ADD_F32_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_PK_ADD_F32 8, killed [[REG_SEQUENCE]], 0, [[GLOBAL_LOAD_DWORDX3_SADDR]].sub1_sub2, 0, 0, 0, 0, 0, implicit $mode, implicit $exec355    ; GFX908-NEXT: DS_WRITE_B64_gfx9 [[V_MOV_B32_e32_]], killed [[V_PK_ADD_F32_]], 0, 0, implicit $exec :: (store (s64), addrspace 3)356    ; GFX908-NEXT: S_ENDPGM 0357    ;358    ; GFX90A-LABEL: name: aligned_vgpr_vs_64_constraint359    ; GFX90A: liveins: $vgpr0, $sgpr8_sgpr9360    ; GFX90A-NEXT: {{  $}}361    ; GFX90A-NEXT: [[COPY:%[0-9]+]]:sgpr_64 = COPY $sgpr8_sgpr9362    ; GFX90A-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0363    ; GFX90A-NEXT: [[GLOBAL_LOAD_DWORDX3_SADDR:%[0-9]+]]:vreg_96_align2 = GLOBAL_LOAD_DWORDX3_SADDR [[COPY]], [[COPY1]], 16, 0, implicit $exec :: (load (s96), align 4, addrspace 1)364    ; GFX90A-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[GLOBAL_LOAD_DWORDX3_SADDR]].sub0365    ; GFX90A-NEXT: [[COPY3:%[0-9]+]]:vreg_64_align2 = COPY killed [[GLOBAL_LOAD_DWORDX3_SADDR]].sub1_sub2366    ; GFX90A-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec367    ; GFX90A-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64_align2 = REG_SEQUENCE [[COPY2]], %subreg.sub0, [[V_MOV_B32_e32_]], %subreg.sub1368    ; GFX90A-NEXT: [[V_PK_ADD_F32_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_PK_ADD_F32 8, killed [[REG_SEQUENCE]], 0, killed [[COPY3]], 0, 0, 0, 0, 0, implicit $mode, implicit $exec369    ; GFX90A-NEXT: DS_WRITE_B64_gfx9 [[V_MOV_B32_e32_]], killed [[V_PK_ADD_F32_]], 0, 0, implicit $exec :: (store (s64), addrspace 3)370    ; GFX90A-NEXT: S_ENDPGM 0371    %0:sgpr_64 = COPY $sgpr8_sgpr9372    %1:vgpr_32 = COPY $vgpr0373    %2:vreg_96_align2 = GLOBAL_LOAD_DWORDX3_SADDR %0, %1, 16, 0, implicit $exec :: (load (s96), align 4, addrspace 1)374    %3:vgpr_32 = COPY %2.sub0375    %4:vreg_64_align2 = COPY killed %2.sub1_sub2376    %5:vgpr_32 = V_MOV_B32_e32 0, implicit $exec377    %6:vreg_64_align2 = REG_SEQUENCE %3, %subreg.sub0, %5, %subreg.sub1378    %7:vreg_64_align2 = nofpexcept V_PK_ADD_F32 8, killed %6, 0, killed %4, 0, 0, 0, 0, 0, implicit $mode, implicit $exec379    DS_WRITE_B64_gfx9 %5, killed %7, 0, 0, implicit $exec :: (store (s64), addrspace 3)380    S_ENDPGM 0381 382...383