brintos

brintos / llvm-project-archived public Read only

0
0
Text · 35.2 KiB · 1b7c0fc Raw
821 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs  -global-isel-abort=0 -disable-gisel-legality-check -o - %s | FileCheck -check-prefix=GFX6 %s3# RUN: llc -mtriple=amdgcn -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs  -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX7 %s4# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs  -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX7 %s5# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s6# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr=+cumode -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX10 %s7# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s8 9---10 11name: store_local_s32_to_412legalized:       true13regBankSelected: true14tracksRegLiveness: true15machineFunctionInfo:16  scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr317  stackPtrOffsetReg: $sgpr3218 19body: |20  bb.0:21    liveins: $vgpr0, $vgpr122 23    ; GFX6-LABEL: name: store_local_s32_to_424    ; GFX6: liveins: $vgpr0, $vgpr125    ; GFX6-NEXT: {{  $}}26    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr027    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr128    ; GFX6-NEXT: $m0 = S_MOV_B32 -129    ; GFX6-NEXT: DS_WRITE_B32 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store (s32), addrspace 3)30    ; GFX7-LABEL: name: store_local_s32_to_431    ; GFX7: liveins: $vgpr0, $vgpr132    ; GFX7-NEXT: {{  $}}33    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr034    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr135    ; GFX7-NEXT: $m0 = S_MOV_B32 -136    ; GFX7-NEXT: DS_WRITE_B32 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store (s32), addrspace 3)37    ; GFX9-LABEL: name: store_local_s32_to_438    ; GFX9: liveins: $vgpr0, $vgpr139    ; GFX9-NEXT: {{  $}}40    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr041    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr142    ; GFX9-NEXT: DS_WRITE_B32_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store (s32), addrspace 3)43    ; GFX10-LABEL: name: store_local_s32_to_444    ; GFX10: liveins: $vgpr0, $vgpr145    ; GFX10-NEXT: {{  $}}46    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr047    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr148    ; GFX10-NEXT: DS_WRITE_B32_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store (s32), addrspace 3)49    %0:vgpr(s32) = COPY $vgpr050    %1:vgpr(p3) = COPY $vgpr151    G_STORE %0, %1 :: (store (s32), align 4, addrspace 3)52 53...54 55---56 57name: store_local_s32_to_258legalized:       true59regBankSelected: true60tracksRegLiveness: true61machineFunctionInfo:62  scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr363  stackPtrOffsetReg: $sgpr3264 65body: |66  bb.0:67    liveins: $vgpr0, $vgpr168 69    ; GFX6-LABEL: name: store_local_s32_to_270    ; GFX6: liveins: $vgpr0, $vgpr171    ; GFX6-NEXT: {{  $}}72    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr073    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr174    ; GFX6-NEXT: $m0 = S_MOV_B32 -175    ; GFX6-NEXT: DS_WRITE_B16 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store (s16), addrspace 3)76    ; GFX7-LABEL: name: store_local_s32_to_277    ; GFX7: liveins: $vgpr0, $vgpr178    ; GFX7-NEXT: {{  $}}79    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr080    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr181    ; GFX7-NEXT: $m0 = S_MOV_B32 -182    ; GFX7-NEXT: DS_WRITE_B16 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store (s16), addrspace 3)83    ; GFX9-LABEL: name: store_local_s32_to_284    ; GFX9: liveins: $vgpr0, $vgpr185    ; GFX9-NEXT: {{  $}}86    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr087    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr188    ; GFX9-NEXT: DS_WRITE_B16_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store (s16), addrspace 3)89    ; GFX10-LABEL: name: store_local_s32_to_290    ; GFX10: liveins: $vgpr0, $vgpr191    ; GFX10-NEXT: {{  $}}92    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr093    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr194    ; GFX10-NEXT: DS_WRITE_B16_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store (s16), addrspace 3)95    %0:vgpr(s32) = COPY $vgpr096    %1:vgpr(p3) = COPY $vgpr197    G_STORE %0, %1 :: (store (s16), align 2, addrspace 3)98 99...100 101---102 103name: store_local_s32_to_1104legalized:       true105regBankSelected: true106tracksRegLiveness: true107machineFunctionInfo:108  scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3109  stackPtrOffsetReg: $sgpr32110 111body: |112  bb.0:113    liveins: $vgpr0, $vgpr1114 115    ; GFX6-LABEL: name: store_local_s32_to_1116    ; GFX6: liveins: $vgpr0, $vgpr1117    ; GFX6-NEXT: {{  $}}118    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0119    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1120    ; GFX6-NEXT: $m0 = S_MOV_B32 -1121    ; GFX6-NEXT: DS_WRITE_B8 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store (s8), addrspace 3)122    ; GFX7-LABEL: name: store_local_s32_to_1123    ; GFX7: liveins: $vgpr0, $vgpr1124    ; GFX7-NEXT: {{  $}}125    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0126    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1127    ; GFX7-NEXT: $m0 = S_MOV_B32 -1128    ; GFX7-NEXT: DS_WRITE_B8 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store (s8), addrspace 3)129    ; GFX9-LABEL: name: store_local_s32_to_1130    ; GFX9: liveins: $vgpr0, $vgpr1131    ; GFX9-NEXT: {{  $}}132    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0133    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1134    ; GFX9-NEXT: DS_WRITE_B8_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store (s8), addrspace 3)135    ; GFX10-LABEL: name: store_local_s32_to_1136    ; GFX10: liveins: $vgpr0, $vgpr1137    ; GFX10-NEXT: {{  $}}138    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0139    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1140    ; GFX10-NEXT: DS_WRITE_B8_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store (s8), addrspace 3)141    %0:vgpr(s32) = COPY $vgpr0142    %1:vgpr(p3) = COPY $vgpr1143    G_STORE %0, %1 :: (store (s8), align 1, addrspace 3)144 145...146 147---148 149name: store_local_v2s16150legalized:       true151regBankSelected: true152tracksRegLiveness: true153machineFunctionInfo:154  scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3155  stackPtrOffsetReg: $sgpr32156 157body: |158  bb.0:159    liveins: $vgpr0, $vgpr1160 161    ; GFX6-LABEL: name: store_local_v2s16162    ; GFX6: liveins: $vgpr0, $vgpr1163    ; GFX6-NEXT: {{  $}}164    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0165    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1166    ; GFX6-NEXT: $m0 = S_MOV_B32 -1167    ; GFX6-NEXT: DS_WRITE_B32 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store (<2 x s16>), addrspace 3)168    ; GFX7-LABEL: name: store_local_v2s16169    ; GFX7: liveins: $vgpr0, $vgpr1170    ; GFX7-NEXT: {{  $}}171    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0172    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1173    ; GFX7-NEXT: $m0 = S_MOV_B32 -1174    ; GFX7-NEXT: DS_WRITE_B32 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store (<2 x s16>), addrspace 3)175    ; GFX9-LABEL: name: store_local_v2s16176    ; GFX9: liveins: $vgpr0, $vgpr1177    ; GFX9-NEXT: {{  $}}178    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0179    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1180    ; GFX9-NEXT: DS_WRITE_B32_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store (<2 x s16>), addrspace 3)181    ; GFX10-LABEL: name: store_local_v2s16182    ; GFX10: liveins: $vgpr0, $vgpr1183    ; GFX10-NEXT: {{  $}}184    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0185    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1186    ; GFX10-NEXT: DS_WRITE_B32_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store (<2 x s16>), addrspace 3)187    %0:vgpr(<2 x s16>) = COPY $vgpr0188    %1:vgpr(p3) = COPY $vgpr1189    G_STORE %0, %1 :: (store (<2 x s16>), align 4, addrspace 3)190 191...192 193---194 195name: store_local_p3196legalized:       true197regBankSelected: true198tracksRegLiveness: true199machineFunctionInfo:200  scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3201  stackPtrOffsetReg: $sgpr32202 203body: |204  bb.0:205    liveins: $vgpr0, $vgpr1206 207    ; GFX6-LABEL: name: store_local_p3208    ; GFX6: liveins: $vgpr0, $vgpr1209    ; GFX6-NEXT: {{  $}}210    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0211    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1212    ; GFX6-NEXT: $m0 = S_MOV_B32 -1213    ; GFX6-NEXT: DS_WRITE_B32 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store (p3), addrspace 3)214    ; GFX7-LABEL: name: store_local_p3215    ; GFX7: liveins: $vgpr0, $vgpr1216    ; GFX7-NEXT: {{  $}}217    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0218    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1219    ; GFX7-NEXT: $m0 = S_MOV_B32 -1220    ; GFX7-NEXT: DS_WRITE_B32 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store (p3), addrspace 3)221    ; GFX9-LABEL: name: store_local_p3222    ; GFX9: liveins: $vgpr0, $vgpr1223    ; GFX9-NEXT: {{  $}}224    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0225    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1226    ; GFX9-NEXT: DS_WRITE_B32_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store (p3), addrspace 3)227    ; GFX10-LABEL: name: store_local_p3228    ; GFX10: liveins: $vgpr0, $vgpr1229    ; GFX10-NEXT: {{  $}}230    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0231    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1232    ; GFX10-NEXT: DS_WRITE_B32_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store (p3), addrspace 3)233    %0:vgpr(p3) = COPY $vgpr0234    %1:vgpr(p3) = COPY $vgpr1235    G_STORE %0, %1 :: (store (p3), align 4, addrspace 3)236 237...238 239---240 241name: store_local_s32_to_1_constant_4095242legalized:       true243regBankSelected: true244tracksRegLiveness: true245 246body: |247  bb.0:248 249    ; GFX6-LABEL: name: store_local_s32_to_1_constant_4095250    ; GFX6: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4095, implicit $exec251    ; GFX6-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec252    ; GFX6-NEXT: $m0 = S_MOV_B32 -1253    ; GFX6-NEXT: DS_WRITE_B8 [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], 0, 0, implicit $m0, implicit $exec :: (store (s8), addrspace 3)254    ; GFX7-LABEL: name: store_local_s32_to_1_constant_4095255    ; GFX7: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4095, implicit $exec256    ; GFX7-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec257    ; GFX7-NEXT: $m0 = S_MOV_B32 -1258    ; GFX7-NEXT: DS_WRITE_B8 [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], 0, 0, implicit $m0, implicit $exec :: (store (s8), addrspace 3)259    ; GFX9-LABEL: name: store_local_s32_to_1_constant_4095260    ; GFX9: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4095, implicit $exec261    ; GFX9-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec262    ; GFX9-NEXT: DS_WRITE_B8_gfx9 [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], 0, 0, implicit $exec :: (store (s8), addrspace 3)263    ; GFX10-LABEL: name: store_local_s32_to_1_constant_4095264    ; GFX10: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4095, implicit $exec265    ; GFX10-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec266    ; GFX10-NEXT: DS_WRITE_B8_gfx9 [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], 0, 0, implicit $exec :: (store (s8), addrspace 3)267    %0:vgpr(p3) = G_CONSTANT i32 4095268    %1:vgpr(s32) = G_CONSTANT i32 0269    G_STORE %1, %0 :: (store (s8), align 1, addrspace 3)270 271...272 273---274 275name: store_local_s32_to_1_constant_4096276legalized:       true277regBankSelected: true278tracksRegLiveness: true279machineFunctionInfo:280  scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3281  stackPtrOffsetReg: $sgpr32282stack:283  - { id: 0, size: 4096, alignment: 4 }284 285body: |286  bb.0:287 288    ; GFX6-LABEL: name: store_local_s32_to_1_constant_4096289    ; GFX6: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec290    ; GFX6-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec291    ; GFX6-NEXT: $m0 = S_MOV_B32 -1292    ; GFX6-NEXT: DS_WRITE_B8 [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], 0, 0, implicit $m0, implicit $exec :: (store (s8), addrspace 3)293    ; GFX7-LABEL: name: store_local_s32_to_1_constant_4096294    ; GFX7: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec295    ; GFX7-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec296    ; GFX7-NEXT: $m0 = S_MOV_B32 -1297    ; GFX7-NEXT: DS_WRITE_B8 [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], 0, 0, implicit $m0, implicit $exec :: (store (s8), addrspace 3)298    ; GFX9-LABEL: name: store_local_s32_to_1_constant_4096299    ; GFX9: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec300    ; GFX9-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec301    ; GFX9-NEXT: DS_WRITE_B8_gfx9 [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], 0, 0, implicit $exec :: (store (s8), addrspace 3)302    ; GFX10-LABEL: name: store_local_s32_to_1_constant_4096303    ; GFX10: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec304    ; GFX10-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec305    ; GFX10-NEXT: DS_WRITE_B8_gfx9 [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], 0, 0, implicit $exec :: (store (s8), addrspace 3)306    %0:vgpr(p3) = G_CONSTANT i32 4096307    %1:vgpr(s32) = G_CONSTANT i32 0308    G_STORE %1, %0 :: (store (s8), align 1, addrspace 3)309 310...311 312---313 314name: store_local_s64_align4315legalized:       true316regBankSelected: true317tracksRegLiveness: true318machineFunctionInfo:319  scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3320  stackPtrOffsetReg: $sgpr32321 322body: |323  bb.0:324    liveins: $vgpr0_vgpr1, $vgpr2325 326    ; GFX6-LABEL: name: store_local_s64_align4327    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2328    ; GFX6-NEXT: {{  $}}329    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1330    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2331    ; GFX6-NEXT: $m0 = S_MOV_B32 -1332    ; GFX6-NEXT: G_STORE [[COPY]](s64), [[COPY1]](p3) :: (store (s64), align 4, addrspace 3)333    ; GFX7-LABEL: name: store_local_s64_align4334    ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2335    ; GFX7-NEXT: {{  $}}336    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1337    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2338    ; GFX7-NEXT: $m0 = S_MOV_B32 -1339    ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1340    ; GFX7-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0341    ; GFX7-NEXT: DS_WRITE2_B32 [[COPY1]], [[COPY3]], [[COPY2]], 0, 1, 0, implicit $m0, implicit $exec :: (store (s64), align 4, addrspace 3)342    ; GFX9-LABEL: name: store_local_s64_align4343    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2344    ; GFX9-NEXT: {{  $}}345    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1346    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2347    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1348    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0349    ; GFX9-NEXT: DS_WRITE2_B32_gfx9 [[COPY1]], [[COPY3]], [[COPY2]], 0, 1, 0, implicit $exec :: (store (s64), align 4, addrspace 3)350    ; GFX10-LABEL: name: store_local_s64_align4351    ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2352    ; GFX10-NEXT: {{  $}}353    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1354    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2355    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1356    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0357    ; GFX10-NEXT: DS_WRITE2_B32_gfx9 [[COPY1]], [[COPY3]], [[COPY2]], 0, 1, 0, implicit $exec :: (store (s64), align 4, addrspace 3)358    %0:vgpr(s64) = COPY $vgpr0_vgpr1359    %1:vgpr(p3) = COPY $vgpr2360    G_STORE %0, %1 :: (store (s64), align 4, addrspace 3)361 362...363 364---365 366name: store_local_p1_align4367legalized:       true368regBankSelected: true369tracksRegLiveness: true370machineFunctionInfo:371  scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3372  stackPtrOffsetReg: $sgpr32373 374body: |375  bb.0:376    liveins: $vgpr0_vgpr1, $vgpr2377 378    ; GFX6-LABEL: name: store_local_p1_align4379    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2380    ; GFX6-NEXT: {{  $}}381    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1382    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2383    ; GFX6-NEXT: $m0 = S_MOV_B32 -1384    ; GFX6-NEXT: G_STORE [[COPY]](p1), [[COPY1]](p3) :: (store (p1), align 4, addrspace 3)385    ; GFX7-LABEL: name: store_local_p1_align4386    ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2387    ; GFX7-NEXT: {{  $}}388    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1389    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2390    ; GFX7-NEXT: $m0 = S_MOV_B32 -1391    ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1392    ; GFX7-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0393    ; GFX7-NEXT: DS_WRITE2_B32 [[COPY1]], [[COPY3]], [[COPY2]], 0, 1, 0, implicit $m0, implicit $exec :: (store (p1), align 4, addrspace 3)394    ; GFX9-LABEL: name: store_local_p1_align4395    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2396    ; GFX9-NEXT: {{  $}}397    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1398    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2399    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1400    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0401    ; GFX9-NEXT: DS_WRITE2_B32_gfx9 [[COPY1]], [[COPY3]], [[COPY2]], 0, 1, 0, implicit $exec :: (store (p1), align 4, addrspace 3)402    ; GFX10-LABEL: name: store_local_p1_align4403    ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2404    ; GFX10-NEXT: {{  $}}405    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1406    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2407    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1408    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0409    ; GFX10-NEXT: DS_WRITE2_B32_gfx9 [[COPY1]], [[COPY3]], [[COPY2]], 0, 1, 0, implicit $exec :: (store (p1), align 4, addrspace 3)410    %0:vgpr(p1) = COPY $vgpr0_vgpr1411    %1:vgpr(p3) = COPY $vgpr2412    G_STORE %0, %1 :: (store (p1), align 4, addrspace 3)413 414...415 416---417 418name: store_local_v2s32_align4419legalized:       true420regBankSelected: true421tracksRegLiveness: true422machineFunctionInfo:423  scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3424  stackPtrOffsetReg: $sgpr32425 426body: |427  bb.0:428    liveins: $vgpr0_vgpr1, $vgpr2429 430    ; GFX6-LABEL: name: store_local_v2s32_align4431    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2432    ; GFX6-NEXT: {{  $}}433    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1434    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2435    ; GFX6-NEXT: $m0 = S_MOV_B32 -1436    ; GFX6-NEXT: G_STORE [[COPY]](<2 x s32>), [[COPY1]](p3) :: (store (<2 x s32>), align 4, addrspace 3)437    ; GFX7-LABEL: name: store_local_v2s32_align4438    ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2439    ; GFX7-NEXT: {{  $}}440    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1441    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2442    ; GFX7-NEXT: $m0 = S_MOV_B32 -1443    ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1444    ; GFX7-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0445    ; GFX7-NEXT: DS_WRITE2_B32 [[COPY1]], [[COPY3]], [[COPY2]], 0, 1, 0, implicit $m0, implicit $exec :: (store (<2 x s32>), align 4, addrspace 3)446    ; GFX9-LABEL: name: store_local_v2s32_align4447    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2448    ; GFX9-NEXT: {{  $}}449    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1450    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2451    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1452    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0453    ; GFX9-NEXT: DS_WRITE2_B32_gfx9 [[COPY1]], [[COPY3]], [[COPY2]], 0, 1, 0, implicit $exec :: (store (<2 x s32>), align 4, addrspace 3)454    ; GFX10-LABEL: name: store_local_v2s32_align4455    ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2456    ; GFX10-NEXT: {{  $}}457    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1458    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2459    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1460    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0461    ; GFX10-NEXT: DS_WRITE2_B32_gfx9 [[COPY1]], [[COPY3]], [[COPY2]], 0, 1, 0, implicit $exec :: (store (<2 x s32>), align 4, addrspace 3)462    %0:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1463    %1:vgpr(p3) = COPY $vgpr2464    G_STORE %0, %1 :: (store (<2 x s32>), align 4, addrspace 3)465 466...467 468---469 470name: store_local_v4s16_align4471legalized:       true472regBankSelected: true473tracksRegLiveness: true474machineFunctionInfo:475  scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3476  stackPtrOffsetReg: $sgpr32477 478body: |479  bb.0:480    liveins: $vgpr0_vgpr1, $vgpr2481 482    ; GFX6-LABEL: name: store_local_v4s16_align4483    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2484    ; GFX6-NEXT: {{  $}}485    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1486    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2487    ; GFX6-NEXT: $m0 = S_MOV_B32 -1488    ; GFX6-NEXT: G_STORE [[COPY]](<4 x s16>), [[COPY1]](p3) :: (store (<4 x s16>), align 4, addrspace 3)489    ; GFX7-LABEL: name: store_local_v4s16_align4490    ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2491    ; GFX7-NEXT: {{  $}}492    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1493    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2494    ; GFX7-NEXT: $m0 = S_MOV_B32 -1495    ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1496    ; GFX7-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0497    ; GFX7-NEXT: DS_WRITE2_B32 [[COPY1]], [[COPY3]], [[COPY2]], 0, 1, 0, implicit $m0, implicit $exec :: (store (<4 x s16>), align 4, addrspace 3)498    ; GFX9-LABEL: name: store_local_v4s16_align4499    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2500    ; GFX9-NEXT: {{  $}}501    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1502    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2503    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1504    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0505    ; GFX9-NEXT: DS_WRITE2_B32_gfx9 [[COPY1]], [[COPY3]], [[COPY2]], 0, 1, 0, implicit $exec :: (store (<4 x s16>), align 4, addrspace 3)506    ; GFX10-LABEL: name: store_local_v4s16_align4507    ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2508    ; GFX10-NEXT: {{  $}}509    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1510    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2511    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1512    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0513    ; GFX10-NEXT: DS_WRITE2_B32_gfx9 [[COPY1]], [[COPY3]], [[COPY2]], 0, 1, 0, implicit $exec :: (store (<4 x s16>), align 4, addrspace 3)514    %0:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1515    %1:vgpr(p3) = COPY $vgpr2516    G_STORE %0, %1 :: (store (<4 x s16>), align 4, addrspace 3)517 518...519 520---521 522name: store_local_s64_align8523legalized:       true524regBankSelected: true525tracksRegLiveness: true526machineFunctionInfo:527  scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3528  stackPtrOffsetReg: $sgpr32529 530body: |531  bb.0:532    liveins: $vgpr0_vgpr1, $vgpr2533 534    ; GFX6-LABEL: name: store_local_s64_align8535    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2536    ; GFX6-NEXT: {{  $}}537    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1538    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2539    ; GFX6-NEXT: $m0 = S_MOV_B32 -1540    ; GFX6-NEXT: DS_WRITE_B64 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store (s64), addrspace 3)541    ; GFX7-LABEL: name: store_local_s64_align8542    ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2543    ; GFX7-NEXT: {{  $}}544    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1545    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2546    ; GFX7-NEXT: $m0 = S_MOV_B32 -1547    ; GFX7-NEXT: DS_WRITE_B64 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store (s64), addrspace 3)548    ; GFX9-LABEL: name: store_local_s64_align8549    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2550    ; GFX9-NEXT: {{  $}}551    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1552    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2553    ; GFX9-NEXT: DS_WRITE_B64_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store (s64), addrspace 3)554    ; GFX10-LABEL: name: store_local_s64_align8555    ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2556    ; GFX10-NEXT: {{  $}}557    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1558    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2559    ; GFX10-NEXT: DS_WRITE_B64_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store (s64), addrspace 3)560    %0:vgpr(s64) = COPY $vgpr0_vgpr1561    %1:vgpr(p3) = COPY $vgpr2562    G_STORE %0, %1 :: (store (s64), align 8, addrspace 3)563 564...565 566---567 568name: store_local_p1_align8569legalized:       true570regBankSelected: true571tracksRegLiveness: true572machineFunctionInfo:573  scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3574  stackPtrOffsetReg: $sgpr32575 576body: |577  bb.0:578    liveins: $vgpr0_vgpr1, $vgpr2579 580    ; GFX6-LABEL: name: store_local_p1_align8581    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2582    ; GFX6-NEXT: {{  $}}583    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1584    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2585    ; GFX6-NEXT: $m0 = S_MOV_B32 -1586    ; GFX6-NEXT: DS_WRITE_B64 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store (p1), addrspace 3)587    ; GFX7-LABEL: name: store_local_p1_align8588    ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2589    ; GFX7-NEXT: {{  $}}590    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1591    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2592    ; GFX7-NEXT: $m0 = S_MOV_B32 -1593    ; GFX7-NEXT: DS_WRITE_B64 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store (p1), addrspace 3)594    ; GFX9-LABEL: name: store_local_p1_align8595    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2596    ; GFX9-NEXT: {{  $}}597    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1598    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2599    ; GFX9-NEXT: DS_WRITE_B64_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store (p1), addrspace 3)600    ; GFX10-LABEL: name: store_local_p1_align8601    ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2602    ; GFX10-NEXT: {{  $}}603    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1604    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2605    ; GFX10-NEXT: DS_WRITE_B64_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store (p1), addrspace 3)606    %0:vgpr(p1) = COPY $vgpr0_vgpr1607    %1:vgpr(p3) = COPY $vgpr2608    G_STORE %0, %1 :: (store (p1), align 8, addrspace 3)609 610...611 612---613 614name: store_local_v2s32_align8615legalized:       true616regBankSelected: true617tracksRegLiveness: true618machineFunctionInfo:619  scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3620  stackPtrOffsetReg: $sgpr32621 622body: |623  bb.0:624    liveins: $vgpr0_vgpr1, $vgpr2625 626    ; GFX6-LABEL: name: store_local_v2s32_align8627    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2628    ; GFX6-NEXT: {{  $}}629    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1630    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2631    ; GFX6-NEXT: $m0 = S_MOV_B32 -1632    ; GFX6-NEXT: DS_WRITE_B64 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store (<2 x s32>), addrspace 3)633    ; GFX7-LABEL: name: store_local_v2s32_align8634    ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2635    ; GFX7-NEXT: {{  $}}636    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1637    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2638    ; GFX7-NEXT: $m0 = S_MOV_B32 -1639    ; GFX7-NEXT: DS_WRITE_B64 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store (<2 x s32>), addrspace 3)640    ; GFX9-LABEL: name: store_local_v2s32_align8641    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2642    ; GFX9-NEXT: {{  $}}643    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1644    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2645    ; GFX9-NEXT: DS_WRITE_B64_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store (<2 x s32>), addrspace 3)646    ; GFX10-LABEL: name: store_local_v2s32_align8647    ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2648    ; GFX10-NEXT: {{  $}}649    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1650    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2651    ; GFX10-NEXT: DS_WRITE_B64_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store (<2 x s32>), addrspace 3)652    %0:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1653    %1:vgpr(p3) = COPY $vgpr2654    G_STORE %0, %1 :: (store (<2 x s32>), align 8, addrspace 3)655 656...657 658---659 660name: store_local_v4s16_align8661legalized:       true662regBankSelected: true663tracksRegLiveness: true664machineFunctionInfo:665  scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3666  stackPtrOffsetReg: $sgpr32667 668body: |669  bb.0:670    liveins: $vgpr0_vgpr1, $vgpr2671 672    ; GFX6-LABEL: name: store_local_v4s16_align8673    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2674    ; GFX6-NEXT: {{  $}}675    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1676    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2677    ; GFX6-NEXT: $m0 = S_MOV_B32 -1678    ; GFX6-NEXT: DS_WRITE_B64 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store (<4 x s16>), addrspace 3)679    ; GFX7-LABEL: name: store_local_v4s16_align8680    ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2681    ; GFX7-NEXT: {{  $}}682    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1683    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2684    ; GFX7-NEXT: $m0 = S_MOV_B32 -1685    ; GFX7-NEXT: DS_WRITE_B64 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store (<4 x s16>), addrspace 3)686    ; GFX9-LABEL: name: store_local_v4s16_align8687    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2688    ; GFX9-NEXT: {{  $}}689    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1690    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2691    ; GFX9-NEXT: DS_WRITE_B64_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store (<4 x s16>), addrspace 3)692    ; GFX10-LABEL: name: store_local_v4s16_align8693    ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2694    ; GFX10-NEXT: {{  $}}695    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1696    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2697    ; GFX10-NEXT: DS_WRITE_B64_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store (<4 x s16>), addrspace 3)698    %0:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1699    %1:vgpr(p3) = COPY $vgpr2700    G_STORE %0, %1 :: (store (<4 x s16>), align 8, addrspace 3)701 702...703 704---705 706name: store_local_s64_align4_from_1_gep_1016707legalized:       true708regBankSelected: true709tracksRegLiveness: true710machineFunctionInfo:711  scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3712  stackPtrOffsetReg: $sgpr32713 714body: |715  bb.0:716    liveins:  $vgpr0_vgpr1, $vgpr2717 718    ; GFX6-LABEL: name: store_local_s64_align4_from_1_gep_1016719    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2720    ; GFX6-NEXT: {{  $}}721    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1722    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2723    ; GFX6-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1016724    ; GFX6-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p3) = G_PTR_ADD [[COPY1]], [[C]](s32)725    ; GFX6-NEXT: $m0 = S_MOV_B32 -1726    ; GFX6-NEXT: G_STORE [[COPY]](s64), [[PTR_ADD]](p3) :: (store (s64), align 4, addrspace 3)727    ; GFX7-LABEL: name: store_local_s64_align4_from_1_gep_1016728    ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2729    ; GFX7-NEXT: {{  $}}730    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1731    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2732    ; GFX7-NEXT: $m0 = S_MOV_B32 -1733    ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1734    ; GFX7-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0735    ; GFX7-NEXT: DS_WRITE2_B32 [[COPY1]], [[COPY3]], [[COPY2]], 254, 255, 0, implicit $m0, implicit $exec :: (store (s64), align 4, addrspace 3)736    ; GFX9-LABEL: name: store_local_s64_align4_from_1_gep_1016737    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2738    ; GFX9-NEXT: {{  $}}739    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1740    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2741    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1742    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0743    ; GFX9-NEXT: DS_WRITE2_B32_gfx9 [[COPY1]], [[COPY3]], [[COPY2]], 254, 255, 0, implicit $exec :: (store (s64), align 4, addrspace 3)744    ; GFX10-LABEL: name: store_local_s64_align4_from_1_gep_1016745    ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2746    ; GFX10-NEXT: {{  $}}747    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1748    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2749    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1750    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0751    ; GFX10-NEXT: DS_WRITE2_B32_gfx9 [[COPY1]], [[COPY3]], [[COPY2]], 254, 255, 0, implicit $exec :: (store (s64), align 4, addrspace 3)752    %0:vgpr(s64) = COPY $vgpr0_vgpr1753    %1:vgpr(p3) = COPY $vgpr2754    %2:vgpr(s32) = G_CONSTANT i32 1016755    %3:vgpr(p3) = G_PTR_ADD %1, %2756    G_STORE %0, %3 :: (store (s64), align 4, addrspace 3)757 758...759 760---761 762name: store_local_s64_align4_from_1_gep_1020763legalized:       true764regBankSelected: true765tracksRegLiveness: true766machineFunctionInfo:767  scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3768  stackPtrOffsetReg: $sgpr32769 770body: |771  bb.0:772    liveins:  $vgpr0_vgpr1, $vgpr2773 774    ; GFX6-LABEL: name: store_local_s64_align4_from_1_gep_1020775    ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2776    ; GFX6-NEXT: {{  $}}777    ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1778    ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2779    ; GFX6-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1020780    ; GFX6-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p3) = G_PTR_ADD [[COPY1]], [[C]](s32)781    ; GFX6-NEXT: $m0 = S_MOV_B32 -1782    ; GFX6-NEXT: G_STORE [[COPY]](s64), [[PTR_ADD]](p3) :: (store (s64), align 4, addrspace 3)783    ; GFX7-LABEL: name: store_local_s64_align4_from_1_gep_1020784    ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2785    ; GFX7-NEXT: {{  $}}786    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1787    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2788    ; GFX7-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1020, implicit $exec789    ; GFX7-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY1]], [[V_MOV_B32_e32_]], 0, implicit $exec790    ; GFX7-NEXT: $m0 = S_MOV_B32 -1791    ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1792    ; GFX7-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0793    ; GFX7-NEXT: DS_WRITE2_B32 [[V_ADD_CO_U32_e64_]], [[COPY3]], [[COPY2]], 0, 1, 0, implicit $m0, implicit $exec :: (store (s64), align 4, addrspace 3)794    ; GFX9-LABEL: name: store_local_s64_align4_from_1_gep_1020795    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2796    ; GFX9-NEXT: {{  $}}797    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1798    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2799    ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1020, implicit $exec800    ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY1]], [[V_MOV_B32_e32_]], 0, implicit $exec801    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1802    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0803    ; GFX9-NEXT: DS_WRITE2_B32_gfx9 [[V_ADD_U32_e64_]], [[COPY3]], [[COPY2]], 0, 1, 0, implicit $exec :: (store (s64), align 4, addrspace 3)804    ; GFX10-LABEL: name: store_local_s64_align4_from_1_gep_1020805    ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2806    ; GFX10-NEXT: {{  $}}807    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1808    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2809    ; GFX10-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1020, implicit $exec810    ; GFX10-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY1]], [[V_MOV_B32_e32_]], 0, implicit $exec811    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1812    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0813    ; GFX10-NEXT: DS_WRITE2_B32_gfx9 [[V_ADD_U32_e64_]], [[COPY3]], [[COPY2]], 0, 1, 0, implicit $exec :: (store (s64), align 4, addrspace 3)814    %0:vgpr(s64) = COPY $vgpr0_vgpr1815    %1:vgpr(p3) = COPY $vgpr2816    %2:vgpr(s32) = G_CONSTANT i32 1020817    %3:vgpr(p3) = G_PTR_ADD %1, %2818    G_STORE %0, %3 :: (store (s64), align 4, addrspace 3)819 820...821