1*3d8817e4Smiod /* cris-opc.c -- Table of opcodes for the CRIS processor. 2*3d8817e4Smiod Copyright 2000, 2001, 2004 Free Software Foundation, Inc. 3*3d8817e4Smiod Contributed by Axis Communications AB, Lund, Sweden. 4*3d8817e4Smiod Originally written for GAS 1.38.1 by Mikael Asker. 5*3d8817e4Smiod Reorganized by Hans-Peter Nilsson. 6*3d8817e4Smiod 7*3d8817e4Smiod This file is part of GAS, GDB and the GNU binutils. 8*3d8817e4Smiod 9*3d8817e4Smiod GAS, GDB, and GNU binutils is free software; you can redistribute it 10*3d8817e4Smiod and/or modify it under the terms of the GNU General Public License as 11*3d8817e4Smiod published by the Free Software Foundation; either version 2, or (at your 12*3d8817e4Smiod option) any later version. 13*3d8817e4Smiod 14*3d8817e4Smiod GAS, GDB, and GNU binutils are distributed in the hope that they will be 15*3d8817e4Smiod useful, but WITHOUT ANY WARRANTY; without even the implied warranty of 16*3d8817e4Smiod MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17*3d8817e4Smiod GNU General Public License for more details. 18*3d8817e4Smiod 19*3d8817e4Smiod You should have received a copy of the GNU General Public License 20*3d8817e4Smiod along with this program; if not, write to the Free Software 21*3d8817e4Smiod Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ 22*3d8817e4Smiod 23*3d8817e4Smiod #include "opcode/cris.h" 24*3d8817e4Smiod 25*3d8817e4Smiod #ifndef NULL 26*3d8817e4Smiod #define NULL (0) 27*3d8817e4Smiod #endif 28*3d8817e4Smiod 29*3d8817e4Smiod /* This table isn't used for CRISv32 and the size of immediate operands. */ 30*3d8817e4Smiod const struct cris_spec_reg 31*3d8817e4Smiod cris_spec_regs[] = 32*3d8817e4Smiod { 33*3d8817e4Smiod {"bz", 0, 1, cris_ver_v32p, NULL}, 34*3d8817e4Smiod {"p0", 0, 1, 0, NULL}, 35*3d8817e4Smiod {"vr", 1, 1, 0, NULL}, 36*3d8817e4Smiod {"p1", 1, 1, 0, NULL}, 37*3d8817e4Smiod {"pid", 2, 1, cris_ver_v32p, NULL}, 38*3d8817e4Smiod {"p2", 2, 1, cris_ver_v32p, NULL}, 39*3d8817e4Smiod {"p2", 2, 1, cris_ver_warning, NULL}, 40*3d8817e4Smiod {"srs", 3, 1, cris_ver_v32p, NULL}, 41*3d8817e4Smiod {"p3", 3, 1, cris_ver_v32p, NULL}, 42*3d8817e4Smiod {"p3", 3, 1, cris_ver_warning, NULL}, 43*3d8817e4Smiod {"wz", 4, 2, cris_ver_v32p, NULL}, 44*3d8817e4Smiod {"p4", 4, 2, 0, NULL}, 45*3d8817e4Smiod {"ccr", 5, 2, cris_ver_v0_10, NULL}, 46*3d8817e4Smiod {"exs", 5, 4, cris_ver_v32p, NULL}, 47*3d8817e4Smiod {"p5", 5, 2, cris_ver_v0_10, NULL}, 48*3d8817e4Smiod {"p5", 5, 4, cris_ver_v32p, NULL}, 49*3d8817e4Smiod {"dcr0",6, 2, cris_ver_v0_3, NULL}, 50*3d8817e4Smiod {"eda", 6, 4, cris_ver_v32p, NULL}, 51*3d8817e4Smiod {"p6", 6, 2, cris_ver_v0_3, NULL}, 52*3d8817e4Smiod {"p6", 6, 4, cris_ver_v32p, NULL}, 53*3d8817e4Smiod {"dcr1/mof", 7, 4, cris_ver_v10p, 54*3d8817e4Smiod "Register `dcr1/mof' with ambiguous size specified. Guessing 4 bytes"}, 55*3d8817e4Smiod {"dcr1/mof", 7, 2, cris_ver_v0_3, 56*3d8817e4Smiod "Register `dcr1/mof' with ambiguous size specified. Guessing 2 bytes"}, 57*3d8817e4Smiod {"mof", 7, 4, cris_ver_v10p, NULL}, 58*3d8817e4Smiod {"dcr1",7, 2, cris_ver_v0_3, NULL}, 59*3d8817e4Smiod {"p7", 7, 4, cris_ver_v10p, NULL}, 60*3d8817e4Smiod {"p7", 7, 2, cris_ver_v0_3, NULL}, 61*3d8817e4Smiod {"dz", 8, 4, cris_ver_v32p, NULL}, 62*3d8817e4Smiod {"p8", 8, 4, 0, NULL}, 63*3d8817e4Smiod {"ibr", 9, 4, cris_ver_v0_10, NULL}, 64*3d8817e4Smiod {"ebp", 9, 4, cris_ver_v32p, NULL}, 65*3d8817e4Smiod {"p9", 9, 4, 0, NULL}, 66*3d8817e4Smiod {"irp", 10, 4, cris_ver_v0_10, NULL}, 67*3d8817e4Smiod {"erp", 10, 4, cris_ver_v32p, NULL}, 68*3d8817e4Smiod {"p10", 10, 4, 0, NULL}, 69*3d8817e4Smiod {"srp", 11, 4, 0, NULL}, 70*3d8817e4Smiod {"p11", 11, 4, 0, NULL}, 71*3d8817e4Smiod /* For disassembly use only. Accept at assembly with a warning. */ 72*3d8817e4Smiod {"bar/dtp0", 12, 4, cris_ver_warning, 73*3d8817e4Smiod "Ambiguous register `bar/dtp0' specified"}, 74*3d8817e4Smiod {"nrp", 12, 4, cris_ver_v32p, NULL}, 75*3d8817e4Smiod {"bar", 12, 4, cris_ver_v8_10, NULL}, 76*3d8817e4Smiod {"dtp0",12, 4, cris_ver_v0_3, NULL}, 77*3d8817e4Smiod {"p12", 12, 4, 0, NULL}, 78*3d8817e4Smiod /* For disassembly use only. Accept at assembly with a warning. */ 79*3d8817e4Smiod {"dccr/dtp1",13, 4, cris_ver_warning, 80*3d8817e4Smiod "Ambiguous register `dccr/dtp1' specified"}, 81*3d8817e4Smiod {"ccs", 13, 4, cris_ver_v32p, NULL}, 82*3d8817e4Smiod {"dccr",13, 4, cris_ver_v8_10, NULL}, 83*3d8817e4Smiod {"dtp1",13, 4, cris_ver_v0_3, NULL}, 84*3d8817e4Smiod {"p13", 13, 4, 0, NULL}, 85*3d8817e4Smiod {"brp", 14, 4, cris_ver_v3_10, NULL}, 86*3d8817e4Smiod {"usp", 14, 4, cris_ver_v32p, NULL}, 87*3d8817e4Smiod {"p14", 14, 4, cris_ver_v3p, NULL}, 88*3d8817e4Smiod {"usp", 15, 4, cris_ver_v10, NULL}, 89*3d8817e4Smiod {"spc", 15, 4, cris_ver_v32p, NULL}, 90*3d8817e4Smiod {"p15", 15, 4, cris_ver_v10p, NULL}, 91*3d8817e4Smiod {NULL, 0, 0, cris_ver_version_all, NULL} 92*3d8817e4Smiod }; 93*3d8817e4Smiod 94*3d8817e4Smiod /* Add version specifiers to this table when necessary. 95*3d8817e4Smiod The (now) regular coding of register names suggests a simpler 96*3d8817e4Smiod implementation. */ 97*3d8817e4Smiod const struct cris_support_reg cris_support_regs[] = 98*3d8817e4Smiod { 99*3d8817e4Smiod {"s0", 0}, 100*3d8817e4Smiod {"s1", 1}, 101*3d8817e4Smiod {"s2", 2}, 102*3d8817e4Smiod {"s3", 3}, 103*3d8817e4Smiod {"s4", 4}, 104*3d8817e4Smiod {"s5", 5}, 105*3d8817e4Smiod {"s6", 6}, 106*3d8817e4Smiod {"s7", 7}, 107*3d8817e4Smiod {"s8", 8}, 108*3d8817e4Smiod {"s9", 9}, 109*3d8817e4Smiod {"s10", 10}, 110*3d8817e4Smiod {"s11", 11}, 111*3d8817e4Smiod {"s12", 12}, 112*3d8817e4Smiod {"s13", 13}, 113*3d8817e4Smiod {"s14", 14}, 114*3d8817e4Smiod {"s15", 15}, 115*3d8817e4Smiod {NULL, 0} 116*3d8817e4Smiod }; 117*3d8817e4Smiod 118*3d8817e4Smiod /* All CRIS opcodes are 16 bits. 119*3d8817e4Smiod 120*3d8817e4Smiod - The match component is a mask saying which bits must match a 121*3d8817e4Smiod particular opcode in order for an instruction to be an instance 122*3d8817e4Smiod of that opcode. 123*3d8817e4Smiod 124*3d8817e4Smiod - The args component is a string containing characters symbolically 125*3d8817e4Smiod matching the operands of an instruction. Used for both assembly 126*3d8817e4Smiod and disassembly. 127*3d8817e4Smiod 128*3d8817e4Smiod Operand-matching characters: 129*3d8817e4Smiod [ ] , space 130*3d8817e4Smiod Verbatim. 131*3d8817e4Smiod A The string "ACR" (case-insensitive). 132*3d8817e4Smiod B Not really an operand. It causes a "BDAP -size,SP" prefix to be 133*3d8817e4Smiod output for the PUSH alias-instructions and recognizes a push- 134*3d8817e4Smiod prefix at disassembly. This letter isn't recognized for v32. 135*3d8817e4Smiod Must be followed by a R or P letter. 136*3d8817e4Smiod ! Non-match pattern, will not match if there's a prefix insn. 137*3d8817e4Smiod b Non-matching operand, used for branches with 16-bit 138*3d8817e4Smiod displacement. Only recognized by the disassembler. 139*3d8817e4Smiod c 5-bit unsigned immediate in bits <4:0>. 140*3d8817e4Smiod C 4-bit unsigned immediate in bits <3:0>. 141*3d8817e4Smiod d At assembly, optionally (as in put other cases before this one) 142*3d8817e4Smiod ".d" or ".D" at the start of the operands, followed by one space 143*3d8817e4Smiod character. At disassembly, nothing. 144*3d8817e4Smiod D General register in bits <15:12> and <3:0>. 145*3d8817e4Smiod f List of flags in bits <15:12> and <3:0>. 146*3d8817e4Smiod i 6-bit signed immediate in bits <5:0>. 147*3d8817e4Smiod I 6-bit unsigned immediate in bits <5:0>. 148*3d8817e4Smiod M Size modifier (B, W or D) for CLEAR instructions. 149*3d8817e4Smiod m Size modifier (B, W or D) in bits <5:4> 150*3d8817e4Smiod N A 32-bit dword, like in the difference between s and y. 151*3d8817e4Smiod This has no effect on bits in the opcode. Can also be expressed 152*3d8817e4Smiod as "[pc+]" in input. 153*3d8817e4Smiod n As N, but PC-relative (to the start of the instruction). 154*3d8817e4Smiod o [-128..127] word offset in bits <7:1> and <0>. Used by 8-bit 155*3d8817e4Smiod branch instructions. 156*3d8817e4Smiod O [-128..127] offset in bits <7:0>. Also matches a comma and a 157*3d8817e4Smiod general register after the expression, in bits <15:12>. Used 158*3d8817e4Smiod only for the BDAP prefix insn (in v32 the ADDOQ insn; same opcode). 159*3d8817e4Smiod P Special register in bits <15:12>. 160*3d8817e4Smiod p Indicates that the insn is a prefix insn. Must be first 161*3d8817e4Smiod character. 162*3d8817e4Smiod Q As O, but don't relax; force an 8-bit offset. 163*3d8817e4Smiod R General register in bits <15:12>. 164*3d8817e4Smiod r General register in bits <3:0>. 165*3d8817e4Smiod S Source operand in bit <10> and a prefix; a 3-operand prefix 166*3d8817e4Smiod without side-effect. 167*3d8817e4Smiod s Source operand in bits <10> and <3:0>, optionally with a 168*3d8817e4Smiod side-effect prefix, except [pc] (the name, not R15 as in ACR) 169*3d8817e4Smiod isn't allowed for v32 and higher. 170*3d8817e4Smiod T Support register in bits <15:12>. 171*3d8817e4Smiod u 4-bit (PC-relative) unsigned immediate word offset in bits <3:0>. 172*3d8817e4Smiod U Relaxes to either u or n, instruction is assumed LAPCQ or LAPC. 173*3d8817e4Smiod Not recognized at disassembly. 174*3d8817e4Smiod x Register-dot-modifier, for example "r5.w" in bits <15:12> and <5:4>. 175*3d8817e4Smiod y Like 's' but do not allow an integer at assembly. 176*3d8817e4Smiod Y The difference s-y; only an integer is allowed. 177*3d8817e4Smiod z Size modifier (B or W) in bit <4>. */ 178*3d8817e4Smiod 179*3d8817e4Smiod 180*3d8817e4Smiod /* Please note the order of the opcodes in this table is significant. 181*3d8817e4Smiod The assembler requires that all instances of the same mnemonic must 182*3d8817e4Smiod be consecutive. If they aren't, the assembler might not recognize 183*3d8817e4Smiod them, or may indicate an internal error. 184*3d8817e4Smiod 185*3d8817e4Smiod The disassembler should not normally care about the order of the 186*3d8817e4Smiod opcodes, but will prefer an earlier alternative if the "match-score" 187*3d8817e4Smiod (see cris-dis.c) is computed as equal. 188*3d8817e4Smiod 189*3d8817e4Smiod It should not be significant for proper execution that this table is 190*3d8817e4Smiod in alphabetical order, but please follow that convention for an easy 191*3d8817e4Smiod overview. */ 192*3d8817e4Smiod 193*3d8817e4Smiod const struct cris_opcode 194*3d8817e4Smiod cris_opcodes[] = 195*3d8817e4Smiod { 196*3d8817e4Smiod {"abs", 0x06B0, 0x0940, "r,R", 0, SIZE_NONE, 0, 197*3d8817e4Smiod cris_abs_op}, 198*3d8817e4Smiod 199*3d8817e4Smiod {"add", 0x0600, 0x09c0, "m r,R", 0, SIZE_NONE, 0, 200*3d8817e4Smiod cris_reg_mode_add_sub_cmp_and_or_move_op}, 201*3d8817e4Smiod 202*3d8817e4Smiod {"add", 0x0A00, 0x01c0, "m s,R", 0, SIZE_FIELD, 0, 203*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 204*3d8817e4Smiod 205*3d8817e4Smiod {"add", 0x0A00, 0x01c0, "m S,D", 0, SIZE_NONE, 206*3d8817e4Smiod cris_ver_v0_10, 207*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 208*3d8817e4Smiod 209*3d8817e4Smiod {"add", 0x0a00, 0x05c0, "m S,R,r", 0, SIZE_NONE, 210*3d8817e4Smiod cris_ver_v0_10, 211*3d8817e4Smiod cris_three_operand_add_sub_cmp_and_or_op}, 212*3d8817e4Smiod 213*3d8817e4Smiod {"add", 0x0A00, 0x01c0, "m s,R", 0, SIZE_FIELD, 214*3d8817e4Smiod cris_ver_v32p, 215*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 216*3d8817e4Smiod 217*3d8817e4Smiod {"addc", 0x0570, 0x0A80, "r,R", 0, SIZE_FIX_32, 218*3d8817e4Smiod cris_ver_v32p, 219*3d8817e4Smiod cris_not_implemented_op}, 220*3d8817e4Smiod 221*3d8817e4Smiod {"addc", 0x09A0, 0x0250, "s,R", 0, SIZE_FIX_32, 222*3d8817e4Smiod cris_ver_v32p, 223*3d8817e4Smiod cris_not_implemented_op}, 224*3d8817e4Smiod 225*3d8817e4Smiod {"addi", 0x0540, 0x0A80, "x,r,A", 0, SIZE_NONE, 226*3d8817e4Smiod cris_ver_v32p, 227*3d8817e4Smiod cris_addi_op}, 228*3d8817e4Smiod 229*3d8817e4Smiod {"addi", 0x0500, 0x0Ac0, "x,r", 0, SIZE_NONE, 0, 230*3d8817e4Smiod cris_addi_op}, 231*3d8817e4Smiod 232*3d8817e4Smiod /* This collates after "addo", but we want to disassemble as "addoq", 233*3d8817e4Smiod not "addo". */ 234*3d8817e4Smiod {"addoq", 0x0100, 0x0E00, "Q,A", 0, SIZE_NONE, 235*3d8817e4Smiod cris_ver_v32p, 236*3d8817e4Smiod cris_not_implemented_op}, 237*3d8817e4Smiod 238*3d8817e4Smiod {"addo", 0x0940, 0x0280, "m s,R,A", 0, SIZE_FIELD_SIGNED, 239*3d8817e4Smiod cris_ver_v32p, 240*3d8817e4Smiod cris_not_implemented_op}, 241*3d8817e4Smiod 242*3d8817e4Smiod /* This must be located after the insn above, lest we misinterpret 243*3d8817e4Smiod "addo.b -1,r0,acr" as "addo .b-1,r0,acr". FIXME: Sounds like a 244*3d8817e4Smiod parser bug. */ 245*3d8817e4Smiod {"addo", 0x0100, 0x0E00, "O,A", 0, SIZE_NONE, 246*3d8817e4Smiod cris_ver_v32p, 247*3d8817e4Smiod cris_not_implemented_op}, 248*3d8817e4Smiod 249*3d8817e4Smiod {"addq", 0x0200, 0x0Dc0, "I,R", 0, SIZE_NONE, 0, 250*3d8817e4Smiod cris_quick_mode_add_sub_op}, 251*3d8817e4Smiod 252*3d8817e4Smiod {"adds", 0x0420, 0x0Bc0, "z r,R", 0, SIZE_NONE, 0, 253*3d8817e4Smiod cris_reg_mode_add_sub_cmp_and_or_move_op}, 254*3d8817e4Smiod 255*3d8817e4Smiod /* FIXME: SIZE_FIELD_SIGNED and all necessary changes. */ 256*3d8817e4Smiod {"adds", 0x0820, 0x03c0, "z s,R", 0, SIZE_FIELD, 0, 257*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 258*3d8817e4Smiod 259*3d8817e4Smiod {"adds", 0x0820, 0x03c0, "z S,D", 0, SIZE_NONE, 260*3d8817e4Smiod cris_ver_v0_10, 261*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 262*3d8817e4Smiod 263*3d8817e4Smiod {"adds", 0x0820, 0x07c0, "z S,R,r", 0, SIZE_NONE, 264*3d8817e4Smiod cris_ver_v0_10, 265*3d8817e4Smiod cris_three_operand_add_sub_cmp_and_or_op}, 266*3d8817e4Smiod 267*3d8817e4Smiod {"addu", 0x0400, 0x0be0, "z r,R", 0, SIZE_NONE, 0, 268*3d8817e4Smiod cris_reg_mode_add_sub_cmp_and_or_move_op}, 269*3d8817e4Smiod 270*3d8817e4Smiod /* FIXME: SIZE_FIELD_UNSIGNED and all necessary changes. */ 271*3d8817e4Smiod {"addu", 0x0800, 0x03e0, "z s,R", 0, SIZE_FIELD, 0, 272*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 273*3d8817e4Smiod 274*3d8817e4Smiod {"addu", 0x0800, 0x03e0, "z S,D", 0, SIZE_NONE, 275*3d8817e4Smiod cris_ver_v0_10, 276*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 277*3d8817e4Smiod 278*3d8817e4Smiod {"addu", 0x0800, 0x07e0, "z S,R,r", 0, SIZE_NONE, 279*3d8817e4Smiod cris_ver_v0_10, 280*3d8817e4Smiod cris_three_operand_add_sub_cmp_and_or_op}, 281*3d8817e4Smiod 282*3d8817e4Smiod {"and", 0x0700, 0x08C0, "m r,R", 0, SIZE_NONE, 0, 283*3d8817e4Smiod cris_reg_mode_add_sub_cmp_and_or_move_op}, 284*3d8817e4Smiod 285*3d8817e4Smiod {"and", 0x0B00, 0x00C0, "m s,R", 0, SIZE_FIELD, 0, 286*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 287*3d8817e4Smiod 288*3d8817e4Smiod {"and", 0x0B00, 0x00C0, "m S,D", 0, SIZE_NONE, 289*3d8817e4Smiod cris_ver_v0_10, 290*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 291*3d8817e4Smiod 292*3d8817e4Smiod {"and", 0x0B00, 0x04C0, "m S,R,r", 0, SIZE_NONE, 293*3d8817e4Smiod cris_ver_v0_10, 294*3d8817e4Smiod cris_three_operand_add_sub_cmp_and_or_op}, 295*3d8817e4Smiod 296*3d8817e4Smiod {"andq", 0x0300, 0x0CC0, "i,R", 0, SIZE_NONE, 0, 297*3d8817e4Smiod cris_quick_mode_and_cmp_move_or_op}, 298*3d8817e4Smiod 299*3d8817e4Smiod {"asr", 0x0780, 0x0840, "m r,R", 0, SIZE_NONE, 0, 300*3d8817e4Smiod cris_asr_op}, 301*3d8817e4Smiod 302*3d8817e4Smiod {"asrq", 0x03a0, 0x0c40, "c,R", 0, SIZE_NONE, 0, 303*3d8817e4Smiod cris_asrq_op}, 304*3d8817e4Smiod 305*3d8817e4Smiod {"ax", 0x15B0, 0xEA4F, "", 0, SIZE_NONE, 0, 306*3d8817e4Smiod cris_ax_ei_setf_op}, 307*3d8817e4Smiod 308*3d8817e4Smiod /* FIXME: Should use branch #defines. */ 309*3d8817e4Smiod {"b", 0x0dff, 0x0200, "b", 1, SIZE_NONE, 0, 310*3d8817e4Smiod cris_sixteen_bit_offset_branch_op}, 311*3d8817e4Smiod 312*3d8817e4Smiod {"ba", 313*3d8817e4Smiod BA_QUICK_OPCODE, 314*3d8817e4Smiod 0x0F00+(0xF-CC_A)*0x1000, "o", 1, SIZE_NONE, 0, 315*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 316*3d8817e4Smiod 317*3d8817e4Smiod /* Needs to come after the usual "ba o", which might be relaxed to 318*3d8817e4Smiod this one. */ 319*3d8817e4Smiod {"ba", BA_DWORD_OPCODE, 320*3d8817e4Smiod 0xffff & (~BA_DWORD_OPCODE), "n", 0, SIZE_FIX_32, 321*3d8817e4Smiod cris_ver_v32p, 322*3d8817e4Smiod cris_none_reg_mode_jump_op}, 323*3d8817e4Smiod 324*3d8817e4Smiod {"bas", 0x0EBF, 0x0140, "n,P", 0, SIZE_FIX_32, 325*3d8817e4Smiod cris_ver_v32p, 326*3d8817e4Smiod cris_none_reg_mode_jump_op}, 327*3d8817e4Smiod 328*3d8817e4Smiod {"basc", 0x0EFF, 0x0100, "n,P", 0, SIZE_FIX_32, 329*3d8817e4Smiod cris_ver_v32p, 330*3d8817e4Smiod cris_none_reg_mode_jump_op}, 331*3d8817e4Smiod 332*3d8817e4Smiod {"bcc", 333*3d8817e4Smiod BRANCH_QUICK_OPCODE+CC_CC*0x1000, 334*3d8817e4Smiod 0x0f00+(0xF-CC_CC)*0x1000, "o", 1, SIZE_NONE, 0, 335*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 336*3d8817e4Smiod 337*3d8817e4Smiod {"bcs", 338*3d8817e4Smiod BRANCH_QUICK_OPCODE+CC_CS*0x1000, 339*3d8817e4Smiod 0x0f00+(0xF-CC_CS)*0x1000, "o", 1, SIZE_NONE, 0, 340*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 341*3d8817e4Smiod 342*3d8817e4Smiod {"bdap", 343*3d8817e4Smiod BDAP_INDIR_OPCODE, BDAP_INDIR_Z_BITS, "pm s,R", 0, SIZE_FIELD_SIGNED, 344*3d8817e4Smiod cris_ver_v0_10, 345*3d8817e4Smiod cris_bdap_prefix}, 346*3d8817e4Smiod 347*3d8817e4Smiod {"bdap", 348*3d8817e4Smiod BDAP_QUICK_OPCODE, BDAP_QUICK_Z_BITS, "pO", 0, SIZE_NONE, 349*3d8817e4Smiod cris_ver_v0_10, 350*3d8817e4Smiod cris_quick_mode_bdap_prefix}, 351*3d8817e4Smiod 352*3d8817e4Smiod {"beq", 353*3d8817e4Smiod BRANCH_QUICK_OPCODE+CC_EQ*0x1000, 354*3d8817e4Smiod 0x0f00+(0xF-CC_EQ)*0x1000, "o", 1, SIZE_NONE, 0, 355*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 356*3d8817e4Smiod 357*3d8817e4Smiod /* This is deliberately put before "bext" to trump it, even though not 358*3d8817e4Smiod in alphabetical order, since we don't do excluding version checks 359*3d8817e4Smiod for v0..v10. */ 360*3d8817e4Smiod {"bwf", 361*3d8817e4Smiod BRANCH_QUICK_OPCODE+CC_EXT*0x1000, 362*3d8817e4Smiod 0x0f00+(0xF-CC_EXT)*0x1000, "o", 1, SIZE_NONE, 363*3d8817e4Smiod cris_ver_v10, 364*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 365*3d8817e4Smiod 366*3d8817e4Smiod {"bext", 367*3d8817e4Smiod BRANCH_QUICK_OPCODE+CC_EXT*0x1000, 368*3d8817e4Smiod 0x0f00+(0xF-CC_EXT)*0x1000, "o", 1, SIZE_NONE, 369*3d8817e4Smiod cris_ver_v0_3, 370*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 371*3d8817e4Smiod 372*3d8817e4Smiod {"bge", 373*3d8817e4Smiod BRANCH_QUICK_OPCODE+CC_GE*0x1000, 374*3d8817e4Smiod 0x0f00+(0xF-CC_GE)*0x1000, "o", 1, SIZE_NONE, 0, 375*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 376*3d8817e4Smiod 377*3d8817e4Smiod {"bgt", 378*3d8817e4Smiod BRANCH_QUICK_OPCODE+CC_GT*0x1000, 379*3d8817e4Smiod 0x0f00+(0xF-CC_GT)*0x1000, "o", 1, SIZE_NONE, 0, 380*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 381*3d8817e4Smiod 382*3d8817e4Smiod {"bhi", 383*3d8817e4Smiod BRANCH_QUICK_OPCODE+CC_HI*0x1000, 384*3d8817e4Smiod 0x0f00+(0xF-CC_HI)*0x1000, "o", 1, SIZE_NONE, 0, 385*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 386*3d8817e4Smiod 387*3d8817e4Smiod {"bhs", 388*3d8817e4Smiod BRANCH_QUICK_OPCODE+CC_HS*0x1000, 389*3d8817e4Smiod 0x0f00+(0xF-CC_HS)*0x1000, "o", 1, SIZE_NONE, 0, 390*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 391*3d8817e4Smiod 392*3d8817e4Smiod {"biap", BIAP_OPCODE, BIAP_Z_BITS, "pm r,R", 0, SIZE_NONE, 393*3d8817e4Smiod cris_ver_v0_10, 394*3d8817e4Smiod cris_biap_prefix}, 395*3d8817e4Smiod 396*3d8817e4Smiod {"ble", 397*3d8817e4Smiod BRANCH_QUICK_OPCODE+CC_LE*0x1000, 398*3d8817e4Smiod 0x0f00+(0xF-CC_LE)*0x1000, "o", 1, SIZE_NONE, 0, 399*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 400*3d8817e4Smiod 401*3d8817e4Smiod {"blo", 402*3d8817e4Smiod BRANCH_QUICK_OPCODE+CC_LO*0x1000, 403*3d8817e4Smiod 0x0f00+(0xF-CC_LO)*0x1000, "o", 1, SIZE_NONE, 0, 404*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 405*3d8817e4Smiod 406*3d8817e4Smiod {"bls", 407*3d8817e4Smiod BRANCH_QUICK_OPCODE+CC_LS*0x1000, 408*3d8817e4Smiod 0x0f00+(0xF-CC_LS)*0x1000, "o", 1, SIZE_NONE, 0, 409*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 410*3d8817e4Smiod 411*3d8817e4Smiod {"blt", 412*3d8817e4Smiod BRANCH_QUICK_OPCODE+CC_LT*0x1000, 413*3d8817e4Smiod 0x0f00+(0xF-CC_LT)*0x1000, "o", 1, SIZE_NONE, 0, 414*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 415*3d8817e4Smiod 416*3d8817e4Smiod {"bmi", 417*3d8817e4Smiod BRANCH_QUICK_OPCODE+CC_MI*0x1000, 418*3d8817e4Smiod 0x0f00+(0xF-CC_MI)*0x1000, "o", 1, SIZE_NONE, 0, 419*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 420*3d8817e4Smiod 421*3d8817e4Smiod {"bmod", 0x0ab0, 0x0140, "s,R", 0, SIZE_FIX_32, 422*3d8817e4Smiod cris_ver_sim_v0_10, 423*3d8817e4Smiod cris_not_implemented_op}, 424*3d8817e4Smiod 425*3d8817e4Smiod {"bmod", 0x0ab0, 0x0140, "S,D", 0, SIZE_NONE, 426*3d8817e4Smiod cris_ver_sim_v0_10, 427*3d8817e4Smiod cris_not_implemented_op}, 428*3d8817e4Smiod 429*3d8817e4Smiod {"bmod", 0x0ab0, 0x0540, "S,R,r", 0, SIZE_NONE, 430*3d8817e4Smiod cris_ver_sim_v0_10, 431*3d8817e4Smiod cris_not_implemented_op}, 432*3d8817e4Smiod 433*3d8817e4Smiod {"bne", 434*3d8817e4Smiod BRANCH_QUICK_OPCODE+CC_NE*0x1000, 435*3d8817e4Smiod 0x0f00+(0xF-CC_NE)*0x1000, "o", 1, SIZE_NONE, 0, 436*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 437*3d8817e4Smiod 438*3d8817e4Smiod {"bound", 0x05c0, 0x0A00, "m r,R", 0, SIZE_NONE, 0, 439*3d8817e4Smiod cris_two_operand_bound_op}, 440*3d8817e4Smiod /* FIXME: SIZE_FIELD_UNSIGNED and all necessary changes. */ 441*3d8817e4Smiod {"bound", 0x09c0, 0x0200, "m s,R", 0, SIZE_FIELD, 442*3d8817e4Smiod cris_ver_v0_10, 443*3d8817e4Smiod cris_two_operand_bound_op}, 444*3d8817e4Smiod /* FIXME: SIZE_FIELD_UNSIGNED and all necessary changes. */ 445*3d8817e4Smiod {"bound", 0x0dcf, 0x0200, "m Y,R", 0, SIZE_FIELD, 0, 446*3d8817e4Smiod cris_two_operand_bound_op}, 447*3d8817e4Smiod {"bound", 0x09c0, 0x0200, "m S,D", 0, SIZE_NONE, 448*3d8817e4Smiod cris_ver_v0_10, 449*3d8817e4Smiod cris_two_operand_bound_op}, 450*3d8817e4Smiod {"bound", 0x09c0, 0x0600, "m S,R,r", 0, SIZE_NONE, 451*3d8817e4Smiod cris_ver_v0_10, 452*3d8817e4Smiod cris_three_operand_bound_op}, 453*3d8817e4Smiod 454*3d8817e4Smiod {"bpl", 455*3d8817e4Smiod BRANCH_QUICK_OPCODE+CC_PL*0x1000, 456*3d8817e4Smiod 0x0f00+(0xF-CC_PL)*0x1000, "o", 1, SIZE_NONE, 0, 457*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 458*3d8817e4Smiod 459*3d8817e4Smiod {"break", 0xe930, 0x16c0, "C", 0, SIZE_NONE, 460*3d8817e4Smiod cris_ver_v3p, 461*3d8817e4Smiod cris_break_op}, 462*3d8817e4Smiod 463*3d8817e4Smiod {"bsb", 464*3d8817e4Smiod BRANCH_QUICK_OPCODE+CC_EXT*0x1000, 465*3d8817e4Smiod 0x0f00+(0xF-CC_EXT)*0x1000, "o", 1, SIZE_NONE, 466*3d8817e4Smiod cris_ver_v32p, 467*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 468*3d8817e4Smiod 469*3d8817e4Smiod {"bsr", 0xBEBF, 0x4140, "n", 0, SIZE_FIX_32, 470*3d8817e4Smiod cris_ver_v32p, 471*3d8817e4Smiod cris_none_reg_mode_jump_op}, 472*3d8817e4Smiod 473*3d8817e4Smiod {"bsrc", 0xBEFF, 0x4100, "n", 0, SIZE_FIX_32, 474*3d8817e4Smiod cris_ver_v32p, 475*3d8817e4Smiod cris_none_reg_mode_jump_op}, 476*3d8817e4Smiod 477*3d8817e4Smiod {"bstore", 0x0af0, 0x0100, "s,R", 0, SIZE_FIX_32, 478*3d8817e4Smiod cris_ver_warning, 479*3d8817e4Smiod cris_not_implemented_op}, 480*3d8817e4Smiod 481*3d8817e4Smiod {"bstore", 0x0af0, 0x0100, "S,D", 0, SIZE_NONE, 482*3d8817e4Smiod cris_ver_warning, 483*3d8817e4Smiod cris_not_implemented_op}, 484*3d8817e4Smiod 485*3d8817e4Smiod {"bstore", 0x0af0, 0x0500, "S,R,r", 0, SIZE_NONE, 486*3d8817e4Smiod cris_ver_warning, 487*3d8817e4Smiod cris_not_implemented_op}, 488*3d8817e4Smiod 489*3d8817e4Smiod {"btst", 0x04F0, 0x0B00, "r,R", 0, SIZE_NONE, 0, 490*3d8817e4Smiod cris_btst_nop_op}, 491*3d8817e4Smiod {"btstq", 0x0380, 0x0C60, "c,R", 0, SIZE_NONE, 0, 492*3d8817e4Smiod cris_btst_nop_op}, 493*3d8817e4Smiod 494*3d8817e4Smiod {"bvc", 495*3d8817e4Smiod BRANCH_QUICK_OPCODE+CC_VC*0x1000, 496*3d8817e4Smiod 0x0f00+(0xF-CC_VC)*0x1000, "o", 1, SIZE_NONE, 0, 497*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 498*3d8817e4Smiod 499*3d8817e4Smiod {"bvs", 500*3d8817e4Smiod BRANCH_QUICK_OPCODE+CC_VS*0x1000, 501*3d8817e4Smiod 0x0f00+(0xF-CC_VS)*0x1000, "o", 1, SIZE_NONE, 0, 502*3d8817e4Smiod cris_eight_bit_offset_branch_op}, 503*3d8817e4Smiod 504*3d8817e4Smiod {"clear", 0x0670, 0x3980, "M r", 0, SIZE_NONE, 0, 505*3d8817e4Smiod cris_reg_mode_clear_op}, 506*3d8817e4Smiod 507*3d8817e4Smiod {"clear", 0x0A70, 0x3180, "M y", 0, SIZE_NONE, 0, 508*3d8817e4Smiod cris_none_reg_mode_clear_test_op}, 509*3d8817e4Smiod 510*3d8817e4Smiod {"clear", 0x0A70, 0x3180, "M S", 0, SIZE_NONE, 511*3d8817e4Smiod cris_ver_v0_10, 512*3d8817e4Smiod cris_none_reg_mode_clear_test_op}, 513*3d8817e4Smiod 514*3d8817e4Smiod {"clearf", 0x05F0, 0x0A00, "f", 0, SIZE_NONE, 0, 515*3d8817e4Smiod cris_clearf_di_op}, 516*3d8817e4Smiod 517*3d8817e4Smiod {"cmp", 0x06C0, 0x0900, "m r,R", 0, SIZE_NONE, 0, 518*3d8817e4Smiod cris_reg_mode_add_sub_cmp_and_or_move_op}, 519*3d8817e4Smiod 520*3d8817e4Smiod {"cmp", 0x0Ac0, 0x0100, "m s,R", 0, SIZE_FIELD, 0, 521*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 522*3d8817e4Smiod 523*3d8817e4Smiod {"cmp", 0x0Ac0, 0x0100, "m S,D", 0, SIZE_NONE, 524*3d8817e4Smiod cris_ver_v0_10, 525*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 526*3d8817e4Smiod 527*3d8817e4Smiod {"cmpq", 0x02C0, 0x0D00, "i,R", 0, SIZE_NONE, 0, 528*3d8817e4Smiod cris_quick_mode_and_cmp_move_or_op}, 529*3d8817e4Smiod 530*3d8817e4Smiod /* FIXME: SIZE_FIELD_SIGNED and all necessary changes. */ 531*3d8817e4Smiod {"cmps", 0x08e0, 0x0300, "z s,R", 0, SIZE_FIELD, 0, 532*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 533*3d8817e4Smiod 534*3d8817e4Smiod {"cmps", 0x08e0, 0x0300, "z S,D", 0, SIZE_NONE, 535*3d8817e4Smiod cris_ver_v0_10, 536*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 537*3d8817e4Smiod 538*3d8817e4Smiod /* FIXME: SIZE_FIELD_UNSIGNED and all necessary changes. */ 539*3d8817e4Smiod {"cmpu", 0x08c0, 0x0320, "z s,R" , 0, SIZE_FIELD, 0, 540*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 541*3d8817e4Smiod 542*3d8817e4Smiod {"cmpu", 0x08c0, 0x0320, "z S,D", 0, SIZE_NONE, 543*3d8817e4Smiod cris_ver_v0_10, 544*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 545*3d8817e4Smiod 546*3d8817e4Smiod {"di", 0x25F0, 0xDA0F, "", 0, SIZE_NONE, 0, 547*3d8817e4Smiod cris_clearf_di_op}, 548*3d8817e4Smiod 549*3d8817e4Smiod {"dip", DIP_OPCODE, DIP_Z_BITS, "ps", 0, SIZE_FIX_32, 550*3d8817e4Smiod cris_ver_v0_10, 551*3d8817e4Smiod cris_dip_prefix}, 552*3d8817e4Smiod 553*3d8817e4Smiod {"div", 0x0980, 0x0640, "m R,r", 0, SIZE_FIELD, 0, 554*3d8817e4Smiod cris_not_implemented_op}, 555*3d8817e4Smiod 556*3d8817e4Smiod {"dstep", 0x06f0, 0x0900, "r,R", 0, SIZE_NONE, 0, 557*3d8817e4Smiod cris_dstep_logshift_mstep_neg_not_op}, 558*3d8817e4Smiod 559*3d8817e4Smiod {"ei", 0x25B0, 0xDA4F, "", 0, SIZE_NONE, 0, 560*3d8817e4Smiod cris_ax_ei_setf_op}, 561*3d8817e4Smiod 562*3d8817e4Smiod {"fidxd", 0x0ab0, 0xf540, "[r]", 0, SIZE_NONE, 563*3d8817e4Smiod cris_ver_v32p, 564*3d8817e4Smiod cris_not_implemented_op}, 565*3d8817e4Smiod 566*3d8817e4Smiod {"fidxi", 0x0d30, 0xF2C0, "[r]", 0, SIZE_NONE, 567*3d8817e4Smiod cris_ver_v32p, 568*3d8817e4Smiod cris_not_implemented_op}, 569*3d8817e4Smiod 570*3d8817e4Smiod {"ftagd", 0x1AB0, 0xE540, "[r]", 0, SIZE_NONE, 571*3d8817e4Smiod cris_ver_v32p, 572*3d8817e4Smiod cris_not_implemented_op}, 573*3d8817e4Smiod 574*3d8817e4Smiod {"ftagi", 0x1D30, 0xE2C0, "[r]", 0, SIZE_NONE, 575*3d8817e4Smiod cris_ver_v32p, 576*3d8817e4Smiod cris_not_implemented_op}, 577*3d8817e4Smiod 578*3d8817e4Smiod {"halt", 0xF930, 0x06CF, "", 0, SIZE_NONE, 579*3d8817e4Smiod cris_ver_v32p, 580*3d8817e4Smiod cris_not_implemented_op}, 581*3d8817e4Smiod 582*3d8817e4Smiod {"jas", 0x09B0, 0x0640, "r,P", 0, SIZE_NONE, 583*3d8817e4Smiod cris_ver_v32p, 584*3d8817e4Smiod cris_reg_mode_jump_op}, 585*3d8817e4Smiod 586*3d8817e4Smiod {"jas", 0x0DBF, 0x0240, "N,P", 0, SIZE_FIX_32, 587*3d8817e4Smiod cris_ver_v32p, 588*3d8817e4Smiod cris_reg_mode_jump_op}, 589*3d8817e4Smiod 590*3d8817e4Smiod {"jasc", 0x0B30, 0x04C0, "r,P", 0, SIZE_NONE, 591*3d8817e4Smiod cris_ver_v32p, 592*3d8817e4Smiod cris_reg_mode_jump_op}, 593*3d8817e4Smiod 594*3d8817e4Smiod {"jasc", 0x0F3F, 0x00C0, "N,P", 0, SIZE_FIX_32, 595*3d8817e4Smiod cris_ver_v32p, 596*3d8817e4Smiod cris_reg_mode_jump_op}, 597*3d8817e4Smiod 598*3d8817e4Smiod {"jbrc", 0x69b0, 0x9640, "r", 0, SIZE_NONE, 599*3d8817e4Smiod cris_ver_v8_10, 600*3d8817e4Smiod cris_reg_mode_jump_op}, 601*3d8817e4Smiod 602*3d8817e4Smiod {"jbrc", 0x6930, 0x92c0, "s", 0, SIZE_FIX_32, 603*3d8817e4Smiod cris_ver_v8_10, 604*3d8817e4Smiod cris_none_reg_mode_jump_op}, 605*3d8817e4Smiod 606*3d8817e4Smiod {"jbrc", 0x6930, 0x92c0, "S", 0, SIZE_NONE, 607*3d8817e4Smiod cris_ver_v8_10, 608*3d8817e4Smiod cris_none_reg_mode_jump_op}, 609*3d8817e4Smiod 610*3d8817e4Smiod {"jir", 0xA9b0, 0x5640, "r", 0, SIZE_NONE, 611*3d8817e4Smiod cris_ver_v8_10, 612*3d8817e4Smiod cris_reg_mode_jump_op}, 613*3d8817e4Smiod 614*3d8817e4Smiod {"jir", 0xA930, 0x52c0, "s", 0, SIZE_FIX_32, 615*3d8817e4Smiod cris_ver_v8_10, 616*3d8817e4Smiod cris_none_reg_mode_jump_op}, 617*3d8817e4Smiod 618*3d8817e4Smiod {"jir", 0xA930, 0x52c0, "S", 0, SIZE_NONE, 619*3d8817e4Smiod cris_ver_v8_10, 620*3d8817e4Smiod cris_none_reg_mode_jump_op}, 621*3d8817e4Smiod 622*3d8817e4Smiod {"jirc", 0x29b0, 0xd640, "r", 0, SIZE_NONE, 623*3d8817e4Smiod cris_ver_v8_10, 624*3d8817e4Smiod cris_reg_mode_jump_op}, 625*3d8817e4Smiod 626*3d8817e4Smiod {"jirc", 0x2930, 0xd2c0, "s", 0, SIZE_FIX_32, 627*3d8817e4Smiod cris_ver_v8_10, 628*3d8817e4Smiod cris_none_reg_mode_jump_op}, 629*3d8817e4Smiod 630*3d8817e4Smiod {"jirc", 0x2930, 0xd2c0, "S", 0, SIZE_NONE, 631*3d8817e4Smiod cris_ver_v8_10, 632*3d8817e4Smiod cris_none_reg_mode_jump_op}, 633*3d8817e4Smiod 634*3d8817e4Smiod {"jsr", 0xB9b0, 0x4640, "r", 0, SIZE_NONE, 0, 635*3d8817e4Smiod cris_reg_mode_jump_op}, 636*3d8817e4Smiod 637*3d8817e4Smiod {"jsr", 0xB930, 0x42c0, "s", 0, SIZE_FIX_32, 638*3d8817e4Smiod cris_ver_v0_10, 639*3d8817e4Smiod cris_none_reg_mode_jump_op}, 640*3d8817e4Smiod 641*3d8817e4Smiod {"jsr", 0xBDBF, 0x4240, "N", 0, SIZE_FIX_32, 642*3d8817e4Smiod cris_ver_v32p, 643*3d8817e4Smiod cris_none_reg_mode_jump_op}, 644*3d8817e4Smiod 645*3d8817e4Smiod {"jsr", 0xB930, 0x42c0, "S", 0, SIZE_NONE, 646*3d8817e4Smiod cris_ver_v0_10, 647*3d8817e4Smiod cris_none_reg_mode_jump_op}, 648*3d8817e4Smiod 649*3d8817e4Smiod {"jsrc", 0x39b0, 0xc640, "r", 0, SIZE_NONE, 650*3d8817e4Smiod cris_ver_v8_10, 651*3d8817e4Smiod cris_reg_mode_jump_op}, 652*3d8817e4Smiod 653*3d8817e4Smiod {"jsrc", 0x3930, 0xc2c0, "s", 0, SIZE_FIX_32, 654*3d8817e4Smiod cris_ver_v8_10, 655*3d8817e4Smiod cris_none_reg_mode_jump_op}, 656*3d8817e4Smiod 657*3d8817e4Smiod {"jsrc", 0x3930, 0xc2c0, "S", 0, SIZE_NONE, 658*3d8817e4Smiod cris_ver_v8_10, 659*3d8817e4Smiod cris_none_reg_mode_jump_op}, 660*3d8817e4Smiod 661*3d8817e4Smiod {"jsrc", 0xBB30, 0x44C0, "r", 0, SIZE_NONE, 662*3d8817e4Smiod cris_ver_v32p, 663*3d8817e4Smiod cris_reg_mode_jump_op}, 664*3d8817e4Smiod 665*3d8817e4Smiod {"jsrc", 0xBF3F, 0x40C0, "N", 0, SIZE_FIX_32, 666*3d8817e4Smiod cris_ver_v32p, 667*3d8817e4Smiod cris_reg_mode_jump_op}, 668*3d8817e4Smiod 669*3d8817e4Smiod {"jump", 0x09b0, 0xF640, "r", 0, SIZE_NONE, 0, 670*3d8817e4Smiod cris_reg_mode_jump_op}, 671*3d8817e4Smiod 672*3d8817e4Smiod {"jump", 673*3d8817e4Smiod JUMP_INDIR_OPCODE, JUMP_INDIR_Z_BITS, "s", 0, SIZE_FIX_32, 674*3d8817e4Smiod cris_ver_v0_10, 675*3d8817e4Smiod cris_none_reg_mode_jump_op}, 676*3d8817e4Smiod 677*3d8817e4Smiod {"jump", 678*3d8817e4Smiod JUMP_INDIR_OPCODE, JUMP_INDIR_Z_BITS, "S", 0, SIZE_NONE, 679*3d8817e4Smiod cris_ver_v0_10, 680*3d8817e4Smiod cris_none_reg_mode_jump_op}, 681*3d8817e4Smiod 682*3d8817e4Smiod {"jump", 0x09F0, 0x060F, "P", 0, SIZE_NONE, 683*3d8817e4Smiod cris_ver_v32p, 684*3d8817e4Smiod cris_none_reg_mode_jump_op}, 685*3d8817e4Smiod 686*3d8817e4Smiod {"jump", 687*3d8817e4Smiod JUMP_PC_INCR_OPCODE_V32, 688*3d8817e4Smiod (0xffff & ~JUMP_PC_INCR_OPCODE_V32), "N", 0, SIZE_FIX_32, 689*3d8817e4Smiod cris_ver_v32p, 690*3d8817e4Smiod cris_none_reg_mode_jump_op}, 691*3d8817e4Smiod 692*3d8817e4Smiod {"jmpu", 0x8930, 0x72c0, "s", 0, SIZE_FIX_32, 693*3d8817e4Smiod cris_ver_v10, 694*3d8817e4Smiod cris_none_reg_mode_jump_op}, 695*3d8817e4Smiod 696*3d8817e4Smiod {"jmpu", 0x8930, 0x72c0, "S", 0, SIZE_NONE, 697*3d8817e4Smiod cris_ver_v10, 698*3d8817e4Smiod cris_none_reg_mode_jump_op}, 699*3d8817e4Smiod 700*3d8817e4Smiod {"lapc", 0x0970, 0x0680, "U,R", 0, SIZE_NONE, 701*3d8817e4Smiod cris_ver_v32p, 702*3d8817e4Smiod cris_not_implemented_op}, 703*3d8817e4Smiod 704*3d8817e4Smiod {"lapc", 0x0D7F, 0x0280, "dn,R", 0, SIZE_FIX_32, 705*3d8817e4Smiod cris_ver_v32p, 706*3d8817e4Smiod cris_not_implemented_op}, 707*3d8817e4Smiod 708*3d8817e4Smiod {"lapcq", 0x0970, 0x0680, "u,R", 0, SIZE_NONE, 709*3d8817e4Smiod cris_ver_v32p, 710*3d8817e4Smiod cris_addi_op}, 711*3d8817e4Smiod 712*3d8817e4Smiod {"lsl", 0x04C0, 0x0B00, "m r,R", 0, SIZE_NONE, 0, 713*3d8817e4Smiod cris_dstep_logshift_mstep_neg_not_op}, 714*3d8817e4Smiod 715*3d8817e4Smiod {"lslq", 0x03c0, 0x0C20, "c,R", 0, SIZE_NONE, 0, 716*3d8817e4Smiod cris_dstep_logshift_mstep_neg_not_op}, 717*3d8817e4Smiod 718*3d8817e4Smiod {"lsr", 0x07C0, 0x0800, "m r,R", 0, SIZE_NONE, 0, 719*3d8817e4Smiod cris_dstep_logshift_mstep_neg_not_op}, 720*3d8817e4Smiod 721*3d8817e4Smiod {"lsrq", 0x03e0, 0x0C00, "c,R", 0, SIZE_NONE, 0, 722*3d8817e4Smiod cris_dstep_logshift_mstep_neg_not_op}, 723*3d8817e4Smiod 724*3d8817e4Smiod {"lz", 0x0730, 0x08C0, "r,R", 0, SIZE_NONE, 725*3d8817e4Smiod cris_ver_v3p, 726*3d8817e4Smiod cris_not_implemented_op}, 727*3d8817e4Smiod 728*3d8817e4Smiod {"mcp", 0x07f0, 0x0800, "P,r", 0, SIZE_NONE, 729*3d8817e4Smiod cris_ver_v32p, 730*3d8817e4Smiod cris_not_implemented_op}, 731*3d8817e4Smiod 732*3d8817e4Smiod {"move", 0x0640, 0x0980, "m r,R", 0, SIZE_NONE, 0, 733*3d8817e4Smiod cris_reg_mode_add_sub_cmp_and_or_move_op}, 734*3d8817e4Smiod 735*3d8817e4Smiod {"move", 0x0A40, 0x0180, "m s,R", 0, SIZE_FIELD, 0, 736*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 737*3d8817e4Smiod 738*3d8817e4Smiod {"move", 0x0A40, 0x0180, "m S,D", 0, SIZE_NONE, 739*3d8817e4Smiod cris_ver_v0_10, 740*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 741*3d8817e4Smiod 742*3d8817e4Smiod {"move", 0x0630, 0x09c0, "r,P", 0, SIZE_NONE, 0, 743*3d8817e4Smiod cris_move_to_preg_op}, 744*3d8817e4Smiod 745*3d8817e4Smiod {"move", 0x0670, 0x0980, "P,r", 0, SIZE_NONE, 0, 746*3d8817e4Smiod cris_reg_mode_move_from_preg_op}, 747*3d8817e4Smiod 748*3d8817e4Smiod {"move", 0x0BC0, 0x0000, "m R,y", 0, SIZE_FIELD, 0, 749*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 750*3d8817e4Smiod 751*3d8817e4Smiod {"move", 0x0BC0, 0x0000, "m D,S", 0, SIZE_NONE, 752*3d8817e4Smiod cris_ver_v0_10, 753*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 754*3d8817e4Smiod 755*3d8817e4Smiod {"move", 756*3d8817e4Smiod MOVE_M_TO_PREG_OPCODE, MOVE_M_TO_PREG_ZBITS, 757*3d8817e4Smiod "s,P", 0, SIZE_SPEC_REG, 0, 758*3d8817e4Smiod cris_move_to_preg_op}, 759*3d8817e4Smiod 760*3d8817e4Smiod {"move", 0x0A30, 0x01c0, "S,P", 0, SIZE_NONE, 761*3d8817e4Smiod cris_ver_v0_10, 762*3d8817e4Smiod cris_move_to_preg_op}, 763*3d8817e4Smiod 764*3d8817e4Smiod {"move", 0x0A70, 0x0180, "P,y", 0, SIZE_SPEC_REG, 0, 765*3d8817e4Smiod cris_none_reg_mode_move_from_preg_op}, 766*3d8817e4Smiod 767*3d8817e4Smiod {"move", 0x0A70, 0x0180, "P,S", 0, SIZE_NONE, 768*3d8817e4Smiod cris_ver_v0_10, 769*3d8817e4Smiod cris_none_reg_mode_move_from_preg_op}, 770*3d8817e4Smiod 771*3d8817e4Smiod {"move", 0x0B70, 0x0480, "r,T", 0, SIZE_NONE, 772*3d8817e4Smiod cris_ver_v32p, 773*3d8817e4Smiod cris_not_implemented_op}, 774*3d8817e4Smiod 775*3d8817e4Smiod {"move", 0x0F70, 0x0080, "T,r", 0, SIZE_NONE, 776*3d8817e4Smiod cris_ver_v32p, 777*3d8817e4Smiod cris_not_implemented_op}, 778*3d8817e4Smiod 779*3d8817e4Smiod {"movem", 0x0BF0, 0x0000, "R,y", 0, SIZE_FIX_32, 0, 780*3d8817e4Smiod cris_move_reg_to_mem_movem_op}, 781*3d8817e4Smiod 782*3d8817e4Smiod {"movem", 0x0BF0, 0x0000, "D,S", 0, SIZE_NONE, 783*3d8817e4Smiod cris_ver_v0_10, 784*3d8817e4Smiod cris_move_reg_to_mem_movem_op}, 785*3d8817e4Smiod 786*3d8817e4Smiod {"movem", 0x0BB0, 0x0040, "s,R", 0, SIZE_FIX_32, 0, 787*3d8817e4Smiod cris_move_mem_to_reg_movem_op}, 788*3d8817e4Smiod 789*3d8817e4Smiod {"movem", 0x0BB0, 0x0040, "S,D", 0, SIZE_NONE, 790*3d8817e4Smiod cris_ver_v0_10, 791*3d8817e4Smiod cris_move_mem_to_reg_movem_op}, 792*3d8817e4Smiod 793*3d8817e4Smiod {"moveq", 0x0240, 0x0D80, "i,R", 0, SIZE_NONE, 0, 794*3d8817e4Smiod cris_quick_mode_and_cmp_move_or_op}, 795*3d8817e4Smiod 796*3d8817e4Smiod {"movs", 0x0460, 0x0B80, "z r,R", 0, SIZE_NONE, 0, 797*3d8817e4Smiod cris_reg_mode_add_sub_cmp_and_or_move_op}, 798*3d8817e4Smiod 799*3d8817e4Smiod /* FIXME: SIZE_FIELD_SIGNED and all necessary changes. */ 800*3d8817e4Smiod {"movs", 0x0860, 0x0380, "z s,R", 0, SIZE_FIELD, 0, 801*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 802*3d8817e4Smiod 803*3d8817e4Smiod {"movs", 0x0860, 0x0380, "z S,D", 0, SIZE_NONE, 804*3d8817e4Smiod cris_ver_v0_10, 805*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 806*3d8817e4Smiod 807*3d8817e4Smiod {"movu", 0x0440, 0x0Ba0, "z r,R", 0, SIZE_NONE, 0, 808*3d8817e4Smiod cris_reg_mode_add_sub_cmp_and_or_move_op}, 809*3d8817e4Smiod 810*3d8817e4Smiod /* FIXME: SIZE_FIELD_UNSIGNED and all necessary changes. */ 811*3d8817e4Smiod {"movu", 0x0840, 0x03a0, "z s,R", 0, SIZE_FIELD, 0, 812*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 813*3d8817e4Smiod 814*3d8817e4Smiod {"movu", 0x0840, 0x03a0, "z S,D", 0, SIZE_NONE, 815*3d8817e4Smiod cris_ver_v0_10, 816*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 817*3d8817e4Smiod 818*3d8817e4Smiod {"mstep", 0x07f0, 0x0800, "r,R", 0, SIZE_NONE, 819*3d8817e4Smiod cris_ver_v0_10, 820*3d8817e4Smiod cris_dstep_logshift_mstep_neg_not_op}, 821*3d8817e4Smiod 822*3d8817e4Smiod {"muls", 0x0d00, 0x02c0, "m r,R", 0, SIZE_NONE, 823*3d8817e4Smiod cris_ver_v10p, 824*3d8817e4Smiod cris_muls_op}, 825*3d8817e4Smiod 826*3d8817e4Smiod {"mulu", 0x0900, 0x06c0, "m r,R", 0, SIZE_NONE, 827*3d8817e4Smiod cris_ver_v10p, 828*3d8817e4Smiod cris_mulu_op}, 829*3d8817e4Smiod 830*3d8817e4Smiod {"neg", 0x0580, 0x0A40, "m r,R", 0, SIZE_NONE, 0, 831*3d8817e4Smiod cris_dstep_logshift_mstep_neg_not_op}, 832*3d8817e4Smiod 833*3d8817e4Smiod {"nop", NOP_OPCODE, NOP_Z_BITS, "", 0, SIZE_NONE, 834*3d8817e4Smiod cris_ver_v0_10, 835*3d8817e4Smiod cris_btst_nop_op}, 836*3d8817e4Smiod 837*3d8817e4Smiod {"nop", NOP_OPCODE_V32, NOP_Z_BITS_V32, "", 0, SIZE_NONE, 838*3d8817e4Smiod cris_ver_v32p, 839*3d8817e4Smiod cris_btst_nop_op}, 840*3d8817e4Smiod 841*3d8817e4Smiod {"not", 0x8770, 0x7880, "r", 0, SIZE_NONE, 0, 842*3d8817e4Smiod cris_dstep_logshift_mstep_neg_not_op}, 843*3d8817e4Smiod 844*3d8817e4Smiod {"or", 0x0740, 0x0880, "m r,R", 0, SIZE_NONE, 0, 845*3d8817e4Smiod cris_reg_mode_add_sub_cmp_and_or_move_op}, 846*3d8817e4Smiod 847*3d8817e4Smiod {"or", 0x0B40, 0x0080, "m s,R", 0, SIZE_FIELD, 0, 848*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 849*3d8817e4Smiod 850*3d8817e4Smiod {"or", 0x0B40, 0x0080, "m S,D", 0, SIZE_NONE, 851*3d8817e4Smiod cris_ver_v0_10, 852*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 853*3d8817e4Smiod 854*3d8817e4Smiod {"or", 0x0B40, 0x0480, "m S,R,r", 0, SIZE_NONE, 855*3d8817e4Smiod cris_ver_v0_10, 856*3d8817e4Smiod cris_three_operand_add_sub_cmp_and_or_op}, 857*3d8817e4Smiod 858*3d8817e4Smiod {"orq", 0x0340, 0x0C80, "i,R", 0, SIZE_NONE, 0, 859*3d8817e4Smiod cris_quick_mode_and_cmp_move_or_op}, 860*3d8817e4Smiod 861*3d8817e4Smiod {"pop", 0x0E6E, 0x0191, "!R", 0, SIZE_NONE, 862*3d8817e4Smiod cris_ver_v0_10, 863*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 864*3d8817e4Smiod 865*3d8817e4Smiod {"pop", 0x0e3e, 0x01c1, "!P", 0, SIZE_NONE, 866*3d8817e4Smiod cris_ver_v0_10, 867*3d8817e4Smiod cris_none_reg_mode_move_from_preg_op}, 868*3d8817e4Smiod 869*3d8817e4Smiod {"push", 0x0FEE, 0x0011, "BR", 0, SIZE_NONE, 870*3d8817e4Smiod cris_ver_v0_10, 871*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 872*3d8817e4Smiod 873*3d8817e4Smiod {"push", 0x0E7E, 0x0181, "BP", 0, SIZE_NONE, 874*3d8817e4Smiod cris_ver_v0_10, 875*3d8817e4Smiod cris_move_to_preg_op}, 876*3d8817e4Smiod 877*3d8817e4Smiod {"rbf", 0x3b30, 0xc0c0, "y", 0, SIZE_NONE, 878*3d8817e4Smiod cris_ver_v10, 879*3d8817e4Smiod cris_not_implemented_op}, 880*3d8817e4Smiod 881*3d8817e4Smiod {"rbf", 0x3b30, 0xc0c0, "S", 0, SIZE_NONE, 882*3d8817e4Smiod cris_ver_v10, 883*3d8817e4Smiod cris_not_implemented_op}, 884*3d8817e4Smiod 885*3d8817e4Smiod {"rfe", 0x2930, 0xD6CF, "", 0, SIZE_NONE, 886*3d8817e4Smiod cris_ver_v32p, 887*3d8817e4Smiod cris_not_implemented_op}, 888*3d8817e4Smiod 889*3d8817e4Smiod {"rfg", 0x4930, 0xB6CF, "", 0, SIZE_NONE, 890*3d8817e4Smiod cris_ver_v32p, 891*3d8817e4Smiod cris_not_implemented_op}, 892*3d8817e4Smiod 893*3d8817e4Smiod {"rfn", 0x5930, 0xA6CF, "", 0, SIZE_NONE, 894*3d8817e4Smiod cris_ver_v32p, 895*3d8817e4Smiod cris_not_implemented_op}, 896*3d8817e4Smiod 897*3d8817e4Smiod {"ret", 0xB67F, 0x4980, "", 1, SIZE_NONE, 898*3d8817e4Smiod cris_ver_v0_10, 899*3d8817e4Smiod cris_reg_mode_move_from_preg_op}, 900*3d8817e4Smiod 901*3d8817e4Smiod {"ret", 0xB9F0, 0x460F, "", 1, SIZE_NONE, 902*3d8817e4Smiod cris_ver_v32p, 903*3d8817e4Smiod cris_reg_mode_move_from_preg_op}, 904*3d8817e4Smiod 905*3d8817e4Smiod {"retb", 0xe67f, 0x1980, "", 1, SIZE_NONE, 906*3d8817e4Smiod cris_ver_v0_10, 907*3d8817e4Smiod cris_reg_mode_move_from_preg_op}, 908*3d8817e4Smiod 909*3d8817e4Smiod {"rete", 0xA9F0, 0x560F, "", 1, SIZE_NONE, 910*3d8817e4Smiod cris_ver_v32p, 911*3d8817e4Smiod cris_reg_mode_move_from_preg_op}, 912*3d8817e4Smiod 913*3d8817e4Smiod {"reti", 0xA67F, 0x5980, "", 1, SIZE_NONE, 914*3d8817e4Smiod cris_ver_v0_10, 915*3d8817e4Smiod cris_reg_mode_move_from_preg_op}, 916*3d8817e4Smiod 917*3d8817e4Smiod {"retn", 0xC9F0, 0x360F, "", 1, SIZE_NONE, 918*3d8817e4Smiod cris_ver_v32p, 919*3d8817e4Smiod cris_reg_mode_move_from_preg_op}, 920*3d8817e4Smiod 921*3d8817e4Smiod {"sbfs", 0x3b70, 0xc080, "y", 0, SIZE_NONE, 922*3d8817e4Smiod cris_ver_v10, 923*3d8817e4Smiod cris_not_implemented_op}, 924*3d8817e4Smiod 925*3d8817e4Smiod {"sbfs", 0x3b70, 0xc080, "S", 0, SIZE_NONE, 926*3d8817e4Smiod cris_ver_v10, 927*3d8817e4Smiod cris_not_implemented_op}, 928*3d8817e4Smiod 929*3d8817e4Smiod {"sa", 930*3d8817e4Smiod 0x0530+CC_A*0x1000, 931*3d8817e4Smiod 0x0AC0+(0xf-CC_A)*0x1000, "r", 0, SIZE_NONE, 0, 932*3d8817e4Smiod cris_scc_op}, 933*3d8817e4Smiod 934*3d8817e4Smiod {"ssb", 935*3d8817e4Smiod 0x0530+CC_EXT*0x1000, 936*3d8817e4Smiod 0x0AC0+(0xf-CC_EXT)*0x1000, "r", 0, SIZE_NONE, 937*3d8817e4Smiod cris_ver_v32p, 938*3d8817e4Smiod cris_scc_op}, 939*3d8817e4Smiod 940*3d8817e4Smiod {"scc", 941*3d8817e4Smiod 0x0530+CC_CC*0x1000, 942*3d8817e4Smiod 0x0AC0+(0xf-CC_CC)*0x1000, "r", 0, SIZE_NONE, 0, 943*3d8817e4Smiod cris_scc_op}, 944*3d8817e4Smiod 945*3d8817e4Smiod {"scs", 946*3d8817e4Smiod 0x0530+CC_CS*0x1000, 947*3d8817e4Smiod 0x0AC0+(0xf-CC_CS)*0x1000, "r", 0, SIZE_NONE, 0, 948*3d8817e4Smiod cris_scc_op}, 949*3d8817e4Smiod 950*3d8817e4Smiod {"seq", 951*3d8817e4Smiod 0x0530+CC_EQ*0x1000, 952*3d8817e4Smiod 0x0AC0+(0xf-CC_EQ)*0x1000, "r", 0, SIZE_NONE, 0, 953*3d8817e4Smiod cris_scc_op}, 954*3d8817e4Smiod 955*3d8817e4Smiod {"setf", 0x05b0, 0x0A40, "f", 0, SIZE_NONE, 0, 956*3d8817e4Smiod cris_ax_ei_setf_op}, 957*3d8817e4Smiod 958*3d8817e4Smiod {"sfe", 0x3930, 0xC6CF, "", 0, SIZE_NONE, 959*3d8817e4Smiod cris_ver_v32p, 960*3d8817e4Smiod cris_not_implemented_op}, 961*3d8817e4Smiod 962*3d8817e4Smiod /* Need to have "swf" in front of "sext" so it is the one displayed in 963*3d8817e4Smiod disassembly. */ 964*3d8817e4Smiod {"swf", 965*3d8817e4Smiod 0x0530+CC_EXT*0x1000, 966*3d8817e4Smiod 0x0AC0+(0xf-CC_EXT)*0x1000, "r", 0, SIZE_NONE, 967*3d8817e4Smiod cris_ver_v10, 968*3d8817e4Smiod cris_scc_op}, 969*3d8817e4Smiod 970*3d8817e4Smiod {"sext", 971*3d8817e4Smiod 0x0530+CC_EXT*0x1000, 972*3d8817e4Smiod 0x0AC0+(0xf-CC_EXT)*0x1000, "r", 0, SIZE_NONE, 973*3d8817e4Smiod cris_ver_v0_3, 974*3d8817e4Smiod cris_scc_op}, 975*3d8817e4Smiod 976*3d8817e4Smiod {"sge", 977*3d8817e4Smiod 0x0530+CC_GE*0x1000, 978*3d8817e4Smiod 0x0AC0+(0xf-CC_GE)*0x1000, "r", 0, SIZE_NONE, 0, 979*3d8817e4Smiod cris_scc_op}, 980*3d8817e4Smiod 981*3d8817e4Smiod {"sgt", 982*3d8817e4Smiod 0x0530+CC_GT*0x1000, 983*3d8817e4Smiod 0x0AC0+(0xf-CC_GT)*0x1000, "r", 0, SIZE_NONE, 0, 984*3d8817e4Smiod cris_scc_op}, 985*3d8817e4Smiod 986*3d8817e4Smiod {"shi", 987*3d8817e4Smiod 0x0530+CC_HI*0x1000, 988*3d8817e4Smiod 0x0AC0+(0xf-CC_HI)*0x1000, "r", 0, SIZE_NONE, 0, 989*3d8817e4Smiod cris_scc_op}, 990*3d8817e4Smiod 991*3d8817e4Smiod {"shs", 992*3d8817e4Smiod 0x0530+CC_HS*0x1000, 993*3d8817e4Smiod 0x0AC0+(0xf-CC_HS)*0x1000, "r", 0, SIZE_NONE, 0, 994*3d8817e4Smiod cris_scc_op}, 995*3d8817e4Smiod 996*3d8817e4Smiod {"sle", 997*3d8817e4Smiod 0x0530+CC_LE*0x1000, 998*3d8817e4Smiod 0x0AC0+(0xf-CC_LE)*0x1000, "r", 0, SIZE_NONE, 0, 999*3d8817e4Smiod cris_scc_op}, 1000*3d8817e4Smiod 1001*3d8817e4Smiod {"slo", 1002*3d8817e4Smiod 0x0530+CC_LO*0x1000, 1003*3d8817e4Smiod 0x0AC0+(0xf-CC_LO)*0x1000, "r", 0, SIZE_NONE, 0, 1004*3d8817e4Smiod cris_scc_op}, 1005*3d8817e4Smiod 1006*3d8817e4Smiod {"sls", 1007*3d8817e4Smiod 0x0530+CC_LS*0x1000, 1008*3d8817e4Smiod 0x0AC0+(0xf-CC_LS)*0x1000, "r", 0, SIZE_NONE, 0, 1009*3d8817e4Smiod cris_scc_op}, 1010*3d8817e4Smiod 1011*3d8817e4Smiod {"slt", 1012*3d8817e4Smiod 0x0530+CC_LT*0x1000, 1013*3d8817e4Smiod 0x0AC0+(0xf-CC_LT)*0x1000, "r", 0, SIZE_NONE, 0, 1014*3d8817e4Smiod cris_scc_op}, 1015*3d8817e4Smiod 1016*3d8817e4Smiod {"smi", 1017*3d8817e4Smiod 0x0530+CC_MI*0x1000, 1018*3d8817e4Smiod 0x0AC0+(0xf-CC_MI)*0x1000, "r", 0, SIZE_NONE, 0, 1019*3d8817e4Smiod cris_scc_op}, 1020*3d8817e4Smiod 1021*3d8817e4Smiod {"sne", 1022*3d8817e4Smiod 0x0530+CC_NE*0x1000, 1023*3d8817e4Smiod 0x0AC0+(0xf-CC_NE)*0x1000, "r", 0, SIZE_NONE, 0, 1024*3d8817e4Smiod cris_scc_op}, 1025*3d8817e4Smiod 1026*3d8817e4Smiod {"spl", 1027*3d8817e4Smiod 0x0530+CC_PL*0x1000, 1028*3d8817e4Smiod 0x0AC0+(0xf-CC_PL)*0x1000, "r", 0, SIZE_NONE, 0, 1029*3d8817e4Smiod cris_scc_op}, 1030*3d8817e4Smiod 1031*3d8817e4Smiod {"sub", 0x0680, 0x0940, "m r,R", 0, SIZE_NONE, 0, 1032*3d8817e4Smiod cris_reg_mode_add_sub_cmp_and_or_move_op}, 1033*3d8817e4Smiod 1034*3d8817e4Smiod {"sub", 0x0a80, 0x0140, "m s,R", 0, SIZE_FIELD, 0, 1035*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 1036*3d8817e4Smiod 1037*3d8817e4Smiod {"sub", 0x0a80, 0x0140, "m S,D", 0, SIZE_NONE, 1038*3d8817e4Smiod cris_ver_v0_10, 1039*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 1040*3d8817e4Smiod 1041*3d8817e4Smiod {"sub", 0x0a80, 0x0540, "m S,R,r", 0, SIZE_NONE, 1042*3d8817e4Smiod cris_ver_v0_10, 1043*3d8817e4Smiod cris_three_operand_add_sub_cmp_and_or_op}, 1044*3d8817e4Smiod 1045*3d8817e4Smiod {"subq", 0x0280, 0x0d40, "I,R", 0, SIZE_NONE, 0, 1046*3d8817e4Smiod cris_quick_mode_add_sub_op}, 1047*3d8817e4Smiod 1048*3d8817e4Smiod {"subs", 0x04a0, 0x0b40, "z r,R", 0, SIZE_NONE, 0, 1049*3d8817e4Smiod cris_reg_mode_add_sub_cmp_and_or_move_op}, 1050*3d8817e4Smiod 1051*3d8817e4Smiod /* FIXME: SIZE_FIELD_SIGNED and all necessary changes. */ 1052*3d8817e4Smiod {"subs", 0x08a0, 0x0340, "z s,R", 0, SIZE_FIELD, 0, 1053*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 1054*3d8817e4Smiod 1055*3d8817e4Smiod {"subs", 0x08a0, 0x0340, "z S,D", 0, SIZE_NONE, 1056*3d8817e4Smiod cris_ver_v0_10, 1057*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 1058*3d8817e4Smiod 1059*3d8817e4Smiod {"subs", 0x08a0, 0x0740, "z S,R,r", 0, SIZE_NONE, 1060*3d8817e4Smiod cris_ver_v0_10, 1061*3d8817e4Smiod cris_three_operand_add_sub_cmp_and_or_op}, 1062*3d8817e4Smiod 1063*3d8817e4Smiod {"subu", 0x0480, 0x0b60, "z r,R", 0, SIZE_NONE, 0, 1064*3d8817e4Smiod cris_reg_mode_add_sub_cmp_and_or_move_op}, 1065*3d8817e4Smiod 1066*3d8817e4Smiod /* FIXME: SIZE_FIELD_UNSIGNED and all necessary changes. */ 1067*3d8817e4Smiod {"subu", 0x0880, 0x0360, "z s,R", 0, SIZE_FIELD, 0, 1068*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 1069*3d8817e4Smiod 1070*3d8817e4Smiod {"subu", 0x0880, 0x0360, "z S,D", 0, SIZE_NONE, 1071*3d8817e4Smiod cris_ver_v0_10, 1072*3d8817e4Smiod cris_none_reg_mode_add_sub_cmp_and_or_move_op}, 1073*3d8817e4Smiod 1074*3d8817e4Smiod {"subu", 0x0880, 0x0760, "z S,R,r", 0, SIZE_NONE, 1075*3d8817e4Smiod cris_ver_v0_10, 1076*3d8817e4Smiod cris_three_operand_add_sub_cmp_and_or_op}, 1077*3d8817e4Smiod 1078*3d8817e4Smiod {"svc", 1079*3d8817e4Smiod 0x0530+CC_VC*0x1000, 1080*3d8817e4Smiod 0x0AC0+(0xf-CC_VC)*0x1000, "r", 0, SIZE_NONE, 0, 1081*3d8817e4Smiod cris_scc_op}, 1082*3d8817e4Smiod 1083*3d8817e4Smiod {"svs", 1084*3d8817e4Smiod 0x0530+CC_VS*0x1000, 1085*3d8817e4Smiod 0x0AC0+(0xf-CC_VS)*0x1000, "r", 0, SIZE_NONE, 0, 1086*3d8817e4Smiod cris_scc_op}, 1087*3d8817e4Smiod 1088*3d8817e4Smiod /* The insn "swapn" is the same as "not" and will be disassembled as 1089*3d8817e4Smiod such, but the swap* family of mnmonics are generally v8-and-higher 1090*3d8817e4Smiod only, so count it in. */ 1091*3d8817e4Smiod {"swapn", 0x8770, 0x7880, "r", 0, SIZE_NONE, 1092*3d8817e4Smiod cris_ver_v8p, 1093*3d8817e4Smiod cris_not_implemented_op}, 1094*3d8817e4Smiod 1095*3d8817e4Smiod {"swapw", 0x4770, 0xb880, "r", 0, SIZE_NONE, 1096*3d8817e4Smiod cris_ver_v8p, 1097*3d8817e4Smiod cris_not_implemented_op}, 1098*3d8817e4Smiod 1099*3d8817e4Smiod {"swapnw", 0xc770, 0x3880, "r", 0, SIZE_NONE, 1100*3d8817e4Smiod cris_ver_v8p, 1101*3d8817e4Smiod cris_not_implemented_op}, 1102*3d8817e4Smiod 1103*3d8817e4Smiod {"swapb", 0x2770, 0xd880, "r", 0, SIZE_NONE, 1104*3d8817e4Smiod cris_ver_v8p, 1105*3d8817e4Smiod cris_not_implemented_op}, 1106*3d8817e4Smiod 1107*3d8817e4Smiod {"swapnb", 0xA770, 0x5880, "r", 0, SIZE_NONE, 1108*3d8817e4Smiod cris_ver_v8p, 1109*3d8817e4Smiod cris_not_implemented_op}, 1110*3d8817e4Smiod 1111*3d8817e4Smiod {"swapwb", 0x6770, 0x9880, "r", 0, SIZE_NONE, 1112*3d8817e4Smiod cris_ver_v8p, 1113*3d8817e4Smiod cris_not_implemented_op}, 1114*3d8817e4Smiod 1115*3d8817e4Smiod {"swapnwb", 0xE770, 0x1880, "r", 0, SIZE_NONE, 1116*3d8817e4Smiod cris_ver_v8p, 1117*3d8817e4Smiod cris_not_implemented_op}, 1118*3d8817e4Smiod 1119*3d8817e4Smiod {"swapr", 0x1770, 0xe880, "r", 0, SIZE_NONE, 1120*3d8817e4Smiod cris_ver_v8p, 1121*3d8817e4Smiod cris_not_implemented_op}, 1122*3d8817e4Smiod 1123*3d8817e4Smiod {"swapnr", 0x9770, 0x6880, "r", 0, SIZE_NONE, 1124*3d8817e4Smiod cris_ver_v8p, 1125*3d8817e4Smiod cris_not_implemented_op}, 1126*3d8817e4Smiod 1127*3d8817e4Smiod {"swapwr", 0x5770, 0xa880, "r", 0, SIZE_NONE, 1128*3d8817e4Smiod cris_ver_v8p, 1129*3d8817e4Smiod cris_not_implemented_op}, 1130*3d8817e4Smiod 1131*3d8817e4Smiod {"swapnwr", 0xd770, 0x2880, "r", 0, SIZE_NONE, 1132*3d8817e4Smiod cris_ver_v8p, 1133*3d8817e4Smiod cris_not_implemented_op}, 1134*3d8817e4Smiod 1135*3d8817e4Smiod {"swapbr", 0x3770, 0xc880, "r", 0, SIZE_NONE, 1136*3d8817e4Smiod cris_ver_v8p, 1137*3d8817e4Smiod cris_not_implemented_op}, 1138*3d8817e4Smiod 1139*3d8817e4Smiod {"swapnbr", 0xb770, 0x4880, "r", 0, SIZE_NONE, 1140*3d8817e4Smiod cris_ver_v8p, 1141*3d8817e4Smiod cris_not_implemented_op}, 1142*3d8817e4Smiod 1143*3d8817e4Smiod {"swapwbr", 0x7770, 0x8880, "r", 0, SIZE_NONE, 1144*3d8817e4Smiod cris_ver_v8p, 1145*3d8817e4Smiod cris_not_implemented_op}, 1146*3d8817e4Smiod 1147*3d8817e4Smiod {"swapnwbr", 0xf770, 0x0880, "r", 0, SIZE_NONE, 1148*3d8817e4Smiod cris_ver_v8p, 1149*3d8817e4Smiod cris_not_implemented_op}, 1150*3d8817e4Smiod 1151*3d8817e4Smiod {"test", 0x0640, 0x0980, "m D", 0, SIZE_NONE, 1152*3d8817e4Smiod cris_ver_v0_10, 1153*3d8817e4Smiod cris_reg_mode_test_op}, 1154*3d8817e4Smiod 1155*3d8817e4Smiod {"test", 0x0b80, 0xf040, "m y", 0, SIZE_FIELD, 0, 1156*3d8817e4Smiod cris_none_reg_mode_clear_test_op}, 1157*3d8817e4Smiod 1158*3d8817e4Smiod {"test", 0x0b80, 0xf040, "m S", 0, SIZE_NONE, 1159*3d8817e4Smiod cris_ver_v0_10, 1160*3d8817e4Smiod cris_none_reg_mode_clear_test_op}, 1161*3d8817e4Smiod 1162*3d8817e4Smiod {"xor", 0x07B0, 0x0840, "r,R", 0, SIZE_NONE, 0, 1163*3d8817e4Smiod cris_xor_op}, 1164*3d8817e4Smiod 1165*3d8817e4Smiod {NULL, 0, 0, NULL, 0, 0, 0, cris_not_implemented_op} 1166*3d8817e4Smiod }; 1167*3d8817e4Smiod 1168*3d8817e4Smiod /* Condition-names, indexed by the CC_* numbers as found in cris.h. */ 1169*3d8817e4Smiod const char * const 1170*3d8817e4Smiod cris_cc_strings[] = 1171*3d8817e4Smiod { 1172*3d8817e4Smiod "hs", 1173*3d8817e4Smiod "lo", 1174*3d8817e4Smiod "ne", 1175*3d8817e4Smiod "eq", 1176*3d8817e4Smiod "vc", 1177*3d8817e4Smiod "vs", 1178*3d8817e4Smiod "pl", 1179*3d8817e4Smiod "mi", 1180*3d8817e4Smiod "ls", 1181*3d8817e4Smiod "hi", 1182*3d8817e4Smiod "ge", 1183*3d8817e4Smiod "lt", 1184*3d8817e4Smiod "gt", 1185*3d8817e4Smiod "le", 1186*3d8817e4Smiod "a", 1187*3d8817e4Smiod /* This is a placeholder. In v0, this would be "ext". In v32, this 1188*3d8817e4Smiod is "sb". See cris_conds15. */ 1189*3d8817e4Smiod "wf" 1190*3d8817e4Smiod }; 1191*3d8817e4Smiod 1192*3d8817e4Smiod /* Different names and semantics for condition 1111 (0xf). */ 1193*3d8817e4Smiod const struct cris_cond15 cris_cond15s[] = 1194*3d8817e4Smiod { 1195*3d8817e4Smiod /* FIXME: In what version did condition "ext" disappear? */ 1196*3d8817e4Smiod {"ext", cris_ver_v0_3}, 1197*3d8817e4Smiod {"wf", cris_ver_v10}, 1198*3d8817e4Smiod {"sb", cris_ver_v32p}, 1199*3d8817e4Smiod {NULL, 0} 1200*3d8817e4Smiod }; 1201*3d8817e4Smiod 1202*3d8817e4Smiod 1203*3d8817e4Smiod /* 1204*3d8817e4Smiod * Local variables: 1205*3d8817e4Smiod * eval: (c-set-style "gnu") 1206*3d8817e4Smiod * indent-tabs-mode: t 1207*3d8817e4Smiod * End: 1208*3d8817e4Smiod */ 1209