60 lines · plain
1# RUN: not llc -mtriple=amdgcn -mcpu=gfx908 -verify-machineinstrs -start-before=greedy,1 -stop-after=virtregrewriter,2 %s -filetype=null 2>&1 | FileCheck -check-prefix=ERR %s2 3# Make sure there's no machine verifier error after failure.4 5# ERR: error: inline assembly requires more registers than available6 7# This testcase cannot be compiled with the enforced register8# budget. Previously, tryLastChanceRecoloring would assert here. It9# was attempting to recolor a superregister with an overlapping10# subregister over the same range.11 12--- |13 define void @foo() #0 {14 ret void15 }16 17 attributes #0 = { "amdgpu-waves-per-eu"="8,8" }18 19...20---21name: foo22tracksRegLiveness: true23registers:24 - { id: 0, class: vgpr_32 }25 - { id: 1, class: vgpr_32 }26 - { id: 2, class: vreg_512 }27 - { id: 3, class: vreg_256 }28 - { id: 4, class: vreg_128 }29 - { id: 5, class: vreg_96 }30 - { id: 6, class: vreg_96 }31 - { id: 7, class: vreg_512 }32 - { id: 8, class: vreg_256 }33 - { id: 9, class: vreg_128 }34 - { id: 10, class: vreg_96 }35 - { id: 11, class: vreg_96 }36 - { id: 12, class: sreg_64 }37 - { id: 13, class: sgpr_64 }38 - { id: 14, class: vgpr_32 }39machineFunctionInfo:40 scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'41 frameOffsetReg: '$sgpr33'42 stackPtrOffsetReg: '$sgpr32'43body: |44 bb.0:45 46 INLINEASM &"; def $0", 1 /* sideeffect attdialect */, 1638410 /* regdef:AGPR_32 */, implicit-def $agpr047 %14:vgpr_32 = COPY killed $agpr048 INLINEASM &"; def $0 $1 $2 $3 $4", 1 /* sideeffect attdialect */, 39125002 /* regdef:VReg_512 */, def %7, 18546698 /* regdef:VReg_256 */, def %8, 7012362 /* regdef:VReg_128 */, def %9, 5046282 /* regdef:VReg_96 */, def %10, 5046282 /* regdef:VReg_96 */, def %1149 INLINEASM &"; clobber", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15_agpr16_agpr17_agpr18_agpr19_agpr20_agpr21_agpr22_agpr23_agpr24_agpr25_agpr26_agpr27_agpr28_agpr29_agpr30_agpr31, 12 /* clobber */, implicit-def dead early-clobber $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr3150 INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 39125001 /* reguse:VReg_512 */, %751 INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 18546697 /* reguse:VReg_256 */, %852 INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 7012361 /* reguse:VReg_128 */, %953 INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 5046281 /* reguse:VReg_96 */, %1054 INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 5046281 /* reguse:VReg_96 */, %1155 $agpr1 = COPY %1456 INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 1638409 /* reguse:AGPR_32 */, killed $agpr157 SI_RETURN58 59...60