1a5a4af3bSchristos /* tic30.h -- Header file for TI TMS320C30 opcode table 2*8b657b07Schristos Copyright (C) 1998-2022 Free Software Foundation, Inc. 3a5a4af3bSchristos Contributed by Steven Haworth (steve@pm.cse.rmit.edu.au) 4a5a4af3bSchristos 5a5a4af3bSchristos This file is part of GDB, GAS, and the GNU binutils. 6a5a4af3bSchristos 7a5a4af3bSchristos GDB, GAS, and the GNU binutils are free software; you can redistribute 8a5a4af3bSchristos them and/or modify them under the terms of the GNU General Public 9a5a4af3bSchristos License as published by the Free Software Foundation; either version 3, 10a5a4af3bSchristos or (at your option) any later version. 11a5a4af3bSchristos 12a5a4af3bSchristos GDB, GAS, and the GNU binutils are distributed in the hope that they 13a5a4af3bSchristos will be useful, but WITHOUT ANY WARRANTY; without even the implied 14a5a4af3bSchristos warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 15a5a4af3bSchristos the GNU General Public License for more details. 16a5a4af3bSchristos 17a5a4af3bSchristos You should have received a copy of the GNU General Public License 18a5a4af3bSchristos along with this file; see the file COPYING3. If not, write to the Free 19a5a4af3bSchristos Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 20a5a4af3bSchristos 02110-1301, USA. */ 21a5a4af3bSchristos 22a5a4af3bSchristos /* FIXME: The opcode table should be in opcodes/tic30-opc.c, not in a 23a5a4af3bSchristos header file. */ 24a5a4af3bSchristos 25a5a4af3bSchristos #ifndef _TMS320_H_ 26a5a4af3bSchristos #define _TMS320_H_ 27a5a4af3bSchristos 28a5a4af3bSchristos struct _register 29a5a4af3bSchristos { 30e5cb852cSchristos const char *name; 31a5a4af3bSchristos unsigned char opcode; 32a5a4af3bSchristos unsigned char regtype; 33a5a4af3bSchristos }; 34a5a4af3bSchristos 35a5a4af3bSchristos typedef struct _register reg; 36a5a4af3bSchristos 37a5a4af3bSchristos #define REG_Rn 0x01 38a5a4af3bSchristos #define REG_ARn 0x02 39a5a4af3bSchristos #define REG_DP 0x03 40a5a4af3bSchristos #define REG_OTHER 0x04 41a5a4af3bSchristos 42a5a4af3bSchristos static const reg tic30_regtab[] = { 43a5a4af3bSchristos { "r0", 0x00, REG_Rn }, 44a5a4af3bSchristos { "r1", 0x01, REG_Rn }, 45a5a4af3bSchristos { "r2", 0x02, REG_Rn }, 46a5a4af3bSchristos { "r3", 0x03, REG_Rn }, 47a5a4af3bSchristos { "r4", 0x04, REG_Rn }, 48a5a4af3bSchristos { "r5", 0x05, REG_Rn }, 49a5a4af3bSchristos { "r6", 0x06, REG_Rn }, 50a5a4af3bSchristos { "r7", 0x07, REG_Rn }, 51a5a4af3bSchristos { "ar0",0x08, REG_ARn }, 52a5a4af3bSchristos { "ar1",0x09, REG_ARn }, 53a5a4af3bSchristos { "ar2",0x0A, REG_ARn }, 54a5a4af3bSchristos { "ar3",0x0B, REG_ARn }, 55a5a4af3bSchristos { "ar4",0x0C, REG_ARn }, 56a5a4af3bSchristos { "ar5",0x0D, REG_ARn }, 57a5a4af3bSchristos { "ar6",0x0E, REG_ARn }, 58a5a4af3bSchristos { "ar7",0x0F, REG_ARn }, 59a5a4af3bSchristos { "dp", 0x10, REG_DP }, 60a5a4af3bSchristos { "ir0",0x11, REG_OTHER }, 61a5a4af3bSchristos { "ir1",0x12, REG_OTHER }, 62a5a4af3bSchristos { "bk", 0x13, REG_OTHER }, 63a5a4af3bSchristos { "sp", 0x14, REG_OTHER }, 64a5a4af3bSchristos { "st", 0x15, REG_OTHER }, 65a5a4af3bSchristos { "ie", 0x16, REG_OTHER }, 66a5a4af3bSchristos { "if", 0x17, REG_OTHER }, 67a5a4af3bSchristos { "iof",0x18, REG_OTHER }, 68a5a4af3bSchristos { "rs", 0x19, REG_OTHER }, 69a5a4af3bSchristos { "re", 0x1A, REG_OTHER }, 70a5a4af3bSchristos { "rc", 0x1B, REG_OTHER }, 71a5a4af3bSchristos { "R0", 0x00, REG_Rn }, 72a5a4af3bSchristos { "R1", 0x01, REG_Rn }, 73a5a4af3bSchristos { "R2", 0x02, REG_Rn }, 74a5a4af3bSchristos { "R3", 0x03, REG_Rn }, 75a5a4af3bSchristos { "R4", 0x04, REG_Rn }, 76a5a4af3bSchristos { "R5", 0x05, REG_Rn }, 77a5a4af3bSchristos { "R6", 0x06, REG_Rn }, 78a5a4af3bSchristos { "R7", 0x07, REG_Rn }, 79a5a4af3bSchristos { "AR0",0x08, REG_ARn }, 80a5a4af3bSchristos { "AR1",0x09, REG_ARn }, 81a5a4af3bSchristos { "AR2",0x0A, REG_ARn }, 82a5a4af3bSchristos { "AR3",0x0B, REG_ARn }, 83a5a4af3bSchristos { "AR4",0x0C, REG_ARn }, 84a5a4af3bSchristos { "AR5",0x0D, REG_ARn }, 85a5a4af3bSchristos { "AR6",0x0E, REG_ARn }, 86a5a4af3bSchristos { "AR7",0x0F, REG_ARn }, 87a5a4af3bSchristos { "DP", 0x10, REG_DP }, 88a5a4af3bSchristos { "IR0",0x11, REG_OTHER }, 89a5a4af3bSchristos { "IR1",0x12, REG_OTHER }, 90a5a4af3bSchristos { "BK", 0x13, REG_OTHER }, 91a5a4af3bSchristos { "SP", 0x14, REG_OTHER }, 92a5a4af3bSchristos { "ST", 0x15, REG_OTHER }, 93a5a4af3bSchristos { "IE", 0x16, REG_OTHER }, 94a5a4af3bSchristos { "IF", 0x17, REG_OTHER }, 95a5a4af3bSchristos { "IOF",0x18, REG_OTHER }, 96a5a4af3bSchristos { "RS", 0x19, REG_OTHER }, 97a5a4af3bSchristos { "RE", 0x1A, REG_OTHER }, 98a5a4af3bSchristos { "RC", 0x1B, REG_OTHER }, 99a5a4af3bSchristos { "", 0, 0 } 100a5a4af3bSchristos }; 101a5a4af3bSchristos 102a5a4af3bSchristos static const reg *const tic30_regtab_end 103a5a4af3bSchristos = tic30_regtab + sizeof(tic30_regtab)/sizeof(tic30_regtab[0]); 104a5a4af3bSchristos 105a5a4af3bSchristos /* Indirect Addressing Modes Modification Fields */ 106a5a4af3bSchristos /* Indirect Addressing with Displacement */ 107a5a4af3bSchristos #define PreDisp_Add 0x00 108a5a4af3bSchristos #define PreDisp_Sub 0x01 109a5a4af3bSchristos #define PreDisp_Add_Mod 0x02 110a5a4af3bSchristos #define PreDisp_Sub_Mod 0x03 111a5a4af3bSchristos #define PostDisp_Add_Mod 0x04 112a5a4af3bSchristos #define PostDisp_Sub_Mod 0x05 113a5a4af3bSchristos #define PostDisp_Add_Circ 0x06 114a5a4af3bSchristos #define PostDisp_Sub_Circ 0x07 115a5a4af3bSchristos /* Indirect Addressing with Index Register IR0 */ 116a5a4af3bSchristos #define PreIR0_Add 0x08 117a5a4af3bSchristos #define PreIR0_Sub 0x09 118a5a4af3bSchristos #define PreIR0_Add_Mod 0x0A 119a5a4af3bSchristos #define PreIR0_Sub_Mod 0x0B 120a5a4af3bSchristos #define PostIR0_Add_Mod 0x0C 121a5a4af3bSchristos #define PostIR0_Sub_Mod 0x0D 122a5a4af3bSchristos #define PostIR0_Add_Circ 0x0E 123a5a4af3bSchristos #define PostIR0_Sub_Circ 0x0F 124a5a4af3bSchristos /* Indirect Addressing with Index Register IR1 */ 125a5a4af3bSchristos #define PreIR1_Add 0x10 126a5a4af3bSchristos #define PreIR1_Sub 0x11 127a5a4af3bSchristos #define PreIR1_Add_Mod 0x12 128a5a4af3bSchristos #define PreIR1_Sub_Mod 0x13 129a5a4af3bSchristos #define PostIR1_Add_Mod 0x14 130a5a4af3bSchristos #define PostIR1_Sub_Mod 0x15 131a5a4af3bSchristos #define PostIR1_Add_Circ 0x16 132a5a4af3bSchristos #define PostIR1_Sub_Circ 0x17 133a5a4af3bSchristos /* Indirect Addressing (Special Cases) */ 134a5a4af3bSchristos #define IndirectOnly 0x18 135a5a4af3bSchristos #define PostIR0_Add_BitRev 0x19 136a5a4af3bSchristos 137a5a4af3bSchristos typedef struct { 138e5cb852cSchristos const char *syntax; 139a5a4af3bSchristos unsigned char modfield; 140a5a4af3bSchristos unsigned char displacement; 141a5a4af3bSchristos } ind_addr_type; 142a5a4af3bSchristos 143a5a4af3bSchristos #define IMPLIED_DISP 0x01 144a5a4af3bSchristos #define DISP_REQUIRED 0x02 145a5a4af3bSchristos #define NO_DISP 0x03 146a5a4af3bSchristos 147a5a4af3bSchristos static const ind_addr_type tic30_indaddr_tab[] = { 148a5a4af3bSchristos { "*+ar", PreDisp_Add, IMPLIED_DISP }, 149a5a4af3bSchristos { "*-ar", PreDisp_Sub, IMPLIED_DISP }, 150a5a4af3bSchristos { "*++ar", PreDisp_Add_Mod, IMPLIED_DISP }, 151a5a4af3bSchristos { "*--ar", PreDisp_Sub_Mod, IMPLIED_DISP }, 152a5a4af3bSchristos { "*ar++", PostDisp_Add_Mod, IMPLIED_DISP }, 153a5a4af3bSchristos { "*ar--", PostDisp_Sub_Mod, IMPLIED_DISP }, 154a5a4af3bSchristos { "*ar++%", PostDisp_Add_Circ, IMPLIED_DISP }, 155a5a4af3bSchristos { "*ar--%", PostDisp_Sub_Circ, IMPLIED_DISP }, 156a5a4af3bSchristos { "*+ar()", PreDisp_Add, DISP_REQUIRED }, 157a5a4af3bSchristos { "*-ar()", PreDisp_Sub, DISP_REQUIRED }, 158a5a4af3bSchristos { "*++ar()", PreDisp_Add_Mod, DISP_REQUIRED }, 159a5a4af3bSchristos { "*--ar()", PreDisp_Sub_Mod, DISP_REQUIRED }, 160a5a4af3bSchristos { "*ar++()", PostDisp_Add_Mod, DISP_REQUIRED }, 161a5a4af3bSchristos { "*ar--()", PostDisp_Sub_Mod, DISP_REQUIRED }, 162a5a4af3bSchristos { "*ar++()%", PostDisp_Add_Circ, DISP_REQUIRED }, 163a5a4af3bSchristos { "*ar--()%", PostDisp_Sub_Circ, DISP_REQUIRED }, 164a5a4af3bSchristos { "*+ar(ir0)", PreIR0_Add, NO_DISP }, 165a5a4af3bSchristos { "*-ar(ir0)", PreIR0_Sub, NO_DISP }, 166a5a4af3bSchristos { "*++ar(ir0)", PreIR0_Add_Mod, NO_DISP }, 167a5a4af3bSchristos { "*--ar(ir0)", PreIR0_Sub_Mod, NO_DISP }, 168a5a4af3bSchristos { "*ar++(ir0)", PostIR0_Add_Mod, NO_DISP }, 169a5a4af3bSchristos { "*ar--(ir0)", PostIR0_Sub_Mod, NO_DISP }, 170a5a4af3bSchristos { "*ar++(ir0)%",PostIR0_Add_Circ, NO_DISP }, 171a5a4af3bSchristos { "*ar--(ir0)%",PostIR0_Sub_Circ, NO_DISP }, 172a5a4af3bSchristos { "*+ar(ir1)", PreIR1_Add, NO_DISP }, 173a5a4af3bSchristos { "*-ar(ir1)", PreIR1_Sub, NO_DISP }, 174a5a4af3bSchristos { "*++ar(ir1)", PreIR1_Add_Mod, NO_DISP }, 175a5a4af3bSchristos { "*--ar(ir1)", PreIR1_Sub_Mod, NO_DISP }, 176a5a4af3bSchristos { "*ar++(ir1)", PostIR1_Add_Mod, NO_DISP }, 177a5a4af3bSchristos { "*ar--(ir1)", PostIR1_Sub_Mod, NO_DISP }, 178a5a4af3bSchristos { "*ar++(ir1)%",PostIR1_Add_Circ, NO_DISP }, 179a5a4af3bSchristos { "*ar--(ir1)%",PostIR1_Sub_Circ, NO_DISP }, 180a5a4af3bSchristos { "*ar", IndirectOnly, NO_DISP }, 181a5a4af3bSchristos { "*ar++(ir0)b",PostIR0_Add_BitRev, NO_DISP }, 182a5a4af3bSchristos { "", 0,0 } 183a5a4af3bSchristos }; 184a5a4af3bSchristos 185a5a4af3bSchristos static const ind_addr_type *const tic30_indaddrtab_end 186a5a4af3bSchristos = tic30_indaddr_tab + sizeof(tic30_indaddr_tab)/sizeof(tic30_indaddr_tab[0]); 187a5a4af3bSchristos 188a5a4af3bSchristos /* Possible operand types */ 189a5a4af3bSchristos /* Register types */ 190a5a4af3bSchristos #define Rn 0x0001 191a5a4af3bSchristos #define ARn 0x0002 192a5a4af3bSchristos #define DPReg 0x0004 193a5a4af3bSchristos #define OtherReg 0x0008 194a5a4af3bSchristos /* Addressing mode types */ 195a5a4af3bSchristos #define Direct 0x0010 196a5a4af3bSchristos #define Indirect 0x0020 197a5a4af3bSchristos #define Imm16 0x0040 198a5a4af3bSchristos #define Disp 0x0080 199a5a4af3bSchristos #define Imm24 0x0100 200a5a4af3bSchristos #define Abs24 0x0200 201a5a4af3bSchristos /* 3 operand addressing mode types */ 202a5a4af3bSchristos #define op3T1 0x0400 203a5a4af3bSchristos #define op3T2 0x0800 204a5a4af3bSchristos /* Interrupt vector */ 205a5a4af3bSchristos #define IVector 0x1000 206a5a4af3bSchristos /* Not required */ 207a5a4af3bSchristos #define NotReq 0x2000 208a5a4af3bSchristos 209a5a4af3bSchristos #define GAddr1 Rn | Direct | Indirect | Imm16 210a5a4af3bSchristos #define GAddr2 GAddr1 | AllReg 211a5a4af3bSchristos #define TAddr1 op3T1 | Rn | Indirect 212a5a4af3bSchristos #define TAddr2 op3T2 | Rn | Indirect 213a5a4af3bSchristos #define Reg Rn | ARn 214a5a4af3bSchristos #define AllReg Reg | DPReg | OtherReg 215a5a4af3bSchristos 216a5a4af3bSchristos typedef struct _template 217a5a4af3bSchristos { 218e5cb852cSchristos const char *name; 219a5a4af3bSchristos unsigned int operands; /* how many operands */ 220a5a4af3bSchristos unsigned int base_opcode; /* base_opcode is the fundamental opcode byte */ 221a5a4af3bSchristos /* the bits in opcode_modifier are used to generate the final opcode from 222a5a4af3bSchristos the base_opcode. These bits also are used to detect alternate forms of 223a5a4af3bSchristos the same instruction */ 224a5a4af3bSchristos unsigned int opcode_modifier; 225a5a4af3bSchristos 226a5a4af3bSchristos /* opcode_modifier bits: */ 227a5a4af3bSchristos #define AddressMode 0x00600000 228a5a4af3bSchristos #define PCRel 0x02000000 229a5a4af3bSchristos #define StackOp 0x001F0000 230a5a4af3bSchristos #define Rotate StackOp 231a5a4af3bSchristos 232a5a4af3bSchristos /* operand_types[i] describes the type of operand i. This is made 233a5a4af3bSchristos by OR'ing together all of the possible type masks. (e.g. 234a5a4af3bSchristos 'operand_types[i] = Reg|Imm' specifies that operand i can be 235a5a4af3bSchristos either a register or an immediate operand */ 236a5a4af3bSchristos unsigned int operand_types[3]; 237a5a4af3bSchristos /* This defines the number type of an immediate argument to an instruction. */ 238a5a4af3bSchristos int imm_arg_type; 239a5a4af3bSchristos #define Imm_None 0 240a5a4af3bSchristos #define Imm_Float 1 241a5a4af3bSchristos #define Imm_SInt 2 242a5a4af3bSchristos #define Imm_UInt 3 243a5a4af3bSchristos } 244a5a4af3bSchristos insn_template; 245a5a4af3bSchristos 246a5a4af3bSchristos static const insn_template tic30_optab[] = { 247a5a4af3bSchristos { "absf" ,2,0x00000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 248a5a4af3bSchristos { "absi" ,2,0x00800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 249a5a4af3bSchristos { "addc" ,2,0x01000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 250a5a4af3bSchristos { "addc3" ,3,0x20000000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None }, 251a5a4af3bSchristos { "addf" ,2,0x01800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 252a5a4af3bSchristos { "addf3" ,3,0x20800000,AddressMode, { TAddr1, TAddr2, Rn }, Imm_None }, 253a5a4af3bSchristos { "addi" ,2,0x02000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 254a5a4af3bSchristos { "addi3" ,3,0x21000000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None }, 255a5a4af3bSchristos { "and" ,2,0x02800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_UInt }, 256a5a4af3bSchristos { "and3" ,3,0x21800000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None }, 257a5a4af3bSchristos { "andn" ,2,0x03000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_UInt }, 258a5a4af3bSchristos { "andn3" ,3,0x22000000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None }, 259a5a4af3bSchristos { "ash" ,2,0x03800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 260a5a4af3bSchristos { "ash3" ,3,0x22800000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None }, 261a5a4af3bSchristos { "b" ,1,0x68000000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 262a5a4af3bSchristos { "bu" ,1,0x68000000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 263a5a4af3bSchristos { "blo" ,1,0x68010000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 264a5a4af3bSchristos { "bls" ,1,0x68020000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 265a5a4af3bSchristos { "bhi" ,1,0x68030000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 266a5a4af3bSchristos { "bhs" ,1,0x68040000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 267a5a4af3bSchristos { "beq" ,1,0x68050000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 268a5a4af3bSchristos { "bne" ,1,0x68060000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 269a5a4af3bSchristos { "blt" ,1,0x68070000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 270a5a4af3bSchristos { "ble" ,1,0x68080000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 271a5a4af3bSchristos { "bgt" ,1,0x68090000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 272a5a4af3bSchristos { "bge" ,1,0x680A0000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 273a5a4af3bSchristos { "bz" ,1,0x68050000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 274a5a4af3bSchristos { "bnz" ,1,0x68060000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 275a5a4af3bSchristos { "bp" ,1,0x68090000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 276a5a4af3bSchristos { "bn" ,1,0x68070000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 277a5a4af3bSchristos { "bnn" ,1,0x680A0000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 278a5a4af3bSchristos { "bnv" ,1,0x680C0000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 279a5a4af3bSchristos { "bv" ,1,0x680D0000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 280a5a4af3bSchristos { "bnuf" ,1,0x680E0000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 281a5a4af3bSchristos { "buf" ,1,0x680F0000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 282a5a4af3bSchristos { "bnc" ,1,0x68040000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 283a5a4af3bSchristos { "bc" ,1,0x68010000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 284a5a4af3bSchristos { "bnlv" ,1,0x68100000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 285a5a4af3bSchristos { "blv" ,1,0x68110000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 286a5a4af3bSchristos { "bnluf" ,1,0x68120000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 287a5a4af3bSchristos { "bluf" ,1,0x68130000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 288a5a4af3bSchristos { "bzuf" ,1,0x68140000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 289a5a4af3bSchristos { "bd" ,1,0x68200000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 290a5a4af3bSchristos { "bud" ,1,0x68200000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 291a5a4af3bSchristos { "blod" ,1,0x68210000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 292a5a4af3bSchristos { "blsd" ,1,0x68220000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 293a5a4af3bSchristos { "bhid" ,1,0x68230000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 294a5a4af3bSchristos { "bhsd" ,1,0x68240000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 295a5a4af3bSchristos { "beqd" ,1,0x68250000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 296a5a4af3bSchristos { "bned" ,1,0x68260000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 297a5a4af3bSchristos { "bltd" ,1,0x68270000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 298a5a4af3bSchristos { "bled" ,1,0x68280000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 299a5a4af3bSchristos { "bgtd" ,1,0x68290000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 300a5a4af3bSchristos { "bged" ,1,0x682A0000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 301a5a4af3bSchristos { "bzd" ,1,0x68250000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 302a5a4af3bSchristos { "bnzd" ,1,0x68260000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 303a5a4af3bSchristos { "bpd" ,1,0x68290000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 304a5a4af3bSchristos { "bnd" ,1,0x68270000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 305a5a4af3bSchristos { "bnnd" ,1,0x682A0000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 306a5a4af3bSchristos { "bnvd" ,1,0x682C0000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 307a5a4af3bSchristos { "bvd" ,1,0x682D0000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 308a5a4af3bSchristos { "bnufd" ,1,0x682E0000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 309a5a4af3bSchristos { "bufd" ,1,0x682F0000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 310a5a4af3bSchristos { "bncd" ,1,0x68240000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 311a5a4af3bSchristos { "bcd" ,1,0x68210000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 312a5a4af3bSchristos { "bnlvd" ,1,0x68300000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 313a5a4af3bSchristos { "blvd" ,1,0x68310000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 314a5a4af3bSchristos { "bnlufd" ,1,0x68320000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 315a5a4af3bSchristos { "blufd" ,1,0x68330000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 316a5a4af3bSchristos { "bzufd" ,1,0x68340000,PCRel, { AllReg|Disp, 0, 0 }, Imm_None }, 317a5a4af3bSchristos { "br" ,1,0x60000000,0, { Imm24, 0, 0 }, Imm_UInt }, 318a5a4af3bSchristos { "brd" ,1,0x61000000,0, { Imm24, 0, 0 }, Imm_UInt }, 319a5a4af3bSchristos { "call" ,1,0x62000000,0, { Imm24, 0, 0 }, Imm_UInt }, 320a5a4af3bSchristos { "callu" ,1,0x70000000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 321a5a4af3bSchristos { "calllo" ,1,0x70010000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 322a5a4af3bSchristos { "callls" ,1,0x70020000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 323a5a4af3bSchristos { "callhi" ,1,0x70030000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 324a5a4af3bSchristos { "callhs" ,1,0x70040000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 325a5a4af3bSchristos { "calleq" ,1,0x70050000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 326a5a4af3bSchristos { "callne" ,1,0x70060000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 327a5a4af3bSchristos { "calllt" ,1,0x70070000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 328a5a4af3bSchristos { "callle" ,1,0x70080000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 329a5a4af3bSchristos { "callgt" ,1,0x70090000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 330a5a4af3bSchristos { "callge" ,1,0x700A0000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 331a5a4af3bSchristos { "callz" ,1,0x70050000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 332a5a4af3bSchristos { "callnz" ,1,0x70060000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 333a5a4af3bSchristos { "callp" ,1,0x70090000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 334a5a4af3bSchristos { "calln" ,1,0x70070000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 335a5a4af3bSchristos { "callnn" ,1,0x700A0000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 336a5a4af3bSchristos { "callnv" ,1,0x700C0000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 337a5a4af3bSchristos { "callv" ,1,0x700D0000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 338a5a4af3bSchristos { "callnuf",1,0x700E0000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 339a5a4af3bSchristos { "calluf" ,1,0x700F0000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 340a5a4af3bSchristos { "callnc" ,1,0x70040000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 341a5a4af3bSchristos { "callc" ,1,0x70010000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 342a5a4af3bSchristos { "callnlv",1,0x70100000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 343a5a4af3bSchristos { "calllv" ,1,0x70110000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 344a5a4af3bSchristos { "callnluf",1,0x70120000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 345a5a4af3bSchristos { "callluf",1,0x70130000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 346a5a4af3bSchristos { "callzuf",1,0x70140000,PCRel, { AllReg|Disp, 0, 0 }, Imm_UInt }, 347a5a4af3bSchristos { "cmpf" ,2,0x04000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 348a5a4af3bSchristos { "cmpf3" ,2,0x23000000,AddressMode, { TAddr1, TAddr2, 0 }, Imm_None }, 349a5a4af3bSchristos { "cmpi" ,2,0x04800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 350a5a4af3bSchristos { "cmpi3" ,2,0x23800000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, 0 }, Imm_None }, 351a5a4af3bSchristos { "db" ,2,0x6C000000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 352a5a4af3bSchristos { "dbu" ,2,0x6C000000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 353a5a4af3bSchristos { "dblo" ,2,0x6C010000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 354a5a4af3bSchristos { "dbls" ,2,0x6C020000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 355a5a4af3bSchristos { "dbhi" ,2,0x6C030000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 356a5a4af3bSchristos { "dbhs" ,2,0x6C040000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 357a5a4af3bSchristos { "dbeq" ,2,0x6C050000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 358a5a4af3bSchristos { "dbne" ,2,0x6C060000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 359a5a4af3bSchristos { "dblt" ,2,0x6C070000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 360a5a4af3bSchristos { "dble" ,2,0x6C080000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 361a5a4af3bSchristos { "dbgt" ,2,0x6C090000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 362a5a4af3bSchristos { "dbge" ,2,0x6C0A0000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 363a5a4af3bSchristos { "dbz" ,2,0x6C050000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 364a5a4af3bSchristos { "dbnz" ,2,0x6C060000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 365a5a4af3bSchristos { "dbp" ,2,0x6C090000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 366a5a4af3bSchristos { "dbn" ,2,0x6C070000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 367a5a4af3bSchristos { "dbnn" ,2,0x6C0A0000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 368a5a4af3bSchristos { "dbnv" ,2,0x6C0C0000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 369a5a4af3bSchristos { "dbv" ,2,0x6C0D0000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 370a5a4af3bSchristos { "dbnuf" ,2,0x6C0E0000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 371a5a4af3bSchristos { "dbuf" ,2,0x6C0F0000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 372a5a4af3bSchristos { "dbnc" ,2,0x6C040000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 373a5a4af3bSchristos { "dbc" ,2,0x6C010000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 374a5a4af3bSchristos { "dbnlv" ,2,0x6C100000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 375a5a4af3bSchristos { "dblv" ,2,0x6C110000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 376a5a4af3bSchristos { "dbnluf" ,2,0x6C120000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 377a5a4af3bSchristos { "dbluf" ,2,0x6C130000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 378a5a4af3bSchristos { "dbzuf" ,2,0x6C140000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 379a5a4af3bSchristos { "dbd" ,2,0x6C200000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 380a5a4af3bSchristos { "dbud" ,2,0x6C200000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 381a5a4af3bSchristos { "dblod" ,2,0x6C210000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 382a5a4af3bSchristos { "dblsd" ,2,0x6C220000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 383a5a4af3bSchristos { "dbhid" ,2,0x6C230000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 384a5a4af3bSchristos { "dbhsd" ,2,0x6C240000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 385a5a4af3bSchristos { "dbeqd" ,2,0x6C250000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 386a5a4af3bSchristos { "dbned" ,2,0x6C260000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 387a5a4af3bSchristos { "dbltd" ,2,0x6C270000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 388a5a4af3bSchristos { "dbled" ,2,0x6C280000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 389a5a4af3bSchristos { "dbgtd" ,2,0x6C290000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 390a5a4af3bSchristos { "dbged" ,2,0x6C2A0000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 391a5a4af3bSchristos { "dbzd" ,2,0x6C250000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 392a5a4af3bSchristos { "dbnzd" ,2,0x6C260000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 393a5a4af3bSchristos { "dbpd" ,2,0x6C290000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 394a5a4af3bSchristos { "dbnd" ,2,0x6C270000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 395a5a4af3bSchristos { "dbnnd" ,2,0x6C2A0000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 396a5a4af3bSchristos { "dbnvd" ,2,0x6C2C0000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 397a5a4af3bSchristos { "dbvd" ,2,0x6C2D0000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 398a5a4af3bSchristos { "dbnufd" ,2,0x6C2E0000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 399a5a4af3bSchristos { "dbufd" ,2,0x6C2F0000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 400a5a4af3bSchristos { "dbncd" ,2,0x6C240000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 401a5a4af3bSchristos { "dbcd" ,2,0x6C210000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 402a5a4af3bSchristos { "dbnlvd" ,2,0x6C300000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 403a5a4af3bSchristos { "dblvd" ,2,0x6C310000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 404a5a4af3bSchristos { "dbnlufd",2,0x6C320000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 405a5a4af3bSchristos { "dblufd" ,2,0x6C330000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 406a5a4af3bSchristos { "dbzufd" ,2,0x6C340000,PCRel, { ARn, AllReg|Disp, 0 }, Imm_None }, 407a5a4af3bSchristos { "fix" ,2,0x05000000,AddressMode, { GAddr1, AllReg, 0 }, Imm_Float }, 408a5a4af3bSchristos { "float" ,2,0x05800000,AddressMode, { GAddr2, Rn, 0 }, Imm_SInt }, 409a5a4af3bSchristos { "iack" ,1,0x1B000000,AddressMode, { Direct|Indirect, 0, 0 }, Imm_None }, 410a5a4af3bSchristos { "idle" ,0,0x06000000,0, { 0, 0, 0 }, Imm_None }, 411a5a4af3bSchristos { "idle2" ,0,0x06000001,0, { 0, 0, 0 }, Imm_None }, /* LC31 Only */ 412a5a4af3bSchristos { "lde" ,2,0x06800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 413a5a4af3bSchristos { "ldf" ,2,0x07000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 414a5a4af3bSchristos { "ldfu" ,2,0x40000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 415a5a4af3bSchristos { "ldflo" ,2,0x40800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 416a5a4af3bSchristos { "ldfls" ,2,0x41000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 417a5a4af3bSchristos { "ldfhi" ,2,0x41800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 418a5a4af3bSchristos { "ldfhs" ,2,0x42000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 419a5a4af3bSchristos { "ldfeq" ,2,0x42800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 420a5a4af3bSchristos { "ldfne" ,2,0x43000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 421a5a4af3bSchristos { "ldflt" ,2,0x43800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 422a5a4af3bSchristos { "ldfle" ,2,0x44000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 423a5a4af3bSchristos { "ldfgt" ,2,0x44800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 424a5a4af3bSchristos { "ldfge" ,2,0x45000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 425a5a4af3bSchristos { "ldfz" ,2,0x42800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 426a5a4af3bSchristos { "ldfnz" ,2,0x43000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 427a5a4af3bSchristos { "ldfp" ,2,0x44800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 428a5a4af3bSchristos { "ldfn" ,2,0x43800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 429a5a4af3bSchristos { "ldfnn" ,2,0x45000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 430a5a4af3bSchristos { "ldfnv" ,2,0x46000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 431a5a4af3bSchristos { "ldfv" ,2,0x46800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 432a5a4af3bSchristos { "ldfnuf" ,2,0x47000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 433a5a4af3bSchristos { "ldfuf" ,2,0x47800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 434a5a4af3bSchristos { "ldfnc" ,2,0x42000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 435a5a4af3bSchristos { "ldfc" ,2,0x40800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 436a5a4af3bSchristos { "ldfnlv" ,2,0x48000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 437a5a4af3bSchristos { "ldflv" ,2,0x48800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 438a5a4af3bSchristos { "ldfnluf",2,0x49000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 439a5a4af3bSchristos { "ldfluf" ,2,0x49800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 440a5a4af3bSchristos { "ldfzuf" ,2,0x4A000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 441a5a4af3bSchristos { "ldfi" ,2,0x07800000,AddressMode, { Direct|Indirect, Rn, 0 }, Imm_None }, 442a5a4af3bSchristos { "ldi" ,2,0x08000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 443a5a4af3bSchristos { "ldiu" ,2,0x50000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 444a5a4af3bSchristos { "ldilo" ,2,0x50800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 445a5a4af3bSchristos { "ldils" ,2,0x51000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 446a5a4af3bSchristos { "ldihi" ,2,0x51800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 447a5a4af3bSchristos { "ldihs" ,2,0x52000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 448a5a4af3bSchristos { "ldieq" ,2,0x52800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 449a5a4af3bSchristos { "ldine" ,2,0x53000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 450a5a4af3bSchristos { "ldilt" ,2,0x53800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 451a5a4af3bSchristos { "ldile" ,2,0x54000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 452a5a4af3bSchristos { "ldigt" ,2,0x54800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 453a5a4af3bSchristos { "ldige" ,2,0x55000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 454a5a4af3bSchristos { "ldiz" ,2,0x52800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 455a5a4af3bSchristos { "ldinz" ,2,0x53000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 456a5a4af3bSchristos { "ldip" ,2,0x54800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 457a5a4af3bSchristos { "ldin" ,2,0x53800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 458a5a4af3bSchristos { "ldinn" ,2,0x55000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 459a5a4af3bSchristos { "ldinv" ,2,0x56000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 460a5a4af3bSchristos { "ldiv" ,2,0x56800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 461a5a4af3bSchristos { "ldinuf" ,2,0x57000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 462a5a4af3bSchristos { "ldiuf" ,2,0x57800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 463a5a4af3bSchristos { "ldinc" ,2,0x52000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 464a5a4af3bSchristos { "ldic" ,2,0x50800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 465a5a4af3bSchristos { "ldinlv" ,2,0x58000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 466a5a4af3bSchristos { "ldilv" ,2,0x58800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 467a5a4af3bSchristos { "ldinluf",2,0x59000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 468a5a4af3bSchristos { "ldiluf" ,2,0x59800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 469a5a4af3bSchristos { "ldizuf" ,2,0x5A000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 470a5a4af3bSchristos { "ldii" ,2,0x08800000,AddressMode, { Direct|Indirect, AllReg, 0 }, Imm_None }, 471a5a4af3bSchristos { "ldm" ,2,0x09000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 472a5a4af3bSchristos { "ldp" ,2,0x08700000,0, { Abs24|Direct, DPReg|NotReq, 0 }, Imm_UInt }, 473a5a4af3bSchristos { "lopower",0,0x10800001,0, { 0, 0, 0 }, Imm_None }, /* LC31 Only */ 474a5a4af3bSchristos { "lsh" ,2,0x09800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_UInt }, 475a5a4af3bSchristos { "lsh3" ,3,0x24000000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None }, 476a5a4af3bSchristos { "maxspeed",0,0x10800000,0, { 0, 0, 0 }, Imm_None }, /* LC31 Only */ 477a5a4af3bSchristos { "mpyf" ,2,0x0A000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 478a5a4af3bSchristos { "mpyf3" ,3,0x24800000,AddressMode, { TAddr1, TAddr2, Rn }, Imm_None }, 479a5a4af3bSchristos { "mpyi" ,2,0x0A800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 480a5a4af3bSchristos { "mpyi3" ,3,0x25000000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None }, 481a5a4af3bSchristos { "negb" ,2,0x0B000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 482a5a4af3bSchristos { "negf" ,2,0x0B800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 483a5a4af3bSchristos { "negi" ,2,0x0C000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 484a5a4af3bSchristos { "nop" ,1,0x0C800000,AddressMode, { AllReg|Indirect|NotReq, 0, 0 }, Imm_None }, 485a5a4af3bSchristos { "norm" ,2,0x0D000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, /*Check another source*/ 486a5a4af3bSchristos { "not" ,2,0x0D800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_UInt }, 487a5a4af3bSchristos { "or" ,2,0x10000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_UInt }, 488a5a4af3bSchristos { "or3" ,3,0x25800000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None }, 489a5a4af3bSchristos { "pop" ,1,0x0E200000,StackOp, { AllReg, 0, 0 }, Imm_None }, 490a5a4af3bSchristos { "popf" ,1,0x0EA00000,StackOp, { Rn, 0, 0 }, Imm_None }, 491a5a4af3bSchristos { "push" ,1,0x0F200000,StackOp, { AllReg, 0, 0 }, Imm_None }, 492a5a4af3bSchristos { "pushf" ,1,0x0FA00000,StackOp, { Rn, 0, 0 }, Imm_None }, 493a5a4af3bSchristos { "reti" ,0,0x78000000,0, { 0, 0, 0 }, Imm_None }, 494a5a4af3bSchristos { "retiu" ,0,0x78000000,0, { 0, 0, 0 }, Imm_None }, 495a5a4af3bSchristos { "retilo" ,0,0x78010000,0, { 0, 0, 0 }, Imm_None }, 496a5a4af3bSchristos { "retils" ,0,0x78020000,0, { 0, 0, 0 }, Imm_None }, 497a5a4af3bSchristos { "retihi" ,0,0x78030000,0, { 0, 0, 0 }, Imm_None }, 498a5a4af3bSchristos { "retihs" ,0,0x78040000,0, { 0, 0, 0 }, Imm_None }, 499a5a4af3bSchristos { "retieq" ,0,0x78050000,0, { 0, 0, 0 }, Imm_None }, 500a5a4af3bSchristos { "retine" ,0,0x78060000,0, { 0, 0, 0 }, Imm_None }, 501a5a4af3bSchristos { "retilt" ,0,0x78070000,0, { 0, 0, 0 }, Imm_None }, 502a5a4af3bSchristos { "retile" ,0,0x78080000,0, { 0, 0, 0 }, Imm_None }, 503a5a4af3bSchristos { "retigt" ,0,0x78090000,0, { 0, 0, 0 }, Imm_None }, 504a5a4af3bSchristos { "retige" ,0,0x780A0000,0, { 0, 0, 0 }, Imm_None }, 505a5a4af3bSchristos { "retiz" ,0,0x78050000,0, { 0, 0, 0 }, Imm_None }, 506a5a4af3bSchristos { "retinz" ,0,0x78060000,0, { 0, 0, 0 }, Imm_None }, 507a5a4af3bSchristos { "retip" ,0,0x78090000,0, { 0, 0, 0 }, Imm_None }, 508a5a4af3bSchristos { "retin" ,0,0x78070000,0, { 0, 0, 0 }, Imm_None }, 509a5a4af3bSchristos { "retinn" ,0,0x780A0000,0, { 0, 0, 0 }, Imm_None }, 510a5a4af3bSchristos { "retinv" ,0,0x780C0000,0, { 0, 0, 0 }, Imm_None }, 511a5a4af3bSchristos { "retiv" ,0,0x780D0000,0, { 0, 0, 0 }, Imm_None }, 512a5a4af3bSchristos { "retinuf",0,0x780E0000,0, { 0, 0, 0 }, Imm_None }, 513a5a4af3bSchristos { "retiuf" ,0,0x780F0000,0, { 0, 0, 0 }, Imm_None }, 514a5a4af3bSchristos { "retinc" ,0,0x78040000,0, { 0, 0, 0 }, Imm_None }, 515a5a4af3bSchristos { "retic" ,0,0x78010000,0, { 0, 0, 0 }, Imm_None }, 516a5a4af3bSchristos { "retinlv",0,0x78100000,0, { 0, 0, 0 }, Imm_None }, 517a5a4af3bSchristos { "retilv" ,0,0x78110000,0, { 0, 0, 0 }, Imm_None }, 518a5a4af3bSchristos { "retinluf",0,0x78120000,0, { 0, 0, 0 }, Imm_None }, 519a5a4af3bSchristos { "retiluf",0,0x78130000,0, { 0, 0, 0 }, Imm_None }, 520a5a4af3bSchristos { "retizuf",0,0x78140000,0, { 0, 0, 0 }, Imm_None }, 521a5a4af3bSchristos { "rets" ,0,0x78800000,0, { 0, 0, 0 }, Imm_None }, 522a5a4af3bSchristos { "retsu" ,0,0x78800000,0, { 0, 0, 0 }, Imm_None }, 523a5a4af3bSchristos { "retslo" ,0,0x78810000,0, { 0, 0, 0 }, Imm_None }, 524a5a4af3bSchristos { "retsls" ,0,0x78820000,0, { 0, 0, 0 }, Imm_None }, 525a5a4af3bSchristos { "retshi" ,0,0x78830000,0, { 0, 0, 0 }, Imm_None }, 526a5a4af3bSchristos { "retshs" ,0,0x78840000,0, { 0, 0, 0 }, Imm_None }, 527a5a4af3bSchristos { "retseq" ,0,0x78850000,0, { 0, 0, 0 }, Imm_None }, 528a5a4af3bSchristos { "retsne" ,0,0x78860000,0, { 0, 0, 0 }, Imm_None }, 529a5a4af3bSchristos { "retslt" ,0,0x78870000,0, { 0, 0, 0 }, Imm_None }, 530a5a4af3bSchristos { "retsle" ,0,0x78880000,0, { 0, 0, 0 }, Imm_None }, 531a5a4af3bSchristos { "retsgt" ,0,0x78890000,0, { 0, 0, 0 }, Imm_None }, 532a5a4af3bSchristos { "retsge" ,0,0x788A0000,0, { 0, 0, 0 }, Imm_None }, 533a5a4af3bSchristos { "retsz" ,0,0x78850000,0, { 0, 0, 0 }, Imm_None }, 534a5a4af3bSchristos { "retsnz" ,0,0x78860000,0, { 0, 0, 0 }, Imm_None }, 535a5a4af3bSchristos { "retsp" ,0,0x78890000,0, { 0, 0, 0 }, Imm_None }, 536a5a4af3bSchristos { "retsn" ,0,0x78870000,0, { 0, 0, 0 }, Imm_None }, 537a5a4af3bSchristos { "retsnn" ,0,0x788A0000,0, { 0, 0, 0 }, Imm_None }, 538a5a4af3bSchristos { "retsnv" ,0,0x788C0000,0, { 0, 0, 0 }, Imm_None }, 539a5a4af3bSchristos { "retsv" ,0,0x788D0000,0, { 0, 0, 0 }, Imm_None }, 540a5a4af3bSchristos { "retsnuf",0,0x788E0000,0, { 0, 0, 0 }, Imm_None }, 541a5a4af3bSchristos { "retsuf" ,0,0x788F0000,0, { 0, 0, 0 }, Imm_None }, 542a5a4af3bSchristos { "retsnc" ,0,0x78840000,0, { 0, 0, 0 }, Imm_None }, 543a5a4af3bSchristos { "retsc" ,0,0x78810000,0, { 0, 0, 0 }, Imm_None }, 544a5a4af3bSchristos { "retsnlv",0,0x78900000,0, { 0, 0, 0 }, Imm_None }, 545a5a4af3bSchristos { "retslv" ,0,0x78910000,0, { 0, 0, 0 }, Imm_None }, 546a5a4af3bSchristos { "retsnluf",0,0x78920000,0, { 0, 0, 0 }, Imm_None }, 547a5a4af3bSchristos { "retsluf",0,0x78930000,0, { 0, 0, 0 }, Imm_None }, 548a5a4af3bSchristos { "retszuf",0,0x78940000,0, { 0, 0, 0 }, Imm_None }, 549a5a4af3bSchristos { "rnd" ,2,0x11000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 550a5a4af3bSchristos { "rol" ,1,0x11E00001,Rotate, { AllReg, 0, 0 }, Imm_None }, 551a5a4af3bSchristos { "rolc" ,1,0x12600001,Rotate, { AllReg, 0, 0 }, Imm_None }, 552a5a4af3bSchristos { "ror" ,1,0x12E0FFFF,Rotate, { AllReg, 0, 0 }, Imm_None }, 553a5a4af3bSchristos { "rorc" ,1,0x1360FFFF,Rotate, { AllReg, 0, 0 }, Imm_None }, 554a5a4af3bSchristos { "rptb" ,1,0x64000000,0, { Imm24, 0, 0 }, Imm_UInt }, 555a5a4af3bSchristos { "rpts" ,1,0x139B0000,AddressMode, { GAddr2, 0, 0 }, Imm_UInt }, 556a5a4af3bSchristos { "sigi" ,0,0x16000000,0, { 0, 0, 0 }, Imm_None }, 557a5a4af3bSchristos { "stf" ,2,0x14000000,AddressMode, { Rn, Direct|Indirect, 0 }, Imm_Float }, 558a5a4af3bSchristos { "stfi" ,2,0x14800000,AddressMode, { Rn, Direct|Indirect, 0 }, Imm_Float }, 559a5a4af3bSchristos { "sti" ,2,0x15000000,AddressMode, { AllReg, Direct|Indirect, 0 }, Imm_SInt }, 560a5a4af3bSchristos { "stii" ,2,0x15800000,AddressMode, { AllReg, Direct|Indirect, 0 }, Imm_SInt }, 561a5a4af3bSchristos { "subb" ,2,0x16800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 562a5a4af3bSchristos { "subb3" ,3,0x26000000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None }, 563a5a4af3bSchristos { "subc" ,2,0x17000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_UInt }, 564a5a4af3bSchristos { "subf" ,2,0x17800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 565a5a4af3bSchristos { "subf3" ,3,0x26800000,AddressMode, { TAddr1, TAddr2, Rn }, Imm_None }, 566a5a4af3bSchristos { "subi" ,2,0x18000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 567a5a4af3bSchristos { "subi3" ,3,0x27000000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None }, 568a5a4af3bSchristos { "subrb" ,2,0x18800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 569a5a4af3bSchristos { "subrf" ,2,0x19000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, 570a5a4af3bSchristos { "subri" ,2,0x19800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt }, 571a5a4af3bSchristos { "swi" ,0,0x66000000,0, { 0, 0, 0 }, Imm_None }, 572a5a4af3bSchristos { "trap" ,1,0x74800020,0, { IVector, 0, 0 }, Imm_None }, 573a5a4af3bSchristos { "trapu" ,1,0x74800020,0, { IVector, 0, 0 }, Imm_None }, 574a5a4af3bSchristos { "traplo" ,1,0x74810020,0, { IVector, 0, 0 }, Imm_None }, 575a5a4af3bSchristos { "trapls" ,1,0x74820020,0, { IVector, 0, 0 }, Imm_None }, 576a5a4af3bSchristos { "traphi" ,1,0x74830020,0, { IVector, 0, 0 }, Imm_None }, 577a5a4af3bSchristos { "traphs" ,1,0x74840020,0, { IVector, 0, 0 }, Imm_None }, 578a5a4af3bSchristos { "trapeq" ,1,0x74850020,0, { IVector, 0, 0 }, Imm_None }, 579a5a4af3bSchristos { "trapne" ,1,0x74860020,0, { IVector, 0, 0 }, Imm_None }, 580a5a4af3bSchristos { "traplt" ,1,0x74870020,0, { IVector, 0, 0 }, Imm_None }, 581a5a4af3bSchristos { "traple" ,1,0x74880020,0, { IVector, 0, 0 }, Imm_None }, 582a5a4af3bSchristos { "trapgt" ,1,0x74890020,0, { IVector, 0, 0 }, Imm_None }, 583a5a4af3bSchristos { "trapge" ,1,0x748A0020,0, { IVector, 0, 0 }, Imm_None }, 584a5a4af3bSchristos { "trapz" ,1,0x74850020,0, { IVector, 0, 0 }, Imm_None }, 585a5a4af3bSchristos { "trapnz" ,1,0x74860020,0, { IVector, 0, 0 }, Imm_None }, 586a5a4af3bSchristos { "trapp" ,1,0x74890020,0, { IVector, 0, 0 }, Imm_None }, 587a5a4af3bSchristos { "trapn" ,1,0x74870020,0, { IVector, 0, 0 }, Imm_None }, 588a5a4af3bSchristos { "trapnn" ,1,0x748A0020,0, { IVector, 0, 0 }, Imm_None }, 589a5a4af3bSchristos { "trapnv" ,1,0x748C0020,0, { IVector, 0, 0 }, Imm_None }, 590a5a4af3bSchristos { "trapv" ,1,0x748D0020,0, { IVector, 0, 0 }, Imm_None }, 591a5a4af3bSchristos { "trapnuf",1,0x748E0020,0, { IVector, 0, 0 }, Imm_None }, 592a5a4af3bSchristos { "trapuf" ,1,0x748F0020,0, { IVector, 0, 0 }, Imm_None }, 593a5a4af3bSchristos { "trapnc" ,1,0x74840020,0, { IVector, 0, 0 }, Imm_None }, 594a5a4af3bSchristos { "trapc" ,1,0x74810020,0, { IVector, 0, 0 }, Imm_None }, 595a5a4af3bSchristos { "trapnlv",1,0x74900020,0, { IVector, 0, 0 }, Imm_None }, 596a5a4af3bSchristos { "traplv" ,1,0x74910020,0, { IVector, 0, 0 }, Imm_None }, 597a5a4af3bSchristos { "trapnluf",1,0x74920020,0, { IVector, 0, 0 }, Imm_None }, 598a5a4af3bSchristos { "trapluf",1,0x74930020,0, { IVector, 0, 0 }, Imm_None }, 599a5a4af3bSchristos { "trapzuf",1,0x74940020,0, { IVector, 0, 0 }, Imm_None }, 600a5a4af3bSchristos { "tstb" ,2,0x1A000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_UInt }, 601a5a4af3bSchristos { "tstb3" ,2,0x27800000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, 0 }, Imm_None }, 602a5a4af3bSchristos { "xor" ,2,0x1A800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_UInt }, 603a5a4af3bSchristos { "xor3" ,3,0x28000000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None }, 604a5a4af3bSchristos { "" ,0,0x00000000,0, { 0, 0, 0 }, 0 } 605a5a4af3bSchristos }; 606a5a4af3bSchristos 607a5a4af3bSchristos static const insn_template *const tic30_optab_end = 608a5a4af3bSchristos tic30_optab + sizeof(tic30_optab)/sizeof(tic30_optab[0]); 609a5a4af3bSchristos 610a5a4af3bSchristos typedef struct { 611e5cb852cSchristos const char *name; 612a5a4af3bSchristos unsigned int operands_1; 613a5a4af3bSchristos unsigned int operands_2; 614a5a4af3bSchristos unsigned int base_opcode; 615a5a4af3bSchristos unsigned int operand_types[2][3]; 616a5a4af3bSchristos /* Which operand fits into which part of the final opcode word. */ 617a5a4af3bSchristos int oporder; 618a5a4af3bSchristos } partemplate; 619a5a4af3bSchristos 620a5a4af3bSchristos /* oporder defines - not very descriptive. */ 621a5a4af3bSchristos #define OO_4op1 0 622a5a4af3bSchristos #define OO_4op2 1 623a5a4af3bSchristos #define OO_4op3 2 624a5a4af3bSchristos #define OO_5op1 3 625a5a4af3bSchristos #define OO_5op2 4 626a5a4af3bSchristos #define OO_PField 5 627a5a4af3bSchristos 628a5a4af3bSchristos static const partemplate tic30_paroptab[] = { 629a5a4af3bSchristos { "q_absf_stf", 2,2,0xC8000000, { { Indirect, Rn, 0 }, { Rn, Indirect, 0 } }, 630a5a4af3bSchristos OO_4op1 }, 631a5a4af3bSchristos { "q_absi_sti", 2,2,0xCA000000, { { Indirect, Rn, 0 }, { Rn, Indirect, 0 } }, 632a5a4af3bSchristos OO_4op1 }, 633a5a4af3bSchristos { "q_addf3_stf", 3,2,0xCC000000, { { Indirect, Rn, Rn }, { Rn, Indirect, 0 } }, 634a5a4af3bSchristos OO_5op1 }, 635a5a4af3bSchristos { "q_addi3_sti", 3,2,0xCE000000, { { Indirect, Rn, Rn }, { Rn, Indirect, 0 } }, 636a5a4af3bSchristos OO_5op1 }, 637a5a4af3bSchristos { "q_and3_sti", 3,2,0xD0000000, { { Indirect, Rn, Rn }, { Rn, Indirect, 0 } }, 638a5a4af3bSchristos OO_5op1 }, 639a5a4af3bSchristos { "q_ash3_sti", 3,2,0xD2000000, { { Rn, Indirect, Rn }, { Rn, Indirect, 0 } }, 640a5a4af3bSchristos OO_5op2 }, 641a5a4af3bSchristos { "q_fix_sti", 2,2,0xD4000000, { { Indirect, Rn, 0 }, { Rn, Indirect, 0 } }, 642a5a4af3bSchristos OO_4op1 }, 643a5a4af3bSchristos { "q_float_stf", 2,2,0xD6000000, { { Indirect, Rn, 0 }, { Rn, Indirect, 0 } }, 644a5a4af3bSchristos OO_4op1 }, 645a5a4af3bSchristos { "q_ldf_ldf", 2,2,0xC4000000, { { Indirect, Rn, 0 }, { Indirect, Rn, 0 } }, 646a5a4af3bSchristos OO_4op2 }, 647a5a4af3bSchristos { "q_ldf_stf", 2,2,0xD8000000, { { Indirect, Rn, 0 }, { Rn, Indirect, 0 } }, 648a5a4af3bSchristos OO_4op1 }, 649a5a4af3bSchristos { "q_ldi_ldi", 2,2,0xC6000000, { { Indirect, Rn, 0 }, { Indirect, Rn, 0 } }, 650a5a4af3bSchristos OO_4op2 }, 651a5a4af3bSchristos { "q_ldi_sti", 2,2,0xDA000000, { { Indirect, Rn, 0 }, { Rn, Indirect, 0 } }, 652a5a4af3bSchristos OO_4op1 }, 653a5a4af3bSchristos { "q_lsh3_sti", 3,2,0xDC000000, { { Rn, Indirect, Rn }, { Rn, Indirect, 0 } }, 654a5a4af3bSchristos OO_5op2 }, 655a5a4af3bSchristos { "q_mpyf3_addf3",3,3,0x80000000, { { Rn | Indirect, Rn | Indirect, Rn }, 656a5a4af3bSchristos { Rn | Indirect, Rn | Indirect, Rn } }, OO_PField }, 657a5a4af3bSchristos { "q_mpyf3_stf", 3,2,0xDE000000, { { Indirect, Rn, Rn }, { Rn, Indirect, 0 } }, 658a5a4af3bSchristos OO_5op1 }, 659a5a4af3bSchristos { "q_mpyf3_subf3",3,3,0x84000000, { { Rn | Indirect, Rn | Indirect, Rn }, 660a5a4af3bSchristos { Rn | Indirect, Rn | Indirect, Rn } }, OO_PField }, 661a5a4af3bSchristos { "q_mpyi3_addi3",3,3,0x88000000, { { Rn | Indirect, Rn | Indirect, Rn }, 662a5a4af3bSchristos { Rn | Indirect, Rn | Indirect, Rn } }, OO_PField }, 663a5a4af3bSchristos { "q_mpyi3_sti", 3,2,0xE0000000, { { Indirect, Rn, Rn }, { Rn, Indirect, 0 } }, 664a5a4af3bSchristos OO_5op1 }, 665a5a4af3bSchristos { "q_mpyi3_subi3",3,3,0x8C000000, { { Rn | Indirect, Rn | Indirect, Rn }, 666a5a4af3bSchristos { Rn | Indirect, Rn | Indirect, Rn } }, OO_PField }, 667a5a4af3bSchristos { "q_negf_stf", 2,2,0xE2000000, { { Indirect, Rn, 0 }, { Rn, Indirect, 0 } }, 668a5a4af3bSchristos OO_4op1 }, 669a5a4af3bSchristos { "q_negi_sti", 2,2,0xE4000000, { { Indirect, Rn, 0 }, { Rn, Indirect, 0 } }, 670a5a4af3bSchristos OO_4op1 }, 671a5a4af3bSchristos { "q_not_sti", 2,2,0xE6000000, { { Indirect, Rn, 0 }, { Rn, Indirect, 0 } }, 672a5a4af3bSchristos OO_4op1 }, 673a5a4af3bSchristos { "q_or3_sti", 3,2,0xE8000000, { { Indirect, Rn, Rn }, { Rn, Indirect, 0 } }, 674a5a4af3bSchristos OO_5op1 }, 675a5a4af3bSchristos { "q_stf_stf", 2,2,0xC0000000, { { Rn, Indirect, 0 }, { Rn, Indirect, 0 } }, 676a5a4af3bSchristos OO_4op3 }, 677a5a4af3bSchristos { "q_sti_sti", 2,2,0xC2000000, { { Rn, Indirect, 0 }, { Rn, Indirect, 0 } }, 678a5a4af3bSchristos OO_4op3 }, 679a5a4af3bSchristos { "q_subf3_stf", 3,2,0xEA000000, { { Rn, Indirect, Rn }, { Rn, Indirect, 0 } }, 680a5a4af3bSchristos OO_5op2 }, 681a5a4af3bSchristos { "q_subi3_sti", 3,2,0xEC000000, { { Rn, Indirect, Rn }, { Rn, Indirect, 0 } }, 682a5a4af3bSchristos OO_5op2 }, 683a5a4af3bSchristos { "q_xor3_sti", 3,2,0xEE000000, { { Indirect, Rn, Rn }, { Rn, Indirect, 0 } }, 684a5a4af3bSchristos OO_5op1 }, 685a5a4af3bSchristos { "", 0,0,0x00000000, { { 0, 0, 0 }, { 0, 0, 0 } }, 0 } 686a5a4af3bSchristos }; 687a5a4af3bSchristos 688a5a4af3bSchristos static const partemplate *const tic30_paroptab_end = 689a5a4af3bSchristos tic30_paroptab + sizeof(tic30_paroptab)/sizeof(tic30_paroptab[0]); 690a5a4af3bSchristos 691a5a4af3bSchristos #endif 692