Home | History | Annotate | Download | only in opcode
      1 /* TI C6X opcode table.
      2    Copyright (C) 2010-2014 Free Software Foundation, Inc.
      3 
      4    This program is free software; you can redistribute it and/or modify
      5    it under the terms of the GNU General Public License as published by
      6    the Free Software Foundation; either version 3 of the License, or
      7    (at your option) any later version.
      8 
      9    This program is distributed in the hope that it will be useful,
     10    but WITHOUT ANY WARRANTY; without even the implied warranty of
     11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     12    GNU General Public License for more details.
     13 
     14    You should have received a copy of the GNU General Public License
     15    along with this program; if not, write to the Free Software
     16    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
     17    MA 02110-1301, USA.  */
     18 
     19 /* Define the INSN macro before including this file; it takes as
     20    arguments the fields from tic6x_opcode (defined in tic6x.h).  The
     21    name is given as an identifier; the subsequent four operands should
     22    have "tic6x_func_unit_", "tic6x_insn_format_", "tic6x_pipeline_"
     23    and "TIC6X_INSN_", respectively, prepended to them by the macro
     24    definition.  Also define INSNE, which has a second argument that
     25    goes after tic6x_opcode_NAME_ to form the enumeration value for
     26    this instruction, where the value otherwise formed from the name,
     27    functional unit and format is ambiguous, but otherwise has the same
     28    arguments as INSN.  */
     29 
     30 #define TIC6X_INSN_C64X_AND_C67X TIC6X_INSN_C64X|TIC6X_INSN_C67X
     31 #define tic6x_insn_format_nfu_s_branch_nop_cst	\
     32   tic6x_insn_format_s_branch_nop_cst
     33 #define tic6x_insn_format_s_l_1_or_2_src tic6x_insn_format_l_1_or_2_src
     34 #define RAN(id, min, max) { CONCAT2(tic6x_field_,id), (min), (max) }
     35 #define FIX(id, val) RAN(id, val, val)
     36 #define FIX0() 0, { { 0, 0, 0 } }
     37 #define FIX1(a) 1, { a }
     38 #define FIX2(a, b) 2, { a, b }
     39 #define FIX3(a, b, c) 3, { a, b, c }
     40 #define FIX4(a, b, c, d) 4, { a, b, c, d }
     41 #define OP0() 0, { { 0, 0, FALSE, 0, 0, 0, 0 } }
     42 #define OP1(a) 1, { a }
     43 #define OP2(a, b) 2, { a, b }
     44 #define OP3(a, b, c) 3, { a, b, c }
     45 #define OP4(a, b, c, d) 4, { a, b, c, d }
     46 #define OACST { tic6x_operand_asm_const, 0, tic6x_rw_none, 0, 0, 0, 0 }
     47 #define OLCST { tic6x_operand_link_const, 0, tic6x_rw_none, 0, 0, 0, 0 }
     48 #define OHWCSTM1 { tic6x_operand_hw_const_minus_1, 0, tic6x_rw_none, 0, 0, 0, 0 }
     49 #define OHWCST0 { tic6x_operand_hw_const_0, 0, tic6x_rw_none, 0, 0, 0, 0 }
     50 #define OHWCST1 { tic6x_operand_hw_const_1, 0, tic6x_rw_none, 0, 0, 0, 0 }
     51 #define OHWCST5 { tic6x_operand_hw_const_5, 0, tic6x_rw_none, 0, 0, 0, 0 }
     52 #define OHWCST16 { tic6x_operand_hw_const_16, 0, tic6x_rw_none, 0, 0, 0, 0 }
     53 #define OHWCST24 { tic6x_operand_hw_const_24, 0, tic6x_rw_none, 0, 0, 0, 0 }
     54 #define OHWCST31 { tic6x_operand_hw_const_31, 0, tic6x_rw_none, 0, 0, 0, 0 }
     55 #define OFULIST { tic6x_operand_func_unit, 0, tic6x_rw_none, 0, 0, 0, 0 }
     56 #define ORIRP1 { tic6x_operand_irp, 4, tic6x_rw_read, 1, 1, 0, 0 }
     57 #define ORNRP1 { tic6x_operand_nrp, 4, tic6x_rw_read, 1, 1, 0, 0 }
     58 #define OWREG1 { tic6x_operand_reg, 4, tic6x_rw_write, 1, 1, 0, 0 }
     59 #define OWREG1Z { tic6x_operand_zreg, 4, tic6x_rw_write, 1, 1, 0, 0 }
     60 #define OWREG1NORS { tic6x_operand_reg_nors, 4, tic6x_rw_write, 1, 1, 0, 0 }
     61 #define ORREG1B { tic6x_operand_reg_bside, 4, tic6x_rw_write, 1, 1, 0, 0 }
     62 #define ORREG1BNORS { tic6x_operand_reg_bside_nors, 4, tic6x_rw_write, 1, 1, 0, 0 }
     63 #define OWRETREG1 { tic6x_operand_retreg, 4, tic6x_rw_write, 1, 1, 0, 0 }
     64 #define ORREG1 { tic6x_operand_reg, 4, tic6x_rw_read, 1, 1, 0, 0 }
     65 #define ORDREG1 { tic6x_operand_dreg, 4, tic6x_rw_read, 1, 1, 0, 0 }
     66 #define ORTREG1 { tic6x_operand_treg, 4, tic6x_rw_read, 1, 1, 0, 0 }
     67 #define ORWREG1 { tic6x_operand_reg, 4, tic6x_rw_read_write, 1, 1, 0, 0 }
     68 #define ORB15REG1 { tic6x_operand_b15reg, 4, tic6x_rw_read, 1, 1, 0, 0 }
     69 #define OWB15REG1 { tic6x_operand_b15reg, 4, tic6x_rw_write, 1, 1, 0, 0 }
     70 #define ORAREG1 { tic6x_operand_areg, 4, tic6x_rw_read, 1, 1, 0, 0 }
     71 #define ORXREG1 { tic6x_operand_xreg, 4, tic6x_rw_read, 1, 1, 0, 0 }
     72 #define ORREG12 { tic6x_operand_reg, 4, tic6x_rw_read, 1, 2, 0, 0 }
     73 #define ORREG14 { tic6x_operand_reg, 4, tic6x_rw_read, 1, 4, 0, 0 }
     74 #define ORXREG14 { tic6x_operand_xreg, 4, tic6x_rw_read, 1, 4, 0, 0 }
     75 #define OWREG2 { tic6x_operand_reg, 4, tic6x_rw_write, 2, 2, 0, 0 }
     76 #define OWREG4 { tic6x_operand_reg, 4, tic6x_rw_write, 4, 4, 0, 0 }
     77 #define OWREG9 { tic6x_operand_reg, 4, tic6x_rw_write, 9, 9, 0, 0 }
     78 #define OWDREG5 { tic6x_operand_dreg, 4, tic6x_rw_write, 5, 5, 0, 0 }
     79 #define OWTREG5 { tic6x_operand_treg, 4, tic6x_rw_write, 5, 5, 0, 0 }
     80 #define OWREGL1 { tic6x_operand_regpair, 5, tic6x_rw_write, 1, 1, 1, 1 }
     81 #define ORREGL1 { tic6x_operand_regpair, 5, tic6x_rw_read, 1, 1, 1, 1 }
     82 #define OWREGD1 { tic6x_operand_regpair, 8, tic6x_rw_write, 1, 1, 1, 1 }
     83 #define OWREGD12 { tic6x_operand_regpair, 8, tic6x_rw_write, 1, 1, 2, 2 }
     84 #define OWREGD4 { tic6x_operand_regpair, 8, tic6x_rw_write, 4, 4, 4, 4 }
     85 #define ORREGD1 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 1, 1, 1 }
     86 #define OWREGD45 { tic6x_operand_regpair, 8, tic6x_rw_write, 4, 4, 5, 5 }
     87 #define OWREGD67 { tic6x_operand_regpair, 8, tic6x_rw_write, 6, 6, 7, 7 }
     88 #define ORDREGD1 { tic6x_operand_dregpair, 8, tic6x_rw_read, 1, 1, 1, 1 }
     89 #define ORTREGD1 { tic6x_operand_tregpair, 8, tic6x_rw_read, 1, 1, 1, 1 }
     90 #define OWDREGD5 { tic6x_operand_dregpair, 8, tic6x_rw_write, 5, 5, 5, 5 }
     91 #define OWTREGD5 { tic6x_operand_tregpair, 8, tic6x_rw_write, 5, 5, 5, 5 }
     92 #define ORREGD12 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 1, 2, 2 }
     93 #define ORXREGD12 { tic6x_operand_xregpair, 8, tic6x_rw_read, 1, 1, 2, 2 }
     94 #define ORREGD1234 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 2, 3, 4 }
     95 #define ORXREGD1324 { tic6x_operand_xregpair, 8, tic6x_rw_read, 1, 3, 2, 4 }
     96 #define OWREGD910 { tic6x_operand_regpair, 8, tic6x_rw_write, 9, 9, 10, 10 }
     97 #define ORCREG1 { tic6x_operand_ctrl, 4, tic6x_rw_read, 1, 1, 0, 0 }
     98 #define OWCREG1 { tic6x_operand_ctrl, 4, tic6x_rw_write, 1, 1, 0, 0 }
     99 #define OWILC1 { tic6x_operand_ilc, 4, tic6x_rw_write, 1, 1, 0, 0 }
    100 #define ORMEMDW { tic6x_operand_mem_deref, 4, tic6x_rw_read, 3, 3, 0, 0 }
    101 #define OWMEMDW { tic6x_operand_mem_deref, 4, tic6x_rw_write, 3, 3, 0, 0 }
    102 #define ORMEMSB { tic6x_operand_mem_short, 1, tic6x_rw_read, 3, 3, 0, 0 }
    103 #define OWMEMSB { tic6x_operand_mem_short, 1, tic6x_rw_write, 3, 3, 0, 0 }
    104 #define ORMEMLB { tic6x_operand_mem_long, 1, tic6x_rw_read, 3, 3, 0, 0 }
    105 #define OWMEMLB { tic6x_operand_mem_long, 1, tic6x_rw_write, 3, 3, 0, 0 }
    106 #define ORMEMSH { tic6x_operand_mem_short, 2, tic6x_rw_read, 3, 3, 0, 0 }
    107 #define OWMEMSH { tic6x_operand_mem_short, 2, tic6x_rw_write, 3, 3, 0, 0 }
    108 #define ORMEMLH { tic6x_operand_mem_long, 2, tic6x_rw_read, 3, 3, 0, 0 }
    109 #define OWMEMLH { tic6x_operand_mem_long, 2, tic6x_rw_write, 3, 3, 0, 0 }
    110 #define ORMEMSW { tic6x_operand_mem_short, 4, tic6x_rw_read, 3, 3, 0, 0 }
    111 #define OWMEMSW { tic6x_operand_mem_short, 4, tic6x_rw_write, 3, 3, 0, 0 }
    112 #define ORMEMLW { tic6x_operand_mem_long, 4, tic6x_rw_read, 3, 3, 0, 0 }
    113 #define OWMEMLW { tic6x_operand_mem_long, 4, tic6x_rw_write, 3, 3, 0, 0 }
    114 #define ORMEMSD { tic6x_operand_mem_short, 8, tic6x_rw_read, 3, 3, 0, 0 }
    115 #define OWMEMSD { tic6x_operand_mem_short, 8, tic6x_rw_write, 3, 3, 0, 0 }
    116 #define ORMEMND { tic6x_operand_mem_ndw, 8, tic6x_rw_read, 3, 3, 0, 0 }
    117 #define OWMEMND { tic6x_operand_mem_ndw, 8, tic6x_rw_write, 3, 3, 0, 0 }
    118 #define ENC(id, meth, op) {			\
    119     CONCAT2(tic6x_field_,id),			\
    120     CONCAT2(tic6x_coding_,meth),		\
    121     op						\
    122   }
    123 #define ENC0() 0, { { 0, 0, 0 } }
    124 #define ENC1(a) 1, { a }
    125 #define ENC2(a, b) 2, { a, b }
    126 #define ENC3(a, b, c) 3, { a, b, c }
    127 #define ENC4(a, b, c, d) 4, { a, b, c, d }
    128 #define ENC5(a, b, c, d, e) 5, { a, b, c, d, e }
    129 #define ENC6(a, b, c, d, e, f) 6, { a, b, c, d, e, f }
    130 #define ENC7(a, b, c, d, e, f, g) 7, { a, b, c, d, e, f, g }
    131 
    132 INSN(abs, l, unary, 1cycle, C62X, 0,
    133      FIX1(FIX(op, 0)),
    134      OP2(ORXREG1, OWREG1),
    135      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
    136 	  ENC(dst, reg, 1)))
    137 INSN(abs, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
    138      FIX3(FIX(op, 0x38), FIX(x, 0), FIX(src1, 0)),
    139      OP2(ORREGL1, OWREGL1),
    140      ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
    141 
    142 INSN(abs2, l, unary, 1cycle, C64X, 0,
    143      FIX1(FIX(op, 0x4)),
    144      OP2(ORXREG1, OWREG1),
    145      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
    146 	  ENC(dst, reg, 1)))
    147 
    148 INSN(absdp, s, 1_or_2_src, 2cycle_dp, C67X, TIC6X_FLAG_NO_CROSS,
    149      FIX2(FIX(op, 0x2c), FIX(x, 0)),
    150      OP2(ORREGD1, OWREGD12),
    151      ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0),
    152 	  ENC(dst, reg, 1)))
    153 
    154 INSN(abssp, s, unary, 1cycle, C67X, 0,
    155      FIX1(FIX(op, 0)),
    156      OP2(ORXREG1, OWREG1),
    157      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
    158 	  ENC(dst, reg, 1)))
    159 
    160 INSNE(add, l_si_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0,
    161       FIX1(FIX(op, 0x3)),
    162       OP3(ORREG1, ORXREG1, OWREG1),
    163       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    164 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    165 INSNE(add, l_si_xsi_sl, l, 1_or_2_src, 1cycle, C62X, 0,
    166       FIX1(FIX(op, 0x23)),
    167       OP3(ORREG1, ORXREG1, OWREGL1),
    168       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    169 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    170 INSNE(add, l_xsi_sl_sl, l, 1_or_2_src, 1cycle, C62X, 0,
    171       FIX1(FIX(op, 0x21)),
    172       OP3(ORXREG1, ORREGL1, OWREGL1),
    173       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    174 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    175 INSNE(add, l_s5_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0,
    176       FIX1(FIX(op, 0x2)),
    177       OP3(OACST, ORXREG1, OWREG1),
    178       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
    179 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    180 INSNE(add, l_s5_sl_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
    181       FIX2(FIX(op, 0x20), FIX(x, 0)),
    182       OP3(OACST, ORREGL1, OWREGL1),
    183       ENC4(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(src2, reg, 1),
    184 	   ENC(dst, reg, 2)))
    185 INSNE(add, s_si_xsi_si, s, 1_or_2_src, 1cycle, C62X, 0,
    186       FIX1(FIX(op, 0x7)),
    187       OP3(ORREG1, ORXREG1, OWREG1),
    188       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    189 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    190 INSNE(add, s_s5_xsi_si, s, 1_or_2_src, 1cycle, C62X, 0,
    191       FIX1(FIX(op, 0x6)),
    192       OP3(OACST, ORXREG1, OWREG1),
    193       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
    194 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    195 INSNE(add, d_si_si_si, d, 1_or_2_src, 1cycle, C62X,
    196       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
    197       FIX1(FIX(op, 0x10)),
    198       OP3(ORREG1, ORREG1, OWREG1),
    199       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
    200 	   ENC(dst, reg, 2)))
    201 INSNE(add, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X,
    202       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
    203       FIX1(FIX(op, 0x12)),
    204       OP3(ORREG1, OACST, OWREG1),
    205       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
    206 	   ENC(dst, reg, 2)))
    207 INSNE(add, d_si_xsi_si, d, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_PREFER(0),
    208       FIX1(FIX(op, 0xa)),
    209       OP3(ORREG1, ORXREG1, OWREG1),
    210       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    211 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    212 INSNE(add, d_xsi_s5_si, d, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_PREFER(0),
    213       FIX1(FIX(op, 0xb)),
    214       OP3(ORXREG1, OACST, OWREG1),
    215       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
    216 	   ENC(src1, scst, 1), ENC(dst, reg, 2)))
    217 
    218 /* 16 bits insn */
    219 INSN(add, l, l3_sat_0, 1cycle, C64XP, 0,
    220      FIX1(FIX(op, 0x0)),
    221      OP3(ORREG1, ORXREG1, OWREG1),
    222      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    223           ENC(src2, reg, 1), ENC(dst, reg, 2)))
    224 INSN(add, l, l3i, 1cycle, C64XP, 0,
    225      FIX0(),
    226      OP3(OACST, ORXREG1, OWREG1),
    227      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(cst, scst_l3i, 0),
    228           ENC(src2, reg, 1), ENC(dst, reg, 2)))
    229 INSN(add, l, lx1, 1cycle, C64XP,
    230      TIC6X_FLAG_NO_CROSS,
    231      FIX1(FIX(op, 0x3)),
    232      OP3(OHWCSTM1, ORREG1, OWREG1),
    233      ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 1), ENC(srcdst, reg, 2)))
    234 INSN(add, s, s3_sat_0, 1cycle, C64XP, 0,
    235      FIX1(FIX(op, 0x0)),
    236      OP3(ORREG1, ORXREG1, OWREG1),
    237      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    238           ENC(src2, reg, 1), ENC(dst, reg, 2)))
    239 INSN(add, s, sx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
    240       FIX1(FIX(op, 0x3)),
    241       OP3(OHWCSTM1, ORREG1, OWREG1),
    242       ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 1), ENC(srcdst, reg, 2)))
    243 INSN(add, s, sx2op, 1cycle, C64XP, 0,
    244       FIX1(FIX(op, 0x0)),
    245       OP3(ORREG1, ORXREG1, OWREG1),
    246       ENC5(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2),
    247            ENC(src2, reg, 1), ENC(x, xpath, 1)))
    248 INSN(add, d, dx2op, 1cycle, C64XP, 0,
    249      FIX1(FIX(op, 0x0)),
    250      OP3(ORREG1, ORXREG1, OWREG1),
    251      ENC5(ENC(s, fu, 0), ENC(x, xpath, 1), ENC(srcdst, reg, 0),
    252           ENC(src2, reg, 1), ENC(srcdst, reg, 2)))
    253 INSNU(add, l, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
    254      FIX2(FIX(op, 0x5), FIX(unit, 0x0)),
    255      OP3(ORREG1, OHWCST1, OWREG1),
    256      ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2)))
    257 INSNU(add, s, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
    258      FIX2(FIX(op, 0x5), FIX(unit, 0x1)),
    259      OP3(ORREG1, OHWCST1, OWREG1),
    260      ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2)))
    261 INSNU(add, d, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
    262      FIX2(FIX(op, 0x5), FIX(unit, 0x2)),
    263      OP3(ORREG1, OHWCST1, OWREG1),
    264      ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2)))
    265 /**/
    266 
    267 INSNE(addab, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
    268       FIX1(FIX(op, 0x30)),
    269       OP3(ORREG1, ORREG1, OWREG1),
    270       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
    271 	   ENC(dst, reg, 2)))
    272 INSNE(addab, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X,
    273       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
    274       FIX1(FIX(op, 0x32)),
    275       OP3(ORREG1, OACST, OWREG1),
    276       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
    277 	   ENC(dst, reg, 2)))
    278 INSN(addab, d, adda_long, 1cycle, C64XP, TIC6X_FLAG_PREFER(0),
    279      FIX1(FIX(op, 3)),
    280      OP3(ORAREG1, OLCST, OWREG1),
    281      ENC4(ENC(s, fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_byte, 1),
    282 	  ENC(dst, reg, 2)))
    283 
    284 INSNE(addad, d_si_si_si, d, 1_or_2_src, 1cycle, C64X_AND_C67X,
    285       TIC6X_FLAG_NO_CROSS,
    286       FIX1(FIX(op, 0x3c)),
    287       OP3(ORREG1, ORREG1, OWREG1),
    288       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
    289 	   ENC(dst, reg, 2)))
    290 INSNE(addad, d_si_u5_si, d, 1_or_2_src, 1cycle, C64X_AND_C67X,
    291       TIC6X_FLAG_NO_CROSS,
    292       FIX1(FIX(op, 0x3d)),
    293       OP3(ORREG1, OACST, OWREG1),
    294       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
    295 	   ENC(dst, reg, 2)))
    296 
    297 INSNE(addah, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
    298       FIX1(FIX(op, 0x34)),
    299       OP3(ORREG1, ORREG1, OWREG1),
    300       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
    301 	   ENC(dst, reg, 2)))
    302 INSNE(addah, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X,
    303       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
    304       FIX1(FIX(op, 0x36)),
    305       OP3(ORREG1, OACST, OWREG1),
    306       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
    307 	   ENC(dst, reg, 2)))
    308 INSN(addah, d, adda_long, 1cycle, C64XP, TIC6X_FLAG_PREFER(0),
    309      FIX1(FIX(op, 5)),
    310      OP3(ORAREG1, OLCST, OWREG1),
    311      ENC4(ENC(s, fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_half, 1),
    312 	  ENC(dst, reg, 2)))
    313 
    314 INSNE(addaw, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
    315       FIX1(FIX(op, 0x38)),
    316       OP3(ORREG1, ORREG1, OWREG1),
    317       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
    318 	   ENC(dst, reg, 2)))
    319 INSNE(addaw, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X,
    320       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
    321       FIX1(FIX(op, 0x3a)),
    322       OP3(ORREG1, OACST, OWREG1),
    323       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
    324 	   ENC(dst, reg, 2)))
    325 INSN(addaw, d, adda_long, 1cycle, C64XP, TIC6X_FLAG_PREFER(0),
    326      FIX1(FIX(op, 7)),
    327      OP3(ORAREG1, OLCST, OWREG1),
    328      ENC4(ENC(s, fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_word, 1),
    329 	  ENC(dst, reg, 2)))
    330 
    331 /* 16 bits insn */
    332 INSN(addaw, d, dx5, 1cycle, C64XP, TIC6X_FLAG_INSN16_BSIDE,
    333      FIX0(),
    334      OP3(ORB15REG1, OACST, OWREG1),
    335      ENC3(ENC(s, fu, 0), ENC(cst, ucst, 1), ENC(dst, reg, 2)))
    336 INSN(addaw, d, dx5p, 1cycle, C64XP, TIC6X_FLAG_INSN16_BSIDE,
    337      FIX1(FIX(op, 0)),
    338      OP3(ORB15REG1, OACST, OWB15REG1),
    339      ENC2(ENC(s, fu, 0), ENC(cst, ucst, 1)))
    340 /**/
    341 
    342 INSN(adddp, l, 1_or_2_src, addsubdp, C67X, 0,
    343      FIX1(FIX(op, 0x18)),
    344      OP3(ORREGD12, ORXREGD12, OWREGD67),
    345      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    346 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    347 INSN(adddp, s, l_1_or_2_src, addsubdp, C67XP, 0,
    348      FIX1(FIX(op, 0x72)),
    349      OP3(ORREGD12, ORXREGD12, OWREGD67),
    350      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    351 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    352 
    353 INSN(addk, s, addk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
    354      FIX0(),
    355      OP2(OLCST, OWREG1),
    356      ENC3(ENC(s, fu, 0), ENC(cst, scst, 0), ENC(dst, reg, 1)))
    357 
    358 /* 16 bits insn */
    359 INSN(addk, s, sx5, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
    360      FIX0(),
    361      OP2(OACST, OWREG1),
    362      ENC3(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(dst, reg, 1)))
    363 /**/
    364 
    365 INSN(addkpc, s, addkpc, 1cycle, C64X,
    366      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP|TIC6X_FLAG_SIDE_B_ONLY,
    367      FIX1(FIX(s, 1)),
    368      OP3(OLCST, OWREG1, OACST),
    369      ENC3(ENC(src1, pcrel, 0), ENC(dst, reg, 1), ENC(src2, ucst, 2)))
    370 
    371 INSN(addsp, l, 1_or_2_src, 4cycle, C67X, 0,
    372      FIX1(FIX(op, 0x10)),
    373      OP3(ORREG1, ORXREG1, OWREG4),
    374      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    375 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    376 INSN(addsp, s, l_1_or_2_src, 4cycle, C67XP, 0,
    377      FIX1(FIX(op, 0x70)),
    378      OP3(ORREG1, ORXREG1, OWREG4),
    379      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    380 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    381 
    382 INSN(addsub, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
    383      FIX1(FIX(op, 0xc)),
    384      OP3(ORREG1, ORXREG1, OWREGD1),
    385      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    386 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    387 
    388 INSN(addsub2, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
    389      FIX1(FIX(op, 0xd)),
    390      OP3(ORREG1, ORXREG1, OWREGD1),
    391      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    392 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    393 
    394 INSNE(addu, l_ui_xui_ul, l, 1_or_2_src, 1cycle, C62X, 0,
    395       FIX1(FIX(op, 0x2b)),
    396       OP3(ORREG1, ORXREG1, OWREGL1),
    397       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    398 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    399 INSNE(addu, l_xui_ul_ul, l, 1_or_2_src, 1cycle, C62X, 0,
    400       FIX1(FIX(op, 0x29)),
    401       OP3(ORXREG1, ORREGL1, OWREGL1),
    402       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    403 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    404 
    405 INSN(add2, s, 1_or_2_src, 1cycle, C62X, 0,
    406      FIX1(FIX(op, 0x1)),
    407      OP3(ORREG1, ORXREG1, OWREG1),
    408      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    409 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    410 INSN(add2, l, 1_or_2_src, 1cycle, C64X, 0,
    411      FIX1(FIX(op, 0x5)),
    412      OP3(ORREG1, ORXREG1, OWREG1),
    413      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    414 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    415 INSN(add2, d, ext_1_or_2_src, 1cycle, C64X, 0,
    416      FIX1(FIX(op, 0x4)),
    417      OP3(ORREG1, ORXREG1, OWREG1),
    418      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    419 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    420 
    421 INSN(add4, l, 1_or_2_src, 1cycle, C64X, 0,
    422      FIX1(FIX(op, 0x65)),
    423      OP3(ORREG1, ORXREG1, OWREG1),
    424      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    425 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    426 
    427 INSNE(and, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
    428       FIX1(FIX(op, 0x7b)),
    429       OP3(ORREG1, ORXREG1, OWREG1),
    430       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    431 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    432 INSNE(and, l_s5_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
    433       FIX1(FIX(op, 0x7a)),
    434       OP3(OACST, ORXREG1, OWREG1),
    435       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
    436 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    437 INSNE(and, s_ui_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
    438       FIX1(FIX(op, 0x1f)),
    439       OP3(ORREG1, ORXREG1, OWREG1),
    440       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    441 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    442 INSNE(and, s_s5_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
    443       FIX1(FIX(op, 0x1e)),
    444       OP3(OACST, ORXREG1, OWREG1),
    445       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
    446 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    447 INSNE(and, d_ui_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0,
    448       FIX1(FIX(op, 0x6)),
    449       OP3(ORREG1, ORXREG1, OWREG1),
    450       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    451 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    452 INSNE(and, d_s5_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0,
    453       FIX1(FIX(op, 0x7)),
    454       OP3(OACST, ORXREG1, OWREG1),
    455       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
    456 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    457 
    458 /* 16 bits insn */
    459 INSN(and, l, l2c, 1cycle, C64XP, 0,
    460       FIX1(FIX(op, 0)),
    461       OP3(ORREG1, ORXREG1, OWREG1NORS),
    462       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    463            ENC(src2, reg, 1), ENC(dst, reg, 2)))
    464 /**/
    465 
    466 INSN(andn, l, 1_or_2_src, 1cycle, C64X, 0,
    467      FIX1(FIX(op, 0x7c)),
    468      OP3(ORREG1, ORXREG1, OWREG1),
    469      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    470 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    471 INSN(andn, s, ext_1_or_2_src, 1cycle, C64X, 0,
    472      FIX1(FIX(op, 0x6)),
    473      OP3(ORREG1, ORXREG1, OWREG1),
    474      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    475 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    476 INSN(andn, d, ext_1_or_2_src, 1cycle, C64X, 0,
    477      FIX1(FIX(op, 0x0)),
    478      OP3(ORREG1, ORXREG1, OWREG1),
    479      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    480 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    481 
    482 INSN(avg2, m, compound, 1616_m, C64X, 0,
    483      FIX1(FIX(op, 0x13)),
    484      OP3(ORREG1, ORXREG1, OWREG2),
    485      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    486 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    487 
    488 INSN(avgu4, m, compound, 1616_m, C64X, 0,
    489      FIX1(FIX(op, 0x12)),
    490      OP3(ORREG1, ORXREG1, OWREG2),
    491      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    492 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    493 
    494 INSN(b, s, ext_branch_cond_imm, branch, C62X, TIC6X_FLAG_NO_CROSS,
    495      FIX0(),
    496      OP1(OLCST),
    497      ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
    498 INSN(b, s, branch, branch, C62X, TIC6X_FLAG_SIDE_B_ONLY,
    499      FIX1(FIX(s, 1)),
    500      OP1(ORXREG1),
    501      ENC2(ENC(x, xpath, 0), ENC(src2, reg, 0)))
    502 INSN(b, s, b_irp, branch, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY,
    503      FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
    504      OP1(ORIRP1),
    505      ENC0())
    506 INSN(b, s, b_nrp, branch, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY,
    507      FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
    508      OP1(ORNRP1),
    509      ENC0())
    510 
    511 INSN(bdec, s, bdec, branch, C64X, TIC6X_FLAG_NO_CROSS,
    512      FIX0(),
    513      OP2(OLCST, ORWREG1),
    514      ENC3(ENC(s, fu, 0), ENC(src, pcrel, 0), ENC(dst, reg, 1)))
    515 
    516 INSN(bitc4, m, unary, 1616_m, C64X, 0,
    517      FIX1(FIX(op, 0x1e)),
    518      OP2(ORXREG1, OWREG2),
    519      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
    520 	  ENC(dst, reg, 1)))
    521 
    522 INSN(bitr, m, unary, 1616_m, C64X, 0,
    523      FIX1(FIX(op, 0x1f)),
    524      OP2(ORXREG1, OWREG2),
    525      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
    526 	  ENC(dst, reg, 1)))
    527 
    528 INSN(bnop, s, branch_nop_cst, branch, C64X,
    529      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP,
    530      FIX0(),
    531      OP2(OLCST, OACST),
    532      ENC3(ENC(s, fu, 0), ENC(src2, pcrel_half, 0), ENC(src1, ucst, 1)))
    533 INSN(bnop, nfu, s_branch_nop_cst, branch, C64XP,
    534      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_MCNOP,
    535      FIX1(FIX(s, 0)),
    536      OP2(OLCST, OACST),
    537      ENC2(ENC(src2, pcrel, 0), ENC(src1, ucst, 1)))
    538 INSN(bnop, s, branch_nop_reg, branch, C64X,
    539      TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MCNOP,
    540      FIX1(FIX(s, 1)),
    541      OP2(ORXREG1, OACST),
    542      ENC3(ENC(x, xpath, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1)))
    543 
    544 /* 16 bits insn format */
    545 INSN(bnop, s, sbu8, branch, C64XP,
    546      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP,
    547      FIX0(),
    548      OP2(OLCST, OHWCST5),
    549      ENC2(ENC(s, fu, 0), ENC(cst, pcrel_half_unsigned, 0)))
    550 INSN(bnop, s, sbs7, branch, C64XP,
    551      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP,
    552      FIX0(),
    553      OP2(OLCST, OACST),
    554      ENC3(ENC(s, fu, 0), ENC(cst, pcrel_half, 0), ENC(n, ucst, 1)))
    555 INSN(bnop, s, sbu8c, branch, C64XP,
    556      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP|TIC6X_FLAG_INSN16_SPRED,
    557      FIX0(),
    558      OP2(OLCST, OHWCST5),
    559      ENC2(ENC(s, fu, 0), ENC(cst, pcrel_half_unsigned, 0)))
    560 INSN(bnop, s, sbs7c, branch, C64XP,
    561      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP|TIC6X_FLAG_INSN16_SPRED,
    562      FIX0(),
    563      OP2(OLCST, OACST),
    564      ENC3(ENC(s, fu, 0), ENC(cst, pcrel_half, 0), ENC(n, ucst, 1)))
    565 INSN(bnop, s, sx1b, branch, C64XP,
    566      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP,
    567      FIX0(),
    568      OP2(ORREG1BNORS, OACST),
    569      ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(n, ucst, 1)))
    570 /**/
    571 
    572 INSN(bpos, s, bpos, branch, C64X, TIC6X_FLAG_NO_CROSS,
    573      FIX0(),
    574      OP2(OLCST, ORREG1),
    575      ENC3(ENC(s, fu, 0), ENC(src, pcrel, 0), ENC(dst, reg, 1)))
    576 
    577 INSN(call, s, ext_branch_cond_imm, branch, C62X,
    578      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL,
    579      FIX0(),
    580      OP1(OLCST),
    581      ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
    582 INSN(call, s, branch, branch, C62X,
    583      TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL,
    584      FIX1(FIX(s, 1)),
    585      OP1(ORXREG1),
    586      ENC2(ENC(x, xpath, 0), ENC(src2, reg, 0)))
    587 INSN(call, s, b_irp, branch, C62X,
    588      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL,
    589      FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
    590      OP1(ORIRP1),
    591      ENC0())
    592 INSN(call, s, b_nrp, branch, C62X,
    593      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL,
    594      FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
    595      OP1(ORNRP1),
    596      ENC0())
    597 
    598 INSN(callnop, s, branch_nop_cst, branch, C64X,
    599      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_MCNOP|TIC6X_FLAG_CALL,
    600      FIX0(),
    601      OP2(OLCST, OACST),
    602      ENC3(ENC(s, fu, 0), ENC(src2, pcrel, 0), ENC(src1, ucst, 1)))
    603 INSN(callnop, nfu, s_branch_nop_cst, branch, C64XP,
    604      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_MCNOP|TIC6X_FLAG_CALL,
    605      FIX1(FIX(s, 0)),
    606      OP2(OLCST, OACST),
    607      ENC2(ENC(src2, pcrel, 0), ENC(src1, ucst, 1)))
    608 INSN(callnop, s, branch_nop_reg, branch, C64X,
    609      TIC6X_FLAG_MACRO|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MCNOP|TIC6X_FLAG_CALL,
    610      FIX1(FIX(s, 1)),
    611      OP2(ORXREG1, OACST),
    612      ENC3(ENC(x, xpath, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1)))
    613 
    614 
    615 INSN(callp, s, call_imm_nop, branch, C64XP,
    616      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP,
    617      FIX1(FIX(z, 1)),
    618      OP2(OLCST, OWRETREG1),
    619      ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
    620 
    621 /* 16 bits insn format */
    622 INSN(callp, s, scs10, branch, C64XP,
    623      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP,
    624      FIX0(),
    625      OP2(OLCST, OWRETREG1),
    626      ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
    627 /**/
    628 
    629 INSN(callret, s, ext_branch_cond_imm, branch, C62X,
    630      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL|TIC6X_FLAG_RETURN,
    631      FIX0(),
    632      OP1(OLCST),
    633      ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
    634 INSN(callret, s, branch, branch, C62X,
    635      TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL|TIC6X_FLAG_RETURN,
    636      FIX1(FIX(s, 1)),
    637      OP1(ORXREG1),
    638      ENC2(ENC(x, xpath, 0), ENC(src2, reg, 0)))
    639 INSN(callret, s, b_irp, branch, C62X,
    640      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL|TIC6X_FLAG_RETURN,
    641      FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
    642      OP1(ORIRP1),
    643      ENC0())
    644 INSN(callret, s, b_nrp, branch, C62X,
    645      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL|TIC6X_FLAG_RETURN,
    646      FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
    647      OP1(ORNRP1),
    648      ENC0())
    649 
    650 INSN(clr, s, field, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
    651      FIX1(FIX(op, 0x3)),
    652      OP4(ORREG1, OACST, OACST, OWREG1),
    653      ENC5(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(csta, ucst, 1),
    654 	  ENC(cstb, ucst, 2), ENC(dst, reg, 3)))
    655 INSN(clr, s, 1_or_2_src, 1cycle, C62X, 0,
    656      FIX1(FIX(op, 0x3f)),
    657      OP3(ORXREG1, ORREG1, OWREG1),
    658      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
    659 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
    660 
    661 /* 16 bits insn */
    662 INSN(clr, s, sc5, 1cycle, C64XP, 0,
    663      FIX1(FIX(op, 2)),
    664      OP4(ORREG1, OACST, OACST, OWREG1),
    665      ENC5(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(cst, ucst, 1),
    666           ENC(cst, ucst, 2), ENC(srcdst, reg, 3)))
    667 /**/
    668 
    669 INSNE(cmpeq, l_si_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0,
    670       FIX1(FIX(op, 0x53)),
    671       OP3(ORREG1, ORXREG1, OWREG1),
    672       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    673 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    674 INSNE(cmpeq, l_s5_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0,
    675       FIX1(FIX(op, 0x52)),
    676       OP3(OACST, ORXREG1, OWREG1),
    677       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
    678 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    679 INSNE(cmpeq, l_xsi_sl_ui, l, 1_or_2_src, 1cycle, C62X, 0,
    680       FIX1(FIX(op, 0x51)),
    681       OP3(ORXREG1, ORREGL1, OWREG1),
    682       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    683 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    684 INSNE(cmpeq, l_s5_sl_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
    685       FIX2(FIX(op, 0x50), FIX(x, 0)),
    686       OP3(OACST, ORREGL1, OWREG1),
    687       ENC4(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(src2, reg, 1),
    688 	   ENC(dst, reg, 2)))
    689 
    690 /* 16 bits insn */
    691 INSN(cmpeq, l, lx3c, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
    692       FIX0(),
    693       OP3(OACST, ORXREG1, OWREG1),
    694       ENC4(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(src2, reg, 1),
    695            ENC(dst, reg, 2)))
    696 
    697 INSN(cmpeq, l, l2c, 1cycle, C64XP, 0,
    698       FIX1(FIX(op, 3)),
    699       OP3(ORREG1, ORXREG1, OWREG1NORS),
    700       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    701            ENC(src2, reg, 1), ENC(dst, reg, 2)))
    702 /**/
    703 
    704 INSN(cmpeq2, s, 1_or_2_src, 1cycle, C64X, 0,
    705      FIX1(FIX(op, 0x1d)),
    706      OP3(ORREG1, ORXREG1, OWREG1),
    707      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    708 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    709 
    710 INSN(cmpeq4, s, 1_or_2_src, 1cycle, C64X, 0,
    711      FIX1(FIX(op, 0x1c)),
    712      OP3(ORREG1, ORXREG1, OWREG1),
    713      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    714 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    715 
    716 INSN(cmpeqdp, s, 1_or_2_src, dpcmp, C67X, 0,
    717      FIX1(FIX(op, 0x28)),
    718      OP3(ORREGD12, ORXREGD12, OWREG2),
    719      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    720 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    721 
    722 INSN(cmpeqsp, s, 1_or_2_src, 1cycle, C67X, 0,
    723      FIX1(FIX(op, 0x38)),
    724      OP3(ORREG1, ORXREG1, OWREG1),
    725      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    726 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    727 
    728 INSNE(cmpgt, l_si_xsi_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
    729       FIX1(FIX(op, 0x47)),
    730       OP3(ORREG1, ORXREG1, OWREG1),
    731       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    732 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    733 INSNE(cmpgt, l_s5_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0,
    734       FIX1(FIX(op, 0x46)),
    735       OP3(OACST, ORXREG1, OWREG1),
    736       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
    737 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    738 INSNE(cmpgt, l_xsi_sl_ui, l, 1_or_2_src, 1cycle, C62X, 0,
    739       FIX1(FIX(op, 0x45)),
    740       OP3(ORXREG1, ORREGL1, OWREG1),
    741       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    742 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    743 INSNE(cmpgt, l_s5_sl_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
    744       FIX2(FIX(op, 0x44), FIX(x, 0)),
    745       OP3(OACST, ORREGL1, OWREG1),
    746       ENC4(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(src2, reg, 1),
    747 	   ENC(dst, reg, 2)))
    748 INSNE(cmpgt, l_xsi_si_ui, l, 1_or_2_src, 1cycle, C62X,
    749       TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(0),
    750       FIX1(FIX(op, 0x57)),
    751       OP3(ORXREG1, ORREG1, OWREG1),
    752       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 1),
    753 	   ENC(src2, reg, 0), ENC(dst, reg, 2)))
    754 INSNE(cmpgt, l_xsi_s5_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
    755       FIX1(FIX(op, 0x56)),
    756       OP3(ORXREG1, OACST, OWREG1),
    757       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 1),
    758 	   ENC(src2, reg, 0), ENC(dst, reg, 2)))
    759 INSNE(cmpgt, l_sl_xsi_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
    760       FIX1(FIX(op, 0x55)),
    761       OP3(ORREGL1, ORXREG1, OWREG1),
    762       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 1),
    763 	   ENC(src2, reg, 0), ENC(dst, reg, 2)))
    764 INSNE(cmpgt, l_sl_s5_ui, l, 1_or_2_src, 1cycle, C62X,
    765       TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS,
    766       FIX2(FIX(op, 0x54), FIX(x, 0)),
    767       OP3(ORREGL1, OACST, OWREG1),
    768       ENC4(ENC(s, fu, 0), ENC(src1, scst, 1), ENC(src2, reg, 0),
    769 	   ENC(dst, reg, 2)))
    770 
    771 /* 16 bits insn */
    772 INSN(cmpgt, l, lx1c, 1cycle, C64XP, 0,
    773      FIX1(FIX(op, 1)),
    774      OP3(OACST, ORREG1, OWREG1),
    775      ENC4(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(src2, reg, 1),
    776           ENC(dst, reg, 2)))
    777 INSN(cmpgt, l, l2c, 1cycle, C64XP, 0,
    778       FIX1(FIX(op, 5)),
    779       OP3(ORREG1, ORXREG1, OWREG1NORS),
    780       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    781            ENC(src2, reg, 1), ENC(dst, reg, 2)))
    782 /**/
    783 
    784 INSN(cmpgt2, s, 1_or_2_src, 1cycle, C64X, 0,
    785      FIX1(FIX(op, 0x14)),
    786      OP3(ORREG1, ORXREG1, OWREG1),
    787      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    788 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    789 
    790 INSN(cmpgtdp, s, 1_or_2_src, dpcmp, C67X, 0,
    791      FIX1(FIX(op, 0x29)),
    792      OP3(ORREGD12, ORXREGD12, OWREG2),
    793      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    794 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    795 
    796 INSN(cmpgtsp, s, 1_or_2_src, 1cycle, C67X, 0,
    797      FIX1(FIX(op, 0x39)),
    798      OP3(ORREG1, ORXREG1, OWREG1),
    799      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    800 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    801 
    802 INSNE(cmpgtu, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
    803       FIX1(FIX(op, 0x4f)),
    804       OP3(ORREG1, ORXREG1, OWREG1),
    805       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    806 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    807 INSNE(cmpgtu, l_u4_xui_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
    808       FIX2(FIX(op, 0x4e), RAN(src1, 0, 15)),
    809       OP3(OACST, ORXREG1, OWREG1),
    810       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, ucst, 0),
    811 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    812 /* Although not mentioned in SPRUFE8, CMPGTU and CMPLTU support a
    813    5-bit unsigned constant operand on C64X and above.  */
    814 INSNE(cmpgtu, l_u5_xui_ui, l, 1_or_2_src, 1cycle, C64X, 0,
    815       FIX2(FIX(op, 0x4e), RAN(src1, 16, 31)),
    816       OP3(OACST, ORXREG1, OWREG1),
    817       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, ucst, 0),
    818 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    819 INSNE(cmpgtu, l_xui_ul_ui, l, 1_or_2_src, 1cycle, C62X, 0,
    820       FIX1(FIX(op, 0x4d)),
    821       OP3(ORXREG1, ORREGL1, OWREG1),
    822       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    823 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    824 INSNE(cmpgtu, l_u4_ul_ui, l, 1_or_2_src, 1cycle, C62X,
    825       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
    826       FIX3(FIX(op, 0x4c), FIX(x, 0), RAN(src1, 0, 15)),
    827       OP3(OACST, ORREGL1, OWREG1),
    828       ENC4(ENC(s, fu, 0), ENC(src1, ucst, 0), ENC(src2, reg, 1),
    829 	   ENC(dst, reg, 2)))
    830 INSNE(cmpgtu, l_u5_ul_ui, l, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_NO_CROSS,
    831       FIX3(FIX(op, 0x4c), FIX(x, 0), RAN(src1, 16, 31)),
    832       OP3(OACST, ORREGL1, OWREG1),
    833       ENC4(ENC(s, fu, 0), ENC(src1, ucst, 0), ENC(src2, reg, 1),
    834 	   ENC(dst, reg, 2)))
    835 
    836 /* 16 bits insn */
    837 INSN(cmpgtu, l, lx1c, 1cycle, C64XP, 0,
    838      FIX1(FIX(op, 3)),
    839      OP3(OACST, ORREG1, OWREG1),
    840      ENC4(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(src2, reg, 1),
    841           ENC(dst, reg, 2)))
    842 INSN(cmpgtu, l, l2c, 1cycle, C64XP, 0,
    843       FIX1(FIX(op, 7)),
    844       OP3(ORREG1, ORXREG1, OWREG1NORS),
    845       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    846            ENC(src2, reg, 1), ENC(dst, reg, 2)))
    847 /**/
    848 
    849 INSN(cmpgtu4, s, 1_or_2_src, 1cycle, C64X, 0,
    850      FIX1(FIX(op, 0x15)),
    851      OP3(ORREG1, ORXREG1, OWREG1),
    852      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    853 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    854 
    855 INSNE(cmplt, l_si_xsi_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
    856       FIX1(FIX(op, 0x57)),
    857       OP3(ORREG1, ORXREG1, OWREG1),
    858       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    859 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    860 INSNE(cmplt, l_s5_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0,
    861       FIX1(FIX(op, 0x56)),
    862       OP3(OACST, ORXREG1, OWREG1),
    863       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
    864 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    865 INSNE(cmplt, l_xsi_sl_ui, l, 1_or_2_src, 1cycle, C62X, 0,
    866       FIX1(FIX(op, 0x55)),
    867       OP3(ORXREG1, ORREGL1, OWREG1),
    868       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    869 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    870 INSNE(cmplt, l_s5_sl_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
    871       FIX2(FIX(op, 0x54), FIX(x, 0)),
    872       OP3(OACST, ORREGL1, OWREG1),
    873       ENC4(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(src2, reg, 1),
    874 	   ENC(dst, reg, 2)))
    875 INSNE(cmplt, l_xsi_si_ui, l, 1_or_2_src, 1cycle, C62X,
    876       TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(0),
    877       FIX1(FIX(op, 0x47)),
    878       OP3(ORXREG1, ORREG1, OWREG1),
    879       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 1),
    880 	   ENC(src2, reg, 0), ENC(dst, reg, 2)))
    881 INSNE(cmplt, l_xsi_s5_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
    882       FIX1(FIX(op, 0x46)),
    883       OP3(ORXREG1, OACST, OWREG1),
    884       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 1),
    885 	   ENC(src2, reg, 0), ENC(dst, reg, 2)))
    886 INSNE(cmplt, l_sl_xsi_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
    887       FIX1(FIX(op, 0x45)),
    888       OP3(ORREGL1, ORXREG1, OWREG1),
    889       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 1),
    890 	   ENC(src2, reg, 0), ENC(dst, reg, 2)))
    891 INSNE(cmplt, l_sl_s5_ui, l, 1_or_2_src, 1cycle, C62X,
    892       TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS,
    893       FIX2(FIX(op, 0x44), FIX(x, 0)),
    894       OP3(ORREGL1, OACST, OWREG1),
    895       ENC4(ENC(s, fu, 0), ENC(src1, scst, 1), ENC(src2, reg, 0),
    896 	   ENC(dst, reg, 2)))
    897 
    898 /* 16 bits insn */
    899 INSN(cmplt, l, lx1c, 1cycle, C64XP, 0,
    900      FIX1(FIX(op, 0)),
    901      OP3(OACST, ORREG1, OWREG1),
    902      ENC4(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(src2, reg, 1),
    903           ENC(dst, reg, 2)))
    904 INSN(cmplt, l, l2c, 1cycle, C64XP, 0,
    905       FIX1(FIX(op, 4)),
    906       OP3(ORREG1, ORXREG1, OWREG1NORS),
    907       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    908            ENC(src2, reg, 1), ENC(dst, reg, 2)))
    909 /**/
    910 
    911 INSN(cmplt2, s, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO,
    912      FIX1(FIX(op, 0x14)),
    913      OP3(ORXREG1, ORREG1, OWREG1),
    914      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
    915 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
    916 
    917 INSN(cmpltdp, s, 1_or_2_src, dpcmp, C67X, 0,
    918      FIX1(FIX(op, 0x2a)),
    919      OP3(ORREGD12, ORXREGD12, OWREG2),
    920      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    921 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    922 
    923 INSN(cmpltsp, s, 1_or_2_src, 1cycle, C67X, 0,
    924      FIX1(FIX(op, 0x3a)),
    925      OP3(ORREG1, ORXREG1, OWREG1),
    926      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    927 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    928 
    929 INSNE(cmpltu, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
    930       FIX1(FIX(op, 0x5f)),
    931       OP3(ORREG1, ORXREG1, OWREG1),
    932       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    933 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    934 INSNE(cmpltu, l_u4_xui_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
    935       FIX2(FIX(op, 0x5e), RAN(src1, 0, 15)),
    936       OP3(OACST, ORXREG1, OWREG1),
    937       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, ucst, 0),
    938 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    939 INSNE(cmpltu, l_u5_xui_ui, l, 1_or_2_src, 1cycle, C64X, 0,
    940       FIX2(FIX(op, 0x5e), RAN(src1, 16, 31)),
    941       OP3(OACST, ORXREG1, OWREG1),
    942       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, ucst, 0),
    943 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    944 INSNE(cmpltu, l_xui_ul_ui, l, 1_or_2_src, 1cycle, C62X, 0,
    945       FIX1(FIX(op, 0x5d)),
    946       OP3(ORXREG1, ORREGL1, OWREG1),
    947       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    948 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
    949 INSNE(cmpltu, l_u4_ul_ui, l, 1_or_2_src, 1cycle, C62X,
    950       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
    951       FIX3(FIX(op, 0x5c), FIX(x, 0), RAN(src1, 0, 15)),
    952       OP3(OACST, ORREGL1, OWREG1),
    953       ENC4(ENC(s, fu, 0), ENC(src1, ucst, 0), ENC(src2, reg, 1),
    954 	   ENC(dst, reg, 2)))
    955 INSNE(cmpltu, l_u5_ul_ui, l, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_NO_CROSS,
    956       FIX3(FIX(op, 0x5c), FIX(x, 0), RAN(src1, 16, 31)),
    957       OP3(OACST, ORREGL1, OWREG1),
    958       ENC4(ENC(s, fu, 0), ENC(src1, ucst, 0), ENC(src2, reg, 1),
    959 	   ENC(dst, reg, 2)))
    960 
    961 /* 16 bits insn */
    962 INSN(cmpltu, l, lx1c, 1cycle, C64XP, 0,
    963      FIX1(FIX(op, 2)),
    964      OP3(OACST, ORREG1, OWREG1),
    965      ENC4(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(src2, reg, 1),
    966           ENC(dst, reg, 2)))
    967 INSN(cmpltu, l, l2c, 1cycle, C64XP, 0,
    968       FIX1(FIX(op, 6)),
    969       OP3(ORREG1, ORXREG1, OWREG1NORS),
    970       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    971            ENC(src2, reg, 1), ENC(dst, reg, 2)))
    972 /**/
    973 
    974 INSN(cmpltu4, s, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO,
    975      FIX1(FIX(op, 0x15)),
    976      OP3(ORXREG1, ORREG1, OWREG1),
    977      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
    978 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
    979 
    980 INSN(cmpy, m, 1_or_2_src, 4cycle, C64XP, 0,
    981      FIX1(FIX(op, 0xa)),
    982      OP3(ORREG1, ORXREG1, OWREGD4),
    983      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    984 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    985 
    986 INSN(cmpyr, m, 1_or_2_src, 4cycle, C64XP, 0,
    987      FIX1(FIX(op, 0xb)),
    988      OP3(ORREG1, ORXREG1, OWREG4),
    989      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    990 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    991 
    992 INSN(cmpyr1, m, 1_or_2_src, 4cycle, C64XP, 0,
    993      FIX1(FIX(op, 0xc)),
    994      OP3(ORREG1, ORXREG1, OWREG4),
    995      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
    996 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
    997 
    998 INSN(cmtl, d, 1_or_2_src, load, C64XP,
    999      TIC6X_FLAG_LOAD|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_SIDE_T2_ONLY|TIC6X_FLAG_NO_CROSS,
   1000      FIX3(FIX(s, 1), FIX(op, 0xe), FIX(src1, 0)),
   1001      OP2(ORMEMDW, OWDREG5),
   1002      ENC2(ENC(src2, reg, 0), ENC(dst, reg, 1)))
   1003 
   1004 INSN(ddotp4, m, 1_or_2_src, 4cycle, C64XP, 0,
   1005      FIX1(FIX(op, 0x18)),
   1006      OP3(ORREG1, ORXREG1, OWREGD4),
   1007      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1008 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1009 
   1010 INSN(ddotph2, m, 1_or_2_src, 4cycle, C64XP, 0,
   1011      FIX1(FIX(op, 0x17)),
   1012      OP3(ORREGD1, ORXREG1, OWREGD4),
   1013      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1014 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1015 
   1016 INSN(ddotph2r, m, 1_or_2_src, 4cycle, C64XP, 0,
   1017      FIX1(FIX(op, 0x15)),
   1018      OP3(ORREGD1, ORXREG1, OWREG4),
   1019      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1020 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1021 
   1022 INSN(ddotpl2, m, 1_or_2_src, 4cycle, C64XP, 0,
   1023      FIX1(FIX(op, 0x16)),
   1024      OP3(ORREGD1, ORXREG1, OWREGD4),
   1025      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1026 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1027 
   1028 INSN(ddotpl2r, m, 1_or_2_src, 4cycle, C64XP, 0,
   1029      FIX1(FIX(op, 0x14)),
   1030      OP3(ORREGD1, ORXREG1, OWREG4),
   1031      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1032 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1033 
   1034 INSN(deal, m, unary, 1616_m, C64X, 0,
   1035      FIX1(FIX(op, 0x1d)),
   1036      OP2(ORXREG1, OWREG2),
   1037      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   1038 	  ENC(dst, reg, 1)))
   1039 
   1040 INSN(dint, nfu, dint, 1cycle, C64XP, 0,
   1041      FIX1(FIX(s, 0)),
   1042      OP0(),
   1043      ENC0())
   1044 
   1045 INSN(dmv, s, ext_1_or_2_src, 1cycle, C64XP, 0,
   1046      FIX1(FIX(op, 0xb)),
   1047      OP3(ORREG1, ORXREG1, OWREGD1),
   1048      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1049 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1050 
   1051 INSNE(dotp2, m_s2_xs2_si, m, compound, 4cycle, C64X, 0,
   1052       FIX1(FIX(op, 0xc)),
   1053       OP3(ORREG1, ORXREG1, OWREG4),
   1054       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1055 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1056 INSNE(dotp2, m_s2_xs2_sll, m, compound, 4cycle, C64X, 0,
   1057       FIX1(FIX(op, 0xb)),
   1058       OP3(ORREG1, ORXREG1, OWREGD4),
   1059       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1060 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1061 
   1062 INSN(dotpn2, m, compound, 4cycle, C64X, 0,
   1063      FIX1(FIX(op, 0x9)),
   1064      OP3(ORREG1, ORXREG1, OWREG4),
   1065      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1066 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1067 
   1068 INSN(dotpnrsu2, m, compound, 4cycle, C64X, 0,
   1069      FIX1(FIX(op, 0x7)),
   1070      OP3(ORREG1, ORXREG1, OWREG4),
   1071      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1072 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1073 
   1074 INSN(dotpnrus2, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
   1075      FIX1(FIX(op, 0x7)),
   1076      OP3(ORXREG1, ORREG1, OWREG4),
   1077      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   1078 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
   1079 
   1080 INSN(dotprsu2, m, compound, 4cycle, C64X, 0,
   1081      FIX1(FIX(op, 0xd)),
   1082      OP3(ORREG1, ORXREG1, OWREG4),
   1083      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1084 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1085 
   1086 INSN(dotprus2, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
   1087      FIX1(FIX(op, 0xd)),
   1088      OP3(ORXREG1, ORREG1, OWREG4),
   1089      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   1090 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
   1091 
   1092 INSN(dotpsu4, m, compound, 4cycle, C64X, 0,
   1093      FIX1(FIX(op, 0x2)),
   1094      OP3(ORREG1, ORXREG1, OWREG4),
   1095      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1096 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1097 
   1098 INSN(dotpus4, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
   1099      FIX1(FIX(op, 0x2)),
   1100      OP3(ORXREG1, ORREG1, OWREG4),
   1101      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   1102 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
   1103 
   1104 INSN(dotpu4, m, compound, 4cycle, C64X, 0,
   1105      FIX1(FIX(op, 0x6)),
   1106      OP3(ORREG1, ORXREG1, OWREG4),
   1107      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1108 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1109 
   1110 INSN(dpack2, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
   1111      FIX1(FIX(op, 0x34)),
   1112      OP3(ORREG1, ORXREG1, OWREGD1),
   1113      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1114 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1115 
   1116 INSN(dpackx2, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
   1117      FIX1(FIX(op, 0x33)),
   1118      OP3(ORREG1, ORXREG1, OWREGD1),
   1119      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1120 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1121 
   1122 INSN(dpint, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_NO_CROSS,
   1123      FIX2(FIX(op, 0x8), FIX(x, 0)),
   1124      OP2(ORREGD1, OWREG4),
   1125      ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0),
   1126 	  ENC(dst, reg, 1)))
   1127 
   1128 INSN(dpsp, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_NO_CROSS,
   1129      FIX2(FIX(op, 0x9), FIX(x, 0)),
   1130      OP2(ORREGD1, OWREG4),
   1131      ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0),
   1132 	  ENC(dst, reg, 1)))
   1133 
   1134 INSN(dptrunc, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_NO_CROSS,
   1135      FIX2(FIX(op, 0x1), FIX(x, 0)),
   1136      OP2(ORREGD1, OWREG4),
   1137      ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0),
   1138 	  ENC(dst, reg, 1)))
   1139 
   1140 INSN(ext, s, field, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   1141      FIX1(FIX(op, 0x1)),
   1142      OP4(ORREG1, OACST, OACST, OWREG1),
   1143      ENC5(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(csta, ucst, 1),
   1144 	  ENC(cstb, ucst, 2), ENC(dst, reg, 3)))
   1145 INSN(ext, s, 1_or_2_src, 1cycle, C62X, 0,
   1146      FIX1(FIX(op, 0x2f)),
   1147      OP3(ORXREG1, ORREG1, OWREG1),
   1148      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   1149 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
   1150 
   1151 /* 16 bits insn */
   1152 INSNE(ext, hwcst16, s, s2ext, 1cycle, C64XP, 0,
   1153      FIX1(FIX(op, 0x0)),
   1154      OP4(ORREG1, OHWCST16, OHWCST16, OWREG1),
   1155      ENC3(ENC(s, fu, 0), ENC(src, reg, 0), ENC(dst, reg, 3)))
   1156 INSNE(ext, hwcst24, s, s2ext, 1cycle, C64XP, 0,
   1157      FIX1(FIX(op, 0x1)),
   1158      OP4(ORREG1, OHWCST24, OHWCST24, OWREG1),
   1159      ENC3(ENC(s, fu, 0), ENC(src, reg, 0), ENC(dst, reg, 3)))
   1160 /**/
   1161 
   1162 INSN(extu, s, field, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   1163      FIX1(FIX(op, 0x0)),
   1164      OP4(ORREG1, OACST, OACST, OWREG1),
   1165      ENC5(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(csta, ucst, 1),
   1166 	  ENC(cstb, ucst, 2), ENC(dst, reg, 3)))
   1167 INSN(extu, s, 1_or_2_src, 1cycle, C62X, 0,
   1168      FIX1(FIX(op, 0x2b)),
   1169      OP3(ORXREG1, ORREG1, OWREG1),
   1170      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   1171 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
   1172 
   1173 /* 16 bits insn */
   1174 INSNE(extu, hwcst16, s, s2ext, 1cycle, C64XP, 0,
   1175      FIX1(FIX(op, 0x2)),
   1176      OP4(ORREG1, OHWCST16, OHWCST16, OWREG1),
   1177      ENC3(ENC(s, fu, 0), ENC(src, reg, 0), ENC(dst, reg, 3)))
   1178 INSNE(extu, hwcst24, s, s2ext, 1cycle, C64XP, 0,
   1179      FIX1(FIX(op, 0x3)),
   1180      OP4(ORREG1, OHWCST24, OHWCST24, OWREG1),
   1181      ENC3(ENC(s, fu, 0), ENC(src, reg, 0), ENC(dst, reg, 3)))
   1182 INSN(extu, s, sc5, 1cycle, C64XP, 0,
   1183      FIX1(FIX(op, 0)),
   1184      OP4(ORREG1, OACST, OHWCST31, OWREG1Z),
   1185      ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(cst, ucst, 1)))
   1186 /**/
   1187 
   1188 INSN(gmpy, m, 1_or_2_src, 4cycle, C64XP, TIC6X_FLAG_NO_CROSS,
   1189      FIX2(FIX(op, 0x1f), FIX(x, 0)),
   1190      OP3(ORREG1, ORREG1, OWREG4),
   1191      ENC4(ENC(s, fu, 0), ENC(src1, reg, 0), ENC(src2, reg, 1),
   1192 	  ENC(dst, reg, 2)))
   1193 
   1194 /* This instruction can be predicated as usual; SPRUFE8 is incorrect
   1195    where it shows the "z" field as fixed to 1.  */
   1196 INSN(gmpy4, m, compound, 4cycle, C64X, 0,
   1197      FIX1(FIX(op, 0x11)),
   1198      OP3(ORREG1, ORXREG1, OWREG4),
   1199      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1200 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1201 
   1202 INSN(idle, nfu, nop_idle, nop, C62X, TIC6X_FLAG_MCNOP,
   1203      FIX2(FIX(s, 0), FIX(op, 0xf)),
   1204      OP0(),
   1205      ENC0())
   1206 
   1207 INSN(intdp, l, 1_or_2_src, intdp, C67X, 0,
   1208      FIX2(FIX(op, 0x39), FIX(src1, 0)),
   1209      OP2(ORXREG1, OWREGD45),
   1210      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   1211 	  ENC(dst, reg, 1)))
   1212 
   1213 INSN(intdpu, l, 1_or_2_src, intdp, C67X, 0,
   1214      FIX2(FIX(op, 0x3b), FIX(src1, 0)),
   1215      OP2(ORXREG1, OWREGD45),
   1216      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   1217 	  ENC(dst, reg, 1)))
   1218 
   1219 INSN(intsp, l, 1_or_2_src, 4cycle, C67X, 0,
   1220      FIX2(FIX(op, 0x4a), FIX(src1, 0)),
   1221      OP2(ORXREG1, OWREG4),
   1222      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   1223 	  ENC(dst, reg, 1)))
   1224 
   1225 INSN(intspu, l, 1_or_2_src, 4cycle, C67X, 0,
   1226      FIX2(FIX(op, 0x49), FIX(src1, 0)),
   1227      OP2(ORXREG1, OWREG4),
   1228      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   1229 	  ENC(dst, reg, 1)))
   1230 
   1231 INSN(ldb, d, load_store, load, C62X,
   1232      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
   1233      FIX2(FIX(op, 2), FIX(r, 0)),
   1234      OP2(ORMEMSB, OWDREG5),
   1235      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
   1236 	  ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
   1237 	  ENC(srcdst, reg, 1)))
   1238 INSN(ldb, d, load_store_long, load, C62X,
   1239      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
   1240      FIX1(FIX(op, 2)),
   1241      OP2(ORMEMLB, OWDREG5),
   1242      ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_byte, 0),
   1243 	  ENC(dst, reg, 1)))
   1244 
   1245 /* 16 bits insn */
   1246 INSN(ldb, d, doff4_dsz_x01, load, C64XP,
   1247      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
   1248      FIX2(FIX(op, 1), FIX(sz, 1)),
   1249      OP2(ORMEMSB, OWTREG5),
   1250      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1251           ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset, 0)))
   1252 INSN(ldb, d, dind_dsz_x01, load, C64XP,
   1253      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
   1254      FIX2(FIX(op, 1), FIX(sz, 1)),
   1255      OP2(ORMEMSB, OWTREG5),
   1256      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1257           ENC(ptr, reg_ptr, 0), ENC(src1, mem_offset, 0)))
   1258 INSN(ldb, d, dinc_dsz_x01, load, C64XP,
   1259      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
   1260      FIX2(FIX(op, 1), FIX(sz, 1)),
   1261      OP2(ORMEMSB, OWTREG5),
   1262      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1263           ENC(ptr, reg_ptr, 0),  ENC(cst, mem_offset_minus_one, 0)))
   1264 INSN(ldb, d, ddec_dsz_x01, load, C64XP,
   1265      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
   1266      FIX2(FIX(op, 1), FIX(sz, 1)),
   1267      OP2(ORMEMSB, OWTREG5),
   1268      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1269           ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
   1270 /**/
   1271 
   1272 INSN(ldbu, d, load_store, load, C62X,
   1273      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
   1274      FIX2(FIX(op, 1), FIX(r, 0)),
   1275      OP2(ORMEMSB, OWDREG5),
   1276      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
   1277 	  ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
   1278 	  ENC(srcdst, reg, 1)))
   1279 INSN(ldbu, d, load_store_long, load, C62X,
   1280      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
   1281      FIX1(FIX(op, 1)),
   1282      OP2(ORMEMLB, OWDREG5),
   1283      ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_byte, 0),
   1284 	  ENC(dst, reg, 1)))
   1285 
   1286 /* 16 bits insn */
   1287 INSN(ldbu, d, dinc_dsz_000, load, C64XP,
   1288      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
   1289      FIX2(FIX(op, 1), FIX(sz, 1)),
   1290      OP2(ORMEMSB, OWTREG5),
   1291      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset_minus_one, 0),
   1292           ENC(ptr, reg_ptr, 0), ENC(srcdst, reg, 1)))
   1293 INSN(ldbu, d, dind_dsz_000, load, C64XP,
   1294      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
   1295      FIX2(FIX(op, 1), FIX(sz, 1)),
   1296      OP2(ORMEMSB, OWTREG5),
   1297      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset, 0),
   1298           ENC(ptr, reg_ptr, 0), ENC(srcdst, reg, 1)))
   1299 INSN(ldbu, d, doff4_dsz_000, load, C64XP,
   1300      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
   1301      FIX2(FIX(op, 1), FIX(sz, 1)),
   1302      OP2(ORMEMSB, OWTREG5),
   1303      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset, 0),
   1304           ENC(ptr, reg_ptr, 0), ENC(srcdst, reg, 1)))
   1305 INSN(ldbu, d, ddec_dsz_000, load, C64XP,
   1306      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
   1307      FIX2(FIX(op, 1), FIX(sz, 1)),
   1308      OP2(ORMEMSB, OWTREG5),
   1309      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset_minus_one, 0),
   1310           ENC(ptr, reg_ptr, 0), ENC(srcdst, reg, 1)))
   1311 /**/
   1312 
   1313 INSN(lddw, d, load_store, load, C64X_AND_C67X,
   1314      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS,
   1315      FIX2(FIX(op, 6), FIX(r, 1)),
   1316      OP2(ORMEMSD, OWDREGD5),
   1317      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
   1318 	  ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
   1319 	  ENC(srcdst, reg, 1)))
   1320 
   1321 /* 16 bits insn */
   1322 INSN(lddw, d, dpp, load, C64XP,
   1323      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREINCR)|TIC6X_FLAG_INSN16_B15PTR|TIC6X_FLAG_INSN16_NORS,
   1324      FIX2(FIX(op, 1), FIX(dw, 1)),
   1325      OP2(ORMEMSD, OWDREGD5),
   1326      ENC4(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1327 	  ENC(cst, mem_offset_minus_one, 0)))
   1328 INSN(lddw, d, ddecdw, load, C64XP,
   1329      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
   1330      FIX3(FIX(op, 1), FIX(na, 0), FIX(sz, 0)),
   1331      OP2(ORMEMSD, OWTREGD5),
   1332      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 1),
   1333           ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
   1334 INSN(lddw, d, dincdw, load, C64XP,
   1335      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
   1336      FIX3(FIX(op, 1), FIX(na, 0), FIX(sz, 0)),
   1337      OP2(ORMEMSD, OWTREGD5),
   1338      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 1),
   1339           ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
   1340 INSN(lddw, d, dinddw, load, C64XP,
   1341      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
   1342      FIX3(FIX(op, 1), FIX(na, 0), FIX(sz, 0)),
   1343      OP2(ORMEMSD, OWTREGD5),
   1344      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset, 0),
   1345           ENC(ptr, reg_ptr, 0), ENC(srcdst, reg_shift, 1)))
   1346 INSN(lddw, d, doff4dw, load, C64XP,
   1347      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
   1348      FIX3(FIX(op, 1), FIX(na, 0), FIX(sz, 0)),
   1349      OP2(ORMEMSD, OWTREGD5),
   1350      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset, 0),
   1351           ENC(ptr, reg_ptr, 0), ENC(srcdst, reg_shift, 1)))
   1352 /**/
   1353 
   1354 INSN(ldh, d, load_store, load, C62X,
   1355      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
   1356      FIX2(FIX(op, 4), FIX(r, 0)),
   1357      OP2(ORMEMSH, OWDREG5),
   1358      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
   1359 	  ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
   1360 	  ENC(srcdst, reg, 1)))
   1361 INSN(ldh, d, load_store_long, load, C62X,
   1362      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
   1363      FIX1(FIX(op, 4)),
   1364      OP2(ORMEMLH, OWDREG5),
   1365      ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_half, 0),
   1366 	  ENC(dst, reg, 1)))
   1367 
   1368 /* 16 bits insn */
   1369 INSN(ldh, d, doff4_dsz_x11, load, C64XP,
   1370      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
   1371      FIX2(FIX(op, 1), FIX(sz, 1)),
   1372      OP2(ORMEMSH, OWTREG5),
   1373      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset, 0),
   1374           ENC(ptr, reg_ptr, 0), ENC(srcdst, reg, 1)))
   1375 INSN(ldh, d, dind_dsz_x11, load, C64XP,
   1376      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
   1377      FIX2(FIX(op, 1), FIX(sz, 1)),
   1378      OP2(ORMEMSH, OWTREG5),
   1379      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1380           ENC(ptr, reg_ptr, 0), ENC(src1, mem_offset, 0)))
   1381 INSN(ldh, d, dinc_dsz_x11, load, C64XP,
   1382      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
   1383      FIX2(FIX(op, 1), FIX(sz, 1)),
   1384      OP2(ORMEMSH, OWTREG5),
   1385      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1386           ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
   1387 INSN(ldh, d, ddec_dsz_x11, load, C64XP,
   1388      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
   1389      FIX2(FIX(op, 1), FIX(sz, 1)),
   1390      OP2(ORMEMSH, OWTREG5),
   1391      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1392           ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
   1393 /**/
   1394 
   1395 INSN(ldhu, d, load_store, load, C62X,
   1396      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
   1397      FIX2(FIX(op, 0), FIX(r, 0)),
   1398      OP2(ORMEMSH, OWDREG5),
   1399      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
   1400 	  ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
   1401 	  ENC(srcdst, reg, 1)))
   1402 INSN(ldhu, d, load_store_long, load, C62X,
   1403      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
   1404      FIX1(FIX(op, 0)),
   1405      OP2(ORMEMLH, OWDREG5),
   1406      ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_half, 0),
   1407 	  ENC(dst, reg, 1)))
   1408 
   1409 /* 16 bits insn */
   1410 INSN(ldhu, d, doff4_dsz_010, load, C64XP,
   1411      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
   1412      FIX2(FIX(op, 1), FIX(sz, 1)),
   1413      OP2(ORMEMSH, OWTREG5),
   1414      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset, 0),
   1415           ENC(ptr, reg_ptr, 0), ENC(srcdst, reg, 1)))
   1416 INSN(ldhu, d, dind_dsz_010, load, C64XP,
   1417      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
   1418      FIX2(FIX(op, 1), FIX(sz, 1)),
   1419      OP2(ORMEMSH, OWTREG5),
   1420      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1421           ENC(ptr, reg_ptr, 0), ENC(src1, mem_offset, 0)))
   1422 INSN(ldhu, d, dinc_dsz_010, load, C64XP,
   1423      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
   1424      FIX2(FIX(op, 1), FIX(sz, 1)),
   1425      OP2(ORMEMSH, OWTREG5),
   1426      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1427           ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
   1428 INSN(ldhu, d, ddec_dsz_010, load, C64XP,
   1429      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
   1430      FIX2(FIX(op, 1), FIX(sz, 1)),
   1431      OP2(ORMEMSH, OWTREG5),
   1432      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1433           ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
   1434 /**/
   1435 
   1436 INSN(ldndw, d, load_nonaligned, load, C64X,
   1437      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED,
   1438      FIX0(),
   1439      OP2(ORMEMND, OWDREGD5),
   1440      ENC7(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
   1441 	  ENC(offsetR, mem_offset_noscale, 0), ENC(baseR, reg, 0),
   1442 	  ENC(sc, scaled, 0), ENC(dst, reg_shift, 1)))
   1443 
   1444 /* 16 bits insn */
   1445 INSN(ldndw, d, ddecdw, load, C64XP,
   1446      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
   1447      FIX3(FIX(op, 1), FIX(na, 1), FIX(sz, 0)),
   1448      OP2(ORMEMND, OWTREGD5),
   1449      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 1),
   1450           ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one_noscale, 0)))
   1451 INSN(ldndw, d, dincdw, load, C64XP,
   1452      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
   1453      FIX3(FIX(op, 1), FIX(na, 1), FIX(sz, 0)),
   1454      OP2(ORMEMND, OWTREGD5),
   1455      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 1),
   1456           ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one_noscale, 0)))
   1457 INSN(ldndw, d, dinddw, load, C64XP,
   1458      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
   1459      FIX3(FIX(op, 1), FIX(na, 1), FIX(sz, 0)),
   1460      OP2(ORMEMND, OWTREGD5),
   1461      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset_noscale, 0),
   1462           ENC(ptr, reg_ptr, 0), ENC(srcdst, reg_shift, 1)))
   1463 INSN(ldndw, d, doff4dw, load, C64XP,
   1464      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
   1465      FIX3(FIX(op, 1), FIX(na, 1), FIX(sz, 0)),
   1466      OP2(ORMEMND, OWTREGD5),
   1467      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset_noscale, 0),
   1468           ENC(ptr, reg_ptr, 0), ENC(srcdst, reg_shift, 1)))
   1469 /**/
   1470 
   1471 INSN(ldnw, d, load_store, load, C64X,
   1472      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED,
   1473      FIX2(FIX(op, 3), FIX(r, 1)),
   1474      OP2(ORMEMSW, OWDREG5),
   1475      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
   1476 	  ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
   1477 	  ENC(srcdst, reg, 1)))
   1478 
   1479 /* 16 bits insn */
   1480 INSN(ldnw, d, doff4_dsz_110, load, C64XP,
   1481      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
   1482      FIX2(FIX(op, 1), FIX(sz, 1)),
   1483      OP2(ORMEMSW, OWTREG5),
   1484      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1485           ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset, 0)))
   1486 INSN(ldnw, d, dind_dsz_110, load, C64XP,
   1487      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
   1488      FIX2(FIX(op, 1), FIX(sz, 1)),
   1489      OP2(ORMEMSW, OWTREG5),
   1490      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1491           ENC(ptr, reg_ptr, 0), ENC(src1, mem_offset, 0)))
   1492 INSN(ldnw, d, dinc_dsz_110, load, C64XP,
   1493      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
   1494      FIX2(FIX(op, 1), FIX(sz, 1)),
   1495      OP2(ORMEMSW, OWTREG5),
   1496      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1497           ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
   1498 INSN(ldnw, d, ddec_dsz_110, load, C64XP,
   1499      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
   1500      FIX2(FIX(op, 1), FIX(sz, 1)),
   1501      OP2(ORMEMSW, OWTREG5),
   1502      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1503           ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
   1504 /**/
   1505 
   1506 INSN(ldw, d, load_store, load, C62X,
   1507      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
   1508      FIX2(FIX(op, 6), FIX(r, 0)),
   1509      OP2(ORMEMSW, OWDREG5),
   1510      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
   1511 	  ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
   1512 	  ENC(srcdst, reg, 1)))
   1513 INSN(ldw, d, load_store_long, load, C62X,
   1514      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
   1515      FIX1(FIX(op, 6)),
   1516      OP2(ORMEMLW, OWDREG5),
   1517      ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_word, 0),
   1518 	  ENC(dst, reg, 1)))
   1519 
   1520 /* 16 bits insn */
   1521 INSN(ldw, d, doff4_dsz_0xx, load, C64XP,
   1522      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
   1523      FIX2(FIX(op, 1), FIX(sz, 0)),
   1524      OP2(ORMEMSW, OWTREG5),
   1525      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1526           ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset, 0)))
   1527 INSN(ldw, d, doff4_dsz_100, load, C64XP,
   1528      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
   1529      FIX2(FIX(op, 1), FIX(sz, 1)),
   1530      OP2(ORMEMSW, OWTREG5),
   1531      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1532           ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset, 0)))
   1533 INSN(ldw, d, dind_dsz_0xx, load, C64XP,
   1534      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
   1535      FIX2(FIX(op, 1), FIX(sz, 0)),
   1536      OP2(ORMEMSW, OWTREG5),
   1537      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1538           ENC(ptr, reg_ptr, 0), ENC(src1, mem_offset, 0)))
   1539 INSN(ldw, d, dind_dsz_100, load, C64XP,
   1540      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
   1541      FIX2(FIX(op, 1), FIX(sz, 1)),
   1542      OP2(ORMEMSW, OWTREG5),
   1543      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1544           ENC(ptr, reg_ptr, 0), ENC(src1, mem_offset, 0)))
   1545 INSN(ldw, d, dinc_dsz_0xx, load, C64XP,
   1546      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
   1547      FIX2(FIX(op, 1), FIX(sz, 0)),
   1548      OP2(ORMEMSW, OWTREG5),
   1549      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1550           ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
   1551 INSN(ldw, d, dinc_dsz_100, load, C64XP,
   1552      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
   1553      FIX2(FIX(op, 1), FIX(sz, 1)),
   1554      OP2(ORMEMSW, OWTREG5),
   1555      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1556           ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
   1557 INSN(ldw, d, ddec_dsz_0xx, load, C64XP,
   1558      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
   1559      FIX2(FIX(op, 1), FIX(sz, 0)),
   1560      OP2(ORMEMSW, OWTREG5),
   1561      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1562           ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
   1563 INSN(ldw, d, ddec_dsz_100, load, C64XP,
   1564      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
   1565      FIX2(FIX(op, 1), FIX(sz, 1)),
   1566      OP2(ORMEMSW, OWTREG5),
   1567      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1568           ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
   1569 INSN(ldw, d, dpp, load, C64XP,
   1570      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREINCR)|TIC6X_FLAG_INSN16_B15PTR|TIC6X_FLAG_INSN16_NORS,
   1571      FIX2(FIX(op, 1), FIX(dw, 0)),
   1572      OP2(ORMEMSW, OWTREG5),
   1573      ENC4(ENC(s, fu, 0), ENC(t, rside, 0),  ENC(srcdst, reg, 1),
   1574 	  ENC(cst, mem_offset_minus_one, 0)))
   1575 INSN(ldw, d, dstk, load, C64XP,
   1576      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE)|TIC6X_FLAG_INSN16_B15PTR,
   1577      FIX2(FIX(op, 0x1), FIX(s, 1)),
   1578      OP2(ORMEMSW, OWTREG5),
   1579      ENC4(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
   1580 	  ENC(cst, mem_offset, 0)))
   1581 /**/
   1582 
   1583 INSN(ll, d, 1_or_2_src, load, C64XP,
   1584      TIC6X_FLAG_LOAD|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_SIDE_T2_ONLY|TIC6X_FLAG_NO_CROSS,
   1585      FIX3(FIX(s, 1), FIX(op, 0xc), FIX(src1, 0)),
   1586      OP2(ORMEMDW, OWDREG5),
   1587      ENC2(ENC(src2, reg, 0), ENC(dst, reg, 1)))
   1588 
   1589 INSNE(lmbd, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
   1590       FIX1(FIX(op, 0x6b)),
   1591       OP3(ORREG1, ORXREG1, OWREG1),
   1592       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1593 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1594 INSNE(lmbd, l_s5_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
   1595       FIX1(FIX(op, 0x6a)),
   1596       OP3(OACST, ORXREG1, OWREG1),
   1597       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
   1598 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1599 
   1600 INSN(max2, l, 1_or_2_src, 1cycle, C64X, 0,
   1601      FIX1(FIX(op, 0x42)),
   1602      OP3(ORREG1, ORXREG1, OWREG1),
   1603      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1604 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1605 INSN(max2, s, ext_1_or_2_src, 1cycle, C64XP, 0,
   1606      FIX1(FIX(op, 0xd)),
   1607      OP3(ORREG1, ORXREG1, OWREG1),
   1608      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1609 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1610 
   1611 INSN(maxu4, l, 1_or_2_src, 1cycle, C64X, 0,
   1612      FIX1(FIX(op, 0x43)),
   1613      OP3(ORREG1, ORXREG1, OWREG1),
   1614      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1615 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1616 
   1617 INSN(min2, l, 1_or_2_src, 1cycle, C64X, 0,
   1618      FIX1(FIX(op, 0x41)),
   1619      OP3(ORREG1, ORXREG1, OWREG1),
   1620      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1621 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1622 INSN(min2, s, ext_1_or_2_src, 1cycle, C64XP, 0,
   1623      FIX1(FIX(op, 0xc)),
   1624      OP3(ORREG1, ORXREG1, OWREG1),
   1625      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1626 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1627 
   1628 INSN(minu4, l, 1_or_2_src, 1cycle, C64X, 0,
   1629      FIX1(FIX(op, 0x48)),
   1630      OP3(ORREG1, ORXREG1, OWREG1),
   1631      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1632 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1633 
   1634 INSNE(mpy, m_sl16_xsl16_si, m, mpy, 1616_m, C62X, 0,
   1635       FIX1(FIX(op, 0x19)),
   1636       OP3(ORREG1, ORXREG1, OWREG2),
   1637       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1638 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1639 INSNE(mpy, m_s5_xsl16_si, m, mpy, 1616_m, C62X, 0,
   1640       FIX1(FIX(op, 0x18)),
   1641       OP3(OACST, ORXREG1, OWREG2),
   1642       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
   1643 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1644 
   1645 /* 16-bit insn.  */
   1646 INSN(mpy, m, m3_sat_0, 1616_m, C67X, 0,
   1647       FIX1(FIX(op, 0x0)),
   1648       OP3(ORREG1, ORXREG1, OWREG2),
   1649       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1650            ENC(src2, reg, 1), ENC(dst, reg_shift, 2)))
   1651 
   1652 INSN(mpydp, m, mpy, mpydp, C67X, 0,
   1653      FIX1(FIX(op, 0x0e)),
   1654      OP3(ORREGD1234, ORXREGD1324, OWREGD910),
   1655      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1656            ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1657 
   1658 INSN(mpyh, m, mpy, 1616_m, C62X, 0,
   1659      FIX1(FIX(op, 0x01)),
   1660      OP3(ORREG1, ORXREG1, OWREG2),
   1661      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1662 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1663 
   1664 /* 16 bits insn */
   1665 INSN(mpyh, m, m3_sat_0, 1616_m, C67X, 0,
   1666       FIX1(FIX(op, 0x1)),
   1667       OP3(ORREG1, ORXREG1, OWREG2),
   1668       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1669            ENC(src2, reg, 1), ENC(dst, reg_shift, 2)))
   1670 /**/
   1671 
   1672 INSN(mpyhi, m, compound, 4cycle, C64X, 0,
   1673      FIX1(FIX(op, 0x14)),
   1674      OP3(ORREG1, ORXREG1, OWREGD4),
   1675      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1676 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1677 
   1678 INSN(mpyhir, m, compound, 4cycle, C64X, 0,
   1679      FIX1(FIX(op, 0x10)),
   1680      OP3(ORREG1, ORXREG1, OWREG4),
   1681      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1682 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1683 
   1684 INSN(mpyhl, m, mpy, 1616_m, C62X, 0,
   1685      FIX1(FIX(op, 0x09)),
   1686      OP3(ORREG1, ORXREG1, OWREG2),
   1687      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1688 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1689 
   1690 /* 16 bits insn */
   1691 INSN(mpyhl, m, m3_sat_0, 1616_m, C67X, 0,
   1692       FIX1(FIX(op, 0x3)),
   1693       OP3(ORREG1, ORXREG1, OWREG2),
   1694       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1695            ENC(src2, reg, 1), ENC(dst, reg_shift, 2)))
   1696 /**/
   1697 
   1698 INSN(mpyhlu, m, mpy, 1616_m, C62X, 0,
   1699      FIX1(FIX(op, 0x0f)),
   1700      OP3(ORREG1, ORXREG1, OWREG2),
   1701      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1702 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1703 
   1704 INSN(mpyhslu, m, mpy, 1616_m, C62X, 0,
   1705      FIX1(FIX(op, 0x0b)),
   1706      OP3(ORREG1, ORXREG1, OWREG2),
   1707      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1708 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1709 
   1710 INSN(mpyhsu, m, mpy, 1616_m, C62X, 0,
   1711      FIX1(FIX(op, 0x03)),
   1712      OP3(ORREG1, ORXREG1, OWREG2),
   1713      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1714 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1715 
   1716 INSN(mpyhu, m, mpy, 1616_m, C62X, 0,
   1717      FIX1(FIX(op, 0x07)),
   1718      OP3(ORREG1, ORXREG1, OWREG2),
   1719      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1720 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1721 
   1722 INSN(mpyhuls, m, mpy, 1616_m, C62X, 0,
   1723      FIX1(FIX(op, 0x0d)),
   1724      OP3(ORREG1, ORXREG1, OWREG2),
   1725      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1726 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1727 
   1728 INSN(mpyhus, m, mpy, 1616_m, C62X, 0,
   1729      FIX1(FIX(op, 0x05)),
   1730      OP3(ORREG1, ORXREG1, OWREG2),
   1731      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1732 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1733 
   1734 INSNE(mpyi, m_si_xsi_si, m, mpy, mpyi, C67X, 0,
   1735       FIX1(FIX(op, 0x04)),
   1736       OP3(ORREG14, ORXREG14, OWREG9),
   1737       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1738 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1739 INSNE(mpyi, m_s5_xsi_si, m, mpy, mpyi, C67X, 0,
   1740       FIX1(FIX(op, 0x06)),
   1741       OP3(OACST, ORXREG14, OWREG9),
   1742       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
   1743 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1744 
   1745 INSNE(mpyid, m_si_xsi_sll, m, mpy, mpyid, C67X, 0,
   1746       FIX1(FIX(op, 0x08)),
   1747       OP3(ORREG14, ORXREG14, OWREGD910),
   1748       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1749 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1750 INSNE(mpyid, m_s5_xsi_sll, m, mpy, mpyid, C67X, 0,
   1751       FIX1(FIX(op, 0x0c)),
   1752       OP3(OACST, ORXREG14, OWREGD910),
   1753       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
   1754 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1755 
   1756 INSN(mpyih, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
   1757      FIX1(FIX(op, 0x14)),
   1758      OP3(ORXREG1, ORREG1, OWREGD4),
   1759      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   1760 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
   1761 
   1762 INSN(mpyihr, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
   1763      FIX1(FIX(op, 0x10)),
   1764      OP3(ORXREG1, ORREG1, OWREG4),
   1765      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   1766 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
   1767 
   1768 INSN(mpyil, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
   1769      FIX1(FIX(op, 0x15)),
   1770      OP3(ORXREG1, ORREG1, OWREGD4),
   1771      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   1772 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
   1773 
   1774 INSN(mpyilr, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
   1775      FIX1(FIX(op, 0x0e)),
   1776      OP3(ORXREG1, ORREG1, OWREG4),
   1777      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   1778 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
   1779 
   1780 INSN(mpylh, m, mpy, 1616_m, C62X, 0,
   1781      FIX1(FIX(op, 0x11)),
   1782      OP3(ORREG1, ORXREG1, OWREG2),
   1783      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1784 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1785 
   1786 /* 16 bits insn */
   1787 INSN(mpylh, m, m3_sat_0, 1616_m, C67X, 0,
   1788       FIX1(FIX(op, 0x2)),
   1789       OP3(ORREG1, ORXREG1, OWREG2),
   1790       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1791            ENC(src2, reg, 1), ENC(dst, reg_shift, 2)))
   1792 /**/
   1793 
   1794 INSN(mpylhu, m, mpy, 1616_m, C62X, 0,
   1795      FIX1(FIX(op, 0x17)),
   1796      OP3(ORREG1, ORXREG1, OWREG2),
   1797      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1798 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1799 
   1800 INSN(mpyli, m, compound, 4cycle, C64X, 0,
   1801      FIX1(FIX(op, 0x15)),
   1802      OP3(ORREG1, ORXREG1, OWREGD4),
   1803      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1804 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1805 
   1806 INSN(mpylir, m, compound, 4cycle, C64X, 0,
   1807      FIX1(FIX(op, 0x0e)),
   1808      OP3(ORREG1, ORXREG1, OWREG4),
   1809      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1810 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1811 
   1812 INSN(mpylshu, m, mpy, 1616_m, C62X, 0,
   1813      FIX1(FIX(op, 0x13)),
   1814      OP3(ORREG1, ORXREG1, OWREG2),
   1815      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1816 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1817 
   1818 INSN(mpyluhs, m, mpy, 1616_m, C62X, 0,
   1819      FIX1(FIX(op, 0x15)),
   1820      OP3(ORREG1, ORXREG1, OWREG2),
   1821      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1822 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1823 
   1824 INSN(mpysp, m, mpy, 4cycle, C67X, 0,
   1825      FIX1(FIX(op, 0x1c)),
   1826      OP3(ORREG1, ORXREG1, OWREG4),
   1827      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1828 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1829 
   1830 /* Contrary to SPRU733A, MPYSPDP and MPYSP2DP are on both C67X and
   1831    C67X+.  */
   1832 INSN(mpyspdp, m, compound, mpyspdp, C67X, 0,
   1833      FIX1(FIX(op, 0x16)),
   1834      OP3(ORREG12, ORXREGD12, OWREGD67),
   1835      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1836 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1837 
   1838 INSN(mpysp2dp, m, compound, mpyspdp, C67X, 0,
   1839      FIX1(FIX(op, 0x17)),
   1840      OP3(ORREG1, ORXREG1, OWREGD45),
   1841      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1842 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1843 
   1844 INSNE(mpysu, m_sl16_xul16_si, m, mpy, 1616_m, C62X, 0,
   1845       FIX1(FIX(op, 0x1b)),
   1846       OP3(ORREG1, ORXREG1, OWREG2),
   1847       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1848 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1849 INSNE(mpysu, m_s5_xul16_si, m, mpy, 1616_m, C62X, 0,
   1850       FIX1(FIX(op, 0x1e)),
   1851       OP3(OACST, ORXREG1, OWREG2),
   1852       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
   1853 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1854 
   1855 INSN(mpysu4, m, compound, 4cycle, C64X, 0,
   1856      FIX1(FIX(op, 0x05)),
   1857      OP3(ORREG1, ORXREG1, OWREGD4),
   1858      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1859 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1860 
   1861 INSN(mpyu, m, mpy, 1616_m, C62X, 0,
   1862      FIX1(FIX(op, 0x1f)),
   1863      OP3(ORREG1, ORXREG1, OWREG2),
   1864      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1865 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1866 
   1867 INSN(mpyu4, m, compound, 4cycle, C64X, 0,
   1868      FIX1(FIX(op, 0x04)),
   1869      OP3(ORREG1, ORXREG1, OWREGD4),
   1870      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1871 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1872 
   1873 INSN(mpyus, m, mpy, 1616_m, C62X, 0,
   1874      FIX1(FIX(op, 0x1d)),
   1875      OP3(ORREG1, ORXREG1, OWREG2),
   1876      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1877 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1878 
   1879 INSN(mpyus4, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
   1880      FIX1(FIX(op, 0x05)),
   1881      OP3(ORXREG1, ORREG1, OWREGD4),
   1882      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   1883 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
   1884 
   1885 INSN(mpy2, m, compound, 4cycle, C64X, 0,
   1886      FIX1(FIX(op, 0x00)),
   1887      OP3(ORREG1, ORXREG1, OWREGD4),
   1888      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1889 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1890 
   1891 INSN(mpy2ir, m, 1_or_2_src, 4cycle, C64XP, 0,
   1892      FIX1(FIX(op, 0x0f)),
   1893      OP3(ORREG1, ORXREG1, OWREGD4),
   1894      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1895 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1896 
   1897 INSNE(mpy32, 32_32_32, m, mpy, 4cycle, C64XP, 0,
   1898       FIX1(FIX(op, 0x10)),
   1899       OP3(ORREG1, ORXREG1, OWREG4),
   1900       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1901 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1902 INSNE(mpy32, 32_32_64, m, mpy, 4cycle, C64XP, 0,
   1903       FIX1(FIX(op, 0x14)),
   1904       OP3(ORREG1, ORXREG1, OWREGD4),
   1905       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1906 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1907 
   1908 INSN(mpy32su, m, mpy, 4cycle, C64XP, 0,
   1909      FIX1(FIX(op, 0x16)),
   1910      OP3(ORREG1, ORXREG1, OWREGD4),
   1911      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1912 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1913 
   1914 INSN(mpy32u, m, compound, 4cycle, C64XP, 0,
   1915      FIX1(FIX(op, 0x18)),
   1916      OP3(ORREG1, ORXREG1, OWREGD4),
   1917      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1918 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1919 
   1920 INSN(mpy32us, m, compound, 4cycle, C64XP, 0,
   1921      FIX1(FIX(op, 0x19)),
   1922      OP3(ORREG1, ORXREG1, OWREGD4),
   1923      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   1924 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   1925 
   1926 /* "or" forms of "mv" are preferred over "add" forms when available
   1927    because "or" uses less power.  However, 40-bit moves are only
   1928    available through "add", and before C64X D-unit moves are only
   1929    available through "add" (without cross paths being available).  */
   1930 INSNE(mv, l_xui_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
   1931       FIX2(FIX(op, 0x7e), FIX(src1, 0)),
   1932       OP2(ORXREG1, OWREG1),
   1933       ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   1934 	   ENC(dst, reg, 1)))
   1935 INSNE(mv, l_sl_sl, l, 1_or_2_src, 1cycle, C62X,
   1936       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO,
   1937       FIX3(FIX(op, 0x20), FIX(x, 0), FIX(src1, 0)),
   1938       OP2(ORREGL1, OWREGL1),
   1939       ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
   1940 INSNE(mv, s_xui_ui, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
   1941       FIX2(FIX(op, 0x1a), FIX(src1, 0)),
   1942       OP2(ORXREG1, OWREG1),
   1943       ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   1944 	   ENC(dst, reg, 1)))
   1945 INSNE(mv, d_si_si, d, 1_or_2_src, 1cycle, C62X,
   1946       TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(0),
   1947       FIX2(FIX(op, 0x12), FIX(src1, 0)),
   1948       OP2(ORREG1, OWREG1),
   1949       ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
   1950 INSNE(mv, d_xui_ui, d, ext_1_or_2_src, 1cycle, C64X,
   1951       TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(1),
   1952       FIX2(FIX(op, 0x3), FIX(src1, 0)),
   1953       OP2(ORXREG1, OWREG1),
   1954       ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   1955 	   ENC(dst, reg, 1)))
   1956 
   1957 /* 16 bits insn */
   1958 INSNU(mv, l, lsdmvto, 1cycle, C64X, 0,
   1959       FIX1(FIX(unit, 0x0)),
   1960       OP2(ORXREG1, OWREG1),
   1961       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(x, xpath, 0), ENC(dst, reg, 1)))
   1962 
   1963 INSNU(mv, s, lsdmvto, 1cycle, C64X, 0,
   1964       FIX1(FIX(unit, 0x1)),
   1965       OP2(ORXREG1, OWREG1),
   1966       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(x, xpath, 0), ENC(dst, reg, 1)))
   1967 
   1968 INSNU(mv, d, lsdmvto, 1cycle, C64X, 0,
   1969       FIX1(FIX(unit, 0x2)),
   1970       OP2(ORXREG1, OWREG1),
   1971       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(x, xpath, 0), ENC(dst, reg, 1)))
   1972 
   1973 INSNU(mv, l, lsdmvfr, 1cycle, C64X, 0,
   1974       FIX1(FIX(unit, 0x0)),
   1975       OP2(ORXREG1, OWREG1),
   1976       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(x, xpath, 0), ENC(dst, reg, 1)))
   1977 
   1978 INSNU(mv, s, lsdmvfr, 1cycle, C64X, 0,
   1979       FIX1(FIX(unit, 0x1)),
   1980       OP2(ORXREG1, OWREG1),
   1981       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(x, xpath, 0), ENC(dst, reg, 1)))
   1982 
   1983 INSNU(mv, d, lsdmvfr, 1cycle, C64X, 0,
   1984       FIX1(FIX(unit, 0x2)),
   1985       OP2(ORXREG1, OWREG1),
   1986       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(x, xpath, 0), ENC(dst, reg, 1)))
   1987 /**/
   1988 
   1989 INSNE(mvc, from_cr, s, 1_or_2_src, 1cycle, C62X,
   1990       TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_NO_CROSS,
   1991       FIX3(FIX(s, 1), FIX(op, 0x0f), FIX(x, 0)),
   1992       OP2(ORCREG1, OWREG1),
   1993       ENC3(ENC(src1, crhi, 0), ENC(src2, crlo, 0), ENC(dst, reg, 1)))
   1994 INSNE(mvc, to_cr, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_SIDE_B_ONLY,
   1995       FIX2(FIX(s, 1), FIX(op, 0x0e)),
   1996       OP2(ORXREG1, OWCREG1),
   1997       ENC4(ENC(x, xpath, 0), ENC(src2, reg, 0), ENC(src1, crhi, 1),
   1998 	   ENC(dst, crlo, 1)))
   1999 
   2000 /* 16 bits insn */
   2001 INSN(mvc, s, sx1, 1cycle, C64XP,
   2002       TIC6X_FLAG_NO_CROSS,
   2003       FIX1(FIX(op, 0x6)),
   2004       OP2(ORREG1B, OWILC1),
   2005       ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 0)))
   2006 /**/
   2007 
   2008 INSN(mvd, m, unary, 4cycle, C64X, 0,
   2009      FIX1(FIX(op, 0x1a)),
   2010      OP2(ORXREG1, OWREG4),
   2011      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2012 	  ENC(dst, reg, 1)))
   2013 
   2014 INSN(mvk, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   2015      FIX1(FIX(h, 0)),
   2016      OP2(OLCST, OWREG1),
   2017      ENC3(ENC(s, fu, 0), ENC(cst, scst, 0), ENC(dst, reg, 1)))
   2018 INSN(mvk, l, unary, 1cycle, C64X, TIC6X_FLAG_NO_CROSS,
   2019      FIX2(FIX(x, 0), FIX(op, 0x05)),
   2020      OP2(OACST, OWREG1),
   2021      ENC3(ENC(s, fu, 0), ENC(src2, scst, 0), ENC(dst, reg, 1)))
   2022 INSN(mvk, d, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_NO_CROSS,
   2023      FIX2(FIX(op, 0x00), FIX(src2, 0)),
   2024      OP2(OACST, OWREG1),
   2025      ENC3(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(dst, reg, 1)))
   2026 
   2027 /* 16 bits insn */
   2028 INSN(mvk, l, lx5, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
   2029      FIX0(),
   2030      OP2(OLCST, OWREG1),
   2031      ENC3(ENC(s, fu, 0), ENC(cst, scst, 0), ENC(dst, reg, 1)))
   2032 INSN(mvk, s, smvk8, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
   2033      FIX0(),
   2034      OP2(OLCST, OWREG1),
   2035      ENC3(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(dst, reg, 1)))
   2036 INSNU(mvk, l, lsdx1c, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_SPRED,
   2037      FIX1(FIX(unit, 0x0)),
   2038      OP2(OACST, OWREG1),
   2039      ENC3(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(dst, reg, 1)))
   2040 INSNU(mvk, s, lsdx1c, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_SPRED,
   2041      FIX1(FIX(unit, 0x1)),
   2042      OP2(OACST, OWREG1),
   2043      ENC3(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(dst, reg, 1)))
   2044 INSNU(mvk, d, lsdx1c, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_SPRED,
   2045      FIX1(FIX(unit, 0x2)),
   2046      OP2(OACST, OWREG1),
   2047      ENC3(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(dst, reg, 1)))
   2048 INSNUE(mvk, zero, l, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
   2049      FIX2(FIX(op, 0), FIX(unit, 0x0)),
   2050      OP2(OHWCST0, OWREG1),
   2051      ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 1)))
   2052 INSNUE(mvk, zero, s, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
   2053      FIX2(FIX(op, 0), FIX(unit, 0x1)),
   2054      OP2(OHWCST0, OWREG1),
   2055      ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 1)))
   2056 INSNUE(mvk, zero, d, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
   2057      FIX2(FIX(op, 0), FIX(unit, 0x2)),
   2058      OP2(OHWCST0, OWREG1),
   2059      ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 1)))
   2060 INSNUE(mvk, one, l, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
   2061      FIX2(FIX(op, 1), FIX(unit, 0x0)),
   2062      OP2(OHWCST1, OWREG1),
   2063      ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 1)))
   2064 INSNUE(mvk, one, s, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
   2065      FIX2(FIX(op, 1), FIX(unit, 0x1)),
   2066      OP2(OHWCST1, OWREG1),
   2067      ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 1)))
   2068 INSNUE(mvk, one, d, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
   2069      FIX2(FIX(op, 1), FIX(unit, 0x2)),
   2070      OP2(OHWCST1, OWREG1),
   2071      ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 1)))
   2072 /**/
   2073 
   2074 INSN(mvkh, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   2075      FIX1(FIX(h, 1)),
   2076      OP2(OLCST, OWREG1),
   2077      ENC3(ENC(s, fu, 0), ENC(cst, lcst_high16, 0), ENC(dst, reg, 1)))
   2078 
   2079 INSN(mvklh, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO,
   2080      FIX1(FIX(h, 1)),
   2081      OP2(OLCST, OWREG1),
   2082      ENC3(ENC(s, fu, 0), ENC(cst, lcst_low16, 0), ENC(dst, reg, 1)))
   2083 
   2084 INSN(mvkl, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO,
   2085      FIX1(FIX(h, 0)),
   2086      OP2(OLCST, OWREG1),
   2087      ENC3(ENC(s, fu, 0), ENC(cst, lcst_low16, 0), ENC(dst, reg, 1)))
   2088 
   2089 INSNE(neg, s_xsi_si, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
   2090       FIX2(FIX(op, 0x16), FIX(src1, 0)),
   2091       OP2(ORXREG1, OWREG1),
   2092       ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2093 	   ENC(dst, reg, 1)))
   2094 INSNE(neg, l_xsi_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
   2095       FIX2(FIX(op, 0x06), FIX(src1, 0)),
   2096       OP2(ORXREG1, OWREG1),
   2097       ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2098 	   ENC(dst, reg, 1)))
   2099 INSNE(neg, l_sl_sl, l, 1_or_2_src, 1cycle, C62X,
   2100       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO,
   2101       FIX2(FIX(op, 0x24), FIX(src1, 0)),
   2102       OP2(ORREGL1, OWREGL1),
   2103       ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2104 	   ENC(dst, reg, 1)))
   2105 
   2106 INSN(nop, nfu, nop_idle, nop, C62X, 0,
   2107      FIX2(FIX(s, 0), RAN(op, 0, 8)),
   2108      OP1(OACST),
   2109      ENC1(ENC(op, ucst_minus_one, 0)))
   2110 INSNE(nop, 1, nfu, nop_idle, nop, C62X, TIC6X_FLAG_MACRO,
   2111       FIX2(FIX(s, 0), FIX(op, 0)),
   2112       OP0(),
   2113       ENC0())
   2114 
   2115 /* 16 bits insn */
   2116 /* contrary to sprufe8b.pdf p767, and accordingly to
   2117  * dis6x.exe output, unop3 opcode is decoded as NOP N3 + 1 */
   2118 INSN(nop, nfu, unop, nop, C64XP, 0,
   2119      FIX0(),
   2120      OP1(OACST),
   2121      ENC1(ENC(n, ucst_minus_one, 0)))
   2122 /**/
   2123 
   2124 INSNE(norm, l_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0,
   2125       FIX2(FIX(op, 0x63), FIX(src1, 0)),
   2126       OP2(ORXREG1, OWREG1),
   2127       ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2128 	   ENC(dst, reg, 1)))
   2129 INSNE(norm, l_sl_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   2130       FIX3(FIX(op, 0x60), FIX(x, 0), FIX(src1, 0)),
   2131       OP2(ORREGL1, OWREG1),
   2132       ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
   2133 
   2134 INSN(not, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
   2135      FIX2(FIX(op, 0x6e), FIX(src1, 0x1f)),
   2136      OP2(ORXREG1, OWREG1),
   2137      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2138 	  ENC(dst, reg, 1)))
   2139 INSN(not, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
   2140      FIX2(FIX(op, 0x0a), FIX(src1, 0x1f)),
   2141      OP2(ORXREG1, OWREG1),
   2142      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2143 	  ENC(dst, reg, 1)))
   2144 INSN(not, d, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO,
   2145      FIX2(FIX(op, 0xf), FIX(src1, 0x1f)),
   2146      OP2(ORXREG1, OWREG1),
   2147      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2148 	  ENC(dst, reg, 1)))
   2149 
   2150 INSNE(or, d_ui_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0,
   2151       FIX1(FIX(op, 0x2)),
   2152       OP3(ORREG1, ORXREG1, OWREG1),
   2153       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2154 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2155 INSNE(or, d_s5_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0,
   2156       FIX1(FIX(op, 0x3)),
   2157       OP3(OACST, ORXREG1, OWREG1),
   2158       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
   2159 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2160 INSNE(or, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
   2161       FIX1(FIX(op, 0x7f)),
   2162       OP3(ORREG1, ORXREG1, OWREG1),
   2163       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2164 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2165 INSNE(or, l_s5_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
   2166       FIX1(FIX(op, 0x7e)),
   2167       OP3(OACST, ORXREG1, OWREG1),
   2168       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
   2169 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2170 INSNE(or, s_ui_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
   2171       FIX1(FIX(op, 0x1b)),
   2172       OP3(ORREG1, ORXREG1, OWREG1),
   2173       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2174 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2175 INSNE(or, s_s5_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
   2176       FIX1(FIX(op, 0x1a)),
   2177       OP3(OACST, ORXREG1, OWREG1),
   2178       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
   2179 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2180 
   2181 /* 16 bits insn */
   2182 INSN(or, l, l2c, 1cycle, C64XP, 0,
   2183       FIX1(FIX(op, 1)),
   2184       OP3(ORREG1, ORXREG1, OWREG1NORS),
   2185       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2186            ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2187 /**/
   2188 
   2189 INSN(pack2, l, 1_or_2_src, 1cycle, C64X, 0,
   2190      FIX1(FIX(op, 0x0)),
   2191      OP3(ORREG1, ORXREG1, OWREG1),
   2192      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2193 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2194 INSN(pack2, s, ext_1_or_2_src, 1cycle, C64X, 0,
   2195      FIX1(FIX(op, 0xf)),
   2196      OP3(ORREG1, ORXREG1, OWREG1),
   2197      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2198 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2199 
   2200 INSN(packh2, l, 1_or_2_src, 1cycle, C64X, 0,
   2201      FIX1(FIX(op, 0x1e)),
   2202      OP3(ORREG1, ORXREG1, OWREG1),
   2203      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2204 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2205 INSN(packh2, s, 1_or_2_src, 1cycle, C64X, 0,
   2206      FIX1(FIX(op, 0x9)),
   2207      OP3(ORREG1, ORXREG1, OWREG1),
   2208      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2209 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2210 
   2211 INSN(packh4, l, 1_or_2_src, 1cycle, C64X, 0,
   2212      FIX1(FIX(op, 0x69)),
   2213      OP3(ORREG1, ORXREG1, OWREG1),
   2214      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2215 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2216 
   2217 INSN(packhl2, l, 1_or_2_src, 1cycle, C64X, 0,
   2218      FIX1(FIX(op, 0x1c)),
   2219      OP3(ORREG1, ORXREG1, OWREG1),
   2220      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2221 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2222 INSN(packhl2, s, 1_or_2_src, 1cycle, C64X, 0,
   2223      FIX1(FIX(op, 0x8)),
   2224      OP3(ORREG1, ORXREG1, OWREG1),
   2225      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2226 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2227 
   2228 INSN(packlh2, l, 1_or_2_src, 1cycle, C64X, 0,
   2229      FIX1(FIX(op, 0x1b)),
   2230      OP3(ORREG1, ORXREG1, OWREG1),
   2231      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2232 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2233 INSN(packlh2, s, 1_or_2_src, 1cycle, C64X, 0,
   2234      FIX1(FIX(op, 0x10)),
   2235      OP3(ORREG1, ORXREG1, OWREG1),
   2236      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2237 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2238 
   2239 INSN(packl4, l, 1_or_2_src, 1cycle, C64X, 0,
   2240      FIX1(FIX(op, 0x68)),
   2241      OP3(ORREG1, ORXREG1, OWREG1),
   2242      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2243 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2244 
   2245 INSN(rcpdp, s, 1_or_2_src, 2cycle_dp, C67X, TIC6X_FLAG_NO_CROSS,
   2246      FIX2(FIX(op, 0x2d), FIX(x, 0)),
   2247      OP2(ORREGD1, OWREGD12),
   2248      ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0),
   2249 	  ENC(dst, reg, 1)))
   2250 
   2251 INSN(rcpsp, s, 1_or_2_src, 1cycle, C67X, 0,
   2252      FIX2(FIX(op, 0x3d), FIX(src1, 0)),
   2253      OP2(ORXREG1, OWREG1),
   2254      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2255 	  ENC(dst, reg, 1)))
   2256 
   2257 INSN(ret, s, ext_branch_cond_imm, branch, C62X,
   2258      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN,
   2259      FIX0(),
   2260      OP1(OLCST),
   2261      ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
   2262 INSN(ret, s, branch, branch, C62X,
   2263      TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN,
   2264      FIX1(FIX(s, 1)),
   2265      OP1(ORXREG1),
   2266      ENC2(ENC(x, xpath, 0), ENC(src2, reg, 0)))
   2267 INSN(ret, s, b_irp, branch, C62X,
   2268      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN,
   2269      FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
   2270      OP1(ORIRP1),
   2271      ENC0())
   2272 INSN(ret, s, b_nrp, branch, C62X,
   2273      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN,
   2274      FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
   2275      OP1(ORNRP1),
   2276      ENC0())
   2277 
   2278 INSN(retp, s, call_imm_nop, branch, C64XP,
   2279      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN,
   2280      FIX1(FIX(z, 1)),
   2281      OP2(OLCST, OWRETREG1),
   2282      ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
   2283 
   2284 INSN(rint, nfu, rint, 1cycle, C64XP, 0,
   2285      FIX1(FIX(s, 0)),
   2286      OP0(),
   2287      ENC0())
   2288 
   2289 INSNE(rotl, m_ui_xui_ui, m, compound, 1616_m, C64X, 0,
   2290       FIX1(FIX(op, 0x1d)),
   2291       OP3(ORXREG1, ORREG1, OWREG2),
   2292       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2293 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
   2294 INSNE(rotl, m_u5_xui_ui, m, compound, 1616_m, C64X, 0,
   2295       FIX1(FIX(op, 0x1e)),
   2296       OP3(ORXREG1, OACST, OWREG2),
   2297       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2298 	   ENC(src1, ucst, 1), ENC(dst, reg, 2)))
   2299 
   2300 INSN(rpack2, s, ext_1_or_2_src_noncond, 1cycle, C64XP, 0,
   2301      FIX2(FIX(op, 0xb), FIX(z, 1)),
   2302      OP3(ORREG1, ORXREG1, OWREG1),
   2303      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2304 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2305 
   2306 INSN(rsqrdp, s, 1_or_2_src, 2cycle_dp, C67X, TIC6X_FLAG_NO_CROSS,
   2307      FIX2(FIX(op, 0x2e), FIX(x, 0)),
   2308      OP2(ORREGD1, OWREGD12),
   2309      ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0),
   2310 	  ENC(dst, reg, 1)))
   2311 
   2312 INSN(rsqrsp, s, 1_or_2_src, 1cycle, C67X, 0,
   2313      FIX2(FIX(op, 0x3e), FIX(src1, 0)),
   2314      OP2(ORXREG1, OWREG1),
   2315      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2316 	  ENC(dst, reg, 1)))
   2317 
   2318 INSNE(sadd, l_si_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0,
   2319       FIX1(FIX(op, 0x13)),
   2320       OP3(ORREG1, ORXREG1, OWREG1),
   2321       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2322 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2323 INSNE(sadd, l_xsi_sl_sl, l, 1_or_2_src, 1cycle, C62X, 0,
   2324       FIX1(FIX(op, 0x31)),
   2325       OP3(ORXREG1, ORREGL1, OWREGL1),
   2326       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2327 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2328 INSNE(sadd, l_s5_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0,
   2329       FIX1(FIX(op, 0x12)),
   2330       OP3(OACST, ORXREG1, OWREG1),
   2331       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
   2332 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2333 INSNE(sadd, l_s5_sl_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   2334       FIX1(FIX(op, 0x30)),
   2335       OP3(OACST, ORREGL1, OWREGL1),
   2336       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
   2337 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2338 INSNE(sadd, s_si_xsi_si, s, 1_or_2_src, 1cycle, C64X, 0,
   2339       FIX1(FIX(op, 0x20)),
   2340       OP3(ORREG1, ORXREG1, OWREG1),
   2341       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2342 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2343 
   2344 /* 16 bits insn */
   2345 INSN(sadd, l, l3_sat_1, 1cycle, C64XP, 0,
   2346      FIX1(FIX(op, 0)),
   2347      OP3(ORREG1, ORXREG1, OWREG1),
   2348      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2349           ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2350 
   2351 INSN(sadd, s, s3_sat_1, 1cycle, C64XP,0,
   2352      FIX1(FIX(op, 0x0)),
   2353      OP3(ORREG1, ORXREG1, OWREG1),
   2354      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2355           ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2356 /**/
   2357 
   2358 INSN(sadd2, s, ext_1_or_2_src, 1cycle, C64X, 0,
   2359      FIX1(FIX(op, 0x0)),
   2360      OP3(ORREG1, ORXREG1, OWREG1),
   2361      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2362 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2363 
   2364 INSN(saddsub, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
   2365      FIX1(FIX(op, 0x0e)),
   2366      OP3(ORREG1, ORXREG1, OWREGD1),
   2367      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2368 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2369 
   2370 INSN(saddsub2, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
   2371      FIX1(FIX(op, 0x0f)),
   2372      OP3(ORREG1, ORXREG1, OWREGD1),
   2373      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2374 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2375 
   2376 INSN(saddsu2, s, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO,
   2377      FIX1(FIX(op, 0x1)),
   2378      OP3(ORXREG1, ORREG1, OWREG1),
   2379      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2380 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
   2381 
   2382 INSN(saddus2, s, ext_1_or_2_src, 1cycle, C64X, 0,
   2383      FIX1(FIX(op, 0x1)),
   2384      OP3(ORREG1, ORXREG1, OWREG1),
   2385      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2386 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2387 
   2388 INSN(saddu4, s, ext_1_or_2_src, 1cycle, C64X, 0,
   2389      FIX1(FIX(op, 0x3)),
   2390      OP3(ORREG1, ORXREG1, OWREG1),
   2391      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2392 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2393 
   2394 INSN(sat, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   2395      FIX3(FIX(op, 0x40), FIX(x, 0), FIX(src1, 0)),
   2396      OP2(ORREGL1, OWREG1),
   2397      ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
   2398 
   2399 INSN(set, s, field, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   2400      FIX1(FIX(op, 0x2)),
   2401      OP4(ORREG1, OACST, OACST, OWREG1),
   2402      ENC5(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(csta, ucst, 1),
   2403 	  ENC(cstb, ucst, 2), ENC(dst, reg, 3)))
   2404 INSN(set, s, 1_or_2_src, 1cycle, C62X, 0,
   2405      FIX1(FIX(op, 0x3b)),
   2406      OP3(ORXREG1, ORREG1, OWREG1),
   2407      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2408 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
   2409 
   2410 /* 16 bits insn */
   2411 INSN(set, s, sc5, 1cycle, C64XP, 0,
   2412      FIX1(FIX(op, 1)),
   2413      OP4(ORREG1, OACST, OACST, OWREG1),
   2414      ENC5(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(cst, ucst, 1),
   2415           ENC(cst, ucst, 2), ENC(srcdst, reg, 3)))
   2416 /**/
   2417 
   2418 INSN(shfl, m, unary, 1616_m, C64X, 0,
   2419      FIX1(FIX(op, 0x1c)),
   2420      OP2(ORXREG1, OWREG2),
   2421      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2422 	  ENC(dst, reg, 1)))
   2423 
   2424 INSN(shfl3, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
   2425      FIX1(FIX(op, 0x36)),
   2426      OP3(ORREG1, ORXREG1, OWREGD1),
   2427      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2428 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2429 
   2430 INSNE(shl, s_xsi_ui_si, s, 1_or_2_src, 1cycle, C62X, 0,
   2431       FIX1(FIX(op, 0x33)),
   2432       OP3(ORXREG1, ORREG1, OWREG1),
   2433       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2434 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
   2435 INSNE(shl, s_sl_ui_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   2436       FIX2(FIX(op, 0x31), FIX(x, 0)),
   2437       OP3(ORREGL1, ORREG1, OWREGL1),
   2438       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
   2439 	   ENC(dst, reg, 2)))
   2440 INSNE(shl, s_xui_ui_ul, s, 1_or_2_src, 1cycle, C62X, 0,
   2441       FIX1(FIX(op, 0x13)),
   2442       OP3(ORXREG1, ORREG1, OWREGL1),
   2443       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2444 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
   2445 INSNE(shl, s_xsi_u5_si, s, 1_or_2_src, 1cycle, C62X, 0,
   2446       FIX1(FIX(op, 0x32)),
   2447       OP3(ORXREG1, OACST, OWREG1),
   2448       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2449 	   ENC(src1, ucst, 1), ENC(dst, reg, 2)))
   2450 INSNE(shl, s_sl_u5_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   2451       FIX2(FIX(op, 0x30), FIX(x, 0)),
   2452       OP3(ORREGL1, OACST, OWREGL1),
   2453       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
   2454 	   ENC(dst, reg, 2)))
   2455 INSNE(shl, s_xui_u5_ul, s, 1_or_2_src, 1cycle, C62X, 0,
   2456       FIX1(FIX(op, 0x12)),
   2457       OP3(ORXREG1, OACST, OWREGL1),
   2458       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2459 	   ENC(src1, ucst, 1), ENC(dst, reg, 2)))
   2460 
   2461 /* 16bit insn */
   2462 INSN(shl, s, s3i, 1cycle, C64XP, 0,
   2463       FIX1(FIX(op, 0x0)),
   2464       OP3(ORXREG1, OACST, OWREG1),
   2465       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2466            ENC(cst, cst_s3i, 1), ENC(dst, reg, 2)))
   2467 INSN(shl, s, ssh5_sat_x, 1cycle, C64XP,
   2468       TIC6X_FLAG_NO_CROSS,
   2469       FIX1(FIX(op, 0x0)),
   2470       OP3(ORREG1, OACST, OWREG1),
   2471       ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0),
   2472            ENC(cst, ucst, 1),  ENC(srcdst, reg, 2)))
   2473 INSN(shl, s, s2sh, 1cycle, C64XP, 0,
   2474       FIX1(FIX(op, 0x0)),
   2475       OP3(ORREG1, ORREG1, OWREG1),
   2476       ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(src1, reg, 1),
   2477            ENC(srcdst, reg, 2)))
   2478 /**/
   2479 
   2480 INSN(shlmb, l, 1_or_2_src, 1cycle, C64X, 0,
   2481      FIX1(FIX(op, 0x61)),
   2482      OP3(ORREG1, ORXREG1, OWREG1),
   2483      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2484 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2485 INSN(shlmb, s, ext_1_or_2_src, 1cycle, C64X, 0,
   2486      FIX1(FIX(op, 0x9)),
   2487      OP3(ORREG1, ORXREG1, OWREG1),
   2488      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2489 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2490 
   2491 INSNE(shr, s_xsi_ui_si, s, 1_or_2_src, 1cycle, C62X, 0,
   2492       FIX1(FIX(op, 0x37)),
   2493       OP3(ORXREG1, ORREG1, OWREG1),
   2494       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2495 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
   2496 INSNE(shr, s_sl_ui_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   2497       FIX2(FIX(op, 0x35), FIX(x, 0)),
   2498       OP3(ORREGL1, ORREG1, OWREGL1),
   2499       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
   2500 	   ENC(dst, reg, 2)))
   2501 INSNE(shr, s_xsi_u5_si, s, 1_or_2_src, 1cycle, C62X, 0,
   2502       FIX1(FIX(op, 0x36)),
   2503       OP3(ORXREG1, OACST, OWREG1),
   2504       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2505 	   ENC(src1, ucst, 1), ENC(dst, reg, 2)))
   2506 INSNE(shr, s_sl_u5_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   2507       FIX2(FIX(op, 0x34), FIX(x, 0)),
   2508       OP3(ORREGL1, OACST, OWREGL1),
   2509       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
   2510 	   ENC(dst, reg, 2)))
   2511 
   2512 /* 16bit insn */
   2513 INSN(shr, s, s3i, 1cycle, C64XP, 0,
   2514       FIX1(FIX(op, 0x1)),
   2515       OP3(ORXREG1, OACST, OWREG1),
   2516       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2517            ENC(cst, cst_s3i, 1), ENC(dst, reg, 2)))
   2518 INSN(shr, s, ssh5_sat_x, 1cycle, C64XP,
   2519       TIC6X_FLAG_NO_CROSS,
   2520       FIX1(FIX(op, 0x1)),
   2521       OP3(ORREG1, OACST, OWREG1),
   2522       ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0),
   2523            ENC(cst, ucst, 1),  ENC(srcdst, reg, 2)))
   2524 INSN(shr, s, s2sh, 1cycle, C64XP, 0,
   2525       FIX1(FIX(op, 0x1)),
   2526       OP3(ORREG1, ORREG1, OWREG1),
   2527       ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(src1, reg, 1),
   2528            ENC(srcdst, reg, 2)))
   2529 /**/
   2530 
   2531 INSNE(shr2, s_xs2_ui_s2, s, ext_1_or_2_src, 1cycle, C64X, 0,
   2532       FIX1(FIX(op, 0x7)),
   2533       OP3(ORXREG1, ORREG1, OWREG1),
   2534       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2535 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
   2536 INSNE(shr2, s_xs2_u5_s2, s, 1_or_2_src, 1cycle, C64X, 0,
   2537       FIX1(FIX(op, 0x18)),
   2538       OP3(ORXREG1, OACST, OWREG1),
   2539       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2540 	   ENC(src1, ucst, 1), ENC(dst, reg, 2)))
   2541 
   2542 INSN(shrmb, l, 1_or_2_src, 1cycle, C64X, 0,
   2543      FIX1(FIX(op, 0x62)),
   2544      OP3(ORREG1, ORXREG1, OWREG1),
   2545      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2546 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2547 INSN(shrmb, s, ext_1_or_2_src, 1cycle, C64X, 0,
   2548      FIX1(FIX(op, 0xa)),
   2549      OP3(ORREG1, ORXREG1, OWREG1),
   2550      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2551 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2552 
   2553 INSNE(shru, s_xui_ui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
   2554       FIX1(FIX(op, 0x27)),
   2555       OP3(ORXREG1, ORREG1, OWREG1),
   2556       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2557 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
   2558 INSNE(shru, s_ul_ui_ul, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   2559       FIX2(FIX(op, 0x25), FIX(x, 0)),
   2560       OP3(ORREGL1, ORREG1, OWREGL1),
   2561       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
   2562 	   ENC(dst, reg, 2)))
   2563 INSNE(shru, s_xui_u5_ui, s, 1_or_2_src, 1cycle, C62X, 0,
   2564       FIX1(FIX(op, 0x26)),
   2565       OP3(ORXREG1, OACST, OWREG1),
   2566       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2567 	   ENC(src1, ucst, 1), ENC(dst, reg, 2)))
   2568 INSNE(shru, s_ul_u5_ul, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   2569       FIX2(FIX(op, 0x24), FIX(x, 0)),
   2570       OP3(ORREGL1, OACST, OWREGL1),
   2571       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
   2572 	   ENC(dst, reg, 2)))
   2573 
   2574 /* 16 bits insn */
   2575 INSN(shru, s, ssh5_sat_0, 1cycle, C64XP,
   2576       TIC6X_FLAG_NO_CROSS,
   2577       FIX1(FIX(op, 0x2)),
   2578       OP3(ORREG1, OACST, OWREG1),
   2579       ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0),
   2580            ENC(cst, ucst, 1),  ENC(srcdst, reg, 2)))
   2581 INSN(shru, s, s2sh, 1cycle, C64XP, 0,
   2582       FIX1(FIX(op, 0x2)),
   2583       OP3(ORREG1, ORREG1, OWREG1),
   2584       ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(src1, reg, 1),
   2585            ENC(srcdst, reg, 2)))
   2586 /**/
   2587 
   2588 INSNE(shru2, s_xu2_ui_u2, s, ext_1_or_2_src, 1cycle, C64X, 0,
   2589       FIX1(FIX(op, 0x8)),
   2590       OP3(ORXREG1, ORREG1, OWREG1),
   2591       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2592 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
   2593 INSNE(shru2, s_xu2_u5_u2, s, 1_or_2_src, 1cycle, C64X, 0,
   2594       FIX1(FIX(op, 0x19)),
   2595       OP3(ORXREG1, OACST, OWREG1),
   2596       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2597 	   ENC(src1, ucst, 1), ENC(dst, reg, 2)))
   2598 
   2599 INSN(sl, d, 1_or_2_src, store, C64XP,
   2600      TIC6X_FLAG_STORE|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_SIDE_T2_ONLY|TIC6X_FLAG_NO_CROSS,
   2601      FIX3(FIX(s, 1), FIX(op, 0xd), FIX(src1, 0)),
   2602      OP2(ORDREG1, OWMEMDW),
   2603      ENC2(ENC(dst, reg, 0), ENC(src2, reg, 1)))
   2604 
   2605 INSN(smpy, m, mpy, 1616_m, C62X, 0,
   2606      FIX1(FIX(op, 0x1a)),
   2607      OP3(ORREG1, ORXREG1, OWREG2),
   2608      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2609 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2610 
   2611 /* 16 bits insn */
   2612 INSN(smpy, m, m3_sat_1, 1616_m, C67X, 0,
   2613       FIX1(FIX(op, 0x0)),
   2614       OP3(ORREG1, ORXREG1, OWREG2),
   2615       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2616            ENC(src2, reg, 1), ENC(dst, reg_shift, 2)))
   2617 /**/
   2618 
   2619 INSN(smpyh, m, mpy, 1616_m, C62X, 0,
   2620      FIX1(FIX(op, 0x02)),
   2621      OP3(ORREG1, ORXREG1, OWREG2),
   2622      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2623 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2624 
   2625 /* 16 bits insn */
   2626 INSN(smpyh, m, m3_sat_1, 1616_m, C67X, 0,
   2627       FIX1(FIX(op, 0x1)),
   2628       OP3(ORREG1, ORXREG1, OWREG2),
   2629       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2630            ENC(src2, reg, 1), ENC(dst, reg_shift, 2)))
   2631 /**/
   2632 
   2633 INSN(smpyhl, m, mpy, 1616_m, C62X, 0,
   2634      FIX1(FIX(op, 0x0a)),
   2635      OP3(ORREG1, ORXREG1, OWREG2),
   2636      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2637 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2638 
   2639 /* 16 bits insn */
   2640 INSN(smpyhl, m, m3_sat_1, 1616_m, C67X, 0,
   2641       FIX1(FIX(op, 0x3)),
   2642       OP3(ORREG1, ORXREG1, OWREG2),
   2643       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2644            ENC(src2, reg, 1), ENC(dst, reg_shift, 2)))
   2645 /**/
   2646 
   2647 INSN(smpylh, m, mpy, 1616_m, C62X, 0,
   2648      FIX1(FIX(op, 0x12)),
   2649      OP3(ORREG1, ORXREG1, OWREG2),
   2650      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2651 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2652 
   2653 /* 16 bits insn */
   2654 INSN(smpylh, m, m3_sat_1, 1616_m, C67X, 0,
   2655       FIX1(FIX(op, 0x2)),
   2656       OP3(ORREG1, ORXREG1, OWREG2),
   2657       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2658            ENC(src2, reg, 1), ENC(dst, reg_shift, 2)))
   2659 /**/
   2660 
   2661 INSN(smpy2, m, compound, 4cycle, C64X, 0,
   2662      FIX1(FIX(op, 0x01)),
   2663      OP3(ORREG1, ORXREG1, OWREGD4),
   2664      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2665 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2666 
   2667 /* Contrary to SPRUFE8, this is the correct operand order for this
   2668    instruction.  */
   2669 INSN(smpy32, m, 1_or_2_src, 4cycle, C64XP, 0,
   2670      FIX1(FIX(op, 0x19)),
   2671      OP3(ORREG1, ORXREG1, OWREG4),
   2672      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2673 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2674 
   2675 INSN(spack2, s, ext_1_or_2_src, 1cycle, C64X, 0,
   2676      FIX1(FIX(op, 0x2)),
   2677      OP3(ORREG1, ORXREG1, OWREG1),
   2678      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2679 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2680 
   2681 INSN(spacku4, s, ext_1_or_2_src, 1cycle, C64X, 0,
   2682      FIX1(FIX(op, 0x4)),
   2683      OP3(ORREG1, ORXREG1, OWREG1),
   2684      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2685 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2686 
   2687 INSN(spdp, s, 1_or_2_src, 2cycle_dp, C67X, 0,
   2688      FIX2(FIX(op, 0x02), FIX(src1, 0)),
   2689      OP2(ORXREG1, OWREGD12),
   2690      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2691 	  ENC(dst, reg, 1)))
   2692 
   2693 INSN(spint, l, 1_or_2_src, 4cycle, C67X, 0,
   2694      FIX2(FIX(op, 0x0a), FIX(src1, 0)),
   2695      OP2(ORXREG1, OWREG4),
   2696      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2697 	  ENC(dst, reg, 1)))
   2698 
   2699 INSNE(spkernel, nfu_2, nfu, spkernel, 1cycle, C64XP,
   2700       TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPKERNEL,
   2701       FIX1(FIX(s, 0)),
   2702       OP2(OACST, OACST),
   2703       ENC2(ENC(fstgfcyc, fstg, 0), ENC(fstgfcyc, fcyc, 1)))
   2704 INSNE(spkernel, nfu_0, nfu, spkernel, 1cycle, C64XP,
   2705       TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPKERNEL|TIC6X_FLAG_MACRO,
   2706       FIX2(FIX(s, 0), FIX(fstgfcyc, 0)),
   2707       OP0(),
   2708       ENC0())
   2709 
   2710 /* 16 bits insn */
   2711 INSN(spkernel, nfu, uspk, 1cycle, C64XP,
   2712       TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPKERNEL,
   2713       FIX0(),
   2714       OP2(OACST, OACST),
   2715       ENC2(ENC(fstgfcyc, fstg, 0), ENC(fstgfcyc, fcyc, 1)))
   2716 /**/
   2717 
   2718 INSN(spkernelr, nfu, spkernelr, 1cycle, C64XP,
   2719      TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPKERNEL,
   2720      FIX1(FIX(s, 0)),
   2721      OP0(),
   2722      ENC0())
   2723 
   2724 INSN(sploop, nfu, loop_buffer, 1cycle, C64XP,
   2725      TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP,
   2726      FIX4(FIX(s, 0), FIX(op, 0xc), FIX(csta, 0), RAN(cstb, 0, 13)),
   2727      OP1(OACST),
   2728      ENC1(ENC(cstb, ucst_minus_one, 0)))
   2729 
   2730 INSN(sploopd, nfu, loop_buffer, 1cycle, C64XP,
   2731      TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP,
   2732      FIX4(FIX(s, 0), FIX(op, 0xd), FIX(csta, 0), RAN(cstb, 0, 13)),
   2733      OP1(OACST),
   2734      ENC1(ENC(cstb, ucst_minus_one, 0)))
   2735 
   2736 INSN(sploopw, nfu, loop_buffer, 1cycle, C64XP,
   2737      TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP,
   2738      FIX4(FIX(s, 0), FIX(op, 0xf), FIX(csta, 0), RAN(cstb, 0, 13)),
   2739      OP1(OACST),
   2740      ENC1(ENC(cstb, ucst_minus_one, 0)))
   2741 
   2742 /* 16 bits insn */
   2743 INSN(sploop, nfu, uspl, 1cycle, C64XP,
   2744      TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP,
   2745      FIX1(FIX(op, 0)),
   2746      OP1(OACST),
   2747      ENC1(ENC(ii, ucst_minus_one, 0)))
   2748 
   2749 INSN(sploopd, nfu, uspl, 1cycle, C64XP,
   2750      TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP,
   2751      FIX1(FIX(op, 1)),
   2752      OP1(OACST),
   2753      ENC1(ENC(ii, ucst_minus_one, 0)))
   2754 
   2755 INSN(sploopd, nfu, uspldr, 1cycle, C64XP,
   2756      TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP|TIC6X_FLAG_INSN16_SPRED,
   2757      FIX0(),
   2758      OP1(OACST),
   2759      ENC1(ENC(ii, ucst_minus_one, 0)))
   2760 /**/
   2761 
   2762 
   2763 /* Contrary to SPRUFE8, this is the correct encoding for this
   2764    instruction.  */
   2765 INSN(spmask, nfu, spmask, 1cycle, C64XP, TIC6X_FLAG_FIRST|TIC6X_FLAG_SPMASK,
   2766      FIX2(FIX(s, 0), FIX(op, 0x8)),
   2767      OP1(OFULIST),
   2768      ENC1(ENC(mask, spmask, 0)))
   2769 
   2770 /* 16 bits insn */
   2771 INSN(spmask, nfu, uspma, 1cycle, C64XP, TIC6X_FLAG_FIRST|TIC6X_FLAG_SPMASK,
   2772      FIX0(),
   2773      OP1(OFULIST),
   2774      ENC1(ENC(mask, spmask, 0)))
   2775 /**/
   2776 
   2777 INSN(spmaskr, nfu, spmask, 1cycle, C64XP, TIC6X_FLAG_FIRST|TIC6X_FLAG_SPMASK,
   2778      FIX2(FIX(s, 0), FIX(op, 0x9)),
   2779      OP1(OFULIST),
   2780      ENC1(ENC(mask, spmask, 0)))
   2781 
   2782 /* 16 bits insn */
   2783 INSN(spmaskr, nfu, uspmb, 1cycle, C64XP, TIC6X_FLAG_FIRST|TIC6X_FLAG_SPMASK,
   2784      FIX0(),
   2785      OP1(OFULIST),
   2786      ENC1(ENC(mask, spmask, 0)))
   2787 /**/
   2788 
   2789 INSN(sptrunc, l, 1_or_2_src, 4cycle, C67X, 0,
   2790      FIX2(FIX(op, 0x0b), FIX(src1, 0)),
   2791      OP2(ORXREG1, OWREG4),
   2792      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2793 	  ENC(dst, reg, 1)))
   2794 
   2795 INSNE(sshl, s_xsi_ui_si, s, 1_or_2_src, 1cycle, C62X, 0,
   2796       FIX1(FIX(op, 0x23)),
   2797       OP3(ORXREG1, ORREG1, OWREG1),
   2798       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2799 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
   2800 INSNE(sshl, s_xsi_u5_si, s, 1_or_2_src, 1cycle, C62X, 0,
   2801       FIX1(FIX(op, 0x22)),
   2802       OP3(ORXREG1, OACST, OWREG1),
   2803       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2804 	   ENC(src1, ucst, 1), ENC(dst, reg, 2)))
   2805 
   2806 /* 16 bits insn */
   2807 INSN(sshl, s, ssh5_sat_1, 1cycle, C64XP,
   2808       TIC6X_FLAG_NO_CROSS,
   2809       FIX1(FIX(op, 0x2)),
   2810       OP3(ORREG1, OACST, OWREG1),
   2811       ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0),
   2812            ENC(cst, ucst, 1),  ENC(srcdst, reg, 2)))
   2813 INSN(sshl, s, s2sh, 1cycle, C64XP, 0,
   2814       FIX1(FIX(op, 0x3)),
   2815       OP3(ORREG1, ORREG1, OWREG1),
   2816       ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(src1, reg, 1),
   2817            ENC(srcdst, reg, 2)))
   2818 /**/
   2819 
   2820 INSN(sshvl, m, compound, 1616_m, C64X, 0,
   2821      FIX1(FIX(op, 0x1c)),
   2822      OP3(ORXREG1, ORREG1, OWREG2),
   2823      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2824 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
   2825 
   2826 /* Contrary to SPRUFE8, this is the correct encoding for this
   2827    instruction.  */
   2828 INSN(sshvr, m, compound, 1616_m, C64X, 0,
   2829      FIX1(FIX(op, 0x1a)),
   2830      OP3(ORXREG1, ORREG1, OWREG2),
   2831      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   2832 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
   2833 
   2834 INSNE(ssub, l_si_xsi_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
   2835       FIX1(FIX(op, 0x0f)),
   2836       OP3(ORREG1, ORXREG1, OWREG1),
   2837       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2838 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2839 INSNE(ssub, l_xsi_si_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0),
   2840       FIX1(FIX(op, 0x1f)),
   2841       OP3(ORXREG1, ORREG1, OWREG1),
   2842       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2843 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2844 INSNE(ssub, l_s5_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0,
   2845       FIX1(FIX(op, 0x0e)),
   2846       OP3(OACST, ORXREG1, OWREG1),
   2847       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
   2848 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2849 INSNE(ssub, l_s5_sl_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   2850       FIX1(FIX(op, 0x2c)),
   2851       OP3(OACST, ORREGL1, OWREGL1),
   2852       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
   2853 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2854 
   2855 /* 16 bits insn */
   2856 INSN(ssub, l, l3_sat_1, 1cycle, C64XP, 0,
   2857      FIX1(FIX(op, 1)),
   2858      OP3(ORREG1, ORXREG1, OWREG1),
   2859      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2860           ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2861 /**/
   2862 
   2863 INSN(ssub2, l, 1_or_2_src, 1cycle, C64XP, 0,
   2864      FIX1(FIX(op, 0x64)),
   2865      OP3(ORREG1, ORXREG1, OWREG1),
   2866      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   2867 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   2868 
   2869 INSN(stb, d, load_store, store, C62X,
   2870      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
   2871      FIX2(FIX(op, 3), FIX(r, 0)),
   2872      OP2(ORDREG1, OWMEMSB),
   2873      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1),
   2874 	  ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1),
   2875 	  ENC(srcdst, reg, 0)))
   2876 INSN(stb, d, load_store_long, store, C62X,
   2877      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
   2878      FIX1(FIX(op, 3)),
   2879      OP2(ORDREG1, OWMEMLB),
   2880      ENC4(ENC(s, data_fu, 0), ENC(y, areg, 1), ENC(offsetR, ulcst_dpr_byte, 1),
   2881 	  ENC(dst, reg, 0)))
   2882 
   2883 /* 16 bits insn */
   2884 INSN(stb, d, doff4_dsz_000, store, C64XP,
   2885      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
   2886      FIX2(FIX(op, 0), FIX(sz, 1)),
   2887      OP2(ORTREG1, OWMEMSB),
   2888      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   2889           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1)))
   2890 INSN(stb, d, doff4_dsz_x01, store, C64XP,
   2891      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
   2892      FIX2(FIX(op, 0), FIX(sz, 1)),
   2893      OP2(ORTREG1, OWMEMSB),
   2894      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   2895           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1)))
   2896 INSN(stb, d, dind_dsz_000, store, C64XP,
   2897      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
   2898      FIX2(FIX(op, 0), FIX(sz, 1)),
   2899      OP2(ORTREG1, OWMEMSB),
   2900      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset, 1),
   2901           ENC(ptr, reg_ptr, 1), ENC(srcdst, reg, 0)))
   2902 INSN(stb, d, dind_dsz_x01, store, C64XP,
   2903      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
   2904      FIX2(FIX(op, 0), FIX(sz, 1)),
   2905      OP2(ORTREG1, OWMEMSB),
   2906      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset, 1),
   2907           ENC(ptr, reg_ptr, 1), ENC(srcdst, reg, 0)))
   2908 INSN(stb, d, dinc_dsz_000, store, C64XP,
   2909      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
   2910      FIX2(FIX(op, 0), FIX(sz, 1)),
   2911      OP2(ORTREG1, OWMEMSB),
   2912      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   2913           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
   2914 INSN(stb, d, dinc_dsz_x01, store, C64XP,
   2915      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
   2916      FIX2(FIX(op, 0), FIX(sz, 1)),
   2917      OP2(ORTREG1, OWMEMSB),
   2918      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   2919           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
   2920 INSN(stb, d, ddec_dsz_000, store, C64XP,
   2921      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
   2922      FIX2(FIX(op, 0), FIX(sz, 1)),
   2923      OP2(ORTREG1, OWMEMSB),
   2924      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   2925           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
   2926 INSN(stb, d, ddec_dsz_x01, store, C64XP,
   2927      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
   2928      FIX2(FIX(op, 0), FIX(sz, 1)),
   2929      OP2(ORTREG1, OWMEMSB),
   2930      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   2931           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
   2932 /**/
   2933 
   2934 INSN(stdw, d, load_store, store, C64X, TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS,
   2935      FIX2(FIX(op, 4), FIX(r, 1)),
   2936      OP2(ORDREGD1, OWMEMSD),
   2937      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1),
   2938 	  ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1),
   2939 	  ENC(srcdst, reg, 0)))
   2940 
   2941 /* 16 bits insn */
   2942 INSN(stdw, d, dpp, store, C64XP,
   2943      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTDECR)|TIC6X_FLAG_INSN16_B15PTR|TIC6X_FLAG_INSN16_NORS,
   2944      FIX3(FIX(op, 0), FIX(dw, 1), FIX(s, 1)),
   2945      OP2(ORTREGD1, OWMEMSD),
   2946      ENC4(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   2947 	  ENC(cst, mem_offset_minus_one, 1)))
   2948 INSN(stdw, d, ddecdw, store, C64XP,
   2949      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
   2950      FIX3(FIX(op, 0), FIX(na, 0), FIX(sz, 0)),
   2951      OP2(ORTREGD1, OWMEMSD),
   2952      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 0),
   2953           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
   2954 INSN(stdw, d, dincdw, store, C64XP,
   2955      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
   2956      FIX3(FIX(op, 0), FIX(na, 0), FIX(sz, 0)),
   2957      OP2(ORTREGD1, OWMEMSD),
   2958      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 0),
   2959           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
   2960 INSN(stdw, d, dinddw, store, C64XP,
   2961      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
   2962      FIX3(FIX(op, 0), FIX(na, 0), FIX(sz, 0)),
   2963      OP2(ORTREGD1, OWMEMSD),
   2964      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset, 1),
   2965           ENC(ptr, reg_ptr, 1), ENC(srcdst, reg_shift, 0)))
   2966 INSN(stdw, d, doff4dw, store, C64XP,
   2967      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
   2968      FIX3(FIX(op, 0), FIX(na, 0), FIX(sz, 0)),
   2969      OP2(ORTREGD1, OWMEMSD),
   2970      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset, 1),
   2971           ENC(ptr, reg_ptr, 1), ENC(srcdst, reg_shift, 0)))
   2972 /**/
   2973 
   2974 INSN(sth, d, load_store, store, C62X,
   2975      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
   2976      FIX2(FIX(op, 5), FIX(r, 0)),
   2977      OP2(ORDREG1, OWMEMSH),
   2978      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1),
   2979 	  ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1),
   2980 	  ENC(srcdst, reg, 0)))
   2981 INSN(sth, d, load_store_long, store, C62X,
   2982      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
   2983      FIX1(FIX(op, 5)),
   2984      OP2(ORDREG1, OWMEMLH),
   2985      ENC4(ENC(s, data_fu, 0), ENC(y, areg, 1), ENC(offsetR, ulcst_dpr_half, 1),
   2986 	  ENC(dst, reg, 0)))
   2987 
   2988 /* 16 bits insn */
   2989 INSN(sth, d, doff4_dsz_01x, store, C64XP,
   2990      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
   2991      FIX2(FIX(op, 0), FIX(sz, 1)),
   2992      OP2(ORTREG1, OWMEMSH),
   2993      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   2994           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1)))
   2995 INSN(sth, d, doff4_dsz_111, store, C64XP,
   2996      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
   2997      FIX2(FIX(op, 0), FIX(sz, 1)),
   2998      OP2(ORTREG1, OWMEMSH),
   2999      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3000           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1)))
   3001 INSN(sth, d, dind_dsz_01x, store, C64XP,
   3002      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
   3003      FIX2(FIX(op, 0), FIX(sz, 1)),
   3004      OP2(ORTREG1, OWMEMSH),
   3005      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3006           ENC(ptr, reg_ptr, 1), ENC(src1, mem_offset, 1)))
   3007 INSN(sth, d, dind_dsz_111, store, C64XP,
   3008      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
   3009      FIX2(FIX(op, 0), FIX(sz, 1)),
   3010      OP2(ORTREG1, OWMEMSH),
   3011      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3012           ENC(ptr, reg_ptr, 1), ENC(src1, mem_offset, 1)))
   3013 INSN(sth, d, dinc_dsz_01x, store, C64XP,
   3014      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
   3015      FIX2(FIX(op, 0), FIX(sz, 1)),
   3016      OP2(ORTREG1, OWMEMSH),
   3017      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3018           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
   3019 INSN(sth, d, dinc_dsz_111, store, C64XP,
   3020      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
   3021      FIX2(FIX(op, 0), FIX(sz, 1)),
   3022      OP2(ORTREG1, OWMEMSH),
   3023      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3024           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
   3025 INSN(sth, d, ddec_dsz_01x, store, C64XP,
   3026      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
   3027      FIX2(FIX(op, 0), FIX(sz, 1)),
   3028      OP2(ORTREG1, OWMEMSH),
   3029      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3030           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
   3031 INSN(sth, d, ddec_dsz_111, store, C64XP,
   3032      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
   3033      FIX2(FIX(op, 0), FIX(sz, 1)),
   3034      OP2(ORTREG1, OWMEMSH),
   3035      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3036           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
   3037 /**/
   3038 
   3039 INSN(stndw, d, store_nonaligned, store, C64X,
   3040      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED,
   3041      FIX0(),
   3042      OP2(ORDREGD1, OWMEMND),
   3043      ENC7(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1),
   3044 	  ENC(offsetR, mem_offset_noscale, 1), ENC(baseR, reg, 1),
   3045 	  ENC(sc, scaled, 1), ENC(src, reg_shift, 0)))
   3046 
   3047 /* 16 bits insn */
   3048 INSN(stndw, d, ddecdw, store, C64XP,
   3049      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
   3050      FIX3(FIX(op, 0), FIX(na, 1), FIX(sz, 0)),
   3051      OP2(ORTREGD1, OWMEMND),
   3052      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 0),
   3053           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one_noscale, 1)))
   3054 INSN(stndw, d, dincdw, store, C64XP,
   3055      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
   3056      FIX3(FIX(op, 0), FIX(na, 1), FIX(sz, 0)),
   3057      OP2(ORTREGD1, OWMEMND),
   3058      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 0),
   3059           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one_noscale, 1)))
   3060 INSN(stndw, d, dinddw, store, C64XP,
   3061      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
   3062      FIX3(FIX(op, 0), FIX(na, 1), FIX(sz, 0)),
   3063      OP2(ORTREGD1, OWMEMND),
   3064      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset_noscale, 1),
   3065           ENC(ptr, reg_ptr, 1), ENC(srcdst, reg_shift, 0)))
   3066 INSN(stndw, d, doff4dw, store, C64XP,
   3067      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
   3068      FIX3(FIX(op, 0), FIX(na, 1), FIX(sz, 0)),
   3069      OP2(ORTREGD1, OWMEMND),
   3070      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset_noscale, 1),
   3071           ENC(ptr, reg_ptr, 1), ENC(srcdst, reg_shift, 0)))
   3072 /**/
   3073 
   3074 INSN(stnw, d, load_store, store, C64X,
   3075      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED,
   3076      FIX2(FIX(op, 5), FIX(r, 1)),
   3077      OP2(ORDREG1, OWMEMSW),
   3078      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1),
   3079 	  ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1),
   3080 	  ENC(srcdst, reg, 0)))
   3081 
   3082 /* 16 bits insn */
   3083 INSN(stnw, d, doff4_dsz_110, store, C64XP,
   3084      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
   3085      FIX2(FIX(op, 0), FIX(sz, 1)),
   3086      OP2(ORTREG1, OWMEMSW),
   3087      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3088           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1)))
   3089 INSN(stnw, d, dind_dsz_110, store, C64XP,
   3090      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
   3091      FIX2(FIX(op, 0), FIX(sz, 1)),
   3092      OP2(ORTREG1, OWMEMSW),
   3093      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3094           ENC(ptr, reg_ptr, 1), ENC(src1, mem_offset, 1)))
   3095 INSN(stnw, d, dinc_dsz_110, store, C64XP,
   3096      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
   3097      FIX2(FIX(op, 0), FIX(sz, 1)),
   3098      OP2(ORTREG1, OWMEMSW),
   3099      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3100           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
   3101 INSN(stnw, d, ddec_dsz_110, store, C64XP,
   3102      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
   3103      FIX2(FIX(op, 0), FIX(sz, 1)),
   3104      OP2(ORTREG1, OWMEMSW),
   3105      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3106           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
   3107 /**/
   3108 
   3109 INSN(stw, d, load_store, store, C62X,
   3110      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
   3111      FIX2(FIX(op, 7), FIX(r, 0)),
   3112      OP2(ORDREG1, OWMEMSW),
   3113      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1),
   3114 	  ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1),
   3115 	  ENC(srcdst, reg, 0)))
   3116 INSN(stw, d, load_store_long, store, C62X,
   3117      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
   3118      FIX1(FIX(op, 7)),
   3119      OP2(ORDREG1, OWMEMLW),
   3120      ENC4(ENC(s, data_fu, 0), ENC(y, areg, 1), ENC(offsetR, ulcst_dpr_word, 1),
   3121 	  ENC(dst, reg, 0)))
   3122 
   3123 /* 16 bits insn */
   3124 INSN(stw, d, doff4_dsz_0xx, store, C64XP,
   3125      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
   3126      FIX2(FIX(op, 0), FIX(sz, 0)),
   3127      OP2(ORTREG1, OWMEMSW),
   3128      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3129           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1)))
   3130 INSN(stw, d, doff4_dsz_100, store, C64XP,
   3131      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
   3132      FIX2(FIX(op, 0), FIX(sz, 1)),
   3133      OP2(ORTREG1, OWMEMSW),
   3134      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3135           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1)))
   3136 INSN(stw, d, dind_dsz_0xx, store, C64XP,
   3137      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
   3138      FIX2(FIX(op, 0), FIX(sz, 0)),
   3139      OP2(ORTREG1, OWMEMSW),
   3140      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3141           ENC(ptr, reg_ptr, 1), ENC(src1, mem_offset, 1)))
   3142 INSN(stw, d, dind_dsz_100, store, C64XP,
   3143      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
   3144      FIX2(FIX(op, 0), FIX(sz, 1)),
   3145      OP2(ORTREG1, OWMEMSW),
   3146      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3147           ENC(ptr, reg_ptr, 1), ENC(src1, mem_offset, 1)))
   3148 INSN(stw, d, dinc_dsz_0xx, store, C64XP,
   3149      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
   3150      FIX2(FIX(op, 0), FIX(sz, 0)),
   3151      OP2(ORTREG1, OWMEMSW),
   3152      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3153           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
   3154 INSN(stw, d, dinc_dsz_100, store, C64XP,
   3155      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
   3156      FIX2(FIX(op, 0), FIX(sz, 1)),
   3157      OP2(ORTREG1, OWMEMSW),
   3158      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3159           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
   3160 INSN(stw, d, ddec_dsz_0xx, store, C64XP,
   3161      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
   3162      FIX2(FIX(op, 0), FIX(sz, 0)),
   3163      OP2(ORTREG1, OWMEMSW),
   3164      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3165           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
   3166 INSN(stw, d, ddec_dsz_100, store, C64XP,
   3167      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
   3168      FIX2(FIX(op, 0), FIX(sz, 1)),
   3169      OP2(ORTREG1, OWMEMSW),
   3170      ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3171           ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
   3172 INSN(stw, d, dpp, store, C64XP,
   3173      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTDECR)|TIC6X_FLAG_INSN16_B15PTR|TIC6X_FLAG_INSN16_NORS,
   3174      FIX2(FIX(op, 0), FIX(dw, 0)),
   3175      OP2(ORTREG1, OWMEMSW),
   3176      ENC4(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3177 	  ENC(cst, mem_offset_minus_one, 1)))
   3178 INSN(stw, d, dstk, store, C64XP,
   3179      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE)|TIC6X_FLAG_INSN16_B15PTR,
   3180      FIX2(FIX(op, 0x0), FIX(s, 1)),
   3181      OP2(ORTREG1, OWMEMSW),
   3182      ENC4(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
   3183 	  ENC(cst, mem_offset, 1)))
   3184 /**/
   3185 
   3186 INSNE(sub, l_si_xsi_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
   3187       FIX1(FIX(op, 0x07)),
   3188       OP3(ORREG1, ORXREG1, OWREG1),
   3189       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3190 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3191 INSNE(sub, l_xsi_si_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0),
   3192       FIX1(FIX(op, 0x17)),
   3193       OP3(ORXREG1, ORREG1, OWREG1),
   3194       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3195 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3196 INSNE(sub, l_si_xsi_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
   3197       FIX1(FIX(op, 0x27)),
   3198       OP3(ORREG1, ORXREG1, OWREGL1),
   3199       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3200 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3201 INSNE(sub, l_xsi_si_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0),
   3202       FIX1(FIX(op, 0x37)),
   3203       OP3(ORXREG1, ORREG1, OWREGL1),
   3204       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3205 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3206 INSNE(sub, l_s5_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0,
   3207       FIX1(FIX(op, 0x06)),
   3208       OP3(OACST, ORXREG1, OWREG1),
   3209       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
   3210 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3211 INSNE(sub, l_s5_sl_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   3212       FIX1(FIX(op, 0x24)),
   3213       OP3(OACST, ORREGL1, OWREGL1),
   3214       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
   3215 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3216 INSNE(sub, l_xsi_s5_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
   3217       FIX1(FIX(op, 0x2)),
   3218       OP3(ORXREG1, OACST, OWREG1),
   3219       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst_negate, 1),
   3220 	   ENC(src2, reg, 0), ENC(dst, reg, 2)))
   3221 INSNE(sub, l_sl_s5_sl, l, 1_or_2_src, 1cycle, C62X,
   3222       TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS,
   3223       FIX2(FIX(op, 0x20), FIX(x, 0)),
   3224       OP3(ORREGL1, OACST, OWREGL1),
   3225       ENC4(ENC(s, fu, 0), ENC(src1, scst_negate, 1), ENC(src2, reg, 0),
   3226 	   ENC(dst, reg, 2)))
   3227 INSNE(sub, s_si_xsi_si, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
   3228       FIX1(FIX(op, 0x17)),
   3229       OP3(ORREG1, ORXREG1, OWREG1),
   3230       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3231 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3232 INSNE(sub, s_s5_xsi_si, s, 1_or_2_src, 1cycle, C62X, 0,
   3233       FIX1(FIX(op, 0x16)),
   3234       OP3(OACST, ORXREG1, OWREG1),
   3235       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
   3236 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3237 /* Contrary to SPRUFE8, this is the correct encoding for this
   3238    instruction; this instruction can be predicated.  */
   3239 INSNE(sub, s_xsi_si_si, s, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_PREFER(0),
   3240       FIX1(FIX(op, 0x5)),
   3241       OP3(ORXREG1, ORREG1, OWREG1),
   3242       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   3243 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
   3244 INSNE(sub, s_xsi_s5_si, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
   3245       FIX1(FIX(op, 0x6)),
   3246       OP3(ORXREG1, OACST, OWREG1),
   3247       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst_negate, 1),
   3248 	   ENC(src2, reg, 0), ENC(dst, reg, 2)))
   3249 INSNE(sub, d_si_si_si, d, 1_or_2_src, 1cycle, C62X,
   3250       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
   3251       FIX1(FIX(op, 0x11)),
   3252       OP3(ORREG1, ORREG1, OWREG1),
   3253       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
   3254 	   ENC(dst, reg, 2)))
   3255 INSNE(sub, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   3256       FIX1(FIX(op, 0x13)),
   3257       OP3(ORREG1, OACST, OWREG1),
   3258       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
   3259 	   ENC(dst, reg, 2)))
   3260 INSNE(sub, d_si_xsi_si, d, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_PREFER(0),
   3261       FIX1(FIX(op, 0xc)),
   3262       OP3(ORREG1, ORXREG1, OWREG1),
   3263       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3264 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3265 
   3266 /* 16 bits insn */
   3267 INSN(sub, l, l3_sat_0, 1cycle, C64XP, 0,
   3268      FIX1(FIX(op, 0x1)),
   3269      OP3(ORREG1, ORXREG1, OWREG1),
   3270      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3271           ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3272 INSN(sub, l, lx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
   3273      FIX1(FIX(op, 0x2)),
   3274      OP3(OHWCST0, ORREG1, OWREG1),
   3275      ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 1), ENC(srcdst, reg, 2)))
   3276 INSN(sub, s, sx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
   3277       FIX1(FIX(op, 0x2)),
   3278       OP3(OHWCST0, ORREG1, OWREG1),
   3279       ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 1), ENC(srcdst, reg, 2)))
   3280 INSN(sub, s, sx2op, 1cycle, C64XP, 0,
   3281       FIX1(FIX(op, 0x1)),
   3282       OP3(ORREG1, ORXREG1, OWREG1),
   3283       ENC5(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2),
   3284            ENC(src2, reg, 1), ENC(x, xpath, 1)))
   3285 INSN(sub, s, s3_sat_x, 1cycle, C64XP, 0,
   3286      FIX1(FIX(op, 0x1)),
   3287      OP3(ORREG1, ORXREG1, OWREG1),
   3288      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3289           ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3290 INSN(sub, d, dx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
   3291      FIX1(FIX(op, 0x3)),
   3292      OP3(ORREG1, OHWCST1, OWREG1),
   3293      ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2)))
   3294 INSN(sub, d, dx2op, 1cycle, C64XP, 0,
   3295      FIX1(FIX(op, 0x1)),
   3296      OP3(ORREG1, ORXREG1, OWREG1),
   3297      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(srcdst, reg, 0),
   3298           ENC(src2, reg, 1), ENC(srcdst, reg, 2)))
   3299 /**/
   3300 
   3301 INSNE(subab, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   3302       FIX1(FIX(op, 0x31)),
   3303       OP3(ORREG1, ORREG1, OWREG1),
   3304       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
   3305 	   ENC(dst, reg, 2)))
   3306 INSNE(subab, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   3307       FIX1(FIX(op, 0x33)),
   3308       OP3(ORREG1, OACST, OWREG1),
   3309       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
   3310 	   ENC(dst, reg, 2)))
   3311 
   3312 INSN(subabs4, l, 1_or_2_src, 1cycle, C64X, 0,
   3313      FIX1(FIX(op, 0x5a)),
   3314      OP3(ORREG1, ORXREG1, OWREG1),
   3315      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3316 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3317 
   3318 INSNE(subah, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   3319       FIX1(FIX(op, 0x35)),
   3320       OP3(ORREG1, ORREG1, OWREG1),
   3321       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
   3322 	   ENC(dst, reg, 2)))
   3323 INSNE(subah, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   3324       FIX1(FIX(op, 0x37)),
   3325       OP3(ORREG1, OACST, OWREG1),
   3326       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
   3327 	   ENC(dst, reg, 2)))
   3328 
   3329 INSNE(subaw, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   3330       FIX1(FIX(op, 0x39)),
   3331       OP3(ORREG1, ORREG1, OWREG1),
   3332       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
   3333 	   ENC(dst, reg, 2)))
   3334 INSNE(subaw, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
   3335       FIX1(FIX(op, 0x3b)),
   3336       OP3(ORREG1, OACST, OWREG1),
   3337       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
   3338 	   ENC(dst, reg, 2)))
   3339 
   3340 /* 16 bits insn */
   3341 INSN(subaw, d, dx5p, 1cycle, C64XP, 0,
   3342      FIX1(FIX(op, 1)),
   3343      OP3(ORB15REG1, OACST, OWB15REG1),
   3344      ENC2(ENC(s, fu, 0), ENC(cst, ucst, 1)))
   3345 /**/
   3346 
   3347 INSN(subc, l, 1_or_2_src, 1cycle, C62X, 0,
   3348      FIX1(FIX(op, 0x4b)),
   3349      OP3(ORREG1, ORXREG1, OWREG1),
   3350      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3351 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3352 
   3353 INSNE(subdp, l_dp_xdp_dp, l, 1_or_2_src, addsubdp, C67X, TIC6X_FLAG_PREFER(1),
   3354       FIX1(FIX(op, 0x19)),
   3355       OP3(ORREGD12, ORXREGD12, OWREGD67),
   3356       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3357 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3358 INSNE(subdp, l_xdp_dp_dp, l, 1_or_2_src, addsubdp, C67X, TIC6X_FLAG_PREFER(0),
   3359       FIX1(FIX(op, 0x1d)),
   3360       OP3(ORXREGD12, ORREGD12, OWREGD67),
   3361       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3362 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3363 INSNE(subdp, s_dp_xdp_dp, s, l_1_or_2_src, addsubdp, C67XP,
   3364       TIC6X_FLAG_PREFER(1),
   3365       FIX1(FIX(op, 0x73)),
   3366       OP3(ORREGD12, ORXREGD12, OWREGD67),
   3367       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3368 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3369 INSNE(subdp, s_xdp_dp_dp, s, l_1_or_2_src, addsubdp, C67XP,
   3370       TIC6X_FLAG_PREFER(0),
   3371       FIX1(FIX(op, 0x77)),
   3372       OP3(ORXREGD12, ORREGD12, OWREGD67),
   3373       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   3374 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
   3375 
   3376 INSNE(subsp, l_sp_xsp_sp, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_PREFER(1),
   3377       FIX1(FIX(op, 0x11)),
   3378       OP3(ORREG1, ORXREG1, OWREG4),
   3379       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3380 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3381 INSNE(subsp, l_xsp_sp_sp, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_PREFER(0),
   3382       FIX1(FIX(op, 0x15)),
   3383       OP3(ORXREG1, ORREG1, OWREG4),
   3384       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3385 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3386 INSNE(subsp, s_sp_xsp_sp, s, l_1_or_2_src, 4cycle, C67XP,
   3387       TIC6X_FLAG_PREFER(1),
   3388       FIX1(FIX(op, 0x71)),
   3389       OP3(ORREG1, ORXREG1, OWREG4),
   3390       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3391 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3392 INSNE(subsp, s_xsp_sp_sp, s, l_1_or_2_src, 4cycle, C67XP,
   3393       TIC6X_FLAG_PREFER(0),
   3394       FIX1(FIX(op, 0x75)),
   3395       OP3(ORXREG1, ORREG1, OWREG4),
   3396       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   3397 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
   3398 
   3399 INSNE(subu, l_ui_xui_ul, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
   3400       FIX1(FIX(op, 0x2f)),
   3401       OP3(ORREG1, ORXREG1, OWREGL1),
   3402       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3403 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3404 INSNE(subu, l_xui_ui_ul, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0),
   3405       FIX1(FIX(op, 0x3f)),
   3406       OP3(ORXREG1, ORREG1, OWREGL1),
   3407       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3408 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3409 
   3410 INSN(sub2, l, 1_or_2_src, 1cycle, C64X, 0,
   3411      FIX1(FIX(op, 0x04)),
   3412      OP3(ORREG1, ORXREG1, OWREG1),
   3413      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3414 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3415 INSN(sub2, s, 1_or_2_src, 1cycle, C62X, 0,
   3416      FIX1(FIX(op, 0x11)),
   3417      OP3(ORREG1, ORXREG1, OWREG1),
   3418      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3419 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3420 INSN(sub2, d, ext_1_or_2_src, 1cycle, C64X, 0,
   3421      FIX1(FIX(op, 0x5)),
   3422      OP3(ORREG1, ORXREG1, OWREG1),
   3423      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3424 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3425 
   3426 INSN(sub4, l, 1_or_2_src, 1cycle, C64X, 0,
   3427      FIX1(FIX(op, 0x66)),
   3428      OP3(ORREG1, ORXREG1, OWREG1),
   3429      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3430 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3431 
   3432 INSN(swap2, l, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS,
   3433      FIX2(FIX(op, 0x1b), FIX(x, 0)),
   3434      OP2(ORREG1, OWREG1),
   3435      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3436 	  ENC(src2, reg, 0), ENC(dst, reg, 1)))
   3437 INSN(swap2, s, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS,
   3438      FIX2(FIX(op, 0x10), FIX(x, 0)),
   3439      OP2(ORREG1, OWREG1),
   3440      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3441 	  ENC(src2, reg, 0), ENC(dst, reg, 1)))
   3442 
   3443 /* Contrary to SPRUFE8, this is the correct encoding for this
   3444    instruction.  */
   3445 INSN(swap4, l, unary, 1cycle, C64X, 0,
   3446      FIX1(FIX(op, 0x1)),
   3447      OP2(ORXREG1, OWREG1),
   3448      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   3449 	  ENC(dst, reg, 1)))
   3450 
   3451 INSN(swe, nfu, swe, 1cycle, C64XP, 0,
   3452      FIX1(FIX(s, 0)),
   3453      OP0(),
   3454      ENC0())
   3455 
   3456 INSN(swenr, nfu, swenr, 1cycle, C64XP, 0,
   3457      FIX1(FIX(s, 0)),
   3458      OP0(),
   3459      ENC0())
   3460 
   3461 INSN(unpkhu4, l, unary, 1cycle, C64X, 0,
   3462      FIX1(FIX(op, 0x03)),
   3463      OP2(ORXREG1, OWREG1),
   3464      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   3465 	  ENC(dst, reg, 1)))
   3466 INSN(unpkhu4, s, unary, 1cycle, C64X, 0,
   3467      FIX1(FIX(op, 0x03)),
   3468      OP2(ORXREG1, OWREG1),
   3469      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   3470 	  ENC(dst, reg, 1)))
   3471 
   3472 INSN(unpklu4, l, unary, 1cycle, C64X, 0,
   3473      FIX1(FIX(op, 0x02)),
   3474      OP2(ORXREG1, OWREG1),
   3475      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   3476 	  ENC(dst, reg, 1)))
   3477 INSN(unpklu4, s, unary, 1cycle, C64X, 0,
   3478      FIX1(FIX(op, 0x02)),
   3479      OP2(ORXREG1, OWREG1),
   3480      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   3481 	  ENC(dst, reg, 1)))
   3482 
   3483 INSNE(xor, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
   3484       FIX1(FIX(op, 0x6f)),
   3485       OP3(ORREG1, ORXREG1, OWREG1),
   3486       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3487 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3488 INSNE(xor, l_s5_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
   3489       FIX1(FIX(op, 0x6e)),
   3490       OP3(OACST, ORXREG1, OWREG1),
   3491       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
   3492 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3493 INSNE(xor, s_ui_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
   3494       FIX1(FIX(op, 0x0b)),
   3495       OP3(ORREG1, ORXREG1, OWREG1),
   3496       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3497 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3498 INSNE(xor, s_s5_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
   3499       FIX1(FIX(op, 0x0a)),
   3500       OP3(OACST, ORXREG1, OWREG1),
   3501       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
   3502 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3503 INSNE(xor, d_ui_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0,
   3504       FIX1(FIX(op, 0xe)),
   3505       OP3(ORREG1, ORXREG1, OWREG1),
   3506       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3507 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3508 INSNE(xor, d_s5_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0,
   3509       FIX1(FIX(op, 0xf)),
   3510       OP3(OACST, ORXREG1, OWREG1),
   3511       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
   3512 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3513 
   3514 /* 16 bits insn */
   3515 INSN(xor, l, l2c, 1cycle, C64XP, 0,
   3516       FIX1(FIX(op, 0x2)),
   3517       OP3(ORREG1, ORXREG1, OWREG1NORS),
   3518       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3519            ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3520 INSNU(xor, l, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
   3521      FIX2(FIX(op, 0x7), FIX(unit, 0x0)),
   3522      OP3(ORREG1, OHWCST1, OWREG1),
   3523      ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2)))
   3524 INSNU(xor, s, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
   3525      FIX2(FIX(op, 0x7), FIX(unit, 0x1)),
   3526      OP3(ORREG1, OHWCST1, OWREG1),
   3527      ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2)))
   3528 INSNU(xor, d, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
   3529      FIX2(FIX(op, 0x7), FIX(unit, 0x2)),
   3530      OP3(ORREG1, OHWCST1, OWREG1),
   3531      ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2)))
   3532 /**/
   3533 
   3534 INSN(xormpy, m, 1_or_2_src, 4cycle, C64XP, 0,
   3535      FIX1(FIX(op, 0x1b)),
   3536      OP3(ORREG1, ORXREG1, OWREG4),
   3537      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
   3538 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
   3539 
   3540 INSN(xpnd2, m, unary, 1616_m, C64X, 0,
   3541      FIX1(FIX(op, 0x19)),
   3542      OP2(ORXREG1, OWREG2),
   3543      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   3544 	  ENC(dst, reg, 1)))
   3545 
   3546 INSN(xpnd4, m, unary, 1616_m, C64X, 0,
   3547      FIX1(FIX(op, 0x18)),
   3548      OP2(ORXREG1, OWREG2),
   3549      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
   3550 	  ENC(dst, reg, 1)))
   3551 
   3552 INSN(zero, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO,
   3553      FIX2(FIX(h, 0), FIX(cst, 0)),
   3554      OP1(OWREG1),
   3555      ENC2(ENC(s, fu, 0), ENC(dst, reg, 0)))
   3556 INSN(zero, l, unary, 1cycle, C64X,
   3557      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(1),
   3558      FIX3(FIX(x, 0), FIX(op, 0x05), FIX(src2, 0)),
   3559      OP1(OWREG1),
   3560      ENC2(ENC(s, fu, 0), ENC(dst, reg, 0)))
   3561 INSNE(zero, l_sub, l, 1_or_2_src, 1cycle, C62X,
   3562       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(0),
   3563       FIX2(FIX(op, 0x07), FIX(x, 0)),
   3564       OP1(OWREG1),
   3565       ENC4(ENC(s, fu, 0), ENC(src1, reg_unused, 0), ENC(src2, reg_unused, 0),
   3566 	   ENC(dst, reg, 0)))
   3567 INSNE(zero, l_sub_sl, l, 1_or_2_src, 1cycle, C62X,
   3568       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO,
   3569       FIX2(FIX(op, 0x27), FIX(x, 0)),
   3570       OP1(OWREGL1),
   3571       ENC4(ENC(s, fu, 0), ENC(src1, reg_unused, 0), ENC(src2, reg_unused, 0),
   3572 	   ENC(dst, reg, 0)))
   3573 INSNE(zero, d_mvk, d, 1_or_2_src, 1cycle, C64X,
   3574       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(1),
   3575       FIX3(FIX(op, 0x00), FIX(src1, 0), FIX(src2, 0)),
   3576       OP1(OWREG1),
   3577       ENC2(ENC(s, fu, 0), ENC(dst, reg, 0)))
   3578 INSNE(zero, d_sub, d, 1_or_2_src, 1cycle, C62X,
   3579       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(0),
   3580       FIX1(FIX(op, 0x11)),
   3581       OP1(OWREG1),
   3582       ENC4(ENC(s, fu, 0), ENC(src2, reg_unused, 0), ENC(src1, reg_unused, 0),
   3583 	   ENC(dst, reg, 0)))
   3584 
   3585 #undef TIC6X_INSN_C64X_AND_C67X
   3586 #undef tic6x_insn_format_nfu_s_branch_nop_cst
   3587 #undef tic6x_insn_format_s_l_1_or_2_src
   3588 #undef RAN
   3589 #undef FIX
   3590 #undef FIX0
   3591 #undef FIX1
   3592 #undef FIX2
   3593 #undef FIX3
   3594 #undef FIX4
   3595 #undef OP0
   3596 #undef OP1
   3597 #undef OP2
   3598 #undef OP3
   3599 #undef OP4
   3600 #undef OACST
   3601 #undef OLCST
   3602 #undef OHWCSTM1
   3603 #undef OHWCST0
   3604 #undef OHWCST1
   3605 #undef OHWCST5
   3606 #undef OHWCST16
   3607 #undef OHWCST24
   3608 #undef OHWCST31
   3609 #undef OFULIST
   3610 #undef ORIRP1
   3611 #undef ORNRP1
   3612 #undef OWREG1
   3613 #undef OWRETREG1
   3614 #undef ORREG1
   3615 #undef ORDREG1
   3616 #undef ORWREG1
   3617 #undef ORAREG1
   3618 #undef ORXREG1
   3619 #undef ORREG12
   3620 #undef ORREG14
   3621 #undef ORXREG14
   3622 #undef OWREG2
   3623 #undef OWREG4
   3624 #undef OWREG9
   3625 #undef OWDREG5
   3626 #undef OWREGL1
   3627 #undef ORREGL1
   3628 #undef OWREGD1
   3629 #undef ORTREG1
   3630 #undef ORTREGD1
   3631 #undef OWTREG5
   3632 #undef OWTREGD5
   3633 #undef OWREGD12
   3634 #undef OWREGD4
   3635 #undef ORREGD1
   3636 #undef OWREGD45
   3637 #undef OWREGD67
   3638 #undef ORDREGD1
   3639 #undef OWDREGD5
   3640 #undef ORREGD12
   3641 #undef ORXREGD12
   3642 #undef ORXREGD1234
   3643 #undef ORREGD1324
   3644 #undef OWREGD910
   3645 #undef OWILC1
   3646 #undef ORCREG1
   3647 #undef OWCREG1
   3648 #undef OWREG1Z
   3649 #undef ORB15REG1
   3650 #undef OWB15REG1
   3651 #undef ORMEMDW
   3652 #undef OWMEMDW
   3653 #undef ORMEMSB
   3654 #undef OWMEMSB
   3655 #undef ORMEMLB
   3656 #undef OWMEMLB
   3657 #undef ORMEMSH
   3658 #undef OWMEMSH
   3659 #undef ORMEMLH
   3660 #undef OWMEMLH
   3661 #undef ORMEMSW
   3662 #undef OWMEMSW
   3663 #undef ORMEMLW
   3664 #undef OWMEMLW
   3665 #undef ORMEMSD
   3666 #undef OWMEMSD
   3667 #undef ORMEMND
   3668 #undef OWMEMND
   3669 #undef ENC
   3670 #undef ENC0
   3671 #undef ENC1
   3672 #undef ENC2
   3673 #undef ENC3
   3674 #undef ENC4
   3675 #undef ENC5
   3676 #undef ENC6
   3677 #undef ENC7
   3678