1046 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 -o - %s | FileCheck -check-prefix=GFX6 %s3# RUN: llc -O0 -mtriple=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX6 %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s5# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr=+wavefrontsize64 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s6# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX11 %s7# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX12 %s8 9---10 11name: function_store_private_s32_to_412legalized: true13regBankSelected: true14tracksRegLiveness: true15machineFunctionInfo:16 isEntryFunction: false17 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr318 stackPtrOffsetReg: $sgpr3219 20body: |21 bb.0:22 liveins: $vgpr0, $vgpr123 24 ; GFX6-LABEL: name: function_store_private_s32_to_425 ; GFX6: liveins: $vgpr0, $vgpr126 ; GFX6-NEXT: {{ $}}27 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr028 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr129 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (s32), addrspace 5)30 ;31 ; GFX9-LABEL: name: function_store_private_s32_to_432 ; GFX9: liveins: $vgpr0, $vgpr133 ; GFX9-NEXT: {{ $}}34 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr035 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr136 ; GFX9-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (s32), addrspace 5)37 ;38 ; GFX11-LABEL: name: function_store_private_s32_to_439 ; GFX11: liveins: $vgpr0, $vgpr140 ; GFX11-NEXT: {{ $}}41 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr042 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr143 ; GFX11-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 5)44 ;45 ; GFX12-LABEL: name: function_store_private_s32_to_446 ; GFX12: liveins: $vgpr0, $vgpr147 ; GFX12-NEXT: {{ $}}48 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr049 ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr150 ; GFX12-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 5)51 %0:vgpr(s32) = COPY $vgpr052 %1:vgpr(p5) = COPY $vgpr153 G_STORE %0, %1 :: (store (s32), align 4, addrspace 5)54 55...56 57---58 59name: function_store_private_s32_to_260legalized: true61regBankSelected: true62tracksRegLiveness: true63machineFunctionInfo:64 isEntryFunction: false65 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr366 stackPtrOffsetReg: $sgpr3267 68body: |69 bb.0:70 liveins: $vgpr0, $vgpr171 72 ; GFX6-LABEL: name: function_store_private_s32_to_273 ; GFX6: liveins: $vgpr0, $vgpr174 ; GFX6-NEXT: {{ $}}75 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr076 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr177 ; GFX6-NEXT: BUFFER_STORE_SHORT_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (s16), addrspace 5)78 ;79 ; GFX9-LABEL: name: function_store_private_s32_to_280 ; GFX9: liveins: $vgpr0, $vgpr181 ; GFX9-NEXT: {{ $}}82 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr083 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr184 ; GFX9-NEXT: BUFFER_STORE_SHORT_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (s16), addrspace 5)85 ;86 ; GFX11-LABEL: name: function_store_private_s32_to_287 ; GFX11: liveins: $vgpr0, $vgpr188 ; GFX11-NEXT: {{ $}}89 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr090 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr191 ; GFX11-NEXT: SCRATCH_STORE_SHORT [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s16), addrspace 5)92 ;93 ; GFX12-LABEL: name: function_store_private_s32_to_294 ; GFX12: liveins: $vgpr0, $vgpr195 ; GFX12-NEXT: {{ $}}96 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr097 ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr198 ; GFX12-NEXT: SCRATCH_STORE_SHORT [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s16), addrspace 5)99 %0:vgpr(s32) = COPY $vgpr0100 %1:vgpr(p5) = COPY $vgpr1101 G_STORE %0, %1 :: (store (s16), align 2, addrspace 5)102 103...104 105---106 107name: function_store_private_s32_to_1108legalized: true109regBankSelected: true110tracksRegLiveness: true111machineFunctionInfo:112 isEntryFunction: false113 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3114 stackPtrOffsetReg: $sgpr32115 116body: |117 bb.0:118 liveins: $vgpr0, $vgpr1119 120 ; GFX6-LABEL: name: function_store_private_s32_to_1121 ; GFX6: liveins: $vgpr0, $vgpr1122 ; GFX6-NEXT: {{ $}}123 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0124 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1125 ; GFX6-NEXT: BUFFER_STORE_BYTE_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)126 ;127 ; GFX9-LABEL: name: function_store_private_s32_to_1128 ; GFX9: liveins: $vgpr0, $vgpr1129 ; GFX9-NEXT: {{ $}}130 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0131 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1132 ; GFX9-NEXT: BUFFER_STORE_BYTE_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)133 ;134 ; GFX11-LABEL: name: function_store_private_s32_to_1135 ; GFX11: liveins: $vgpr0, $vgpr1136 ; GFX11-NEXT: {{ $}}137 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0138 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1139 ; GFX11-NEXT: SCRATCH_STORE_BYTE [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s8), addrspace 5)140 ;141 ; GFX12-LABEL: name: function_store_private_s32_to_1142 ; GFX12: liveins: $vgpr0, $vgpr1143 ; GFX12-NEXT: {{ $}}144 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0145 ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1146 ; GFX12-NEXT: SCRATCH_STORE_BYTE [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s8), addrspace 5)147 %0:vgpr(s32) = COPY $vgpr0148 %1:vgpr(p5) = COPY $vgpr1149 G_STORE %0, %1 :: (store (s8), align 1, addrspace 5)150 151...152 153---154 155name: function_store_private_v2s16156legalized: true157regBankSelected: true158tracksRegLiveness: true159machineFunctionInfo:160 isEntryFunction: false161 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3162 stackPtrOffsetReg: $sgpr32163 164body: |165 bb.0:166 liveins: $vgpr0, $vgpr1167 168 ; GFX6-LABEL: name: function_store_private_v2s16169 ; GFX6: liveins: $vgpr0, $vgpr1170 ; GFX6-NEXT: {{ $}}171 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0172 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1173 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (<2 x s16>), addrspace 5)174 ;175 ; GFX9-LABEL: name: function_store_private_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: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (<2 x s16>), addrspace 5)181 ;182 ; GFX11-LABEL: name: function_store_private_v2s16183 ; GFX11: liveins: $vgpr0, $vgpr1184 ; GFX11-NEXT: {{ $}}185 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0186 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1187 ; GFX11-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<2 x s16>), addrspace 5)188 ;189 ; GFX12-LABEL: name: function_store_private_v2s16190 ; GFX12: liveins: $vgpr0, $vgpr1191 ; GFX12-NEXT: {{ $}}192 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0193 ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1194 ; GFX12-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<2 x s16>), addrspace 5)195 %0:vgpr(<2 x s16>) = COPY $vgpr0196 %1:vgpr(p5) = COPY $vgpr1197 G_STORE %0, %1 :: (store (<2 x s16>), align 4, addrspace 5)198 199...200 201---202 203name: function_store_private_p3204legalized: true205regBankSelected: true206tracksRegLiveness: true207machineFunctionInfo:208 isEntryFunction: false209 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3210 stackPtrOffsetReg: $sgpr32211 212body: |213 bb.0:214 liveins: $vgpr0, $vgpr1215 216 ; GFX6-LABEL: name: function_store_private_p3217 ; GFX6: liveins: $vgpr0, $vgpr1218 ; GFX6-NEXT: {{ $}}219 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0220 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1221 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (p3), addrspace 5)222 ;223 ; GFX9-LABEL: name: function_store_private_p3224 ; GFX9: liveins: $vgpr0, $vgpr1225 ; GFX9-NEXT: {{ $}}226 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0227 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1228 ; GFX9-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (p3), addrspace 5)229 ;230 ; GFX11-LABEL: name: function_store_private_p3231 ; GFX11: liveins: $vgpr0, $vgpr1232 ; GFX11-NEXT: {{ $}}233 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0234 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1235 ; GFX11-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (p3), addrspace 5)236 ;237 ; GFX12-LABEL: name: function_store_private_p3238 ; GFX12: liveins: $vgpr0, $vgpr1239 ; GFX12-NEXT: {{ $}}240 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0241 ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1242 ; GFX12-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (p3), addrspace 5)243 %0:vgpr(p3) = COPY $vgpr0244 %1:vgpr(p5) = COPY $vgpr1245 G_STORE %0, %1 :: (store (p3), align 4, addrspace 5)246 247...248 249---250 251name: function_store_private_p5252legalized: true253regBankSelected: true254tracksRegLiveness: true255machineFunctionInfo:256 isEntryFunction: false257 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3258 stackPtrOffsetReg: $sgpr32259 260body: |261 bb.0:262 liveins: $vgpr0, $vgpr1263 264 ; GFX6-LABEL: name: function_store_private_p5265 ; GFX6: liveins: $vgpr0, $vgpr1266 ; GFX6-NEXT: {{ $}}267 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0268 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1269 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (p5), addrspace 5)270 ;271 ; GFX9-LABEL: name: function_store_private_p5272 ; GFX9: liveins: $vgpr0, $vgpr1273 ; GFX9-NEXT: {{ $}}274 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0275 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1276 ; GFX9-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (p5), addrspace 5)277 ;278 ; GFX11-LABEL: name: function_store_private_p5279 ; GFX11: liveins: $vgpr0, $vgpr1280 ; GFX11-NEXT: {{ $}}281 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0282 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1283 ; GFX11-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (p5), addrspace 5)284 ;285 ; GFX12-LABEL: name: function_store_private_p5286 ; GFX12: liveins: $vgpr0, $vgpr1287 ; GFX12-NEXT: {{ $}}288 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0289 ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1290 ; GFX12-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (p5), addrspace 5)291 %0:vgpr(p5) = COPY $vgpr0292 %1:vgpr(p5) = COPY $vgpr1293 G_STORE %0, %1 :: (store (p5), align 4, addrspace 5)294 295...296 297---298 299name: function_store_private_s32_to_1_fi_offset_4095300legalized: true301regBankSelected: true302tracksRegLiveness: true303machineFunctionInfo:304 isEntryFunction: false305 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3306 stackPtrOffsetReg: $sgpr32307stack:308 - { id: 0, size: 4096, alignment: 4 }309 310body: |311 bb.0:312 313 ; GFX6-LABEL: name: function_store_private_s32_to_1_fi_offset_4095314 ; GFX6: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec315 ; GFX6-NEXT: BUFFER_STORE_BYTE_OFFEN [[V_MOV_B32_e32_]], %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, implicit $exec :: (store (s8), addrspace 5)316 ;317 ; GFX9-LABEL: name: function_store_private_s32_to_1_fi_offset_4095318 ; GFX9: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec319 ; GFX9-NEXT: BUFFER_STORE_BYTE_OFFEN [[V_MOV_B32_e32_]], %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, implicit $exec :: (store (s8), addrspace 5)320 ;321 ; GFX11-LABEL: name: function_store_private_s32_to_1_fi_offset_4095322 ; GFX11: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec323 ; GFX11-NEXT: SCRATCH_STORE_BYTE_SADDR [[V_MOV_B32_e32_]], %stack.0, 4095, 0, implicit $exec, implicit $flat_scr :: (store (s8), addrspace 5)324 ;325 ; GFX12-LABEL: name: function_store_private_s32_to_1_fi_offset_4095326 ; GFX12: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec327 ; GFX12-NEXT: SCRATCH_STORE_BYTE_SADDR [[V_MOV_B32_e32_]], %stack.0, 4095, 0, implicit $exec, implicit $flat_scr :: (store (s8), addrspace 5)328 %0:vgpr(p5) = G_FRAME_INDEX %stack.0329 %1:vgpr(s32) = G_CONSTANT i32 4095330 %2:vgpr(p5) = G_PTR_ADD %0, %1331 %3:vgpr(s32) = G_CONSTANT i32 0332 G_STORE %3, %2 :: (store (s8), align 1, addrspace 5)333 334...335 336---337 338name: function_store_private_s32_to_1_constant_4095339legalized: true340regBankSelected: true341tracksRegLiveness: true342machineFunctionInfo:343 isEntryFunction: false344 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3345 stackPtrOffsetReg: $sgpr32346stack:347 - { id: 0, size: 4096, alignment: 4 }348 349body: |350 bb.0:351 352 ; GFX6-LABEL: name: function_store_private_s32_to_1_constant_4095353 ; GFX6: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec354 ; GFX6-NEXT: BUFFER_STORE_BYTE_OFFSET [[V_MOV_B32_e32_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, implicit $exec :: (store (s8), addrspace 5)355 ;356 ; GFX9-LABEL: name: function_store_private_s32_to_1_constant_4095357 ; GFX9: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec358 ; GFX9-NEXT: BUFFER_STORE_BYTE_OFFSET [[V_MOV_B32_e32_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, implicit $exec :: (store (s8), addrspace 5)359 ;360 ; GFX11-LABEL: name: function_store_private_s32_to_1_constant_4095361 ; GFX11: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4095, implicit $exec362 ; GFX11-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec363 ; GFX11-NEXT: SCRATCH_STORE_BYTE [[V_MOV_B32_e32_1]], [[V_MOV_B32_e32_]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s8), addrspace 5)364 ;365 ; GFX12-LABEL: name: function_store_private_s32_to_1_constant_4095366 ; GFX12: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4095, implicit $exec367 ; GFX12-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec368 ; GFX12-NEXT: SCRATCH_STORE_BYTE [[V_MOV_B32_e32_1]], [[V_MOV_B32_e32_]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s8), addrspace 5)369 %0:vgpr(p5) = G_CONSTANT i32 4095370 %1:vgpr(s32) = G_CONSTANT i32 0371 G_STORE %1, %0 :: (store (s8), align 1, addrspace 5)372 373...374 375---376 377name: function_store_private_s32_to_1_constant_4096378legalized: true379regBankSelected: true380tracksRegLiveness: true381machineFunctionInfo:382 isEntryFunction: false383 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3384 stackPtrOffsetReg: $sgpr32385stack:386 - { id: 0, size: 4096, alignment: 4 }387 388body: |389 bb.0:390 391 ; GFX6-LABEL: name: function_store_private_s32_to_1_constant_4096392 ; GFX6: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec393 ; GFX6-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec394 ; GFX6-NEXT: BUFFER_STORE_BYTE_OFFEN [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)395 ;396 ; GFX9-LABEL: name: function_store_private_s32_to_1_constant_4096397 ; GFX9: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec398 ; GFX9-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec399 ; GFX9-NEXT: BUFFER_STORE_BYTE_OFFEN [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)400 ;401 ; GFX11-LABEL: name: function_store_private_s32_to_1_constant_4096402 ; GFX11: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec403 ; GFX11-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec404 ; GFX11-NEXT: SCRATCH_STORE_BYTE [[V_MOV_B32_e32_1]], [[V_MOV_B32_e32_]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s8), addrspace 5)405 ;406 ; GFX12-LABEL: name: function_store_private_s32_to_1_constant_4096407 ; GFX12: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec408 ; GFX12-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec409 ; GFX12-NEXT: SCRATCH_STORE_BYTE [[V_MOV_B32_e32_1]], [[V_MOV_B32_e32_]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s8), addrspace 5)410 %0:vgpr(p5) = G_CONSTANT i32 4096411 %1:vgpr(s32) = G_CONSTANT i32 0412 G_STORE %1, %0 :: (store (s8), align 1, addrspace 5)413 414...415 416---417 418name: kernel_store_private_s32_to_4419legalized: true420regBankSelected: true421tracksRegLiveness: true422machineFunctionInfo:423 isEntryFunction: true424 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3425 426body: |427 bb.0:428 liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3429 430 ; GFX6-LABEL: name: kernel_store_private_s32_to_4431 ; GFX6: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3432 ; GFX6-NEXT: {{ $}}433 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0434 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1435 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (s32), addrspace 5)436 ;437 ; GFX9-LABEL: name: kernel_store_private_s32_to_4438 ; GFX9: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3439 ; GFX9-NEXT: {{ $}}440 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0441 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1442 ; GFX9-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (s32), addrspace 5)443 ;444 ; GFX11-LABEL: name: kernel_store_private_s32_to_4445 ; GFX11: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3446 ; GFX11-NEXT: {{ $}}447 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0448 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1449 ; GFX11-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 5)450 ;451 ; GFX12-LABEL: name: kernel_store_private_s32_to_4452 ; GFX12: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3453 ; GFX12-NEXT: {{ $}}454 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0455 ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1456 ; GFX12-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 5)457 %0:vgpr(s32) = COPY $vgpr0458 %1:vgpr(p5) = COPY $vgpr1459 G_STORE %0, %1 :: (store (s32), align 4, addrspace 5)460 461...462 463---464 465name: kernel_store_private_s32_to_2466legalized: true467regBankSelected: true468tracksRegLiveness: true469machineFunctionInfo:470 isEntryFunction: true471 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3472 473body: |474 bb.0:475 liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3476 477 ; GFX6-LABEL: name: kernel_store_private_s32_to_2478 ; GFX6: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3479 ; GFX6-NEXT: {{ $}}480 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0481 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1482 ; GFX6-NEXT: BUFFER_STORE_SHORT_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (s16), addrspace 5)483 ;484 ; GFX9-LABEL: name: kernel_store_private_s32_to_2485 ; GFX9: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3486 ; GFX9-NEXT: {{ $}}487 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0488 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1489 ; GFX9-NEXT: BUFFER_STORE_SHORT_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (s16), addrspace 5)490 ;491 ; GFX11-LABEL: name: kernel_store_private_s32_to_2492 ; GFX11: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3493 ; GFX11-NEXT: {{ $}}494 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0495 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1496 ; GFX11-NEXT: SCRATCH_STORE_SHORT [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s16), addrspace 5)497 ;498 ; GFX12-LABEL: name: kernel_store_private_s32_to_2499 ; GFX12: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3500 ; GFX12-NEXT: {{ $}}501 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0502 ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1503 ; GFX12-NEXT: SCRATCH_STORE_SHORT [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s16), addrspace 5)504 %0:vgpr(s32) = COPY $vgpr0505 %1:vgpr(p5) = COPY $vgpr1506 G_STORE %0, %1 :: (store (s16), align 2, addrspace 5)507 508...509 510---511 512name: kernel_store_private_s32_to_1513legalized: true514regBankSelected: true515tracksRegLiveness: true516machineFunctionInfo:517 isEntryFunction: true518 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3519 520body: |521 bb.0:522 liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3523 524 ; GFX6-LABEL: name: kernel_store_private_s32_to_1525 ; GFX6: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3526 ; GFX6-NEXT: {{ $}}527 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0528 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1529 ; GFX6-NEXT: BUFFER_STORE_BYTE_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)530 ;531 ; GFX9-LABEL: name: kernel_store_private_s32_to_1532 ; GFX9: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3533 ; GFX9-NEXT: {{ $}}534 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0535 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1536 ; GFX9-NEXT: BUFFER_STORE_BYTE_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)537 ;538 ; GFX11-LABEL: name: kernel_store_private_s32_to_1539 ; GFX11: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3540 ; GFX11-NEXT: {{ $}}541 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0542 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1543 ; GFX11-NEXT: SCRATCH_STORE_BYTE [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s8), addrspace 5)544 ;545 ; GFX12-LABEL: name: kernel_store_private_s32_to_1546 ; GFX12: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3547 ; GFX12-NEXT: {{ $}}548 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0549 ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1550 ; GFX12-NEXT: SCRATCH_STORE_BYTE [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s8), addrspace 5)551 %0:vgpr(s32) = COPY $vgpr0552 %1:vgpr(p5) = COPY $vgpr1553 G_STORE %0, %1 :: (store (s8), align 1, addrspace 5)554 555...556 557---558 559name: kernel_store_private_v2s16560legalized: true561regBankSelected: true562tracksRegLiveness: true563machineFunctionInfo:564 isEntryFunction: true565 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3566 567body: |568 bb.0:569 liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3570 571 572 ; GFX6-LABEL: name: kernel_store_private_v2s16573 ; GFX6: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3574 ; GFX6-NEXT: {{ $}}575 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0576 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1577 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (<2 x s16>), addrspace 5)578 ;579 ; GFX9-LABEL: name: kernel_store_private_v2s16580 ; GFX9: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3581 ; GFX9-NEXT: {{ $}}582 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0583 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1584 ; GFX9-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (<2 x s16>), addrspace 5)585 ;586 ; GFX11-LABEL: name: kernel_store_private_v2s16587 ; GFX11: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3588 ; GFX11-NEXT: {{ $}}589 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0590 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1591 ; GFX11-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<2 x s16>), addrspace 5)592 ;593 ; GFX12-LABEL: name: kernel_store_private_v2s16594 ; GFX12: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3595 ; GFX12-NEXT: {{ $}}596 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0597 ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1598 ; GFX12-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<2 x s16>), addrspace 5)599 %0:vgpr(<2 x s16>) = COPY $vgpr0600 %1:vgpr(p5) = COPY $vgpr1601 G_STORE %0, %1 :: (store (<2 x s16>), align 4, addrspace 5)602 603...604 605---606 607name: kernel_store_private_p3608legalized: true609regBankSelected: true610tracksRegLiveness: true611machineFunctionInfo:612 isEntryFunction: true613 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3614 615body: |616 bb.0:617 liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3618 619 ; GFX6-LABEL: name: kernel_store_private_p3620 ; GFX6: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3621 ; GFX6-NEXT: {{ $}}622 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0623 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1624 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (p3), addrspace 5)625 ;626 ; GFX9-LABEL: name: kernel_store_private_p3627 ; GFX9: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3628 ; GFX9-NEXT: {{ $}}629 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0630 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1631 ; GFX9-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (p3), addrspace 5)632 ;633 ; GFX11-LABEL: name: kernel_store_private_p3634 ; GFX11: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3635 ; GFX11-NEXT: {{ $}}636 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0637 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1638 ; GFX11-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (p3), addrspace 5)639 ;640 ; GFX12-LABEL: name: kernel_store_private_p3641 ; GFX12: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3642 ; GFX12-NEXT: {{ $}}643 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0644 ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1645 ; GFX12-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (p3), addrspace 5)646 %0:vgpr(p3) = COPY $vgpr0647 %1:vgpr(p5) = COPY $vgpr1648 G_STORE %0, %1 :: (store (p3), align 4, addrspace 5)649 650...651 652---653 654name: kernel_store_private_p5655legalized: true656regBankSelected: true657tracksRegLiveness: true658machineFunctionInfo:659 isEntryFunction: true660 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3661 662body: |663 bb.0:664 liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3665 666 ; GFX6-LABEL: name: kernel_store_private_p5667 ; GFX6: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3668 ; GFX6-NEXT: {{ $}}669 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0670 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1671 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (p5), addrspace 5)672 ;673 ; GFX9-LABEL: name: kernel_store_private_p5674 ; GFX9: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3675 ; GFX9-NEXT: {{ $}}676 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0677 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1678 ; GFX9-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (p5), addrspace 5)679 ;680 ; GFX11-LABEL: name: kernel_store_private_p5681 ; GFX11: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3682 ; GFX11-NEXT: {{ $}}683 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0684 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1685 ; GFX11-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (p5), addrspace 5)686 ;687 ; GFX12-LABEL: name: kernel_store_private_p5688 ; GFX12: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3689 ; GFX12-NEXT: {{ $}}690 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0691 ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1692 ; GFX12-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (p5), addrspace 5)693 %0:vgpr(p5) = COPY $vgpr0694 %1:vgpr(p5) = COPY $vgpr1695 G_STORE %0, %1 :: (store (p5), align 4, addrspace 5)696 697...698 699---700 701name: kernel_store_private_s32_to_1_fi_offset_4095702legalized: true703regBankSelected: true704tracksRegLiveness: true705machineFunctionInfo:706 isEntryFunction: true707 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3708stack:709 - { id: 0, size: 4096, alignment: 4 }710 711body: |712 bb.0:713 liveins: $sgpr0_sgpr1_sgpr2_sgpr3714 715 ; GFX6-LABEL: name: kernel_store_private_s32_to_1_fi_offset_4095716 ; GFX6: liveins: $sgpr0_sgpr1_sgpr2_sgpr3717 ; GFX6-NEXT: {{ $}}718 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec719 ; GFX6-NEXT: BUFFER_STORE_BYTE_OFFEN [[V_MOV_B32_e32_]], %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, implicit $exec :: (store (s8), addrspace 5)720 ;721 ; GFX9-LABEL: name: kernel_store_private_s32_to_1_fi_offset_4095722 ; GFX9: liveins: $sgpr0_sgpr1_sgpr2_sgpr3723 ; GFX9-NEXT: {{ $}}724 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec725 ; GFX9-NEXT: BUFFER_STORE_BYTE_OFFEN [[V_MOV_B32_e32_]], %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, implicit $exec :: (store (s8), addrspace 5)726 ;727 ; GFX11-LABEL: name: kernel_store_private_s32_to_1_fi_offset_4095728 ; GFX11: liveins: $sgpr0_sgpr1_sgpr2_sgpr3729 ; GFX11-NEXT: {{ $}}730 ; GFX11-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec731 ; GFX11-NEXT: SCRATCH_STORE_BYTE_SADDR [[V_MOV_B32_e32_]], %stack.0, 4095, 0, implicit $exec, implicit $flat_scr :: (store (s8), addrspace 5)732 ;733 ; GFX12-LABEL: name: kernel_store_private_s32_to_1_fi_offset_4095734 ; GFX12: liveins: $sgpr0_sgpr1_sgpr2_sgpr3735 ; GFX12-NEXT: {{ $}}736 ; GFX12-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec737 ; GFX12-NEXT: SCRATCH_STORE_BYTE_SADDR [[V_MOV_B32_e32_]], %stack.0, 4095, 0, implicit $exec, implicit $flat_scr :: (store (s8), addrspace 5)738 %0:vgpr(p5) = G_FRAME_INDEX %stack.0739 %1:vgpr(s32) = G_CONSTANT i32 4095740 %2:vgpr(p5) = G_PTR_ADD %0, %1741 %3:vgpr(s32) = G_CONSTANT i32 0742 G_STORE %3, %2 :: (store (s8), align 1, addrspace 5)743 744...745 746---747 748name: kernel_store_private_s32_to_1_constant_4095749legalized: true750regBankSelected: true751tracksRegLiveness: true752machineFunctionInfo:753 isEntryFunction: true754 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3755stack:756 - { id: 0, size: 4096, alignment: 4 }757 758body: |759 bb.0:760 liveins: $sgpr0_sgpr1_sgpr2_sgpr3761 762 ; GFX6-LABEL: name: kernel_store_private_s32_to_1_constant_4095763 ; GFX6: liveins: $sgpr0_sgpr1_sgpr2_sgpr3764 ; GFX6-NEXT: {{ $}}765 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec766 ; GFX6-NEXT: BUFFER_STORE_BYTE_OFFSET [[V_MOV_B32_e32_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, implicit $exec :: (store (s8), addrspace 5)767 ;768 ; GFX9-LABEL: name: kernel_store_private_s32_to_1_constant_4095769 ; GFX9: liveins: $sgpr0_sgpr1_sgpr2_sgpr3770 ; GFX9-NEXT: {{ $}}771 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec772 ; GFX9-NEXT: BUFFER_STORE_BYTE_OFFSET [[V_MOV_B32_e32_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, implicit $exec :: (store (s8), addrspace 5)773 ;774 ; GFX11-LABEL: name: kernel_store_private_s32_to_1_constant_4095775 ; GFX11: liveins: $sgpr0_sgpr1_sgpr2_sgpr3776 ; GFX11-NEXT: {{ $}}777 ; GFX11-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4095, implicit $exec778 ; GFX11-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec779 ; GFX11-NEXT: SCRATCH_STORE_BYTE [[V_MOV_B32_e32_1]], [[V_MOV_B32_e32_]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s8), addrspace 5)780 ;781 ; GFX12-LABEL: name: kernel_store_private_s32_to_1_constant_4095782 ; GFX12: liveins: $sgpr0_sgpr1_sgpr2_sgpr3783 ; GFX12-NEXT: {{ $}}784 ; GFX12-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4095, implicit $exec785 ; GFX12-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec786 ; GFX12-NEXT: SCRATCH_STORE_BYTE [[V_MOV_B32_e32_1]], [[V_MOV_B32_e32_]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s8), addrspace 5)787 %0:vgpr(p5) = G_CONSTANT i32 4095788 %1:vgpr(s32) = G_CONSTANT i32 0789 G_STORE %1, %0 :: (store (s8), align 1, addrspace 5)790 791...792 793---794 795name: kernel_store_private_s32_to_1_constant_4096796legalized: true797regBankSelected: true798tracksRegLiveness: true799machineFunctionInfo:800 isEntryFunction: true801 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3802stack:803 - { id: 0, size: 4096, alignment: 4 }804 805body: |806 bb.0:807 liveins: $sgpr0_sgpr1_sgpr2_sgpr3808 809 ; GFX6-LABEL: name: kernel_store_private_s32_to_1_constant_4096810 ; GFX6: liveins: $sgpr0_sgpr1_sgpr2_sgpr3811 ; GFX6-NEXT: {{ $}}812 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec813 ; GFX6-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec814 ; GFX6-NEXT: BUFFER_STORE_BYTE_OFFEN [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)815 ;816 ; GFX9-LABEL: name: kernel_store_private_s32_to_1_constant_4096817 ; GFX9: liveins: $sgpr0_sgpr1_sgpr2_sgpr3818 ; GFX9-NEXT: {{ $}}819 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec820 ; GFX9-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec821 ; GFX9-NEXT: BUFFER_STORE_BYTE_OFFEN [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)822 ;823 ; GFX11-LABEL: name: kernel_store_private_s32_to_1_constant_4096824 ; GFX11: liveins: $sgpr0_sgpr1_sgpr2_sgpr3825 ; GFX11-NEXT: {{ $}}826 ; GFX11-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec827 ; GFX11-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec828 ; GFX11-NEXT: SCRATCH_STORE_BYTE [[V_MOV_B32_e32_1]], [[V_MOV_B32_e32_]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s8), addrspace 5)829 ;830 ; GFX12-LABEL: name: kernel_store_private_s32_to_1_constant_4096831 ; GFX12: liveins: $sgpr0_sgpr1_sgpr2_sgpr3832 ; GFX12-NEXT: {{ $}}833 ; GFX12-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec834 ; GFX12-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec835 ; GFX12-NEXT: SCRATCH_STORE_BYTE [[V_MOV_B32_e32_1]], [[V_MOV_B32_e32_]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s8), addrspace 5)836 %0:vgpr(p5) = G_CONSTANT i32 4096837 %1:vgpr(s32) = G_CONSTANT i32 0838 G_STORE %1, %0 :: (store (s8), align 1, addrspace 5)839 840...841 842---843name: function_store_private_s32_to_4_wave_address844legalized: true845regBankSelected: true846tracksRegLiveness: true847machineFunctionInfo:848 isEntryFunction: false849 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3850 stackPtrOffsetReg: $sgpr32851 852body: |853 bb.0:854 liveins: $vgpr0, $vgpr1855 856 ; GFX6-LABEL: name: function_store_private_s32_to_4_wave_address857 ; GFX6: liveins: $vgpr0, $vgpr1858 ; GFX6-NEXT: {{ $}}859 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0860 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFSET [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr32, 0, 0, 0, implicit $exec :: (store (s32), addrspace 5)861 ;862 ; GFX9-LABEL: name: function_store_private_s32_to_4_wave_address863 ; GFX9: liveins: $vgpr0, $vgpr1864 ; GFX9-NEXT: {{ $}}865 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0866 ; GFX9-NEXT: BUFFER_STORE_DWORD_OFFSET [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr32, 0, 0, 0, implicit $exec :: (store (s32), addrspace 5)867 ;868 ; GFX11-LABEL: name: function_store_private_s32_to_4_wave_address869 ; GFX11: liveins: $vgpr0, $vgpr1870 ; GFX11-NEXT: {{ $}}871 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0872 ; GFX11-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 5, $sgpr32, implicit $exec873 ; GFX11-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[V_LSHRREV_B32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 5)874 ;875 ; GFX12-LABEL: name: function_store_private_s32_to_4_wave_address876 ; GFX12: liveins: $vgpr0, $vgpr1877 ; GFX12-NEXT: {{ $}}878 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0879 ; GFX12-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 5, $sgpr32, implicit $exec880 ; GFX12-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[V_LSHRREV_B32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 5)881 %0:vgpr(s32) = COPY $vgpr0882 %1:vgpr(p5) = G_AMDGPU_WAVE_ADDRESS $sgpr32883 G_STORE %0, %1 :: (store (s32), align 4, addrspace 5)884 885...886 887# Has regbank copy of constant888---889name: function_store_private_s32_to_4_wave_address_offset_copy_constant_4095890legalized: true891regBankSelected: true892tracksRegLiveness: true893machineFunctionInfo:894 isEntryFunction: false895 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3896 stackPtrOffsetReg: $sgpr32897 898body: |899 bb.0:900 liveins: $vgpr0, $vgpr1901 902 ; GFX6-LABEL: name: function_store_private_s32_to_4_wave_address_offset_copy_constant_4095903 ; GFX6: liveins: $vgpr0, $vgpr1904 ; GFX6-NEXT: {{ $}}905 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0906 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFSET [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr32, 4095, 0, 0, implicit $exec :: (store (s32), addrspace 5)907 ;908 ; GFX9-LABEL: name: function_store_private_s32_to_4_wave_address_offset_copy_constant_4095909 ; GFX9: liveins: $vgpr0, $vgpr1910 ; GFX9-NEXT: {{ $}}911 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0912 ; GFX9-NEXT: BUFFER_STORE_DWORD_OFFSET [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr32, 4095, 0, 0, implicit $exec :: (store (s32), addrspace 5)913 ;914 ; GFX11-LABEL: name: function_store_private_s32_to_4_wave_address_offset_copy_constant_4095915 ; GFX11: liveins: $vgpr0, $vgpr1916 ; GFX11-NEXT: {{ $}}917 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0918 ; GFX11-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 5, $sgpr32, implicit $exec919 ; GFX11-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 4095920 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]]921 ; GFX11-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[V_LSHRREV_B32_e64_]], [[COPY1]], 0, implicit $exec922 ; GFX11-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[V_ADD_U32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 5)923 ;924 ; GFX12-LABEL: name: function_store_private_s32_to_4_wave_address_offset_copy_constant_4095925 ; GFX12: liveins: $vgpr0, $vgpr1926 ; GFX12-NEXT: {{ $}}927 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0928 ; GFX12-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 5, $sgpr32, implicit $exec929 ; GFX12-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[V_LSHRREV_B32_e64_]], 4095, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 5)930 %0:vgpr(s32) = COPY $vgpr0931 %1:vgpr(p5) = G_AMDGPU_WAVE_ADDRESS $sgpr32932 %2:sgpr(s32) = G_CONSTANT i32 4095933 %3:vgpr(s32) = COPY %2934 %4:vgpr(p5) = G_PTR_ADD %1, %3935 G_STORE %0, %4 :: (store (s32), align 4, addrspace 5)936 937...938 939---940name: function_store_private_s32_to_4_wave_address_offset_4095941legalized: true942regBankSelected: true943tracksRegLiveness: true944machineFunctionInfo:945 isEntryFunction: false946 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3947 stackPtrOffsetReg: $sgpr32948 949body: |950 bb.0:951 liveins: $vgpr0, $vgpr1952 953 ; GFX6-LABEL: name: function_store_private_s32_to_4_wave_address_offset_4095954 ; GFX6: liveins: $vgpr0, $vgpr1955 ; GFX6-NEXT: {{ $}}956 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0957 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFSET [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr32, 4095, 0, 0, implicit $exec :: (store (s32), addrspace 5)958 ;959 ; GFX9-LABEL: name: function_store_private_s32_to_4_wave_address_offset_4095960 ; GFX9: liveins: $vgpr0, $vgpr1961 ; GFX9-NEXT: {{ $}}962 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0963 ; GFX9-NEXT: BUFFER_STORE_DWORD_OFFSET [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr32, 4095, 0, 0, implicit $exec :: (store (s32), addrspace 5)964 ;965 ; GFX11-LABEL: name: function_store_private_s32_to_4_wave_address_offset_4095966 ; GFX11: liveins: $vgpr0, $vgpr1967 ; GFX11-NEXT: {{ $}}968 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0969 ; GFX11-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 5, $sgpr32, implicit $exec970 ; GFX11-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4095, implicit $exec971 ; GFX11-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[V_LSHRREV_B32_e64_]], [[V_MOV_B32_e32_]], 0, implicit $exec972 ; GFX11-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[V_ADD_U32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 5)973 ;974 ; GFX12-LABEL: name: function_store_private_s32_to_4_wave_address_offset_4095975 ; GFX12: liveins: $vgpr0, $vgpr1976 ; GFX12-NEXT: {{ $}}977 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0978 ; GFX12-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 5, $sgpr32, implicit $exec979 ; GFX12-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[V_LSHRREV_B32_e64_]], 4095, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 5)980 %0:vgpr(s32) = COPY $vgpr0981 %1:vgpr(p5) = G_AMDGPU_WAVE_ADDRESS $sgpr32982 %2:vgpr(s32) = G_CONSTANT i32 4095983 %3:vgpr(p5) = G_PTR_ADD %1, %2984 G_STORE %0, %3 :: (store (s32), align 4, addrspace 5)985 986...987 988---989name: function_store_private_s32_to_4_wave_address_offset_copy_constant_4096990legalized: true991regBankSelected: true992tracksRegLiveness: true993machineFunctionInfo:994 isEntryFunction: false995 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3996 stackPtrOffsetReg: $sgpr32997 998body: |999 bb.0:1000 liveins: $vgpr0, $vgpr11001 1002 ; GFX6-LABEL: name: function_store_private_s32_to_4_wave_address_offset_copy_constant_40961003 ; GFX6: liveins: $vgpr0, $vgpr11004 ; GFX6-NEXT: {{ $}}1005 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01006 ; GFX6-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec1007 ; GFX6-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 40961008 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]]1009 ; GFX6-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 [[V_LSHRREV_B32_e64_]], [[COPY1]], 0, implicit $exec1010 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[V_ADD_CO_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (s32), addrspace 5)1011 ;1012 ; GFX9-LABEL: name: function_store_private_s32_to_4_wave_address_offset_copy_constant_40961013 ; GFX9: liveins: $vgpr0, $vgpr11014 ; GFX9-NEXT: {{ $}}1015 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01016 ; GFX9-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 6, $sgpr32, implicit $exec1017 ; GFX9-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 40961018 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]]1019 ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[V_LSHRREV_B32_e64_]], [[COPY1]], 0, implicit $exec1020 ; GFX9-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[V_ADD_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (store (s32), addrspace 5)1021 ;1022 ; GFX11-LABEL: name: function_store_private_s32_to_4_wave_address_offset_copy_constant_40961023 ; GFX11: liveins: $vgpr0, $vgpr11024 ; GFX11-NEXT: {{ $}}1025 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01026 ; GFX11-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 5, $sgpr32, implicit $exec1027 ; GFX11-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 40961028 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]]1029 ; GFX11-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[V_LSHRREV_B32_e64_]], [[COPY1]], 0, implicit $exec1030 ; GFX11-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[V_ADD_U32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 5)1031 ;1032 ; GFX12-LABEL: name: function_store_private_s32_to_4_wave_address_offset_copy_constant_40961033 ; GFX12: liveins: $vgpr0, $vgpr11034 ; GFX12-NEXT: {{ $}}1035 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01036 ; GFX12-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 5, $sgpr32, implicit $exec1037 ; GFX12-NEXT: SCRATCH_STORE_DWORD [[COPY]], [[V_LSHRREV_B32_e64_]], 4096, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 5)1038 %0:vgpr(s32) = COPY $vgpr01039 %1:vgpr(p5) = G_AMDGPU_WAVE_ADDRESS $sgpr321040 %2:sgpr(s32) = G_CONSTANT i32 40961041 %3:vgpr(s32) = COPY %21042 %4:vgpr(p5) = G_PTR_ADD %1, %31043 G_STORE %0, %4 :: (store (s32), align 4, addrspace 5)1044 1045...1046