================ @@ -1755,6 +1755,56 @@ As part of the AMDGPU MC layer, AMDGPU provides the following target specific =================== ================= ======================================================== +Function Resource Usage +----------------------- + +The function resource information (e.g., number of VGPRs) required depends on +all of its callees' function resources. The expression to denote these +resources should, therefore, be described as the propagative of its callees' +equivalent expressions. Said expressions are generated and emitted (as symbols) +by the compiler when compiling to either assembly or object format and should +not be overwritten or redefined. + +The following describes all emitted function resource usage information: + + .. table:: Function Resource Usage: + :name: function-usage-table + + ===================================== ========= ========================================= =============================================================================== + Symbol Type Description Example + ===================================== ========= ========================================= =============================================================================== + <function_name>.num_vgpr Integer Number of VGPRs used by <function_name>, .set foo.num_vgpr, max(32, bar.num_vgpr, baz.num_vgpr) + worst case of itself and its callees' + VGPR use + <function_name>.num_agpr Integer Number of AGPRs used by <function_name>, .set foo.num_agpr, max(35, bar.num_agpr) + worst case of itself and its callees' + AGPR use + <function_name>.numbered_sgpr Integer Number of SGPRs used by <function_name>, .set foo.num_sgpr, 21 + worst case of itself and its callees' + SGPR use (without any of the implicitly + used SGPRs) + <function_name>.private_seg_size Integer Total stack size required for .set foo.private_seg_size, 16+max(bar.private_seg_size, baz.private_seg_size) + <function_name>, expression is the + locally used stack size + the worst case + callee + <function_name>.uses_vcc Bool Whether <function_name>, or any of its .set foo.uses_vcc, or(0, bar.uses_vcc) + callees, uses vcc or not + <function_name>.uses_flat_scratch Bool Whether <function_name>, or any of its .set foo.uses_flat_scratch, 1 + callees, uses flat scratch or not + <function_name>.has_dyn_sized_stack Bool Whether <function_name> stack is .set foo.has_dyn_sized_stack, 1 ---------------- slinder1 wrote:
Is this the only property without the callee propagation property? If so, it may be worth noting that explicitly https://github.com/llvm/llvm-project/pull/102913 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits