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