brintos

brintos / llvm-project-archived public Read only

0
0
Text · 45.5 KiB · 60357ab Raw
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