15f210c2aSfgsch /* cris-opc.c -- Table of opcodes for the CRIS processor. 25f210c2aSfgsch Copyright 2000 Free Software Foundation, Inc. 35f210c2aSfgsch Contributed by Axis Communications AB, Lund, Sweden. 45f210c2aSfgsch Originally written for GAS 1.38.1 by Mikael Asker. 55f210c2aSfgsch Reorganized by Hans-Peter Nilsson. 65f210c2aSfgsch 75f210c2aSfgsch This file is part of GAS, GDB and the GNU binutils. 85f210c2aSfgsch 95f210c2aSfgsch GAS, GDB, and GNU binutils is free software; you can redistribute it 105f210c2aSfgsch and/or modify it under the terms of the GNU General Public License as 115f210c2aSfgsch published by the Free Software Foundation; either version 2, or (at your 125f210c2aSfgsch option) any later version. 135f210c2aSfgsch 145f210c2aSfgsch GAS, GDB, and GNU binutils are distributed in the hope that they will be 155f210c2aSfgsch useful, but WITHOUT ANY WARRANTY; without even the implied warranty of 165f210c2aSfgsch MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 175f210c2aSfgsch GNU General Public License for more details. 185f210c2aSfgsch 195f210c2aSfgsch You should have received a copy of the GNU General Public License 205f210c2aSfgsch along with this program; if not, write to the Free Software 215f210c2aSfgsch Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 225f210c2aSfgsch 235f210c2aSfgsch #include "opcode/cris.h" 245f210c2aSfgsch 255f210c2aSfgsch #ifndef NULL 265f210c2aSfgsch #define NULL (0) 275f210c2aSfgsch #endif 285f210c2aSfgsch 295f210c2aSfgsch const struct cris_spec_reg 305f210c2aSfgsch cris_spec_regs[] = 315f210c2aSfgsch { 325f210c2aSfgsch {"p0", 0, 1, 0, NULL}, 335f210c2aSfgsch {"vr", 1, 1, 0, NULL}, 345f210c2aSfgsch {"p1", 1, 1, 0, NULL}, 355f210c2aSfgsch {"p2", 2, 1, cris_ver_warning, NULL}, 365f210c2aSfgsch {"p3", 3, 1, cris_ver_warning, NULL}, 375f210c2aSfgsch {"p4", 4, 2, 0, NULL}, 385f210c2aSfgsch {"ccr", 5, 2, 0, NULL}, 395f210c2aSfgsch {"p5", 5, 2, 0, NULL}, 405f210c2aSfgsch {"dcr0",6, 2, cris_ver_v0_3, NULL}, 415f210c2aSfgsch {"p6", 6, 2, cris_ver_v0_3, NULL}, 425f210c2aSfgsch {"dcr1/mof", 7, 4, cris_ver_v10p, 435f210c2aSfgsch "Register `dcr1/mof' with ambiguous size specified. Guessing 4 bytes"}, 445f210c2aSfgsch {"dcr1/mof", 7, 2, cris_ver_v0_3, 455f210c2aSfgsch "Register `dcr1/mof' with ambiguous size specified. Guessing 2 bytes"}, 465f210c2aSfgsch {"mof", 7, 4, cris_ver_v10p, NULL}, 475f210c2aSfgsch {"dcr1",7, 2, cris_ver_v0_3, NULL}, 485f210c2aSfgsch {"p7", 7, 4, cris_ver_v10p, NULL}, 495f210c2aSfgsch {"p7", 7, 2, cris_ver_v0_3, NULL}, 505f210c2aSfgsch {"p8", 8, 4, 0, NULL}, 515f210c2aSfgsch {"ibr", 9, 4, 0, NULL}, 525f210c2aSfgsch {"p9", 9, 4, 0, NULL}, 535f210c2aSfgsch {"irp", 10, 4, 0, NULL}, 545f210c2aSfgsch {"p10", 10, 4, 0, NULL}, 555f210c2aSfgsch {"srp", 11, 4, 0, NULL}, 565f210c2aSfgsch {"p11", 11, 4, 0, NULL}, 575f210c2aSfgsch /* For disassembly use only. Accept at assembly with a warning. */ 585f210c2aSfgsch {"bar/dtp0", 12, 4, cris_ver_warning, 595f210c2aSfgsch "Ambiguous register `bar/dtp0' specified"}, 605f210c2aSfgsch {"bar", 12, 4, cris_ver_v8p, NULL}, 615f210c2aSfgsch {"dtp0",12, 4, cris_ver_v0_3, NULL}, 625f210c2aSfgsch {"p12", 12, 4, 0, NULL}, 635f210c2aSfgsch /* For disassembly use only. Accept at assembly with a warning. */ 645f210c2aSfgsch {"dccr/dtp1",13, 4, cris_ver_warning, 655f210c2aSfgsch "Ambiguous register `dccr/dtp1' specified"}, 665f210c2aSfgsch {"dccr",13, 4, cris_ver_v8p, NULL}, 675f210c2aSfgsch {"dtp1",13, 4, cris_ver_v0_3, NULL}, 685f210c2aSfgsch {"p13", 13, 4, 0, NULL}, 695f210c2aSfgsch {"brp", 14, 4, cris_ver_v3p, NULL}, 705f210c2aSfgsch {"p14", 14, 4, cris_ver_v3p, NULL}, 715f210c2aSfgsch {"usp", 15, 4, cris_ver_v10p, NULL}, 725f210c2aSfgsch {"p15", 15, 4, cris_ver_v10p, NULL}, 73*d2201f2fSdrahn {NULL, 0, 0, cris_ver_version_all, NULL} 745f210c2aSfgsch }; 755f210c2aSfgsch 765f210c2aSfgsch /* All CRIS opcodes are 16 bits. 775f210c2aSfgsch 785f210c2aSfgsch - The match component is a mask saying which bits must match a 795f210c2aSfgsch particular opcode in order for an instruction to be an instance 805f210c2aSfgsch of that opcode. 815f210c2aSfgsch 825f210c2aSfgsch - The args component is a string containing characters symbolically 835f210c2aSfgsch matching the operands of an instruction. Used for both assembly 845f210c2aSfgsch and disassembly. 855f210c2aSfgsch 865f210c2aSfgsch Operand-matching characters: 875f210c2aSfgsch B Not really an operand. It causes a "BDAP -size,SP" prefix to be 885f210c2aSfgsch output for the PUSH alias-instructions and recognizes a 895f210c2aSfgsch push-prefix at disassembly. Must be followed by a R or P letter. 905f210c2aSfgsch ! Non-match pattern, will not match if there's a prefix insn. 915f210c2aSfgsch b Non-matching operand, used for branches with 16-bit 925f210c2aSfgsch displacement. Only recognized by the disassembler. 935f210c2aSfgsch c 5-bit unsigned immediate in bits <4:0>. 945f210c2aSfgsch C 4-bit unsigned immediate in bits <3:0>. 955f210c2aSfgsch D General register in bits <15:12> and <3:0>. 965f210c2aSfgsch f List of flags in bits <15:12> and <3:0>. 975f210c2aSfgsch i 6-bit signed immediate in bits <5:0>. 985f210c2aSfgsch I 6-bit unsigned immediate in bits <5:0>. 995f210c2aSfgsch M Size modifier (B, W or D) for CLEAR instructions. 1005f210c2aSfgsch m Size modifier (B, W or D) in bits <5:4> 1015f210c2aSfgsch o [-128..127] word offset in bits <7:1> and <0>. Used by 8-bit 1025f210c2aSfgsch branch instructions. 1035f210c2aSfgsch O [-128..127] offset in bits <7:0>. Also matches a comma and a 1045f210c2aSfgsch general register after the expression. Used only for the BDAP 1055f210c2aSfgsch prefix insn. 1065f210c2aSfgsch P Special register in bits <15:12>. 1075f210c2aSfgsch p Indicates that the insn is a prefix insn. Must be first 1085f210c2aSfgsch character. 1095f210c2aSfgsch R General register in bits <15:12>. 1105f210c2aSfgsch r General register in bits <3:0>. 1115f210c2aSfgsch S Source operand in bit <10> and a prefix; a 3-operand prefix 1125f210c2aSfgsch without side-effect. 1135f210c2aSfgsch s Source operand in bits <10> and <3:0>, optionally with a 1145f210c2aSfgsch side-effect prefix. 1155f210c2aSfgsch x Register-dot-modifier, for example "r5.w" in bits <15:12> and <5:4>. 1165f210c2aSfgsch y Like 's' but do not allow an integer at assembly. 1175f210c2aSfgsch z Size modifier (B or W) in bit <4>. */ 1185f210c2aSfgsch 1195f210c2aSfgsch 1205f210c2aSfgsch /* Please note the order of the opcodes in this table is significant. 1215f210c2aSfgsch The assembler requires that all instances of the same mnemonic must 1225f210c2aSfgsch be consecutive. If they aren't, the assembler might not recognize 1235f210c2aSfgsch them, or may indicate and internal error. 1245f210c2aSfgsch 1255f210c2aSfgsch The disassembler should not normally care about the order of the 1265f210c2aSfgsch opcodes, but will prefer an earlier alternative if the "match-score" 1275f210c2aSfgsch (see cris-dis.c) is computed as equal. 1285f210c2aSfgsch 1295f210c2aSfgsch It should not be significant for proper execution that this table is 1305f210c2aSfgsch in alphabetical order, but please follow that convention for an easy 1315f210c2aSfgsch overview. */ 1325f210c2aSfgsch 1335f210c2aSfgsch const struct cris_opcode 1345f210c2aSfgsch cris_opcodes[] = 1355f210c2aSfgsch { 1365f210c2aSfgsch {"abs", 0x06B0, 0x0940, "r,R", 0, SIZE_NONE, 0, 1375f210c2aSfgsch cris_abs_op}, 1385f210c2aSfgsch 1395f210c2aSfgsch {"add", 0x0600, 0x09c0, "m r,R", 0, SIZE_NONE, 0, 1405f210c2aSfgsch cris_reg_mode_add_sub_cmp_and_or_move_op}, 1415f210c2aSfgsch 1425f210c2aSfgsch {"add", 0x0A00, 0x01c0, "m s,R", 0, SIZE_FIELD, 0, 1435f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 1445f210c2aSfgsch 1455f210c2aSfgsch {"add", 0x0A00, 0x01c0, "m S,D", 0, SIZE_NONE, 0, 1465f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 1475f210c2aSfgsch 1485f210c2aSfgsch {"add", 0x0a00, 0x05c0, "m S,R,r", 0, SIZE_NONE, 0, 1495f210c2aSfgsch cris_three_operand_add_sub_cmp_and_or_op}, 1505f210c2aSfgsch 1515f210c2aSfgsch {"addi", 0x0500, 0x0Ac0, "x,r", 0, SIZE_NONE, 0, 1525f210c2aSfgsch cris_addi_op}, 1535f210c2aSfgsch 1545f210c2aSfgsch {"addq", 0x0200, 0x0Dc0, "I,R", 0, SIZE_NONE, 0, 1555f210c2aSfgsch cris_quick_mode_add_sub_op}, 1565f210c2aSfgsch 1575f210c2aSfgsch {"adds", 0x0420, 0x0Bc0, "z r,R", 0, SIZE_NONE, 0, 1585f210c2aSfgsch cris_reg_mode_add_sub_cmp_and_or_move_op}, 1595f210c2aSfgsch 1605f210c2aSfgsch {"adds", 0x0820, 0x03c0, "z s,R", 0, SIZE_FIELD, 0, 1615f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 1625f210c2aSfgsch 1635f210c2aSfgsch {"adds", 0x0820, 0x03c0, "z S,D", 0, SIZE_NONE, 0, 1645f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 1655f210c2aSfgsch 1665f210c2aSfgsch {"adds", 0x0820, 0x07c0, "z S,R,r", 0, SIZE_NONE, 0, 1675f210c2aSfgsch cris_three_operand_add_sub_cmp_and_or_op}, 1685f210c2aSfgsch 1695f210c2aSfgsch {"addu", 0x0400, 0x0be0, "z r,R", 0, SIZE_NONE, 0, 1705f210c2aSfgsch cris_reg_mode_add_sub_cmp_and_or_move_op}, 1715f210c2aSfgsch 1725f210c2aSfgsch {"addu", 0x0800, 0x03e0, "z s,R", 0, SIZE_FIELD, 0, 1735f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 1745f210c2aSfgsch 1755f210c2aSfgsch {"addu", 0x0800, 0x03e0, "z S,D", 0, SIZE_NONE, 0, 1765f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 1775f210c2aSfgsch 1785f210c2aSfgsch {"addu", 0x0800, 0x07e0, "z S,R,r", 0, SIZE_NONE, 0, 1795f210c2aSfgsch cris_three_operand_add_sub_cmp_and_or_op}, 1805f210c2aSfgsch 1815f210c2aSfgsch {"and", 0x0700, 0x08C0, "m r,R", 0, SIZE_NONE, 0, 1825f210c2aSfgsch cris_reg_mode_add_sub_cmp_and_or_move_op}, 1835f210c2aSfgsch 1845f210c2aSfgsch {"and", 0x0B00, 0x00C0, "m s,R", 0, SIZE_FIELD, 0, 1855f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 1865f210c2aSfgsch 1875f210c2aSfgsch {"and", 0x0B00, 0x00C0, "m S,D", 0, SIZE_NONE, 0, 1885f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 1895f210c2aSfgsch 1905f210c2aSfgsch {"and", 0x0B00, 0x04C0, "m S,R,r", 0, SIZE_NONE, 0, 1915f210c2aSfgsch cris_three_operand_add_sub_cmp_and_or_op}, 1925f210c2aSfgsch 1935f210c2aSfgsch {"andq", 0x0300, 0x0CC0, "i,R", 0, SIZE_NONE, 0, 1945f210c2aSfgsch cris_quick_mode_and_cmp_move_or_op}, 1955f210c2aSfgsch 1965f210c2aSfgsch {"asr", 0x0780, 0x0840, "m r,R", 0, SIZE_NONE, 0, 1975f210c2aSfgsch cris_asr_op}, 1985f210c2aSfgsch 1995f210c2aSfgsch {"asrq", 0x03a0, 0x0c40, "c,R", 0, SIZE_NONE, 0, 2005f210c2aSfgsch cris_asrq_op}, 2015f210c2aSfgsch 2025f210c2aSfgsch {"ax", 0x15B0, 0xEA4F, "", 0, SIZE_NONE, 0, 2035f210c2aSfgsch cris_ax_ei_setf_op}, 2045f210c2aSfgsch 2055f210c2aSfgsch /* FIXME: Should use branch #defines. */ 2065f210c2aSfgsch {"b", 0x0dff, 0x0200, "b", 1, SIZE_NONE, 0, 2075f210c2aSfgsch cris_sixteen_bit_offset_branch_op}, 2085f210c2aSfgsch 2095f210c2aSfgsch {"ba", 2105f210c2aSfgsch BA_QUICK_OPCODE, 2115f210c2aSfgsch 0x0F00+(0xF-CC_A)*0x1000, "o", 1, SIZE_NONE, 0, 2125f210c2aSfgsch cris_eight_bit_offset_branch_op}, 2135f210c2aSfgsch 2145f210c2aSfgsch {"bcc", 2155f210c2aSfgsch BRANCH_QUICK_OPCODE+CC_CC*0x1000, 2165f210c2aSfgsch 0x0f00+(0xF-CC_CC)*0x1000, "o", 1, SIZE_NONE, 0, 2175f210c2aSfgsch cris_eight_bit_offset_branch_op}, 2185f210c2aSfgsch 2195f210c2aSfgsch {"bcs", 2205f210c2aSfgsch BRANCH_QUICK_OPCODE+CC_CS*0x1000, 2215f210c2aSfgsch 0x0f00+(0xF-CC_CS)*0x1000, "o", 1, SIZE_NONE, 0, 2225f210c2aSfgsch cris_eight_bit_offset_branch_op}, 2235f210c2aSfgsch 2245f210c2aSfgsch {"bdap", 2255f210c2aSfgsch BDAP_INDIR_OPCODE, BDAP_INDIR_Z_BITS, "pm s,R", 0, SIZE_FIELD, 0, 2265f210c2aSfgsch cris_bdap_prefix}, 2275f210c2aSfgsch 2285f210c2aSfgsch {"bdap", 2295f210c2aSfgsch BDAP_QUICK_OPCODE, BDAP_QUICK_Z_BITS, "pO", 0, SIZE_NONE, 0, 2305f210c2aSfgsch cris_quick_mode_bdap_prefix}, 2315f210c2aSfgsch 2325f210c2aSfgsch {"beq", 2335f210c2aSfgsch BRANCH_QUICK_OPCODE+CC_EQ*0x1000, 2345f210c2aSfgsch 0x0f00+(0xF-CC_EQ)*0x1000, "o", 1, SIZE_NONE, 0, 2355f210c2aSfgsch cris_eight_bit_offset_branch_op}, 2365f210c2aSfgsch 2375f210c2aSfgsch /* This is deliberately put before "bext" to trump it, even though not 2385f210c2aSfgsch in alphabetical order. */ 2395f210c2aSfgsch {"bwf", 2405f210c2aSfgsch BRANCH_QUICK_OPCODE+CC_EXT*0x1000, 2415f210c2aSfgsch 0x0f00+(0xF-CC_EXT)*0x1000, "o", 1, SIZE_NONE, 2425f210c2aSfgsch cris_ver_v10p, 2435f210c2aSfgsch cris_eight_bit_offset_branch_op}, 2445f210c2aSfgsch 2455f210c2aSfgsch {"bext", 2465f210c2aSfgsch BRANCH_QUICK_OPCODE+CC_EXT*0x1000, 2475f210c2aSfgsch 0x0f00+(0xF-CC_EXT)*0x1000, "o", 1, SIZE_NONE, 2485f210c2aSfgsch cris_ver_v0_3, 2495f210c2aSfgsch cris_eight_bit_offset_branch_op}, 2505f210c2aSfgsch 2515f210c2aSfgsch {"bge", 2525f210c2aSfgsch BRANCH_QUICK_OPCODE+CC_GE*0x1000, 2535f210c2aSfgsch 0x0f00+(0xF-CC_GE)*0x1000, "o", 1, SIZE_NONE, 0, 2545f210c2aSfgsch cris_eight_bit_offset_branch_op}, 2555f210c2aSfgsch 2565f210c2aSfgsch {"bgt", 2575f210c2aSfgsch BRANCH_QUICK_OPCODE+CC_GT*0x1000, 2585f210c2aSfgsch 0x0f00+(0xF-CC_GT)*0x1000, "o", 1, SIZE_NONE, 0, 2595f210c2aSfgsch cris_eight_bit_offset_branch_op}, 2605f210c2aSfgsch 2615f210c2aSfgsch {"bhi", 2625f210c2aSfgsch BRANCH_QUICK_OPCODE+CC_HI*0x1000, 2635f210c2aSfgsch 0x0f00+(0xF-CC_HI)*0x1000, "o", 1, SIZE_NONE, 0, 2645f210c2aSfgsch cris_eight_bit_offset_branch_op}, 2655f210c2aSfgsch 2665f210c2aSfgsch {"bhs", 2675f210c2aSfgsch BRANCH_QUICK_OPCODE+CC_HS*0x1000, 2685f210c2aSfgsch 0x0f00+(0xF-CC_HS)*0x1000, "o", 1, SIZE_NONE, 0, 2695f210c2aSfgsch cris_eight_bit_offset_branch_op}, 2705f210c2aSfgsch 2715f210c2aSfgsch {"biap", BIAP_OPCODE, BIAP_Z_BITS, "pm r,R", 0, SIZE_NONE, 0, 2725f210c2aSfgsch cris_biap_prefix}, 2735f210c2aSfgsch 2745f210c2aSfgsch {"ble", 2755f210c2aSfgsch BRANCH_QUICK_OPCODE+CC_LE*0x1000, 2765f210c2aSfgsch 0x0f00+(0xF-CC_LE)*0x1000, "o", 1, SIZE_NONE, 0, 2775f210c2aSfgsch cris_eight_bit_offset_branch_op}, 2785f210c2aSfgsch 2795f210c2aSfgsch {"blo", 2805f210c2aSfgsch BRANCH_QUICK_OPCODE+CC_LO*0x1000, 2815f210c2aSfgsch 0x0f00+(0xF-CC_LO)*0x1000, "o", 1, SIZE_NONE, 0, 2825f210c2aSfgsch cris_eight_bit_offset_branch_op}, 2835f210c2aSfgsch 2845f210c2aSfgsch {"bls", 2855f210c2aSfgsch BRANCH_QUICK_OPCODE+CC_LS*0x1000, 2865f210c2aSfgsch 0x0f00+(0xF-CC_LS)*0x1000, "o", 1, SIZE_NONE, 0, 2875f210c2aSfgsch cris_eight_bit_offset_branch_op}, 2885f210c2aSfgsch 2895f210c2aSfgsch {"blt", 2905f210c2aSfgsch BRANCH_QUICK_OPCODE+CC_LT*0x1000, 2915f210c2aSfgsch 0x0f00+(0xF-CC_LT)*0x1000, "o", 1, SIZE_NONE, 0, 2925f210c2aSfgsch cris_eight_bit_offset_branch_op}, 2935f210c2aSfgsch 2945f210c2aSfgsch {"bmi", 2955f210c2aSfgsch BRANCH_QUICK_OPCODE+CC_MI*0x1000, 2965f210c2aSfgsch 0x0f00+(0xF-CC_MI)*0x1000, "o", 1, SIZE_NONE, 0, 2975f210c2aSfgsch cris_eight_bit_offset_branch_op}, 2985f210c2aSfgsch 2995f210c2aSfgsch {"bmod", 0x0ab0, 0x0140, "s,R", 0, SIZE_FIX_32, 3005f210c2aSfgsch cris_ver_sim, 3015f210c2aSfgsch cris_not_implemented_op}, 3025f210c2aSfgsch 3035f210c2aSfgsch {"bmod", 0x0ab0, 0x0140, "S,D", 0, SIZE_NONE, 3045f210c2aSfgsch cris_ver_sim, 3055f210c2aSfgsch cris_not_implemented_op}, 3065f210c2aSfgsch 3075f210c2aSfgsch {"bmod", 0x0ab0, 0x0540, "S,R,r", 0, SIZE_NONE, 3085f210c2aSfgsch cris_ver_sim, 3095f210c2aSfgsch cris_not_implemented_op}, 3105f210c2aSfgsch 3115f210c2aSfgsch {"bne", 3125f210c2aSfgsch BRANCH_QUICK_OPCODE+CC_NE*0x1000, 3135f210c2aSfgsch 0x0f00+(0xF-CC_NE)*0x1000, "o", 1, SIZE_NONE, 0, 3145f210c2aSfgsch cris_eight_bit_offset_branch_op}, 3155f210c2aSfgsch 3165f210c2aSfgsch {"bound", 0x05c0, 0x0A00, "m r,R", 0, SIZE_NONE, 0, 3175f210c2aSfgsch cris_two_operand_bound_op}, 3185f210c2aSfgsch {"bound", 0x09c0, 0x0200, "m s,R", 0, SIZE_FIELD, 0, 3195f210c2aSfgsch cris_two_operand_bound_op}, 3205f210c2aSfgsch {"bound", 0x09c0, 0x0200, "m S,D", 0, SIZE_NONE, 0, 3215f210c2aSfgsch cris_two_operand_bound_op}, 3225f210c2aSfgsch {"bound", 0x09c0, 0x0600, "m S,R,r", 0, SIZE_NONE, 0, 3235f210c2aSfgsch cris_three_operand_bound_op}, 3245f210c2aSfgsch {"bpl", 3255f210c2aSfgsch BRANCH_QUICK_OPCODE+CC_PL*0x1000, 3265f210c2aSfgsch 0x0f00+(0xF-CC_PL)*0x1000, "o", 1, SIZE_NONE, 0, 3275f210c2aSfgsch cris_eight_bit_offset_branch_op}, 3285f210c2aSfgsch 3295f210c2aSfgsch {"break", 0xe930, 0x16c0, "C", 0, SIZE_NONE, 3305f210c2aSfgsch cris_ver_v3p, 3315f210c2aSfgsch cris_break_op}, 3325f210c2aSfgsch 3335f210c2aSfgsch {"bstore", 0x0af0, 0x0100, "s,R", 0, SIZE_FIX_32, 3345f210c2aSfgsch cris_ver_warning, 3355f210c2aSfgsch cris_not_implemented_op}, 3365f210c2aSfgsch 3375f210c2aSfgsch {"bstore", 0x0af0, 0x0100, "S,D", 0, SIZE_NONE, 3385f210c2aSfgsch cris_ver_warning, 3395f210c2aSfgsch cris_not_implemented_op}, 3405f210c2aSfgsch 3415f210c2aSfgsch {"bstore", 0x0af0, 0x0500, "S,R,r", 0, SIZE_NONE, 3425f210c2aSfgsch cris_ver_warning, 3435f210c2aSfgsch cris_not_implemented_op}, 3445f210c2aSfgsch 3455f210c2aSfgsch {"btst", 0x04F0, 0x0B00, "r,R", 0, SIZE_NONE, 0, 3465f210c2aSfgsch cris_btst_nop_op}, 3475f210c2aSfgsch {"btstq", 0x0380, 0x0C60, "c,R", 0, SIZE_NONE, 0, 3485f210c2aSfgsch cris_btst_nop_op}, 3495f210c2aSfgsch {"bvc", 3505f210c2aSfgsch BRANCH_QUICK_OPCODE+CC_VC*0x1000, 3515f210c2aSfgsch 0x0f00+(0xF-CC_VC)*0x1000, "o", 1, SIZE_NONE, 0, 3525f210c2aSfgsch cris_eight_bit_offset_branch_op}, 3535f210c2aSfgsch 3545f210c2aSfgsch {"bvs", 3555f210c2aSfgsch BRANCH_QUICK_OPCODE+CC_VS*0x1000, 3565f210c2aSfgsch 0x0f00+(0xF-CC_VS)*0x1000, "o", 1, SIZE_NONE, 0, 3575f210c2aSfgsch cris_eight_bit_offset_branch_op}, 3585f210c2aSfgsch 3595f210c2aSfgsch {"clear", 0x0670, 0x3980, "M r", 0, SIZE_NONE, 0, 3605f210c2aSfgsch cris_reg_mode_clear_op}, 3615f210c2aSfgsch 3625f210c2aSfgsch {"clear", 0x0A70, 0x3180, "M y", 0, SIZE_NONE, 0, 3635f210c2aSfgsch cris_none_reg_mode_clear_test_op}, 3645f210c2aSfgsch 3655f210c2aSfgsch {"clear", 0x0A70, 0x3180, "M S", 0, SIZE_NONE, 0, 3665f210c2aSfgsch cris_none_reg_mode_clear_test_op}, 3675f210c2aSfgsch 3685f210c2aSfgsch {"clearf", 0x05F0, 0x0A00, "f", 0, SIZE_NONE, 0, 3695f210c2aSfgsch cris_clearf_di_op}, 3705f210c2aSfgsch 3715f210c2aSfgsch {"cmp", 0x06C0, 0x0900, "m r,R", 0, SIZE_NONE, 0, 3725f210c2aSfgsch cris_reg_mode_add_sub_cmp_and_or_move_op}, 3735f210c2aSfgsch 3745f210c2aSfgsch {"cmp", 0x0Ac0, 0x0100, "m s,R", 0, SIZE_FIELD, 0, 3755f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 3765f210c2aSfgsch 3775f210c2aSfgsch {"cmp", 0x0Ac0, 0x0100, "m S,D", 0, SIZE_NONE, 0, 3785f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 3795f210c2aSfgsch 3805f210c2aSfgsch {"cmpq", 0x02C0, 0x0D00, "i,R", 0, SIZE_NONE, 0, 3815f210c2aSfgsch cris_quick_mode_and_cmp_move_or_op}, 3825f210c2aSfgsch 3835f210c2aSfgsch {"cmps", 0x08e0, 0x0300, "z s,R", 0, SIZE_FIELD, 0, 3845f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 3855f210c2aSfgsch 3865f210c2aSfgsch {"cmps", 0x08e0, 0x0300, "z S,D", 0, SIZE_NONE, 0, 3875f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 3885f210c2aSfgsch 3895f210c2aSfgsch {"cmpu", 0x08c0, 0x0320, "z s,R" , 0, SIZE_FIELD, 0, 3905f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 3915f210c2aSfgsch 3925f210c2aSfgsch {"cmpu", 0x08c0, 0x0320, "z S,D", 0, SIZE_NONE, 0, 3935f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 3945f210c2aSfgsch 3955f210c2aSfgsch {"di", 0x25F0, 0xDA0F, "", 0, SIZE_NONE, 0, 3965f210c2aSfgsch cris_clearf_di_op}, 3975f210c2aSfgsch 3985f210c2aSfgsch {"dip", DIP_OPCODE, DIP_Z_BITS, "ps", 0, SIZE_FIX_32, 0, 3995f210c2aSfgsch cris_dip_prefix}, 4005f210c2aSfgsch 4015f210c2aSfgsch {"div", 0x0980, 0x0640, "m R,r", 0, SIZE_FIELD, 0, 4025f210c2aSfgsch cris_not_implemented_op}, 4035f210c2aSfgsch 4045f210c2aSfgsch {"dstep", 0x06f0, 0x0900, "r,R", 0, SIZE_NONE, 0, 4055f210c2aSfgsch cris_dstep_logshift_mstep_neg_not_op}, 4065f210c2aSfgsch 4075f210c2aSfgsch {"ei", 0x25B0, 0xDA4F, "", 0, SIZE_NONE, 0, 4085f210c2aSfgsch cris_ax_ei_setf_op}, 4095f210c2aSfgsch 4105f210c2aSfgsch {"jbrc", 0x69b0, 0x9640, "r", 0, SIZE_NONE, 4115f210c2aSfgsch cris_ver_v8p, 4125f210c2aSfgsch cris_reg_mode_jump_op}, 4135f210c2aSfgsch 4145f210c2aSfgsch {"jbrc", 0x6930, 0x92c0, "s", 0, SIZE_FIX_32, 4155f210c2aSfgsch cris_ver_v8p, 4165f210c2aSfgsch cris_none_reg_mode_jump_op}, 4175f210c2aSfgsch 4185f210c2aSfgsch {"jbrc", 0x6930, 0x92c0, "S", 0, SIZE_NONE, 4195f210c2aSfgsch cris_ver_v8p, 4205f210c2aSfgsch cris_none_reg_mode_jump_op}, 4215f210c2aSfgsch 4225f210c2aSfgsch {"jir", 0xA9b0, 0x5640, "r", 0, SIZE_NONE, 0, 4235f210c2aSfgsch cris_reg_mode_jump_op}, 4245f210c2aSfgsch 4255f210c2aSfgsch {"jir", 0xA930, 0x52c0, "s", 0, SIZE_FIX_32, 0, 4265f210c2aSfgsch cris_none_reg_mode_jump_op}, 4275f210c2aSfgsch 4285f210c2aSfgsch {"jir", 0xA930, 0x52c0, "S", 0, SIZE_NONE, 0, 4295f210c2aSfgsch cris_none_reg_mode_jump_op}, 4305f210c2aSfgsch 4315f210c2aSfgsch {"jirc", 0x29b0, 0xd640, "r", 0, SIZE_NONE, 4325f210c2aSfgsch cris_ver_v8p, 4335f210c2aSfgsch cris_reg_mode_jump_op}, 4345f210c2aSfgsch 4355f210c2aSfgsch {"jirc", 0x2930, 0xd2c0, "s", 0, SIZE_FIX_32, 4365f210c2aSfgsch cris_ver_v8p, 4375f210c2aSfgsch cris_none_reg_mode_jump_op}, 4385f210c2aSfgsch 4395f210c2aSfgsch {"jirc", 0x2930, 0xd2c0, "S", 0, SIZE_NONE, 4405f210c2aSfgsch cris_ver_v8p, 4415f210c2aSfgsch cris_none_reg_mode_jump_op}, 4425f210c2aSfgsch 4435f210c2aSfgsch {"jsr", 0xB9b0, 0x4640, "r", 0, SIZE_NONE, 0, 4445f210c2aSfgsch cris_reg_mode_jump_op}, 4455f210c2aSfgsch 4465f210c2aSfgsch {"jsr", 0xB930, 0x42c0, "s", 0, SIZE_FIX_32, 0, 4475f210c2aSfgsch cris_none_reg_mode_jump_op}, 4485f210c2aSfgsch 4495f210c2aSfgsch {"jsr", 0xB930, 0x42c0, "S", 0, SIZE_NONE, 0, 4505f210c2aSfgsch cris_none_reg_mode_jump_op}, 4515f210c2aSfgsch 4525f210c2aSfgsch {"jsrc", 0x39b0, 0xc640, "r", 0, SIZE_NONE, 4535f210c2aSfgsch cris_ver_v8p, 4545f210c2aSfgsch cris_reg_mode_jump_op}, 4555f210c2aSfgsch 4565f210c2aSfgsch {"jsrc", 0x3930, 0xc2c0, "s", 0, SIZE_FIX_32, 4575f210c2aSfgsch cris_ver_v8p, 4585f210c2aSfgsch cris_none_reg_mode_jump_op}, 4595f210c2aSfgsch 4605f210c2aSfgsch {"jsrc", 0x3930, 0xc2c0, "S", 0, SIZE_NONE, 4615f210c2aSfgsch cris_ver_v8p, 4625f210c2aSfgsch cris_none_reg_mode_jump_op}, 4635f210c2aSfgsch 4645f210c2aSfgsch {"jump", 0x09b0, 0xF640, "r", 0, SIZE_NONE, 0, 4655f210c2aSfgsch cris_reg_mode_jump_op}, 4665f210c2aSfgsch 4675f210c2aSfgsch {"jump", 4685f210c2aSfgsch JUMP_INDIR_OPCODE, JUMP_INDIR_Z_BITS, "s", 0, SIZE_FIX_32, 0, 4695f210c2aSfgsch cris_none_reg_mode_jump_op}, 4705f210c2aSfgsch 4715f210c2aSfgsch {"jump", 4725f210c2aSfgsch JUMP_INDIR_OPCODE, JUMP_INDIR_Z_BITS, "S", 0, SIZE_NONE, 0, 4735f210c2aSfgsch cris_none_reg_mode_jump_op}, 4745f210c2aSfgsch 4755f210c2aSfgsch {"jmpu", 0x8930, 0x72c0, "s", 0, SIZE_FIX_32, 4765f210c2aSfgsch cris_ver_v10p, 4775f210c2aSfgsch cris_none_reg_mode_jump_op}, 4785f210c2aSfgsch 4795f210c2aSfgsch {"jmpu", 0x8930, 0x72c0, "S", 0, SIZE_NONE, 4805f210c2aSfgsch cris_ver_v10p, 4815f210c2aSfgsch cris_none_reg_mode_jump_op}, 4825f210c2aSfgsch 4835f210c2aSfgsch {"lsl", 0x04C0, 0x0B00, "m r,R", 0, SIZE_NONE, 0, 4845f210c2aSfgsch cris_dstep_logshift_mstep_neg_not_op}, 4855f210c2aSfgsch 4865f210c2aSfgsch {"lslq", 0x03c0, 0x0C20, "c,R", 0, SIZE_NONE, 0, 4875f210c2aSfgsch cris_dstep_logshift_mstep_neg_not_op}, 4885f210c2aSfgsch 4895f210c2aSfgsch {"lsr", 0x07C0, 0x0800, "m r,R", 0, SIZE_NONE, 0, 4905f210c2aSfgsch cris_dstep_logshift_mstep_neg_not_op}, 4915f210c2aSfgsch 4925f210c2aSfgsch {"lsrq", 0x03e0, 0x0C00, "c,R", 0, SIZE_NONE, 0, 4935f210c2aSfgsch cris_dstep_logshift_mstep_neg_not_op}, 4945f210c2aSfgsch 4955f210c2aSfgsch {"lz", 0x0730, 0x08C0, "r,R", 0, SIZE_NONE, 4965f210c2aSfgsch cris_ver_v3p, 4975f210c2aSfgsch cris_not_implemented_op}, 4985f210c2aSfgsch 4995f210c2aSfgsch {"move", 0x0640, 0x0980, "m r,R", 0, SIZE_NONE, 0, 5005f210c2aSfgsch cris_reg_mode_add_sub_cmp_and_or_move_op}, 5015f210c2aSfgsch 5025f210c2aSfgsch {"move", 0x0630, 0x09c0, "r,P", 0, SIZE_NONE, 0, 5035f210c2aSfgsch cris_move_to_preg_op}, 5045f210c2aSfgsch 5055f210c2aSfgsch {"move", 0x0670, 0x0980, "P,r", 0, SIZE_NONE, 0, 5065f210c2aSfgsch cris_reg_mode_move_from_preg_op}, 5075f210c2aSfgsch 5085f210c2aSfgsch {"move", 0x0BC0, 0x0000, "m R,y", 0, SIZE_FIELD, 0, 5095f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 5105f210c2aSfgsch 5115f210c2aSfgsch {"move", 0x0BC0, 0x0000, "m D,S", 0, SIZE_NONE, 0, 5125f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 5135f210c2aSfgsch 5145f210c2aSfgsch {"move", 0x0A40, 0x0180, "m s,R", 0, SIZE_FIELD, 0, 5155f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 5165f210c2aSfgsch 5175f210c2aSfgsch {"move", 0x0A40, 0x0180, "m S,D", 0, SIZE_NONE, 0, 5185f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 5195f210c2aSfgsch 5205f210c2aSfgsch {"move", 0x0A30, 0x01c0, "s,P", 0, SIZE_SPEC_REG, 0, 5215f210c2aSfgsch cris_move_to_preg_op}, 5225f210c2aSfgsch 5235f210c2aSfgsch {"move", 0x0A30, 0x01c0, "S,P", 0, SIZE_NONE, 0, 5245f210c2aSfgsch cris_move_to_preg_op}, 5255f210c2aSfgsch 5265f210c2aSfgsch {"move", 0x0A70, 0x0180, "P,y", 0, SIZE_SPEC_REG, 0, 5275f210c2aSfgsch cris_none_reg_mode_move_from_preg_op}, 5285f210c2aSfgsch 5295f210c2aSfgsch {"move", 0x0A70, 0x0180, "P,S", 0, SIZE_NONE, 0, 5305f210c2aSfgsch cris_none_reg_mode_move_from_preg_op}, 5315f210c2aSfgsch 5325f210c2aSfgsch {"movem", 0x0BF0, 0x0000, "R,y", 0, SIZE_FIX_32, 0, 5335f210c2aSfgsch cris_move_reg_to_mem_movem_op}, 5345f210c2aSfgsch 5355f210c2aSfgsch {"movem", 0x0BF0, 0x0000, "D,S", 0, SIZE_NONE, 0, 5365f210c2aSfgsch cris_move_reg_to_mem_movem_op}, 5375f210c2aSfgsch 5385f210c2aSfgsch {"movem", 0x0BB0, 0x0040, "s,R", 0, SIZE_FIX_32, 0, 5395f210c2aSfgsch cris_move_mem_to_reg_movem_op}, 5405f210c2aSfgsch 5415f210c2aSfgsch {"movem", 0x0BB0, 0x0040, "S,D", 0, SIZE_NONE, 0, 5425f210c2aSfgsch cris_move_mem_to_reg_movem_op}, 5435f210c2aSfgsch 5445f210c2aSfgsch {"moveq", 0x0240, 0x0D80, "i,R", 0, SIZE_NONE, 0, 5455f210c2aSfgsch cris_quick_mode_and_cmp_move_or_op}, 5465f210c2aSfgsch 5475f210c2aSfgsch {"movs", 0x0460, 0x0B80, "z r,R", 0, SIZE_NONE, 0, 5485f210c2aSfgsch cris_reg_mode_add_sub_cmp_and_or_move_op}, 5495f210c2aSfgsch 5505f210c2aSfgsch {"movs", 0x0860, 0x0380, "z s,R", 0, SIZE_FIELD, 0, 5515f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 5525f210c2aSfgsch 5535f210c2aSfgsch {"movs", 0x0860, 0x0380, "z S,D", 0, SIZE_NONE, 0, 5545f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 5555f210c2aSfgsch 5565f210c2aSfgsch {"movu", 0x0440, 0x0Ba0, "z r,R", 0, SIZE_NONE, 0, 5575f210c2aSfgsch cris_reg_mode_add_sub_cmp_and_or_move_op}, 5585f210c2aSfgsch 5595f210c2aSfgsch {"movu", 0x0840, 0x03a0, "z s,R", 0, SIZE_FIELD, 0, 5605f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 5615f210c2aSfgsch 5625f210c2aSfgsch {"movu", 0x0840, 0x03a0, "z S,D", 0, SIZE_NONE, 0, 5635f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 5645f210c2aSfgsch 5655f210c2aSfgsch {"mstep", 0x07f0, 0x0800, "r,R", 0, SIZE_NONE, 0, 5665f210c2aSfgsch cris_dstep_logshift_mstep_neg_not_op}, 5675f210c2aSfgsch 5685f210c2aSfgsch {"muls", 0x0d00, 0x02c0, "m r,R", 0, SIZE_NONE, 5695f210c2aSfgsch cris_ver_v10p, 5705f210c2aSfgsch cris_muls_op}, 5715f210c2aSfgsch 5725f210c2aSfgsch {"mulu", 0x0900, 0x06c0, "m r,R", 0, SIZE_NONE, 5735f210c2aSfgsch cris_ver_v10p, 5745f210c2aSfgsch cris_mulu_op}, 5755f210c2aSfgsch 5765f210c2aSfgsch {"neg", 0x0580, 0x0A40, "m r,R", 0, SIZE_NONE, 0, 5775f210c2aSfgsch cris_dstep_logshift_mstep_neg_not_op}, 5785f210c2aSfgsch 5795f210c2aSfgsch {"nop", NOP_OPCODE, NOP_Z_BITS, "", 0, SIZE_NONE, 0, 5805f210c2aSfgsch cris_btst_nop_op}, 5815f210c2aSfgsch 5825f210c2aSfgsch {"not", 0x8770, 0x7880, "r", 0, SIZE_NONE, 0, 5835f210c2aSfgsch cris_dstep_logshift_mstep_neg_not_op}, 5845f210c2aSfgsch 5855f210c2aSfgsch {"or", 0x0740, 0x0880, "m r,R", 0, SIZE_NONE, 0, 5865f210c2aSfgsch cris_reg_mode_add_sub_cmp_and_or_move_op}, 5875f210c2aSfgsch 5885f210c2aSfgsch {"or", 0x0B40, 0x0080, "m s,R", 0, SIZE_FIELD, 0, 5895f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 5905f210c2aSfgsch 5915f210c2aSfgsch {"or", 0x0B40, 0x0080, "m S,D", 0, SIZE_NONE, 0, 5925f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 5935f210c2aSfgsch 5945f210c2aSfgsch {"or", 0x0B40, 0x0480, "m S,R,r", 0, SIZE_NONE, 0, 5955f210c2aSfgsch cris_three_operand_add_sub_cmp_and_or_op}, 5965f210c2aSfgsch 5975f210c2aSfgsch {"orq", 0x0340, 0x0C80, "i,R", 0, SIZE_NONE, 0, 5985f210c2aSfgsch cris_quick_mode_and_cmp_move_or_op}, 5995f210c2aSfgsch 6005f210c2aSfgsch {"pop", 0x0E6E, 0x0191, "!R", 0, SIZE_NONE, 0, 6015f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 6025f210c2aSfgsch 6035f210c2aSfgsch {"pop", 0x0e3e, 0x01c1, "!P", 0, SIZE_NONE, 0, 6045f210c2aSfgsch cris_none_reg_mode_move_from_preg_op}, 6055f210c2aSfgsch 6065f210c2aSfgsch {"push", 0x0FEE, 0x0011, "BR", 0, SIZE_NONE, 0, 6075f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 6085f210c2aSfgsch 6095f210c2aSfgsch {"push", 0x0E7E, 0x0181, "BP", 0, SIZE_NONE, 0, 6105f210c2aSfgsch cris_move_to_preg_op}, 6115f210c2aSfgsch 6125f210c2aSfgsch {"rbf", 0x3b30, 0xc0c0, "y", 0, SIZE_NONE, 6135f210c2aSfgsch cris_ver_v10p, 6145f210c2aSfgsch cris_not_implemented_op}, 6155f210c2aSfgsch 6165f210c2aSfgsch {"rbf", 0x3b30, 0xc0c0, "S", 0, SIZE_NONE, 6175f210c2aSfgsch cris_ver_v10p, 6185f210c2aSfgsch cris_not_implemented_op}, 6195f210c2aSfgsch 6205f210c2aSfgsch {"ret", 0xB67F, 0x4980, "", 1, SIZE_NONE, 0, 6215f210c2aSfgsch cris_reg_mode_move_from_preg_op}, 6225f210c2aSfgsch 6235f210c2aSfgsch {"retb", 0xe67f, 0x1980, "", 1, SIZE_NONE, 0, 6245f210c2aSfgsch cris_reg_mode_move_from_preg_op}, 6255f210c2aSfgsch 6265f210c2aSfgsch {"reti", 0xA67F, 0x5980, "", 1, SIZE_NONE, 0, 6275f210c2aSfgsch cris_reg_mode_move_from_preg_op}, 6285f210c2aSfgsch 6295f210c2aSfgsch {"sbfs", 0x3b70, 0xc080, "y", 0, SIZE_NONE, 6305f210c2aSfgsch cris_ver_v10p, 6315f210c2aSfgsch cris_not_implemented_op}, 6325f210c2aSfgsch 6335f210c2aSfgsch {"sbfs", 0x3b70, 0xc080, "S", 0, SIZE_NONE, 6345f210c2aSfgsch cris_ver_v10p, 6355f210c2aSfgsch cris_not_implemented_op}, 6365f210c2aSfgsch 6375f210c2aSfgsch {"sa", 6385f210c2aSfgsch 0x0530+CC_A*0x1000, 6395f210c2aSfgsch 0x0AC0+(0xf-CC_A)*0x1000, "r", 0, SIZE_NONE, 0, 6405f210c2aSfgsch cris_scc_op}, 6415f210c2aSfgsch 6425f210c2aSfgsch {"scc", 6435f210c2aSfgsch 0x0530+CC_CC*0x1000, 6445f210c2aSfgsch 0x0AC0+(0xf-CC_CC)*0x1000, "r", 0, SIZE_NONE, 0, 6455f210c2aSfgsch cris_scc_op}, 6465f210c2aSfgsch 6475f210c2aSfgsch {"scs", 6485f210c2aSfgsch 0x0530+CC_CS*0x1000, 6495f210c2aSfgsch 0x0AC0+(0xf-CC_CS)*0x1000, "r", 0, SIZE_NONE, 0, 6505f210c2aSfgsch cris_scc_op}, 6515f210c2aSfgsch 6525f210c2aSfgsch {"seq", 6535f210c2aSfgsch 0x0530+CC_EQ*0x1000, 6545f210c2aSfgsch 0x0AC0+(0xf-CC_EQ)*0x1000, "r", 0, SIZE_NONE, 0, 6555f210c2aSfgsch cris_scc_op}, 6565f210c2aSfgsch 6575f210c2aSfgsch {"setf", 0x05b0, 0x0A40, "f", 0, SIZE_NONE, 0, 6585f210c2aSfgsch cris_ax_ei_setf_op}, 6595f210c2aSfgsch 6605f210c2aSfgsch /* Need to have "swf" in front of "sext" so it is the one displayed in 6615f210c2aSfgsch disassembly. */ 6625f210c2aSfgsch {"swf", 6635f210c2aSfgsch 0x0530+CC_EXT*0x1000, 6645f210c2aSfgsch 0x0AC0+(0xf-CC_EXT)*0x1000, "r", 0, SIZE_NONE, 6655f210c2aSfgsch cris_ver_v10p, 6665f210c2aSfgsch cris_scc_op}, 6675f210c2aSfgsch 6685f210c2aSfgsch {"sext", 6695f210c2aSfgsch 0x0530+CC_EXT*0x1000, 6705f210c2aSfgsch 0x0AC0+(0xf-CC_EXT)*0x1000, "r", 0, SIZE_NONE, 6715f210c2aSfgsch cris_ver_v0_3, 6725f210c2aSfgsch cris_scc_op}, 6735f210c2aSfgsch 6745f210c2aSfgsch {"sge", 6755f210c2aSfgsch 0x0530+CC_GE*0x1000, 6765f210c2aSfgsch 0x0AC0+(0xf-CC_GE)*0x1000, "r", 0, SIZE_NONE, 0, 6775f210c2aSfgsch cris_scc_op}, 6785f210c2aSfgsch 6795f210c2aSfgsch {"sgt", 6805f210c2aSfgsch 0x0530+CC_GT*0x1000, 6815f210c2aSfgsch 0x0AC0+(0xf-CC_GT)*0x1000, "r", 0, SIZE_NONE, 0, 6825f210c2aSfgsch cris_scc_op}, 6835f210c2aSfgsch 6845f210c2aSfgsch {"shi", 6855f210c2aSfgsch 0x0530+CC_HI*0x1000, 6865f210c2aSfgsch 0x0AC0+(0xf-CC_HI)*0x1000, "r", 0, SIZE_NONE, 0, 6875f210c2aSfgsch cris_scc_op}, 6885f210c2aSfgsch 6895f210c2aSfgsch {"shs", 6905f210c2aSfgsch 0x0530+CC_HS*0x1000, 6915f210c2aSfgsch 0x0AC0+(0xf-CC_HS)*0x1000, "r", 0, SIZE_NONE, 0, 6925f210c2aSfgsch cris_scc_op}, 6935f210c2aSfgsch 6945f210c2aSfgsch {"sle", 6955f210c2aSfgsch 0x0530+CC_LE*0x1000, 6965f210c2aSfgsch 0x0AC0+(0xf-CC_LE)*0x1000, "r", 0, SIZE_NONE, 0, 6975f210c2aSfgsch cris_scc_op}, 6985f210c2aSfgsch 6995f210c2aSfgsch {"slo", 7005f210c2aSfgsch 0x0530+CC_LO*0x1000, 7015f210c2aSfgsch 0x0AC0+(0xf-CC_LO)*0x1000, "r", 0, SIZE_NONE, 0, 7025f210c2aSfgsch cris_scc_op}, 7035f210c2aSfgsch 7045f210c2aSfgsch {"sls", 7055f210c2aSfgsch 0x0530+CC_LS*0x1000, 7065f210c2aSfgsch 0x0AC0+(0xf-CC_LS)*0x1000, "r", 0, SIZE_NONE, 0, 7075f210c2aSfgsch cris_scc_op}, 7085f210c2aSfgsch 7095f210c2aSfgsch {"slt", 7105f210c2aSfgsch 0x0530+CC_LT*0x1000, 7115f210c2aSfgsch 0x0AC0+(0xf-CC_LT)*0x1000, "r", 0, SIZE_NONE, 0, 7125f210c2aSfgsch cris_scc_op}, 7135f210c2aSfgsch 7145f210c2aSfgsch {"smi", 7155f210c2aSfgsch 0x0530+CC_MI*0x1000, 7165f210c2aSfgsch 0x0AC0+(0xf-CC_MI)*0x1000, "r", 0, SIZE_NONE, 0, 7175f210c2aSfgsch cris_scc_op}, 7185f210c2aSfgsch 7195f210c2aSfgsch {"sne", 7205f210c2aSfgsch 0x0530+CC_NE*0x1000, 7215f210c2aSfgsch 0x0AC0+(0xf-CC_NE)*0x1000, "r", 0, SIZE_NONE, 0, 7225f210c2aSfgsch cris_scc_op}, 7235f210c2aSfgsch 7245f210c2aSfgsch {"spl", 7255f210c2aSfgsch 0x0530+CC_PL*0x1000, 7265f210c2aSfgsch 0x0AC0+(0xf-CC_PL)*0x1000, "r", 0, SIZE_NONE, 0, 7275f210c2aSfgsch cris_scc_op}, 7285f210c2aSfgsch 7295f210c2aSfgsch {"sub", 0x0680, 0x0940, "m r,R", 0, SIZE_NONE, 0, 7305f210c2aSfgsch cris_reg_mode_add_sub_cmp_and_or_move_op}, 7315f210c2aSfgsch 7325f210c2aSfgsch {"sub", 0x0a80, 0x0140, "m s,R", 0, SIZE_FIELD, 0, 7335f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 7345f210c2aSfgsch 7355f210c2aSfgsch {"sub", 0x0a80, 0x0140, "m S,D", 0, SIZE_NONE, 0, 7365f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 7375f210c2aSfgsch 7385f210c2aSfgsch {"sub", 0x0a80, 0x0540, "m S,R,r", 0, SIZE_NONE, 0, 7395f210c2aSfgsch cris_three_operand_add_sub_cmp_and_or_op}, 7405f210c2aSfgsch 7415f210c2aSfgsch {"subq", 0x0280, 0x0d40, "I,R", 0, SIZE_NONE, 0, 7425f210c2aSfgsch cris_quick_mode_add_sub_op}, 7435f210c2aSfgsch 7445f210c2aSfgsch {"subs", 0x04a0, 0x0b40, "z r,R", 0, SIZE_NONE, 0, 7455f210c2aSfgsch cris_reg_mode_add_sub_cmp_and_or_move_op}, 7465f210c2aSfgsch 7475f210c2aSfgsch {"subs", 0x08a0, 0x0340, "z s,R", 0, SIZE_FIELD, 0, 7485f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 7495f210c2aSfgsch 7505f210c2aSfgsch {"subs", 0x08a0, 0x0340, "z S,D", 0, SIZE_NONE, 0, 7515f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 7525f210c2aSfgsch 7535f210c2aSfgsch {"subs", 0x08a0, 0x0740, "z S,R,r", 0, SIZE_NONE, 0, 7545f210c2aSfgsch cris_three_operand_add_sub_cmp_and_or_op}, 7555f210c2aSfgsch 7565f210c2aSfgsch {"subu", 0x0480, 0x0b60, "z r,R", 0, SIZE_NONE, 0, 7575f210c2aSfgsch cris_reg_mode_add_sub_cmp_and_or_move_op}, 7585f210c2aSfgsch 7595f210c2aSfgsch {"subu", 0x0880, 0x0360, "z s,R", 0, SIZE_FIELD, 0, 7605f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 7615f210c2aSfgsch 7625f210c2aSfgsch {"subu", 0x0880, 0x0360, "z S,D", 0, SIZE_NONE, 0, 7635f210c2aSfgsch cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 7645f210c2aSfgsch 7655f210c2aSfgsch {"subu", 0x0880, 0x0760, "z S,R,r", 0, SIZE_NONE, 0, 7665f210c2aSfgsch cris_three_operand_add_sub_cmp_and_or_op}, 7675f210c2aSfgsch 7685f210c2aSfgsch {"svc", 7695f210c2aSfgsch 0x0530+CC_VC*0x1000, 7705f210c2aSfgsch 0x0AC0+(0xf-CC_VC)*0x1000, "r", 0, SIZE_NONE, 0, 7715f210c2aSfgsch cris_scc_op}, 7725f210c2aSfgsch 7735f210c2aSfgsch {"svs", 7745f210c2aSfgsch 0x0530+CC_VS*0x1000, 7755f210c2aSfgsch 0x0AC0+(0xf-CC_VS)*0x1000, "r", 0, SIZE_NONE, 0, 7765f210c2aSfgsch cris_scc_op}, 7775f210c2aSfgsch 7785f210c2aSfgsch /* The insn "swapn" is the same as "not" and will be disassembled as 7795f210c2aSfgsch such, but the swap* family of mnmonics are generally v8-and-higher 7805f210c2aSfgsch only, so count it in. */ 7815f210c2aSfgsch {"swapn", 0x8770, 0x7880, "r", 0, SIZE_NONE, 7825f210c2aSfgsch cris_ver_v8p, 7835f210c2aSfgsch cris_not_implemented_op}, 7845f210c2aSfgsch 7855f210c2aSfgsch {"swapw", 0x4770, 0xb880, "r", 0, SIZE_NONE, 7865f210c2aSfgsch cris_ver_v8p, 7875f210c2aSfgsch cris_not_implemented_op}, 7885f210c2aSfgsch 7895f210c2aSfgsch {"swapnw", 0xc770, 0x3880, "r", 0, SIZE_NONE, 7905f210c2aSfgsch cris_ver_v8p, 7915f210c2aSfgsch cris_not_implemented_op}, 7925f210c2aSfgsch 7935f210c2aSfgsch {"swapb", 0x2770, 0xd880, "r", 0, SIZE_NONE, 7945f210c2aSfgsch cris_ver_v8p, 7955f210c2aSfgsch cris_not_implemented_op}, 7965f210c2aSfgsch 7975f210c2aSfgsch {"swapnb", 0xA770, 0x5880, "r", 0, SIZE_NONE, 7985f210c2aSfgsch cris_ver_v8p, 7995f210c2aSfgsch cris_not_implemented_op}, 8005f210c2aSfgsch 8015f210c2aSfgsch {"swapwb", 0x6770, 0x9880, "r", 0, SIZE_NONE, 8025f210c2aSfgsch cris_ver_v8p, 8035f210c2aSfgsch cris_not_implemented_op}, 8045f210c2aSfgsch 8055f210c2aSfgsch {"swapnwb", 0xE770, 0x1880, "r", 0, SIZE_NONE, 8065f210c2aSfgsch cris_ver_v8p, 8075f210c2aSfgsch cris_not_implemented_op}, 8085f210c2aSfgsch 8095f210c2aSfgsch {"swapr", 0x1770, 0xe880, "r", 0, SIZE_NONE, 8105f210c2aSfgsch cris_ver_v8p, 8115f210c2aSfgsch cris_not_implemented_op}, 8125f210c2aSfgsch 8135f210c2aSfgsch {"swapnr", 0x9770, 0x6880, "r", 0, SIZE_NONE, 8145f210c2aSfgsch cris_ver_v8p, 8155f210c2aSfgsch cris_not_implemented_op}, 8165f210c2aSfgsch 8175f210c2aSfgsch {"swapwr", 0x5770, 0xa880, "r", 0, SIZE_NONE, 8185f210c2aSfgsch cris_ver_v8p, 8195f210c2aSfgsch cris_not_implemented_op}, 8205f210c2aSfgsch 8215f210c2aSfgsch {"swapnwr", 0xd770, 0x2880, "r", 0, SIZE_NONE, 8225f210c2aSfgsch cris_ver_v8p, 8235f210c2aSfgsch cris_not_implemented_op}, 8245f210c2aSfgsch 8255f210c2aSfgsch {"swapbr", 0x3770, 0xc880, "r", 0, SIZE_NONE, 8265f210c2aSfgsch cris_ver_v8p, 8275f210c2aSfgsch cris_not_implemented_op}, 8285f210c2aSfgsch 8295f210c2aSfgsch {"swapnbr", 0xb770, 0x4880, "r", 0, SIZE_NONE, 8305f210c2aSfgsch cris_ver_v8p, 8315f210c2aSfgsch cris_not_implemented_op}, 8325f210c2aSfgsch 8335f210c2aSfgsch {"swapwbr", 0x7770, 0x8880, "r", 0, SIZE_NONE, 8345f210c2aSfgsch cris_ver_v8p, 8355f210c2aSfgsch cris_not_implemented_op}, 8365f210c2aSfgsch 8375f210c2aSfgsch {"swapnwbr", 0xf770, 0x0880, "r", 0, SIZE_NONE, 8385f210c2aSfgsch cris_ver_v8p, 8395f210c2aSfgsch cris_not_implemented_op}, 8405f210c2aSfgsch 8415f210c2aSfgsch {"test", 0x0640, 0x0980, "m D", 0, SIZE_NONE, 0, 8425f210c2aSfgsch cris_reg_mode_test_op}, 8435f210c2aSfgsch 8445f210c2aSfgsch {"test", 0x0b80, 0xf040, "m s", 0, SIZE_FIELD, 0, 8455f210c2aSfgsch cris_none_reg_mode_clear_test_op}, 8465f210c2aSfgsch 8475f210c2aSfgsch {"test", 0x0b80, 0xf040, "m S", 0, SIZE_NONE, 0, 8485f210c2aSfgsch cris_none_reg_mode_clear_test_op}, 8495f210c2aSfgsch 8505f210c2aSfgsch {"xor", 0x07B0, 0x0840, "r,R", 0, SIZE_NONE, 0, 8515f210c2aSfgsch cris_xor_op}, 8525f210c2aSfgsch 8535f210c2aSfgsch {NULL, 0, 0, NULL, 0, 0, 0, cris_not_implemented_op} 8545f210c2aSfgsch }; 8555f210c2aSfgsch 8565f210c2aSfgsch /* Condition-names, indexed by the CC_* numbers as found in cris.h. */ 8575f210c2aSfgsch const char * const 8585f210c2aSfgsch cris_cc_strings[] = 8595f210c2aSfgsch { 8605f210c2aSfgsch "hs", 8615f210c2aSfgsch "lo", 8625f210c2aSfgsch "ne", 8635f210c2aSfgsch "eq", 8645f210c2aSfgsch "vc", 8655f210c2aSfgsch "vs", 8665f210c2aSfgsch "pl", 8675f210c2aSfgsch "mi", 8685f210c2aSfgsch "ls", 8695f210c2aSfgsch "hi", 8705f210c2aSfgsch "ge", 8715f210c2aSfgsch "lt", 8725f210c2aSfgsch "gt", 8735f210c2aSfgsch "le", 8745f210c2aSfgsch "a", 8755f210c2aSfgsch /* In v0, this would be "ext". */ 8765f210c2aSfgsch "wf", 8775f210c2aSfgsch }; 8785f210c2aSfgsch 8795f210c2aSfgsch 8805f210c2aSfgsch /* 8815f210c2aSfgsch * Local variables: 8825f210c2aSfgsch * eval: (c-set-style "gnu") 8835f210c2aSfgsch * indent-tabs-mode: t 8845f210c2aSfgsch * End: 8855f210c2aSfgsch */ 886