nir/print: print function signature

parameter dimensions and names if we have them. example:

decl_function libagx_geometry_input_address (64 return, 64 p, 32 vtx, 32 location)

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32208>
This commit is contained in:
Alyssa Rosenzweig 2024-11-17 14:34:10 -04:00 committed by Marge Bot
parent 3da8444be5
commit eebfbf5ecd

View file

@ -2315,12 +2315,33 @@ print_function(nir_function *function, print_state *state)
{
FILE *fp = state->fp;
fprintf(fp, "decl_function %s (", function->name);
for (unsigned i = 0; i < function->num_params; ++i) {
if (i != 0) {
fprintf(fp, ", ");
}
nir_parameter param = function->params[i];
fprintf(fp, "%u", param.bit_size);
if (param.num_components != 1) {
fprintf(fp, "x%u", param.num_components);
}
if (param.name) {
fprintf(fp, " %s", param.name);
} else if (param.is_return) {
fprintf(fp, " return");
}
}
fprintf(fp, ")");
/* clang-format off */
fprintf(fp, "decl_function %s (%d params)%s%s", function->name,
function->num_params,
function->dont_inline ? " (noinline)" :
function->should_inline ? " (inline)" : "",
function->is_exported ? " (exported)" : "");
fprintf(fp, "%s%s", function->dont_inline ? " (noinline)" :
function->should_inline ? " (inline)" : "",
function->is_exported ? " (exported)" : "");
/* clang-format on */
fprintf(fp, "\n");