nkeynes@387: /** nkeynes@561: * $Id$ nkeynes@387: * nkeynes@387: * Support module for collecting instruction stats nkeynes@387: * nkeynes@387: * Copyright (c) 2005 Nathan Keynes. nkeynes@387: * nkeynes@387: * This program is free software; you can redistribute it and/or modify nkeynes@387: * it under the terms of the GNU General Public License as published by nkeynes@387: * the Free Software Foundation; either version 2 of the License, or nkeynes@387: * (at your option) any later version. nkeynes@387: * nkeynes@387: * This program is distributed in the hope that it will be useful, nkeynes@387: * but WITHOUT ANY WARRANTY; without even the implied warranty of nkeynes@387: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the nkeynes@387: * GNU General Public License for more details. nkeynes@387: */ nkeynes@387: nkeynes@671: #ifndef lxdream_sh4stat_H nkeynes@671: #define lxdream_sh4stat_H nkeynes@671: nkeynes@671: #include nkeynes@671: #include nkeynes@671: nkeynes@671: typedef enum { nkeynes@387: I_UNKNOWN, nkeynes@387: I_ADD, I_ADDI, I_ADDC, I_ADDV, nkeynes@387: I_AND, I_ANDI, I_ANDB, nkeynes@387: I_BF, I_BFS, I_BRA, I_BRAF, I_BSR, I_BSRF, I_BT, I_BTS, nkeynes@387: I_CLRMAC, I_CLRS, I_CLRT, nkeynes@387: I_CMPEQ, I_CMPEQI, I_CMPGE, I_CMPGT, I_CMPHI, I_CMPHS, I_CMPPL, I_CMPPZ, I_CMPSTR, nkeynes@387: I_DIV0S, I_DIV0U, I_DIV1, nkeynes@387: I_DMULS, I_DMULU, I_DT, nkeynes@387: I_EXTSB, I_EXTSW, I_EXTUB, I_EXTUW, I_FABS, nkeynes@387: I_FADD, I_FCMPEQ, I_FCMPGT, I_FCNVDS, I_FCNVSD, I_FDIV, I_FIPR, I_FLDS, nkeynes@387: I_FLDI0, I_FLDI1, I_FLOAT, I_FMAC, I_FMOV1, I_FMOV2, I_FMOV3, I_FMOV4, nkeynes@387: I_FMOV5, I_FMOV6, I_FMOV7, I_FMUL, I_FNEG, I_FRCHG, I_FSCA, I_FSCHG, nkeynes@387: I_FSQRT, I_FSRRA, I_FSTS, I_FSUB, I_FTRC, I_FTRV, nkeynes@387: I_JMP, I_JSR, nkeynes@673: I_LDCSR, I_LDC, I_LDCSRM, I_LDCM, I_LDSFPSCR, I_LDS, I_LDSFPSCRM, I_LDSM, I_LDTLB, nkeynes@387: I_MACL, I_MACW, nkeynes@387: I_MOV, I_MOVI, I_MOVB, I_MOVL, I_MOVLPC, I_MOVW, I_MOVA, I_MOVCA, I_MOVT, nkeynes@387: I_MULL, I_MULSW, I_MULUW, nkeynes@387: I_NEG, I_NEGC, I_NOP, I_NOT, nkeynes@387: I_OCBI, I_OCBP, I_OCBWB, nkeynes@387: I_OR, I_ORI, I_ORB, nkeynes@387: I_PREF, nkeynes@387: I_ROTCL, I_ROTCR, I_ROTL, I_ROTR, nkeynes@387: I_RTE, I_RTS, nkeynes@387: I_SETS, I_SETT, nkeynes@387: I_SHAD, I_SHAL, I_SHAR, I_SHLD, I_SHLL, I_SHLR, nkeynes@387: I_SLEEP, nkeynes@673: I_STCSR, I_STC, I_STCSRM, I_STCM, I_STSFPSCR, I_STS, I_STSFPSCRM, I_STSM, nkeynes@387: I_SUB, I_SUBC, I_SUBV, nkeynes@387: I_SWAPB, I_SWAPW, I_TASB, nkeynes@387: I_TRAPA, nkeynes@387: I_TST, I_TSTI, I_TSTB, nkeynes@387: I_XOR, I_XORI, I_XORB, nkeynes@387: I_XTRCT, nkeynes@671: I_UNDEF } sh4_inst_id; nkeynes@387: nkeynes@387: #define SH4_INSTRUCTION_COUNT I_UNDEF nkeynes@422: nkeynes@422: void sh4_stats_reset( void ); nkeynes@422: void sh4_stats_print( FILE *out ); nkeynes@671: void sh4_stats_add( sh4_inst_id id ); nkeynes@671: void sh4_stats_add_by_pc( uint32_t pc ); nkeynes@671: nkeynes@671: nkeynes@671: #endif /* !lxdream_sh4stat_H */