ac: add a standalone IB parser program
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24759>
This commit is contained in:
63
src/amd/common/ac_parse_ib.c
Normal file
63
src/amd/common/ac_parse_ib.c
Normal file
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* Copyright © 2023 Advanced Micro Devices, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#include "ac_debug.h"
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
if (argc < 3) {
|
||||
fprintf(stderr, "Usage: [LLVM processor] [IB filenames]\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
const char *gpu = argv[1];
|
||||
enum amd_gfx_level gfx_level;
|
||||
enum radeon_family family = CHIP_UNKNOWN;
|
||||
|
||||
for (unsigned i = 0; i < CHIP_LAST; i++) {
|
||||
if (!strcmp(gpu, ac_get_llvm_processor_name(i))) {
|
||||
family = i;
|
||||
gfx_level = ac_get_gfx_level(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (family == CHIP_UNKNOWN) {
|
||||
fprintf(stderr, "Unknown LLVM processor.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
for (unsigned i = 2; i < argc; i++) {
|
||||
const char *filename = argv[i];
|
||||
|
||||
FILE *f = fopen(filename, "r");
|
||||
if (!f) {
|
||||
fprintf(stderr, "Can't open IB: %s\n", filename);
|
||||
continue;
|
||||
}
|
||||
|
||||
fseek(f, 0, SEEK_END);
|
||||
int size = ftell(f);
|
||||
fseek(f, 0, SEEK_SET);
|
||||
|
||||
uint32_t *ib = (uint32_t*)malloc(size);
|
||||
|
||||
if (fread(ib, size, 1, f) != 1) {
|
||||
fprintf(stderr, "Can't read IB: %s\n", filename);
|
||||
fclose(f);
|
||||
free(ib);
|
||||
continue;
|
||||
}
|
||||
fclose(f);
|
||||
|
||||
ac_parse_ib(stdout, ib, size / 4, NULL, 0, filename, gfx_level, family, NULL, NULL);
|
||||
free(ib);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
@@ -132,6 +132,15 @@ libamd_common = static_library(
|
||||
|
||||
idep_amdgfxregs_h = declare_dependency(sources : [amdgfxregs_h])
|
||||
|
||||
executable(
|
||||
'ac_parse_ib',
|
||||
['ac_parse_ib.c'],
|
||||
link_with: [libamd_common],
|
||||
include_directories : [
|
||||
inc_amd, inc_include, inc_src,
|
||||
],
|
||||
dependencies : [idep_amdgfxregs_h, idep_mesautil, idep_nir_headers],
|
||||
)
|
||||
|
||||
if with_tests and not with_platform_windows
|
||||
test(
|
||||
|
Reference in New Issue
Block a user