Search
lxdream.org :: lxdream/src/sh4/sh4.def
lxdream 0.9.1
released Jun 29
Download Now
filename src/sh4/sh4.def
changeset 359:c588dce7ebde
author nkeynes
date Thu May 15 10:22:39 2008 +0000 (15 years ago)
permissions -rw-r--r--
last change Permanently add SH4 instruction statistics tracking (enabled with --enable-sh4stats)
file annotate diff log raw
nkeynes@359
     1
##
nkeynes@359
     2
## Instruction file for the SH4 - from the SH4 manual.
nkeynes@359
     3
##   line ::= bitpattern WHITESPACE result NEWLINE
nkeynes@359
     4
##   bitpattern ::= { '0' | '1' | '(' operand ')' }
nkeynes@359
     5
##   operand ::= IDENTIFIER ':' NUMBER signspec
nkeynes@359
     6
##   signspec ::= 'u' | 's' |
nkeynes@359
     7
##   result ::= { IDENTIFIER | NON-IDENT-CHAR }
nkeynes@359
     8
nkeynes@359
     9
registers {
nkeynes@359
    10
   uint32    Rm, Rn = r0..r15
nkeynes@359
    11
   uint32    Rm_BANK, Rn_BANK = r8_bank..r15_bank
nkeynes@359
    12
   float     Frm, Frn = fr0..fr15
nkeynes@359
    13
   float     XFm, XFn = xf0..xf15
nkeynes@359
    14
   double    Drm, Drn = dr0..dr8 overlaps fr0..fr15 swapped
nkeynes@359
    15
   double    XDm, XDn = xd0..xd8 overlaps xf0..xf15 swapped
nkeynes@359
    16
   float[4]  FVm, FVn = fv0..fv3 overlaps fr0..fr15
nkeynes@359
    17
   float[16] XMTRX = xmtrx overlaps xf0..xf15
nkeynes@359
    18
nkeynes@359
    19
## Special registers
nkeynes@359
    20
   uint32 GBR, SR, VBR, SSR, SGR SPC, DBR
nkeynes@359
    21
   uint32 FPSCR, FPUL, MACH, MACL, PR, PC
nkeynes@359
    22
   
nkeynes@359
    23
}
nkeynes@359
    24
nkeynes@359
    25
0011(Rn:4)(Rm:4)1100 ADD Rm, Rn
nkeynes@359
    26
0111(Rn:4)(imm:8s)   ADD #imm, Rn
nkeynes@359
    27
0011(Rn:4)(Rm:4)1110 ADDC Rm, Rn
nkeynes@359
    28
0011(Rn:4)(Rm:4)1111 ADDV Rm, Rn
nkeynes@359
    29
0010(Rn:4)(Rm:4)1001 AND Rm, Rn
nkeynes@359
    30
11001001(imm:8u)     AND #imm, R0
nkeynes@359
    31
11001101(imm:8u)     AND.B #imm, @(R0, GBR)
nkeynes@359
    32
10001011(disp:8s<<1)    BF disp
nkeynes@359
    33
10001111(disp:8s<<1)    BF/S disp
nkeynes@359
    34
1010(disp:12s<<1)       BRA disp
nkeynes@359
    35
0000(Rn:4)00100011   BRAF Rn
nkeynes@359
    36
1011(disp:12s<<1)       BSR disp
nkeynes@359
    37
0000(Rn:4)00000011   BSRF Rn
nkeynes@359
    38
10001001(disp:8s<<1)    BT disp
nkeynes@359
    39
10001101(disp:8s<<1)    BT/S disp
nkeynes@359
    40
0000000000101000     CLRMAC
nkeynes@359
    41
0000000001001000     CLRS
nkeynes@359
    42
0000000000001000     CLRT
nkeynes@359
    43
0011(Rn:4)(Rm:4)0000 CMP/EQ Rm, Rn
nkeynes@359
    44
10001000(imm:8s)     CMP/EQ #imm, R0
nkeynes@359
    45
0011(Rn:4)(Rm:4)0011 CMP/GE Rm, Rn
nkeynes@359
    46
0011(Rn:4)(Rm:4)0111 CMP/GT Rm, Rn
nkeynes@359
    47
0011(Rn:4)(Rm:4)0110 CMP/HI Rm, Rn
nkeynes@359
    48
0011(Rn:4)(Rm:4)0010 CMP/HS Rm, Rn
nkeynes@359
    49
0100(Rn:4)00010101   CMP/PL Rn
nkeynes@359
    50
0100(Rn:4)00010001   CMP/PZ Rn
nkeynes@359
    51
0010(Rn:4)(Rm:4)1100 CMP/STR Rm, Rn
nkeynes@359
    52
0010(Rn:4)(Rm:4)0111 DIV0S Rm, Rn
nkeynes@359
    53
0000000000011001     DIV0U
nkeynes@359
    54
0011(Rn:4)(Rm:4)0100 DIV1 Rm, Rn
nkeynes@359
    55
0011(Rn:4)(Rm:4)1101 DMULS.L Rm, Rn
nkeynes@359
    56
0011(Rn:4)(Rm:4)0101 DMULU.L Rm, Rn
nkeynes@359
    57
0100(Rn:4)00010000   DT Rn
nkeynes@359
    58
0110(Rn:4)(Rm:4)1110 EXTS.B Rm, Rn
nkeynes@359
    59
0110(Rn:4)(Rm:4)1111 EXTS.W Rm, Rn
nkeynes@359
    60
0110(Rn:4)(Rm:4)1100 EXTU.B Rm, Rn
nkeynes@359
    61
0110(Rn:4)(Rm:4)1101 EXTU.W Rm, Rn
nkeynes@359
    62
1111(FRn:4)01011101    FABS FRn
nkeynes@359
    63
1111(FRn:4)(FRm:4)0000 FADD FRm, FRn
nkeynes@359
    64
1111(FRn:4)(FRm:4)0100 FCMP/EQ FRm, FRn
nkeynes@359
    65
1111(FRn:4)(FRm:4)0101 FCMP/GT FRm, FRn
nkeynes@359
    66
1111(FRm:4)10111101    FCNVDS FRm, FPUL
nkeynes@359
    67
1111(FRn:4)10101101    FCNVSD FPUL, FRn
nkeynes@359
    68
1111(FRn:4)(FRm:4)0011 FDIV FRm, FRn
nkeynes@359
    69
1111(FVn:2)(FVm:2)11101101 FIPR FVm, FVn
nkeynes@359
    70
1111(FRm:4)00011101    FLDS FRm, FPUL
nkeynes@359
    71
1111(FRn:4)10001101    FLDI0 FRn
nkeynes@359
    72
1111(FRn:4)10011101    FLDI1 FRn
nkeynes@359
    73
1111(FRn:4)00101101    FLOAT FPUL, FRn
nkeynes@359
    74
1111(FRn:4)(FRm:4)1110 FMAC FR0, FRm, FRn
nkeynes@359
    75
1111(FRn:4)(FRm:4)1100 FMOV FRm, FRn
nkeynes@359
    76
1111(Rn:4)(FRm:4)1010  FMOV FRm, @Rn
nkeynes@359
    77
1111(Rn:4)(FRm:4)1011  FMOV FRm, @-Rn
nkeynes@359
    78
1111(Rn:4)(FRm:4)0111  FMOV FRm, @(R0, Rn)
nkeynes@359
    79
1111(FRn:4)(Rm:4)1000  FMOV @Rm, FRn
nkeynes@359
    80
1111(FRn:4)(Rm:4)1001  FMOV @Rm+, FRn
nkeynes@359
    81
1111(FRn:4)(Rm:4)0110  FMOV @(R0, Rm), FRn
nkeynes@359
    82
1111(FRn:4)(FRm:4)0010 FMUL FRm, FRn
nkeynes@359
    83
1111(FRn:4)01001101    FNEG FRn
nkeynes@359
    84
1111101111111101       FRCHG
nkeynes@359
    85
1111(FRn:3<<1)011111101   FSCA FPUL, FRn
nkeynes@359
    86
1111001111111101       FSCHG
nkeynes@359
    87
1111(FRn:4)01101101    FSQRT FRn
nkeynes@359
    88
1111(FRn:4)01111101    FSRRA FRn
nkeynes@359
    89
1111(FRn:4)00001101    FSTS FPUL, FRn
nkeynes@359
    90
1111(FRn:4)(FRm:4)0001 FSUB FRm, FRn
nkeynes@359
    91
1111(FRm:4)00111101    FTRC FRm, FPUL
nkeynes@359
    92
1111(FVn:2)0111111101  FTRV XMTRX, FVn
nkeynes@359
    93
0100(Rn:4)00101011   JMP @Rn
nkeynes@359
    94
0100(Rn:4)00001011   JSR @Rn
nkeynes@359
    95
0100(Rm:4)00011110   LDC Rm, GBR
nkeynes@359
    96
0100(Rm:4)00001110   LDC Rm, SR
nkeynes@359
    97
0100(Rm:4)00101110   LDC Rm, VBR
nkeynes@359
    98
0100(Rm:4)00111110   LDC Rm, SSR
nkeynes@359
    99
0100(Rm:4)00111010   LDC Rm, SGR
nkeynes@359
   100
0100(Rm:4)01001110   LDC Rm, SPC
nkeynes@359
   101
0100(Rm:4)11111010   LDC Rm, DBR
nkeynes@359
   102
0100(Rm:4)1(Rn_BANK:3)1110 LDC Rm, Rn_BANK
nkeynes@359
   103
0100(Rm:4)00010111   LDC.L @Rm+, GBR
nkeynes@359
   104
0100(Rm:4)00000111   LDC.L @Rm+, SR
nkeynes@359
   105
0100(Rm:4)00100111   LDC.L @Rm+, VBR
nkeynes@359
   106
0100(Rm:4)00110111   LDC.L @Rm+, SSR
nkeynes@359
   107
0100(Rm:4)00110110   LDC.L @Rm+, SGR
nkeynes@359
   108
0100(Rm:4)01000111   LDC.L @Rm+, SPC
nkeynes@359
   109
0100(Rm:4)11110110   LDC.L @Rm+, DBR
nkeynes@359
   110
0100(Rm:4)1(Rn_BANK:3)0111 LDC.L @Rm+, Rn_BANK
nkeynes@359
   111
0100(Rm:4)01101010   LDS Rm, FPSCR
nkeynes@359
   112
0100(Rm:4)01100110   LDS.L @Rm+, FPSCR
nkeynes@359
   113
0100(Rm:4)01011010   LDS Rm, FPUL
nkeynes@359
   114
0100(Rm:4)01010110   LDS.L @Rm+, FPUL
nkeynes@359
   115
0100(Rm:4)00001010   LDS Rm, MACH
nkeynes@359
   116
0100(Rm:4)00000110   LDS.L @Rm+, MACH
nkeynes@359
   117
0100(Rm:4)00011010   LDS Rm, MACL
nkeynes@359
   118
0100(Rm:4)00010110   LDS.L @Rm+, MACL
nkeynes@359
   119
0100(Rm:4)00101010   LDS Rm, PR
nkeynes@359
   120
0100(Rm:4)00100110   LDS.L @Rm+, PR
nkeynes@359
   121
0000000000111000     LDTLB
nkeynes@359
   122
0000(Rn:4)(Rm:4)1111 MAC.L @Rm+, @Rn+
nkeynes@359
   123
0100(Rn:4)(Rm:4)1111 MAC.W @Rm+, @Rn+
nkeynes@359
   124
0110(Rn:4)(Rm:4)0011 MOV Rm, Rn
nkeynes@359
   125
1110(Rn:4)(imm:8s)   MOV #imm, Rn
nkeynes@359
   126
0010(Rn:4)(Rm:4)0000 MOV.B Rm, @Rn
nkeynes@359
   127
0010(Rn:4)(Rm:4)0100 MOV.B Rm, @-Rn
nkeynes@359
   128
0000(Rn:4)(Rm:4)0100 MOV.B Rm, @(R0, Rn)
nkeynes@359
   129
11000000(disp:8)     MOV.B R0, @(disp, GBR)
nkeynes@359
   130
10000000(Rn:4)(disp:4) MOV.B R0, @(disp, Rn)
nkeynes@359
   131
0110(Rn:4)(Rm:4)0000 MOV.B @Rm, Rn
nkeynes@359
   132
0110(Rn:4)(Rm:4)0100 MOV.B @Rm+, Rn
nkeynes@359
   133
0000(Rn:4)(Rm:4)1100 MOV.B @(R0, Rm), Rn
nkeynes@359
   134
11000100(disp:8)     MOV.B @(disp, GBR), R0
nkeynes@359
   135
10000100(Rm:4)(disp:4) MOV.B @(disp, Rm), R0
nkeynes@359
   136
0010(Rn:4)(Rm:4)0010 MOV.L Rm, @Rn
nkeynes@359
   137
0010(Rn:4)(Rm:4)0110 MOV.L Rm, @-Rn
nkeynes@359
   138
0000(Rn:4)(Rm:4)0110 MOV.L Rm, @(R0, Rn)
nkeynes@359
   139
11000010(disp:8<<2)     MOV.L R0, @(disp, GBR)
nkeynes@359
   140
0001(Rn:4)(Rm:4)(disp:4<<2) MOV.L Rm, @(disp, Rn)
nkeynes@359
   141
0110(Rn:4)(Rm:4)0010 MOV.L @Rm, Rn
nkeynes@359
   142
0110(Rn:4)(Rm:4)0110 MOV.L @Rm+, Rn
nkeynes@359
   143
0000(Rn:4)(Rm:4)1110 MOV.L @(R0, Rm), Rn
nkeynes@359
   144
11000110(disp:8<<2)     MOV.L @(disp, GBR), R0
nkeynes@359
   145
1101(Rn:4)(disp:8<<2)   MOV.L @(disp, PC), Rn
nkeynes@359
   146
0101(Rn:4)(Rm:4)(disp:4<<2) MOV.L @(disp, Rm), Rn
nkeynes@359
   147
0010(Rn:4)(Rm:4)0001 MOV.W Rm, @Rn
nkeynes@359
   148
0010(Rn:4)(Rm:4)0101 MOV.W Rm, @-Rn
nkeynes@359
   149
0000(Rn:4)(Rm:4)0101 MOV.W Rm, @(R0, Rn)
nkeynes@359
   150
11000001(disp:8<<1)     MOV.W R0, @(disp, GBR)
nkeynes@359
   151
10000001(Rn:4)(disp:4<<1) MOV.W R0, @(disp, Rn)
nkeynes@359
   152
0110(Rn:4)(Rm:4)0001 MOV.W @Rm, Rn
nkeynes@359
   153
0110(Rn:4)(Rm:4)0101 MOV.W @Rm+, Rn
nkeynes@359
   154
0000(Rn:4)(Rm:4)1101 MOV.W @(R0, Rm), Rn
nkeynes@359
   155
11000101(disp:8<<1)     MOV.W @(disp, GBR), R0
nkeynes@359
   156
1001(Rn:4)(disp:8<<1)   MOV.W @(disp, PC), Rn
nkeynes@359
   157
10000101(Rm:4)(disp:4<<1) MOV.W @(disp, Rm), R0
nkeynes@359
   158
11000111(disp:8<<2)     MOVA @(disp, PC), R0
nkeynes@359
   159
0000(Rn:4)11000011   MOVCA.L R0, @Rn
nkeynes@359
   160
0000(Rn:4)00101001   MOVT Rn
nkeynes@359
   161
0000(Rn:4)(Rm:4)0111 MUL.L Rm, Rn
nkeynes@359
   162
0010(Rn:4)(Rm:4)1111 MULS.W Rm, Rn
nkeynes@359
   163
0010(Rn:4)(Rm:4)1110 MULU.W Rm, Rn
nkeynes@359
   164
0110(Rn:4)(Rm:4)1011 NEG Rm, Rn
nkeynes@359
   165
0110(Rn:4)(Rm:4)1010 NEGC Rm, Rn
nkeynes@359
   166
0000000000001001     NOP
nkeynes@359
   167
0110(Rn:4)(Rm:4)0111 NOT Rm, Rn
nkeynes@359
   168
0000(Rn:4)10010011   OCBI @Rn
nkeynes@359
   169
0000(Rn:4)10100011   OCBP @Rn
nkeynes@359
   170
0000(Rn:4)10110011   OCBWB @Rn
nkeynes@359
   171
0010(Rn:4)(Rm:4)1011 OR Rm, Rn
nkeynes@359
   172
11001011(imm:8)      OR #imm, R0
nkeynes@359
   173
11001111(imm:8)      OR.B #imm, @(R0, GBR)
nkeynes@359
   174
0000(Rn:4)10000011   PREF @Rn
nkeynes@359
   175
0100(Rn:4)00100100   ROTCL Rn
nkeynes@359
   176
0100(Rn:4)00100101   ROTCR Rn
nkeynes@359
   177
0100(Rn:4)00000100   ROTL Rn
nkeynes@359
   178
0100(Rn:4)00000101   ROTR Rn
nkeynes@359
   179
0000000000101011     RTE
nkeynes@359
   180
0000000000001011     RTS
nkeynes@359
   181
0000000001011000     SETS
nkeynes@359
   182
0000000000011000     SETT
nkeynes@359
   183
0100(Rn:4)(Rm:4)1100 SHAD Rm, Rn
nkeynes@359
   184
0100(Rn:4)00100000   SHAL Rn
nkeynes@359
   185
0100(Rn:4)00100001   SHAR Rn
nkeynes@359
   186
0100(Rn:4)(Rm:4)1101 SHLD Rm, Rn
nkeynes@359
   187
0100(Rn:4)00000000   SHLL Rn
nkeynes@359
   188
0100(Rn:4)00001000   SHLL2 Rn
nkeynes@359
   189
0100(Rn:4)00011000   SHLL8 Rn
nkeynes@359
   190
0100(Rn:4)00101000   SHLL16 Rn
nkeynes@359
   191
0100(Rn:4)00000001   SHLR Rn
nkeynes@359
   192
0100(Rn:4)00001001   SHLR2 Rn
nkeynes@359
   193
0100(Rn:4)00011001   SHLR8 Rn
nkeynes@359
   194
0100(Rn:4)00101001   SHLR16 Rn
nkeynes@359
   195
0000000000011011     SLEEP
nkeynes@359
   196
0000(Rn:4)00000010   STC SR, Rn
nkeynes@359
   197
0000(Rn:4)00010010   STC GBR, Rn
nkeynes@359
   198
0000(Rn:4)00100010   STC VBR, Rn
nkeynes@359
   199
0000(Rn:4)00110010   STC SSR, Rn
nkeynes@359
   200
0000(Rn:4)01000010   STC SPC, Rn
nkeynes@359
   201
0000(Rn:4)00111010   STC SGR, Rn
nkeynes@359
   202
0000(Rn:4)11111010   STC DBR, Rn
nkeynes@359
   203
0000(Rn:4)1(Rm_BANK:3)0010 STC Rm_BANK, Rn
nkeynes@359
   204
0100(Rn:4)00000011   STC.L SR, @-Rn
nkeynes@359
   205
0100(Rn:4)00100011   STC.L VBR, @-Rn
nkeynes@359
   206
0100(Rn:4)00110011   STC.L SSR, @-Rn
nkeynes@359
   207
0100(Rn:4)01000011   STC.L SPC, @-Rn
nkeynes@359
   208
0100(Rn:4)00110010   STC.L SGR, @-Rn
nkeynes@359
   209
0100(Rn:4)11110010   STC.L DBR, @-Rn
nkeynes@359
   210
0100(Rn:4)1(Rm_BANK:3)0011 STC.L Rm_BANK, @-Rn
nkeynes@359
   211
0100(Rn:4)00010011   STC.L GBR, @-Rn
nkeynes@359
   212
0000(Rn:4)01101010   STS FPSCR, Rn
nkeynes@359
   213
0100(Rn:4)01100010   STS.L FPSCR, @-Rn
nkeynes@359
   214
0000(Rn:4)01011010   STS FPUL, Rn
nkeynes@359
   215
0100(Rn:4)01010010   STS.L FPUL, @-Rn
nkeynes@359
   216
0000(Rn:4)00001010   STS MACH, Rn
nkeynes@359
   217
0100(Rn:4)00000010   STS.L MACH, @-Rn
nkeynes@359
   218
0000(Rn:4)00011010   STS MACL, Rn
nkeynes@359
   219
0100(Rn:4)00010010   STS.L MACL, @-Rn
nkeynes@359
   220
0000(Rn:4)00101010   STS PR, Rn
nkeynes@359
   221
0100(Rn:4)00100010   STS.L PR, @-Rn
nkeynes@359
   222
0011(Rn:4)(Rm:4)1000 SUB Rm, Rn
nkeynes@359
   223
0011(Rn:4)(Rm:4)1010 SUBC Rm, Rn
nkeynes@359
   224
0011(Rn:4)(Rm:4)1011 SUBV Rm, Rn
nkeynes@359
   225
0110(Rn:4)(Rm:4)1000 SWAP.B Rm, Rn
nkeynes@359
   226
0110(Rn:4)(Rm:4)1001 SWAP.W Rm, Rn
nkeynes@359
   227
0100(Rn:4)00011011   TAS.B @Rn
nkeynes@359
   228
11000011(imm:8)      TRAPA #imm
nkeynes@359
   229
0010(Rn:4)(Rm:4)1000 TST Rm, Rn
nkeynes@359
   230
11001000(imm:8)      TST #imm, R0
nkeynes@359
   231
11001100(imm:8)      TST.B #imm, @(R0, GBR)
nkeynes@359
   232
0010(Rn:4)(Rm:4)1010 XOR Rm, Rn
nkeynes@359
   233
11001010(imm:8)      XOR #imm, R0
nkeynes@359
   234
11001110(imm:8)      XOR.B #imm, @(R0, GBR)
nkeynes@359
   235
0010(Rn:4)(Rm:4)1101 XTRCT Rm, Rn
nkeynes@359
   236
1111111111111101     UNDEF
.