xref: /netbsd-src/external/gpl3/gdb/dist/include/opcode/tic30.h (revision aab831cebf6361fb2b518a47c70732e608d9abd2)
198b9484cSchristos /* tic30.h -- Header file for TI TMS320C30 opcode table
2*aab831ceSchristos    Copyright (C) 1998-2024 Free Software Foundation, Inc.
398b9484cSchristos    Contributed by Steven Haworth (steve@pm.cse.rmit.edu.au)
498b9484cSchristos 
598b9484cSchristos    This file is part of GDB, GAS, and the GNU binutils.
698b9484cSchristos 
798b9484cSchristos    GDB, GAS, and the GNU binutils are free software; you can redistribute
898b9484cSchristos    them and/or modify them under the terms of the GNU General Public
998b9484cSchristos    License as published by the Free Software Foundation; either version 3,
1098b9484cSchristos    or (at your option) any later version.
1198b9484cSchristos 
1298b9484cSchristos    GDB, GAS, and the GNU binutils are distributed in the hope that they
1398b9484cSchristos    will be useful, but WITHOUT ANY WARRANTY; without even the implied
1498b9484cSchristos    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
1598b9484cSchristos    the GNU General Public License for more details.
1698b9484cSchristos 
1798b9484cSchristos    You should have received a copy of the GNU General Public License
1898b9484cSchristos    along with this file; see the file COPYING3.  If not, write to the Free
1998b9484cSchristos    Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
2098b9484cSchristos    02110-1301, USA.  */
2198b9484cSchristos 
2298b9484cSchristos /* FIXME: The opcode table should be in opcodes/tic30-opc.c, not in a
2398b9484cSchristos    header file.  */
2498b9484cSchristos 
2598b9484cSchristos #ifndef _TMS320_H_
2698b9484cSchristos #define _TMS320_H_
2798b9484cSchristos 
2898b9484cSchristos struct _register
2998b9484cSchristos {
30ba340e45Schristos   const char *name;
3198b9484cSchristos   unsigned char opcode;
3298b9484cSchristos   unsigned char regtype;
3398b9484cSchristos };
3498b9484cSchristos 
3598b9484cSchristos typedef struct _register reg;
3698b9484cSchristos 
3798b9484cSchristos #define REG_Rn    0x01
3898b9484cSchristos #define REG_ARn   0x02
3998b9484cSchristos #define REG_DP    0x03
4098b9484cSchristos #define REG_OTHER 0x04
4198b9484cSchristos 
4298b9484cSchristos static const reg tic30_regtab[] = {
4398b9484cSchristos   { "r0", 0x00, REG_Rn },
4498b9484cSchristos   { "r1", 0x01, REG_Rn },
4598b9484cSchristos   { "r2", 0x02, REG_Rn },
4698b9484cSchristos   { "r3", 0x03, REG_Rn },
4798b9484cSchristos   { "r4", 0x04, REG_Rn },
4898b9484cSchristos   { "r5", 0x05, REG_Rn },
4998b9484cSchristos   { "r6", 0x06, REG_Rn },
5098b9484cSchristos   { "r7", 0x07, REG_Rn },
5198b9484cSchristos   { "ar0",0x08, REG_ARn },
5298b9484cSchristos   { "ar1",0x09, REG_ARn },
5398b9484cSchristos   { "ar2",0x0A, REG_ARn },
5498b9484cSchristos   { "ar3",0x0B, REG_ARn },
5598b9484cSchristos   { "ar4",0x0C, REG_ARn },
5698b9484cSchristos   { "ar5",0x0D, REG_ARn },
5798b9484cSchristos   { "ar6",0x0E, REG_ARn },
5898b9484cSchristos   { "ar7",0x0F, REG_ARn },
5998b9484cSchristos   { "dp", 0x10, REG_DP },
6098b9484cSchristos   { "ir0",0x11, REG_OTHER },
6198b9484cSchristos   { "ir1",0x12, REG_OTHER },
6298b9484cSchristos   { "bk", 0x13, REG_OTHER },
6398b9484cSchristos   { "sp", 0x14, REG_OTHER },
6498b9484cSchristos   { "st", 0x15, REG_OTHER },
6598b9484cSchristos   { "ie", 0x16, REG_OTHER },
6698b9484cSchristos   { "if", 0x17, REG_OTHER },
6798b9484cSchristos   { "iof",0x18, REG_OTHER },
6898b9484cSchristos   { "rs", 0x19, REG_OTHER },
6998b9484cSchristos   { "re", 0x1A, REG_OTHER },
7098b9484cSchristos   { "rc", 0x1B, REG_OTHER },
7198b9484cSchristos   { "R0", 0x00, REG_Rn },
7298b9484cSchristos   { "R1", 0x01, REG_Rn },
7398b9484cSchristos   { "R2", 0x02, REG_Rn },
7498b9484cSchristos   { "R3", 0x03, REG_Rn },
7598b9484cSchristos   { "R4", 0x04, REG_Rn },
7698b9484cSchristos   { "R5", 0x05, REG_Rn },
7798b9484cSchristos   { "R6", 0x06, REG_Rn },
7898b9484cSchristos   { "R7", 0x07, REG_Rn },
7998b9484cSchristos   { "AR0",0x08, REG_ARn },
8098b9484cSchristos   { "AR1",0x09, REG_ARn },
8198b9484cSchristos   { "AR2",0x0A, REG_ARn },
8298b9484cSchristos   { "AR3",0x0B, REG_ARn },
8398b9484cSchristos   { "AR4",0x0C, REG_ARn },
8498b9484cSchristos   { "AR5",0x0D, REG_ARn },
8598b9484cSchristos   { "AR6",0x0E, REG_ARn },
8698b9484cSchristos   { "AR7",0x0F, REG_ARn },
8798b9484cSchristos   { "DP", 0x10, REG_DP },
8898b9484cSchristos   { "IR0",0x11, REG_OTHER },
8998b9484cSchristos   { "IR1",0x12, REG_OTHER },
9098b9484cSchristos   { "BK", 0x13, REG_OTHER },
9198b9484cSchristos   { "SP", 0x14, REG_OTHER },
9298b9484cSchristos   { "ST", 0x15, REG_OTHER },
9398b9484cSchristos   { "IE", 0x16, REG_OTHER },
9498b9484cSchristos   { "IF", 0x17, REG_OTHER },
9598b9484cSchristos   { "IOF",0x18, REG_OTHER },
9698b9484cSchristos   { "RS", 0x19, REG_OTHER },
9798b9484cSchristos   { "RE", 0x1A, REG_OTHER },
9898b9484cSchristos   { "RC", 0x1B, REG_OTHER },
9998b9484cSchristos   { "",   0, 0 }
10098b9484cSchristos };
10198b9484cSchristos 
10298b9484cSchristos static const reg *const tic30_regtab_end
10398b9484cSchristos   = tic30_regtab + sizeof(tic30_regtab)/sizeof(tic30_regtab[0]);
10498b9484cSchristos 
10598b9484cSchristos /* Indirect Addressing Modes Modification Fields */
10698b9484cSchristos /* Indirect Addressing with Displacement */
10798b9484cSchristos #define PreDisp_Add        0x00
10898b9484cSchristos #define PreDisp_Sub        0x01
10998b9484cSchristos #define PreDisp_Add_Mod    0x02
11098b9484cSchristos #define PreDisp_Sub_Mod    0x03
11198b9484cSchristos #define PostDisp_Add_Mod   0x04
11298b9484cSchristos #define PostDisp_Sub_Mod   0x05
11398b9484cSchristos #define PostDisp_Add_Circ  0x06
11498b9484cSchristos #define PostDisp_Sub_Circ  0x07
11598b9484cSchristos /* Indirect Addressing with Index Register IR0 */
11698b9484cSchristos #define PreIR0_Add         0x08
11798b9484cSchristos #define PreIR0_Sub         0x09
11898b9484cSchristos #define PreIR0_Add_Mod     0x0A
11998b9484cSchristos #define PreIR0_Sub_Mod     0x0B
12098b9484cSchristos #define PostIR0_Add_Mod    0x0C
12198b9484cSchristos #define PostIR0_Sub_Mod    0x0D
12298b9484cSchristos #define PostIR0_Add_Circ   0x0E
12398b9484cSchristos #define PostIR0_Sub_Circ   0x0F
12498b9484cSchristos /* Indirect Addressing with Index Register IR1 */
12598b9484cSchristos #define PreIR1_Add         0x10
12698b9484cSchristos #define PreIR1_Sub         0x11
12798b9484cSchristos #define PreIR1_Add_Mod     0x12
12898b9484cSchristos #define PreIR1_Sub_Mod     0x13
12998b9484cSchristos #define PostIR1_Add_Mod    0x14
13098b9484cSchristos #define PostIR1_Sub_Mod    0x15
13198b9484cSchristos #define PostIR1_Add_Circ   0x16
13298b9484cSchristos #define PostIR1_Sub_Circ   0x17
13398b9484cSchristos /* Indirect Addressing (Special Cases) */
13498b9484cSchristos #define IndirectOnly       0x18
13598b9484cSchristos #define PostIR0_Add_BitRev 0x19
13698b9484cSchristos 
13798b9484cSchristos typedef struct {
138ba340e45Schristos   const char *syntax;
13998b9484cSchristos   unsigned char modfield;
14098b9484cSchristos   unsigned char displacement;
14198b9484cSchristos } ind_addr_type;
14298b9484cSchristos 
14398b9484cSchristos #define IMPLIED_DISP  0x01
14498b9484cSchristos #define DISP_REQUIRED 0x02
14598b9484cSchristos #define NO_DISP       0x03
14698b9484cSchristos 
14798b9484cSchristos static const ind_addr_type tic30_indaddr_tab[] = {
14898b9484cSchristos   { "*+ar",       PreDisp_Add,        IMPLIED_DISP },
14998b9484cSchristos   { "*-ar",       PreDisp_Sub,        IMPLIED_DISP },
15098b9484cSchristos   { "*++ar",      PreDisp_Add_Mod,    IMPLIED_DISP },
15198b9484cSchristos   { "*--ar",      PreDisp_Sub_Mod,    IMPLIED_DISP },
15298b9484cSchristos   { "*ar++",      PostDisp_Add_Mod,   IMPLIED_DISP },
15398b9484cSchristos   { "*ar--",      PostDisp_Sub_Mod,   IMPLIED_DISP },
15498b9484cSchristos   { "*ar++%",     PostDisp_Add_Circ,  IMPLIED_DISP },
15598b9484cSchristos   { "*ar--%",     PostDisp_Sub_Circ,  IMPLIED_DISP },
15698b9484cSchristos   { "*+ar()",     PreDisp_Add,        DISP_REQUIRED },
15798b9484cSchristos   { "*-ar()",     PreDisp_Sub,        DISP_REQUIRED },
15898b9484cSchristos   { "*++ar()",    PreDisp_Add_Mod,    DISP_REQUIRED },
15998b9484cSchristos   { "*--ar()",    PreDisp_Sub_Mod,    DISP_REQUIRED },
16098b9484cSchristos   { "*ar++()",    PostDisp_Add_Mod,   DISP_REQUIRED },
16198b9484cSchristos   { "*ar--()",    PostDisp_Sub_Mod,   DISP_REQUIRED },
16298b9484cSchristos   { "*ar++()%",   PostDisp_Add_Circ,  DISP_REQUIRED },
16398b9484cSchristos   { "*ar--()%",   PostDisp_Sub_Circ,  DISP_REQUIRED },
16498b9484cSchristos   { "*+ar(ir0)",  PreIR0_Add,         NO_DISP },
16598b9484cSchristos   { "*-ar(ir0)",  PreIR0_Sub,         NO_DISP },
16698b9484cSchristos   { "*++ar(ir0)", PreIR0_Add_Mod,     NO_DISP },
16798b9484cSchristos   { "*--ar(ir0)", PreIR0_Sub_Mod,     NO_DISP },
16898b9484cSchristos   { "*ar++(ir0)", PostIR0_Add_Mod,    NO_DISP },
16998b9484cSchristos   { "*ar--(ir0)", PostIR0_Sub_Mod,    NO_DISP },
17098b9484cSchristos   { "*ar++(ir0)%",PostIR0_Add_Circ,   NO_DISP },
17198b9484cSchristos   { "*ar--(ir0)%",PostIR0_Sub_Circ,   NO_DISP },
17298b9484cSchristos   { "*+ar(ir1)",  PreIR1_Add,         NO_DISP },
17398b9484cSchristos   { "*-ar(ir1)",  PreIR1_Sub,         NO_DISP },
17498b9484cSchristos   { "*++ar(ir1)", PreIR1_Add_Mod,     NO_DISP },
17598b9484cSchristos   { "*--ar(ir1)", PreIR1_Sub_Mod,     NO_DISP },
17698b9484cSchristos   { "*ar++(ir1)", PostIR1_Add_Mod,    NO_DISP },
17798b9484cSchristos   { "*ar--(ir1)", PostIR1_Sub_Mod,    NO_DISP },
17898b9484cSchristos   { "*ar++(ir1)%",PostIR1_Add_Circ,   NO_DISP },
17998b9484cSchristos   { "*ar--(ir1)%",PostIR1_Sub_Circ,   NO_DISP },
18098b9484cSchristos   { "*ar",        IndirectOnly,       NO_DISP },
18198b9484cSchristos   { "*ar++(ir0)b",PostIR0_Add_BitRev, NO_DISP },
18298b9484cSchristos   { "",           0,0 }
18398b9484cSchristos };
18498b9484cSchristos 
18598b9484cSchristos static const ind_addr_type *const tic30_indaddrtab_end
18698b9484cSchristos   = tic30_indaddr_tab + sizeof(tic30_indaddr_tab)/sizeof(tic30_indaddr_tab[0]);
18798b9484cSchristos 
18898b9484cSchristos /* Possible operand types */
18998b9484cSchristos /* Register types */
19098b9484cSchristos #define Rn       0x0001
19198b9484cSchristos #define ARn      0x0002
19298b9484cSchristos #define DPReg    0x0004
19398b9484cSchristos #define OtherReg 0x0008
19498b9484cSchristos /* Addressing mode types */
19598b9484cSchristos #define Direct   0x0010
19698b9484cSchristos #define Indirect 0x0020
19798b9484cSchristos #define Imm16    0x0040
19898b9484cSchristos #define Disp     0x0080
19998b9484cSchristos #define Imm24    0x0100
20098b9484cSchristos #define Abs24    0x0200
20198b9484cSchristos /* 3 operand addressing mode types */
20298b9484cSchristos #define op3T1    0x0400
20398b9484cSchristos #define op3T2    0x0800
20498b9484cSchristos /* Interrupt vector */
20598b9484cSchristos #define IVector  0x1000
20698b9484cSchristos /* Not required */
20798b9484cSchristos #define NotReq   0x2000
20898b9484cSchristos 
20998b9484cSchristos #define GAddr1   Rn | Direct | Indirect | Imm16
21098b9484cSchristos #define GAddr2   GAddr1 | AllReg
21198b9484cSchristos #define TAddr1   op3T1 | Rn | Indirect
21298b9484cSchristos #define TAddr2   op3T2 | Rn | Indirect
21398b9484cSchristos #define Reg      Rn | ARn
21498b9484cSchristos #define AllReg   Reg | DPReg | OtherReg
21598b9484cSchristos 
21698b9484cSchristos typedef struct _template
21798b9484cSchristos {
218ba340e45Schristos   const char *name;
21998b9484cSchristos   unsigned int operands; /* how many operands */
22098b9484cSchristos   unsigned int base_opcode; /* base_opcode is the fundamental opcode byte */
22198b9484cSchristos   /* the bits in opcode_modifier are used to generate the final opcode from
22298b9484cSchristos      the base_opcode.  These bits also are used to detect alternate forms of
22398b9484cSchristos      the same instruction */
22498b9484cSchristos   unsigned int opcode_modifier;
22598b9484cSchristos 
22698b9484cSchristos   /* opcode_modifier bits: */
22798b9484cSchristos #define AddressMode 0x00600000
22898b9484cSchristos #define PCRel       0x02000000
22998b9484cSchristos #define StackOp     0x001F0000
23098b9484cSchristos #define Rotate      StackOp
23198b9484cSchristos 
23298b9484cSchristos   /* operand_types[i] describes the type of operand i.  This is made
23398b9484cSchristos      by OR'ing together all of the possible type masks.  (e.g.
23498b9484cSchristos      'operand_types[i] = Reg|Imm' specifies that operand i can be
23598b9484cSchristos      either a register or an immediate operand */
23698b9484cSchristos   unsigned int operand_types[3];
23798b9484cSchristos   /* This defines the number type of an immediate argument to an instruction. */
23898b9484cSchristos   int imm_arg_type;
23998b9484cSchristos #define Imm_None  0
24098b9484cSchristos #define Imm_Float 1
24198b9484cSchristos #define Imm_SInt  2
24298b9484cSchristos #define Imm_UInt  3
24398b9484cSchristos }
24498b9484cSchristos insn_template;
24598b9484cSchristos 
24698b9484cSchristos static const insn_template tic30_optab[] = {
24798b9484cSchristos   { "absf"   ,2,0x00000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
24898b9484cSchristos   { "absi"   ,2,0x00800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
24998b9484cSchristos   { "addc"   ,2,0x01000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
25098b9484cSchristos   { "addc3"  ,3,0x20000000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None },
25198b9484cSchristos   { "addf"   ,2,0x01800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
25298b9484cSchristos   { "addf3"  ,3,0x20800000,AddressMode, { TAddr1, TAddr2, Rn }, Imm_None },
25398b9484cSchristos   { "addi"   ,2,0x02000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
25498b9484cSchristos   { "addi3"  ,3,0x21000000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None },
25598b9484cSchristos   { "and"    ,2,0x02800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_UInt },
25698b9484cSchristos   { "and3"   ,3,0x21800000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None },
25798b9484cSchristos   { "andn"   ,2,0x03000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_UInt },
25898b9484cSchristos   { "andn3"  ,3,0x22000000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None },
25998b9484cSchristos   { "ash"    ,2,0x03800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
26098b9484cSchristos   { "ash3"   ,3,0x22800000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None },
26198b9484cSchristos   { "b"      ,1,0x68000000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
26298b9484cSchristos   { "bu"     ,1,0x68000000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
26398b9484cSchristos   { "blo"    ,1,0x68010000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
26498b9484cSchristos   { "bls"    ,1,0x68020000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
26598b9484cSchristos   { "bhi"    ,1,0x68030000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
26698b9484cSchristos   { "bhs"    ,1,0x68040000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
26798b9484cSchristos   { "beq"    ,1,0x68050000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
26898b9484cSchristos   { "bne"    ,1,0x68060000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
26998b9484cSchristos   { "blt"    ,1,0x68070000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
27098b9484cSchristos   { "ble"    ,1,0x68080000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
27198b9484cSchristos   { "bgt"    ,1,0x68090000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
27298b9484cSchristos   { "bge"    ,1,0x680A0000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
27398b9484cSchristos   { "bz"     ,1,0x68050000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
27498b9484cSchristos   { "bnz"    ,1,0x68060000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
27598b9484cSchristos   { "bp"     ,1,0x68090000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
27698b9484cSchristos   { "bn"     ,1,0x68070000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
27798b9484cSchristos   { "bnn"    ,1,0x680A0000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
27898b9484cSchristos   { "bnv"    ,1,0x680C0000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
27998b9484cSchristos   { "bv"     ,1,0x680D0000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
28098b9484cSchristos   { "bnuf"   ,1,0x680E0000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
28198b9484cSchristos   { "buf"    ,1,0x680F0000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
28298b9484cSchristos   { "bnc"    ,1,0x68040000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
28398b9484cSchristos   { "bc"     ,1,0x68010000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
28498b9484cSchristos   { "bnlv"   ,1,0x68100000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
28598b9484cSchristos   { "blv"    ,1,0x68110000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
28698b9484cSchristos   { "bnluf"  ,1,0x68120000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
28798b9484cSchristos   { "bluf"   ,1,0x68130000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
28898b9484cSchristos   { "bzuf"   ,1,0x68140000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
28998b9484cSchristos   { "bd"     ,1,0x68200000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
29098b9484cSchristos   { "bud"    ,1,0x68200000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
29198b9484cSchristos   { "blod"   ,1,0x68210000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
29298b9484cSchristos   { "blsd"   ,1,0x68220000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
29398b9484cSchristos   { "bhid"   ,1,0x68230000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
29498b9484cSchristos   { "bhsd"   ,1,0x68240000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
29598b9484cSchristos   { "beqd"   ,1,0x68250000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
29698b9484cSchristos   { "bned"   ,1,0x68260000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
29798b9484cSchristos   { "bltd"   ,1,0x68270000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
29898b9484cSchristos   { "bled"   ,1,0x68280000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
29998b9484cSchristos   { "bgtd"   ,1,0x68290000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
30098b9484cSchristos   { "bged"   ,1,0x682A0000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
30198b9484cSchristos   { "bzd"    ,1,0x68250000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
30298b9484cSchristos   { "bnzd"   ,1,0x68260000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
30398b9484cSchristos   { "bpd"    ,1,0x68290000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
30498b9484cSchristos   { "bnd"    ,1,0x68270000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
30598b9484cSchristos   { "bnnd"   ,1,0x682A0000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
30698b9484cSchristos   { "bnvd"   ,1,0x682C0000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
30798b9484cSchristos   { "bvd"    ,1,0x682D0000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
30898b9484cSchristos   { "bnufd"  ,1,0x682E0000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
30998b9484cSchristos   { "bufd"   ,1,0x682F0000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
31098b9484cSchristos   { "bncd"   ,1,0x68240000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
31198b9484cSchristos   { "bcd"    ,1,0x68210000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
31298b9484cSchristos   { "bnlvd"  ,1,0x68300000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
31398b9484cSchristos   { "blvd"   ,1,0x68310000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
31498b9484cSchristos   { "bnlufd" ,1,0x68320000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
31598b9484cSchristos   { "blufd"  ,1,0x68330000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
31698b9484cSchristos   { "bzufd"  ,1,0x68340000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_None },
31798b9484cSchristos   { "br"     ,1,0x60000000,0,           { Imm24, 0, 0 }, Imm_UInt },
31898b9484cSchristos   { "brd"    ,1,0x61000000,0,           { Imm24, 0, 0 }, Imm_UInt },
31998b9484cSchristos   { "call"   ,1,0x62000000,0,           { Imm24, 0, 0 }, Imm_UInt },
32098b9484cSchristos   { "callu"  ,1,0x70000000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
32198b9484cSchristos   { "calllo" ,1,0x70010000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
32298b9484cSchristos   { "callls" ,1,0x70020000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
32398b9484cSchristos   { "callhi" ,1,0x70030000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
32498b9484cSchristos   { "callhs" ,1,0x70040000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
32598b9484cSchristos   { "calleq" ,1,0x70050000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
32698b9484cSchristos   { "callne" ,1,0x70060000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
32798b9484cSchristos   { "calllt" ,1,0x70070000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
32898b9484cSchristos   { "callle" ,1,0x70080000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
32998b9484cSchristos   { "callgt" ,1,0x70090000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
33098b9484cSchristos   { "callge" ,1,0x700A0000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
33198b9484cSchristos   { "callz"  ,1,0x70050000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
33298b9484cSchristos   { "callnz" ,1,0x70060000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
33398b9484cSchristos   { "callp"  ,1,0x70090000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
33498b9484cSchristos   { "calln"  ,1,0x70070000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
33598b9484cSchristos   { "callnn" ,1,0x700A0000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
33698b9484cSchristos   { "callnv" ,1,0x700C0000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
33798b9484cSchristos   { "callv"  ,1,0x700D0000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
33898b9484cSchristos   { "callnuf",1,0x700E0000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
33998b9484cSchristos   { "calluf" ,1,0x700F0000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
34098b9484cSchristos   { "callnc" ,1,0x70040000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
34198b9484cSchristos   { "callc"  ,1,0x70010000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
34298b9484cSchristos   { "callnlv",1,0x70100000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
34398b9484cSchristos   { "calllv" ,1,0x70110000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
34498b9484cSchristos   { "callnluf",1,0x70120000,PCRel,      { AllReg|Disp, 0, 0 }, Imm_UInt },
34598b9484cSchristos   { "callluf",1,0x70130000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
34698b9484cSchristos   { "callzuf",1,0x70140000,PCRel,       { AllReg|Disp, 0, 0 }, Imm_UInt },
34798b9484cSchristos   { "cmpf"   ,2,0x04000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
34898b9484cSchristos   { "cmpf3"  ,2,0x23000000,AddressMode, { TAddr1, TAddr2, 0 }, Imm_None },
34998b9484cSchristos   { "cmpi"   ,2,0x04800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
35098b9484cSchristos   { "cmpi3"  ,2,0x23800000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, 0 }, Imm_None },
35198b9484cSchristos   { "db"     ,2,0x6C000000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
35298b9484cSchristos   { "dbu"    ,2,0x6C000000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
35398b9484cSchristos   { "dblo"   ,2,0x6C010000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
35498b9484cSchristos   { "dbls"   ,2,0x6C020000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
35598b9484cSchristos   { "dbhi"   ,2,0x6C030000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
35698b9484cSchristos   { "dbhs"   ,2,0x6C040000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
35798b9484cSchristos   { "dbeq"   ,2,0x6C050000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
35898b9484cSchristos   { "dbne"   ,2,0x6C060000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
35998b9484cSchristos   { "dblt"   ,2,0x6C070000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
36098b9484cSchristos   { "dble"   ,2,0x6C080000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
36198b9484cSchristos   { "dbgt"   ,2,0x6C090000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
36298b9484cSchristos   { "dbge"   ,2,0x6C0A0000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
36398b9484cSchristos   { "dbz"    ,2,0x6C050000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
36498b9484cSchristos   { "dbnz"   ,2,0x6C060000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
36598b9484cSchristos   { "dbp"    ,2,0x6C090000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
36698b9484cSchristos   { "dbn"    ,2,0x6C070000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
36798b9484cSchristos   { "dbnn"   ,2,0x6C0A0000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
36898b9484cSchristos   { "dbnv"   ,2,0x6C0C0000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
36998b9484cSchristos   { "dbv"    ,2,0x6C0D0000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
37098b9484cSchristos   { "dbnuf"  ,2,0x6C0E0000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
37198b9484cSchristos   { "dbuf"   ,2,0x6C0F0000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
37298b9484cSchristos   { "dbnc"   ,2,0x6C040000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
37398b9484cSchristos   { "dbc"    ,2,0x6C010000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
37498b9484cSchristos   { "dbnlv"  ,2,0x6C100000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
37598b9484cSchristos   { "dblv"   ,2,0x6C110000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
37698b9484cSchristos   { "dbnluf" ,2,0x6C120000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
37798b9484cSchristos   { "dbluf"  ,2,0x6C130000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
37898b9484cSchristos   { "dbzuf"  ,2,0x6C140000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
37998b9484cSchristos   { "dbd"    ,2,0x6C200000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
38098b9484cSchristos   { "dbud"   ,2,0x6C200000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
38198b9484cSchristos   { "dblod"  ,2,0x6C210000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
38298b9484cSchristos   { "dblsd"  ,2,0x6C220000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
38398b9484cSchristos   { "dbhid"  ,2,0x6C230000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
38498b9484cSchristos   { "dbhsd"  ,2,0x6C240000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
38598b9484cSchristos   { "dbeqd"  ,2,0x6C250000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
38698b9484cSchristos   { "dbned"  ,2,0x6C260000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
38798b9484cSchristos   { "dbltd"  ,2,0x6C270000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
38898b9484cSchristos   { "dbled"  ,2,0x6C280000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
38998b9484cSchristos   { "dbgtd"  ,2,0x6C290000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
39098b9484cSchristos   { "dbged"  ,2,0x6C2A0000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
39198b9484cSchristos   { "dbzd"   ,2,0x6C250000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
39298b9484cSchristos   { "dbnzd"  ,2,0x6C260000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
39398b9484cSchristos   { "dbpd"   ,2,0x6C290000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
39498b9484cSchristos   { "dbnd"   ,2,0x6C270000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
39598b9484cSchristos   { "dbnnd"  ,2,0x6C2A0000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
39698b9484cSchristos   { "dbnvd"  ,2,0x6C2C0000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
39798b9484cSchristos   { "dbvd"   ,2,0x6C2D0000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
39898b9484cSchristos   { "dbnufd" ,2,0x6C2E0000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
39998b9484cSchristos   { "dbufd"  ,2,0x6C2F0000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
40098b9484cSchristos   { "dbncd"  ,2,0x6C240000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
40198b9484cSchristos   { "dbcd"   ,2,0x6C210000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
40298b9484cSchristos   { "dbnlvd" ,2,0x6C300000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
40398b9484cSchristos   { "dblvd"  ,2,0x6C310000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
40498b9484cSchristos   { "dbnlufd",2,0x6C320000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
40598b9484cSchristos   { "dblufd" ,2,0x6C330000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
40698b9484cSchristos   { "dbzufd" ,2,0x6C340000,PCRel,       { ARn, AllReg|Disp, 0 }, Imm_None },
40798b9484cSchristos   { "fix"    ,2,0x05000000,AddressMode, { GAddr1, AllReg, 0 }, Imm_Float },
40898b9484cSchristos   { "float"  ,2,0x05800000,AddressMode, { GAddr2, Rn, 0 }, Imm_SInt },
40998b9484cSchristos   { "iack"   ,1,0x1B000000,AddressMode, { Direct|Indirect, 0, 0 }, Imm_None },
41098b9484cSchristos   { "idle"   ,0,0x06000000,0,           { 0, 0, 0 }, Imm_None },
41198b9484cSchristos   { "idle2"  ,0,0x06000001,0,           { 0, 0, 0 }, Imm_None }, /* LC31 Only */
41298b9484cSchristos   { "lde"    ,2,0x06800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
41398b9484cSchristos   { "ldf"    ,2,0x07000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
41498b9484cSchristos   { "ldfu"   ,2,0x40000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
41598b9484cSchristos   { "ldflo"  ,2,0x40800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
41698b9484cSchristos   { "ldfls"  ,2,0x41000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
41798b9484cSchristos   { "ldfhi"  ,2,0x41800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
41898b9484cSchristos   { "ldfhs"  ,2,0x42000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
41998b9484cSchristos   { "ldfeq"  ,2,0x42800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
42098b9484cSchristos   { "ldfne"  ,2,0x43000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
42198b9484cSchristos   { "ldflt"  ,2,0x43800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
42298b9484cSchristos   { "ldfle"  ,2,0x44000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
42398b9484cSchristos   { "ldfgt"  ,2,0x44800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
42498b9484cSchristos   { "ldfge"  ,2,0x45000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
42598b9484cSchristos   { "ldfz"   ,2,0x42800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
42698b9484cSchristos   { "ldfnz"  ,2,0x43000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
42798b9484cSchristos   { "ldfp"   ,2,0x44800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
42898b9484cSchristos   { "ldfn"   ,2,0x43800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
42998b9484cSchristos   { "ldfnn"  ,2,0x45000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
43098b9484cSchristos   { "ldfnv"  ,2,0x46000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
43198b9484cSchristos   { "ldfv"   ,2,0x46800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
43298b9484cSchristos   { "ldfnuf" ,2,0x47000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
43398b9484cSchristos   { "ldfuf"  ,2,0x47800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
43498b9484cSchristos   { "ldfnc"  ,2,0x42000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
43598b9484cSchristos   { "ldfc"   ,2,0x40800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
43698b9484cSchristos   { "ldfnlv" ,2,0x48000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
43798b9484cSchristos   { "ldflv"  ,2,0x48800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
43898b9484cSchristos   { "ldfnluf",2,0x49000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
43998b9484cSchristos   { "ldfluf" ,2,0x49800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
44098b9484cSchristos   { "ldfzuf" ,2,0x4A000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
44198b9484cSchristos   { "ldfi"   ,2,0x07800000,AddressMode, { Direct|Indirect, Rn, 0 }, Imm_None },
44298b9484cSchristos   { "ldi"    ,2,0x08000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
44398b9484cSchristos   { "ldiu"   ,2,0x50000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
44498b9484cSchristos   { "ldilo"  ,2,0x50800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
44598b9484cSchristos   { "ldils"  ,2,0x51000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
44698b9484cSchristos   { "ldihi"  ,2,0x51800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
44798b9484cSchristos   { "ldihs"  ,2,0x52000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
44898b9484cSchristos   { "ldieq"  ,2,0x52800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
44998b9484cSchristos   { "ldine"  ,2,0x53000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
45098b9484cSchristos   { "ldilt"  ,2,0x53800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
45198b9484cSchristos   { "ldile"  ,2,0x54000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
45298b9484cSchristos   { "ldigt"  ,2,0x54800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
45398b9484cSchristos   { "ldige"  ,2,0x55000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
45498b9484cSchristos   { "ldiz"   ,2,0x52800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
45598b9484cSchristos   { "ldinz"  ,2,0x53000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
45698b9484cSchristos   { "ldip"   ,2,0x54800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
45798b9484cSchristos   { "ldin"   ,2,0x53800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
45898b9484cSchristos   { "ldinn"  ,2,0x55000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
45998b9484cSchristos   { "ldinv"  ,2,0x56000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
46098b9484cSchristos   { "ldiv"   ,2,0x56800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
46198b9484cSchristos   { "ldinuf" ,2,0x57000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
46298b9484cSchristos   { "ldiuf"  ,2,0x57800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
46398b9484cSchristos   { "ldinc"  ,2,0x52000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
46498b9484cSchristos   { "ldic"   ,2,0x50800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
46598b9484cSchristos   { "ldinlv" ,2,0x58000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
46698b9484cSchristos   { "ldilv"  ,2,0x58800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
46798b9484cSchristos   { "ldinluf",2,0x59000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
46898b9484cSchristos   { "ldiluf" ,2,0x59800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
46998b9484cSchristos   { "ldizuf" ,2,0x5A000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
47098b9484cSchristos   { "ldii"   ,2,0x08800000,AddressMode, { Direct|Indirect, AllReg, 0 }, Imm_None },
47198b9484cSchristos   { "ldm"    ,2,0x09000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
47298b9484cSchristos   { "ldp"    ,2,0x08700000,0,           { Abs24|Direct, DPReg|NotReq, 0 }, Imm_UInt },
47398b9484cSchristos   { "lopower",0,0x10800001,0,           { 0, 0, 0 }, Imm_None }, /* LC31 Only */
47498b9484cSchristos   { "lsh"    ,2,0x09800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_UInt },
47598b9484cSchristos   { "lsh3"   ,3,0x24000000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None },
47698b9484cSchristos   { "maxspeed",0,0x10800000,0,          { 0, 0, 0 }, Imm_None }, /* LC31 Only */
47798b9484cSchristos   { "mpyf"   ,2,0x0A000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
47898b9484cSchristos   { "mpyf3"  ,3,0x24800000,AddressMode, { TAddr1, TAddr2, Rn }, Imm_None },
47998b9484cSchristos   { "mpyi"   ,2,0x0A800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
48098b9484cSchristos   { "mpyi3"  ,3,0x25000000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None },
48198b9484cSchristos   { "negb"   ,2,0x0B000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
48298b9484cSchristos   { "negf"   ,2,0x0B800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
48398b9484cSchristos   { "negi"   ,2,0x0C000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
48498b9484cSchristos   { "nop"    ,1,0x0C800000,AddressMode, { AllReg|Indirect|NotReq, 0, 0 }, Imm_None },
48598b9484cSchristos   { "norm"   ,2,0x0D000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float }, /*Check another source*/
48698b9484cSchristos   { "not"    ,2,0x0D800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_UInt },
48798b9484cSchristos   { "or"     ,2,0x10000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_UInt },
48898b9484cSchristos   { "or3"    ,3,0x25800000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None },
48998b9484cSchristos   { "pop"    ,1,0x0E200000,StackOp,     { AllReg, 0, 0 }, Imm_None },
49098b9484cSchristos   { "popf"   ,1,0x0EA00000,StackOp,     { Rn, 0, 0 }, Imm_None },
49198b9484cSchristos   { "push"   ,1,0x0F200000,StackOp,     { AllReg, 0, 0 }, Imm_None },
49298b9484cSchristos   { "pushf"  ,1,0x0FA00000,StackOp,     { Rn, 0, 0 }, Imm_None },
49398b9484cSchristos   { "reti"   ,0,0x78000000,0,           { 0, 0, 0 }, Imm_None },
49498b9484cSchristos   { "retiu"  ,0,0x78000000,0,           { 0, 0, 0 }, Imm_None },
49598b9484cSchristos   { "retilo" ,0,0x78010000,0,           { 0, 0, 0 }, Imm_None },
49698b9484cSchristos   { "retils" ,0,0x78020000,0,           { 0, 0, 0 }, Imm_None },
49798b9484cSchristos   { "retihi" ,0,0x78030000,0,           { 0, 0, 0 }, Imm_None },
49898b9484cSchristos   { "retihs" ,0,0x78040000,0,           { 0, 0, 0 }, Imm_None },
49998b9484cSchristos   { "retieq" ,0,0x78050000,0,           { 0, 0, 0 }, Imm_None },
50098b9484cSchristos   { "retine" ,0,0x78060000,0,           { 0, 0, 0 }, Imm_None },
50198b9484cSchristos   { "retilt" ,0,0x78070000,0,           { 0, 0, 0 }, Imm_None },
50298b9484cSchristos   { "retile" ,0,0x78080000,0,           { 0, 0, 0 }, Imm_None },
50398b9484cSchristos   { "retigt" ,0,0x78090000,0,           { 0, 0, 0 }, Imm_None },
50498b9484cSchristos   { "retige" ,0,0x780A0000,0,           { 0, 0, 0 }, Imm_None },
50598b9484cSchristos   { "retiz"  ,0,0x78050000,0,           { 0, 0, 0 }, Imm_None },
50698b9484cSchristos   { "retinz" ,0,0x78060000,0,           { 0, 0, 0 }, Imm_None },
50798b9484cSchristos   { "retip"  ,0,0x78090000,0,           { 0, 0, 0 }, Imm_None },
50898b9484cSchristos   { "retin"  ,0,0x78070000,0,           { 0, 0, 0 }, Imm_None },
50998b9484cSchristos   { "retinn" ,0,0x780A0000,0,           { 0, 0, 0 }, Imm_None },
51098b9484cSchristos   { "retinv" ,0,0x780C0000,0,           { 0, 0, 0 }, Imm_None },
51198b9484cSchristos   { "retiv"  ,0,0x780D0000,0,           { 0, 0, 0 }, Imm_None },
51298b9484cSchristos   { "retinuf",0,0x780E0000,0,           { 0, 0, 0 }, Imm_None },
51398b9484cSchristos   { "retiuf" ,0,0x780F0000,0,           { 0, 0, 0 }, Imm_None },
51498b9484cSchristos   { "retinc" ,0,0x78040000,0,           { 0, 0, 0 }, Imm_None },
51598b9484cSchristos   { "retic"  ,0,0x78010000,0,           { 0, 0, 0 }, Imm_None },
51698b9484cSchristos   { "retinlv",0,0x78100000,0,           { 0, 0, 0 }, Imm_None },
51798b9484cSchristos   { "retilv" ,0,0x78110000,0,           { 0, 0, 0 }, Imm_None },
51898b9484cSchristos   { "retinluf",0,0x78120000,0,          { 0, 0, 0 }, Imm_None },
51998b9484cSchristos   { "retiluf",0,0x78130000,0,           { 0, 0, 0 }, Imm_None },
52098b9484cSchristos   { "retizuf",0,0x78140000,0,           { 0, 0, 0 }, Imm_None },
52198b9484cSchristos   { "rets"   ,0,0x78800000,0,           { 0, 0, 0 }, Imm_None },
52298b9484cSchristos   { "retsu"  ,0,0x78800000,0,           { 0, 0, 0 }, Imm_None },
52398b9484cSchristos   { "retslo" ,0,0x78810000,0,           { 0, 0, 0 }, Imm_None },
52498b9484cSchristos   { "retsls" ,0,0x78820000,0,           { 0, 0, 0 }, Imm_None },
52598b9484cSchristos   { "retshi" ,0,0x78830000,0,           { 0, 0, 0 }, Imm_None },
52698b9484cSchristos   { "retshs" ,0,0x78840000,0,           { 0, 0, 0 }, Imm_None },
52798b9484cSchristos   { "retseq" ,0,0x78850000,0,           { 0, 0, 0 }, Imm_None },
52898b9484cSchristos   { "retsne" ,0,0x78860000,0,           { 0, 0, 0 }, Imm_None },
52998b9484cSchristos   { "retslt" ,0,0x78870000,0,           { 0, 0, 0 }, Imm_None },
53098b9484cSchristos   { "retsle" ,0,0x78880000,0,           { 0, 0, 0 }, Imm_None },
53198b9484cSchristos   { "retsgt" ,0,0x78890000,0,           { 0, 0, 0 }, Imm_None },
53298b9484cSchristos   { "retsge" ,0,0x788A0000,0,           { 0, 0, 0 }, Imm_None },
53398b9484cSchristos   { "retsz"  ,0,0x78850000,0,           { 0, 0, 0 }, Imm_None },
53498b9484cSchristos   { "retsnz" ,0,0x78860000,0,           { 0, 0, 0 }, Imm_None },
53598b9484cSchristos   { "retsp"  ,0,0x78890000,0,           { 0, 0, 0 }, Imm_None },
53698b9484cSchristos   { "retsn"  ,0,0x78870000,0,           { 0, 0, 0 }, Imm_None },
53798b9484cSchristos   { "retsnn" ,0,0x788A0000,0,           { 0, 0, 0 }, Imm_None },
53898b9484cSchristos   { "retsnv" ,0,0x788C0000,0,           { 0, 0, 0 }, Imm_None },
53998b9484cSchristos   { "retsv"  ,0,0x788D0000,0,           { 0, 0, 0 }, Imm_None },
54098b9484cSchristos   { "retsnuf",0,0x788E0000,0,           { 0, 0, 0 }, Imm_None },
54198b9484cSchristos   { "retsuf" ,0,0x788F0000,0,           { 0, 0, 0 }, Imm_None },
54298b9484cSchristos   { "retsnc" ,0,0x78840000,0,           { 0, 0, 0 }, Imm_None },
54398b9484cSchristos   { "retsc"  ,0,0x78810000,0,           { 0, 0, 0 }, Imm_None },
54498b9484cSchristos   { "retsnlv",0,0x78900000,0,           { 0, 0, 0 }, Imm_None },
54598b9484cSchristos   { "retslv" ,0,0x78910000,0,           { 0, 0, 0 }, Imm_None },
54698b9484cSchristos   { "retsnluf",0,0x78920000,0,          { 0, 0, 0 }, Imm_None },
54798b9484cSchristos   { "retsluf",0,0x78930000,0,           { 0, 0, 0 }, Imm_None },
54898b9484cSchristos   { "retszuf",0,0x78940000,0,           { 0, 0, 0 }, Imm_None },
54998b9484cSchristos   { "rnd"    ,2,0x11000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
55098b9484cSchristos   { "rol"    ,1,0x11E00001,Rotate,      { AllReg, 0, 0 }, Imm_None },
55198b9484cSchristos   { "rolc"   ,1,0x12600001,Rotate,      { AllReg, 0, 0 }, Imm_None },
55298b9484cSchristos   { "ror"    ,1,0x12E0FFFF,Rotate,      { AllReg, 0, 0 }, Imm_None },
55398b9484cSchristos   { "rorc"   ,1,0x1360FFFF,Rotate,      { AllReg, 0, 0 }, Imm_None },
55498b9484cSchristos   { "rptb"   ,1,0x64000000,0,           { Imm24, 0, 0 }, Imm_UInt },
55598b9484cSchristos   { "rpts"   ,1,0x139B0000,AddressMode, { GAddr2, 0, 0 }, Imm_UInt },
55698b9484cSchristos   { "sigi"   ,0,0x16000000,0,           { 0, 0, 0 }, Imm_None },
55798b9484cSchristos   { "stf"    ,2,0x14000000,AddressMode, { Rn, Direct|Indirect, 0 }, Imm_Float },
55898b9484cSchristos   { "stfi"   ,2,0x14800000,AddressMode, { Rn, Direct|Indirect, 0 }, Imm_Float },
55998b9484cSchristos   { "sti"    ,2,0x15000000,AddressMode, { AllReg, Direct|Indirect, 0 }, Imm_SInt },
56098b9484cSchristos   { "stii"   ,2,0x15800000,AddressMode, { AllReg, Direct|Indirect, 0 }, Imm_SInt },
56198b9484cSchristos   { "subb"   ,2,0x16800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
56298b9484cSchristos   { "subb3"  ,3,0x26000000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None },
56398b9484cSchristos   { "subc"   ,2,0x17000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_UInt },
56498b9484cSchristos   { "subf"   ,2,0x17800000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
56598b9484cSchristos   { "subf3"  ,3,0x26800000,AddressMode, { TAddr1, TAddr2, Rn }, Imm_None },
56698b9484cSchristos   { "subi"   ,2,0x18000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
56798b9484cSchristos   { "subi3"  ,3,0x27000000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None },
56898b9484cSchristos   { "subrb"  ,2,0x18800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
56998b9484cSchristos   { "subrf"  ,2,0x19000000,AddressMode, { GAddr1, Rn, 0 }, Imm_Float },
57098b9484cSchristos   { "subri"  ,2,0x19800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_SInt },
57198b9484cSchristos   { "swi"    ,0,0x66000000,0,           { 0, 0, 0 }, Imm_None },
57298b9484cSchristos   { "trap"   ,1,0x74800020,0,           { IVector, 0, 0 }, Imm_None },
57398b9484cSchristos   { "trapu"  ,1,0x74800020,0,           { IVector, 0, 0 }, Imm_None },
57498b9484cSchristos   { "traplo" ,1,0x74810020,0,           { IVector, 0, 0 }, Imm_None },
57598b9484cSchristos   { "trapls" ,1,0x74820020,0,           { IVector, 0, 0 }, Imm_None },
57698b9484cSchristos   { "traphi" ,1,0x74830020,0,           { IVector, 0, 0 }, Imm_None },
57798b9484cSchristos   { "traphs" ,1,0x74840020,0,           { IVector, 0, 0 }, Imm_None },
57898b9484cSchristos   { "trapeq" ,1,0x74850020,0,           { IVector, 0, 0 }, Imm_None },
57998b9484cSchristos   { "trapne" ,1,0x74860020,0,           { IVector, 0, 0 }, Imm_None },
58098b9484cSchristos   { "traplt" ,1,0x74870020,0,           { IVector, 0, 0 }, Imm_None },
58198b9484cSchristos   { "traple" ,1,0x74880020,0,           { IVector, 0, 0 }, Imm_None },
58298b9484cSchristos   { "trapgt" ,1,0x74890020,0,           { IVector, 0, 0 }, Imm_None },
58398b9484cSchristos   { "trapge" ,1,0x748A0020,0,           { IVector, 0, 0 }, Imm_None },
58498b9484cSchristos   { "trapz"  ,1,0x74850020,0,           { IVector, 0, 0 }, Imm_None },
58598b9484cSchristos   { "trapnz" ,1,0x74860020,0,           { IVector, 0, 0 }, Imm_None },
58698b9484cSchristos   { "trapp"  ,1,0x74890020,0,           { IVector, 0, 0 }, Imm_None },
58798b9484cSchristos   { "trapn"  ,1,0x74870020,0,           { IVector, 0, 0 }, Imm_None },
58898b9484cSchristos   { "trapnn" ,1,0x748A0020,0,           { IVector, 0, 0 }, Imm_None },
58998b9484cSchristos   { "trapnv" ,1,0x748C0020,0,           { IVector, 0, 0 }, Imm_None },
59098b9484cSchristos   { "trapv"  ,1,0x748D0020,0,           { IVector, 0, 0 }, Imm_None },
59198b9484cSchristos   { "trapnuf",1,0x748E0020,0,           { IVector, 0, 0 }, Imm_None },
59298b9484cSchristos   { "trapuf" ,1,0x748F0020,0,           { IVector, 0, 0 }, Imm_None },
59398b9484cSchristos   { "trapnc" ,1,0x74840020,0,           { IVector, 0, 0 }, Imm_None },
59498b9484cSchristos   { "trapc"  ,1,0x74810020,0,           { IVector, 0, 0 }, Imm_None },
59598b9484cSchristos   { "trapnlv",1,0x74900020,0,           { IVector, 0, 0 }, Imm_None },
59698b9484cSchristos   { "traplv" ,1,0x74910020,0,           { IVector, 0, 0 }, Imm_None },
59798b9484cSchristos   { "trapnluf",1,0x74920020,0,          { IVector, 0, 0 }, Imm_None },
59898b9484cSchristos   { "trapluf",1,0x74930020,0,           { IVector, 0, 0 }, Imm_None },
59998b9484cSchristos   { "trapzuf",1,0x74940020,0,           { IVector, 0, 0 }, Imm_None },
60098b9484cSchristos   { "tstb"   ,2,0x1A000000,AddressMode, { GAddr2, AllReg, 0 }, Imm_UInt },
60198b9484cSchristos   { "tstb3"  ,2,0x27800000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, 0 }, Imm_None },
60298b9484cSchristos   { "xor"    ,2,0x1A800000,AddressMode, { GAddr2, AllReg, 0 }, Imm_UInt },
60398b9484cSchristos   { "xor3"   ,3,0x28000000,AddressMode, { TAddr1|AllReg, TAddr2|AllReg, AllReg }, Imm_None },
60498b9484cSchristos   { ""       ,0,0x00000000,0,           { 0, 0, 0 }, 0 }
60598b9484cSchristos };
60698b9484cSchristos 
60798b9484cSchristos static const insn_template *const tic30_optab_end =
60898b9484cSchristos   tic30_optab + sizeof(tic30_optab)/sizeof(tic30_optab[0]);
60998b9484cSchristos 
61098b9484cSchristos typedef struct {
611ba340e45Schristos   const char *name;
61298b9484cSchristos   unsigned int operands_1;
61398b9484cSchristos   unsigned int operands_2;
61498b9484cSchristos   unsigned int base_opcode;
61598b9484cSchristos   unsigned int operand_types[2][3];
61698b9484cSchristos   /* Which operand fits into which part of the final opcode word. */
61798b9484cSchristos   int oporder;
61898b9484cSchristos } partemplate;
61998b9484cSchristos 
62098b9484cSchristos /* oporder defines - not very descriptive. */
62198b9484cSchristos #define OO_4op1   0
62298b9484cSchristos #define OO_4op2   1
62398b9484cSchristos #define OO_4op3   2
62498b9484cSchristos #define OO_5op1   3
62598b9484cSchristos #define OO_5op2   4
62698b9484cSchristos #define OO_PField 5
62798b9484cSchristos 
62898b9484cSchristos static const partemplate tic30_paroptab[] = {
62998b9484cSchristos   { "q_absf_stf",   2,2,0xC8000000, { { Indirect, Rn, 0 }, { Rn, Indirect, 0 } },
63098b9484cSchristos 	OO_4op1 },
63198b9484cSchristos   { "q_absi_sti",   2,2,0xCA000000, { { Indirect, Rn, 0 }, { Rn, Indirect, 0 } },
63298b9484cSchristos 	OO_4op1 },
63398b9484cSchristos   { "q_addf3_stf",  3,2,0xCC000000, { { Indirect, Rn, Rn }, { Rn, Indirect, 0 } },
63498b9484cSchristos 	OO_5op1 },
63598b9484cSchristos   { "q_addi3_sti",  3,2,0xCE000000, { { Indirect, Rn, Rn }, { Rn, Indirect, 0 } },
63698b9484cSchristos 	OO_5op1 },
63798b9484cSchristos   { "q_and3_sti",   3,2,0xD0000000, { { Indirect, Rn, Rn }, { Rn, Indirect, 0 } },
63898b9484cSchristos 	OO_5op1 },
63998b9484cSchristos   { "q_ash3_sti",   3,2,0xD2000000, { { Rn, Indirect, Rn }, { Rn, Indirect, 0 } },
64098b9484cSchristos 	OO_5op2 },
64198b9484cSchristos   { "q_fix_sti",    2,2,0xD4000000, { { Indirect, Rn, 0 }, { Rn, Indirect, 0 } },
64298b9484cSchristos 	OO_4op1 },
64398b9484cSchristos   { "q_float_stf",  2,2,0xD6000000, { { Indirect, Rn, 0 }, { Rn, Indirect, 0 } },
64498b9484cSchristos 	OO_4op1 },
64598b9484cSchristos   { "q_ldf_ldf",    2,2,0xC4000000, { { Indirect, Rn, 0 }, { Indirect, Rn, 0 } },
64698b9484cSchristos 	OO_4op2 },
64798b9484cSchristos   { "q_ldf_stf",    2,2,0xD8000000, { { Indirect, Rn, 0 }, { Rn, Indirect, 0 } },
64898b9484cSchristos 	OO_4op1 },
64998b9484cSchristos   { "q_ldi_ldi",    2,2,0xC6000000, { { Indirect, Rn, 0 }, { Indirect, Rn, 0 } },
65098b9484cSchristos 	OO_4op2 },
65198b9484cSchristos   { "q_ldi_sti",    2,2,0xDA000000, { { Indirect, Rn, 0 }, { Rn, Indirect, 0 } },
65298b9484cSchristos 	OO_4op1 },
65398b9484cSchristos   { "q_lsh3_sti",   3,2,0xDC000000, { { Rn, Indirect, Rn }, { Rn, Indirect, 0 } },
65498b9484cSchristos 	OO_5op2 },
65598b9484cSchristos   { "q_mpyf3_addf3",3,3,0x80000000, { { Rn | Indirect, Rn | Indirect, Rn },
65698b9484cSchristos  	                              { Rn | Indirect, Rn | Indirect, Rn } }, OO_PField },
65798b9484cSchristos   { "q_mpyf3_stf",  3,2,0xDE000000, { { Indirect, Rn, Rn }, { Rn, Indirect, 0 } },
65898b9484cSchristos 	OO_5op1 },
65998b9484cSchristos   { "q_mpyf3_subf3",3,3,0x84000000, { { Rn | Indirect, Rn | Indirect, Rn },
66098b9484cSchristos 	                              { Rn | Indirect, Rn | Indirect, Rn } }, OO_PField },
66198b9484cSchristos   { "q_mpyi3_addi3",3,3,0x88000000, { { Rn | Indirect, Rn | Indirect, Rn },
66298b9484cSchristos 	                              { Rn | Indirect, Rn | Indirect, Rn } }, OO_PField },
66398b9484cSchristos   { "q_mpyi3_sti",  3,2,0xE0000000, { { Indirect, Rn, Rn }, { Rn, Indirect, 0 } },
66498b9484cSchristos 	OO_5op1 },
66598b9484cSchristos   { "q_mpyi3_subi3",3,3,0x8C000000, { { Rn | Indirect, Rn | Indirect, Rn },
66698b9484cSchristos 	                              { Rn | Indirect, Rn | Indirect, Rn } }, OO_PField },
66798b9484cSchristos   { "q_negf_stf",   2,2,0xE2000000, { { Indirect, Rn, 0 }, { Rn, Indirect, 0 } },
66898b9484cSchristos 	OO_4op1 },
66998b9484cSchristos   { "q_negi_sti",   2,2,0xE4000000, { { Indirect, Rn, 0 }, { Rn, Indirect, 0 } },
67098b9484cSchristos 	OO_4op1 },
67198b9484cSchristos   { "q_not_sti",    2,2,0xE6000000, { { Indirect, Rn, 0 }, { Rn, Indirect, 0 } },
67298b9484cSchristos 	OO_4op1 },
67398b9484cSchristos   { "q_or3_sti",    3,2,0xE8000000, { { Indirect, Rn, Rn }, { Rn, Indirect, 0 } },
67498b9484cSchristos 	OO_5op1 },
67598b9484cSchristos   { "q_stf_stf",    2,2,0xC0000000, { { Rn, Indirect, 0 }, { Rn, Indirect, 0 } },
67698b9484cSchristos 	OO_4op3 },
67798b9484cSchristos   { "q_sti_sti",    2,2,0xC2000000, { { Rn, Indirect, 0 }, { Rn, Indirect, 0 } },
67898b9484cSchristos 	OO_4op3 },
67998b9484cSchristos   { "q_subf3_stf",  3,2,0xEA000000, { { Rn, Indirect, Rn }, { Rn, Indirect, 0 } },
68098b9484cSchristos 	OO_5op2 },
68198b9484cSchristos   { "q_subi3_sti",  3,2,0xEC000000, { { Rn, Indirect, Rn }, { Rn, Indirect, 0 } },
68298b9484cSchristos 	OO_5op2 },
68398b9484cSchristos   { "q_xor3_sti",   3,2,0xEE000000, { { Indirect, Rn, Rn }, { Rn, Indirect, 0 } },
68498b9484cSchristos 	OO_5op1 },
68598b9484cSchristos   { "",             0,0,0x00000000, { { 0, 0, 0 }, { 0, 0, 0 } }, 0 }
68698b9484cSchristos };
68798b9484cSchristos 
68898b9484cSchristos static const partemplate *const tic30_paroptab_end =
68998b9484cSchristos   tic30_paroptab + sizeof(tic30_paroptab)/sizeof(tic30_paroptab[0]);
69098b9484cSchristos 
69198b9484cSchristos #endif
692