filename | src/sh4/sh4stat.in |
changeset | 561:533f6b478071 |
prev | 500:848e66eee418 |
next | 671:a530ea88eebd |
author | nkeynes |
date | Mon Jan 14 10:23:49 2008 +0000 (16 years ago) |
branch | lxdream-mmu |
permissions | -rw-r--r-- |
last change | Remove asm file and convert to inline (easier to cope with platform conventions) Add breakpoint support Add MMU store-queue support |
file | annotate | diff | log | raw |
nkeynes@387 | 1 | /** |
nkeynes@561 | 2 | * $Id$ |
nkeynes@387 | 3 | * |
nkeynes@387 | 4 | * Support module for collecting instruction stats |
nkeynes@387 | 5 | * |
nkeynes@387 | 6 | * Copyright (c) 2005 Nathan Keynes. |
nkeynes@387 | 7 | * |
nkeynes@387 | 8 | * This program is free software; you can redistribute it and/or modify |
nkeynes@387 | 9 | * it under the terms of the GNU General Public License as published by |
nkeynes@387 | 10 | * the Free Software Foundation; either version 2 of the License, or |
nkeynes@387 | 11 | * (at your option) any later version. |
nkeynes@387 | 12 | * |
nkeynes@387 | 13 | * This program is distributed in the hope that it will be useful, |
nkeynes@387 | 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
nkeynes@387 | 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
nkeynes@387 | 16 | * GNU General Public License for more details. |
nkeynes@387 | 17 | */ |
nkeynes@387 | 18 | |
nkeynes@387 | 19 | #include "dream.h" |
nkeynes@387 | 20 | #include "sh4stat.h" |
nkeynes@387 | 21 | #include "sh4core.h" |
nkeynes@387 | 22 | |
nkeynes@387 | 23 | static uint64_t sh4_stats[SH4_INSTRUCTION_COUNT+1]; |
nkeynes@387 | 24 | static uint64_t sh4_stats_total; |
nkeynes@387 | 25 | static const char *sh4_stats_names[] = { |
nkeynes@387 | 26 | "???", |
nkeynes@387 | 27 | "ADD Rm, Rn", |
nkeynes@387 | 28 | "ADD #imm, Rn", |
nkeynes@387 | 29 | "ADDC Rm, Rn", |
nkeynes@387 | 30 | "ADDV Rm, Rn", |
nkeynes@387 | 31 | "AND Rm, Rn", |
nkeynes@387 | 32 | "AND #imm, R0", |
nkeynes@387 | 33 | "AND.B #imm, @(R0, GBR)", |
nkeynes@387 | 34 | "BF disp", |
nkeynes@387 | 35 | "BF/S disp", |
nkeynes@387 | 36 | "BRA disp", |
nkeynes@387 | 37 | "BRAF Rn", |
nkeynes@387 | 38 | "BSR disp", |
nkeynes@387 | 39 | "BSRF Rn", |
nkeynes@387 | 40 | "BT disp", |
nkeynes@387 | 41 | "BT/S disp", |
nkeynes@387 | 42 | "CLRMAC", |
nkeynes@387 | 43 | "CLRS", |
nkeynes@387 | 44 | "CLRT", |
nkeynes@387 | 45 | "CMP/EQ Rm, Rn", |
nkeynes@387 | 46 | "CMP/EQ #imm, R0", |
nkeynes@387 | 47 | "CMP/GE Rm, Rn", |
nkeynes@387 | 48 | "CMP/GT Rm, Rn", |
nkeynes@387 | 49 | "CMP/HI Rm, Rn", |
nkeynes@387 | 50 | "CMP/HS Rm, Rn", |
nkeynes@387 | 51 | "CMP/PL Rn", |
nkeynes@387 | 52 | "CMP/PZ Rn", |
nkeynes@387 | 53 | "CMP/STR Rm, Rn", |
nkeynes@387 | 54 | "DIV0S Rm, Rn", |
nkeynes@387 | 55 | "DIV0U", |
nkeynes@387 | 56 | "DIV1 Rm, Rn", |
nkeynes@387 | 57 | "DMULS.L Rm, Rn", |
nkeynes@387 | 58 | "DMULU.L Rm, Rn", |
nkeynes@387 | 59 | "DT Rn", |
nkeynes@387 | 60 | "EXTS.B Rm, Rn", |
nkeynes@387 | 61 | "EXTS.W Rm, Rn", |
nkeynes@387 | 62 | "EXTU.B Rm, Rn", |
nkeynes@387 | 63 | "EXTU.W Rm, Rn", |
nkeynes@387 | 64 | "FABS FRn", |
nkeynes@387 | 65 | "FADD FRm, FRn", |
nkeynes@387 | 66 | "FCMP/EQ FRm, FRn", |
nkeynes@387 | 67 | "FCMP/GT FRm, FRn", |
nkeynes@387 | 68 | "FCNVDS FRm, FPUL", |
nkeynes@387 | 69 | "FCNVSD FPUL, FRn", |
nkeynes@387 | 70 | "FDIV FRm, FRn", |
nkeynes@387 | 71 | "FIPR FVm, FVn", |
nkeynes@387 | 72 | "FLDS FRm, FPUL", |
nkeynes@387 | 73 | "FLDI0 FRn", |
nkeynes@387 | 74 | "FLDI1 FRn", |
nkeynes@387 | 75 | "FLOAT FPUL, FRn", |
nkeynes@387 | 76 | "FMAC FR0, FRm, FRn", |
nkeynes@387 | 77 | "FMOV FRm, FRn", |
nkeynes@387 | 78 | "FMOV FRm, @Rn", |
nkeynes@387 | 79 | "FMOV FRm, @-Rn", |
nkeynes@387 | 80 | "FMOV FRm, @(R0, Rn)", |
nkeynes@387 | 81 | "FMOV @Rm, FRn", |
nkeynes@387 | 82 | "FMOV @Rm+, FRn", |
nkeynes@387 | 83 | "FMOV @(R0, Rm), FRn", |
nkeynes@387 | 84 | "FMUL FRm, FRn", |
nkeynes@387 | 85 | "FNEG FRn", |
nkeynes@387 | 86 | "FRCHG", |
nkeynes@387 | 87 | "FSCA FPUL, FRn", |
nkeynes@387 | 88 | "FSCHG", |
nkeynes@387 | 89 | "FSQRT FRn", |
nkeynes@387 | 90 | "FSRRA FRn", |
nkeynes@387 | 91 | "FSTS FPUL, FRn", |
nkeynes@387 | 92 | "FSUB FRm, FRn", |
nkeynes@387 | 93 | "FTRC FRm, FPUL", |
nkeynes@387 | 94 | "FTRV XMTRX, FVn", |
nkeynes@387 | 95 | "JMP @Rn", |
nkeynes@387 | 96 | "JSR @Rn", |
nkeynes@387 | 97 | "LDC Rm, SR", |
nkeynes@387 | 98 | "LDC Rm, *", |
nkeynes@387 | 99 | "LDC.L @Rm+, SR", |
nkeynes@387 | 100 | "LDC.L @Rm+, *", |
nkeynes@387 | 101 | "LDS Rm, *", |
nkeynes@387 | 102 | "LDS.L @Rm+, *", |
nkeynes@387 | 103 | "LDTLB", |
nkeynes@387 | 104 | "MAC.L @Rm+, @Rn+", |
nkeynes@387 | 105 | "MAC.W @Rm+, @Rn+", |
nkeynes@387 | 106 | "MOV Rm, Rn", |
nkeynes@387 | 107 | "MOV #imm, Rn", |
nkeynes@387 | 108 | "MOV.B ...", |
nkeynes@387 | 109 | "MOV.L ...", |
nkeynes@387 | 110 | "MOV.L @(disp, PC)", |
nkeynes@387 | 111 | "MOV.W ...", |
nkeynes@387 | 112 | "MOVA @(disp, PC), R0", |
nkeynes@387 | 113 | "MOVCA.L R0, @Rn", |
nkeynes@387 | 114 | "MOVT Rn", |
nkeynes@387 | 115 | "MUL.L Rm, Rn", |
nkeynes@387 | 116 | "MULS.W Rm, Rn", |
nkeynes@387 | 117 | "MULU.W Rm, Rn", |
nkeynes@387 | 118 | "NEG Rm, Rn", |
nkeynes@387 | 119 | "NEGC Rm, Rn", |
nkeynes@387 | 120 | "NOP", |
nkeynes@387 | 121 | "NOT Rm, Rn", |
nkeynes@387 | 122 | "OCBI @Rn", |
nkeynes@387 | 123 | "OCBP @Rn", |
nkeynes@387 | 124 | "OCBWB @Rn", |
nkeynes@387 | 125 | "OR Rm, Rn", |
nkeynes@387 | 126 | "OR #imm, R0", |
nkeynes@387 | 127 | "OR.B #imm, @(R0, GBR)", |
nkeynes@387 | 128 | "PREF @Rn", |
nkeynes@387 | 129 | "ROTCL Rn", |
nkeynes@387 | 130 | "ROTCR Rn", |
nkeynes@387 | 131 | "ROTL Rn", |
nkeynes@387 | 132 | "ROTR Rn", |
nkeynes@387 | 133 | "RTE", |
nkeynes@387 | 134 | "RTS", |
nkeynes@387 | 135 | "SETS", |
nkeynes@387 | 136 | "SETT", |
nkeynes@387 | 137 | "SHAD Rm, Rn", |
nkeynes@387 | 138 | "SHAL Rn", |
nkeynes@387 | 139 | "SHAR Rn", |
nkeynes@387 | 140 | "SHLD Rm, Rn", |
nkeynes@387 | 141 | "SHLL* Rn", |
nkeynes@387 | 142 | "SHLR* Rn", |
nkeynes@387 | 143 | "SLEEP", |
nkeynes@387 | 144 | "STC SR, Rn", |
nkeynes@387 | 145 | "STC *, Rn", |
nkeynes@387 | 146 | "STC.L SR, @-Rn", |
nkeynes@387 | 147 | "STC.L *, @-Rn", |
nkeynes@387 | 148 | "STS *, Rn", |
nkeynes@387 | 149 | "STS.L *, @-Rn", |
nkeynes@387 | 150 | "SUB Rm, Rn", |
nkeynes@387 | 151 | "SUBC Rm, Rn", |
nkeynes@387 | 152 | "SUBV Rm, Rn", |
nkeynes@387 | 153 | "SWAP.B Rm, Rn", |
nkeynes@387 | 154 | "SWAP.W Rm, Rn", |
nkeynes@387 | 155 | "TAS.B @Rn", |
nkeynes@387 | 156 | "TRAPA #imm", |
nkeynes@387 | 157 | "TST Rm, Rn", |
nkeynes@387 | 158 | "TST #imm, R0", |
nkeynes@387 | 159 | "TST.B #imm, @(R0, GBR)", |
nkeynes@387 | 160 | "XOR Rm, Rn", |
nkeynes@387 | 161 | "XOR #imm, R0", |
nkeynes@387 | 162 | "XOR.B #imm, @(R0, GBR)", |
nkeynes@387 | 163 | "XTRCT Rm, Rn", |
nkeynes@387 | 164 | "UNDEF" |
nkeynes@387 | 165 | }; |
nkeynes@387 | 166 | |
nkeynes@387 | 167 | void sh4_stats_reset( void ) |
nkeynes@387 | 168 | { |
nkeynes@387 | 169 | int i; |
nkeynes@387 | 170 | for( i=0; i<= I_UNDEF; i++ ) { |
nkeynes@387 | 171 | sh4_stats[i] = 0; |
nkeynes@387 | 172 | } |
nkeynes@387 | 173 | sh4_stats_total = 0; |
nkeynes@387 | 174 | } |
nkeynes@387 | 175 | |
nkeynes@387 | 176 | void sh4_stats_print( FILE *out ) |
nkeynes@387 | 177 | { |
nkeynes@387 | 178 | int i; |
nkeynes@387 | 179 | for( i=0; i<= I_UNDEF; i++ ) { |
nkeynes@500 | 180 | fprintf( out, "%-20s\t%d\t%.2f%%\n", sh4_stats_names[i], (uint32_t)sh4_stats[i], ((double)sh4_stats[i])*100.0/(double)sh4_stats_total ); |
nkeynes@387 | 181 | } |
nkeynes@500 | 182 | fprintf( out, "Total: %lld\n", sh4_stats_total ); |
nkeynes@387 | 183 | } |
nkeynes@387 | 184 | |
nkeynes@387 | 185 | void sh4_stats_add( uint32_t pc ) |
nkeynes@387 | 186 | { |
nkeynes@387 | 187 | uint16_t ir = sh4_read_word(pc); |
nkeynes@387 | 188 | #define UNDEF() sh4_stats[0]++ |
nkeynes@387 | 189 | %% |
nkeynes@387 | 190 | ADD Rm, Rn {: sh4_stats[I_ADD]++; :} |
nkeynes@387 | 191 | ADD #imm, Rn {: sh4_stats[I_ADDI]++; :} |
nkeynes@387 | 192 | ADDC Rm, Rn {: sh4_stats[I_ADDC]++; :} |
nkeynes@387 | 193 | ADDV Rm, Rn {: sh4_stats[I_ADDV]++; :} |
nkeynes@387 | 194 | AND Rm, Rn {: sh4_stats[I_AND]++; :} |
nkeynes@387 | 195 | AND #imm, R0 {: sh4_stats[I_ANDI]++; :} |
nkeynes@387 | 196 | AND.B #imm, @(R0, GBR) {: sh4_stats[I_ANDB]++; :} |
nkeynes@387 | 197 | BF disp {: sh4_stats[I_BF]++; :} |
nkeynes@387 | 198 | BF/S disp {: sh4_stats[I_BFS]++; :} |
nkeynes@387 | 199 | BRA disp {: sh4_stats[I_BRA]++; :} |
nkeynes@387 | 200 | BRAF Rn {: sh4_stats[I_BRAF]++; :} |
nkeynes@387 | 201 | BSR disp {: sh4_stats[I_BSR]++; :} |
nkeynes@387 | 202 | BSRF Rn {: sh4_stats[I_BSRF]++; :} |
nkeynes@387 | 203 | BT disp {: sh4_stats[I_BT]++; :} |
nkeynes@387 | 204 | BT/S disp {: sh4_stats[I_BTS]++; :} |
nkeynes@387 | 205 | CLRMAC {: sh4_stats[I_CLRMAC]++; :} |
nkeynes@387 | 206 | CLRS {: sh4_stats[I_CLRS]++; :} |
nkeynes@387 | 207 | CLRT {: sh4_stats[I_CLRT]++; :} |
nkeynes@387 | 208 | CMP/EQ Rm, Rn {: sh4_stats[I_CMPEQ]++; :} |
nkeynes@387 | 209 | CMP/EQ #imm, R0 {: sh4_stats[I_CMPEQI]++; :} |
nkeynes@387 | 210 | CMP/GE Rm, Rn {: sh4_stats[I_CMPGE]++; :} |
nkeynes@387 | 211 | CMP/GT Rm, Rn {: sh4_stats[I_CMPGT]++; :} |
nkeynes@387 | 212 | CMP/HI Rm, Rn {: sh4_stats[I_CMPHI]++; :} |
nkeynes@387 | 213 | CMP/HS Rm, Rn {: sh4_stats[I_CMPHS]++; :} |
nkeynes@387 | 214 | CMP/PL Rn {: sh4_stats[I_CMPPL]++; :} |
nkeynes@387 | 215 | CMP/PZ Rn {: sh4_stats[I_CMPPZ]++; :} |
nkeynes@387 | 216 | CMP/STR Rm, Rn {: sh4_stats[I_CMPSTR]++; :} |
nkeynes@387 | 217 | DIV0S Rm, Rn {: sh4_stats[I_DIV0S]++; :} |
nkeynes@387 | 218 | DIV0U {: sh4_stats[I_DIV0U]++; :} |
nkeynes@387 | 219 | DIV1 Rm, Rn {: sh4_stats[I_DIV1]++; :} |
nkeynes@387 | 220 | DMULS.L Rm, Rn {: sh4_stats[I_DMULS]++; :} |
nkeynes@387 | 221 | DMULU.L Rm, Rn {: sh4_stats[I_DMULU]++; :} |
nkeynes@387 | 222 | DT Rn {: sh4_stats[I_DT]++; :} |
nkeynes@387 | 223 | EXTS.B Rm, Rn {: sh4_stats[I_EXTSB]++; :} |
nkeynes@387 | 224 | EXTS.W Rm, Rn {: sh4_stats[I_EXTSW]++; :} |
nkeynes@387 | 225 | EXTU.B Rm, Rn {: sh4_stats[I_EXTUB]++; :} |
nkeynes@387 | 226 | EXTU.W Rm, Rn {: sh4_stats[I_EXTUW]++; :} |
nkeynes@387 | 227 | FABS FRn {: sh4_stats[I_FABS]++; :} |
nkeynes@387 | 228 | FADD FRm, FRn {: sh4_stats[I_FADD]++; :} |
nkeynes@387 | 229 | FCMP/EQ FRm, FRn {: sh4_stats[I_FCMPEQ]++; :} |
nkeynes@387 | 230 | FCMP/GT FRm, FRn {: sh4_stats[I_FCMPGT]++; :} |
nkeynes@387 | 231 | FCNVDS FRm, FPUL {: sh4_stats[I_FCNVDS]++; :} |
nkeynes@387 | 232 | FCNVSD FPUL, FRn {: sh4_stats[I_FCNVSD]++; :} |
nkeynes@387 | 233 | FDIV FRm, FRn {: sh4_stats[I_FDIV]++; :} |
nkeynes@387 | 234 | FIPR FVm, FVn {: sh4_stats[I_FIPR]++; :} |
nkeynes@387 | 235 | FLDS FRm, FPUL {: sh4_stats[I_FLDS]++; :} |
nkeynes@387 | 236 | FLDI0 FRn {: sh4_stats[I_FLDI0]++; :} |
nkeynes@387 | 237 | FLDI1 FRn {: sh4_stats[I_FLDI1]++; :} |
nkeynes@387 | 238 | FLOAT FPUL, FRn {: sh4_stats[I_FLOAT]++; :} |
nkeynes@387 | 239 | FMAC FR0, FRm, FRn {: sh4_stats[I_FMAC]++; :} |
nkeynes@387 | 240 | FMOV FRm, FRn {: sh4_stats[I_FMOV1]++; :} |
nkeynes@387 | 241 | FMOV FRm, @Rn {: sh4_stats[I_FMOV2]++; :} |
nkeynes@387 | 242 | FMOV FRm, @-Rn {: sh4_stats[I_FMOV3]++; :} |
nkeynes@387 | 243 | FMOV FRm, @(R0, Rn) {: sh4_stats[I_FMOV4]++; :} |
nkeynes@387 | 244 | FMOV @Rm, FRn {: sh4_stats[I_FMOV5]++; :} |
nkeynes@387 | 245 | FMOV @Rm+, FRn {: sh4_stats[I_FMOV6]++; :} |
nkeynes@387 | 246 | FMOV @(R0, Rm), FRn {: sh4_stats[I_FMOV7]++; :} |
nkeynes@387 | 247 | FMUL FRm, FRn {: sh4_stats[I_FMUL]++; :} |
nkeynes@387 | 248 | FNEG FRn {: sh4_stats[I_FNEG]++; :} |
nkeynes@387 | 249 | FRCHG {: sh4_stats[I_FRCHG]++; :} |
nkeynes@387 | 250 | FSCA FPUL, FRn {: sh4_stats[I_FSCA]++; :} |
nkeynes@387 | 251 | FSCHG {: sh4_stats[I_FSCHG]++; :} |
nkeynes@387 | 252 | FSQRT FRn {: sh4_stats[I_FSQRT]++; :} |
nkeynes@387 | 253 | FSRRA FRn {: sh4_stats[I_FSRRA]++; :} |
nkeynes@387 | 254 | FSTS FPUL, FRn {: sh4_stats[I_FSTS]++; :} |
nkeynes@387 | 255 | FSUB FRm, FRn {: sh4_stats[I_FSUB]++; :} |
nkeynes@387 | 256 | FTRC FRm, FPUL {: sh4_stats[I_FTRC]++; :} |
nkeynes@387 | 257 | FTRV XMTRX, FVn {: sh4_stats[I_FTRV]++; :} |
nkeynes@387 | 258 | JMP @Rn {: sh4_stats[I_JMP]++; :} |
nkeynes@387 | 259 | JSR @Rn {: sh4_stats[I_JSR]++; :} |
nkeynes@387 | 260 | LDC Rm, GBR {: sh4_stats[I_LDC]++; :} |
nkeynes@387 | 261 | LDC Rm, SR {: sh4_stats[I_LDCSR]++; :} |
nkeynes@387 | 262 | LDC Rm, VBR {: sh4_stats[I_LDC]++; :} |
nkeynes@387 | 263 | LDC Rm, SSR {: sh4_stats[I_LDC]++; :} |
nkeynes@387 | 264 | LDC Rm, SGR {: sh4_stats[I_LDC]++; :} |
nkeynes@387 | 265 | LDC Rm, SPC {: sh4_stats[I_LDC]++; :} |
nkeynes@387 | 266 | LDC Rm, DBR {: sh4_stats[I_LDC]++; :} |
nkeynes@387 | 267 | LDC Rm, Rn_BANK {: sh4_stats[I_LDC]++; :} |
nkeynes@387 | 268 | LDC.L @Rm+, GBR {: sh4_stats[I_LDCM]++; :} |
nkeynes@387 | 269 | LDC.L @Rm+, SR {: sh4_stats[I_LDCSRM]++; :} |
nkeynes@387 | 270 | LDC.L @Rm+, VBR {: sh4_stats[I_LDCM]++; :} |
nkeynes@387 | 271 | LDC.L @Rm+, SSR {: sh4_stats[I_LDCM]++; :} |
nkeynes@387 | 272 | LDC.L @Rm+, SGR {: sh4_stats[I_LDCM]++; :} |
nkeynes@387 | 273 | LDC.L @Rm+, SPC {: sh4_stats[I_LDCM]++; :} |
nkeynes@387 | 274 | LDC.L @Rm+, DBR {: sh4_stats[I_LDCM]++; :} |
nkeynes@387 | 275 | LDC.L @Rm+, Rn_BANK {: sh4_stats[I_LDCM]++; :} |
nkeynes@387 | 276 | LDS Rm, FPSCR {: sh4_stats[I_LDS]++; :} |
nkeynes@387 | 277 | LDS.L @Rm+, FPSCR {: sh4_stats[I_LDSM]++; :} |
nkeynes@387 | 278 | LDS Rm, FPUL {: sh4_stats[I_LDS]++; :} |
nkeynes@387 | 279 | LDS.L @Rm+, FPUL {: sh4_stats[I_LDSM]++; :} |
nkeynes@387 | 280 | LDS Rm, MACH {: sh4_stats[I_LDS]++; :} |
nkeynes@387 | 281 | LDS.L @Rm+, MACH {: sh4_stats[I_LDSM]++; :} |
nkeynes@387 | 282 | LDS Rm, MACL {: sh4_stats[I_LDS]++; :} |
nkeynes@387 | 283 | LDS.L @Rm+, MACL {: sh4_stats[I_LDSM]++; :} |
nkeynes@387 | 284 | LDS Rm, PR {: sh4_stats[I_LDS]++; :} |
nkeynes@387 | 285 | LDS.L @Rm+, PR {: sh4_stats[I_LDSM]++; :} |
nkeynes@387 | 286 | LDTLB {: sh4_stats[I_LDTLB]++; :} |
nkeynes@387 | 287 | MAC.L @Rm+, @Rn+ {: sh4_stats[I_MACL]++; :} |
nkeynes@387 | 288 | MAC.W @Rm+, @Rn+ {: sh4_stats[I_MACW]++; :} |
nkeynes@387 | 289 | MOV Rm, Rn {: sh4_stats[I_MOV]++; :} |
nkeynes@387 | 290 | MOV #imm, Rn {: sh4_stats[I_MOVI]++; :} |
nkeynes@387 | 291 | MOV.B Rm, @Rn {: sh4_stats[I_MOVB]++; :} |
nkeynes@387 | 292 | MOV.B Rm, @-Rn {: sh4_stats[I_MOVB]++; :} |
nkeynes@387 | 293 | MOV.B Rm, @(R0, Rn) {: sh4_stats[I_MOVB]++; :} |
nkeynes@387 | 294 | MOV.B R0, @(disp, GBR) {: sh4_stats[I_MOVB]++; :} |
nkeynes@387 | 295 | MOV.B R0, @(disp, Rn) {: sh4_stats[I_MOVB]++; :} |
nkeynes@387 | 296 | MOV.B @Rm, Rn {: sh4_stats[I_MOVB]++; :} |
nkeynes@387 | 297 | MOV.B @Rm+, Rn {: sh4_stats[I_MOVB]++; :} |
nkeynes@387 | 298 | MOV.B @(R0, Rm), Rn {: sh4_stats[I_MOVB]++; :} |
nkeynes@387 | 299 | MOV.B @(disp, GBR), R0 {: sh4_stats[I_MOVB]++; :} |
nkeynes@387 | 300 | MOV.B @(disp, Rm), R0 {: sh4_stats[I_MOVB]++; :} |
nkeynes@387 | 301 | MOV.L Rm, @Rn {: sh4_stats[I_MOVL]++; :} |
nkeynes@387 | 302 | MOV.L Rm, @-Rn {: sh4_stats[I_MOVL]++; :} |
nkeynes@387 | 303 | MOV.L Rm, @(R0, Rn) {: sh4_stats[I_MOVL]++; :} |
nkeynes@387 | 304 | MOV.L R0, @(disp, GBR) {: sh4_stats[I_MOVL]++; :} |
nkeynes@387 | 305 | MOV.L Rm, @(disp, Rn) {: sh4_stats[I_MOVL]++; :} |
nkeynes@387 | 306 | MOV.L @Rm, Rn {: sh4_stats[I_MOVL]++; :} |
nkeynes@387 | 307 | MOV.L @Rm+, Rn {: sh4_stats[I_MOVL]++; :} |
nkeynes@387 | 308 | MOV.L @(R0, Rm), Rn {: sh4_stats[I_MOVL]++; :} |
nkeynes@387 | 309 | MOV.L @(disp, GBR), R0 {: sh4_stats[I_MOVL]++; :} |
nkeynes@387 | 310 | MOV.L @(disp, PC), Rn {: sh4_stats[I_MOVLPC]++; :} |
nkeynes@387 | 311 | MOV.L @(disp, Rm), Rn {: sh4_stats[I_MOVL]++; :} |
nkeynes@387 | 312 | MOV.W Rm, @Rn {: sh4_stats[I_MOVW]++; :} |
nkeynes@387 | 313 | MOV.W Rm, @-Rn {: sh4_stats[I_MOVW]++; :} |
nkeynes@387 | 314 | MOV.W Rm, @(R0, Rn) {: sh4_stats[I_MOVW]++; :} |
nkeynes@387 | 315 | MOV.W R0, @(disp, GBR) {: sh4_stats[I_MOVW]++; :} |
nkeynes@387 | 316 | MOV.W R0, @(disp, Rn) {: sh4_stats[I_MOVW]++; :} |
nkeynes@387 | 317 | MOV.W @Rm, Rn {: sh4_stats[I_MOVW]++; :} |
nkeynes@387 | 318 | MOV.W @Rm+, Rn {: sh4_stats[I_MOVW]++; :} |
nkeynes@387 | 319 | MOV.W @(R0, Rm), Rn {: sh4_stats[I_MOVW]++; :} |
nkeynes@387 | 320 | MOV.W @(disp, GBR), R0 {: sh4_stats[I_MOVW]++; :} |
nkeynes@387 | 321 | MOV.W @(disp, PC), Rn {: sh4_stats[I_MOVW]++; :} |
nkeynes@387 | 322 | MOV.W @(disp, Rm), R0 {: sh4_stats[I_MOVW]++; :} |
nkeynes@387 | 323 | MOVA @(disp, PC), R0 {: sh4_stats[I_MOVA]++; :} |
nkeynes@387 | 324 | MOVCA.L R0, @Rn {: sh4_stats[I_MOVCA]++; :} |
nkeynes@387 | 325 | MOVT Rn {: sh4_stats[I_MOVT]++; :} |
nkeynes@387 | 326 | MUL.L Rm, Rn {: sh4_stats[I_MULL]++; :} |
nkeynes@387 | 327 | MULS.W Rm, Rn {: sh4_stats[I_MULSW]++; :} |
nkeynes@387 | 328 | MULU.W Rm, Rn {: sh4_stats[I_MULUW]++; :} |
nkeynes@387 | 329 | NEG Rm, Rn {: sh4_stats[I_NEG]++; :} |
nkeynes@387 | 330 | NEGC Rm, Rn {: sh4_stats[I_NEGC]++; :} |
nkeynes@387 | 331 | NOP {: sh4_stats[I_NOP]++; :} |
nkeynes@387 | 332 | NOT Rm, Rn {: sh4_stats[I_NOT]++; :} |
nkeynes@387 | 333 | OCBI @Rn {: sh4_stats[I_OCBI]++; :} |
nkeynes@387 | 334 | OCBP @Rn {: sh4_stats[I_OCBP]++; :} |
nkeynes@387 | 335 | OCBWB @Rn {: sh4_stats[I_OCBWB]++; :} |
nkeynes@387 | 336 | OR Rm, Rn {: sh4_stats[I_OR]++; :} |
nkeynes@387 | 337 | OR #imm, R0 {: sh4_stats[I_ORI]++; :} |
nkeynes@387 | 338 | OR.B #imm, @(R0, GBR) {: sh4_stats[I_ORB]++; :} |
nkeynes@387 | 339 | PREF @Rn {: sh4_stats[I_PREF]++; :} |
nkeynes@387 | 340 | ROTCL Rn {: sh4_stats[I_ROTCL]++; :} |
nkeynes@387 | 341 | ROTCR Rn {: sh4_stats[I_ROTCR]++; :} |
nkeynes@387 | 342 | ROTL Rn {: sh4_stats[I_ROTL]++; :} |
nkeynes@387 | 343 | ROTR Rn {: sh4_stats[I_ROTR]++; :} |
nkeynes@387 | 344 | RTE {: sh4_stats[I_RTE]++; :} |
nkeynes@387 | 345 | RTS {: sh4_stats[I_RTS]++; :} |
nkeynes@387 | 346 | SETS {: sh4_stats[I_SETS]++; :} |
nkeynes@387 | 347 | SETT {: sh4_stats[I_SETT]++; :} |
nkeynes@387 | 348 | SHAD Rm, Rn {: sh4_stats[I_SHAD]++; :} |
nkeynes@387 | 349 | SHAL Rn {: sh4_stats[I_SHAL]++; :} |
nkeynes@387 | 350 | SHAR Rn {: sh4_stats[I_SHAR]++; :} |
nkeynes@387 | 351 | SHLD Rm, Rn {: sh4_stats[I_SHLD]++; :} |
nkeynes@387 | 352 | SHLL Rn {: sh4_stats[I_SHLL]++; :} |
nkeynes@387 | 353 | SHLL2 Rn {: sh4_stats[I_SHLL]++; :} |
nkeynes@387 | 354 | SHLL8 Rn {: sh4_stats[I_SHLL]++; :} |
nkeynes@387 | 355 | SHLL16 Rn {: sh4_stats[I_SHLL]++; :} |
nkeynes@387 | 356 | SHLR Rn {: sh4_stats[I_SHLR]++; :} |
nkeynes@387 | 357 | SHLR2 Rn {: sh4_stats[I_SHLR]++; :} |
nkeynes@387 | 358 | SHLR8 Rn {: sh4_stats[I_SHLR]++; :} |
nkeynes@387 | 359 | SHLR16 Rn {: sh4_stats[I_SHLR]++; :} |
nkeynes@387 | 360 | SLEEP {: sh4_stats[I_SLEEP]++; :} |
nkeynes@387 | 361 | STC SR, Rn {: sh4_stats[I_STCSR]++; :} |
nkeynes@387 | 362 | STC GBR, Rn {: sh4_stats[I_STC]++; :} |
nkeynes@387 | 363 | STC VBR, Rn {: sh4_stats[I_STC]++; :} |
nkeynes@387 | 364 | STC SSR, Rn {: sh4_stats[I_STC]++; :} |
nkeynes@387 | 365 | STC SPC, Rn {: sh4_stats[I_STC]++; :} |
nkeynes@387 | 366 | STC SGR, Rn {: sh4_stats[I_STC]++; :} |
nkeynes@387 | 367 | STC DBR, Rn {: sh4_stats[I_STC]++; :} |
nkeynes@387 | 368 | STC Rm_BANK, Rn {: sh4_stats[I_STC]++; :} |
nkeynes@387 | 369 | STC.L SR, @-Rn {: sh4_stats[I_STCSRM]++; :} |
nkeynes@387 | 370 | STC.L VBR, @-Rn {: sh4_stats[I_STCM]++; :} |
nkeynes@387 | 371 | STC.L SSR, @-Rn {: sh4_stats[I_STCM]++; :} |
nkeynes@387 | 372 | STC.L SPC, @-Rn {: sh4_stats[I_STCM]++; :} |
nkeynes@387 | 373 | STC.L SGR, @-Rn {: sh4_stats[I_STCM]++; :} |
nkeynes@387 | 374 | STC.L DBR, @-Rn {: sh4_stats[I_STCM]++; :} |
nkeynes@387 | 375 | STC.L Rm_BANK, @-Rn {: sh4_stats[I_STCM]++; :} |
nkeynes@387 | 376 | STC.L GBR, @-Rn {: sh4_stats[I_STCM]++; :} |
nkeynes@387 | 377 | STS FPSCR, Rn {: sh4_stats[I_STS]++; :} |
nkeynes@387 | 378 | STS.L FPSCR, @-Rn {: sh4_stats[I_STSM]++; :} |
nkeynes@387 | 379 | STS FPUL, Rn {: sh4_stats[I_STS]++; :} |
nkeynes@387 | 380 | STS.L FPUL, @-Rn {: sh4_stats[I_STSM]++; :} |
nkeynes@387 | 381 | STS MACH, Rn {: sh4_stats[I_STS]++; :} |
nkeynes@387 | 382 | STS.L MACH, @-Rn {: sh4_stats[I_STSM]++; :} |
nkeynes@387 | 383 | STS MACL, Rn {: sh4_stats[I_STS]++; :} |
nkeynes@387 | 384 | STS.L MACL, @-Rn {: sh4_stats[I_STSM]++; :} |
nkeynes@387 | 385 | STS PR, Rn {: sh4_stats[I_STS]++; :} |
nkeynes@387 | 386 | STS.L PR, @-Rn {: sh4_stats[I_STSM]++; :} |
nkeynes@387 | 387 | SUB Rm, Rn {: sh4_stats[I_SUB]++; :} |
nkeynes@387 | 388 | SUBC Rm, Rn {: sh4_stats[I_SUBC]++; :} |
nkeynes@387 | 389 | SUBV Rm, Rn {: sh4_stats[I_SUBV]++; :} |
nkeynes@387 | 390 | SWAP.B Rm, Rn {: sh4_stats[I_SWAPB]++; :} |
nkeynes@387 | 391 | SWAP.W Rm, Rn {: sh4_stats[I_SWAPW]++; :} |
nkeynes@387 | 392 | TAS.B @Rn {: sh4_stats[I_TASB]++; :} |
nkeynes@387 | 393 | TRAPA #imm {: sh4_stats[I_TRAPA]++; :} |
nkeynes@387 | 394 | TST Rm, Rn {: sh4_stats[I_TST]++; :} |
nkeynes@387 | 395 | TST #imm, R0 {: sh4_stats[I_TSTI]++; :} |
nkeynes@387 | 396 | TST.B #imm, @(R0, GBR) {: sh4_stats[I_TSTB]++; :} |
nkeynes@387 | 397 | XOR Rm, Rn {: sh4_stats[I_XOR]++; :} |
nkeynes@387 | 398 | XOR #imm, R0 {: sh4_stats[I_XORI]++; :} |
nkeynes@387 | 399 | XOR.B #imm, @(R0, GBR) {: sh4_stats[I_XORB]++; :} |
nkeynes@387 | 400 | XTRCT Rm, Rn {: sh4_stats[I_XTRCT]++; :} |
nkeynes@387 | 401 | UNDEF {: sh4_stats[I_UNDEF]++; :} |
nkeynes@387 | 402 | %% |
nkeynes@387 | 403 | |
nkeynes@387 | 404 | sh4_stats_total++; |
nkeynes@387 | 405 | } |
.