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