# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefixes=CHECK,GCN64,MUBUF %s # RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr=+wavefrontsize32,-wavefrontsize64 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefixes=CHECK,GCN32,MUBUF %s # RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -amdgpu-enable-flat-scratch -run-pass=prologepilog %s -o - | FileCheck -check-prefixes=CHECK,GCN64,FLATSCR %s # CHECK-LABEL: name: check_spill # FLATSCR: $sgpr33 = S_MOV_B32 0 # FLATSCR: $flat_scr_lo = S_ADD_U32 $sgpr0, $sgpr11, implicit-def $scc # FLATSCR: $flat_scr_hi = S_ADDC_U32 $sgpr1, 0, implicit-def $scc, implicit $scc # S32 with kill # CHECK: V_WRITELANE # CHECK: $sgpr12 = S_MOV_B32 $exec_lo # CHECK: $exec_lo = S_MOV_B32 1 # MUBUF: BUFFER_STORE_DWORD_OFFSET killed $vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 4 # FLATSCR: SCRATCH_STORE_DWORD_SADDR killed $vgpr{{[0-9]+}}, $sgpr33, 4 # CHECK: $exec_lo = S_MOV_B32 killed $sgpr12 # S32 without kill # CHECK: V_WRITELANE # CHECK: $sgpr12 = S_MOV_B32 $exec_lo # CHECK: $exec_lo = S_MOV_B32 1 # MUBUF: BUFFER_STORE_DWORD_OFFSET $vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 4 # FLATSCR: SCRATCH_STORE_DWORD_SADDR $vgpr{{[0-9]+}}, $sgpr33, 4 # CHECK: $sgpr12 = V_READLANE # S64 with kill # CHECK: V_WRITELANE # CHECK: V_WRITELANE # GCN32: $sgpr12 = S_MOV_B32 $exec_lo # GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec # GCN32: $exec_lo = S_MOV_B32 3 # GCN64: $exec = S_MOV_B64 3 # MUBUF: BUFFER_STORE_DWORD_OFFSET killed $vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 8 # FLATSCR: SCRATCH_STORE_DWORD_SADDR killed $vgpr{{[0-9]+}}, $sgpr33, 8 # GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 # GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 # S64 without kill # CHECK: V_WRITELANE # CHECK: V_WRITELANE # GCN32: $sgpr12 = S_MOV_B32 $exec_lo # GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec # GCN32: $exec_lo = S_MOV_B32 3 # GCN64: $exec = S_MOV_B64 3 # MUBUF: BUFFER_STORE_DWORD_OFFSET $vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 8 # FLATSCR: SCRATCH_STORE_DWORD_SADDR $vgpr{{[0-9]+}}, $sgpr33, 8 # GCN32: $exec_lo = S_MOV_B32 $sgpr12 # GCN64: $exec = S_MOV_B64 $sgpr12_sgpr13 # GCN64: $sgpr13 = V_READLANE # CHECK: $sgpr12 = V_READLANE # S96 # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # GCN32: $sgpr12 = S_MOV_B32 $exec_lo # GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec # GCN32: $exec_lo = S_MOV_B32 7 # GCN64: $exec = S_MOV_B64 7 # MUBUF: BUFFER_STORE_DWORD_OFFSET killed $vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 16 # FLATSCR: SCRATCH_STORE_DWORD_SADDR killed $vgpr{{[0-9]+}}, $sgpr33, 16 # GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 # GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 # S128 # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # GCN32: $sgpr12 = S_MOV_B32 $exec_lo # GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec # GCN32: $exec_lo = S_MOV_B32 15 # GCN64: $exec = S_MOV_B64 15 # MUBUF: BUFFER_STORE_DWORD_OFFSET killed $vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 28 # FLATSCR: SCRATCH_STORE_DWORD_SADDR killed $vgpr{{[0-9]+}}, $sgpr33, 28 # GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 # GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 # S160 # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # GCN32: $sgpr12 = S_MOV_B32 $exec_lo # GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec # GCN32: $exec_lo = S_MOV_B32 31 # GCN64: $exec = S_MOV_B64 31 # MUBUF: BUFFER_STORE_DWORD_OFFSET {{(killed )?}}$vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 44 # FLATSCR: SCRATCH_STORE_DWORD_SADDR {{(killed )?}}$vgpr{{[0-9]+}}, $sgpr33, 44 # GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 # GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 # S256 # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # GCN32: $sgpr12 = S_MOV_B32 $exec_lo # GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec # GCN32: $exec_lo = S_MOV_B32 255 # GCN64: $exec = S_MOV_B64 255 # MUBUF: BUFFER_STORE_DWORD_OFFSET {{(killed )?}}$vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 64 # FLATSCR: SCRATCH_STORE_DWORD_SADDR {{(killed )?}}$vgpr{{[0-9]+}}, $sgpr33, 64 # GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 # GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 # S512 # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # GCN32: $sgpr12 = S_MOV_B32 $exec_lo # GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec # GCN32: $exec_lo = S_MOV_B32 65535 # GCN64: $exec = S_MOV_B64 65535 # MUBUF: BUFFER_STORE_DWORD_OFFSET {{(killed )?}}$vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 96 # FLATSCR: SCRATCH_STORE_DWORD_SADDR {{(killed )?}}$vgpr{{[0-9]+}}, $sgpr33, 96 # GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 # GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 # S1024 # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # CHECK: V_WRITELANE # GCN32: $sgpr64 = S_MOV_B32 $exec_lo # GCN64: $sgpr64_sgpr65 = S_MOV_B64 $exec # GCN32: $exec_lo = S_MOV_B32 4294967295 # GCN64: $exec = S_MOV_B64 4294967295 # MUBUF: BUFFER_STORE_DWORD_OFFSET {{(killed )?}}$vgpr{{[0-9]+}}, ${{(sgpr[0-9_]+)*}}, $sgpr33, 160 # FLATSCR: SCRATCH_STORE_DWORD_SADDR {{(killed )?}}$vgpr{{[0-9]+}}, $sgpr33, 160 # GCN32: $exec_lo = S_MOV_B32 killed $sgpr64 # GCN64: $exec = S_MOV_B64 killed $sgpr64_sgpr65 --- | define amdgpu_kernel void @check_spill() #0 { ret void } define amdgpu_kernel void @check_reload() #0 { ret void } attributes #0 = { "frame-pointer"="all" } ... --- name: check_spill tracksRegLiveness: true liveins: - { reg: '$sgpr4_sgpr5' } - { reg: '$sgpr6_sgpr7' } - { reg: '$sgpr8' } frameInfo: maxAlignment: 4 stack: - { id: 0, type: spill-slot, size: 4, alignment: 4 } - { id: 1, type: spill-slot, size: 8, alignment: 4 } - { id: 2, type: spill-slot, size: 12, alignment: 4 } - { id: 3, type: spill-slot, size: 16, alignment: 4 } - { id: 4, type: spill-slot, size: 20, alignment: 4 } - { id: 5, type: spill-slot, size: 32, alignment: 4 } - { id: 6, type: spill-slot, size: 64, alignment: 4 } - { id: 7, type: spill-slot, size: 128, alignment: 4 } machineFunctionInfo: explicitKernArgSize: 660 maxKernArgAlign: 4 isEntryFunction: true waveLimiter: true scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99' stackPtrOffsetReg: '$sgpr32' frameOffsetReg: '$sgpr33' argumentInfo: flatScratchInit: { reg: '$sgpr0_sgpr1' } dispatchPtr: { reg: '$sgpr2_sgpr3' } privateSegmentBuffer: { reg: '$sgpr4_sgpr5_sgpr6_sgpr7' } kernargSegmentPtr: { reg: '$sgpr8_sgpr9' } workGroupIDX: { reg: '$sgpr10' } privateSegmentWaveByteOffset: { reg: '$sgpr11' } body: | bb.0: liveins: $sgpr8, $sgpr4_sgpr5, $sgpr6_sgpr7 renamable $sgpr12 = IMPLICIT_DEF SI_SPILL_S32_SAVE killed $sgpr12, %stack.0, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 renamable $sgpr12 = IMPLICIT_DEF SI_SPILL_S32_SAVE $sgpr12, %stack.0, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 renamable $sgpr12_sgpr13 = IMPLICIT_DEF SI_SPILL_S64_SAVE killed $sgpr12_sgpr13, %stack.1, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 renamable $sgpr12_sgpr13 = IMPLICIT_DEF SI_SPILL_S64_SAVE $sgpr12_sgpr13, %stack.1, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 renamable $sgpr12_sgpr13_sgpr14 = IMPLICIT_DEF SI_SPILL_S96_SAVE killed $sgpr12_sgpr13_sgpr14, %stack.2, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 renamable $sgpr12_sgpr13_sgpr14_sgpr15 = IMPLICIT_DEF SI_SPILL_S128_SAVE killed $sgpr12_sgpr13_sgpr14_sgpr15, %stack.3, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 renamable $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16 = IMPLICIT_DEF SI_SPILL_S160_SAVE killed $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16, %stack.4, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 renamable $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19 = IMPLICIT_DEF SI_SPILL_S256_SAVE killed $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19, %stack.5, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 renamable $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27 = IMPLICIT_DEF 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 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 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 # CHECK-LABEL: name: check_reload # FLATSCR: $sgpr33 = S_MOV_B32 0 # FLATSCR: $flat_scr_lo = S_ADD_U32 $sgpr0, $sgpr11, implicit-def $scc # FLATSCR: $flat_scr_hi = S_ADDC_U32 $sgpr1, 0, implicit-def $scc, implicit $scc # S32 # CHECK: $sgpr12 = S_MOV_B32 $exec_lo # CHECK: $exec_lo = S_MOV_B32 1 # MUBUF: BUFFER_LOAD_DWORD_OFFSET ${{(sgpr[0-9_]+)*}}, $sgpr33, 4 # FLATSCR: SCRATCH_LOAD_DWORD_SADDR $sgpr33, 4 # CHECK: $exec_lo = S_MOV_B32 killed $sgpr12 # CHECK: $sgpr12 = V_READLANE # S64 # GCN32: $sgpr12 = S_MOV_B32 $exec_lo # GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec # GCN32: $exec_lo = S_MOV_B32 3 # GCN64: $exec = S_MOV_B64 3 # MUBUF: BUFFER_LOAD_DWORD_OFFSET ${{(sgpr[0-9_]+)*}}, $sgpr33, 8 # FLATSCR: SCRATCH_LOAD_DWORD_SADDR $sgpr33, 8 # GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 # GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 # CHECK: $sgpr12 = V_READLANE # CHECK: $sgpr13 = V_READLANE # S96 # GCN32: $sgpr12 = S_MOV_B32 $exec_lo # GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec # GCN32: $exec_lo = S_MOV_B32 7 # GCN64: $exec = S_MOV_B64 7 # MUBUF: BUFFER_LOAD_DWORD_OFFSET ${{(sgpr[0-9_]+)*}}, $sgpr33, 16 # FLATSCR: SCRATCH_LOAD_DWORD_SADDR $sgpr33, 16 # GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 # GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 # CHECK: $sgpr12 = V_READLANE # CHECK: $sgpr13 = V_READLANE # CHECK: $sgpr14 = V_READLANE # S128 # GCN32: $sgpr12 = S_MOV_B32 $exec_lo # GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec # GCN32: $exec_lo = S_MOV_B32 15 # GCN64: $exec = S_MOV_B64 15 # MUBUF: BUFFER_LOAD_DWORD_OFFSET ${{(sgpr[0-9_]+)*}}, $sgpr33, 28 # FLATSCR: SCRATCH_LOAD_DWORD_SADDR $sgpr33, 28 # GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 # GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 # CHECK: $sgpr12 = V_READLANE # CHECK: $sgpr13 = V_READLANE # CHECK: $sgpr14 = V_READLANE # CHECK: $sgpr15 = V_READLANE # S160 # GCN32: $sgpr12 = S_MOV_B32 $exec_lo # GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec # GCN32: $exec_lo = S_MOV_B32 31 # GCN64: $exec = S_MOV_B64 31 # MUBUF: BUFFER_LOAD_DWORD_OFFSET ${{(sgpr[0-9_]+)*}}, $sgpr33, 44 # FLATSCR: SCRATCH_LOAD_DWORD_SADDR $sgpr33, 44 # GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 # GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 # CHECK: $sgpr12 = V_READLANE # CHECK: $sgpr13 = V_READLANE # CHECK: $sgpr14 = V_READLANE # CHECK: $sgpr15 = V_READLANE # CHECK: $sgpr16 = V_READLANE # S256 # GCN32: $sgpr12 = S_MOV_B32 $exec_lo # GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec # GCN32: $exec_lo = S_MOV_B32 255 # GCN64: $exec = S_MOV_B64 255 # MUBUF: BUFFER_LOAD_DWORD_OFFSET ${{(sgpr[0-9_]+)*}}, $sgpr33, 64 # FLATSCR: SCRATCH_LOAD_DWORD_SADDR $sgpr33, 64 # GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 # GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 # CHECK: $sgpr12 = V_READLANE # CHECK: $sgpr13 = V_READLANE # CHECK: $sgpr14 = V_READLANE # CHECK: $sgpr15 = V_READLANE # CHECK: $sgpr16 = V_READLANE # CHECK: $sgpr17 = V_READLANE # CHECK: $sgpr18 = V_READLANE # CHECK: $sgpr19 = V_READLANE # S512 # GCN32: $sgpr12 = S_MOV_B32 $exec_lo # GCN64: $sgpr12_sgpr13 = S_MOV_B64 $exec # GCN32: $exec_lo = S_MOV_B32 65535 # GCN64: $exec = S_MOV_B64 65535 # MUBUF: BUFFER_LOAD_DWORD_OFFSET ${{(sgpr[0-9_]+)*}}, $sgpr33, 96 # FLATSCR: SCRATCH_LOAD_DWORD_SADDR $sgpr33, 96 # GCN32: $exec_lo = S_MOV_B32 killed $sgpr12 # GCN64: $exec = S_MOV_B64 killed $sgpr12_sgpr13 # CHECK: $sgpr12 = V_READLANE # CHECK: $sgpr13 = V_READLANE # CHECK: $sgpr14 = V_READLANE # CHECK: $sgpr15 = V_READLANE # CHECK: $sgpr16 = V_READLANE # CHECK: $sgpr17 = V_READLANE # CHECK: $sgpr18 = V_READLANE # CHECK: $sgpr19 = V_READLANE # CHECK: $sgpr20 = V_READLANE # CHECK: $sgpr21 = V_READLANE # CHECK: $sgpr22 = V_READLANE # CHECK: $sgpr23 = V_READLANE # CHECK: $sgpr24 = V_READLANE # CHECK: $sgpr25 = V_READLANE # CHECK: $sgpr26 = V_READLANE # CHECK: $sgpr27 = V_READLANE # S1024 # GCN32: $sgpr64 = S_MOV_B32 $exec_lo # GCN64: $sgpr64_sgpr65 = S_MOV_B64 $exec # GCN32: $exec_lo = S_MOV_B32 4294967295 # GCN64: $exec = S_MOV_B64 4294967295 # MUBUF: BUFFER_LOAD_DWORD_OFFSET ${{(sgpr[0-9_]+)*}}, $sgpr33, 160 # FLATSCR: SCRATCH_LOAD_DWORD_SADDR $sgpr33, 160 # GCN32: $exec_lo = S_MOV_B32 killed $sgpr64 # GCN64: $exec = S_MOV_B64 killed $sgpr64_sgpr65 # CHECK: $sgpr64 = V_READLANE # CHECK: $sgpr65 = V_READLANE # CHECK: $sgpr66 = V_READLANE # CHECK: $sgpr67 = V_READLANE # CHECK: $sgpr68 = V_READLANE # CHECK: $sgpr69 = V_READLANE # CHECK: $sgpr70 = V_READLANE # CHECK: $sgpr71 = V_READLANE # CHECK: $sgpr72 = V_READLANE # CHECK: $sgpr73 = V_READLANE # CHECK: $sgpr74 = V_READLANE # CHECK: $sgpr75 = V_READLANE # CHECK: $sgpr76 = V_READLANE # CHECK: $sgpr77 = V_READLANE # CHECK: $sgpr78 = V_READLANE # CHECK: $sgpr79 = V_READLANE # CHECK: $sgpr80 = V_READLANE # CHECK: $sgpr81 = V_READLANE # CHECK: $sgpr82 = V_READLANE # CHECK: $sgpr83 = V_READLANE # CHECK: $sgpr84 = V_READLANE # CHECK: $sgpr85 = V_READLANE # CHECK: $sgpr86 = V_READLANE # CHECK: $sgpr87 = V_READLANE # CHECK: $sgpr88 = V_READLANE # CHECK: $sgpr89 = V_READLANE # CHECK: $sgpr90 = V_READLANE # CHECK: $sgpr91 = V_READLANE # CHECK: $sgpr92 = V_READLANE # CHECK: $sgpr93 = V_READLANE # CHECK: $sgpr94 = V_READLANE # CHECK: $sgpr95 = V_READLANE --- name: check_reload tracksRegLiveness: true liveins: - { reg: '$sgpr4_sgpr5' } - { reg: '$sgpr6_sgpr7' } - { reg: '$sgpr8' } frameInfo: maxAlignment: 4 stack: - { id: 0, type: spill-slot, size: 4, alignment: 4 } - { id: 1, type: spill-slot, size: 8, alignment: 4 } - { id: 2, type: spill-slot, size: 12, alignment: 4 } - { id: 3, type: spill-slot, size: 16, alignment: 4 } - { id: 4, type: spill-slot, size: 20, alignment: 4 } - { id: 5, type: spill-slot, size: 32, alignment: 4 } - { id: 6, type: spill-slot, size: 64, alignment: 4 } - { id: 7, type: spill-slot, size: 128, alignment: 4 } machineFunctionInfo: explicitKernArgSize: 660 maxKernArgAlign: 4 isEntryFunction: true waveLimiter: true scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99' stackPtrOffsetReg: '$sgpr32' frameOffsetReg: '$sgpr33' argumentInfo: flatScratchInit: { reg: '$sgpr0_sgpr1' } dispatchPtr: { reg: '$sgpr2_sgpr3' } privateSegmentBuffer: { reg: '$sgpr4_sgpr5_sgpr6_sgpr7' } kernargSegmentPtr: { reg: '$sgpr8_sgpr9' } workGroupIDX: { reg: '$sgpr10' } privateSegmentWaveByteOffset: { reg: '$sgpr11' } body: | bb.0: liveins: $sgpr8, $sgpr4_sgpr5, $sgpr6_sgpr7 renamable $sgpr12 = SI_SPILL_S32_RESTORE %stack.0, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 renamable $sgpr12_sgpr13 = SI_SPILL_S64_RESTORE %stack.1, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 renamable $sgpr12_sgpr13_sgpr14 = SI_SPILL_S96_RESTORE %stack.2, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 renamable $sgpr12_sgpr13_sgpr14_sgpr15 = SI_SPILL_S128_RESTORE %stack.3, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 renamable $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16 = SI_SPILL_S160_RESTORE %stack.4, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 renamable $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19 = SI_SPILL_S256_RESTORE %stack.5, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 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 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