brintos

brintos / llvm-project-archived public Read only

0
0
Text · 26.3 KiB · 1f6ffe0 Raw
509 lines · plain
1; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -filetype=null %s 2>&1 | FileCheck --implicit-check-not=warning -check-prefix=WARN %s2 3; Check the effect that amdgpu-agpr-alloc has on register reservations.4;5; Asm clobbers will print a warning when they clobber reserved6; registers, and should be uniquely identified in the message from the7; !srcloc values.8 9; The occupancy target warnings should be a side effect of violating10; the register budget with asm.11 12; WARN: warning: inline asm clobber list contains reserved registers: a0 at line 113define amdgpu_kernel void @min_num_agpr_0_0__amdgpu_no_agpr() #0 {14  call void asm sideeffect "; clobber $0","~{a0}"(), !srcloc !{i32 1}15  ret void16}17 18attributes #0 = { "amdgpu-waves-per-eu"="8,8" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="0,0" }19 20; Check parse of single entry 021 22; WARN: warning: inline asm clobber list contains reserved registers: a0 at line 223define amdgpu_kernel void @min_num_agpr_0__amdgpu_no_agpr() #1 {24  call void asm sideeffect "; clobber $0","~{a0}"(), !srcloc !{i32 2}25  call void asm sideeffect "; clobber $0","~{v0}"(), !srcloc !{i32 2}26  ret void27}28 29attributes #1 = { "amdgpu-waves-per-eu"="8,8" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="0" }30 31 32; Undefined use33define amdgpu_kernel void @min_num_agpr_1_1() #2 {34  call void asm sideeffect "; clobber $0","~{a0}"(), !srcloc !{i32 3}35  ret void36}37 38attributes #2 = { "amdgpu-waves-per-eu"="8,8" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="1,1" }39 40; Check parse of single entry 4, interpreted as the minimum. Total budget is 64.41; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_4__amdgpu_no_agpr': desired occupancy was 8, final occupancy is 742; WARN: warning: inline asm clobber list contains reserved registers: v60 at line 443define amdgpu_kernel void @min_num_agpr_4__amdgpu_no_agpr() #3 {44  call void asm sideeffect "; clobber $0","~{a0}"(), !srcloc !{i32 4}45  call void asm sideeffect "; clobber $0","~{a3}"(), !srcloc !{i32 4}46  call void asm sideeffect "; clobber $0","~{v59}"(), !srcloc !{i32 4}47  call void asm sideeffect "; clobber $0","~{v60}"(), !srcloc !{i32 4}48  ret void49}50 51attributes #3 = { "amdgpu-waves-per-eu"="8,8" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="4" }52 53 54; Allocation granularity requires rounding this to use 4 AGPRs, so the55; top 4 VGPRs are unavailable. The maximum agpr count is also padded56; up to the minimum of 457 58; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_occ8_1_1': desired occupancy was 8, final occupancy is 759; WARN: warning: inline asm clobber list contains reserved registers: a4 at line 560; WARN: warning: inline asm clobber list contains reserved registers: v60 at line 561; WARN: warning: inline asm clobber list contains reserved registers: v63 at line 562define amdgpu_kernel void @min_num_agpr_occ8_1_1() #4 {63  call void asm sideeffect "; clobber $0","~{a3}"(), !srcloc !{i32 5}64  call void asm sideeffect "; clobber $0","~{a4}"(), !srcloc !{i32 5}65  call void asm sideeffect "; clobber $0","~{v59}"(), !srcloc !{i32 5}66  call void asm sideeffect "; clobber $0","~{v60}"(), !srcloc !{i32 5}67  call void asm sideeffect "; clobber $0","~{v63}"(), !srcloc !{i32 5}68  ret void69}70 71attributes #4 = { "amdgpu-waves-per-eu"="8,8" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="1,1" }72 73 74; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_64_64__amdgpu_no_agpr': desired occupancy was 8, final occupancy is 775; WARN: warning: inline asm clobber list contains reserved registers: v0 at line 676define amdgpu_kernel void @min_num_agpr_64_64__amdgpu_no_agpr() #5 {77  call void asm sideeffect "; clobber $0","~{a63}"(), !srcloc !{i32 6}78  call void asm sideeffect "; clobber $0","~{v0}"(), !srcloc !{i32 6}79  ret void80}81 82attributes #5 = { "amdgpu-waves-per-eu"="8,8" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="64,64" }83 84; No free VGPRs85; WARN: warning: inline asm clobber list contains reserved registers: v0 at line 786define amdgpu_kernel void @min_num_agpr_64_64() #6 {87  call void asm sideeffect "; clobber $0","~{v0}"(), !srcloc !{i32 7}88  call void asm sideeffect "; clobber $0","~{a0}"(), !srcloc !{i32 7}89  ret void90}91 92attributes #6 = { "amdgpu-waves-per-eu"="8,8" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="64,64" }93 94; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_63_64': desired occupancy was 8, final occupancy is 795; WARN: warning: inline asm clobber list contains reserved registers: v0 at line 896; WARN: warning: inline asm clobber list contains reserved registers: v3 at line 897define amdgpu_kernel void @min_num_agpr_63_64() #7 {98  call void asm sideeffect "; clobber $0","~{v0}"(), !srcloc !{i32 8}99  call void asm sideeffect "; clobber $0","~{v3}"(), !srcloc !{i32 8}100  call void asm sideeffect "; clobber $0","~{a59}"(), !srcloc !{i32 8}101  call void asm sideeffect "; clobber $0","~{a60}"(), !srcloc !{i32 8}102  call void asm sideeffect "; clobber $0","~{a0}"(), !srcloc !{i32 8}103  ret void104}105 106attributes #7 = { "amdgpu-waves-per-eu"="8,8" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="63,64" }107 108 109; No-op value.110define amdgpu_kernel void @min_num_agpr_occ8_0_64() #8 {111  call void asm sideeffect "; clobber $0","~{v0}"(), !srcloc !{i32 9}112  call void asm sideeffect "; clobber $0","~{v59}"(), !srcloc !{i32 9}113  ret void114}115 116attributes #8 = { "amdgpu-waves-per-eu"="8,8" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="0,64" }117 118 119; Register budget 64120; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_occ8_11_59': desired occupancy was 8, final occupancy is 7121; WARN: warning: inline asm clobber list contains reserved registers: a12 at line 10122; WARN: warning: inline asm clobber list contains reserved registers: v52 at line 10123define amdgpu_kernel void @min_num_agpr_occ8_11_59() #9 {124  call void asm sideeffect "; clobber $0","~{a11}"(), !srcloc !{i32 10}125  call void asm sideeffect "; clobber $0","~{a12}"(), !srcloc !{i32 10}126  call void asm sideeffect "; clobber $0","~{v51}"(), !srcloc !{i32 10}127  call void asm sideeffect "; clobber $0","~{v52}"(), !srcloc !{i32 10}128  ret void129}130 131attributes #9 = { "amdgpu-waves-per-eu"="8,8" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="11,59" }132 133 134; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_occ8_12_59': desired occupancy was 8, final occupancy is 7135; WARN: warning: inline asm clobber list contains reserved registers: a12 at line 11136; WARN: warning: inline asm clobber list contains reserved registers: v52 at line 11137define amdgpu_kernel void @min_num_agpr_occ8_12_59() #10 {138  call void asm sideeffect "; clobber $0","~{a11}"(), !srcloc !{i32 11}139  call void asm sideeffect "; clobber $0","~{a12}"(), !srcloc !{i32 11}140  call void asm sideeffect "; clobber $0","~{v51}"(), !srcloc !{i32 11}141  call void asm sideeffect "; clobber $0","~{v52}"(), !srcloc !{i32 11}142  ret void143}144 145attributes #10 = { "amdgpu-waves-per-eu"="8,8" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="12,59" }146 147 148; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_occ8_12_20': desired occupancy was 8, final occupancy is 7149; WARN: warning: inline asm clobber list contains reserved registers: a12 at line 12150; WARN: warning: inline asm clobber list contains reserved registers: v52 at line 12151define amdgpu_kernel void @min_num_agpr_occ8_12_20() #11 {152  call void asm sideeffect "; clobber $0","~{a11}"(), !srcloc !{i32 12}153  call void asm sideeffect "; clobber $0","~{a12}"(), !srcloc !{i32 12}154  call void asm sideeffect "; clobber $0","~{v51}"(), !srcloc !{i32 12}155  call void asm sideeffect "; clobber $0","~{v52}"(), !srcloc !{i32 12}156  ret void157}158 159attributes #11 = { "amdgpu-waves-per-eu"="8,8" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="12,20" }160 161 162; WARN: warning: inline asm clobber list contains reserved registers: a20 at line 13163define amdgpu_kernel void @min_num_agpr_occ1_12_20() #12 {164  call void asm sideeffect "; clobber $0","~{a12}"(), !srcloc !{i32 13}165  call void asm sideeffect "; clobber $0","~{a19}"(), !srcloc !{i32 13}166  call void asm sideeffect "; clobber $0","~{a20}"(), !srcloc !{i32 13}167  call void asm sideeffect "; clobber $0","~{v0}"(), !srcloc !{i32 13}168  call void asm sideeffect "; clobber $0","~{v20}"(), !srcloc !{i32 13}169  call void asm sideeffect "; clobber $0","~{v255}"(), !srcloc !{i32 13}170  ret void171}172 173attributes #12 = { "amdgpu-waves-per-eu"="1,1" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="12,20" }174 175; WARN: warning: inline asm clobber list contains reserved registers: a20 at line 14176define amdgpu_kernel void @min_num_agpr_occ1_13_20() #13 {177  call void asm sideeffect "; clobber $0","~{a11}"(), !srcloc !{i32 14}178  call void asm sideeffect "; clobber $0","~{a12}"(), !srcloc !{i32 14}179  call void asm sideeffect "; clobber $0","~{a13}"(), !srcloc !{i32 14}180  call void asm sideeffect "; clobber $0","~{a19}"(), !srcloc !{i32 14}181  call void asm sideeffect "; clobber $0","~{a20}"(), !srcloc !{i32 14}182  call void asm sideeffect "; clobber $0","~{v51}"(), !srcloc !{i32 14}183  call void asm sideeffect "; clobber $0","~{v20}"(), !srcloc !{i32 14}184  call void asm sideeffect "; clobber $0","~{v255}"(), !srcloc !{i32 14}185  ret void186}187 188attributes #13 = { "amdgpu-waves-per-eu"="1,1" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="13,20" }189 190 191; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_occ2_13_20': desired occupancy was 2, final occupancy is 1192; WARN: warning: inline asm clobber list contains reserved registers: a16 at line 15193; WARN: warning: inline asm clobber list contains reserved registers: a20 at line 15194; WARN: warning: inline asm clobber list contains reserved registers: v240 at line 15195define amdgpu_kernel void @min_num_agpr_occ2_13_20() #14 {196  call void asm sideeffect "; clobber $0","~{a15}"(), !srcloc !{i32 15}197  call void asm sideeffect "; clobber $0","~{a16}"(), !srcloc !{i32 15}198  call void asm sideeffect "; clobber $0","~{a20}"(), !srcloc !{i32 15}199 200  call void asm sideeffect "; clobber $0","~{v239}"(), !srcloc !{i32 15}201  call void asm sideeffect "; clobber $0","~{v240}"(), !srcloc !{i32 15}202 203  ret void204}205 206attributes #14 = { "amdgpu-waves-per-eu"="2,2" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="13,20" }207 208 209; Test maximum exceeds the hardware limit.210define amdgpu_kernel void @min_num_agpr_occ1_13_257() #15 {211  call void asm sideeffect "; clobber $0","~{a255}"(), !srcloc !{i32 16}212  call void asm sideeffect "; clobber $0","~{v255}"(), !srcloc !{i32 16}213  ret void214}215 216attributes #15 = { "amdgpu-waves-per-eu"="1,1" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="13,257" }217 218 219; Test min and max exceeds the hardware limit.220define amdgpu_kernel void @min_num_agpr_occ1_257_257() #16 {221  call void asm sideeffect "; clobber $0","~{a255}"(), !srcloc !{i32 17}222  call void asm sideeffect "; clobber $0","~{v255}"(), !srcloc !{i32 17}223  ret void224}225 226attributes #16 = { "amdgpu-waves-per-eu"="1,1" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="257,257" }227 228 229; Test round up hits the hardware limit230define amdgpu_kernel void @min_num_agpr_occ1_255_255() #17 {231  call void asm sideeffect "; clobber $0","~{a255}"(), !srcloc !{i32 18}232  call void asm sideeffect "; clobber $0","~{v255}"(), !srcloc !{i32 18}233  ret void234}235 236attributes #17 = { "amdgpu-waves-per-eu"="1,1" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="255,255" }237 238 239; Test round up hits the hardware limit240define amdgpu_kernel void @min_num_agpr_occ1_253_259() #18 {241  call void asm sideeffect "; clobber $0","~{a255}"(), !srcloc !{i32 19}242  call void asm sideeffect "; clobber $0","~{v255}"(), !srcloc !{i32 19}243  ret void244}245 246attributes #18 = { "amdgpu-waves-per-eu"="1,1" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="253,259" }247 248; With a minimum of 0, we are not required to allocate any AGPRs249; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_occ4_0_64': desired occupancy was 4, final occupancy is 2250; WARN: warning: inline asm clobber list contains reserved registers: a0 at line 20251; WARN: warning: inline asm clobber list contains reserved registers: a63 at line 20252; WARN: warning: inline asm clobber list contains reserved registers: a64 at line 20253; WARN: warning: inline asm clobber list contains reserved registers: v128 at line 20254define amdgpu_kernel void @min_num_agpr_occ4_0_64() #19 {255  call void asm sideeffect "; clobber $0","~{a0}"(), !srcloc !{i32 20}256  call void asm sideeffect "; clobber $0","~{a63}"(), !srcloc !{i32 20}257  call void asm sideeffect "; clobber $0","~{a64}"(), !srcloc !{i32 20}258  call void asm sideeffect "; clobber $0","~{v63}"(), !srcloc !{i32 20}259  call void asm sideeffect "; clobber $0","~{v64}"(), !srcloc !{i32 20}260  call void asm sideeffect "; clobber $0","~{v127}"(), !srcloc !{i32 20}261  call void asm sideeffect "; clobber $0","~{v128}"(), !srcloc !{i32 20}262  ret void263}264 265attributes #19 = { "amdgpu-waves-per-eu"="4,4" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="0,64" }266 267 268; With a non-0 minimum, we must allocate at least 4 AGPRs. The rest of269; the budget is for VGPRs.270; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_occ4_1_64': desired occupancy was 4, final occupancy is 2271; WARN: warning: inline asm clobber list contains reserved registers: a4 at line 21272; WARN: warning: inline asm clobber list contains reserved registers: a63 at line 21273; WARN: warning: inline asm clobber list contains reserved registers: a64 at line 21274; WARN: warning: inline asm clobber list contains reserved registers: v124 at line 21275define amdgpu_kernel void @min_num_agpr_occ4_1_64() #20 {276  call void asm sideeffect "; clobber $0","~{a0}"(), !srcloc !{i32 21}277  call void asm sideeffect "; clobber $0","~{a3}"(), !srcloc !{i32 21}278  call void asm sideeffect "; clobber $0","~{a4}"(), !srcloc !{i32 21}279  call void asm sideeffect "; clobber $0","~{a63}"(), !srcloc !{i32 21}280  call void asm sideeffect "; clobber $0","~{a64}"(), !srcloc !{i32 21}281  call void asm sideeffect "; clobber $0","~{v63}"(), !srcloc !{i32 21}282  call void asm sideeffect "; clobber $0","~{v64}"(), !srcloc !{i32 21}283  call void asm sideeffect "; clobber $0","~{v123}"(), !srcloc !{i32 21}284  call void asm sideeffect "; clobber $0","~{v124}"(), !srcloc !{i32 21}285  ret void286}287 288attributes #20 = { "amdgpu-waves-per-eu"="4,4" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="1,64" }289 290; 128 vector registers291; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_occ4_32_64': desired occupancy was 4, final occupancy is 3292; WARN: warning: inline asm clobber list contains reserved registers: a32 at line 22293; WARN: warning: inline asm clobber list contains reserved registers: v96 at line 22294define amdgpu_kernel void @min_num_agpr_occ4_32_64() #21 {295  call void asm sideeffect "; clobber $0","~{a31}"(), !srcloc !{i32 22}296  call void asm sideeffect "; clobber $0","~{a32}"(), !srcloc !{i32 22}297  call void asm sideeffect "; clobber $0","~{v95}"(), !srcloc !{i32 22}298  call void asm sideeffect "; clobber $0","~{v96}"(), !srcloc !{i32 22}299  ret void300}301 302attributes #21 = { "amdgpu-waves-per-eu"="4,4" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="32,64" }303 304; Evenly partition the 128 vector registers305; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_occ4_64_64': desired occupancy was 4, final occupancy is 3306; WARN: warning: inline asm clobber list contains reserved registers: a64 at line 23307; WARN: warning: inline asm clobber list contains reserved registers: v64 at line 23308define amdgpu_kernel void @min_num_agpr_occ4_64_64() #22 {309  call void asm sideeffect "; clobber $0","~{a63}"(), !srcloc !{i32 23}310  call void asm sideeffect "; clobber $0","~{a64}"(), !srcloc !{i32 23}311  call void asm sideeffect "; clobber $0","~{v63}"(), !srcloc !{i32 23}312  call void asm sideeffect "; clobber $0","~{v64}"(), !srcloc !{i32 23}313  ret void314}315 316attributes #22 = { "amdgpu-waves-per-eu"="4,4" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="64,64" }317 318; We are not required to allocate any AGPRs, but they are available319; with a budget of 512 vector registers. We are artificially limiting320; to use 64.321 322; WARN: warning: inline asm clobber list contains reserved registers: a64 at line 24323define amdgpu_kernel void @min_num_agpr_occ1_0_64() #23 {324  call void asm sideeffect "; clobber $0","~{a63}"(), !srcloc !{i32 24}325  call void asm sideeffect "; clobber $0","~{a64}"(), !srcloc !{i32 24}326  call void asm sideeffect "; clobber $0","~{v255}"(), !srcloc !{i32 24}327  ret void328}329 330attributes #23 = { "amdgpu-waves-per-eu"="1,1" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="0,64" }331 332; WARN: warning: inline asm clobber list contains reserved registers: a68 at line 25333define amdgpu_kernel void @min_num_agpr_occ1_0_68() #24 {334  call void asm sideeffect "; clobber $0","~{a67}"(), !srcloc !{i32 25}335  call void asm sideeffect "; clobber $0","~{a68}"(), !srcloc !{i32 25}336  call void asm sideeffect "; clobber $0","~{v255}"(), !srcloc !{i32 25}337  ret void338}339 340attributes #24 = { "amdgpu-waves-per-eu"="1,1" "amdgpu-flat-work-group-size"="64,64" "amdgpu-agpr-alloc"="0,68" }341 342 343; The total vector register budget is 128, claim more than that for344; the minimum AGPRs. This checks for an assertion.345; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_occ10__min_agpr_129': desired occupancy was 8, final occupancy is 3346; WARN: warning: inline asm clobber list contains reserved registers: a128 at line 26347; WARN: warning: inline asm clobber list contains reserved registers: v0 at line 26348define amdgpu_kernel void @min_num_agpr_occ10__min_agpr_129() #25 {349  call void asm sideeffect "; clobber $0","~{a127}"(), !srcloc !{i32 26}350  call void asm sideeffect "; clobber $0","~{a128}"(), !srcloc !{i32 26}351  call void asm sideeffect "; clobber $0","~{v0}"(), !srcloc !{i32 26}352  ret void353}354 355attributes #25 = { "amdgpu-waves-per-eu"="8,10" "amdgpu-flat-work-group-size"="1024,1024" "amdgpu-agpr-alloc"="129" }356 357; Check for another assertion, request beyond the budget.358 359; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_occ10__min_agpr_129_129': desired occupancy was 8, final occupancy is 3360; WARN: warning: inline asm clobber list contains reserved registers: a128 at line 27361; WARN: warning: inline asm clobber list contains reserved registers: v0 at line 27362define amdgpu_kernel void @min_num_agpr_occ10__min_agpr_129_129() #26 {363  call void asm sideeffect "; clobber $0","~{a127}"(), !srcloc !{i32 27}364  call void asm sideeffect "; clobber $0","~{a128}"(), !srcloc !{i32 27}365  call void asm sideeffect "; clobber $0","~{v0}"(), !srcloc !{i32 27}366  ret void367}368 369attributes #26 = { "amdgpu-waves-per-eu"="8,10" "amdgpu-flat-work-group-size"="1024,1024" "amdgpu-agpr-alloc"="129,129" }370 371; The total vector register budget is 128, claim all of it for AGPRs.372 373; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_occ10__min_agpr_128': desired occupancy was 8, final occupancy is 3374; WARN: warning: inline asm clobber list contains reserved registers: a128 at line 28375; WARN: warning: inline asm clobber list contains reserved registers: v0 at line 28376 377define amdgpu_kernel void @min_num_agpr_occ10__min_agpr_128() #27 {378  call void asm sideeffect "; clobber $0","~{a127}"(), !srcloc !{i32 28}379  call void asm sideeffect "; clobber $0","~{a128}"(), !srcloc !{i32 28}380  call void asm sideeffect "; clobber $0","~{v0}"(), !srcloc !{i32 28}381  ret void382}383 384attributes #27 = { "amdgpu-waves-per-eu"="8,10" "amdgpu-flat-work-group-size"="1024,1024" "amdgpu-agpr-alloc"="128" }385 386; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_occ10__min_agpr_257': desired occupancy was 8, final occupancy is 3387; WARN: warning: inline asm clobber list contains reserved registers: a128 at line 29388; WARN: warning: inline asm clobber list contains reserved registers: v0 at line 29389define amdgpu_kernel void @min_num_agpr_occ10__min_agpr_257() #28 {390  call void asm sideeffect "; clobber $0","~{a127}"(), !srcloc !{i32 29}391  call void asm sideeffect "; clobber $0","~{a128}"(), !srcloc !{i32 29}392  call void asm sideeffect "; clobber $0","~{v0}"(), !srcloc !{i32 29}393  ret void394}395 396attributes #28 = { "amdgpu-waves-per-eu"="8,10" "amdgpu-flat-work-group-size"="1024,1024" "amdgpu-agpr-alloc"="257" }397 398; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_occ10__min_agpr_257_257': desired occupancy was 8, final occupancy is 3399; WARN: warning: inline asm clobber list contains reserved registers: a128 at line 30400; WARN: warning: inline asm clobber list contains reserved registers: v0 at line 30401define amdgpu_kernel void @min_num_agpr_occ10__min_agpr_257_257() #29 {402  call void asm sideeffect "; clobber $0","~{a127}"(), !srcloc !{i32 30}403  call void asm sideeffect "; clobber $0","~{a128}"(), !srcloc !{i32 30}404  call void asm sideeffect "; clobber $0","~{v0}"(), !srcloc !{i32 30}405  ret void406}407 408attributes #29 = { "amdgpu-waves-per-eu"="8,10" "amdgpu-flat-work-group-size"="1024,1024" "amdgpu-agpr-alloc"="257,257" }409 410 411; The total vector register budget is 96412 413; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_occ5__min_agpr_8_256': desired occupancy was 5, final occupancy is 4414; WARN: warning: inline asm clobber list contains reserved registers: v88 at line 31415; WARN: warning: inline asm clobber list contains reserved registers: a8 at line 31416define amdgpu_kernel void @min_num_agpr_occ5__min_agpr_8_256() #30 {417  call void asm sideeffect "; clobber $0","~{v87}"(), !srcloc !{i32 31}418  call void asm sideeffect "; clobber $0","~{v88}"(), !srcloc !{i32 31}419  call void asm sideeffect "; clobber $0","~{a7}"(), !srcloc !{i32 31}420  call void asm sideeffect "; clobber $0","~{a8}"(), !srcloc !{i32 31}421  ret void422}423 424attributes #30 = { "amdgpu-waves-per-eu"="5,5" "amdgpu-flat-work-group-size"="1024,1024" "amdgpu-agpr-alloc"="8,256" }425 426; The total vector register budget is 96427; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_occ5__min_agpr_8': desired occupancy was 5, final occupancy is 4428; WARN: warning: inline asm clobber list contains reserved registers: v88 at line 32429; WARN: warning: inline asm clobber list contains reserved registers: a8 at line 32430define amdgpu_kernel void @min_num_agpr_occ5__min_agpr_8() #31 {431  call void asm sideeffect "; clobber $0","~{v87}"(), !srcloc !{i32 32}432  call void asm sideeffect "; clobber $0","~{v88}"(), !srcloc !{i32 32}433  call void asm sideeffect "; clobber $0","~{a7}"(), !srcloc !{i32 32}434  call void asm sideeffect "; clobber $0","~{a8}"(), !srcloc !{i32 32}435  ret void436}437 438; budget is 96439; WARN: warning: inline asm clobber list contains reserved registers: v88 at line 33440define amdgpu_kernel void @min_num_agpr_occ5__min_agpr_8_no_agpr_references() #31 {441  call void asm sideeffect "; clobber $0","~{v87}"(), !srcloc !{i32 33}442  call void asm sideeffect "; clobber $0","~{v88}"(), !srcloc !{i32 33}443  ret void444}445 446attributes #31 = { "amdgpu-waves-per-eu"="5,5" "amdgpu-flat-work-group-size"="1024,1024" "amdgpu-agpr-alloc"="8" }447 448 449; register budget 256450; WARN: warning: <unknown>:0:0: failed to meet occupancy target given by 'amdgpu-waves-per-eu' in 'min_num_agpr_occ2__min_agpr_93': desired occupancy was 2, final occupancy is 1451; WARN: warning: inline asm clobber list contains reserved registers: v160 at line 34452; WARN: warning: inline asm clobber list contains reserved registers: a96 at line 34453define amdgpu_kernel void @min_num_agpr_occ2__min_agpr_93() #33 {454  call void asm sideeffect "; clobber $0","~{v159}"(), !srcloc !{i32 34}455  call void asm sideeffect "; clobber $0","~{v160}"(), !srcloc !{i32 34}456  call void asm sideeffect "; clobber $0","~{a95}"(), !srcloc !{i32 34}457  call void asm sideeffect "; clobber $0","~{a96}"(), !srcloc !{i32 34}458  ret void459}460 461attributes #33 = { "amdgpu-waves-per-eu"="2,2" "amdgpu-flat-work-group-size"="1,256" "amdgpu-agpr-alloc"="93" }462 463; register budget 512, no warnings and fully allocated464define amdgpu_kernel void @min_num_agpr_occ1__min_agpr_93() #34 {465  call void asm sideeffect "; clobber $0","~{v255}"(), !srcloc !{i32 35}466  call void asm sideeffect "; clobber $0","~{a255}"(), !srcloc !{i32 35}467  ret void468}469 470attributes #34 = { "amdgpu-waves-per-eu"="1,1" "amdgpu-flat-work-group-size"="1,256" "amdgpu-agpr-alloc"="93" }471 472; register budget 256473; WARN: warning: inline asm clobber list contains reserved registers: a96 at line 36474define amdgpu_kernel void @min_num_agpr_occ1__min_agpr_93_93() #35 {475  call void asm sideeffect "; clobber $0","~{v255}"(), !srcloc !{i32 36}476  call void asm sideeffect "; clobber $0","~{a95}"(), !srcloc !{i32 36}477  call void asm sideeffect "; clobber $0","~{a96}"(), !srcloc !{i32 36}478  ret void479}480 481attributes #35 = { "amdgpu-waves-per-eu"="1,1" "amdgpu-flat-work-group-size"="1,256" "amdgpu-agpr-alloc"="93,93" }482 483; register budget 512, fully allocated and no warnings.484define amdgpu_kernel void @min_num_agpr_occ1__min_agpr_256() #36 {485  call void asm sideeffect "; clobber $0","~{v255}"(), !srcloc !{i32 37}486  call void asm sideeffect "; clobber $0","~{a255}"(), !srcloc !{i32 37}487  ret void488}489 490attributes #36 = { "amdgpu-waves-per-eu"="1,1" "amdgpu-flat-work-group-size"="1,256" "amdgpu-agpr-alloc"="256" }491 492; register budget 512, fully allocated and no warnings.493define amdgpu_kernel void @min_num_agpr_occ1__min_agpr_256_256() #37 {494  call void asm sideeffect "; clobber $0","~{v255}"(), !srcloc !{i32 38}495  call void asm sideeffect "; clobber $0","~{a255}"(), !srcloc !{i32 38}496  ret void497}498 499attributes #37 = { "amdgpu-waves-per-eu"="1,1" "amdgpu-flat-work-group-size"="1,256" "amdgpu-agpr-alloc"="256,256" }500 501; register budget 512, fully allocated and no warnings.502define amdgpu_kernel void @occ1_min_agpr_no_attr() #38 {503  call void asm sideeffect "; clobber $0","~{v255}"(), !srcloc !{i32 39}504  call void asm sideeffect "; clobber $0","~{a255}"(), !srcloc !{i32 39}505  ret void506}507 508attributes #38 = { "amdgpu-waves-per-eu"="1,1" "amdgpu-flat-work-group-size"="256,256" }509