xref: /aosp_15_r20/external/mesa3d/src/etnaviv/isa/disasm.c (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Copyright © 2023 Igalia S.L.
3*61046927SAndroid Build Coastguard Worker  * SPDX-License-Identifier: MIT
4*61046927SAndroid Build Coastguard Worker  */
5*61046927SAndroid Build Coastguard Worker 
6*61046927SAndroid Build Coastguard Worker #include <stdio.h>
7*61046927SAndroid Build Coastguard Worker 
8*61046927SAndroid Build Coastguard Worker #include "util/os_file.h"
9*61046927SAndroid Build Coastguard Worker 
10*61046927SAndroid Build Coastguard Worker #include "etnaviv-isa.h"
11*61046927SAndroid Build Coastguard Worker 
12*61046927SAndroid Build Coastguard Worker static void
pre_instr_cb(void * d,unsigned n,void * instr)13*61046927SAndroid Build Coastguard Worker pre_instr_cb(void *d, unsigned n, void *instr)
14*61046927SAndroid Build Coastguard Worker {
15*61046927SAndroid Build Coastguard Worker    uint32_t *dwords = (uint32_t *)instr;
16*61046927SAndroid Build Coastguard Worker    printf("%03d [%08x %08x %08x %08x] ", n, dwords[0], dwords[1], dwords[2], dwords[3]);
17*61046927SAndroid Build Coastguard Worker }
18*61046927SAndroid Build Coastguard Worker 
19*61046927SAndroid Build Coastguard Worker int
main(int argc,char * argv[])20*61046927SAndroid Build Coastguard Worker main(int argc, char *argv[])
21*61046927SAndroid Build Coastguard Worker {
22*61046927SAndroid Build Coastguard Worker    size_t sz;
23*61046927SAndroid Build Coastguard Worker    void *raw = os_read_file(argv[1], &sz);
24*61046927SAndroid Build Coastguard Worker 
25*61046927SAndroid Build Coastguard Worker    etnaviv_isa_disasm(raw, sz, stdout,
26*61046927SAndroid Build Coastguard Worker                       &(struct isa_decode_options){
27*61046927SAndroid Build Coastguard Worker                          .show_errors = true,
28*61046927SAndroid Build Coastguard Worker                          .branch_labels = true,
29*61046927SAndroid Build Coastguard Worker                          .pre_instr_cb = pre_instr_cb,
30*61046927SAndroid Build Coastguard Worker                       });
31*61046927SAndroid Build Coastguard Worker 
32*61046927SAndroid Build Coastguard Worker    return 0;
33*61046927SAndroid Build Coastguard Worker }
34