1*3659aa80SPravin Jagtap# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx908 -amdgpu-spill-sgpr-to-vgpr=true -run-pass=si-lower-sgpr-spills -o - %s | FileCheck %s 2*3659aa80SPravin Jagtap 3*3659aa80SPravin Jagtap--- | 4*3659aa80SPravin Jagtap define amdgpu_kernel void @test() { ret void } 5*3659aa80SPravin Jagtap 6*3659aa80SPravin Jagtap !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !4, producer: "llvm", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, retainedTypes: !4) 7*3659aa80SPravin Jagtap !1 = !DILocalVariable(name: "a", scope: !2, file: !4, line: 126, type: !6) 8*3659aa80SPravin Jagtap !2 = distinct !DISubprogram(name: "test", scope: !4, file: !4, line: 1, type: !3, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !5) 9*3659aa80SPravin Jagtap !3 = !DISubroutineType(types: !4) 10*3659aa80SPravin Jagtap !4 = !DIFile(filename: "dummy", directory: "/") 11*3659aa80SPravin Jagtap !5 = !{!1} 12*3659aa80SPravin Jagtap !6 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !7, size: 64, align: 32) 13*3659aa80SPravin Jagtap !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed) 14*3659aa80SPravin Jagtap !8 = !DIExpression() 15*3659aa80SPravin Jagtap !9 = !DILocation(line: 10, column: 9, scope: !2) 16*3659aa80SPravin Jagtap 17*3659aa80SPravin Jagtap... 18*3659aa80SPravin Jagtap--- 19*3659aa80SPravin Jagtapname: test 20*3659aa80SPravin JagtaptracksRegLiveness: true 21*3659aa80SPravin JagtapframeInfo: 22*3659aa80SPravin Jagtap maxAlignment: 4 23*3659aa80SPravin JagtapfixedStack: 24*3659aa80SPravin Jagtap - { id: 0, type: default, offset: 4, size: 4, alignment: 4, stack-id: default } 25*3659aa80SPravin Jagtapstack: 26*3659aa80SPravin Jagtap - { id: 0, type: spill-slot, size: 4, alignment: 4, stack-id: sgpr-spill } 27*3659aa80SPravin JagtapmachineFunctionInfo: 28*3659aa80SPravin Jagtap maxKernArgAlign: 4 29*3659aa80SPravin Jagtap isEntryFunction: true 30*3659aa80SPravin Jagtap waveLimiter: true 31*3659aa80SPravin Jagtap scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99' 32*3659aa80SPravin Jagtap stackPtrOffsetReg: '$sgpr32' 33*3659aa80SPravin Jagtap frameOffsetReg: '$sgpr33' 34*3659aa80SPravin Jagtap hasSpilledSGPRs: true 35*3659aa80SPravin Jagtap argumentInfo: 36*3659aa80SPravin Jagtap privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 37*3659aa80SPravin Jagtap dispatchPtr: { reg: '$sgpr4_sgpr5' } 38*3659aa80SPravin Jagtap kernargSegmentPtr: { reg: '$sgpr6_sgpr7' } 39*3659aa80SPravin Jagtap workGroupIDX: { reg: '$sgpr8' } 40*3659aa80SPravin Jagtap privateSegmentWaveByteOffset: { reg: '$sgpr9' } 41*3659aa80SPravin Jagtapbody: | 42*3659aa80SPravin Jagtap ; CHECK-LABEL: name: test 43*3659aa80SPravin Jagtap ; CHECK: bb.0: 44*3659aa80SPravin Jagtap ; CHECK: DBG_VALUE_LIST <{{.*}}>, !DIExpression(), $noreg, 0, debug-location !DILocation(line: 10, column: 9, scope: <{{.*}}>) 45*3659aa80SPravin Jagtap 46*3659aa80SPravin Jagtap bb.0: 47*3659aa80SPravin Jagtap renamable $sgpr10 = IMPLICIT_DEF 48*3659aa80SPravin Jagtap SI_SPILL_S32_SAVE killed $sgpr10, %stack.0, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 49*3659aa80SPravin Jagtap DBG_VALUE_LIST !1, !8, %stack.0, 0, debug-location !9 50*3659aa80SPravin Jagtap 51*3659aa80SPravin Jagtap bb.1: 52*3659aa80SPravin Jagtap renamable $sgpr10 = SI_SPILL_S32_RESTORE %stack.0, implicit $exec, implicit $sgpr96_sgpr97_sgpr98_sgpr99, implicit $sgpr32 53*3659aa80SPravin Jagtap S_ENDPGM 0 54