1 /* Definitions for SH opcodes.
2 Copyright (C) 1993-2018 Free Software Foundation, Inc.
4 This file is part of the GNU opcodes library.
6 This library is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3, or (at your option)
11 It is distributed in the hope that it will be useful, but WITHOUT
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
14 License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this file; see the file COPYING. If not, write to the
18 Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
19 MA 02110-1301, USA. */
84 IMM0_3c
, /* xxxx 0iii */
85 IMM0_3s
, /* xxxx 1iii */
86 IMM0_3Uc
, /* 0iii xxxx */
87 IMM0_3Us
, /* 1iii xxxx */
89 IMM0_20
, /* follows IMM0_20_4 */
90 IMM0_20BY8
, /* follows IMM0_20_4 */
183 X_REG_N
, /* Only used for argument parsing. */
184 X_REG_M
, /* Only used for argument parsing. */
202 A_X0_NUM
, A_X1_NUM
, A_Y0_NUM
, A_Y1_NUM
,
203 A_M0_NUM
, A_A1G_NUM
, A_M1_NUM
, A_A0G_NUM
207 /* Return a mask with bits LO to HI (inclusive) set. */
208 #define MASK(LO,HI) ((1U << (HI) << 1) - (1U << (LO)))
210 #define arch_sh1_base (1 << 0)
211 #define arch_sh2_base (1 << 1)
212 #define arch_sh2a_sh3_base (1 << 2)
213 #define arch_sh3_base (1 << 3)
214 #define arch_sh2a_sh4_base (1 << 4)
215 #define arch_sh4_base (1 << 5)
216 #define arch_sh4a_base (1 << 6)
217 #define arch_sh2a_base (1 << 7)
218 #define arch_sh_base_mask MASK (0, 7)
220 /* Bits 8 ... 24 are currently free. */
222 /* This is an annotation on instruction types, but we
223 abuse the arch field in instructions to denote it. */
224 #define arch_op32 (1 << 25) /* This is a 32-bit opcode. */
225 #define arch_opann_mask MASK (25, 25)
227 #define arch_sh_no_mmu (1 << 26)
228 #define arch_sh_has_mmu (1 << 27)
229 #define arch_sh_mmu_mask MASK (26, 27)
231 #define arch_sh_no_co (1 << 28) /* Neither FPU nor DSP co-processor. */
232 #define arch_sh_sp_fpu (1 << 29) /* Single precision FPU. */
233 #define arch_sh_dp_fpu (1 << 30) /* Double precision FPU. */
234 #define arch_sh_has_dsp (1u << 31)
235 #define arch_sh_co_mask MASK (28, 31)
238 #define arch_sh1 (arch_sh1_base |arch_sh_no_mmu |arch_sh_no_co)
239 #define arch_sh2 (arch_sh2_base |arch_sh_no_mmu |arch_sh_no_co)
240 #define arch_sh2a (arch_sh2a_base |arch_sh_no_mmu |arch_sh_dp_fpu)
241 #define arch_sh2a_nofpu (arch_sh2a_base |arch_sh_no_mmu |arch_sh_no_co)
242 #define arch_sh2e (arch_sh2_base |arch_sh_no_mmu |arch_sh_sp_fpu)
243 #define arch_sh_dsp (arch_sh2_base |arch_sh_no_mmu |arch_sh_has_dsp)
244 #define arch_sh3_nommu (arch_sh3_base |arch_sh_no_mmu |arch_sh_no_co)
245 #define arch_sh3 (arch_sh3_base |arch_sh_has_mmu|arch_sh_no_co)
246 #define arch_sh3e (arch_sh3_base |arch_sh_has_mmu|arch_sh_sp_fpu)
247 #define arch_sh3_dsp (arch_sh3_base |arch_sh_has_mmu|arch_sh_has_dsp)
248 #define arch_sh4 (arch_sh4_base |arch_sh_has_mmu|arch_sh_dp_fpu)
249 #define arch_sh4a (arch_sh4a_base |arch_sh_has_mmu|arch_sh_dp_fpu)
250 #define arch_sh4al_dsp (arch_sh4a_base |arch_sh_has_mmu|arch_sh_has_dsp)
251 #define arch_sh4_nofpu (arch_sh4_base |arch_sh_has_mmu|arch_sh_no_co)
252 #define arch_sh4a_nofpu (arch_sh4a_base |arch_sh_has_mmu|arch_sh_no_co)
253 #define arch_sh4_nommu_nofpu (arch_sh4_base |arch_sh_no_mmu |arch_sh_no_co)
254 #define arch_sh2a_nofpu_or_sh4_nommu_nofpu (arch_sh2a_sh4_base|arch_sh_no_mmu |arch_sh_no_co)
255 #define arch_sh2a_nofpu_or_sh3_nommu (arch_sh2a_sh3_base|arch_sh_no_mmu |arch_sh_no_co)
256 #define arch_sh2a_or_sh3e (arch_sh2a_sh4_base|arch_sh_no_mmu |arch_sh_sp_fpu)
257 #define arch_sh2a_or_sh4 (arch_sh2a_sh4_base|arch_sh_no_mmu |arch_sh_dp_fpu)
259 #define SH_MERGE_ARCH_SET(SET1, SET2) ((SET1) & (SET2))
260 #define SH_VALID_BASE_ARCH_SET(SET) (((SET) & arch_sh_base_mask) != 0)
261 #define SH_VALID_MMU_ARCH_SET(SET) (((SET) & arch_sh_mmu_mask) != 0)
262 #define SH_VALID_CO_ARCH_SET(SET) (((SET) & arch_sh_co_mask) != 0)
263 #define SH_VALID_ARCH_SET(SET) \
264 (SH_VALID_BASE_ARCH_SET (SET) \
265 && SH_VALID_MMU_ARCH_SET (SET) \
266 && SH_VALID_CO_ARCH_SET (SET))
267 #define SH_MERGE_ARCH_SET_VALID(SET1, SET2) \
268 SH_VALID_ARCH_SET (SH_MERGE_ARCH_SET (SET1, SET2))
270 #define SH_ARCH_SET_HAS_FPU(SET) \
271 (((SET) & (arch_sh_sp_fpu | arch_sh_dp_fpu)) != 0)
272 #define SH_ARCH_SET_HAS_DSP(SET) \
273 (((SET) & arch_sh_has_dsp) != 0)
275 /* This is returned from the functions below when an error occurs
276 (in addition to a call to BFD_FAIL). The value should allow
277 the tools to continue to function in most cases - there may
278 be some confusion between DSP and FPU etc. */
279 #define SH_ARCH_UNKNOWN_ARCH 0xffffffff
281 /* These are defined in bfd/cpu-sh.c . */
282 unsigned int sh_get_arch_from_bfd_mach (unsigned long mach
);
283 unsigned int sh_get_arch_up_from_bfd_mach (unsigned long mach
);
284 unsigned long sh_get_bfd_mach_from_arch_set (unsigned int arch_set
);
286 /* Below are the 'architecture sets'.
287 They describe the following inheritance graph:
292 .------------'|`--------------------------------.
294 SH-DSP SH3-nommu/SH2A-nofpu SH2E
295 | | |`--------------------. |
297 | SH3-nommu SH4-nm-nf/SH2A-nofpu SH3E/SH2A
299 | | `------. | SH2A-nofpu `----+---.|
301 | SH3 SH4-nommu-nofpu `---------+--. | |
303 | .-----------' | `--------+---------------------. | SH2A |
307 SH3-dsp SH4-nofpu SH3E |
308 | |`-------------------------------. | .-----'
311 | .------------' `-------------------------------. |
316 /* Central branches. */
317 #define arch_sh_up (arch_sh1 \
319 #define arch_sh2_up (arch_sh2 \
321 | arch_sh2a_nofpu_or_sh3_nommu_up \
323 #define arch_sh2a_nofpu_or_sh3_nommu_up (arch_sh2a_nofpu_or_sh3_nommu \
324 | arch_sh2a_nofpu_or_sh4_nommu_nofpu_up \
325 | arch_sh2a_or_sh3e_up \
327 #define arch_sh2a_nofpu_or_sh4_nommu_nofpu_up (arch_sh2a_nofpu_or_sh4_nommu_nofpu \
328 | arch_sh2a_nofpu_up \
329 | arch_sh2a_or_sh4_up \
330 | arch_sh4_nommu_nofpu_up)
331 #define arch_sh2a_nofpu_up (arch_sh2a_nofpu \
333 #define arch_sh3_nommu_up (arch_sh3_nommu \
335 | arch_sh4_nommu_nofpu_up)
336 #define arch_sh3_up (arch_sh3 \
340 #define arch_sh4_nommu_nofpu_up (arch_sh4_nommu_nofpu \
342 #define arch_sh4_nofpu_up (arch_sh4_nofpu \
344 | arch_sh4a_nofpu_up)
345 #define arch_sh4a_nofpu_up (arch_sh4a_nofpu \
349 /* Right branches. */
350 #define arch_sh2e_up (arch_sh2e \
351 | arch_sh2a_or_sh3e_up)
352 #define arch_sh2a_or_sh3e_up (arch_sh2a_or_sh3e \
353 | arch_sh2a_or_sh4_up \
355 #define arch_sh2a_or_sh4_up (arch_sh2a_or_sh4 \
358 #define arch_sh2a_up (arch_sh2a)
359 #define arch_sh3e_up (arch_sh3e \
361 #define arch_sh4_up (arch_sh4 \
363 #define arch_sh4a_up (arch_sh4a)
366 #define arch_sh_dsp_up (arch_sh_dsp \
368 #define arch_sh3_dsp_up (arch_sh3_dsp \
370 #define arch_sh4al_dsp_up (arch_sh4al_dsp)
376 sh_nibble_type nibbles
[9];
382 const sh_opcode_info sh_table
[] =
384 /* 0111nnnni8*1.... add #<imm>,<REG_N> */{"add",{A_IMM
,A_REG_N
},{HEX_7
,REG_N
,IMM0_8
}, arch_sh_up
},
386 /* 0011nnnnmmmm1100 add <REG_M>,<REG_N> */{"add",{ A_REG_M
,A_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_C
}, arch_sh_up
},
388 /* 0011nnnnmmmm1110 addc <REG_M>,<REG_N>*/{"addc",{ A_REG_M
,A_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_E
}, arch_sh_up
},
390 /* 0011nnnnmmmm1111 addv <REG_M>,<REG_N>*/{"addv",{ A_REG_M
,A_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_F
}, arch_sh_up
},
392 /* 11001001i8*1.... and #<imm>,R0 */{"and",{A_IMM
,A_R0
},{HEX_C
,HEX_9
,IMM0_8
}, arch_sh_up
},
394 /* 0010nnnnmmmm1001 and <REG_M>,<REG_N> */{"and",{ A_REG_M
,A_REG_N
},{HEX_2
,REG_N
,REG_M
,HEX_9
}, arch_sh_up
},
396 /* 11001101i8*1.... and.b #<imm>,@(R0,GBR)*/{"and.b",{A_IMM
,A_R0_GBR
},{HEX_C
,HEX_D
,IMM0_8
}, arch_sh_up
},
398 /* 1010i12......... bra <bdisp12> */{"bra",{A_BDISP12
},{HEX_A
,BRANCH_12
}, arch_sh_up
},
400 /* 1011i12......... bsr <bdisp12> */{"bsr",{A_BDISP12
},{HEX_B
,BRANCH_12
}, arch_sh_up
},
402 /* 10001001i8p1.... bt <bdisp8> */{"bt",{A_BDISP8
},{HEX_8
,HEX_9
,BRANCH_8
}, arch_sh_up
},
404 /* 10001011i8p1.... bf <bdisp8> */{"bf",{A_BDISP8
},{HEX_8
,HEX_B
,BRANCH_8
}, arch_sh_up
},
406 /* 10001101i8p1.... bt.s <bdisp8> */{"bt.s",{A_BDISP8
},{HEX_8
,HEX_D
,BRANCH_8
}, arch_sh2_up
},
408 /* 10001101i8p1.... bt/s <bdisp8> */{"bt/s",{A_BDISP8
},{HEX_8
,HEX_D
,BRANCH_8
}, arch_sh2_up
},
410 /* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8
},{HEX_8
,HEX_F
,BRANCH_8
}, arch_sh2_up
},
412 /* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8
},{HEX_8
,HEX_F
,BRANCH_8
}, arch_sh2_up
},
414 /* 0000000010001000 clrdmxy */{"clrdmxy",{0},{HEX_0
,HEX_0
,HEX_8
,HEX_8
}, arch_sh4al_dsp_up
},
416 /* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0
,HEX_0
,HEX_2
,HEX_8
}, arch_sh_up
},
418 /* 0000000001001000 clrs */{"clrs",{0},{HEX_0
,HEX_0
,HEX_4
,HEX_8
}, arch_sh3_nommu_up
},
420 /* 0000000000001000 clrt */{"clrt",{0},{HEX_0
,HEX_0
,HEX_0
,HEX_8
}, arch_sh_up
},
422 /* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM
,A_R0
},{HEX_8
,HEX_8
,IMM0_8
}, arch_sh_up
},
424 /* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M
,A_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_0
}, arch_sh_up
},
426 /* 0011nnnnmmmm0011 cmp/ge <REG_M>,<REG_N>*/{"cmp/ge",{ A_REG_M
,A_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_3
}, arch_sh_up
},
428 /* 0011nnnnmmmm0111 cmp/gt <REG_M>,<REG_N>*/{"cmp/gt",{ A_REG_M
,A_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_7
}, arch_sh_up
},
430 /* 0011nnnnmmmm0110 cmp/hi <REG_M>,<REG_N>*/{"cmp/hi",{ A_REG_M
,A_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_6
}, arch_sh_up
},
432 /* 0011nnnnmmmm0010 cmp/hs <REG_M>,<REG_N>*/{"cmp/hs",{ A_REG_M
,A_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_2
}, arch_sh_up
},
434 /* 0100nnnn00010101 cmp/pl <REG_N> */{"cmp/pl",{A_REG_N
},{HEX_4
,REG_N
,HEX_1
,HEX_5
}, arch_sh_up
},
436 /* 0100nnnn00010001 cmp/pz <REG_N> */{"cmp/pz",{A_REG_N
},{HEX_4
,REG_N
,HEX_1
,HEX_1
}, arch_sh_up
},
438 /* 0010nnnnmmmm1100 cmp/str <REG_M>,<REG_N>*/{"cmp/str",{ A_REG_M
,A_REG_N
},{HEX_2
,REG_N
,REG_M
,HEX_C
}, arch_sh_up
},
440 /* 0010nnnnmmmm0111 div0s <REG_M>,<REG_N>*/{"div0s",{ A_REG_M
,A_REG_N
},{HEX_2
,REG_N
,REG_M
,HEX_7
}, arch_sh_up
},
442 /* 0000000000011001 div0u */{"div0u",{0},{HEX_0
,HEX_0
,HEX_1
,HEX_9
}, arch_sh_up
},
444 /* 0011nnnnmmmm0100 div1 <REG_M>,<REG_N>*/{"div1",{ A_REG_M
,A_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_4
}, arch_sh_up
},
446 /* 0110nnnnmmmm1110 exts.b <REG_M>,<REG_N>*/{"exts.b",{ A_REG_M
,A_REG_N
},{HEX_6
,REG_N
,REG_M
,HEX_E
}, arch_sh_up
},
448 /* 0110nnnnmmmm1111 exts.w <REG_M>,<REG_N>*/{"exts.w",{ A_REG_M
,A_REG_N
},{HEX_6
,REG_N
,REG_M
,HEX_F
}, arch_sh_up
},
450 /* 0110nnnnmmmm1100 extu.b <REG_M>,<REG_N>*/{"extu.b",{ A_REG_M
,A_REG_N
},{HEX_6
,REG_N
,REG_M
,HEX_C
}, arch_sh_up
},
452 /* 0110nnnnmmmm1101 extu.w <REG_M>,<REG_N>*/{"extu.w",{ A_REG_M
,A_REG_N
},{HEX_6
,REG_N
,REG_M
,HEX_D
}, arch_sh_up
},
454 /* 0000nnnn11100011 icbi @<REG_N> */{"icbi",{A_IND_N
},{HEX_0
,REG_N
,HEX_E
,HEX_3
}, arch_sh4a_nofpu_up
},
456 /* 0100nnnn00101011 jmp @<REG_N> */{"jmp",{A_IND_N
},{HEX_4
,REG_N
,HEX_2
,HEX_B
}, arch_sh_up
},
458 /* 0100nnnn00001011 jsr @<REG_N> */{"jsr",{A_IND_N
},{HEX_4
,REG_N
,HEX_0
,HEX_B
}, arch_sh_up
},
460 /* 0100nnnn00001110 ldc <REG_N>,SR */{"ldc",{A_REG_N
,A_SR
},{HEX_4
,REG_N
,HEX_0
,HEX_E
}, arch_sh_up
},
462 /* 0100nnnn00011110 ldc <REG_N>,GBR */{"ldc",{A_REG_N
,A_GBR
},{HEX_4
,REG_N
,HEX_1
,HEX_E
}, arch_sh_up
},
464 /* 0100nnnn00111010 ldc <REG_N>,SGR */{"ldc",{A_REG_N
,A_SGR
},{HEX_4
,REG_N
,HEX_3
,HEX_A
}, arch_sh4_nommu_nofpu_up
},
466 /* 0100mmmm01001010 ldc <REG_M>,TBR */{"ldc",{A_REG_M
,A_TBR
},{HEX_4
,REG_M
,HEX_4
,HEX_A
}, arch_sh2a_nofpu_up
},
468 /* 0100nnnn00101110 ldc <REG_N>,VBR */{"ldc",{A_REG_N
,A_VBR
},{HEX_4
,REG_N
,HEX_2
,HEX_E
}, arch_sh_up
},
470 /* 0100nnnn01011110 ldc <REG_N>,MOD */{"ldc",{A_REG_N
,A_MOD
},{HEX_4
,REG_N
,HEX_5
,HEX_E
}, arch_sh_dsp_up
},
472 /* 0100nnnn01111110 ldc <REG_N>,RE */{"ldc",{A_REG_N
,A_RE
},{HEX_4
,REG_N
,HEX_7
,HEX_E
}, arch_sh_dsp_up
},
474 /* 0100nnnn01101110 ldc <REG_N>,RS */{"ldc",{A_REG_N
,A_RS
},{HEX_4
,REG_N
,HEX_6
,HEX_E
}, arch_sh_dsp_up
},
476 /* 0100nnnn00111110 ldc <REG_N>,SSR */{"ldc",{A_REG_N
,A_SSR
},{HEX_4
,REG_N
,HEX_3
,HEX_E
}, arch_sh3_nommu_up
},
478 /* 0100nnnn01001110 ldc <REG_N>,SPC */{"ldc",{A_REG_N
,A_SPC
},{HEX_4
,REG_N
,HEX_4
,HEX_E
}, arch_sh3_nommu_up
},
480 /* 0100nnnn11111010 ldc <REG_N>,DBR */{"ldc",{A_REG_N
,A_DBR
},{HEX_4
,REG_N
,HEX_F
,HEX_A
}, arch_sh4_nommu_nofpu_up
},
482 /* 0100nnnn1xxx1110 ldc <REG_N>,Rn_BANK */{"ldc",{A_REG_N
,A_REG_B
},{HEX_4
,REG_N
,REG_B
,HEX_E
}, arch_sh3_nommu_up
},
484 /* 0100nnnn00000111 ldc.l @<REG_N>+,SR */{"ldc.l",{A_INC_N
,A_SR
},{HEX_4
,REG_N
,HEX_0
,HEX_7
}, arch_sh_up
},
486 /* 0100nnnn00010111 ldc.l @<REG_N>+,GBR */{"ldc.l",{A_INC_N
,A_GBR
},{HEX_4
,REG_N
,HEX_1
,HEX_7
}, arch_sh_up
},
488 /* 0100nnnn00100111 ldc.l @<REG_N>+,VBR */{"ldc.l",{A_INC_N
,A_VBR
},{HEX_4
,REG_N
,HEX_2
,HEX_7
}, arch_sh_up
},
490 /* 0100nnnn00110110 ldc.l @<REG_N>+,SGR */{"ldc.l",{A_INC_N
,A_SGR
},{HEX_4
,REG_N
,HEX_3
,HEX_6
}, arch_sh4_nommu_nofpu_up
},
492 /* 0100nnnn01010111 ldc.l @<REG_N>+,MOD */{"ldc.l",{A_INC_N
,A_MOD
},{HEX_4
,REG_N
,HEX_5
,HEX_7
}, arch_sh_dsp_up
},
494 /* 0100nnnn01110111 ldc.l @<REG_N>+,RE */{"ldc.l",{A_INC_N
,A_RE
},{HEX_4
,REG_N
,HEX_7
,HEX_7
}, arch_sh_dsp_up
},
496 /* 0100nnnn01100111 ldc.l @<REG_N>+,RS */{"ldc.l",{A_INC_N
,A_RS
},{HEX_4
,REG_N
,HEX_6
,HEX_7
}, arch_sh_dsp_up
},
498 /* 0100nnnn00110111 ldc.l @<REG_N>+,SSR */{"ldc.l",{A_INC_N
,A_SSR
},{HEX_4
,REG_N
,HEX_3
,HEX_7
}, arch_sh3_nommu_up
},
500 /* 0100nnnn01000111 ldc.l @<REG_N>+,SPC */{"ldc.l",{A_INC_N
,A_SPC
},{HEX_4
,REG_N
,HEX_4
,HEX_7
}, arch_sh3_nommu_up
},
502 /* 0100nnnn11110110 ldc.l @<REG_N>+,DBR */{"ldc.l",{A_INC_N
,A_DBR
},{HEX_4
,REG_N
,HEX_F
,HEX_6
}, arch_sh4_nommu_nofpu_up
},
504 /* 0100nnnn1xxx0111 ldc.l @<REG_N>+,Rn_BANK */{"ldc.l",{A_INC_N
,A_REG_B
},{HEX_4
,REG_N
,REG_B
,HEX_7
}, arch_sh3_nommu_up
},
506 /* 0100mmmm00110100 ldrc <REG_M> */{"ldrc",{A_REG_M
},{HEX_4
,REG_M
,HEX_3
,HEX_4
}, arch_sh4al_dsp_up
},
507 /* 10001010i8*1.... ldrc #<imm> */{"ldrc",{A_IMM
},{HEX_8
,HEX_A
,IMM0_8
}, arch_sh4al_dsp_up
},
509 /* 10001110i8p2.... ldre @(<disp>,PC) */{"ldre",{A_DISP_PC
},{HEX_8
,HEX_E
,PCRELIMM_8BY2
}, arch_sh_dsp_up
},
511 /* 10001100i8p2.... ldrs @(<disp>,PC) */{"ldrs",{A_DISP_PC
},{HEX_8
,HEX_C
,PCRELIMM_8BY2
}, arch_sh_dsp_up
},
513 /* 0100nnnn00001010 lds <REG_N>,MACH */{"lds",{A_REG_N
,A_MACH
},{HEX_4
,REG_N
,HEX_0
,HEX_A
}, arch_sh_up
},
515 /* 0100nnnn00011010 lds <REG_N>,MACL */{"lds",{A_REG_N
,A_MACL
},{HEX_4
,REG_N
,HEX_1
,HEX_A
}, arch_sh_up
},
517 /* 0100nnnn00101010 lds <REG_N>,PR */{"lds",{A_REG_N
,A_PR
},{HEX_4
,REG_N
,HEX_2
,HEX_A
}, arch_sh_up
},
519 /* 0100nnnn01101010 lds <REG_N>,DSR */{"lds",{A_REG_N
,A_DSR
},{HEX_4
,REG_N
,HEX_6
,HEX_A
}, arch_sh_dsp_up
},
521 /* 0100nnnn01111010 lds <REG_N>,A0 */{"lds",{A_REG_N
,A_A0
},{HEX_4
,REG_N
,HEX_7
,HEX_A
}, arch_sh_dsp_up
},
523 /* 0100nnnn10001010 lds <REG_N>,X0 */{"lds",{A_REG_N
,A_X0
},{HEX_4
,REG_N
,HEX_8
,HEX_A
}, arch_sh_dsp_up
},
525 /* 0100nnnn10011010 lds <REG_N>,X1 */{"lds",{A_REG_N
,A_X1
},{HEX_4
,REG_N
,HEX_9
,HEX_A
}, arch_sh_dsp_up
},
527 /* 0100nnnn10101010 lds <REG_N>,Y0 */{"lds",{A_REG_N
,A_Y0
},{HEX_4
,REG_N
,HEX_A
,HEX_A
}, arch_sh_dsp_up
},
529 /* 0100nnnn10111010 lds <REG_N>,Y1 */{"lds",{A_REG_N
,A_Y1
},{HEX_4
,REG_N
,HEX_B
,HEX_A
}, arch_sh_dsp_up
},
531 /* 0100nnnn01011010 lds <REG_N>,FPUL */{"lds",{A_REG_M
,FPUL_N
},{HEX_4
,REG_M
,HEX_5
,HEX_A
}, arch_sh2e_up
},
533 /* 0100nnnn01101010 lds <REG_M>,FPSCR */{"lds",{A_REG_M
,FPSCR_N
},{HEX_4
,REG_M
,HEX_6
,HEX_A
}, arch_sh2e_up
},
535 /* 0100nnnn00000110 lds.l @<REG_N>+,MACH*/{"lds.l",{A_INC_N
,A_MACH
},{HEX_4
,REG_N
,HEX_0
,HEX_6
}, arch_sh_up
},
537 /* 0100nnnn00010110 lds.l @<REG_N>+,MACL*/{"lds.l",{A_INC_N
,A_MACL
},{HEX_4
,REG_N
,HEX_1
,HEX_6
}, arch_sh_up
},
539 /* 0100nnnn00100110 lds.l @<REG_N>+,PR */{"lds.l",{A_INC_N
,A_PR
},{HEX_4
,REG_N
,HEX_2
,HEX_6
}, arch_sh_up
},
541 /* 0100nnnn01100110 lds.l @<REG_N>+,DSR */{"lds.l",{A_INC_N
,A_DSR
},{HEX_4
,REG_N
,HEX_6
,HEX_6
}, arch_sh_dsp_up
},
543 /* 0100nnnn01110110 lds.l @<REG_N>+,A0 */{"lds.l",{A_INC_N
,A_A0
},{HEX_4
,REG_N
,HEX_7
,HEX_6
}, arch_sh_dsp_up
},
545 /* 0100nnnn10000110 lds.l @<REG_N>+,X0 */{"lds.l",{A_INC_N
,A_X0
},{HEX_4
,REG_N
,HEX_8
,HEX_6
}, arch_sh_dsp_up
},
547 /* 0100nnnn10010110 lds.l @<REG_N>+,X1 */{"lds.l",{A_INC_N
,A_X1
},{HEX_4
,REG_N
,HEX_9
,HEX_6
}, arch_sh_dsp_up
},
549 /* 0100nnnn10100110 lds.l @<REG_N>+,Y0 */{"lds.l",{A_INC_N
,A_Y0
},{HEX_4
,REG_N
,HEX_A
,HEX_6
}, arch_sh_dsp_up
},
551 /* 0100nnnn10110110 lds.l @<REG_N>+,Y1 */{"lds.l",{A_INC_N
,A_Y1
},{HEX_4
,REG_N
,HEX_B
,HEX_6
}, arch_sh_dsp_up
},
553 /* 0100nnnn01010110 lds.l @<REG_M>+,FPUL*/{"lds.l",{A_INC_M
,FPUL_N
},{HEX_4
,REG_M
,HEX_5
,HEX_6
}, arch_sh2e_up
},
555 /* 0100nnnn01100110 lds.l @<REG_M>+,FPSCR*/{"lds.l",{A_INC_M
,FPSCR_N
},{HEX_4
,REG_M
,HEX_6
,HEX_6
}, arch_sh2e_up
},
557 /* 0000000000111000 ldtlb */{"ldtlb",{0},{HEX_0
,HEX_0
,HEX_3
,HEX_8
}, arch_sh3_up
},
559 /* 0100nnnnmmmm1111 mac.w @<REG_M>+,@<REG_N>+*/{"mac.w",{A_INC_M
,A_INC_N
},{HEX_4
,REG_N
,REG_M
,HEX_F
}, arch_sh_up
},
561 /* 1110nnnni8*1.... mov #<imm>,<REG_N> */{"mov",{A_IMM
,A_REG_N
},{HEX_E
,REG_N
,IMM0_8
}, arch_sh_up
},
563 /* 0110nnnnmmmm0011 mov <REG_M>,<REG_N> */{"mov",{ A_REG_M
,A_REG_N
},{HEX_6
,REG_N
,REG_M
,HEX_3
}, arch_sh_up
},
565 /* 0000nnnnmmmm0100 mov.b <REG_M>,@(R0,<REG_N>)*/{"mov.b",{ A_REG_M
,A_IND_R0_REG_N
},{HEX_0
,REG_N
,REG_M
,HEX_4
}, arch_sh_up
},
567 /* 0010nnnnmmmm0100 mov.b <REG_M>,@-<REG_N>*/{"mov.b",{ A_REG_M
,A_DEC_N
},{HEX_2
,REG_N
,REG_M
,HEX_4
}, arch_sh_up
},
569 /* 0010nnnnmmmm0000 mov.b <REG_M>,@<REG_N>*/{"mov.b",{ A_REG_M
,A_IND_N
},{HEX_2
,REG_N
,REG_M
,HEX_0
}, arch_sh_up
},
571 /* 10000100mmmmi4*1 mov.b @(<disp>,<REG_M>),R0*/{"mov.b",{A_DISP_REG_M
,A_R0
},{HEX_8
,HEX_4
,REG_M
,IMM0_4
}, arch_sh_up
},
573 /* 11000100i8*1.... mov.b @(<disp>,GBR),R0*/{"mov.b",{A_DISP_GBR
,A_R0
},{HEX_C
,HEX_4
,IMM0_8
}, arch_sh_up
},
575 /* 0000nnnnmmmm1100 mov.b @(R0,<REG_M>),<REG_N>*/{"mov.b",{A_IND_R0_REG_M
,A_REG_N
},{HEX_0
,REG_N
,REG_M
,HEX_C
}, arch_sh_up
},
577 /* 0110nnnnmmmm0100 mov.b @<REG_M>+,<REG_N>*/{"mov.b",{A_INC_M
,A_REG_N
},{HEX_6
,REG_N
,REG_M
,HEX_4
}, arch_sh_up
},
579 /* 0110nnnnmmmm0000 mov.b @<REG_M>,<REG_N>*/{"mov.b",{A_IND_M
,A_REG_N
},{HEX_6
,REG_N
,REG_M
,HEX_0
}, arch_sh_up
},
581 /* 10000000mmmmi4*1 mov.b R0,@(<disp>,<REG_M>)*/{"mov.b",{A_R0
,A_DISP_REG_M
},{HEX_8
,HEX_0
,REG_M
,IMM1_4
}, arch_sh_up
},
583 /* 11000000i8*1.... mov.b R0,@(<disp>,GBR)*/{"mov.b",{A_R0
,A_DISP_GBR
},{HEX_C
,HEX_0
,IMM1_8
}, arch_sh_up
},
585 /* 0100nnnn10001011 mov.b R0,@<REG_N>+ */{"mov.b",{A_R0
,A_INC_N
},{HEX_4
,REG_N
,HEX_8
,HEX_B
}, arch_sh2a_nofpu_up
},
586 /* 0100nnnn11001011 mov.b @-<REG_M>,R0 */{"mov.b",{A_DEC_M
,A_R0
},{HEX_4
,REG_M
,HEX_C
,HEX_B
}, arch_sh2a_nofpu_up
},
587 /* 0011nnnnmmmm0001 0000dddddddddddd mov.b <REG_M>,@(<DISP12>,<REG_N>) */
588 {"mov.b",{A_REG_M
,A_DISP_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_1
,HEX_0
,DISP1_12
}, arch_sh2a_nofpu_up
| arch_op32
},
589 /* 0011nnnnmmmm0001 0100dddddddddddd mov.b @(<DISP12>,<REG_M>),<REG_N> */
590 {"mov.b",{A_DISP_REG_M
,A_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_1
,HEX_4
,DISP0_12
}, arch_sh2a_nofpu_up
| arch_op32
},
591 /* 0001nnnnmmmmi4*4 mov.l <REG_M>,@(<disp>,<REG_N>)*/{"mov.l",{ A_REG_M
,A_DISP_REG_N
},{HEX_1
,REG_N
,REG_M
,IMM1_4BY4
}, arch_sh_up
},
593 /* 0000nnnnmmmm0110 mov.l <REG_M>,@(R0,<REG_N>)*/{"mov.l",{ A_REG_M
,A_IND_R0_REG_N
},{HEX_0
,REG_N
,REG_M
,HEX_6
}, arch_sh_up
},
595 /* 0010nnnnmmmm0110 mov.l <REG_M>,@-<REG_N>*/{"mov.l",{ A_REG_M
,A_DEC_N
},{HEX_2
,REG_N
,REG_M
,HEX_6
}, arch_sh_up
},
597 /* 0010nnnnmmmm0010 mov.l <REG_M>,@<REG_N>*/{"mov.l",{ A_REG_M
,A_IND_N
},{HEX_2
,REG_N
,REG_M
,HEX_2
}, arch_sh_up
},
599 /* 0101nnnnmmmmi4*4 mov.l @(<disp>,<REG_M>),<REG_N>*/{"mov.l",{A_DISP_REG_M
,A_REG_N
},{HEX_5
,REG_N
,REG_M
,IMM0_4BY4
}, arch_sh_up
},
601 /* 11000110i8*4.... mov.l @(<disp>,GBR),R0*/{"mov.l",{A_DISP_GBR
,A_R0
},{HEX_C
,HEX_6
,IMM0_8BY4
}, arch_sh_up
},
603 /* 1101nnnni8p4.... mov.l @(<disp>,PC),<REG_N>*/{"mov.l",{A_DISP_PC
,A_REG_N
},{HEX_D
,REG_N
,PCRELIMM_8BY4
}, arch_sh_up
},
605 /* 0000nnnnmmmm1110 mov.l @(R0,<REG_M>),<REG_N>*/{"mov.l",{A_IND_R0_REG_M
,A_REG_N
},{HEX_0
,REG_N
,REG_M
,HEX_E
}, arch_sh_up
},
607 /* 0110nnnnmmmm0110 mov.l @<REG_M>+,<REG_N>*/{"mov.l",{A_INC_M
,A_REG_N
},{HEX_6
,REG_N
,REG_M
,HEX_6
}, arch_sh_up
},
609 /* 0110nnnnmmmm0010 mov.l @<REG_M>,<REG_N>*/{"mov.l",{A_IND_M
,A_REG_N
},{HEX_6
,REG_N
,REG_M
,HEX_2
}, arch_sh_up
},
611 /* 11000010i8*4.... mov.l R0,@(<disp>,GBR)*/{"mov.l",{A_R0
,A_DISP_GBR
},{HEX_C
,HEX_2
,IMM1_8BY4
}, arch_sh_up
},
613 /* 0100nnnn10101011 mov.l R0,@<REG_N>+ */{"mov.l",{A_R0
,A_INC_N
},{HEX_4
,REG_N
,HEX_A
,HEX_B
}, arch_sh2a_nofpu_up
},
614 /* 0100nnnn11001011 mov.l @-<REG_M>,R0 */{"mov.l",{A_DEC_M
,A_R0
},{HEX_4
,REG_M
,HEX_E
,HEX_B
}, arch_sh2a_nofpu_up
},
615 /* 0011nnnnmmmm0001 0010dddddddddddd mov.l <REG_M>,@(<DISP12>,<REG_N>) */
616 {"mov.l",{A_REG_M
,A_DISP_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_1
,HEX_2
,DISP1_12BY4
}, arch_sh2a_nofpu_up
| arch_op32
},
617 /* 0011nnnnmmmm0001 0110dddddddddddd mov.l @(<DISP12>,<REG_M>),<REG_N> */
618 {"mov.l",{A_DISP_REG_M
,A_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_1
,HEX_6
,DISP0_12BY4
}, arch_sh2a_nofpu_up
| arch_op32
},
619 /* 0000nnnnmmmm0101 mov.w <REG_M>,@(R0,<REG_N>)*/{"mov.w",{ A_REG_M
,A_IND_R0_REG_N
},{HEX_0
,REG_N
,REG_M
,HEX_5
}, arch_sh_up
},
621 /* 0010nnnnmmmm0101 mov.w <REG_M>,@-<REG_N>*/{"mov.w",{ A_REG_M
,A_DEC_N
},{HEX_2
,REG_N
,REG_M
,HEX_5
}, arch_sh_up
},
623 /* 0010nnnnmmmm0001 mov.w <REG_M>,@<REG_N>*/{"mov.w",{ A_REG_M
,A_IND_N
},{HEX_2
,REG_N
,REG_M
,HEX_1
}, arch_sh_up
},
625 /* 10000101mmmmi4*2 mov.w @(<disp>,<REG_M>),R0*/{"mov.w",{A_DISP_REG_M
,A_R0
},{HEX_8
,HEX_5
,REG_M
,IMM0_4BY2
}, arch_sh_up
},
627 /* 11000101i8*2.... mov.w @(<disp>,GBR),R0*/{"mov.w",{A_DISP_GBR
,A_R0
},{HEX_C
,HEX_5
,IMM0_8BY2
}, arch_sh_up
},
629 /* 1001nnnni8p2.... mov.w @(<disp>,PC),<REG_N>*/{"mov.w",{A_DISP_PC
,A_REG_N
},{HEX_9
,REG_N
,PCRELIMM_8BY2
}, arch_sh_up
},
631 /* 0000nnnnmmmm1101 mov.w @(R0,<REG_M>),<REG_N>*/{"mov.w",{A_IND_R0_REG_M
,A_REG_N
},{HEX_0
,REG_N
,REG_M
,HEX_D
}, arch_sh_up
},
633 /* 0110nnnnmmmm0101 mov.w @<REG_M>+,<REG_N>*/{"mov.w",{A_INC_M
,A_REG_N
},{HEX_6
,REG_N
,REG_M
,HEX_5
}, arch_sh_up
},
635 /* 0110nnnnmmmm0001 mov.w @<REG_M>,<REG_N>*/{"mov.w",{A_IND_M
,A_REG_N
},{HEX_6
,REG_N
,REG_M
,HEX_1
}, arch_sh_up
},
637 /* 10000001mmmmi4*2 mov.w R0,@(<disp>,<REG_M>)*/{"mov.w",{A_R0
,A_DISP_REG_M
},{HEX_8
,HEX_1
,REG_M
,IMM1_4BY2
}, arch_sh_up
},
639 /* 11000001i8*2.... mov.w R0,@(<disp>,GBR)*/{"mov.w",{A_R0
,A_DISP_GBR
},{HEX_C
,HEX_1
,IMM1_8BY2
}, arch_sh_up
},
641 /* 0100nnnn10011011 mov.w R0,@<REG_N>+ */{"mov.w",{A_R0
,A_INC_N
},{HEX_4
,REG_N
,HEX_9
,HEX_B
}, arch_sh2a_nofpu_up
},
642 /* 0100nnnn11011011 mov.w @-<REG_M>,R0 */{"mov.w",{A_DEC_M
,A_R0
},{HEX_4
,REG_M
,HEX_D
,HEX_B
}, arch_sh2a_nofpu_up
},
643 /* 0011nnnnmmmm0001 0001dddddddddddd mov.w <REG_M>,@(<DISP12>,<REG_N>) */
644 {"mov.w",{A_REG_M
,A_DISP_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_1
,HEX_1
,DISP1_12BY2
}, arch_sh2a_nofpu_up
| arch_op32
},
645 /* 0011nnnnmmmm0001 0101dddddddddddd mov.w @(<DISP12>,<REG_M>),<REG_N> */
646 {"mov.w",{A_DISP_REG_M
,A_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_1
,HEX_5
,DISP0_12BY2
}, arch_sh2a_nofpu_up
| arch_op32
},
647 /* 11000111i8p4.... mova @(<disp>,PC),R0*/{"mova",{A_DISP_PC
,A_R0
},{HEX_C
,HEX_7
,PCRELIMM_8BY4
}, arch_sh_up
},
648 /* 0000nnnn11000011 movca.l R0,@<REG_N> */{"movca.l",{A_R0
,A_IND_N
},{HEX_0
,REG_N
,HEX_C
,HEX_3
}, arch_sh4_nommu_nofpu_up
},
650 /* 0000nnnn01110011 movco.l r0,@<REG_N> */{"movco.l",{A_R0
,A_IND_N
},{HEX_0
,REG_N
,HEX_7
,HEX_3
}, arch_sh4a_nofpu_up
},
651 /* 0000mmmm01100011 movli.l @<REG_M>,r0 */{"movli.l",{A_IND_M
,A_R0
},{HEX_0
,REG_M
,HEX_6
,HEX_3
}, arch_sh4a_nofpu_up
},
653 /* 0000nnnn00101001 movt <REG_N> */{"movt",{A_REG_N
},{HEX_0
,REG_N
,HEX_2
,HEX_9
}, arch_sh_up
},
655 /* 0100mmmm10101001 movua.l @<REG_M>,r0 */{"movua.l",{A_IND_M
,A_R0
},{HEX_4
,REG_M
,HEX_A
,HEX_9
}, arch_sh4a_nofpu_up
},
656 /* 0100mmmm11101001 movua.l @<REG_M>+,r0 */{"movua.l",{A_INC_M
,A_R0
},{HEX_4
,REG_M
,HEX_E
,HEX_9
}, arch_sh4a_nofpu_up
},
658 /* 0010nnnnmmmm1111 muls.w <REG_M>,<REG_N>*/{"muls.w",{ A_REG_M
,A_REG_N
},{HEX_2
,REG_N
,REG_M
,HEX_F
}, arch_sh_up
},
659 /* 0010nnnnmmmm1111 muls <REG_M>,<REG_N>*/{"muls",{ A_REG_M
,A_REG_N
},{HEX_2
,REG_N
,REG_M
,HEX_F
}, arch_sh_up
},
661 /* 0000nnnnmmmm0111 mul.l <REG_M>,<REG_N>*/{"mul.l",{ A_REG_M
,A_REG_N
},{HEX_0
,REG_N
,REG_M
,HEX_7
}, arch_sh2_up
},
663 /* 0010nnnnmmmm1110 mulu.w <REG_M>,<REG_N>*/{"mulu.w",{ A_REG_M
,A_REG_N
},{HEX_2
,REG_N
,REG_M
,HEX_E
}, arch_sh_up
},
664 /* 0010nnnnmmmm1110 mulu <REG_M>,<REG_N>*/{"mulu",{ A_REG_M
,A_REG_N
},{HEX_2
,REG_N
,REG_M
,HEX_E
}, arch_sh_up
},
666 /* 0110nnnnmmmm1011 neg <REG_M>,<REG_N> */{"neg",{ A_REG_M
,A_REG_N
},{HEX_6
,REG_N
,REG_M
,HEX_B
}, arch_sh_up
},
668 /* 0110nnnnmmmm1010 negc <REG_M>,<REG_N>*/{"negc",{ A_REG_M
,A_REG_N
},{HEX_6
,REG_N
,REG_M
,HEX_A
}, arch_sh_up
},
670 /* 0000000000001001 nop */{"nop",{0},{HEX_0
,HEX_0
,HEX_0
,HEX_9
}, arch_sh_up
},
672 /* 0110nnnnmmmm0111 not <REG_M>,<REG_N> */{"not",{ A_REG_M
,A_REG_N
},{HEX_6
,REG_N
,REG_M
,HEX_7
}, arch_sh_up
},
673 /* 0000nnnn10010011 ocbi @<REG_N> */{"ocbi",{A_IND_N
},{HEX_0
,REG_N
,HEX_9
,HEX_3
}, arch_sh4_nommu_nofpu_up
},
675 /* 0000nnnn10100011 ocbp @<REG_N> */{"ocbp",{A_IND_N
},{HEX_0
,REG_N
,HEX_A
,HEX_3
}, arch_sh4_nommu_nofpu_up
},
677 /* 0000nnnn10110011 ocbwb @<REG_N> */{"ocbwb",{A_IND_N
},{HEX_0
,REG_N
,HEX_B
,HEX_3
}, arch_sh4_nommu_nofpu_up
},
680 /* 11001011i8*1.... or #<imm>,R0 */{"or",{A_IMM
,A_R0
},{HEX_C
,HEX_B
,IMM0_8
}, arch_sh_up
},
682 /* 0010nnnnmmmm1011 or <REG_M>,<REG_N> */{"or",{ A_REG_M
,A_REG_N
},{HEX_2
,REG_N
,REG_M
,HEX_B
}, arch_sh_up
},
684 /* 11001111i8*1.... or.b #<imm>,@(R0,GBR)*/{"or.b",{A_IMM
,A_R0_GBR
},{HEX_C
,HEX_F
,IMM0_8
}, arch_sh_up
},
686 /* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N
},{HEX_0
,REG_N
,HEX_8
,HEX_3
}, arch_sh2a_nofpu_or_sh3_nommu_up
},
688 /* 0000nnnn11010011 prefi @<REG_N> */{"prefi",{A_IND_N
},{HEX_0
,REG_N
,HEX_D
,HEX_3
}, arch_sh4a_nofpu_up
},
690 /* 0100nnnn00100100 rotcl <REG_N> */{"rotcl",{A_REG_N
},{HEX_4
,REG_N
,HEX_2
,HEX_4
}, arch_sh_up
},
692 /* 0100nnnn00100101 rotcr <REG_N> */{"rotcr",{A_REG_N
},{HEX_4
,REG_N
,HEX_2
,HEX_5
}, arch_sh_up
},
694 /* 0100nnnn00000100 rotl <REG_N> */{"rotl",{A_REG_N
},{HEX_4
,REG_N
,HEX_0
,HEX_4
}, arch_sh_up
},
696 /* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N
},{HEX_4
,REG_N
,HEX_0
,HEX_5
}, arch_sh_up
},
698 /* 0000000000101011 rte */{"rte",{0},{HEX_0
,HEX_0
,HEX_2
,HEX_B
}, arch_sh_up
},
700 /* 0000000000001011 rts */{"rts",{0},{HEX_0
,HEX_0
,HEX_0
,HEX_B
}, arch_sh_up
},
702 /* 0000000010011000 setdmx */{"setdmx",{0},{HEX_0
,HEX_0
,HEX_9
,HEX_8
}, arch_sh4al_dsp_up
},
703 /* 0000000011001000 setdmy */{"setdmy",{0},{HEX_0
,HEX_0
,HEX_C
,HEX_8
}, arch_sh4al_dsp_up
},
705 /* 0000000001011000 sets */{"sets",{0},{HEX_0
,HEX_0
,HEX_5
,HEX_8
}, arch_sh3_nommu_up
},
706 /* 0000000000011000 sett */{"sett",{0},{HEX_0
,HEX_0
,HEX_1
,HEX_8
}, arch_sh_up
},
708 /* 0100nnnn00010100 setrc <REG_N> */{"setrc",{A_REG_N
},{HEX_4
,REG_N
,HEX_1
,HEX_4
}, arch_sh_dsp_up
},
710 /* 10000010i8*1.... setrc #<imm> */{"setrc",{A_IMM
},{HEX_8
,HEX_2
,IMM0_8
}, arch_sh_dsp_up
},
712 /* repeat start end <REG_N> */{"repeat",{A_DISP_PC
,A_DISP_PC
,A_REG_N
},{REPEAT
,REG_N
,HEX_1
,HEX_4
}, arch_sh_dsp_up
},
714 /* repeat start end #<imm> */{"repeat",{A_DISP_PC
,A_DISP_PC
,A_IMM
},{REPEAT
,HEX_2
,IMM0_8
,HEX_8
}, arch_sh_dsp_up
},
716 /* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M
,A_REG_N
},{HEX_4
,REG_N
,REG_M
,HEX_C
}, arch_sh2a_nofpu_or_sh3_nommu_up
},
718 /* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M
,A_REG_N
},{HEX_4
,REG_N
,REG_M
,HEX_D
}, arch_sh2a_nofpu_or_sh3_nommu_up
},
720 /* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N
},{HEX_4
,REG_N
,HEX_2
,HEX_0
}, arch_sh_up
},
722 /* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N
},{HEX_4
,REG_N
,HEX_2
,HEX_1
}, arch_sh_up
},
724 /* 0100nnnn00000000 shll <REG_N> */{"shll",{A_REG_N
},{HEX_4
,REG_N
,HEX_0
,HEX_0
}, arch_sh_up
},
726 /* 0100nnnn00101000 shll16 <REG_N> */{"shll16",{A_REG_N
},{HEX_4
,REG_N
,HEX_2
,HEX_8
}, arch_sh_up
},
728 /* 0100nnnn00001000 shll2 <REG_N> */{"shll2",{A_REG_N
},{HEX_4
,REG_N
,HEX_0
,HEX_8
}, arch_sh_up
},
730 /* 0100nnnn00011000 shll8 <REG_N> */{"shll8",{A_REG_N
},{HEX_4
,REG_N
,HEX_1
,HEX_8
}, arch_sh_up
},
732 /* 0100nnnn00000001 shlr <REG_N> */{"shlr",{A_REG_N
},{HEX_4
,REG_N
,HEX_0
,HEX_1
}, arch_sh_up
},
734 /* 0100nnnn00101001 shlr16 <REG_N> */{"shlr16",{A_REG_N
},{HEX_4
,REG_N
,HEX_2
,HEX_9
}, arch_sh_up
},
736 /* 0100nnnn00001001 shlr2 <REG_N> */{"shlr2",{A_REG_N
},{HEX_4
,REG_N
,HEX_0
,HEX_9
}, arch_sh_up
},
738 /* 0100nnnn00011001 shlr8 <REG_N> */{"shlr8",{A_REG_N
},{HEX_4
,REG_N
,HEX_1
,HEX_9
}, arch_sh_up
},
740 /* 0000000000011011 sleep */{"sleep",{0},{HEX_0
,HEX_0
,HEX_1
,HEX_B
}, arch_sh_up
},
742 /* 0000nnnn00000010 stc SR,<REG_N> */{"stc",{A_SR
,A_REG_N
},{HEX_0
,REG_N
,HEX_0
,HEX_2
}, arch_sh_up
},
744 /* 0000nnnn00010010 stc GBR,<REG_N> */{"stc",{A_GBR
,A_REG_N
},{HEX_0
,REG_N
,HEX_1
,HEX_2
}, arch_sh_up
},
746 /* 0000nnnn00100010 stc VBR,<REG_N> */{"stc",{A_VBR
,A_REG_N
},{HEX_0
,REG_N
,HEX_2
,HEX_2
}, arch_sh_up
},
748 /* 0000nnnn01010010 stc MOD,<REG_N> */{"stc",{A_MOD
,A_REG_N
},{HEX_0
,REG_N
,HEX_5
,HEX_2
}, arch_sh_dsp_up
},
750 /* 0000nnnn01110010 stc RE,<REG_N> */{"stc",{A_RE
,A_REG_N
},{HEX_0
,REG_N
,HEX_7
,HEX_2
}, arch_sh_dsp_up
},
752 /* 0000nnnn01100010 stc RS,<REG_N> */{"stc",{A_RS
,A_REG_N
},{HEX_0
,REG_N
,HEX_6
,HEX_2
}, arch_sh_dsp_up
},
754 /* 0000nnnn00110010 stc SSR,<REG_N> */{"stc",{A_SSR
,A_REG_N
},{HEX_0
,REG_N
,HEX_3
,HEX_2
}, arch_sh3_nommu_up
},
756 /* 0000nnnn01000010 stc SPC,<REG_N> */{"stc",{A_SPC
,A_REG_N
},{HEX_0
,REG_N
,HEX_4
,HEX_2
}, arch_sh3_nommu_up
},
758 /* 0000nnnn00111010 stc SGR,<REG_N> */{"stc",{A_SGR
,A_REG_N
},{HEX_0
,REG_N
,HEX_3
,HEX_A
}, arch_sh4_nommu_nofpu_up
},
760 /* 0000nnnn11111010 stc DBR,<REG_N> */{"stc",{A_DBR
,A_REG_N
},{HEX_0
,REG_N
,HEX_F
,HEX_A
}, arch_sh4_nommu_nofpu_up
},
762 /* 0000nnnn1xxx0010 stc Rn_BANK,<REG_N> */{"stc",{A_REG_B
,A_REG_N
},{HEX_0
,REG_N
,REG_B
,HEX_2
}, arch_sh3_nommu_up
},
764 /* 0000nnnn01001010 stc TBR,<REG_N> */ {"stc",{A_TBR
,A_REG_N
},{HEX_0
,REG_N
,HEX_4
,HEX_A
}, arch_sh2a_nofpu_up
},
766 /* 0100nnnn00000011 stc.l SR,@-<REG_N> */{"stc.l",{A_SR
,A_DEC_N
},{HEX_4
,REG_N
,HEX_0
,HEX_3
}, arch_sh_up
},
768 /* 0100nnnn00100011 stc.l VBR,@-<REG_N> */{"stc.l",{A_VBR
,A_DEC_N
},{HEX_4
,REG_N
,HEX_2
,HEX_3
}, arch_sh_up
},
770 /* 0100nnnn01010011 stc.l MOD,@-<REG_N> */{"stc.l",{A_MOD
,A_DEC_N
},{HEX_4
,REG_N
,HEX_5
,HEX_3
}, arch_sh_dsp_up
},
772 /* 0100nnnn01110011 stc.l RE,@-<REG_N> */{"stc.l",{A_RE
,A_DEC_N
},{HEX_4
,REG_N
,HEX_7
,HEX_3
}, arch_sh_dsp_up
},
774 /* 0100nnnn01100011 stc.l RS,@-<REG_N> */{"stc.l",{A_RS
,A_DEC_N
},{HEX_4
,REG_N
,HEX_6
,HEX_3
}, arch_sh_dsp_up
},
776 /* 0100nnnn00110011 stc.l SSR,@-<REG_N> */{"stc.l",{A_SSR
,A_DEC_N
},{HEX_4
,REG_N
,HEX_3
,HEX_3
}, arch_sh3_nommu_up
},
778 /* 0100nnnn01000011 stc.l SPC,@-<REG_N> */{"stc.l",{A_SPC
,A_DEC_N
},{HEX_4
,REG_N
,HEX_4
,HEX_3
}, arch_sh3_nommu_up
},
780 /* 0100nnnn00010011 stc.l GBR,@-<REG_N> */{"stc.l",{A_GBR
,A_DEC_N
},{HEX_4
,REG_N
,HEX_1
,HEX_3
}, arch_sh_up
},
782 /* 0100nnnn00110010 stc.l SGR,@-<REG_N> */{"stc.l",{A_SGR
,A_DEC_N
},{HEX_4
,REG_N
,HEX_3
,HEX_2
}, arch_sh4_nommu_nofpu_up
},
784 /* 0100nnnn11110010 stc.l DBR,@-<REG_N> */{"stc.l",{A_DBR
,A_DEC_N
},{HEX_4
,REG_N
,HEX_F
,HEX_2
}, arch_sh4_nommu_nofpu_up
},
786 /* 0100nnnn1xxx0011 stc.l Rn_BANK,@-<REG_N> */{"stc.l",{A_REG_B
,A_DEC_N
},{HEX_4
,REG_N
,REG_B
,HEX_3
}, arch_sh3_nommu_up
},
788 /* 0000nnnn00001010 sts MACH,<REG_N> */{"sts",{A_MACH
,A_REG_N
},{HEX_0
,REG_N
,HEX_0
,HEX_A
}, arch_sh_up
},
790 /* 0000nnnn00011010 sts MACL,<REG_N> */{"sts",{A_MACL
,A_REG_N
},{HEX_0
,REG_N
,HEX_1
,HEX_A
}, arch_sh_up
},
792 /* 0000nnnn00101010 sts PR,<REG_N> */{"sts",{A_PR
,A_REG_N
},{HEX_0
,REG_N
,HEX_2
,HEX_A
}, arch_sh_up
},
794 /* 0000nnnn01101010 sts DSR,<REG_N> */{"sts",{A_DSR
,A_REG_N
},{HEX_0
,REG_N
,HEX_6
,HEX_A
}, arch_sh_dsp_up
},
796 /* 0000nnnn01111010 sts A0,<REG_N> */{"sts",{A_A0
,A_REG_N
},{HEX_0
,REG_N
,HEX_7
,HEX_A
}, arch_sh_dsp_up
},
798 /* 0000nnnn10001010 sts X0,<REG_N> */{"sts",{A_X0
,A_REG_N
},{HEX_0
,REG_N
,HEX_8
,HEX_A
}, arch_sh_dsp_up
},
800 /* 0000nnnn10011010 sts X1,<REG_N> */{"sts",{A_X1
,A_REG_N
},{HEX_0
,REG_N
,HEX_9
,HEX_A
}, arch_sh_dsp_up
},
802 /* 0000nnnn10101010 sts Y0,<REG_N> */{"sts",{A_Y0
,A_REG_N
},{HEX_0
,REG_N
,HEX_A
,HEX_A
}, arch_sh_dsp_up
},
804 /* 0000nnnn10111010 sts Y1,<REG_N> */{"sts",{A_Y1
,A_REG_N
},{HEX_0
,REG_N
,HEX_B
,HEX_A
}, arch_sh_dsp_up
},
806 /* 0000nnnn01011010 sts FPUL,<REG_N> */{"sts",{FPUL_M
,A_REG_N
},{HEX_0
,REG_N
,HEX_5
,HEX_A
}, arch_sh2e_up
},
808 /* 0000nnnn01101010 sts FPSCR,<REG_N> */{"sts",{FPSCR_M
,A_REG_N
},{HEX_0
,REG_N
,HEX_6
,HEX_A
}, arch_sh2e_up
},
810 /* 0100nnnn00000010 sts.l MACH,@-<REG_N>*/{"sts.l",{A_MACH
,A_DEC_N
},{HEX_4
,REG_N
,HEX_0
,HEX_2
}, arch_sh_up
},
812 /* 0100nnnn00010010 sts.l MACL,@-<REG_N>*/{"sts.l",{A_MACL
,A_DEC_N
},{HEX_4
,REG_N
,HEX_1
,HEX_2
}, arch_sh_up
},
814 /* 0100nnnn00100010 sts.l PR,@-<REG_N> */{"sts.l",{A_PR
,A_DEC_N
},{HEX_4
,REG_N
,HEX_2
,HEX_2
}, arch_sh_up
},
816 /* 0100nnnn01100110 sts.l DSR,@-<REG_N> */{"sts.l",{A_DSR
,A_DEC_N
},{HEX_4
,REG_N
,HEX_6
,HEX_2
}, arch_sh_dsp_up
},
818 /* 0100nnnn01110110 sts.l A0,@-<REG_N> */{"sts.l",{A_A0
,A_DEC_N
},{HEX_4
,REG_N
,HEX_7
,HEX_2
}, arch_sh_dsp_up
},
820 /* 0100nnnn10000110 sts.l X0,@-<REG_N> */{"sts.l",{A_X0
,A_DEC_N
},{HEX_4
,REG_N
,HEX_8
,HEX_2
}, arch_sh_dsp_up
},
822 /* 0100nnnn10010110 sts.l X1,@-<REG_N> */{"sts.l",{A_X1
,A_DEC_N
},{HEX_4
,REG_N
,HEX_9
,HEX_2
}, arch_sh_dsp_up
},
824 /* 0100nnnn10100110 sts.l Y0,@-<REG_N> */{"sts.l",{A_Y0
,A_DEC_N
},{HEX_4
,REG_N
,HEX_A
,HEX_2
}, arch_sh_dsp_up
},
826 /* 0100nnnn10110110 sts.l Y1,@-<REG_N> */{"sts.l",{A_Y1
,A_DEC_N
},{HEX_4
,REG_N
,HEX_B
,HEX_2
}, arch_sh_dsp_up
},
828 /* 0100nnnn01010010 sts.l FPUL,@-<REG_N>*/{"sts.l",{FPUL_M
,A_DEC_N
},{HEX_4
,REG_N
,HEX_5
,HEX_2
}, arch_sh2e_up
},
830 /* 0100nnnn01100010 sts.l FPSCR,@-<REG_N>*/{"sts.l",{FPSCR_M
,A_DEC_N
},{HEX_4
,REG_N
,HEX_6
,HEX_2
}, arch_sh2e_up
},
832 /* 0011nnnnmmmm1000 sub <REG_M>,<REG_N> */{"sub",{ A_REG_M
,A_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_8
}, arch_sh_up
},
834 /* 0011nnnnmmmm1010 subc <REG_M>,<REG_N>*/{"subc",{ A_REG_M
,A_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_A
}, arch_sh_up
},
836 /* 0011nnnnmmmm1011 subv <REG_M>,<REG_N>*/{"subv",{ A_REG_M
,A_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_B
}, arch_sh_up
},
838 /* 0110nnnnmmmm1000 swap.b <REG_M>,<REG_N>*/{"swap.b",{ A_REG_M
,A_REG_N
},{HEX_6
,REG_N
,REG_M
,HEX_8
}, arch_sh_up
},
840 /* 0110nnnnmmmm1001 swap.w <REG_M>,<REG_N>*/{"swap.w",{ A_REG_M
,A_REG_N
},{HEX_6
,REG_N
,REG_M
,HEX_9
}, arch_sh_up
},
842 /* 0000000010101011 synco */{"synco",{0},{HEX_0
,HEX_0
,HEX_A
,HEX_B
}, arch_sh4a_nofpu_up
},
844 /* 0100nnnn00011011 tas.b @<REG_N> */{"tas.b",{A_IND_N
},{HEX_4
,REG_N
,HEX_1
,HEX_B
}, arch_sh_up
},
846 /* 11000011i8*1.... trapa #<imm> */{"trapa",{A_IMM
},{HEX_C
,HEX_3
,IMM0_8
}, arch_sh_up
},
848 /* 11001000i8*1.... tst #<imm>,R0 */{"tst",{A_IMM
,A_R0
},{HEX_C
,HEX_8
,IMM0_8
}, arch_sh_up
},
850 /* 0010nnnnmmmm1000 tst <REG_M>,<REG_N> */{"tst",{ A_REG_M
,A_REG_N
},{HEX_2
,REG_N
,REG_M
,HEX_8
}, arch_sh_up
},
852 /* 11001100i8*1.... tst.b #<imm>,@(R0,GBR)*/{"tst.b",{A_IMM
,A_R0_GBR
},{HEX_C
,HEX_C
,IMM0_8
}, arch_sh_up
},
854 /* 11001010i8*1.... xor #<imm>,R0 */{"xor",{A_IMM
,A_R0
},{HEX_C
,HEX_A
,IMM0_8
}, arch_sh_up
},
856 /* 0010nnnnmmmm1010 xor <REG_M>,<REG_N> */{"xor",{ A_REG_M
,A_REG_N
},{HEX_2
,REG_N
,REG_M
,HEX_A
}, arch_sh_up
},
858 /* 11001110i8*1.... xor.b #<imm>,@(R0,GBR)*/{"xor.b",{A_IMM
,A_R0_GBR
},{HEX_C
,HEX_E
,IMM0_8
}, arch_sh_up
},
860 /* 0010nnnnmmmm1101 xtrct <REG_M>,<REG_N>*/{"xtrct",{ A_REG_M
,A_REG_N
},{HEX_2
,REG_N
,REG_M
,HEX_D
}, arch_sh_up
},
862 /* 0100nnnn00010000 dt <REG_N> */{"dt",{A_REG_N
},{HEX_4
,REG_N
,HEX_1
,HEX_0
}, arch_sh2_up
},
864 /* 0011nnnnmmmm1101 dmuls.l <REG_M>,<REG_N>*/{"dmuls.l",{ A_REG_M
,A_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_D
}, arch_sh2_up
},
866 /* 0011nnnnmmmm0101 dmulu.l <REG_M>,<REG_N>*/{"dmulu.l",{ A_REG_M
,A_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_5
}, arch_sh2_up
},
868 /* 0000nnnnmmmm1111 mac.l @<REG_M>+,@<REG_N>+*/{"mac.l",{A_INC_M
,A_INC_N
},{HEX_0
,REG_N
,REG_M
,HEX_F
}, arch_sh2_up
},
870 /* 0000nnnn00100011 braf <REG_N> */{"braf",{A_REG_N
},{HEX_0
,REG_N
,HEX_2
,HEX_3
}, arch_sh2_up
},
872 /* 0000nnnn00000011 bsrf <REG_N> */{"bsrf",{A_REG_N
},{HEX_0
,REG_N
,HEX_0
,HEX_3
}, arch_sh2_up
},
874 /* 111101nnmmmm0000 movs.w @-<REG_N>,<DSP_REG_M> */ {"movs.w",{A_DEC_N
,DSP_REG_M
},{HEX_F
,SDT_REG_N
,REG_M
,HEX_0
}, arch_sh_dsp_up
},
876 /* 111101nnmmmm0001 movs.w @<REG_N>,<DSP_REG_M> */ {"movs.w",{A_IND_N
,DSP_REG_M
},{HEX_F
,SDT_REG_N
,REG_M
,HEX_4
}, arch_sh_dsp_up
},
878 /* 111101nnmmmm0010 movs.w @<REG_N>+,<DSP_REG_M> */ {"movs.w",{A_INC_N
,DSP_REG_M
},{HEX_F
,SDT_REG_N
,REG_M
,HEX_8
}, arch_sh_dsp_up
},
880 /* 111101nnmmmm0011 movs.w @<REG_N>+r8,<DSP_REG_M> */ {"movs.w",{AS_PMOD_N
,DSP_REG_M
},{HEX_F
,SDT_REG_N
,REG_M
,HEX_C
}, arch_sh_dsp_up
},
882 /* 111101nnmmmm0100 movs.w <DSP_REG_M>,@-<REG_N> */ {"movs.w",{DSP_REG_M
,A_DEC_N
},{HEX_F
,SDT_REG_N
,REG_M
,HEX_1
}, arch_sh_dsp_up
},
884 /* 111101nnmmmm0101 movs.w <DSP_REG_M>,@<REG_N> */ {"movs.w",{DSP_REG_M
,A_IND_N
},{HEX_F
,SDT_REG_N
,REG_M
,HEX_5
}, arch_sh_dsp_up
},
886 /* 111101nnmmmm0110 movs.w <DSP_REG_M>,@<REG_N>+ */ {"movs.w",{DSP_REG_M
,A_INC_N
},{HEX_F
,SDT_REG_N
,REG_M
,HEX_9
}, arch_sh_dsp_up
},
888 /* 111101nnmmmm0111 movs.w <DSP_REG_M>,@<REG_N>+r8 */ {"movs.w",{DSP_REG_M
,AS_PMOD_N
},{HEX_F
,SDT_REG_N
,REG_M
,HEX_D
}, arch_sh_dsp_up
},
890 /* 111101nnmmmm1000 movs.l @-<REG_N>,<DSP_REG_M> */ {"movs.l",{A_DEC_N
,DSP_REG_M
},{HEX_F
,SDT_REG_N
,REG_M
,HEX_2
}, arch_sh_dsp_up
},
892 /* 111101nnmmmm1001 movs.l @<REG_N>,<DSP_REG_M> */ {"movs.l",{A_IND_N
,DSP_REG_M
},{HEX_F
,SDT_REG_N
,REG_M
,HEX_6
}, arch_sh_dsp_up
},
894 /* 111101nnmmmm1010 movs.l @<REG_N>+,<DSP_REG_M> */ {"movs.l",{A_INC_N
,DSP_REG_M
},{HEX_F
,SDT_REG_N
,REG_M
,HEX_A
}, arch_sh_dsp_up
},
896 /* 111101nnmmmm1011 movs.l @<REG_N>+r8,<DSP_REG_M> */ {"movs.l",{AS_PMOD_N
,DSP_REG_M
},{HEX_F
,SDT_REG_N
,REG_M
,HEX_E
}, arch_sh_dsp_up
},
898 /* 111101nnmmmm1100 movs.l <DSP_REG_M>,@-<REG_N> */ {"movs.l",{DSP_REG_M
,A_DEC_N
},{HEX_F
,SDT_REG_N
,REG_M
,HEX_3
}, arch_sh_dsp_up
},
900 /* 111101nnmmmm1101 movs.l <DSP_REG_M>,@<REG_N> */ {"movs.l",{DSP_REG_M
,A_IND_N
},{HEX_F
,SDT_REG_N
,REG_M
,HEX_7
}, arch_sh_dsp_up
},
902 /* 111101nnmmmm1110 movs.l <DSP_REG_M>,@<REG_N>+ */ {"movs.l",{DSP_REG_M
,A_INC_N
},{HEX_F
,SDT_REG_N
,REG_M
,HEX_B
}, arch_sh_dsp_up
},
904 /* 111101nnmmmm1111 movs.l <DSP_REG_M>,@<REG_N>+r8 */ {"movs.l",{DSP_REG_M
,AS_PMOD_N
},{HEX_F
,SDT_REG_N
,REG_M
,HEX_F
}, arch_sh_dsp_up
},
906 /* 0*0*0*00** nopx */ {"nopx",{0},{PPI
,NOPX
}, arch_sh_dsp_up
},
907 /* *0*0*0**00 nopy */ {"nopy",{0},{PPI
,NOPY
}, arch_sh_dsp_up
},
908 /* n*m*0*01** movx.w @<REG_N>,<DSP_REG_X> */ {"movx.w",{AX_IND_N
,DSP_REG_X
},{PPI
,MOVX
,HEX_1
}, arch_sh_dsp_up
},
909 /* n*m*0*10** movx.w @<REG_N>+,<DSP_REG_X> */ {"movx.w",{AX_INC_N
,DSP_REG_X
},{PPI
,MOVX
,HEX_2
}, arch_sh_dsp_up
},
910 /* n*m*0*11** movx.w @<REG_N>+r8,<DSP_REG_X> */ {"movx.w",{AX_PMOD_N
,DSP_REG_X
},{PPI
,MOVX
,HEX_3
}, arch_sh_dsp_up
},
911 /* n*m*1*01** movx.w <DSP_REG_M>,@<REG_N> */ {"movx.w",{DSP_REG_A_M
,AX_IND_N
},{PPI
,MOVX
,HEX_9
}, arch_sh_dsp_up
},
912 /* n*m*1*10** movx.w <DSP_REG_M>,@<REG_N>+ */ {"movx.w",{DSP_REG_A_M
,AX_INC_N
},{PPI
,MOVX
,HEX_A
}, arch_sh_dsp_up
},
913 /* n*m*1*11** movx.w <DSP_REG_M>,@<REG_N>+r8 */ {"movx.w",{DSP_REG_A_M
,AX_PMOD_N
},{PPI
,MOVX
,HEX_B
}, arch_sh_dsp_up
},
915 /* nnmm000100 movx.w @<REG_Axy>,<DSP_REG_XY> */ {"movx.w",{AXY_IND_N
,DSP_REG_XY
},{PPI
,MOVX_NOPY
,HEX_0
,HEX_4
}, arch_sh4al_dsp_up
},
916 /* nnmm001000 movx.w @<REG_Axy>+,<DSP_REG_XY> */{"movx.w",{AXY_INC_N
,DSP_REG_XY
},{PPI
,MOVX_NOPY
,HEX_0
,HEX_8
}, arch_sh4al_dsp_up
},
917 /* nnmm001100 movx.w @<REG_Axy>+r8,<DSP_REG_XY> */{"movx.w",{AXY_PMOD_N
,DSP_REG_XY
},{PPI
,MOVX_NOPY
,HEX_0
,HEX_C
}, arch_sh4al_dsp_up
},
918 /* nnmm100100 movx.w <DSP_REG_AX>,@<REG_Axy> */ {"movx.w",{DSP_REG_AX
,AXY_IND_N
},{PPI
,MOVX_NOPY
,HEX_2
,HEX_4
}, arch_sh4al_dsp_up
},
919 /* nnmm101000 movx.w <DSP_REG_AX>,@<REG_Axy>+ */{"movx.w",{DSP_REG_AX
,AXY_INC_N
},{PPI
,MOVX_NOPY
,HEX_2
,HEX_8
}, arch_sh4al_dsp_up
},
920 /* nnmm101100 movx.w <DSP_REG_AX>,@<REG_Axy>+r8 */{"movx.w",{DSP_REG_AX
,AXY_PMOD_N
},{PPI
,MOVX_NOPY
,HEX_2
,HEX_C
}, arch_sh4al_dsp_up
},
922 /* nnmm010100 movx.l @<REG_Axy>,<DSP_REG_XY> */ {"movx.l",{AXY_IND_N
,DSP_REG_XY
},{PPI
,MOVX_NOPY
,HEX_1
,HEX_4
}, arch_sh4al_dsp_up
},
923 /* nnmm011000 movx.l @<REG_Axy>+,<DSP_REG_XY> */{"movx.l",{AXY_INC_N
,DSP_REG_XY
},{PPI
,MOVX_NOPY
,HEX_1
,HEX_8
}, arch_sh4al_dsp_up
},
924 /* nnmm011100 movx.l @<REG_Axy>+r8,<DSP_REG_XY> */{"movx.l",{AXY_PMOD_N
,DSP_REG_XY
},{PPI
,MOVX_NOPY
,HEX_1
,HEX_C
}, arch_sh4al_dsp_up
},
925 /* nnmm110100 movx.l <DSP_REG_AX>,@<REG_Axy> */ {"movx.l",{DSP_REG_AX
,AXY_IND_N
},{PPI
,MOVX_NOPY
,HEX_3
,HEX_4
}, arch_sh4al_dsp_up
},
926 /* nnmm111000 movx.l <DSP_REG_AX>,@<REG_Axy>+ */{"movx.l",{DSP_REG_AX
,AXY_INC_N
},{PPI
,MOVX_NOPY
,HEX_3
,HEX_8
}, arch_sh4al_dsp_up
},
927 /* nnmm111100 movx.l <DSP_REG_AX>,@<REG_Axy>+r8 */{"movx.l",{DSP_REG_AX
,AXY_PMOD_N
},{PPI
,MOVX_NOPY
,HEX_3
,HEX_C
}, arch_sh4al_dsp_up
},
929 /* *n*m*0**01 movy.w @<REG_N>,<DSP_REG_Y> */ {"movy.w",{AY_IND_N
,DSP_REG_Y
},{PPI
,MOVY
,HEX_1
}, arch_sh_dsp_up
},
930 /* *n*m*0**10 movy.w @<REG_N>+,<DSP_REG_Y> */ {"movy.w",{AY_INC_N
,DSP_REG_Y
},{PPI
,MOVY
,HEX_2
}, arch_sh_dsp_up
},
931 /* *n*m*0**11 movy.w @<REG_N>+r9,<DSP_REG_Y> */ {"movy.w",{AY_PMOD_N
,DSP_REG_Y
},{PPI
,MOVY
,HEX_3
}, arch_sh_dsp_up
},
932 /* *n*m*1**01 movy.w <DSP_REG_M>,@<REG_N> */ {"movy.w",{DSP_REG_A_M
,AY_IND_N
},{PPI
,MOVY
,HEX_9
}, arch_sh_dsp_up
},
933 /* *n*m*1**10 movy.w <DSP_REG_M>,@<REG_N>+ */ {"movy.w",{DSP_REG_A_M
,AY_INC_N
},{PPI
,MOVY
,HEX_A
}, arch_sh_dsp_up
},
934 /* *n*m*1**11 movy.w <DSP_REG_M>,@<REG_N>+r9 */ {"movy.w",{DSP_REG_A_M
,AY_PMOD_N
},{PPI
,MOVY
,HEX_B
}, arch_sh_dsp_up
},
936 /* nnmm000001 movy.w @<REG_Ayx>,<DSP_REG_YX> */ {"movy.w",{AYX_IND_N
,DSP_REG_YX
},{PPI
,MOVY_NOPX
,HEX_0
,HEX_1
}, arch_sh4al_dsp_up
},
937 /* nnmm000010 movy.w @<REG_Ayx>+,<DSP_REG_YX> */{"movy.w",{AYX_INC_N
,DSP_REG_YX
},{PPI
,MOVY_NOPX
,HEX_0
,HEX_2
}, arch_sh4al_dsp_up
},
938 /* nnmm000011 movy.w @<REG_Ayx>+r9,<DSP_REG_YX> */{"movy.w",{AYX_PMOD_N
,DSP_REG_YX
},{PPI
,MOVY_NOPX
,HEX_0
,HEX_3
}, arch_sh4al_dsp_up
},
939 /* nnmm010001 movy.w <DSP_REG_AY>,@<REG_Ayx> */ {"movy.w",{DSP_REG_AY
,AYX_IND_N
},{PPI
,MOVY_NOPX
,HEX_1
,HEX_1
}, arch_sh4al_dsp_up
},
940 /* nnmm010010 movy.w <DSP_REG_AY>,@<REG_Ayx>+ */{"movy.w",{DSP_REG_AY
,AYX_INC_N
},{PPI
,MOVY_NOPX
,HEX_1
,HEX_2
}, arch_sh4al_dsp_up
},
941 /* nnmm010011 movy.w <DSP_REG_AY>,@<REG_Ayx>+r9 */{"movy.w",{DSP_REG_AY
,AYX_PMOD_N
},{PPI
,MOVY_NOPX
,HEX_1
,HEX_3
}, arch_sh4al_dsp_up
},
943 /* nnmm100001 movy.l @<REG_Ayx>,<DSP_REG_YX> */ {"movy.l",{AYX_IND_N
,DSP_REG_YX
},{PPI
,MOVY_NOPX
,HEX_2
,HEX_1
}, arch_sh4al_dsp_up
},
944 /* nnmm100010 movy.l @<REG_Ayx>+,<DSP_REG_YX> */{"movy.l",{AYX_INC_N
,DSP_REG_YX
},{PPI
,MOVY_NOPX
,HEX_2
,HEX_2
}, arch_sh4al_dsp_up
},
945 /* nnmm100011 movy.l @<REG_Ayx>+r9,<DSP_REG_YX> */{"movy.l",{AYX_PMOD_N
,DSP_REG_YX
},{PPI
,MOVY_NOPX
,HEX_2
,HEX_3
}, arch_sh4al_dsp_up
},
946 /* nnmm110001 movy.l <DSP_REG_AY>,@<REG_Ayx> */ {"movy.l",{DSP_REG_AY
,AYX_IND_N
},{PPI
,MOVY_NOPX
,HEX_3
,HEX_1
}, arch_sh4al_dsp_up
},
947 /* nnmm110010 movy.l <DSP_REG_AY>,@<REG_Ayx>+ */{"movy.l",{DSP_REG_AY
,AYX_INC_N
},{PPI
,MOVY_NOPX
,HEX_3
,HEX_2
}, arch_sh4al_dsp_up
},
948 /* nnmm110011 movy.l <DSP_REG_AY>,@<REG_Ayx>+r9 */{"movy.l",{DSP_REG_AY
,AYX_PMOD_N
},{PPI
,MOVY_NOPX
,HEX_3
,HEX_3
}, arch_sh4al_dsp_up
},
950 /* 01aaeeffxxyyggnn pmuls Se,Sf,Dg */ {"pmuls",{DSP_REG_E
,DSP_REG_F
,DSP_REG_G
},{PPI
,PMUL
}, arch_sh_dsp_up
},
951 /* 10100000xxyynnnn psubc <DSP_REG_X>,<DSP_REG_Y>,<DSP_REG_N> */
952 {"psubc",{DSP_REG_X
,DSP_REG_Y
,DSP_REG_N
},{PPI
,PPI3
,HEX_A
,HEX_0
}, arch_sh_dsp_up
},
953 /* 10110000xxyynnnn paddc <DSP_REG_X>,<DSP_REG_Y>,<DSP_REG_N> */
954 {"paddc",{DSP_REG_X
,DSP_REG_Y
,DSP_REG_N
},{PPI
,PPI3
,HEX_B
,HEX_0
}, arch_sh_dsp_up
},
955 /* 10000100xxyynnnn pcmp <DSP_REG_X>,<DSP_REG_Y> */
956 {"pcmp", {DSP_REG_X
,DSP_REG_Y
},{PPI
,PPI3
,HEX_8
,HEX_4
}, arch_sh_dsp_up
},
957 /* 10100100xxyynnnn pwsb <DSP_REG_X>,<DSP_REG_Y>,<DSP_REG_N> */
958 {"pwsb", {DSP_REG_X
,DSP_REG_Y
,DSP_REG_N
},{PPI
,PPI3
,HEX_A
,HEX_4
}, arch_sh_dsp_up
},
959 /* 10110100xxyynnnn pwad <DSP_REG_X>,<DSP_REG_Y>,<DSP_REG_N> */
960 {"pwad", {DSP_REG_X
,DSP_REG_Y
,DSP_REG_N
},{PPI
,PPI3
,HEX_B
,HEX_4
}, arch_sh_dsp_up
},
961 /* 10001000xxyynnnn pabs <DSP_REG_X>,<DSP_REG_N> */
962 {"pabs", {DSP_REG_X
,DSP_REG_N
},{PPI
,PPI3NC
,HEX_8
,HEX_8
}, arch_sh_dsp_up
},
963 /* 1000100!xx01nnnn pabs <DSP_REG_X>,<DSP_REG_N> */
964 {"pabs", {DSP_REG_X
,DSP_REG_N
},{PPI
,PPIC
,HEX_8
,HEX_9
,HEX_1
}, arch_sh4al_dsp_up
},
965 /* 10101000xxyynnnn pabs <DSP_REG_Y>,<DSP_REG_N> */
966 {"pabs", {DSP_REG_Y
,DSP_REG_N
},{PPI
,PPI3NC
,HEX_A
,HEX_8
}, arch_sh_dsp_up
},
967 /* 1010100!01yynnnn pabs <DSP_REG_Y>,<DSP_REG_N> */
968 {"pabs", {DSP_REG_Y
,DSP_REG_N
},{PPI
,PPIC
,HEX_A
,HEX_9
,HEX_4
}, arch_sh4al_dsp_up
},
969 /* 10011000xxyynnnn prnd <DSP_REG_X>,<DSP_REG_N> */
970 {"prnd", {DSP_REG_X
,DSP_REG_N
},{PPI
,PPI3NC
,HEX_9
,HEX_8
}, arch_sh_dsp_up
},
971 /* 1001100!xx01nnnn prnd <DSP_REG_X>,<DSP_REG_N> */
972 {"prnd", {DSP_REG_X
,DSP_REG_N
},{PPI
,PPIC
,HEX_9
,HEX_9
,HEX_1
}, arch_sh4al_dsp_up
},
973 /* 10111000xxyynnnn prnd <DSP_REG_Y>,<DSP_REG_N> */
974 {"prnd", {DSP_REG_Y
,DSP_REG_N
},{PPI
,PPI3NC
,HEX_B
,HEX_8
}, arch_sh_dsp_up
},
975 /* 1011100!01yynnnn prnd <DSP_REG_Y>,<DSP_REG_N> */
976 {"prnd", {DSP_REG_Y
,DSP_REG_N
},{PPI
,PPIC
,HEX_B
,HEX_9
,HEX_4
}, arch_sh4al_dsp_up
},
978 {"dct",{0},{PPI
,PDC
,HEX_1
}, arch_sh_dsp_up
},
979 {"dcf",{0},{PPI
,PDC
,HEX_2
}, arch_sh_dsp_up
},
981 /* 10000001xxyynnnn pshl <DSP_REG_X>,<DSP_REG_Y>,<DSP_REG_N> */
982 {"pshl", {DSP_REG_X
,DSP_REG_Y
,DSP_REG_N
},{PPI
,PPIC
,HEX_8
,HEX_1
}, arch_sh_dsp_up
},
983 /* 00000iiiiiiinnnn pshl #<imm>,<DSP_REG_N> */ {"pshl",{A_IMM
,DSP_REG_N
},{PPI
,PSH
,HEX_0
}, arch_sh_dsp_up
},
984 /* 10010001xxyynnnn psha <DSP_REG_X>,<DSP_REG_Y>,<DSP_REG_N> */
985 {"psha", {DSP_REG_X
,DSP_REG_Y
,DSP_REG_N
},{PPI
,PPIC
,HEX_9
,HEX_1
}, arch_sh_dsp_up
},
986 /* 00010iiiiiiinnnn psha #<imm>,<DSP_REG_N> */ {"psha",{A_IMM
,DSP_REG_N
},{PPI
,PSH
,HEX_1
}, arch_sh_dsp_up
},
987 /* 10100001xxyynnnn psub <DSP_REG_X>,<DSP_REG_Y>,<DSP_REG_N> */
988 {"psub", {DSP_REG_X
,DSP_REG_Y
,DSP_REG_N
},{PPI
,PPIC
,HEX_A
,HEX_1
}, arch_sh_dsp_up
},
989 /* 10000101xxyynnnn psub <DSP_REG_Y>,<DSP_REG_X>,<DSP_REG_N> */
990 {"psub", {DSP_REG_Y
,DSP_REG_X
,DSP_REG_N
},{PPI
,PPIC
,HEX_8
,HEX_5
}, arch_sh4al_dsp_up
},
991 /* 10110001xxyynnnn padd <DSP_REG_X>,<DSP_REG_Y>,<DSP_REG_N> */
992 {"padd", {DSP_REG_X
,DSP_REG_Y
,DSP_REG_N
},{PPI
,PPIC
,HEX_B
,HEX_1
}, arch_sh_dsp_up
},
993 /* 10010101xxyynnnn pand <DSP_REG_X>,<DSP_REG_Y>,<DSP_REG_N> */
994 {"pand", {DSP_REG_X
,DSP_REG_Y
,DSP_REG_N
},{PPI
,PPIC
,HEX_9
,HEX_5
}, arch_sh_dsp_up
},
995 /* 10100101xxyynnnn pxor <DSP_REG_X>,<DSP_REG_Y>,<DSP_REG_N> */
996 {"pxor", {DSP_REG_X
,DSP_REG_Y
,DSP_REG_N
},{PPI
,PPIC
,HEX_A
,HEX_5
}, arch_sh_dsp_up
},
997 /* 10110101xxyynnnn por <DSP_REG_X>,<DSP_REG_Y>,<DSP_REG_N> */
998 {"por", {DSP_REG_X
,DSP_REG_Y
,DSP_REG_N
},{PPI
,PPIC
,HEX_B
,HEX_5
}, arch_sh_dsp_up
},
999 /* 10001001xxyynnnn pdec <DSP_REG_X>,<DSP_REG_N> */
1000 {"pdec", {DSP_REG_X
,DSP_REG_N
},{PPI
,PPIC
,HEX_8
,HEX_9
}, arch_sh_dsp_up
},
1001 /* 10101001xxyynnnn pdec <DSP_REG_Y>,<DSP_REG_N> */
1002 {"pdec", {DSP_REG_Y
,DSP_REG_N
},{PPI
,PPIC
,HEX_A
,HEX_9
}, arch_sh_dsp_up
},
1003 /* 10011001xx00nnnn pinc <DSP_REG_X>,<DSP_REG_N> */
1004 {"pinc", {DSP_REG_X
,DSP_REG_N
},{PPI
,PPIC
,HEX_9
,HEX_9
,HEX_XX00
}, arch_sh_dsp_up
},
1005 /* 1011100100yynnnn pinc <DSP_REG_Y>,<DSP_REG_N> */
1006 {"pinc", {DSP_REG_Y
,DSP_REG_N
},{PPI
,PPIC
,HEX_B
,HEX_9
,HEX_00YY
}, arch_sh_dsp_up
},
1007 /* 10001101xxyynnnn pclr <DSP_REG_N> */
1008 {"pclr", {DSP_REG_N
},{PPI
,PPIC
,HEX_8
,HEX_D
}, arch_sh_dsp_up
},
1009 /* 10011101xx00nnnn pdmsb <DSP_REG_X>,<DSP_REG_N> */
1010 {"pdmsb", {DSP_REG_X
,DSP_REG_N
},{PPI
,PPIC
,HEX_9
,HEX_D
,HEX_XX00
}, arch_sh_dsp_up
},
1011 /* 1011110100yynnnn pdmsb <DSP_REG_Y>,<DSP_REG_N> */
1012 {"pdmsb", {DSP_REG_Y
,DSP_REG_N
},{PPI
,PPIC
,HEX_B
,HEX_D
,HEX_00YY
}, arch_sh_dsp_up
},
1013 /* 11001001xxyynnnn pneg <DSP_REG_X>,<DSP_REG_N> */
1014 {"pneg", {DSP_REG_X
,DSP_REG_N
},{PPI
,PPIC
,HEX_C
,HEX_9
}, arch_sh_dsp_up
},
1015 /* 11101001xxyynnnn pneg <DSP_REG_Y>,<DSP_REG_N> */
1016 {"pneg", {DSP_REG_Y
,DSP_REG_N
},{PPI
,PPIC
,HEX_E
,HEX_9
}, arch_sh_dsp_up
},
1017 /* 11011001xxyynnnn pcopy <DSP_REG_X>,<DSP_REG_N> */
1018 {"pcopy", {DSP_REG_X
,DSP_REG_N
},{PPI
,PPIC
,HEX_D
,HEX_9
}, arch_sh_dsp_up
},
1019 /* 11111001xxyynnnn pcopy <DSP_REG_Y>,<DSP_REG_N> */
1020 {"pcopy", {DSP_REG_Y
,DSP_REG_N
},{PPI
,PPIC
,HEX_F
,HEX_9
}, arch_sh_dsp_up
},
1021 /* 11001101xxyynnnn psts MACH,<DSP_REG_N> */
1022 {"psts", {A_MACH
,DSP_REG_N
},{PPI
,PPIC
,HEX_C
,HEX_D
}, arch_sh_dsp_up
},
1023 /* 11011101xxyynnnn psts MACL,<DSP_REG_N> */
1024 {"psts", {A_MACL
,DSP_REG_N
},{PPI
,PPIC
,HEX_D
,HEX_D
}, arch_sh_dsp_up
},
1025 /* 11101101xxyynnnn plds <DSP_REG_N>,MACH */
1026 {"plds", {DSP_REG_N
,A_MACH
},{PPI
,PPIC
,HEX_E
,HEX_D
}, arch_sh_dsp_up
},
1027 /* 11111101xxyynnnn plds <DSP_REG_N>,MACL */
1028 {"plds", {DSP_REG_N
,A_MACL
},{PPI
,PPIC
,HEX_F
,HEX_D
}, arch_sh_dsp_up
},
1029 /* 10011101xx01zzzz pswap <DSP_REG_X>,<DSP_REG_N> */
1030 {"pswap", {DSP_REG_X
,DSP_REG_N
},{PPI
,PPIC
,HEX_9
,HEX_D
,HEX_1
}, arch_sh4al_dsp_up
},
1031 /* 1011110101yyzzzz pswap <DSP_REG_Y>,<DSP_REG_N> */
1032 {"pswap", {DSP_REG_Y
,DSP_REG_N
},{PPI
,PPIC
,HEX_B
,HEX_D
,HEX_4
}, arch_sh4al_dsp_up
},
1034 /* 1111nnnn01011101 fabs <F_REG_N> */{"fabs",{F_REG_N
},{HEX_F
,REG_N
,HEX_5
,HEX_D
}, arch_sh2e_up
},
1035 /* 1111nnn001011101 fabs <D_REG_N> */{"fabs",{D_REG_N
},{HEX_F
,REG_N
,HEX_5
,HEX_D
}, arch_sh2a_or_sh4_up
},
1037 /* 1111nnnnmmmm0000 fadd <F_REG_M>,<F_REG_N>*/{"fadd",{F_REG_M
,F_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_0
}, arch_sh2e_up
},
1038 /* 1111nnn0mmm00000 fadd <D_REG_M>,<D_REG_N>*/{"fadd",{D_REG_M
,D_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_0
}, arch_sh2a_or_sh4_up
},
1040 /* 1111nnnnmmmm0100 fcmp/eq <F_REG_M>,<F_REG_N>*/{"fcmp/eq",{F_REG_M
,F_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_4
}, arch_sh2e_up
},
1041 /* 1111nnn0mmm00100 fcmp/eq <D_REG_M>,<D_REG_N>*/{"fcmp/eq",{D_REG_M
,D_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_4
}, arch_sh2a_or_sh4_up
},
1043 /* 1111nnnnmmmm0101 fcmp/gt <F_REG_M>,<F_REG_N>*/{"fcmp/gt",{F_REG_M
,F_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_5
}, arch_sh2e_up
},
1044 /* 1111nnn0mmm00101 fcmp/gt <D_REG_M>,<D_REG_N>*/{"fcmp/gt",{D_REG_M
,D_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_5
}, arch_sh2a_or_sh4_up
},
1046 /* 1111nnn010111101 fcnvds <D_REG_N>,FPUL*/{"fcnvds",{D_REG_N
,FPUL_M
},{HEX_F
,REG_N_D
,HEX_B
,HEX_D
}, arch_sh2a_or_sh4_up
},
1048 /* 1111nnn010101101 fcnvsd FPUL,<D_REG_N>*/{"fcnvsd",{FPUL_M
,D_REG_N
},{HEX_F
,REG_N_D
,HEX_A
,HEX_D
}, arch_sh2a_or_sh4_up
},
1050 /* 1111nnnnmmmm0011 fdiv <F_REG_M>,<F_REG_N>*/{"fdiv",{F_REG_M
,F_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_3
}, arch_sh2e_up
},
1051 /* 1111nnn0mmm00011 fdiv <D_REG_M>,<D_REG_N>*/{"fdiv",{D_REG_M
,D_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_3
}, arch_sh2a_or_sh4_up
},
1053 /* 1111nnmm11101101 fipr <V_REG_M>,<V_REG_N>*/{"fipr",{V_REG_M
,V_REG_N
},{HEX_F
,REG_NM
,HEX_E
,HEX_D
}, arch_sh4_up
},
1055 /* 1111nnnn10001101 fldi0 <F_REG_N> */{"fldi0",{F_REG_N
},{HEX_F
,REG_N
,HEX_8
,HEX_D
}, arch_sh2e_up
},
1057 /* 1111nnnn10011101 fldi1 <F_REG_N> */{"fldi1",{F_REG_N
},{HEX_F
,REG_N
,HEX_9
,HEX_D
}, arch_sh2e_up
},
1059 /* 1111nnnn00011101 flds <F_REG_N>,FPUL*/{"flds",{F_REG_N
,FPUL_M
},{HEX_F
,REG_N
,HEX_1
,HEX_D
}, arch_sh2e_up
},
1061 /* 1111nnnn00101101 float FPUL,<F_REG_N>*/{"float",{FPUL_M
,F_REG_N
},{HEX_F
,REG_N
,HEX_2
,HEX_D
}, arch_sh2e_up
},
1062 /* 1111nnn000101101 float FPUL,<D_REG_N>*/{"float",{FPUL_M
,D_REG_N
},{HEX_F
,REG_N
,HEX_2
,HEX_D
}, arch_sh2a_or_sh4_up
},
1064 /* 1111nnnnmmmm1110 fmac FR0,<F_REG_M>,<F_REG_N>*/{"fmac",{F_FR0
,F_REG_M
,F_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_E
}, arch_sh2e_up
},
1066 /* 1111nnnnmmmm1100 fmov <F_REG_M>,<F_REG_N>*/{"fmov",{F_REG_M
,F_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_C
}, arch_sh2e_up
},
1067 /* 1111nnn1mmmm1100 fmov <DX_REG_M>,<DX_REG_N>*/{"fmov",{DX_REG_M
,DX_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_C
}, arch_sh2a_or_sh4_up
},
1069 /* 1111nnnnmmmm1000 fmov @<REG_M>,<F_REG_N>*/{"fmov",{A_IND_M
,F_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_8
}, arch_sh2e_up
},
1070 /* 1111nnn1mmmm1000 fmov @<REG_M>,<DX_REG_N>*/{"fmov",{A_IND_M
,DX_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_8
}, arch_sh2a_or_sh4_up
},
1072 /* 1111nnnnmmmm1010 fmov <F_REG_M>,@<REG_N>*/{"fmov",{F_REG_M
,A_IND_N
},{HEX_F
,REG_N
,REG_M
,HEX_A
}, arch_sh2e_up
},
1073 /* 1111nnnnmmm11010 fmov <DX_REG_M>,@<REG_N>*/{"fmov",{DX_REG_M
,A_IND_N
},{HEX_F
,REG_N
,REG_M
,HEX_A
}, arch_sh2a_or_sh4_up
},
1075 /* 1111nnnnmmmm1001 fmov @<REG_M>+,<F_REG_N>*/{"fmov",{A_INC_M
,F_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_9
}, arch_sh2e_up
},
1076 /* 1111nnn1mmmm1001 fmov @<REG_M>+,<DX_REG_N>*/{"fmov",{A_INC_M
,DX_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_9
}, arch_sh2a_or_sh4_up
},
1078 /* 1111nnnnmmmm1011 fmov <F_REG_M>,@-<REG_N>*/{"fmov",{F_REG_M
,A_DEC_N
},{HEX_F
,REG_N
,REG_M
,HEX_B
}, arch_sh2e_up
},
1079 /* 1111nnnnmmm11011 fmov <DX_REG_M>,@-<REG_N>*/{"fmov",{DX_REG_M
,A_DEC_N
},{HEX_F
,REG_N
,REG_M
,HEX_B
}, arch_sh2a_or_sh4_up
},
1081 /* 1111nnnnmmmm0110 fmov @(R0,<REG_M>),<F_REG_N>*/{"fmov",{A_IND_R0_REG_M
,F_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_6
}, arch_sh2e_up
},
1082 /* 1111nnn1mmmm0110 fmov @(R0,<REG_M>),<DX_REG_N>*/{"fmov",{A_IND_R0_REG_M
,DX_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_6
}, arch_sh2a_or_sh4_up
},
1084 /* 1111nnnnmmmm0111 fmov <F_REG_M>,@(R0,<REG_N>)*/{"fmov",{F_REG_M
,A_IND_R0_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_7
}, arch_sh2e_up
},
1085 /* 1111nnnnmmm10111 fmov <DX_REG_M>,@(R0,<REG_N>)*/{"fmov",{DX_REG_M
,A_IND_R0_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_7
}, arch_sh2a_or_sh4_up
},
1087 /* 1111nnn1mmmm1000 fmov.d @<REG_M>,<DX_REG_N>*/{"fmov.d",{A_IND_M
,DX_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_8
}, arch_sh2a_or_sh4_up
},
1088 /* 1111nnnnmmm11010 fmov.d <DX_REG_M>,@<REG_N>*/{"fmov.d",{DX_REG_M
,A_IND_N
},{HEX_F
,REG_N
,REG_M
,HEX_A
}, arch_sh2a_or_sh4_up
},
1089 /* 1111nnn1mmmm1001 fmov.d @<REG_M>+,<DX_REG_N>*/{"fmov.d",{A_INC_M
,DX_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_9
}, arch_sh2a_or_sh4_up
},
1090 /* 1111nnnnmmm11011 fmov.d <DX_REG_M>,@-<REG_N>*/{"fmov.d",{DX_REG_M
,A_DEC_N
},{HEX_F
,REG_N
,REG_M
,HEX_B
}, arch_sh2a_or_sh4_up
},
1091 /* 1111nnn1mmmm0110 fmov.d @(R0,<REG_M>),<DX_REG_N>*/{"fmov.d",{A_IND_R0_REG_M
,DX_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_6
}, arch_sh2a_or_sh4_up
},
1092 /* 1111nnnnmmm10111 fmov.d <DX_REG_M>,@(R0,<REG_N>)*/{"fmov.d",{DX_REG_M
,A_IND_R0_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_7
}, arch_sh2a_or_sh4_up
},
1093 /* 0011nnnnmmmm0001 0011dddddddddddd fmov.d <DX_REG_M>,@(<DISP12>,<REG_N>) */
1094 {"fmov.d",{DX_REG_M
,A_DISP_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_1
,HEX_3
,DISP1_12BY8
}, arch_sh2a_up
| arch_op32
},
1095 /* 0011nnnnmmmm0001 0111dddddddddddd fmov.d @(<DISP12>,<REG_M>),<DX_REG_N> */
1096 {"fmov.d",{A_DISP_REG_M
,DX_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_1
,HEX_7
,DISP0_12BY8
}, arch_sh2a_up
| arch_op32
},
1098 /* 1111nnnnmmmm1000 fmov.s @<REG_M>,<F_REG_N>*/{"fmov.s",{A_IND_M
,F_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_8
}, arch_sh2e_up
},
1100 /* 1111nnnnmmmm1010 fmov.s <F_REG_M>,@<REG_N>*/{"fmov.s",{F_REG_M
,A_IND_N
},{HEX_F
,REG_N
,REG_M
,HEX_A
}, arch_sh2e_up
},
1102 /* 1111nnnnmmmm1001 fmov.s @<REG_M>+,<F_REG_N>*/{"fmov.s",{A_INC_M
,F_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_9
}, arch_sh2e_up
},
1104 /* 1111nnnnmmmm1011 fmov.s <F_REG_M>,@-<REG_N>*/{"fmov.s",{F_REG_M
,A_DEC_N
},{HEX_F
,REG_N
,REG_M
,HEX_B
}, arch_sh2e_up
},
1106 /* 1111nnnnmmmm0110 fmov.s @(R0,<REG_M>),<F_REG_N>*/{"fmov.s",{A_IND_R0_REG_M
,F_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_6
}, arch_sh2e_up
},
1108 /* 1111nnnnmmmm0111 fmov.s <F_REG_M>,@(R0,<REG_N>)*/{"fmov.s",{F_REG_M
,A_IND_R0_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_7
}, arch_sh2e_up
},
1109 /* 0011nnnnmmmm0001 0011dddddddddddd fmov.s <F_REG_M>,@(<DISP12>,<REG_N>) */
1110 {"fmov.s",{F_REG_M
,A_DISP_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_1
,HEX_3
,DISP1_12BY4
}, arch_sh2a_up
| arch_op32
},
1111 /* 0011nnnnmmmm0001 0111dddddddddddd fmov.s @(<DISP12>,<REG_M>),<F_REG_N> */
1112 {"fmov.s",{A_DISP_REG_M
,F_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_1
,HEX_7
,DISP0_12BY4
}, arch_sh2a_up
| arch_op32
},
1114 /* 1111nnnnmmmm0010 fmul <F_REG_M>,<F_REG_N>*/{"fmul",{F_REG_M
,F_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_2
}, arch_sh2e_up
},
1115 /* 1111nnn0mmm00010 fmul <D_REG_M>,<D_REG_N>*/{"fmul",{D_REG_M
,D_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_2
}, arch_sh2a_or_sh4_up
},
1117 /* 1111nnnn01001101 fneg <F_REG_N> */{"fneg",{F_REG_N
},{HEX_F
,REG_N
,HEX_4
,HEX_D
}, arch_sh2e_up
},
1118 /* 1111nnn001001101 fneg <D_REG_N> */{"fneg",{D_REG_N
},{HEX_F
,REG_N
,HEX_4
,HEX_D
}, arch_sh2a_or_sh4_up
},
1120 /* 1111011111111101 fpchg */{"fpchg",{0},{HEX_F
,HEX_7
,HEX_F
,HEX_D
}, arch_sh4a_up
},
1122 /* 1111101111111101 frchg */{"frchg",{0},{HEX_F
,HEX_B
,HEX_F
,HEX_D
}, arch_sh4_up
},
1124 /* 1111nnn011111101 fsca FPUL,<D_REG_N> */{"fsca",{FPUL_M
,D_REG_N
},{HEX_F
,REG_N_D
,HEX_F
,HEX_D
}, arch_sh4_up
},
1126 /* 1111001111111101 fschg */{"fschg",{0},{HEX_F
,HEX_3
,HEX_F
,HEX_D
}, arch_sh2a_or_sh4_up
},
1128 /* 1111nnnn01101101 fsqrt <F_REG_N> */{"fsqrt",{F_REG_N
},{HEX_F
,REG_N
,HEX_6
,HEX_D
}, arch_sh2a_or_sh3e_up
},
1129 /* 1111nnn001101101 fsqrt <D_REG_N> */{"fsqrt",{D_REG_N
},{HEX_F
,REG_N
,HEX_6
,HEX_D
}, arch_sh2a_or_sh4_up
},
1131 /* 1111nnnn01111101 fsrra <F_REG_N> */{"fsrra",{F_REG_N
},{HEX_F
,REG_N
,HEX_7
,HEX_D
}, arch_sh4_up
},
1133 /* 1111nnnn00001101 fsts FPUL,<F_REG_N>*/{"fsts",{FPUL_M
,F_REG_N
},{HEX_F
,REG_N
,HEX_0
,HEX_D
}, arch_sh2e_up
},
1135 /* 1111nnnnmmmm0001 fsub <F_REG_M>,<F_REG_N>*/{"fsub",{F_REG_M
,F_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_1
}, arch_sh2e_up
},
1136 /* 1111nnn0mmm00001 fsub <D_REG_M>,<D_REG_N>*/{"fsub",{D_REG_M
,D_REG_N
},{HEX_F
,REG_N
,REG_M
,HEX_1
}, arch_sh2a_or_sh4_up
},
1138 /* 1111nnnn00111101 ftrc <F_REG_N>,FPUL*/{"ftrc",{F_REG_N
,FPUL_M
},{HEX_F
,REG_N
,HEX_3
,HEX_D
}, arch_sh2e_up
},
1139 /* 1111nnnn00111101 ftrc <D_REG_N>,FPUL*/{"ftrc",{D_REG_N
,FPUL_M
},{HEX_F
,REG_N
,HEX_3
,HEX_D
}, arch_sh2a_or_sh4_up
},
1141 /* 1111nn0111111101 ftrv XMTRX_M4,<V_REG_n>*/{"ftrv",{XMTRX_M4
,V_REG_N
},{HEX_F
,REG_N_B01
,HEX_F
,HEX_D
}, arch_sh4_up
},
1143 /* 10000110nnnn0iii bclr #<imm>, <REG_N> */ {"bclr",{A_IMM
, A_REG_N
},{HEX_8
,HEX_6
,REG_N
,IMM0_3c
}, arch_sh2a_nofpu_up
},
1144 /* 0011nnnn0iii1001 0000dddddddddddd bclr.b #<imm>,@(<DISP12>,<REG_N>) */
1145 {"bclr.b",{A_IMM
,A_DISP_REG_N
},{HEX_3
,REG_N
,IMM0_3Uc
,HEX_9
,HEX_0
,DISP1_12
}, arch_sh2a_nofpu_up
| arch_op32
},
1146 /* 10000111nnnn1iii bld #<imm>, <REG_N> */ {"bld",{A_IMM
, A_REG_N
},{HEX_8
,HEX_7
,REG_N
,IMM0_3s
}, arch_sh2a_nofpu_up
},
1147 /* 0011nnnn0iii1001 0011dddddddddddd bld.b #<imm>,@(<DISP12>,<REG_N>) */
1148 {"bld.b",{A_IMM
,A_DISP_REG_N
},{HEX_3
,REG_N
,IMM0_3Uc
,HEX_9
,HEX_3
,DISP1_12
}, arch_sh2a_nofpu_up
| arch_op32
},
1149 /* 10000110nnnn1iii bset #<imm>, <REG_N> */ {"bset",{A_IMM
, A_REG_N
},{HEX_8
,HEX_6
,REG_N
,IMM0_3s
}, arch_sh2a_nofpu_up
},
1150 /* 0011nnnn0iii1001 0001dddddddddddd bset.b #<imm>,@(<DISP12>,<REG_N>) */
1151 {"bset.b",{A_IMM
,A_DISP_REG_N
},{HEX_3
,REG_N
,IMM0_3Uc
,HEX_9
,HEX_1
,DISP1_12
}, arch_sh2a_nofpu_up
| arch_op32
},
1152 /* 10000111nnnn0iii bst #<imm>, <REG_N> */ {"bst",{A_IMM
, A_REG_N
},{HEX_8
,HEX_7
,REG_N
,IMM0_3c
}, arch_sh2a_nofpu_up
},
1153 /* 0011nnnn0iii1001 0010dddddddddddd bst.b #<imm>,@(<DISP12>,<REG_N>) */
1154 {"bst.b",{A_IMM
,A_DISP_REG_N
},{HEX_3
,REG_N
,IMM0_3Uc
,HEX_9
,HEX_2
,DISP1_12
}, arch_sh2a_nofpu_up
| arch_op32
},
1155 /* 0100nnnn10010001 clips.b <REG_N> */ {"clips.b",{A_REG_N
},{HEX_4
,REG_N
,HEX_9
,HEX_1
}, arch_sh2a_nofpu_up
},
1156 /* 0100nnnn10010101 clips.w <REG_N> */ {"clips.w",{A_REG_N
},{HEX_4
,REG_N
,HEX_9
,HEX_5
}, arch_sh2a_nofpu_up
},
1157 /* 0100nnnn10000001 clipu.b <REG_N> */ {"clipu.b",{A_REG_N
},{HEX_4
,REG_N
,HEX_8
,HEX_1
}, arch_sh2a_nofpu_up
},
1158 /* 0100nnnn10000101 clipu.w <REG_N> */ {"clipu.w",{A_REG_N
},{HEX_4
,REG_N
,HEX_8
,HEX_5
}, arch_sh2a_nofpu_up
},
1159 /* 0100nnnn10010100 divs R0,<REG_N> */ {"divs",{A_R0
,A_REG_N
},{HEX_4
,REG_N
,HEX_9
,HEX_4
}, arch_sh2a_nofpu_up
},
1160 /* 0100nnnn10000100 divu R0,<REG_N> */ {"divu",{A_R0
,A_REG_N
},{HEX_4
,REG_N
,HEX_8
,HEX_4
}, arch_sh2a_nofpu_up
},
1161 /* 0100mmmm01001011 jsr/n @<REG_M> */ {"jsr/n",{A_IND_M
},{HEX_4
,REG_M
,HEX_4
,HEX_B
}, arch_sh2a_nofpu_up
},
1162 /* 10000011dddddddd jsr/n @@(<disp>,TBR) */ {"jsr/n",{A_DISP2_TBR
},{HEX_8
,HEX_3
,IMM0_8BY4
}, arch_sh2a_nofpu_up
},
1163 /* 0100mmmm11100101 ldbank @<REG_M>,R0 */ {"ldbank",{A_IND_M
,A_R0
},{HEX_4
,REG_M
,HEX_E
,HEX_5
}, arch_sh2a_nofpu_up
},
1164 /* 0100mmmm11110001 movml.l <REG_M>,@-R15 */ {"movml.l",{A_REG_M
,A_DEC_R15
},{HEX_4
,REG_M
,HEX_F
,HEX_1
}, arch_sh2a_nofpu_up
},
1165 /* 0100mmmm11110101 movml.l @R15+,<REG_M> */ {"movml.l",{A_INC_R15
,A_REG_M
},{HEX_4
,REG_M
,HEX_F
,HEX_5
}, arch_sh2a_nofpu_up
},
1166 /* 0100mmmm11110000 movml.l <REG_M>,@-R15 */ {"movmu.l",{A_REG_M
,A_DEC_R15
},{HEX_4
,REG_M
,HEX_F
,HEX_0
}, arch_sh2a_nofpu_up
},
1167 /* 0100mmmm11110100 movml.l @R15+,<REG_M> */ {"movmu.l",{A_INC_R15
,A_REG_M
},{HEX_4
,REG_M
,HEX_F
,HEX_4
}, arch_sh2a_nofpu_up
},
1168 /* 0000nnnn00111001 movrt <REG_N> */ {"movrt",{A_REG_N
},{HEX_0
,REG_N
,HEX_3
,HEX_9
}, arch_sh2a_nofpu_up
},
1169 /* 0100nnnn10000000 mulr R0,<REG_N> */ {"mulr",{A_R0
,A_REG_N
},{HEX_4
,REG_N
,HEX_8
,HEX_0
}, arch_sh2a_nofpu_up
},
1170 /* 0000000001101000 nott */ {"nott",{A_END
},{HEX_0
,HEX_0
,HEX_6
,HEX_8
}, arch_sh2a_nofpu_up
},
1171 /* 0000000001011011 resbank */ {"resbank",{A_END
},{HEX_0
,HEX_0
,HEX_5
,HEX_B
}, arch_sh2a_nofpu_up
},
1172 /* 0000000001101011 rts/n */ {"rts/n",{A_END
},{HEX_0
,HEX_0
,HEX_6
,HEX_B
}, arch_sh2a_nofpu_up
},
1173 /* 0000mmmm01111011 rtv/n <REG_M>*/ {"rtv/n",{A_REG_M
},{HEX_0
,REG_M
,HEX_7
,HEX_B
}, arch_sh2a_nofpu_up
},
1174 /* 0100nnnn11100001 stbank R0,@<REG_N>*/ {"stbank",{A_R0
,A_IND_N
},{HEX_4
,REG_N
,HEX_E
,HEX_1
}, arch_sh2a_nofpu_up
},
1176 /* 0011nnnn0iii1001 0100dddddddddddd band.b #<imm>,@(<DISP12>,<REG_N>) */
1177 {"band.b",{A_IMM
,A_DISP_REG_N
},{HEX_3
,REG_N
,IMM0_3Uc
,HEX_9
,HEX_4
,DISP1_12
}, arch_sh2a_nofpu_up
| arch_op32
},
1178 /* 0011nnnn0iii1001 1100dddddddddddd bandnot.b #<imm>,@(<DISP12>,<REG_N>) */
1179 {"bandnot.b",{A_IMM
,A_DISP_REG_N
},{HEX_3
,REG_N
,IMM0_3Uc
,HEX_9
,HEX_C
,DISP1_12
}, arch_sh2a_nofpu_up
| arch_op32
},
1180 /* 0011nnnn0iii1001 1011dddddddddddd bldnot.b #<imm>,@(<DISP12>,<REG_N>) */
1181 {"bldnot.b",{A_IMM
,A_DISP_REG_N
},{HEX_3
,REG_N
,IMM0_3Uc
,HEX_9
,HEX_B
,DISP1_12
}, arch_sh2a_nofpu_up
| arch_op32
},
1182 /* 0011nnnn0iii1001 0101dddddddddddd bor.b #<imm>,@(<DISP12>,<REG_N>) */
1183 {"bor.b",{A_IMM
,A_DISP_REG_N
},{HEX_3
,REG_N
,IMM0_3Uc
,HEX_9
,HEX_5
,DISP1_12
}, arch_sh2a_nofpu_up
| arch_op32
},
1184 /* 0011nnnn0iii1001 1101dddddddddddd bornot.b #<imm>,@(<DISP12>,<REG_N>) */
1185 {"bornot.b",{A_IMM
,A_DISP_REG_N
},{HEX_3
,REG_N
,IMM0_3Uc
,HEX_9
,HEX_D
,DISP1_12
}, arch_sh2a_nofpu_up
| arch_op32
},
1186 /* 0011nnnn0iii1001 0110dddddddddddd bxor.b #<imm>,@(<DISP12>,<REG_N>) */
1187 {"bxor.b",{A_IMM
,A_DISP_REG_N
},{HEX_3
,REG_N
,IMM0_3Uc
,HEX_9
,HEX_6
,DISP1_12
}, arch_sh2a_nofpu_up
| arch_op32
},
1188 /* 0000nnnniiii0000 iiiiiiiiiiiiiiii movi20 #<imm>,<REG_N> */
1189 {"movi20",{A_IMM
,A_REG_N
},{HEX_0
,REG_N
,IMM0_20_4
,HEX_0
,IMM0_20
}, arch_sh2a_nofpu_up
| arch_op32
},
1190 /* 0000nnnniiii0001 iiiiiiiiiiiiiiii movi20s #<imm>,<REG_N> */
1191 {"movi20s",{A_IMM
,A_REG_N
},{HEX_0
,REG_N
,IMM0_20_4
,HEX_1
,IMM0_20BY8
}, arch_sh2a_nofpu_up
| arch_op32
},
1192 /* 0011nnnnmmmm0001 1000dddddddddddd movu.b @(<DISP12>,<REG_M>),<REG_N> */
1193 {"movu.b",{A_DISP_REG_M
,A_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_1
,HEX_8
,DISP0_12
}, arch_sh2a_nofpu_up
| arch_op32
},
1194 /* 0011nnnnmmmm0001 1001dddddddddddd movu.w @(<DISP12>,<REG_M>),<REG_N> */
1195 {"movu.w",{A_DISP_REG_M
,A_REG_N
},{HEX_3
,REG_N
,REG_M
,HEX_1
,HEX_9
,DISP0_12BY2
}, arch_sh2a_nofpu_up
| arch_op32
},