xref: /aosp_15_r20/external/mesa3d/src/freedreno/common/disasm.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Copyright © 2012 Rob Clark <[email protected]>
3*61046927SAndroid Build Coastguard Worker  * SPDX-License-Identifier: MIT
4*61046927SAndroid Build Coastguard Worker  */
5*61046927SAndroid Build Coastguard Worker 
6*61046927SAndroid Build Coastguard Worker #ifndef DISASM_H_
7*61046927SAndroid Build Coastguard Worker #define DISASM_H_
8*61046927SAndroid Build Coastguard Worker 
9*61046927SAndroid Build Coastguard Worker #include <stdbool.h>
10*61046927SAndroid Build Coastguard Worker #include <stdint.h>
11*61046927SAndroid Build Coastguard Worker #include <stdio.h>
12*61046927SAndroid Build Coastguard Worker 
13*61046927SAndroid Build Coastguard Worker #include "compiler/shader_enums.h"
14*61046927SAndroid Build Coastguard Worker 
15*61046927SAndroid Build Coastguard Worker /* bitmask of debug flags */
16*61046927SAndroid Build Coastguard Worker enum debug_t {
17*61046927SAndroid Build Coastguard Worker    PRINT_RAW = 0x1, /* dump raw hexdump */
18*61046927SAndroid Build Coastguard Worker    PRINT_VERBOSE = 0x2,
19*61046927SAndroid Build Coastguard Worker    PRINT_STATS = 0x4,
20*61046927SAndroid Build Coastguard Worker    EXPAND_REPEAT = 0x8,
21*61046927SAndroid Build Coastguard Worker };
22*61046927SAndroid Build Coastguard Worker 
23*61046927SAndroid Build Coastguard Worker struct shader_stats {
24*61046927SAndroid Build Coastguard Worker    /* instructions counts rpnN, and instlen does not */
25*61046927SAndroid Build Coastguard Worker    int instructions, instlen;
26*61046927SAndroid Build Coastguard Worker    int nops;
27*61046927SAndroid Build Coastguard Worker    int ss, sy;
28*61046927SAndroid Build Coastguard Worker    int constlen;
29*61046927SAndroid Build Coastguard Worker    int halfreg;
30*61046927SAndroid Build Coastguard Worker    int fullreg;
31*61046927SAndroid Build Coastguard Worker    uint16_t sstall;
32*61046927SAndroid Build Coastguard Worker    uint16_t mov_count;
33*61046927SAndroid Build Coastguard Worker    uint16_t cov_count;
34*61046927SAndroid Build Coastguard Worker    uint16_t last_baryf;
35*61046927SAndroid Build Coastguard Worker    uint16_t instrs_per_cat[8];
36*61046927SAndroid Build Coastguard Worker };
37*61046927SAndroid Build Coastguard Worker 
38*61046927SAndroid Build Coastguard Worker int disasm_a2xx(uint32_t *dwords, int sizedwords, int level,
39*61046927SAndroid Build Coastguard Worker                 gl_shader_stage type);
40*61046927SAndroid Build Coastguard Worker int disasm_a3xx(uint32_t *dwords, int sizedwords, int level, FILE *out,
41*61046927SAndroid Build Coastguard Worker                 unsigned gpu_id);
42*61046927SAndroid Build Coastguard Worker int disasm_a3xx_stat(uint32_t *dwords, int sizedwords, int level, FILE *out,
43*61046927SAndroid Build Coastguard Worker                      unsigned gpu_id, struct shader_stats *stats);
44*61046927SAndroid Build Coastguard Worker int try_disasm_a3xx(uint32_t *dwords, int sizedwords, int level, FILE *out,
45*61046927SAndroid Build Coastguard Worker                     unsigned gpu_id);
46*61046927SAndroid Build Coastguard Worker 
47*61046927SAndroid Build Coastguard Worker void disasm_a2xx_set_debug(enum debug_t debug);
48*61046927SAndroid Build Coastguard Worker void disasm_a3xx_set_debug(enum debug_t debug);
49*61046927SAndroid Build Coastguard Worker 
50*61046927SAndroid Build Coastguard Worker #endif /* DISASM_H_ */
51