[PATCH, BINUTULS, AARCH64, 9/9] Add SSBS to MSR/MRS
[external/binutils.git] / include / opcode / tic6x-opcode-table.h
1 /* TI C6X opcode table.
2    Copyright (C) 2010-2018 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