1# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefixes=CHECK,GCN64,MUBUF %s 2# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr=+wavefrontsize32,-wavefrontsize64 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefixes=CHECK,GCN32,MUBUF %s 3# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -amdgpu-enable-flat-scratch -run-pass=prologepilog %s -o - | FileCheck -check-prefixes=CHECK,GCN64,FLATSCR %s 4 5 6# CHECK-LABEL: name: check_spill 7 8# FLATSCR: $sgpr33 = S_MOV_B32 0 9# FLATSCR: $flat_scr_lo = S_ADD_U32 $sgpr0, $sgpr11, implicit-def $scc 10# FLATSCR: $flat_scr_hi = S_ADDC_U32 $sgpr1, 0, implicit-def $scc, implicit $scc 11 12# S32 with kill 13# CHECK: V_WRITELANE 14# CHECK: $sgpr12 = S_MOV_B32 $exec_lo 15# CHECK: $exec_lo = S_MOV_B32 1 16# MUBUF: BUFFER_STORE_DWORD_OFFSET killed $vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 4 17# FLATSCR: SCRATCH_STORE_DWORD_SADDR killed $vgpr{{[0-9]+}}, $sgpr33, 4 18# CHECK: $exec_lo = S_MOV_B32 killed $sgpr12 19 20# S32 without kill 21# CHECK: V_WRITELANE 22# CHECK: $sgpr12 = S_MOV_B32 $exec_lo 23# CHECK: $exec_lo = S_MOV_B32 1 24# MUBUF: BUFFER_STORE_DWORD_OFFSET $vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 4 25# FLATSCR: SCRATCH_STORE_DWORD_SADDR $vgpr{{[0-9]+}}, $sgpr33, 4 26# CHECK: $sgpr12 = V_READLANE 27 28# S64 with kill 29# CHECK: V_WRITELANE 30# CHECK: V_WRITELANE 31# GCN32: $sgpr12 = S_MOV_B32 $exec_lo 32# GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec 33# GCN32: $exec_lo = S_MOV_B32 3 34# GCN64: $exec = S_MOV_B64 3 35# MUBUF: BUFFER_STORE_DWORD_OFFSET killed $vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 8 36# FLATSCR: SCRATCH_STORE_DWORD_SADDR killed $vgpr{{[0-9]+}}, $sgpr33, 8 37# GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 38# GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 39 40# S64 without kill 41# CHECK: V_WRITELANE 42# CHECK: V_WRITELANE 43# GCN32: $sgpr12 = S_MOV_B32 $exec_lo 44# GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec 45# GCN32: $exec_lo = S_MOV_B32 3 46# GCN64: $exec = S_MOV_B64 3 47# MUBUF: BUFFER_STORE_DWORD_OFFSET $vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 8 48# FLATSCR: SCRATCH_STORE_DWORD_SADDR $vgpr{{[0-9]+}}, $sgpr33, 8 49# GCN32: $exec_lo = S_MOV_B32 $sgpr12 50# GCN64: $exec = S_MOV_B64 $sgpr12_sgpr13 51# GCN64: $sgpr13 = V_READLANE 52# CHECK: $sgpr12 = V_READLANE 53 54# S96 55# CHECK: V_WRITELANE 56# CHECK: V_WRITELANE 57# CHECK: V_WRITELANE 58# GCN32: $sgpr12 = S_MOV_B32 $exec_lo 59# GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec 60# GCN32: $exec_lo = S_MOV_B32 7 61# GCN64: $exec = S_MOV_B64 7 62# MUBUF: BUFFER_STORE_DWORD_OFFSET killed $vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 16 63# FLATSCR: SCRATCH_STORE_DWORD_SADDR killed $vgpr{{[0-9]+}}, $sgpr33, 16 64# GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 65# GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 66 67# S128 68# CHECK: V_WRITELANE 69# CHECK: V_WRITELANE 70# CHECK: V_WRITELANE 71# CHECK: V_WRITELANE 72# GCN32: $sgpr12 = S_MOV_B32 $exec_lo 73# GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec 74# GCN32: $exec_lo = S_MOV_B32 15 75# GCN64: $exec = S_MOV_B64 15 76# MUBUF: BUFFER_STORE_DWORD_OFFSET killed $vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 28 77# FLATSCR: SCRATCH_STORE_DWORD_SADDR killed $vgpr{{[0-9]+}}, $sgpr33, 28 78# GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 79# GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 80 81# S160 82# CHECK: V_WRITELANE 83# CHECK: V_WRITELANE 84# CHECK: V_WRITELANE 85# CHECK: V_WRITELANE 86# CHECK: V_WRITELANE 87# GCN32: $sgpr12 = S_MOV_B32 $exec_lo 88# GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec 89# GCN32: $exec_lo = S_MOV_B32 31 90# GCN64: $exec = S_MOV_B64 31 91# MUBUF: BUFFER_STORE_DWORD_OFFSET {{(killed )?}}$vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 44 92# FLATSCR: SCRATCH_STORE_DWORD_SADDR {{(killed )?}}$vgpr{{[0-9]+}}, $sgpr33, 44 93# GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 94# GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 95 96# S256 97# CHECK: V_WRITELANE 98# CHECK: V_WRITELANE 99# CHECK: V_WRITELANE 100# CHECK: V_WRITELANE 101# CHECK: V_WRITELANE 102# CHECK: V_WRITELANE 103# CHECK: V_WRITELANE 104# CHECK: V_WRITELANE 105# GCN32: $sgpr12 = S_MOV_B32 $exec_lo 106# GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec 107# GCN32: $exec_lo = S_MOV_B32 255 108# GCN64: $exec = S_MOV_B64 255 109# MUBUF: BUFFER_STORE_DWORD_OFFSET {{(killed )?}}$vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 64 110# FLATSCR: SCRATCH_STORE_DWORD_SADDR {{(killed )?}}$vgpr{{[0-9]+}}, $sgpr33, 64 111# GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 112# GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 113 114# S512 115# CHECK: V_WRITELANE 116# CHECK: V_WRITELANE 117# CHECK: V_WRITELANE 118# CHECK: V_WRITELANE 119# CHECK: V_WRITELANE 120# CHECK: V_WRITELANE 121# CHECK: V_WRITELANE 122# CHECK: V_WRITELANE 123# CHECK: V_WRITELANE 124# CHECK: V_WRITELANE 125# CHECK: V_WRITELANE 126# CHECK: V_WRITELANE 127# CHECK: V_WRITELANE 128# CHECK: V_WRITELANE 129# CHECK: V_WRITELANE 130# CHECK: V_WRITELANE 131# GCN32: $sgpr12 = S_MOV_B32 $exec_lo 132# GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec 133# GCN32: $exec_lo = S_MOV_B32 65535 134# GCN64: $exec = S_MOV_B64 65535 135# MUBUF: BUFFER_STORE_DWORD_OFFSET {{(killed )?}}$vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 96 136# FLATSCR: SCRATCH_STORE_DWORD_SADDR {{(killed )?}}$vgpr{{[0-9]+}}, $sgpr33, 96 137# GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 138# GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 139 140# S1024 141# CHECK: V_WRITELANE 142# CHECK: V_WRITELANE 143# CHECK: V_WRITELANE 144# CHECK: V_WRITELANE 145# CHECK: V_WRITELANE 146# CHECK: V_WRITELANE 147# CHECK: V_WRITELANE 148# CHECK: V_WRITELANE 149# CHECK: V_WRITELANE 150# CHECK: V_WRITELANE 151# CHECK: V_WRITELANE 152# CHECK: V_WRITELANE 153# CHECK: V_WRITELANE 154# CHECK: V_WRITELANE 155# CHECK: V_WRITELANE 156# CHECK: V_WRITELANE 157# CHECK: V_WRITELANE 158# CHECK: V_WRITELANE 159# CHECK: V_WRITELANE 160# CHECK: V_WRITELANE 161# CHECK: V_WRITELANE 162# CHECK: V_WRITELANE 163# CHECK: V_WRITELANE 164# CHECK: V_WRITELANE 165# CHECK: V_WRITELANE 166# CHECK: V_WRITELANE 167# CHECK: V_WRITELANE 168# CHECK: V_WRITELANE 169# CHECK: V_WRITELANE 170# CHECK: V_WRITELANE 171# CHECK: V_WRITELANE 172# CHECK: V_WRITELANE 173# GCN32: $sgpr64 = S_MOV_B32 $exec_lo 174# GCN64: $sgpr64_sgpr65 = S_MOV_B64 $exec 175# GCN32: $exec_lo = S_MOV_B32 4294967295 176# GCN64: $exec = S_MOV_B64 4294967295 177# MUBUF: BUFFER_STORE_DWORD_OFFSET {{(killed )?}}$vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 160 178# FLATSCR: SCRATCH_STORE_DWORD_SADDR {{(killed )?}}$vgpr{{[0-9]+}}, $sgpr33, 160 179# GCN32: $exec_lo = S_MOV_B32 killed $sgpr64 180# GCN64: $exec = S_MOV_B64 killed $sgpr64_sgpr65 181 182--- | 183 184 define amdgpu_kernel void @check_spill() #0 { 185 ret void 186 } 187 188 define amdgpu_kernel void @check_reload() #0 { 189 ret void 190 } 191 192 attributes #0 = { "frame-pointer"="all" } 193... 194--- 195name: check_spill 196tracksRegLiveness: true 197liveins: 198 - { reg: '$sgpr4_sgpr5' } 199 - { reg: '$sgpr6_sgpr7' } 200 - { reg: '$sgpr8' } 201frameInfo: 202 maxAlignment: 4 203stack: 204 - { id: 0, type: spill-slot, size: 4, alignment: 4 } 205 - { id: 1, type: spill-slot, size: 8, alignment: 4 } 206 - { id: 2, type: spill-slot, size: 12, alignment: 4 } 207 - { id: 3, type: spill-slot, size: 16, alignment: 4 } 208 - { id: 4, type: spill-slot, size: 20, alignment: 4 } 209 - { id: 5, type: spill-slot, size: 32, alignment: 4 } 210 - { id: 6, type: spill-slot, size: 64, alignment: 4 } 211 - { id: 7, type: spill-slot, size: 128, alignment: 4 } 212machineFunctionInfo: 213 explicitKernArgSize: 660 214 maxKernArgAlign: 4 215 isEntryFunction: true 216 waveLimiter: true 217 scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99' 218 stackPtrOffsetReg: '$sgpr32' 219 frameOffsetReg: '$sgpr33' 220 argumentInfo: 221 flatScratchInit: { reg: '$sgpr0_sgpr1' } 222 dispatchPtr: { reg: '$sgpr2_sgpr3' } 223 privateSegmentBuffer: { reg: '$sgpr4_sgpr5_sgpr6_sgpr7' } 224 kernargSegmentPtr: { reg: '$sgpr8_sgpr9' } 225 workGroupIDX: { reg: '$sgpr10' } 226 privateSegmentWaveByteOffset: { reg: '$sgpr11' } 227body: | 228 bb.0: 229 liveins: $sgpr8, $sgpr4_sgpr5, $sgpr6_sgpr7 230 231 renamable $sgpr12 = IMPLICIT_DEF 232 SI_SPILL_S32_SAVE killed $sgpr12, %stack.0, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 233 234 renamable $sgpr12 = IMPLICIT_DEF 235 SI_SPILL_S32_SAVE $sgpr12, %stack.0, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 236 237 renamable $sgpr12_sgpr13 = IMPLICIT_DEF 238 SI_SPILL_S64_SAVE killed $sgpr12_sgpr13, %stack.1, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 239 240 renamable $sgpr12_sgpr13 = IMPLICIT_DEF 241 SI_SPILL_S64_SAVE $sgpr12_sgpr13, %stack.1, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 242 243 renamable $sgpr12_sgpr13_sgpr14 = IMPLICIT_DEF 244 SI_SPILL_S96_SAVE killed $sgpr12_sgpr13_sgpr14, %stack.2, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 245 246 renamable $sgpr12_sgpr13_sgpr14_sgpr15 = IMPLICIT_DEF 247 SI_SPILL_S128_SAVE killed $sgpr12_sgpr13_sgpr14_sgpr15, %stack.3, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 248 249 renamable $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16 = IMPLICIT_DEF 250 SI_SPILL_S160_SAVE killed $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16, %stack.4, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 251 252 renamable $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19 = IMPLICIT_DEF 253 SI_SPILL_S256_SAVE killed $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19, %stack.5, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 254 255 renamable $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27 = IMPLICIT_DEF 256 SI_SPILL_S512_SAVE killed $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27, %stack.6, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 257 258 renamable $sgpr64_sgpr65_sgpr66_sgpr67_sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75_sgpr76_sgpr77_sgpr78_sgpr79_sgpr80_sgpr81_sgpr82_sgpr83_sgpr84_sgpr85_sgpr86_sgpr87_sgpr88_sgpr89_sgpr90_sgpr91_sgpr92_sgpr93_sgpr94_sgpr95 = IMPLICIT_DEF 259 SI_SPILL_S1024_SAVE killed $sgpr64_sgpr65_sgpr66_sgpr67_sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75_sgpr76_sgpr77_sgpr78_sgpr79_sgpr80_sgpr81_sgpr82_sgpr83_sgpr84_sgpr85_sgpr86_sgpr87_sgpr88_sgpr89_sgpr90_sgpr91_sgpr92_sgpr93_sgpr94_sgpr95, %stack.7, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 260 261 262# CHECK-LABEL: name: check_reload 263 264# FLATSCR: $sgpr33 = S_MOV_B32 0 265# FLATSCR: $flat_scr_lo = S_ADD_U32 $sgpr0, $sgpr11, implicit-def $scc 266# FLATSCR: $flat_scr_hi = S_ADDC_U32 $sgpr1, 0, implicit-def $scc, implicit $scc 267 268# S32 269# CHECK: $sgpr12 = S_MOV_B32 $exec_lo 270# CHECK: $exec_lo = S_MOV_B32 1 271# MUBUF: BUFFER_LOAD_DWORD_OFFSET ${{(sgpr[0-9_]+)*}}, $sgpr33, 4 272# FLATSCR: SCRATCH_LOAD_DWORD_SADDR $sgpr33, 4 273# CHECK: $exec_lo = S_MOV_B32 killed $sgpr12 274# CHECK: $sgpr12 = V_READLANE 275 276# S64 277# GCN32: $sgpr12 = S_MOV_B32 $exec_lo 278# GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec 279# GCN32: $exec_lo = S_MOV_B32 3 280# GCN64: $exec = S_MOV_B64 3 281# MUBUF: BUFFER_LOAD_DWORD_OFFSET ${{(sgpr[0-9_]+)*}}, $sgpr33, 8 282# FLATSCR: SCRATCH_LOAD_DWORD_SADDR $sgpr33, 8 283# GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 284# GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 285# CHECK: $sgpr12 = V_READLANE 286# CHECK: $sgpr13 = V_READLANE 287 288# S96 289# GCN32: $sgpr12 = S_MOV_B32 $exec_lo 290# GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec 291# GCN32: $exec_lo = S_MOV_B32 7 292# GCN64: $exec = S_MOV_B64 7 293# MUBUF: BUFFER_LOAD_DWORD_OFFSET ${{(sgpr[0-9_]+)*}}, $sgpr33, 16 294# FLATSCR: SCRATCH_LOAD_DWORD_SADDR $sgpr33, 16 295# GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 296# GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 297# CHECK: $sgpr12 = V_READLANE 298# CHECK: $sgpr13 = V_READLANE 299# CHECK: $sgpr14 = V_READLANE 300 301# S128 302# GCN32: $sgpr12 = S_MOV_B32 $exec_lo 303# GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec 304# GCN32: $exec_lo = S_MOV_B32 15 305# GCN64: $exec = S_MOV_B64 15 306# MUBUF: BUFFER_LOAD_DWORD_OFFSET ${{(sgpr[0-9_]+)*}}, $sgpr33, 28 307# FLATSCR: SCRATCH_LOAD_DWORD_SADDR $sgpr33, 28 308# GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 309# GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 310# CHECK: $sgpr12 = V_READLANE 311# CHECK: $sgpr13 = V_READLANE 312# CHECK: $sgpr14 = V_READLANE 313# CHECK: $sgpr15 = V_READLANE 314 315# S160 316# GCN32: $sgpr12 = S_MOV_B32 $exec_lo 317# GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec 318# GCN32: $exec_lo = S_MOV_B32 31 319# GCN64: $exec = S_MOV_B64 31 320# MUBUF: BUFFER_LOAD_DWORD_OFFSET ${{(sgpr[0-9_]+)*}}, $sgpr33, 44 321# FLATSCR: SCRATCH_LOAD_DWORD_SADDR $sgpr33, 44 322# GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 323# GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 324# CHECK: $sgpr12 = V_READLANE 325# CHECK: $sgpr13 = V_READLANE 326# CHECK: $sgpr14 = V_READLANE 327# CHECK: $sgpr15 = V_READLANE 328# CHECK: $sgpr16 = V_READLANE 329 330# S256 331# GCN32: $sgpr12 = S_MOV_B32 $exec_lo 332# GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec 333# GCN32: $exec_lo = S_MOV_B32 255 334# GCN64: $exec = S_MOV_B64 255 335# MUBUF: BUFFER_LOAD_DWORD_OFFSET ${{(sgpr[0-9_]+)*}}, $sgpr33, 64 336# FLATSCR: SCRATCH_LOAD_DWORD_SADDR $sgpr33, 64 337# GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 338# GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 339# CHECK: $sgpr12 = V_READLANE 340# CHECK: $sgpr13 = V_READLANE 341# CHECK: $sgpr14 = V_READLANE 342# CHECK: $sgpr15 = V_READLANE 343# CHECK: $sgpr16 = V_READLANE 344# CHECK: $sgpr17 = V_READLANE 345# CHECK: $sgpr18 = V_READLANE 346# CHECK: $sgpr19 = V_READLANE 347 348# S512 349# GCN32: $sgpr12 = S_MOV_B32 $exec_lo 350# GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec 351# GCN32: $exec_lo = S_MOV_B32 65535 352# GCN64: $exec = S_MOV_B64 65535 353# MUBUF: BUFFER_LOAD_DWORD_OFFSET ${{(sgpr[0-9_]+)*}}, $sgpr33, 96 354# FLATSCR: SCRATCH_LOAD_DWORD_SADDR $sgpr33, 96 355# GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 356# GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 357# CHECK: $sgpr12 = V_READLANE 358# CHECK: $sgpr13 = V_READLANE 359# CHECK: $sgpr14 = V_READLANE 360# CHECK: $sgpr15 = V_READLANE 361# CHECK: $sgpr16 = V_READLANE 362# CHECK: $sgpr17 = V_READLANE 363# CHECK: $sgpr18 = V_READLANE 364# CHECK: $sgpr19 = V_READLANE 365# CHECK: $sgpr20 = V_READLANE 366# CHECK: $sgpr21 = V_READLANE 367# CHECK: $sgpr22 = V_READLANE 368# CHECK: $sgpr23 = V_READLANE 369# CHECK: $sgpr24 = V_READLANE 370# CHECK: $sgpr25 = V_READLANE 371# CHECK: $sgpr26 = V_READLANE 372# CHECK: $sgpr27 = V_READLANE 373 374# S1024 375# GCN32: $sgpr64 = S_MOV_B32 $exec_lo 376# GCN64: $sgpr64_sgpr65 = S_MOV_B64 $exec 377# GCN32: $exec_lo = S_MOV_B32 4294967295 378# GCN64: $exec = S_MOV_B64 4294967295 379# MUBUF: BUFFER_LOAD_DWORD_OFFSET ${{(sgpr[0-9_]+)*}}, $sgpr33, 160 380# FLATSCR: SCRATCH_LOAD_DWORD_SADDR $sgpr33, 160 381# GCN32: $exec_lo = S_MOV_B32 killed $sgpr64 382# GCN64: $exec = S_MOV_B64 killed $sgpr64_sgpr65 383# CHECK: $sgpr64 = V_READLANE 384# CHECK: $sgpr65 = V_READLANE 385# CHECK: $sgpr66 = V_READLANE 386# CHECK: $sgpr67 = V_READLANE 387# CHECK: $sgpr68 = V_READLANE 388# CHECK: $sgpr69 = V_READLANE 389# CHECK: $sgpr70 = V_READLANE 390# CHECK: $sgpr71 = V_READLANE 391# CHECK: $sgpr72 = V_READLANE 392# CHECK: $sgpr73 = V_READLANE 393# CHECK: $sgpr74 = V_READLANE 394# CHECK: $sgpr75 = V_READLANE 395# CHECK: $sgpr76 = V_READLANE 396# CHECK: $sgpr77 = V_READLANE 397# CHECK: $sgpr78 = V_READLANE 398# CHECK: $sgpr79 = V_READLANE 399# CHECK: $sgpr80 = V_READLANE 400# CHECK: $sgpr81 = V_READLANE 401# CHECK: $sgpr82 = V_READLANE 402# CHECK: $sgpr83 = V_READLANE 403# CHECK: $sgpr84 = V_READLANE 404# CHECK: $sgpr85 = V_READLANE 405# CHECK: $sgpr86 = V_READLANE 406# CHECK: $sgpr87 = V_READLANE 407# CHECK: $sgpr88 = V_READLANE 408# CHECK: $sgpr89 = V_READLANE 409# CHECK: $sgpr90 = V_READLANE 410# CHECK: $sgpr91 = V_READLANE 411# CHECK: $sgpr92 = V_READLANE 412# CHECK: $sgpr93 = V_READLANE 413# CHECK: $sgpr94 = V_READLANE 414# CHECK: $sgpr95 = V_READLANE 415 416--- 417name: check_reload 418tracksRegLiveness: true 419liveins: 420 - { reg: '$sgpr4_sgpr5' } 421 - { reg: '$sgpr6_sgpr7' } 422 - { reg: '$sgpr8' } 423frameInfo: 424 maxAlignment: 4 425stack: 426 - { id: 0, type: spill-slot, size: 4, alignment: 4 } 427 - { id: 1, type: spill-slot, size: 8, alignment: 4 } 428 - { id: 2, type: spill-slot, size: 12, alignment: 4 } 429 - { id: 3, type: spill-slot, size: 16, alignment: 4 } 430 - { id: 4, type: spill-slot, size: 20, alignment: 4 } 431 - { id: 5, type: spill-slot, size: 32, alignment: 4 } 432 - { id: 6, type: spill-slot, size: 64, alignment: 4 } 433 - { id: 7, type: spill-slot, size: 128, alignment: 4 } 434machineFunctionInfo: 435 explicitKernArgSize: 660 436 maxKernArgAlign: 4 437 isEntryFunction: true 438 waveLimiter: true 439 scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99' 440 stackPtrOffsetReg: '$sgpr32' 441 frameOffsetReg: '$sgpr33' 442 argumentInfo: 443 flatScratchInit: { reg: '$sgpr0_sgpr1' } 444 dispatchPtr: { reg: '$sgpr2_sgpr3' } 445 privateSegmentBuffer: { reg: '$sgpr4_sgpr5_sgpr6_sgpr7' } 446 kernargSegmentPtr: { reg: '$sgpr8_sgpr9' } 447 workGroupIDX: { reg: '$sgpr10' } 448 privateSegmentWaveByteOffset: { reg: '$sgpr11' } 449body: | 450 bb.0: 451 liveins: $sgpr8, $sgpr4_sgpr5, $sgpr6_sgpr7 452 453 renamable $sgpr12 = SI_SPILL_S32_RESTORE %stack.0, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 454 455 renamable $sgpr12_sgpr13 = SI_SPILL_S64_RESTORE %stack.1, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 456 457 renamable $sgpr12_sgpr13_sgpr14 = SI_SPILL_S96_RESTORE %stack.2, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 458 459 renamable $sgpr12_sgpr13_sgpr14_sgpr15 = SI_SPILL_S128_RESTORE %stack.3, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 460 461 renamable $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16 = SI_SPILL_S160_RESTORE %stack.4, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 462 463 renamable $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19 = SI_SPILL_S256_RESTORE %stack.5, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 464 465 renamable $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27 = SI_SPILL_S512_RESTORE %stack.6, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 466 467 renamable $sgpr64_sgpr65_sgpr66_sgpr67_sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75_sgpr76_sgpr77_sgpr78_sgpr79_sgpr80_sgpr81_sgpr82_sgpr83_sgpr84_sgpr85_sgpr86_sgpr87_sgpr88_sgpr89_sgpr90_sgpr91_sgpr92_sgpr93_sgpr94_sgpr95 = SI_SPILL_S1024_RESTORE %stack.7, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 468