blob: 9980f6ace85b591ffdc3a2cc6e143c0a9e1019e4 [file] [log] [blame]
# 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