1558 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 -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: load_private_s32_from_412legalized: true13regBankSelected: true14tracksRegLiveness: true15machineFunctionInfo:16 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr317 stackPtrOffsetReg: $sgpr3218 19body: |20 bb.0:21 liveins: $vgpr022 23 ; GFX6-LABEL: name: load_private_s32_from_424 ; GFX6: liveins: $vgpr025 ; GFX6-NEXT: {{ $}}26 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr027 ; GFX6-NEXT: [[BUFFER_LOAD_DWORD_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s32), addrspace 5)28 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFEN]]29 ;30 ; GFX9-LABEL: name: load_private_s32_from_431 ; GFX9: liveins: $vgpr032 ; GFX9-NEXT: {{ $}}33 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr034 ; GFX9-NEXT: [[BUFFER_LOAD_DWORD_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s32), addrspace 5)35 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFEN]]36 ;37 ; GFX11-LABEL: name: load_private_s32_from_438 ; GFX11: liveins: $vgpr039 ; GFX11-NEXT: {{ $}}40 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr041 ; GFX11-NEXT: [[SCRATCH_LOAD_DWORD:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s32), addrspace 5)42 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_DWORD]]43 ;44 ; GFX12-LABEL: name: load_private_s32_from_445 ; GFX12: liveins: $vgpr046 ; GFX12-NEXT: {{ $}}47 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr048 ; GFX12-NEXT: [[SCRATCH_LOAD_DWORD:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s32), addrspace 5)49 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_DWORD]]50 %0:vgpr(p5) = COPY $vgpr051 %1:vgpr(s32) = G_LOAD %0 :: (load (s32), align 4, addrspace 5)52 $vgpr0 = COPY %153 54...55 56---57 58name: load_private_s32_from_259legalized: true60regBankSelected: true61tracksRegLiveness: true62machineFunctionInfo:63 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr364 stackPtrOffsetReg: $sgpr3265 66body: |67 bb.0:68 liveins: $vgpr069 70 ; GFX6-LABEL: name: load_private_s32_from_271 ; GFX6: liveins: $vgpr072 ; GFX6-NEXT: {{ $}}73 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr074 ; GFX6-NEXT: [[BUFFER_LOAD_USHORT_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_USHORT_OFFEN [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s16), addrspace 5)75 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_USHORT_OFFEN]]76 ;77 ; GFX9-LABEL: name: load_private_s32_from_278 ; GFX9: liveins: $vgpr079 ; GFX9-NEXT: {{ $}}80 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr081 ; GFX9-NEXT: [[BUFFER_LOAD_USHORT_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_USHORT_OFFEN [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s16), addrspace 5)82 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_USHORT_OFFEN]]83 ;84 ; GFX11-LABEL: name: load_private_s32_from_285 ; GFX11: liveins: $vgpr086 ; GFX11-NEXT: {{ $}}87 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr088 ; GFX11-NEXT: [[SCRATCH_LOAD_USHORT:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_USHORT [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s16), addrspace 5)89 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_USHORT]]90 ;91 ; GFX12-LABEL: name: load_private_s32_from_292 ; GFX12: liveins: $vgpr093 ; GFX12-NEXT: {{ $}}94 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr095 ; GFX12-NEXT: [[SCRATCH_LOAD_USHORT:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_USHORT [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s16), addrspace 5)96 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_USHORT]]97 %0:vgpr(p5) = COPY $vgpr098 %1:vgpr(s32) = G_LOAD %0 :: (load (s16), align 2, addrspace 5)99 $vgpr0 = COPY %1100 101...102 103---104 105name: load_private_s32_from_1106legalized: true107regBankSelected: true108tracksRegLiveness: true109machineFunctionInfo:110 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3111 stackPtrOffsetReg: $sgpr32112 113body: |114 bb.0:115 liveins: $vgpr0116 117 ; GFX6-LABEL: name: load_private_s32_from_1118 ; GFX6: liveins: $vgpr0119 ; GFX6-NEXT: {{ $}}120 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0121 ; GFX6-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)122 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]123 ;124 ; GFX9-LABEL: name: load_private_s32_from_1125 ; GFX9: liveins: $vgpr0126 ; GFX9-NEXT: {{ $}}127 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0128 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)129 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]130 ;131 ; GFX11-LABEL: name: load_private_s32_from_1132 ; GFX11: liveins: $vgpr0133 ; GFX11-NEXT: {{ $}}134 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0135 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)136 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]137 ;138 ; GFX12-LABEL: name: load_private_s32_from_1139 ; GFX12: liveins: $vgpr0140 ; GFX12-NEXT: {{ $}}141 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0142 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)143 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]144 %0:vgpr(p5) = COPY $vgpr0145 %1:vgpr(s32) = G_LOAD %0 :: (load (s8), align 1, addrspace 5)146 $vgpr0 = COPY %1147 148...149 150---151 152name: load_private_p3_from_4153legalized: true154regBankSelected: true155tracksRegLiveness: true156machineFunctionInfo:157 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3158 stackPtrOffsetReg: $sgpr32159 160body: |161 bb.0:162 liveins: $vgpr0163 164 ; GFX6-LABEL: name: load_private_p3_from_4165 ; GFX6: liveins: $vgpr0166 ; GFX6-NEXT: {{ $}}167 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0168 ; GFX6-NEXT: [[BUFFER_LOAD_DWORD_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (p3), addrspace 5)169 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFEN]]170 ;171 ; GFX9-LABEL: name: load_private_p3_from_4172 ; GFX9: liveins: $vgpr0173 ; GFX9-NEXT: {{ $}}174 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0175 ; GFX9-NEXT: [[BUFFER_LOAD_DWORD_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (p3), addrspace 5)176 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFEN]]177 ;178 ; GFX11-LABEL: name: load_private_p3_from_4179 ; GFX11: liveins: $vgpr0180 ; GFX11-NEXT: {{ $}}181 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0182 ; GFX11-NEXT: [[SCRATCH_LOAD_DWORD:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load (p3), addrspace 5)183 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_DWORD]]184 ;185 ; GFX12-LABEL: name: load_private_p3_from_4186 ; GFX12: liveins: $vgpr0187 ; GFX12-NEXT: {{ $}}188 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0189 ; GFX12-NEXT: [[SCRATCH_LOAD_DWORD:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load (p3), addrspace 5)190 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_DWORD]]191 %0:vgpr(p5) = COPY $vgpr0192 %1:vgpr(p3) = G_LOAD %0 :: (load (p3), align 4, addrspace 5)193 $vgpr0 = COPY %1194 195...196 197---198 199name: load_private_p5_from_4200legalized: true201regBankSelected: true202tracksRegLiveness: true203machineFunctionInfo:204 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3205 stackPtrOffsetReg: $sgpr32206 207body: |208 bb.0:209 liveins: $vgpr0210 211 ; GFX6-LABEL: name: load_private_p5_from_4212 ; GFX6: liveins: $vgpr0213 ; GFX6-NEXT: {{ $}}214 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0215 ; GFX6-NEXT: [[BUFFER_LOAD_DWORD_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (p5), addrspace 5)216 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFEN]]217 ;218 ; GFX9-LABEL: name: load_private_p5_from_4219 ; GFX9: liveins: $vgpr0220 ; GFX9-NEXT: {{ $}}221 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0222 ; GFX9-NEXT: [[BUFFER_LOAD_DWORD_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (p5), addrspace 5)223 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFEN]]224 ;225 ; GFX11-LABEL: name: load_private_p5_from_4226 ; GFX11: liveins: $vgpr0227 ; GFX11-NEXT: {{ $}}228 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0229 ; GFX11-NEXT: [[SCRATCH_LOAD_DWORD:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load (p5), addrspace 5)230 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_DWORD]]231 ;232 ; GFX12-LABEL: name: load_private_p5_from_4233 ; GFX12: liveins: $vgpr0234 ; GFX12-NEXT: {{ $}}235 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0236 ; GFX12-NEXT: [[SCRATCH_LOAD_DWORD:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load (p5), addrspace 5)237 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_DWORD]]238 %0:vgpr(p5) = COPY $vgpr0239 %1:vgpr(p5) = G_LOAD %0 :: (load (p5), align 4, addrspace 5)240 $vgpr0 = COPY %1241 242...243 244---245 246name: load_private_v2s16247legalized: true248regBankSelected: true249tracksRegLiveness: true250machineFunctionInfo:251 isEntryFunction: false252 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3253 stackPtrOffsetReg: $sgpr32254 255body: |256 bb.0:257 liveins: $vgpr0258 259 ; GFX6-LABEL: name: load_private_v2s16260 ; GFX6: liveins: $vgpr0261 ; GFX6-NEXT: {{ $}}262 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0263 ; GFX6-NEXT: [[BUFFER_LOAD_DWORD_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (<2 x s16>), addrspace 5)264 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFEN]]265 ;266 ; GFX9-LABEL: name: load_private_v2s16267 ; GFX9: liveins: $vgpr0268 ; GFX9-NEXT: {{ $}}269 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0270 ; GFX9-NEXT: [[BUFFER_LOAD_DWORD_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (<2 x s16>), addrspace 5)271 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFEN]]272 ;273 ; GFX11-LABEL: name: load_private_v2s16274 ; GFX11: liveins: $vgpr0275 ; GFX11-NEXT: {{ $}}276 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0277 ; GFX11-NEXT: [[SCRATCH_LOAD_DWORD:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load (<2 x s16>), addrspace 5)278 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_DWORD]]279 ;280 ; GFX12-LABEL: name: load_private_v2s16281 ; GFX12: liveins: $vgpr0282 ; GFX12-NEXT: {{ $}}283 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0284 ; GFX12-NEXT: [[SCRATCH_LOAD_DWORD:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load (<2 x s16>), addrspace 5)285 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_DWORD]]286 %0:vgpr(p5) = COPY $vgpr0287 %1:vgpr(<2 x s16>) = G_LOAD %0 :: (load (<2 x s16>), align 4, addrspace 5)288 $vgpr0 = COPY %1289 290...291 292################################################################################293### Stress addressing modes294################################################################################295 296---297 298name: load_private_s32_from_1_gep_2047299legalized: true300regBankSelected: true301tracksRegLiveness: true302machineFunctionInfo:303 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3304 stackPtrOffsetReg: $sgpr32305 306body: |307 bb.0:308 liveins: $vgpr0309 310 ; GFX6-LABEL: name: load_private_s32_from_1_gep_2047311 ; GFX6: liveins: $vgpr0312 ; GFX6-NEXT: {{ $}}313 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0314 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2047, implicit $exec315 ; 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 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec316 ; GFX6-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_CO_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)317 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]318 ;319 ; GFX9-LABEL: name: load_private_s32_from_1_gep_2047320 ; GFX9: liveins: $vgpr0321 ; GFX9-NEXT: {{ $}}322 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0323 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 2047, 0, 0, implicit $exec :: (load (s8), addrspace 5)324 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]325 ;326 ; GFX11-LABEL: name: load_private_s32_from_1_gep_2047327 ; GFX11: liveins: $vgpr0328 ; GFX11-NEXT: {{ $}}329 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0330 ; GFX11-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2047, implicit $exec331 ; GFX11-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec332 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_ADD_U32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)333 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]334 ;335 ; GFX12-LABEL: name: load_private_s32_from_1_gep_2047336 ; GFX12: liveins: $vgpr0337 ; GFX12-NEXT: {{ $}}338 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0339 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], 2047, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)340 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]341 %0:vgpr(p5) = COPY $vgpr0342 %1:vgpr(s32) = G_CONSTANT i32 2047343 %2:vgpr(p5) = G_PTR_ADD %0, %1344 %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 5)345 $vgpr0 = COPY %3346 347...348 349---350 351name: load_private_s32_from_1_gep_2047_known_bits352legalized: true353regBankSelected: true354tracksRegLiveness: true355machineFunctionInfo:356 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3357 stackPtrOffsetReg: $sgpr32358 359body: |360 bb.0:361 liveins: $vgpr0362 363 ; GFX9-LABEL: name: load_private_s32_from_1_gep_2047_known_bits364 ; GFX9: liveins: $vgpr0365 ; GFX9-NEXT: {{ $}}366 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0367 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2147483647, implicit $exec368 ; GFX9-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY]], [[V_MOV_B32_e32_]], implicit $exec369 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_AND_B32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 2047, 0, 0, implicit $exec :: (load (s8), addrspace 5)370 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]371 ;372 ; GFX11-LABEL: name: load_private_s32_from_1_gep_2047_known_bits373 ; GFX11: liveins: $vgpr0374 ; GFX11-NEXT: {{ $}}375 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0376 ; GFX11-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2147483647, implicit $exec377 ; GFX11-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY]], [[V_MOV_B32_e32_]], implicit $exec378 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_AND_B32_e64_]], 2047, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)379 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]380 ;381 ; GFX12-LABEL: name: load_private_s32_from_1_gep_2047_known_bits382 ; GFX12: liveins: $vgpr0383 ; GFX12-NEXT: {{ $}}384 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0385 ; GFX12-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2147483647, implicit $exec386 ; GFX12-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY]], [[V_MOV_B32_e32_]], implicit $exec387 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_AND_B32_e64_]], 2047, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)388 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]389 %0:vgpr(s32) = COPY $vgpr0390 %1:vgpr(s32) = G_CONSTANT i32 2147483647391 %2:vgpr(s32) = G_AND %0, %1392 %3:vgpr(p5) = G_INTTOPTR %2393 %4:vgpr(s32) = G_CONSTANT i32 2047394 %5:vgpr(p5) = G_PTR_ADD %3, %4395 %6:vgpr(s32) = G_LOAD %5 :: (load (s8), align 1, addrspace 5)396 $vgpr0 = COPY %6397 398...399 400---401 402name: load_private_s32_from_1_gep_2048403legalized: true404regBankSelected: true405tracksRegLiveness: true406machineFunctionInfo:407 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3408 stackPtrOffsetReg: $sgpr32409 410body: |411 bb.0:412 liveins: $vgpr0413 414 ; GFX6-LABEL: name: load_private_s32_from_1_gep_2048415 ; GFX6: liveins: $vgpr0416 ; GFX6-NEXT: {{ $}}417 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0418 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2048, implicit $exec419 ; 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 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec420 ; GFX6-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_CO_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)421 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]422 ;423 ; GFX9-LABEL: name: load_private_s32_from_1_gep_2048424 ; GFX9: liveins: $vgpr0425 ; GFX9-NEXT: {{ $}}426 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0427 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 2048, 0, 0, implicit $exec :: (load (s8), addrspace 5)428 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]429 ;430 ; GFX11-LABEL: name: load_private_s32_from_1_gep_2048431 ; GFX11: liveins: $vgpr0432 ; GFX11-NEXT: {{ $}}433 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0434 ; GFX11-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2048, implicit $exec435 ; GFX11-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec436 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_ADD_U32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)437 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]438 ;439 ; GFX12-LABEL: name: load_private_s32_from_1_gep_2048440 ; GFX12: liveins: $vgpr0441 ; GFX12-NEXT: {{ $}}442 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0443 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], 2048, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)444 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]445 %0:vgpr(p5) = COPY $vgpr0446 %1:vgpr(s32) = G_CONSTANT i32 2048447 %2:vgpr(p5) = G_PTR_ADD %0, %1448 %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 5)449 $vgpr0 = COPY %3450 451...452 453---454 455name: load_private_s32_from_1_gep_m2047456legalized: true457regBankSelected: true458tracksRegLiveness: true459machineFunctionInfo:460 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3461 stackPtrOffsetReg: $sgpr32462 463body: |464 bb.0:465 liveins: $vgpr0466 467 ; GFX6-LABEL: name: load_private_s32_from_1_gep_m2047468 ; GFX6: liveins: $vgpr0469 ; GFX6-NEXT: {{ $}}470 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0471 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -2047, implicit $exec472 ; 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 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec473 ; GFX6-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_CO_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)474 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]475 ;476 ; GFX9-LABEL: name: load_private_s32_from_1_gep_m2047477 ; GFX9: liveins: $vgpr0478 ; GFX9-NEXT: {{ $}}479 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0480 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -2047, implicit $exec481 ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec482 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)483 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]484 ;485 ; GFX11-LABEL: name: load_private_s32_from_1_gep_m2047486 ; GFX11: liveins: $vgpr0487 ; GFX11-NEXT: {{ $}}488 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0489 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], -2047, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)490 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]491 ;492 ; GFX12-LABEL: name: load_private_s32_from_1_gep_m2047493 ; GFX12: liveins: $vgpr0494 ; GFX12-NEXT: {{ $}}495 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0496 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], -2047, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)497 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]498 %0:vgpr(p5) = COPY $vgpr0499 %1:vgpr(s32) = G_CONSTANT i32 -2047500 %2:vgpr(p5) = G_PTR_ADD %0, %1501 %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 5)502 $vgpr0 = COPY %3503 504...505 506---507 508name: load_private_s32_from_1_gep_m2048509legalized: true510regBankSelected: true511tracksRegLiveness: true512machineFunctionInfo:513 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3514 stackPtrOffsetReg: $sgpr32515 516body: |517 bb.0:518 liveins: $vgpr0519 520 ; GFX6-LABEL: name: load_private_s32_from_1_gep_m2048521 ; GFX6: liveins: $vgpr0522 ; GFX6-NEXT: {{ $}}523 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0524 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -2048, implicit $exec525 ; 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 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec526 ; GFX6-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_CO_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)527 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]528 ;529 ; GFX9-LABEL: name: load_private_s32_from_1_gep_m2048530 ; GFX9: liveins: $vgpr0531 ; GFX9-NEXT: {{ $}}532 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0533 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -2048, implicit $exec534 ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec535 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)536 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]537 ;538 ; GFX11-LABEL: name: load_private_s32_from_1_gep_m2048539 ; GFX11: liveins: $vgpr0540 ; GFX11-NEXT: {{ $}}541 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0542 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], -2048, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)543 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]544 ;545 ; GFX12-LABEL: name: load_private_s32_from_1_gep_m2048546 ; GFX12: liveins: $vgpr0547 ; GFX12-NEXT: {{ $}}548 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0549 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], -2048, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)550 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]551 %0:vgpr(p5) = COPY $vgpr0552 %1:vgpr(s32) = G_CONSTANT i32 -2048553 %2:vgpr(p5) = G_PTR_ADD %0, %1554 %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 5)555 $vgpr0 = COPY %3556 557...558 559---560 561name: load_private_s32_from_1_gep_4095562legalized: true563regBankSelected: true564tracksRegLiveness: true565machineFunctionInfo:566 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3567 stackPtrOffsetReg: $sgpr32568 569body: |570 bb.0:571 liveins: $vgpr0572 573 ; GFX6-LABEL: name: load_private_s32_from_1_gep_4095574 ; GFX6: liveins: $vgpr0575 ; GFX6-NEXT: {{ $}}576 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0577 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4095, implicit $exec578 ; 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 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec579 ; GFX6-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_CO_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)580 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]581 ;582 ; GFX9-LABEL: name: load_private_s32_from_1_gep_4095583 ; GFX9: liveins: $vgpr0584 ; GFX9-NEXT: {{ $}}585 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0586 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[COPY]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, implicit $exec :: (load (s8), addrspace 5)587 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]588 ;589 ; GFX11-LABEL: name: load_private_s32_from_1_gep_4095590 ; GFX11: liveins: $vgpr0591 ; GFX11-NEXT: {{ $}}592 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0593 ; GFX11-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4095, implicit $exec594 ; GFX11-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec595 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_ADD_U32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)596 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]597 ;598 ; GFX12-LABEL: name: load_private_s32_from_1_gep_4095599 ; GFX12: liveins: $vgpr0600 ; GFX12-NEXT: {{ $}}601 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0602 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], 4095, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)603 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]604 %0:vgpr(p5) = COPY $vgpr0605 %1:vgpr(s32) = G_CONSTANT i32 4095606 %2:vgpr(p5) = G_PTR_ADD %0, %1607 %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 5)608 $vgpr0 = COPY %3609 610...611 612---613 614name: load_private_s32_from_1_gep_4096615legalized: true616regBankSelected: true617tracksRegLiveness: true618machineFunctionInfo:619 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3620 stackPtrOffsetReg: $sgpr32621 622body: |623 bb.0:624 liveins: $vgpr0625 626 ; GFX6-LABEL: name: load_private_s32_from_1_gep_4096627 ; GFX6: liveins: $vgpr0628 ; GFX6-NEXT: {{ $}}629 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0630 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec631 ; 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 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec632 ; GFX6-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_CO_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)633 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]634 ;635 ; GFX9-LABEL: name: load_private_s32_from_1_gep_4096636 ; GFX9: liveins: $vgpr0637 ; GFX9-NEXT: {{ $}}638 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0639 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec640 ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec641 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)642 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]643 ;644 ; GFX11-LABEL: name: load_private_s32_from_1_gep_4096645 ; GFX11: liveins: $vgpr0646 ; GFX11-NEXT: {{ $}}647 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0648 ; GFX11-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec649 ; GFX11-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec650 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_ADD_U32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)651 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]652 ;653 ; GFX12-LABEL: name: load_private_s32_from_1_gep_4096654 ; GFX12: liveins: $vgpr0655 ; GFX12-NEXT: {{ $}}656 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0657 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], 4096, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)658 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]659 %0:vgpr(p5) = COPY $vgpr0660 %1:vgpr(s32) = G_CONSTANT i32 4096661 %2:vgpr(p5) = G_PTR_ADD %0, %1662 %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 5)663 $vgpr0 = COPY %3664 665...666 667---668 669name: load_private_s32_from_1_gep_m4095670legalized: true671regBankSelected: true672tracksRegLiveness: true673machineFunctionInfo:674 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3675 stackPtrOffsetReg: $sgpr32676 677body: |678 bb.0:679 liveins: $vgpr0680 681 ; GFX6-LABEL: name: load_private_s32_from_1_gep_m4095682 ; GFX6: liveins: $vgpr0683 ; GFX6-NEXT: {{ $}}684 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0685 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -4095, implicit $exec686 ; 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 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec687 ; GFX6-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_CO_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)688 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]689 ;690 ; GFX9-LABEL: name: load_private_s32_from_1_gep_m4095691 ; GFX9: liveins: $vgpr0692 ; GFX9-NEXT: {{ $}}693 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0694 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -4095, implicit $exec695 ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec696 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)697 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]698 ;699 ; GFX11-LABEL: name: load_private_s32_from_1_gep_m4095700 ; GFX11: liveins: $vgpr0701 ; GFX11-NEXT: {{ $}}702 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0703 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], -4095, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)704 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]705 ;706 ; GFX12-LABEL: name: load_private_s32_from_1_gep_m4095707 ; GFX12: liveins: $vgpr0708 ; GFX12-NEXT: {{ $}}709 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0710 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], -4095, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)711 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]712 %0:vgpr(p5) = COPY $vgpr0713 %1:vgpr(s32) = G_CONSTANT i32 -4095714 %2:vgpr(p5) = G_PTR_ADD %0, %1715 %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 5)716 $vgpr0 = COPY %3717 718...719 720---721 722name: load_private_s32_from_1_gep_m4096723legalized: true724regBankSelected: true725tracksRegLiveness: true726machineFunctionInfo:727 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3728 stackPtrOffsetReg: $sgpr32729 730body: |731 bb.0:732 liveins: $vgpr0733 734 ; GFX6-LABEL: name: load_private_s32_from_1_gep_m4096735 ; GFX6: liveins: $vgpr0736 ; GFX6-NEXT: {{ $}}737 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0738 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -4096, implicit $exec739 ; 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 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec740 ; GFX6-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_CO_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)741 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]742 ;743 ; GFX9-LABEL: name: load_private_s32_from_1_gep_m4096744 ; GFX9: liveins: $vgpr0745 ; GFX9-NEXT: {{ $}}746 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0747 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -4096, implicit $exec748 ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec749 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)750 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]751 ;752 ; GFX11-LABEL: name: load_private_s32_from_1_gep_m4096753 ; GFX11: liveins: $vgpr0754 ; GFX11-NEXT: {{ $}}755 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0756 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], -4096, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)757 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]758 ;759 ; GFX12-LABEL: name: load_private_s32_from_1_gep_m4096760 ; GFX12: liveins: $vgpr0761 ; GFX12-NEXT: {{ $}}762 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0763 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], -4096, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)764 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]765 %0:vgpr(p5) = COPY $vgpr0766 %1:vgpr(s32) = G_CONSTANT i32 -4096767 %2:vgpr(p5) = G_PTR_ADD %0, %1768 %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 5)769 $vgpr0 = COPY %3770 771...772 773---774 775name: load_private_s32_from_1_gep_8191776legalized: true777regBankSelected: true778tracksRegLiveness: true779machineFunctionInfo:780 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3781 stackPtrOffsetReg: $sgpr32782 783body: |784 bb.0:785 liveins: $vgpr0786 787 ; GFX6-LABEL: name: load_private_s32_from_1_gep_8191788 ; GFX6: liveins: $vgpr0789 ; GFX6-NEXT: {{ $}}790 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0791 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 8191, implicit $exec792 ; 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 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec793 ; GFX6-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_CO_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)794 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]795 ;796 ; GFX9-LABEL: name: load_private_s32_from_1_gep_8191797 ; GFX9: liveins: $vgpr0798 ; GFX9-NEXT: {{ $}}799 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0800 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 8191, implicit $exec801 ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec802 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)803 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]804 ;805 ; GFX11-LABEL: name: load_private_s32_from_1_gep_8191806 ; GFX11: liveins: $vgpr0807 ; GFX11-NEXT: {{ $}}808 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0809 ; GFX11-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 8191, implicit $exec810 ; GFX11-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec811 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_ADD_U32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)812 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]813 ;814 ; GFX12-LABEL: name: load_private_s32_from_1_gep_8191815 ; GFX12: liveins: $vgpr0816 ; GFX12-NEXT: {{ $}}817 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0818 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], 8191, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)819 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]820 %0:vgpr(p5) = COPY $vgpr0821 %1:vgpr(s32) = G_CONSTANT i32 8191822 %2:vgpr(p5) = G_PTR_ADD %0, %1823 %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 5)824 $vgpr0 = COPY %3825 826...827 828---829 830name: load_private_s32_from_1_gep_8192831legalized: true832regBankSelected: true833tracksRegLiveness: true834machineFunctionInfo:835 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3836 stackPtrOffsetReg: $sgpr32837 838body: |839 bb.0:840 liveins: $vgpr0841 842 ; GFX6-LABEL: name: load_private_s32_from_1_gep_8192843 ; GFX6: liveins: $vgpr0844 ; GFX6-NEXT: {{ $}}845 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0846 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 8192, implicit $exec847 ; 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 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec848 ; GFX6-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_CO_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)849 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]850 ;851 ; GFX9-LABEL: name: load_private_s32_from_1_gep_8192852 ; GFX9: liveins: $vgpr0853 ; GFX9-NEXT: {{ $}}854 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0855 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 8192, implicit $exec856 ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec857 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)858 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]859 ;860 ; GFX11-LABEL: name: load_private_s32_from_1_gep_8192861 ; GFX11: liveins: $vgpr0862 ; GFX11-NEXT: {{ $}}863 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0864 ; GFX11-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 8192, implicit $exec865 ; GFX11-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec866 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_ADD_U32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)867 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]868 ;869 ; GFX12-LABEL: name: load_private_s32_from_1_gep_8192870 ; GFX12: liveins: $vgpr0871 ; GFX12-NEXT: {{ $}}872 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0873 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], 8192, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)874 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]875 %0:vgpr(p5) = COPY $vgpr0876 %1:vgpr(s32) = G_CONSTANT i32 8192877 %2:vgpr(p5) = G_PTR_ADD %0, %1878 %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 5)879 $vgpr0 = COPY %3880 881...882 883---884 885name: load_private_s32_from_1_gep_m8191886legalized: true887regBankSelected: true888tracksRegLiveness: true889machineFunctionInfo:890 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3891 stackPtrOffsetReg: $sgpr32892 893body: |894 bb.0:895 liveins: $vgpr0896 897 ; GFX6-LABEL: name: load_private_s32_from_1_gep_m8191898 ; GFX6: liveins: $vgpr0899 ; GFX6-NEXT: {{ $}}900 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0901 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -8191, implicit $exec902 ; 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 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec903 ; GFX6-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_CO_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)904 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]905 ;906 ; GFX9-LABEL: name: load_private_s32_from_1_gep_m8191907 ; GFX9: liveins: $vgpr0908 ; GFX9-NEXT: {{ $}}909 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0910 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -8191, implicit $exec911 ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec912 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)913 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]914 ;915 ; GFX11-LABEL: name: load_private_s32_from_1_gep_m8191916 ; GFX11: liveins: $vgpr0917 ; GFX11-NEXT: {{ $}}918 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0919 ; GFX11-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -8191, implicit $exec920 ; GFX11-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec921 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_ADD_U32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)922 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]923 ;924 ; GFX12-LABEL: name: load_private_s32_from_1_gep_m8191925 ; GFX12: liveins: $vgpr0926 ; GFX12-NEXT: {{ $}}927 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0928 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], -8191, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)929 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]930 %0:vgpr(p5) = COPY $vgpr0931 %1:vgpr(s32) = G_CONSTANT i32 -8191932 %2:vgpr(p5) = G_PTR_ADD %0, %1933 %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 5)934 $vgpr0 = COPY %3935 936...937 938---939 940name: load_private_s32_from_1_gep_m8192941legalized: true942regBankSelected: true943tracksRegLiveness: true944machineFunctionInfo:945 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3946 stackPtrOffsetReg: $sgpr32947 948body: |949 bb.0:950 liveins: $vgpr0951 952 ; GFX6-LABEL: name: load_private_s32_from_1_gep_m8192953 ; GFX6: liveins: $vgpr0954 ; GFX6-NEXT: {{ $}}955 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0956 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -8192, implicit $exec957 ; 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 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec958 ; GFX6-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_CO_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)959 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]960 ;961 ; GFX9-LABEL: name: load_private_s32_from_1_gep_m8192962 ; GFX9: liveins: $vgpr0963 ; GFX9-NEXT: {{ $}}964 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0965 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -8192, implicit $exec966 ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec967 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)968 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]969 ;970 ; GFX11-LABEL: name: load_private_s32_from_1_gep_m8192971 ; GFX11: liveins: $vgpr0972 ; GFX11-NEXT: {{ $}}973 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0974 ; GFX11-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -8192, implicit $exec975 ; GFX11-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec976 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_ADD_U32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)977 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]978 ;979 ; GFX12-LABEL: name: load_private_s32_from_1_gep_m8192980 ; GFX12: liveins: $vgpr0981 ; GFX12-NEXT: {{ $}}982 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0983 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], -8192, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)984 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]985 %0:vgpr(p5) = COPY $vgpr0986 %1:vgpr(s32) = G_CONSTANT i32 -8192987 %2:vgpr(p5) = G_PTR_ADD %0, %1988 %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 5)989 $vgpr0 = COPY %3990 991...992 993---994 995name: load_private_s32_from_1_gep_24bit_max996legalized: true997regBankSelected: true998tracksRegLiveness: true999machineFunctionInfo:1000 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr31001 stackPtrOffsetReg: $sgpr321002 1003body: |1004 bb.0:1005 liveins: $vgpr01006 1007 ; GFX6-LABEL: name: load_private_s32_from_1_gep_24bit_max1008 ; GFX6: liveins: $vgpr01009 ; GFX6-NEXT: {{ $}}1010 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01011 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 8388607, implicit $exec1012 ; 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 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec1013 ; GFX6-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_CO_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)1014 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]1015 ;1016 ; GFX9-LABEL: name: load_private_s32_from_1_gep_24bit_max1017 ; GFX9: liveins: $vgpr01018 ; GFX9-NEXT: {{ $}}1019 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01020 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 8388607, implicit $exec1021 ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec1022 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)1023 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]1024 ;1025 ; GFX11-LABEL: name: load_private_s32_from_1_gep_24bit_max1026 ; GFX11: liveins: $vgpr01027 ; GFX11-NEXT: {{ $}}1028 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01029 ; GFX11-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 8388607, implicit $exec1030 ; GFX11-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec1031 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_ADD_U32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)1032 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]1033 ;1034 ; GFX12-LABEL: name: load_private_s32_from_1_gep_24bit_max1035 ; GFX12: liveins: $vgpr01036 ; GFX12-NEXT: {{ $}}1037 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01038 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], 8388607, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)1039 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]1040 %0:vgpr(p5) = COPY $vgpr01041 %1:vgpr(s32) = G_CONSTANT i32 83886071042 %2:vgpr(p5) = G_PTR_ADD %0, %11043 %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 5)1044 $vgpr0 = COPY %31045 1046...1047 1048---1049 1050name: load_private_s32_from_1_gep_2x_24bit_max1051legalized: true1052regBankSelected: true1053tracksRegLiveness: true1054machineFunctionInfo:1055 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr31056 stackPtrOffsetReg: $sgpr321057 1058body: |1059 bb.0:1060 liveins: $vgpr01061 1062 ; GFX6-LABEL: name: load_private_s32_from_1_gep_2x_24bit_max1063 ; GFX6: liveins: $vgpr01064 ; GFX6-NEXT: {{ $}}1065 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01066 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 16777214, implicit $exec1067 ; 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 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec1068 ; GFX6-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_CO_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)1069 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]1070 ;1071 ; GFX9-LABEL: name: load_private_s32_from_1_gep_2x_24bit_max1072 ; GFX9: liveins: $vgpr01073 ; GFX9-NEXT: {{ $}}1074 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01075 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 16777214, implicit $exec1076 ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec1077 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)1078 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]1079 ;1080 ; GFX11-LABEL: name: load_private_s32_from_1_gep_2x_24bit_max1081 ; GFX11: liveins: $vgpr01082 ; GFX11-NEXT: {{ $}}1083 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01084 ; GFX11-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 16777214, implicit $exec1085 ; GFX11-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec1086 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_ADD_U32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)1087 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]1088 ;1089 ; GFX12-LABEL: name: load_private_s32_from_1_gep_2x_24bit_max1090 ; GFX12: liveins: $vgpr01091 ; GFX12-NEXT: {{ $}}1092 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01093 ; GFX12-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 16777214, implicit $exec1094 ; GFX12-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec1095 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_ADD_U32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)1096 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]1097 %0:vgpr(p5) = COPY $vgpr01098 %1:vgpr(s32) = G_CONSTANT i32 167772141099 %2:vgpr(p5) = G_PTR_ADD %0, %11100 %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 5)1101 $vgpr0 = COPY %31102 1103...1104 1105---1106 1107name: load_private_s32_from_1_gep_24bit_min1108legalized: true1109regBankSelected: true1110tracksRegLiveness: true1111machineFunctionInfo:1112 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr31113 stackPtrOffsetReg: $sgpr321114 1115body: |1116 bb.0:1117 liveins: $vgpr01118 1119 ; GFX6-LABEL: name: load_private_s32_from_1_gep_24bit_min1120 ; GFX6: liveins: $vgpr01121 ; GFX6-NEXT: {{ $}}1122 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01123 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -8388608, implicit $exec1124 ; 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 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec1125 ; GFX6-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_CO_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)1126 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]1127 ;1128 ; GFX9-LABEL: name: load_private_s32_from_1_gep_24bit_min1129 ; GFX9: liveins: $vgpr01130 ; GFX9-NEXT: {{ $}}1131 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01132 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -8388608, implicit $exec1133 ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec1134 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)1135 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]1136 ;1137 ; GFX11-LABEL: name: load_private_s32_from_1_gep_24bit_min1138 ; GFX11: liveins: $vgpr01139 ; GFX11-NEXT: {{ $}}1140 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01141 ; GFX11-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -8388608, implicit $exec1142 ; GFX11-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec1143 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_ADD_U32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)1144 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]1145 ;1146 ; GFX12-LABEL: name: load_private_s32_from_1_gep_24bit_min1147 ; GFX12: liveins: $vgpr01148 ; GFX12-NEXT: {{ $}}1149 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01150 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[COPY]], -8388608, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)1151 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]1152 %0:vgpr(p5) = COPY $vgpr01153 %1:vgpr(s32) = G_CONSTANT i32 -83886081154 %2:vgpr(p5) = G_PTR_ADD %0, %11155 %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 5)1156 $vgpr0 = COPY %31157 1158...1159 1160---1161 1162name: load_private_s32_from_1_gep_2x_24bit_min1163legalized: true1164regBankSelected: true1165tracksRegLiveness: true1166machineFunctionInfo:1167 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr31168 stackPtrOffsetReg: $sgpr321169 1170body: |1171 bb.0:1172 liveins: $vgpr01173 1174 ; GFX6-LABEL: name: load_private_s32_from_1_gep_2x_24bit_min1175 ; GFX6: liveins: $vgpr01176 ; GFX6-NEXT: {{ $}}1177 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01178 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -16777215, implicit $exec1179 ; 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 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec1180 ; GFX6-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_CO_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)1181 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]1182 ;1183 ; GFX9-LABEL: name: load_private_s32_from_1_gep_2x_24bit_min1184 ; GFX9: liveins: $vgpr01185 ; GFX9-NEXT: {{ $}}1186 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01187 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -16777215, implicit $exec1188 ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec1189 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)1190 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]1191 ;1192 ; GFX11-LABEL: name: load_private_s32_from_1_gep_2x_24bit_min1193 ; GFX11: liveins: $vgpr01194 ; GFX11-NEXT: {{ $}}1195 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01196 ; GFX11-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -16777215, implicit $exec1197 ; GFX11-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec1198 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_ADD_U32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)1199 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]1200 ;1201 ; GFX12-LABEL: name: load_private_s32_from_1_gep_2x_24bit_min1202 ; GFX12: liveins: $vgpr01203 ; GFX12-NEXT: {{ $}}1204 ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01205 ; GFX12-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -16777215, implicit $exec1206 ; GFX12-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec1207 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_ADD_U32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)1208 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]1209 %0:vgpr(p5) = COPY $vgpr01210 %1:vgpr(s32) = G_CONSTANT i32 -167772151211 %2:vgpr(p5) = G_PTR_ADD %0, %11212 %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 5)1213 $vgpr0 = COPY %31214 1215...1216 1217---1218 1219name: load_private_s32_from_4_constant_01220legalized: true1221regBankSelected: true1222tracksRegLiveness: true1223machineFunctionInfo:1224 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr31225 stackPtrOffsetReg: $sgpr321226 1227body: |1228 bb.0:1229 1230 ; GFX6-LABEL: name: load_private_s32_from_4_constant_01231 ; GFX6: [[BUFFER_LOAD_DWORD_OFFSET:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s32), addrspace 5)1232 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFSET]]1233 ;1234 ; GFX9-LABEL: name: load_private_s32_from_4_constant_01235 ; GFX9: [[BUFFER_LOAD_DWORD_OFFSET:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s32), addrspace 5)1236 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFSET]]1237 ;1238 ; GFX11-LABEL: name: load_private_s32_from_4_constant_01239 ; GFX11: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec1240 ; GFX11-NEXT: [[SCRATCH_LOAD_DWORD:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD [[V_MOV_B32_e32_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s32), addrspace 5)1241 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_DWORD]]1242 ;1243 ; GFX12-LABEL: name: load_private_s32_from_4_constant_01244 ; GFX12: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec1245 ; GFX12-NEXT: [[SCRATCH_LOAD_DWORD:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD [[V_MOV_B32_e32_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s32), addrspace 5)1246 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_DWORD]]1247 %0:vgpr(p5) = G_CONSTANT i32 01248 %1:vgpr(s32) = G_LOAD %0 :: (load (s32), align 4, addrspace 5)1249 $vgpr0 = COPY %11250 1251...1252 1253---1254 1255name: load_private_s32_from_4_constant_sgpr_161256legalized: true1257regBankSelected: true1258tracksRegLiveness: true1259machineFunctionInfo:1260 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr31261 stackPtrOffsetReg: $sgpr321262 1263body: |1264 bb.0:1265 1266 ; GFX6-LABEL: name: load_private_s32_from_4_constant_sgpr_161267 ; GFX6: [[BUFFER_LOAD_DWORD_OFFSET:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET $sgpr0_sgpr1_sgpr2_sgpr3, 0, 16, 0, 0, implicit $exec :: (load (s32), addrspace 5)1268 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFSET]]1269 ;1270 ; GFX9-LABEL: name: load_private_s32_from_4_constant_sgpr_161271 ; GFX9: [[BUFFER_LOAD_DWORD_OFFSET:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET $sgpr0_sgpr1_sgpr2_sgpr3, 0, 16, 0, 0, implicit $exec :: (load (s32), addrspace 5)1272 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFSET]]1273 ;1274 ; GFX11-LABEL: name: load_private_s32_from_4_constant_sgpr_161275 ; GFX11: [[S_MOV_B32_:%[0-9]+]]:sreg_32_xexec_hi = S_MOV_B32 161276 ; GFX11-NEXT: [[SCRATCH_LOAD_DWORD_SADDR:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD_SADDR [[S_MOV_B32_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s32), addrspace 5)1277 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_DWORD_SADDR]]1278 ;1279 ; GFX12-LABEL: name: load_private_s32_from_4_constant_sgpr_161280 ; GFX12: [[S_MOV_B32_:%[0-9]+]]:sreg_32_xexec_hi = S_MOV_B32 161281 ; GFX12-NEXT: [[SCRATCH_LOAD_DWORD_SADDR:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD_SADDR [[S_MOV_B32_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s32), addrspace 5)1282 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_DWORD_SADDR]]1283 %0:sgpr(p5) = G_CONSTANT i32 161284 %1:vgpr(s32) = G_LOAD %0 :: (load (s32), align 4, addrspace 5)1285 $vgpr0 = COPY %11286 1287...1288 1289---1290 1291name: load_private_s32_from_1_constant_40951292legalized: true1293regBankSelected: true1294tracksRegLiveness: true1295machineFunctionInfo:1296 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr31297 stackPtrOffsetReg: $sgpr321298 1299body: |1300 bb.0:1301 1302 ; GFX6-LABEL: name: load_private_s32_from_1_constant_40951303 ; GFX6: [[BUFFER_LOAD_UBYTE_OFFSET:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFSET $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, implicit $exec :: (load (s8), addrspace 5)1304 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFSET]]1305 ;1306 ; GFX9-LABEL: name: load_private_s32_from_1_constant_40951307 ; GFX9: [[BUFFER_LOAD_UBYTE_OFFSET:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFSET $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, implicit $exec :: (load (s8), addrspace 5)1308 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFSET]]1309 ;1310 ; GFX11-LABEL: name: load_private_s32_from_1_constant_40951311 ; GFX11: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4095, implicit $exec1312 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_MOV_B32_e32_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)1313 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]1314 ;1315 ; GFX12-LABEL: name: load_private_s32_from_1_constant_40951316 ; GFX12: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4095, implicit $exec1317 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_MOV_B32_e32_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)1318 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]1319 %0:vgpr(p5) = G_CONSTANT i32 40951320 %1:vgpr(s32) = G_LOAD %0 :: (load (s8), align 1, addrspace 5)1321 $vgpr0 = COPY %11322 1323...1324 1325---1326 1327name: load_private_s32_from_1_constant_40961328legalized: true1329regBankSelected: true1330tracksRegLiveness: true1331machineFunctionInfo:1332 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr31333 stackPtrOffsetReg: $sgpr321334 1335body: |1336 bb.0:1337 1338 ; GFX6-LABEL: name: load_private_s32_from_1_constant_40961339 ; GFX6: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec1340 ; GFX6-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_MOV_B32_e32_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)1341 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]1342 ;1343 ; GFX9-LABEL: name: load_private_s32_from_1_constant_40961344 ; GFX9: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec1345 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_MOV_B32_e32_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)1346 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]1347 ;1348 ; GFX11-LABEL: name: load_private_s32_from_1_constant_40961349 ; GFX11: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec1350 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_MOV_B32_e32_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)1351 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]1352 ;1353 ; GFX12-LABEL: name: load_private_s32_from_1_constant_40961354 ; GFX12: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec1355 ; GFX12-NEXT: [[SCRATCH_LOAD_UBYTE:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE [[V_MOV_B32_e32_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)1356 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE]]1357 %0:vgpr(p5) = G_CONSTANT i32 40961358 %1:vgpr(s32) = G_LOAD %0 :: (load (s8), align 1, addrspace 5)1359 $vgpr0 = COPY %11360 1361...1362 1363---1364 1365name: load_private_s32_from_fi1366legalized: true1367regBankSelected: true1368tracksRegLiveness: true1369machineFunctionInfo:1370 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr31371 stackPtrOffsetReg: $sgpr321372stack:1373 - { id: 0, size: 4, alignment: 4 }1374 1375body: |1376 bb.0:1377 1378 ; GFX6-LABEL: name: load_private_s32_from_fi1379 ; GFX6: [[BUFFER_LOAD_DWORD_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s32), addrspace 5)1380 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFEN]]1381 ;1382 ; GFX9-LABEL: name: load_private_s32_from_fi1383 ; GFX9: [[BUFFER_LOAD_DWORD_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s32), addrspace 5)1384 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFEN]]1385 ;1386 ; GFX11-LABEL: name: load_private_s32_from_fi1387 ; GFX11: [[SCRATCH_LOAD_DWORD_SADDR:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD_SADDR %stack.0, 0, 0, implicit $exec, implicit $flat_scr :: (load (s32), addrspace 5)1388 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_DWORD_SADDR]]1389 ;1390 ; GFX12-LABEL: name: load_private_s32_from_fi1391 ; GFX12: [[SCRATCH_LOAD_DWORD_SADDR:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD_SADDR %stack.0, 0, 0, implicit $exec, implicit $flat_scr :: (load (s32), addrspace 5)1392 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_DWORD_SADDR]]1393 %0:vgpr(p5) = G_FRAME_INDEX %stack.01394 %1:vgpr(s32) = G_LOAD %0 :: (load (s32), align 4, addrspace 5)1395 $vgpr0 = COPY %11396 1397...1398 1399---1400name: load_private_s32_from_1_fi_offset_40951401legalized: true1402regBankSelected: true1403tracksRegLiveness: true1404machineFunctionInfo:1405 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr31406 stackPtrOffsetReg: $sgpr321407stack:1408 - { id: 0, size: 4096, alignment: 4 }1409 1410body: |1411 bb.0:1412 1413 ; GFX6-LABEL: name: load_private_s32_from_1_fi_offset_40951414 ; GFX6: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, implicit $exec :: (load (s8), addrspace 5)1415 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]1416 ;1417 ; GFX9-LABEL: name: load_private_s32_from_1_fi_offset_40951418 ; GFX9: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, implicit $exec :: (load (s8), addrspace 5)1419 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]1420 ;1421 ; GFX11-LABEL: name: load_private_s32_from_1_fi_offset_40951422 ; GFX11: [[SCRATCH_LOAD_UBYTE_SADDR:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE_SADDR %stack.0, 4095, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)1423 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE_SADDR]]1424 ;1425 ; GFX12-LABEL: name: load_private_s32_from_1_fi_offset_40951426 ; GFX12: [[SCRATCH_LOAD_UBYTE_SADDR:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE_SADDR %stack.0, 4095, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)1427 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE_SADDR]]1428 %0:vgpr(p5) = G_FRAME_INDEX %stack.01429 %1:vgpr(s32) = G_CONSTANT i32 40951430 %2:vgpr(p5) = G_PTR_ADD %0, %11431 %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 5)1432 $vgpr0 = COPY %31433 1434...1435 1436# Have to hack around the copy of the constant to VGPR1437---1438name: load_private_s32_from_1_fi_offset_sgpr_40951439legalized: true1440regBankSelected: true1441tracksRegLiveness: true1442machineFunctionInfo:1443 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr31444 stackPtrOffsetReg: $sgpr321445stack:1446 - { id: 0, size: 4096, alignment: 4 }1447 1448body: |1449 bb.0:1450 1451 ; GFX6-LABEL: name: load_private_s32_from_1_fi_offset_sgpr_40951452 ; GFX6: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, implicit $exec :: (load (s8), addrspace 5)1453 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]1454 ;1455 ; GFX9-LABEL: name: load_private_s32_from_1_fi_offset_sgpr_40951456 ; GFX9: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, implicit $exec :: (load (s8), addrspace 5)1457 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]1458 ;1459 ; GFX11-LABEL: name: load_private_s32_from_1_fi_offset_sgpr_40951460 ; GFX11: [[SCRATCH_LOAD_UBYTE_SADDR:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE_SADDR %stack.0, 4095, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)1461 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE_SADDR]]1462 ;1463 ; GFX12-LABEL: name: load_private_s32_from_1_fi_offset_sgpr_40951464 ; GFX12: [[SCRATCH_LOAD_UBYTE_SADDR:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE_SADDR %stack.0, 4095, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)1465 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE_SADDR]]1466 %0:vgpr(p5) = G_FRAME_INDEX %stack.01467 %1:sgpr(s32) = G_CONSTANT i32 40951468 %2:vgpr(s32) = COPY %11469 %3:vgpr(p5) = G_PTR_ADD %0, %21470 %4:vgpr(s32) = G_LOAD %3 :: (load (s8), align 1, addrspace 5)1471 $vgpr0 = COPY %41472 1473...1474 1475---1476 1477name: load_private_s32_from_1_fi_offset_40961478legalized: true1479regBankSelected: true1480tracksRegLiveness: true1481machineFunctionInfo:1482 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr31483 stackPtrOffsetReg: $sgpr321484stack:1485 - { id: 0, size: 8192, alignment: 4 }1486 1487body: |1488 bb.0:1489 1490 ; GFX6-LABEL: name: load_private_s32_from_1_fi_offset_40961491 ; GFX6: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec1492 ; GFX6-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec1493 ; 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_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], 0, implicit $exec1494 ; GFX6-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_CO_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)1495 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]1496 ;1497 ; GFX9-LABEL: name: load_private_s32_from_1_fi_offset_40961498 ; GFX9: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec1499 ; GFX9-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec1500 ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], 0, implicit $exec1501 ; GFX9-NEXT: [[BUFFER_LOAD_UBYTE_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_UBYTE_OFFEN [[V_ADD_U32_e64_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (load (s8), addrspace 5)1502 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_UBYTE_OFFEN]]1503 ;1504 ; GFX11-LABEL: name: load_private_s32_from_1_fi_offset_40961505 ; GFX11: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec1506 ; GFX11-NEXT: [[SCRATCH_LOAD_UBYTE_SVS:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE_SVS [[V_MOV_B32_e32_]], %stack.0, 0, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)1507 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE_SVS]]1508 ;1509 ; GFX12-LABEL: name: load_private_s32_from_1_fi_offset_40961510 ; GFX12: [[SCRATCH_LOAD_UBYTE_SADDR:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_UBYTE_SADDR %stack.0, 4096, 0, implicit $exec, implicit $flat_scr :: (load (s8), addrspace 5)1511 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_UBYTE_SADDR]]1512 %0:vgpr(p5) = G_FRAME_INDEX %stack.01513 %1:vgpr(s32) = G_CONSTANT i32 40961514 %2:vgpr(p5) = G_PTR_ADD %0, %11515 %3:vgpr(s32) = G_LOAD %2 :: (load (s8), align 1, addrspace 5)1516 $vgpr0 = COPY %31517 1518...1519 1520# Should not fold offset if this is a null dereference.1521---1522 1523name: load_private_s32_from_neg11524legalized: true1525regBankSelected: true1526tracksRegLiveness: true1527machineFunctionInfo:1528 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr31529 stackPtrOffsetReg: $sgpr321530 1531body: |1532 bb.0:1533 1534 ; GFX6-LABEL: name: load_private_s32_from_neg11535 ; GFX6: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec1536 ; GFX6-NEXT: [[BUFFER_LOAD_DWORD_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN [[V_MOV_B32_e32_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, -1, 0, 0, implicit $exec :: (load (s32), addrspace 5)1537 ; GFX6-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFEN]]1538 ;1539 ; GFX9-LABEL: name: load_private_s32_from_neg11540 ; GFX9: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec1541 ; GFX9-NEXT: [[BUFFER_LOAD_DWORD_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN [[V_MOV_B32_e32_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, -1, 0, 0, implicit $exec :: (load (s32), addrspace 5)1542 ; GFX9-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFEN]]1543 ;1544 ; GFX11-LABEL: name: load_private_s32_from_neg11545 ; GFX11: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec1546 ; GFX11-NEXT: [[SCRATCH_LOAD_DWORD:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD [[V_MOV_B32_e32_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s32), addrspace 5)1547 ; GFX11-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_DWORD]]1548 ;1549 ; GFX12-LABEL: name: load_private_s32_from_neg11550 ; GFX12: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec1551 ; GFX12-NEXT: [[SCRATCH_LOAD_DWORD:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD [[V_MOV_B32_e32_]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s32), addrspace 5)1552 ; GFX12-NEXT: $vgpr0 = COPY [[SCRATCH_LOAD_DWORD]]1553 %0:vgpr(p5) = G_CONSTANT i32 -11554 %1:vgpr(s32) = G_LOAD %0 :: (load (s32), align 4, addrspace 5)1555 $vgpr0 = COPY %11556 1557...1558