xref: /netbsd-src/external/gpl3/gdb/dist/include/opcode/tic6x-opcode-table.h (revision 4d12bfcd155352508213ace5ccc59ce930ea2974)
1 /* TI C6X opcode table.
2    Copyright 2010, 2011
3    Free Software Foundation, Inc.
4 
5    This program is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 3 of the License, or
8    (at your option) any later version.
9 
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14 
15    You should have received a copy of the GNU General Public License
16    along with this program; if not, write to the Free Software
17    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
18    MA 02110-1301, USA.  */
19 
20 /* Define the INSN macro before including this file; it takes as
21    arguments the fields from tic6x_opcode (defined in tic6x.h).  The
22    name is given as an identifier; the subsequent four operands should
23    have "tic6x_func_unit_", "tic6x_insn_format_", "tic6x_pipeline_"
24    and "TIC6X_INSN_", respectively, prepended to them by the macro
25    definition.  Also define INSNE, which has a second argument that
26    goes after tic6x_opcode_NAME_ to form the enumeration value for
27    this instruction, where the value otherwise formed from the name,
28    functional unit and format is ambiguous, but otherwise has the same
29    arguments as INSN.  */
30 
31 #define TIC6X_INSN_C64X_AND_C67X TIC6X_INSN_C64X|TIC6X_INSN_C67X
32 #define tic6x_insn_format_nfu_s_branch_nop_cst	\
33   tic6x_insn_format_s_branch_nop_cst
34 #define tic6x_insn_format_s_l_1_or_2_src tic6x_insn_format_l_1_or_2_src
35 #define RAN(id, min, max) { CONCAT2(tic6x_field_,id), (min), (max) }
36 #define FIX(id, val) RAN(id, val, val)
37 #define FIX0() 0, { { 0, 0, 0 } }
38 #define FIX1(a) 1, { a }
39 #define FIX2(a, b) 2, { a, b }
40 #define FIX3(a, b, c) 3, { a, b, c }
41 #define FIX4(a, b, c, d) 4, { a, b, c, d }
42 #define OP0() 0, { { 0, 0, FALSE, 0, 0, 0, 0 } }
43 #define OP1(a) 1, { a }
44 #define OP2(a, b) 2, { a, b }
45 #define OP3(a, b, c) 3, { a, b, c }
46 #define OP4(a, b, c, d) 4, { a, b, c, d }
47 #define OACST { tic6x_operand_asm_const, 0, tic6x_rw_none, 0, 0, 0, 0 }
48 #define OLCST { tic6x_operand_link_const, 0, tic6x_rw_none, 0, 0, 0, 0 }
49 #define OFULIST { tic6x_operand_func_unit, 0, tic6x_rw_none, 0, 0, 0, 0 }
50 #define ORIRP1 { tic6x_operand_irp, 4, tic6x_rw_read, 1, 1, 0, 0 }
51 #define ORNRP1 { tic6x_operand_nrp, 4, tic6x_rw_read, 1, 1, 0, 0 }
52 #define OWREG1 { tic6x_operand_reg, 4, tic6x_rw_write, 1, 1, 0, 0 }
53 #define OWRETREG1 { tic6x_operand_retreg, 4, tic6x_rw_write, 1, 1, 0, 0 }
54 #define ORREG1 { tic6x_operand_reg, 4, tic6x_rw_read, 1, 1, 0, 0 }
55 #define ORDREG1 { tic6x_operand_dreg, 4, tic6x_rw_read, 1, 1, 0, 0 }
56 #define ORWREG1 { tic6x_operand_reg, 4, tic6x_rw_read_write, 1, 1, 0, 0 }
57 #define ORAREG1 { tic6x_operand_areg, 4, tic6x_rw_read, 1, 1, 0, 0 }
58 #define ORXREG1 { tic6x_operand_xreg, 4, tic6x_rw_read, 1, 1, 0, 0 }
59 #define ORREG12 { tic6x_operand_reg, 4, tic6x_rw_read, 1, 2, 0, 0 }
60 #define ORREG14 { tic6x_operand_reg, 4, tic6x_rw_read, 1, 4, 0, 0 }
61 #define ORXREG14 { tic6x_operand_xreg, 4, tic6x_rw_read, 1, 4, 0, 0 }
62 #define OWREG2 { tic6x_operand_reg, 4, tic6x_rw_write, 2, 2, 0, 0 }
63 #define OWREG4 { tic6x_operand_reg, 4, tic6x_rw_write, 4, 4, 0, 0 }
64 #define OWREG9 { tic6x_operand_reg, 4, tic6x_rw_write, 9, 9, 0, 0 }
65 #define OWDREG5 { tic6x_operand_dreg, 4, tic6x_rw_write, 5, 5, 0, 0 }
66 #define OWREGL1 { tic6x_operand_regpair, 5, tic6x_rw_write, 1, 1, 1, 1 }
67 #define ORREGL1 { tic6x_operand_regpair, 5, tic6x_rw_read, 1, 1, 1, 1 }
68 #define OWREGD1 { tic6x_operand_regpair, 8, tic6x_rw_write, 1, 1, 1, 1 }
69 #define OWREGD12 { tic6x_operand_regpair, 8, tic6x_rw_write, 1, 1, 2, 2 }
70 #define OWREGD4 { tic6x_operand_regpair, 8, tic6x_rw_write, 4, 4, 4, 4 }
71 #define ORREGD1 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 1, 1, 1 }
72 #define OWREGD45 { tic6x_operand_regpair, 8, tic6x_rw_write, 4, 4, 5, 5 }
73 #define OWREGD67 { tic6x_operand_regpair, 8, tic6x_rw_write, 6, 6, 7, 7 }
74 #define ORDREGD1 { tic6x_operand_dregpair, 8, tic6x_rw_read, 1, 1, 1, 1 }
75 #define OWDREGD5 { tic6x_operand_dregpair, 8, tic6x_rw_write, 5, 5, 5, 5 }
76 #define ORREGD12 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 1, 2, 2 }
77 #define ORXREGD12 { tic6x_operand_xregpair, 8, tic6x_rw_read, 1, 1, 2, 2 }
78 #define ORREGD1234 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 2, 3, 4 }
79 #define ORREGD1324 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 3, 2, 4 }
80 #define OWREGD910 { tic6x_operand_regpair, 8, tic6x_rw_write, 9, 9, 10, 10 }
81 #define ORCREG1 { tic6x_operand_ctrl, 4, tic6x_rw_read, 1, 1, 0, 0 }
82 #define OWCREG1 { tic6x_operand_ctrl, 4, tic6x_rw_write, 1, 1, 0, 0 }
83 #define ORMEMDW { tic6x_operand_mem_deref, 4, tic6x_rw_read, 3, 3, 0, 0 }
84 #define OWMEMDW { tic6x_operand_mem_deref, 4, tic6x_rw_write, 3, 3, 0, 0 }
85 #define ORMEMSB { tic6x_operand_mem_short, 1, tic6x_rw_read, 3, 3, 0, 0 }
86 #define OWMEMSB { tic6x_operand_mem_short, 1, tic6x_rw_write, 3, 3, 0, 0 }
87 #define ORMEMLB { tic6x_operand_mem_long, 1, tic6x_rw_read, 3, 3, 0, 0 }
88 #define OWMEMLB { tic6x_operand_mem_long, 1, tic6x_rw_write, 3, 3, 0, 0 }
89 #define ORMEMSH { tic6x_operand_mem_short, 2, tic6x_rw_read, 3, 3, 0, 0 }
90 #define OWMEMSH { tic6x_operand_mem_short, 2, tic6x_rw_write, 3, 3, 0, 0 }
91 #define ORMEMLH { tic6x_operand_mem_long, 2, tic6x_rw_read, 3, 3, 0, 0 }
92 #define OWMEMLH { tic6x_operand_mem_long, 2, tic6x_rw_write, 3, 3, 0, 0 }
93 #define ORMEMSW { tic6x_operand_mem_short, 4, tic6x_rw_read, 3, 3, 0, 0 }
94 #define OWMEMSW { tic6x_operand_mem_short, 4, tic6x_rw_write, 3, 3, 0, 0 }
95 #define ORMEMLW { tic6x_operand_mem_long, 4, tic6x_rw_read, 3, 3, 0, 0 }
96 #define OWMEMLW { tic6x_operand_mem_long, 4, tic6x_rw_write, 3, 3, 0, 0 }
97 #define ORMEMSD { tic6x_operand_mem_short, 8, tic6x_rw_read, 3, 3, 0, 0 }
98 #define OWMEMSD { tic6x_operand_mem_short, 8, tic6x_rw_write, 3, 3, 0, 0 }
99 #define ORMEMND { tic6x_operand_mem_ndw, 8, tic6x_rw_read, 3, 3, 0, 0 }
100 #define OWMEMND { tic6x_operand_mem_ndw, 8, tic6x_rw_write, 3, 3, 0, 0 }
101 #define ENC(id, meth, op) {			\
102     CONCAT2(tic6x_field_,id),			\
103     CONCAT2(tic6x_coding_,meth),		\
104     op						\
105   }
106 #define ENC0() 0, { { 0, 0, 0 } }
107 #define ENC1(a) 1, { a }
108 #define ENC2(a, b) 2, { a, b }
109 #define ENC3(a, b, c) 3, { a, b, c }
110 #define ENC4(a, b, c, d) 4, { a, b, c, d }
111 #define ENC5(a, b, c, d, e) 5, { a, b, c, d, e }
112 #define ENC6(a, b, c, d, e, f) 6, { a, b, c, d, e, f }
113 #define ENC7(a, b, c, d, e, f, g) 7, { a, b, c, d, e, f, g }
114 
115 INSN(abs, l, unary, 1cycle, C62X, 0,
116      FIX1(FIX(op, 0)),
117      OP2(ORXREG1, OWREG1),
118      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
119 	  ENC(dst, reg, 1)))
120 INSN(abs, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
121      FIX3(FIX(op, 0x38), FIX(x, 0), FIX(src1, 0)),
122      OP2(ORREGL1, OWREGL1),
123      ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
124 
125 INSN(abs2, l, unary, 1cycle, C64X, 0,
126      FIX1(FIX(op, 0x4)),
127      OP2(ORXREG1, OWREG1),
128      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
129 	  ENC(dst, reg, 1)))
130 
131 INSN(absdp, s, 1_or_2_src, 2cycle_dp, C67X, TIC6X_FLAG_NO_CROSS,
132      FIX3(FIX(op, 0x2c), FIX(x, 0), FIX(src1, 0)),
133      OP2(ORREGD1, OWREGD12),
134      ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
135 
136 INSN(abssp, s, unary, 1cycle, C67X, 0,
137      FIX1(FIX(op, 0)),
138      OP2(ORXREG1, OWREG1),
139      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
140 	  ENC(dst, reg, 1)))
141 
142 INSNE(add, l_si_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0,
143       FIX1(FIX(op, 0x3)),
144       OP3(ORREG1, ORXREG1, OWREG1),
145       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
146 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
147 INSNE(add, l_si_xsi_sl, l, 1_or_2_src, 1cycle, C62X, 0,
148       FIX1(FIX(op, 0x23)),
149       OP3(ORREG1, ORXREG1, OWREGL1),
150       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
151 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
152 INSNE(add, l_xsi_sl_sl, l, 1_or_2_src, 1cycle, C62X, 0,
153       FIX1(FIX(op, 0x21)),
154       OP3(ORXREG1, ORREGL1, OWREGL1),
155       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
156 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
157 INSNE(add, l_s5_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0,
158       FIX1(FIX(op, 0x2)),
159       OP3(OACST, ORXREG1, OWREG1),
160       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
161 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
162 INSNE(add, l_s5_sl_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
163       FIX2(FIX(op, 0x20), FIX(x, 0)),
164       OP3(OACST, ORREGL1, OWREGL1),
165       ENC4(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(src2, reg, 1),
166 	   ENC(dst, reg, 2)))
167 INSNE(add, s_si_xsi_si, s, 1_or_2_src, 1cycle, C62X, 0,
168       FIX1(FIX(op, 0x7)),
169       OP3(ORREG1, ORXREG1, OWREG1),
170       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
171 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
172 INSNE(add, s_s5_xsi_si, s, 1_or_2_src, 1cycle, C62X, 0,
173       FIX1(FIX(op, 0x6)),
174       OP3(OACST, ORXREG1, OWREG1),
175       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
176 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
177 INSNE(add, d_si_si_si, d, 1_or_2_src, 1cycle, C62X,
178       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
179       FIX1(FIX(op, 0x10)),
180       OP3(ORREG1, ORREG1, OWREG1),
181       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
182 	   ENC(dst, reg, 2)))
183 INSNE(add, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X,
184       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
185       FIX1(FIX(op, 0x12)),
186       OP3(ORREG1, OACST, OWREG1),
187       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
188 	   ENC(dst, reg, 2)))
189 INSNE(add, d_si_xsi_si, d, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_PREFER(0),
190       FIX1(FIX(op, 0xa)),
191       OP3(ORREG1, ORXREG1, OWREG1),
192       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
193 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
194 INSNE(add, d_xsi_s5_si, d, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_PREFER(0),
195       FIX1(FIX(op, 0xb)),
196       OP3(ORXREG1, OACST, OWREG1),
197       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
198 	   ENC(src1, scst, 1), ENC(dst, reg, 2)))
199 
200 INSNE(addab, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
201       FIX1(FIX(op, 0x30)),
202       OP3(ORREG1, ORREG1, OWREG1),
203       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
204 	   ENC(dst, reg, 2)))
205 INSNE(addab, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X,
206       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
207       FIX1(FIX(op, 0x32)),
208       OP3(ORREG1, OACST, OWREG1),
209       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
210 	   ENC(dst, reg, 2)))
211 INSN(addab, d, adda_long, 1cycle, C64XP, TIC6X_FLAG_PREFER(0),
212      FIX1(FIX(op, 3)),
213      OP3(ORAREG1, OLCST, OWREG1),
214      ENC4(ENC(s, fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_byte, 1),
215 	  ENC(dst, reg, 2)))
216 
217 INSNE(addad, d_si_si_si, d, 1_or_2_src, 1cycle, C64X_AND_C67X,
218       TIC6X_FLAG_NO_CROSS,
219       FIX1(FIX(op, 0x3c)),
220       OP3(ORREG1, ORREG1, OWREG1),
221       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
222 	   ENC(dst, reg, 2)))
223 INSNE(addad, d_si_u5_si, d, 1_or_2_src, 1cycle, C64X_AND_C67X,
224       TIC6X_FLAG_NO_CROSS,
225       FIX1(FIX(op, 0x3d)),
226       OP3(ORREG1, OACST, OWREG1),
227       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
228 	   ENC(dst, reg, 2)))
229 
230 INSNE(addah, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
231       FIX1(FIX(op, 0x34)),
232       OP3(ORREG1, ORREG1, OWREG1),
233       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
234 	   ENC(dst, reg, 2)))
235 INSNE(addah, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X,
236       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
237       FIX1(FIX(op, 0x36)),
238       OP3(ORREG1, OACST, OWREG1),
239       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
240 	   ENC(dst, reg, 2)))
241 INSN(addah, d, adda_long, 1cycle, C64XP, TIC6X_FLAG_PREFER(0),
242      FIX1(FIX(op, 5)),
243      OP3(ORAREG1, OLCST, OWREG1),
244      ENC4(ENC(s, fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_half, 1),
245 	  ENC(dst, reg, 2)))
246 
247 INSNE(addaw, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
248       FIX1(FIX(op, 0x38)),
249       OP3(ORREG1, ORREG1, OWREG1),
250       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
251 	   ENC(dst, reg, 2)))
252 INSNE(addaw, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X,
253       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
254       FIX1(FIX(op, 0x3a)),
255       OP3(ORREG1, OACST, OWREG1),
256       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
257 	   ENC(dst, reg, 2)))
258 INSN(addaw, d, adda_long, 1cycle, C64XP, TIC6X_FLAG_PREFER(0),
259      FIX1(FIX(op, 7)),
260      OP3(ORAREG1, OLCST, OWREG1),
261      ENC4(ENC(s, fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_word, 1),
262 	  ENC(dst, reg, 2)))
263 
264 INSN(adddp, l, 1_or_2_src, addsubdp, C67X, 0,
265      FIX1(FIX(op, 0x18)),
266      OP3(ORREGD12, ORXREGD12, OWREGD67),
267      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
268 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
269 INSN(adddp, s, l_1_or_2_src, addsubdp, C67XP, 0,
270      FIX1(FIX(op, 0x72)),
271      OP3(ORREGD12, ORXREGD12, OWREGD67),
272      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
273 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
274 
275 INSN(addk, s, addk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
276      FIX0(),
277      OP2(OLCST, OWREG1),
278      ENC3(ENC(s, fu, 0), ENC(cst, scst, 0), ENC(dst, reg, 1)))
279 
280 INSN(addkpc, s, addkpc, 1cycle, C64X,
281      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP|TIC6X_FLAG_SIDE_B_ONLY,
282      FIX1(FIX(s, 1)),
283      OP3(OLCST, OWREG1, OACST),
284      ENC3(ENC(src1, pcrel, 0), ENC(dst, reg, 1), ENC(src2, ucst, 2)))
285 
286 INSN(addsp, l, 1_or_2_src, 4cycle, C67X, 0,
287      FIX1(FIX(op, 0x10)),
288      OP3(ORREG1, ORXREG1, OWREG4),
289      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
290 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
291 INSN(addsp, s, l_1_or_2_src, 4cycle, C67XP, 0,
292      FIX1(FIX(op, 0x70)),
293      OP3(ORREG1, ORXREG1, OWREG4),
294      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
295 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
296 
297 INSN(addsub, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
298      FIX1(FIX(op, 0xc)),
299      OP3(ORREG1, ORXREG1, OWREGD1),
300      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
301 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
302 
303 INSN(addsub2, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
304      FIX1(FIX(op, 0xd)),
305      OP3(ORREG1, ORXREG1, OWREGD1),
306      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
307 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
308 
309 INSNE(addu, l_ui_xui_ul, l, 1_or_2_src, 1cycle, C62X, 0,
310       FIX1(FIX(op, 0x2b)),
311       OP3(ORREG1, ORXREG1, OWREGL1),
312       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
313 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
314 INSNE(addu, l_xui_ul_ul, l, 1_or_2_src, 1cycle, C62X, 0,
315       FIX1(FIX(op, 0x29)),
316       OP3(ORXREG1, ORREGL1, OWREGL1),
317       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
318 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
319 
320 INSN(add2, s, 1_or_2_src, 1cycle, C62X, 0,
321      FIX1(FIX(op, 0x1)),
322      OP3(ORREG1, ORXREG1, OWREG1),
323      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
324 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
325 INSN(add2, l, 1_or_2_src, 1cycle, C64X, 0,
326      FIX1(FIX(op, 0x5)),
327      OP3(ORREG1, ORXREG1, OWREG1),
328      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
329 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
330 INSN(add2, d, ext_1_or_2_src, 1cycle, C64X, 0,
331      FIX1(FIX(op, 0x4)),
332      OP3(ORREG1, ORXREG1, OWREG1),
333      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
334 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
335 
336 INSN(add4, l, 1_or_2_src, 1cycle, C64X, 0,
337      FIX1(FIX(op, 0x65)),
338      OP3(ORREG1, ORXREG1, OWREG1),
339      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
340 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
341 
342 INSNE(and, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
343       FIX1(FIX(op, 0x7b)),
344       OP3(ORREG1, ORXREG1, OWREG1),
345       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
346 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
347 INSNE(and, l_s5_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
348       FIX1(FIX(op, 0x7a)),
349       OP3(OACST, ORXREG1, OWREG1),
350       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
351 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
352 INSNE(and, s_ui_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
353       FIX1(FIX(op, 0x1f)),
354       OP3(ORREG1, ORXREG1, OWREG1),
355       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
356 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
357 INSNE(and, s_s5_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
358       FIX1(FIX(op, 0x1e)),
359       OP3(OACST, ORXREG1, OWREG1),
360       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
361 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
362 INSNE(and, d_ui_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0,
363       FIX1(FIX(op, 0x6)),
364       OP3(ORREG1, ORXREG1, OWREG1),
365       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
366 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
367 INSNE(and, d_s5_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0,
368       FIX1(FIX(op, 0x7)),
369       OP3(OACST, ORXREG1, OWREG1),
370       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
371 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
372 
373 INSN(andn, l, 1_or_2_src, 1cycle, C64X, 0,
374      FIX1(FIX(op, 0x7c)),
375      OP3(ORREG1, ORXREG1, OWREG1),
376      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
377 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
378 INSN(andn, s, ext_1_or_2_src, 1cycle, C64X, 0,
379      FIX1(FIX(op, 0x6)),
380      OP3(ORREG1, ORXREG1, OWREG1),
381      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
382 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
383 INSN(andn, d, ext_1_or_2_src, 1cycle, C64X, 0,
384      FIX1(FIX(op, 0x0)),
385      OP3(ORREG1, ORXREG1, OWREG1),
386      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
387 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
388 
389 INSN(avg2, m, compound, 1616_m, C64X, 0,
390      FIX1(FIX(op, 0x13)),
391      OP3(ORREG1, ORXREG1, OWREG2),
392      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
393 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
394 
395 INSN(avgu4, m, compound, 1616_m, C64X, 0,
396      FIX1(FIX(op, 0x12)),
397      OP3(ORREG1, ORXREG1, OWREG2),
398      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
399 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
400 
401 INSN(b, s, ext_branch_cond_imm, branch, C62X, TIC6X_FLAG_NO_CROSS,
402      FIX0(),
403      OP1(OLCST),
404      ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
405 INSN(b, s, branch, branch, C62X, TIC6X_FLAG_SIDE_B_ONLY,
406      FIX1(FIX(s, 1)),
407      OP1(ORXREG1),
408      ENC2(ENC(x, xpath, 0), ENC(src2, reg, 0)))
409 INSN(b, s, b_irp, branch, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY,
410      FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
411      OP1(ORIRP1),
412      ENC0())
413 INSN(b, s, b_nrp, branch, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY,
414      FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
415      OP1(ORNRP1),
416      ENC0())
417 
418 INSN(bdec, s, bdec, branch, C64X, TIC6X_FLAG_NO_CROSS,
419      FIX0(),
420      OP2(OLCST, ORWREG1),
421      ENC3(ENC(s, fu, 0), ENC(src, pcrel, 0), ENC(dst, reg, 1)))
422 
423 INSN(bitc4, m, unary, 1616_m, C64X, 0,
424      FIX1(FIX(op, 0x1e)),
425      OP2(ORXREG1, OWREG2),
426      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
427 	  ENC(dst, reg, 1)))
428 
429 INSN(bitr, m, unary, 1616_m, C64X, 0,
430      FIX1(FIX(op, 0x1f)),
431      OP2(ORXREG1, OWREG2),
432      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
433 	  ENC(dst, reg, 1)))
434 
435 INSN(bnop, s, branch_nop_cst, branch, C64X,
436      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP,
437      FIX0(),
438      OP2(OLCST, OACST),
439      ENC3(ENC(s, fu, 0), ENC(src2, pcrel, 0), ENC(src1, ucst, 1)))
440 INSN(bnop, nfu, s_branch_nop_cst, branch, C64XP,
441      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_MCNOP,
442      FIX1(FIX(s, 0)),
443      OP2(OLCST, OACST),
444      ENC2(ENC(src2, pcrel, 0), ENC(src1, ucst, 1)))
445 INSN(bnop, s, branch_nop_reg, branch, C64X,
446      TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MCNOP,
447      FIX1(FIX(s, 1)),
448      OP2(ORXREG1, OACST),
449      ENC3(ENC(x, xpath, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1)))
450 
451 INSN(bpos, s, bpos, branch, C64X, TIC6X_FLAG_NO_CROSS,
452      FIX0(),
453      OP2(OLCST, ORREG1),
454      ENC3(ENC(s, fu, 0), ENC(src, pcrel, 0), ENC(dst, reg, 1)))
455 
456 INSN(call, s, ext_branch_cond_imm, branch, C62X,
457      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL,
458      FIX0(),
459      OP1(OLCST),
460      ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
461 INSN(call, s, branch, branch, C62X,
462      TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL,
463      FIX1(FIX(s, 1)),
464      OP1(ORXREG1),
465      ENC2(ENC(x, xpath, 0), ENC(src2, reg, 0)))
466 INSN(call, s, b_irp, branch, C62X,
467      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL,
468      FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
469      OP1(ORIRP1),
470      ENC0())
471 INSN(call, s, b_nrp, branch, C62X,
472      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL,
473      FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
474      OP1(ORNRP1),
475      ENC0())
476 
477 INSN(callnop, s, branch_nop_cst, branch, C64X,
478      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_MCNOP|TIC6X_FLAG_CALL,
479      FIX0(),
480      OP2(OLCST, OACST),
481      ENC3(ENC(s, fu, 0), ENC(src2, pcrel, 0), ENC(src1, ucst, 1)))
482 INSN(callnop, nfu, s_branch_nop_cst, branch, C64XP,
483      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_MCNOP|TIC6X_FLAG_CALL,
484      FIX1(FIX(s, 0)),
485      OP2(OLCST, OACST),
486      ENC2(ENC(src2, pcrel, 0), ENC(src1, ucst, 1)))
487 INSN(callnop, s, branch_nop_reg, branch, C64X,
488      TIC6X_FLAG_MACRO|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MCNOP|TIC6X_FLAG_CALL,
489      FIX1(FIX(s, 1)),
490      OP2(ORXREG1, OACST),
491      ENC3(ENC(x, xpath, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1)))
492 
493 INSN(callp, s, call_imm_nop, branch, C64XP,
494      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP,
495      FIX1(FIX(z, 1)),
496      OP2(OLCST, OWRETREG1),
497      ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
498 
499 INSN(callret, s, ext_branch_cond_imm, branch, C62X,
500      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL|TIC6X_FLAG_RETURN,
501      FIX0(),
502      OP1(OLCST),
503      ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
504 INSN(callret, s, branch, branch, C62X,
505      TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL|TIC6X_FLAG_RETURN,
506      FIX1(FIX(s, 1)),
507      OP1(ORXREG1),
508      ENC2(ENC(x, xpath, 0), ENC(src2, reg, 0)))
509 INSN(callret, s, b_irp, branch, C62X,
510      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL|TIC6X_FLAG_RETURN,
511      FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
512      OP1(ORIRP1),
513      ENC0())
514 INSN(callret, s, b_nrp, branch, C62X,
515      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL|TIC6X_FLAG_RETURN,
516      FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
517      OP1(ORNRP1),
518      ENC0())
519 
520 INSN(clr, s, field, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
521      FIX1(FIX(op, 0x3)),
522      OP4(ORREG1, OACST, OACST, OWREG1),
523      ENC5(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(csta, ucst, 1),
524 	  ENC(cstb, ucst, 2), ENC(dst, reg, 3)))
525 INSN(clr, s, 1_or_2_src, 1cycle, C62X, 0,
526      FIX1(FIX(op, 0x3f)),
527      OP3(ORXREG1, ORREG1, OWREG1),
528      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
529 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
530 
531 INSNE(cmpeq, l_si_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0,
532       FIX1(FIX(op, 0x53)),
533       OP3(ORREG1, ORXREG1, OWREG1),
534       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
535 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
536 INSNE(cmpeq, l_s5_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0,
537       FIX1(FIX(op, 0x52)),
538       OP3(OACST, ORXREG1, OWREG1),
539       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
540 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
541 INSNE(cmpeq, l_xsi_sl_ui, l, 1_or_2_src, 1cycle, C62X, 0,
542       FIX1(FIX(op, 0x51)),
543       OP3(ORXREG1, ORREGL1, OWREG1),
544       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
545 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
546 INSNE(cmpeq, l_s5_sl_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
547       FIX2(FIX(op, 0x50), FIX(x, 0)),
548       OP3(OACST, ORREGL1, OWREG1),
549       ENC4(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(src2, reg, 1),
550 	   ENC(dst, reg, 2)))
551 
552 INSN(cmpeq2, s, 1_or_2_src, 1cycle, C64X, 0,
553      FIX1(FIX(op, 0x1d)),
554      OP3(ORREG1, ORXREG1, OWREG1),
555      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
556 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
557 
558 INSN(cmpeq4, s, 1_or_2_src, 1cycle, C64X, 0,
559      FIX1(FIX(op, 0x1c)),
560      OP3(ORREG1, ORXREG1, OWREG1),
561      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
562 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
563 
564 INSN(cmpeqdp, s, 1_or_2_src, dpcmp, C67X, 0,
565      FIX1(FIX(op, 0x28)),
566      OP3(ORREGD12, ORXREGD12, OWREG2),
567      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
568 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
569 
570 INSN(cmpeqsp, s, 1_or_2_src, 1cycle, C67X, 0,
571      FIX1(FIX(op, 0x38)),
572      OP3(ORREG1, ORXREG1, OWREG1),
573      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
574 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
575 
576 INSNE(cmpgt, l_si_xsi_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
577       FIX1(FIX(op, 0x47)),
578       OP3(ORREG1, ORXREG1, OWREG1),
579       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
580 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
581 INSNE(cmpgt, l_s5_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0,
582       FIX1(FIX(op, 0x46)),
583       OP3(OACST, ORXREG1, OWREG1),
584       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
585 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
586 INSNE(cmpgt, l_xsi_sl_ui, l, 1_or_2_src, 1cycle, C62X, 0,
587       FIX1(FIX(op, 0x45)),
588       OP3(ORXREG1, ORREGL1, OWREG1),
589       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
590 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
591 INSNE(cmpgt, l_s5_sl_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
592       FIX2(FIX(op, 0x44), FIX(x, 0)),
593       OP3(OACST, ORREGL1, OWREG1),
594       ENC4(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(src2, reg, 1),
595 	   ENC(dst, reg, 2)))
596 INSNE(cmpgt, l_xsi_si_ui, l, 1_or_2_src, 1cycle, C62X,
597       TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(0),
598       FIX1(FIX(op, 0x57)),
599       OP3(ORXREG1, ORREG1, OWREG1),
600       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 1),
601 	   ENC(src2, reg, 0), ENC(dst, reg, 2)))
602 INSNE(cmpgt, l_xsi_s5_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
603       FIX1(FIX(op, 0x56)),
604       OP3(ORXREG1, OACST, OWREG1),
605       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 1),
606 	   ENC(src2, reg, 0), ENC(dst, reg, 2)))
607 INSNE(cmpgt, l_sl_xsi_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
608       FIX1(FIX(op, 0x55)),
609       OP3(ORREGL1, ORXREG1, OWREG1),
610       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 1),
611 	   ENC(src2, reg, 0), ENC(dst, reg, 2)))
612 INSNE(cmpgt, l_sl_s5_ui, l, 1_or_2_src, 1cycle, C62X,
613       TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS,
614       FIX2(FIX(op, 0x54), FIX(x, 0)),
615       OP3(ORREGL1, OACST, OWREG1),
616       ENC4(ENC(s, fu, 0), ENC(src1, scst, 1), ENC(src2, reg, 0),
617 	   ENC(dst, reg, 2)))
618 
619 INSN(cmpgt2, s, 1_or_2_src, 1cycle, C64X, 0,
620      FIX1(FIX(op, 0x14)),
621      OP3(ORREG1, ORXREG1, OWREG1),
622      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
623 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
624 
625 INSN(cmpgtdp, s, 1_or_2_src, dpcmp, C67X, 0,
626      FIX1(FIX(op, 0x29)),
627      OP3(ORREGD12, ORXREGD12, OWREG2),
628      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
629 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
630 
631 INSN(cmpgtsp, s, 1_or_2_src, 1cycle, C67X, 0,
632      FIX1(FIX(op, 0x39)),
633      OP3(ORREG1, ORXREG1, OWREG1),
634      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
635 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
636 
637 INSNE(cmpgtu, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
638       FIX1(FIX(op, 0x4f)),
639       OP3(ORREG1, ORXREG1, OWREG1),
640       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
641 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
642 INSNE(cmpgtu, l_u4_xui_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
643       FIX2(FIX(op, 0x4e), RAN(src1, 0, 15)),
644       OP3(OACST, ORXREG1, OWREG1),
645       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, ucst, 0),
646 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
647 /* Although not mentioned in SPRUFE8, CMPGTU and CMPLTU support a
648    5-bit unsigned constant operand on C64X and above.  */
649 INSNE(cmpgtu, l_u5_xui_ui, l, 1_or_2_src, 1cycle, C64X, 0,
650       FIX2(FIX(op, 0x4e), RAN(src1, 16, 31)),
651       OP3(OACST, ORXREG1, OWREG1),
652       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, ucst, 0),
653 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
654 INSNE(cmpgtu, l_xui_ul_ui, l, 1_or_2_src, 1cycle, C62X, 0,
655       FIX1(FIX(op, 0x4d)),
656       OP3(ORXREG1, ORREGL1, OWREG1),
657       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
658 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
659 INSNE(cmpgtu, l_u4_ul_ui, l, 1_or_2_src, 1cycle, C62X,
660       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
661       FIX3(FIX(op, 0x4c), FIX(x, 0), RAN(src1, 0, 15)),
662       OP3(OACST, ORREGL1, OWREG1),
663       ENC4(ENC(s, fu, 0), ENC(src1, ucst, 0), ENC(src2, reg, 1),
664 	   ENC(dst, reg, 2)))
665 INSNE(cmpgtu, l_u5_ul_ui, l, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_NO_CROSS,
666       FIX3(FIX(op, 0x4c), FIX(x, 0), RAN(src1, 16, 31)),
667       OP3(OACST, ORREGL1, OWREG1),
668       ENC4(ENC(s, fu, 0), ENC(src1, ucst, 0), ENC(src2, reg, 1),
669 	   ENC(dst, reg, 2)))
670 
671 INSN(cmpgtu4, s, 1_or_2_src, 1cycle, C64X, 0,
672      FIX1(FIX(op, 0x15)),
673      OP3(ORREG1, ORXREG1, OWREG1),
674      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
675 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
676 
677 INSNE(cmplt, l_si_xsi_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
678       FIX1(FIX(op, 0x57)),
679       OP3(ORREG1, ORXREG1, OWREG1),
680       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
681 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
682 INSNE(cmplt, l_s5_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0,
683       FIX1(FIX(op, 0x56)),
684       OP3(OACST, ORXREG1, OWREG1),
685       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
686 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
687 INSNE(cmplt, l_xsi_sl_ui, l, 1_or_2_src, 1cycle, C62X, 0,
688       FIX1(FIX(op, 0x55)),
689       OP3(ORXREG1, ORREGL1, OWREG1),
690       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
691 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
692 INSNE(cmplt, l_s5_sl_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
693       FIX2(FIX(op, 0x54), FIX(x, 0)),
694       OP3(OACST, ORREGL1, OWREG1),
695       ENC4(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(src2, reg, 1),
696 	   ENC(dst, reg, 2)))
697 INSNE(cmplt, l_xsi_si_ui, l, 1_or_2_src, 1cycle, C62X,
698       TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(0),
699       FIX1(FIX(op, 0x47)),
700       OP3(ORXREG1, ORREG1, OWREG1),
701       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 1),
702 	   ENC(src2, reg, 0), ENC(dst, reg, 2)))
703 INSNE(cmplt, l_xsi_s5_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
704       FIX1(FIX(op, 0x46)),
705       OP3(ORXREG1, OACST, OWREG1),
706       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 1),
707 	   ENC(src2, reg, 0), ENC(dst, reg, 2)))
708 INSNE(cmplt, l_sl_xsi_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
709       FIX1(FIX(op, 0x45)),
710       OP3(ORREGL1, ORXREG1, OWREG1),
711       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 1),
712 	   ENC(src2, reg, 0), ENC(dst, reg, 2)))
713 INSNE(cmplt, l_sl_s5_ui, l, 1_or_2_src, 1cycle, C62X,
714       TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS,
715       FIX2(FIX(op, 0x44), FIX(x, 0)),
716       OP3(ORREGL1, OACST, OWREG1),
717       ENC4(ENC(s, fu, 0), ENC(src1, scst, 1), ENC(src2, reg, 0),
718 	   ENC(dst, reg, 2)))
719 
720 INSN(cmplt2, s, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO,
721      FIX1(FIX(op, 0x14)),
722      OP3(ORXREG1, ORREG1, OWREG1),
723      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
724 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
725 
726 INSN(cmpltdp, s, 1_or_2_src, dpcmp, C67X, 0,
727      FIX1(FIX(op, 0x2a)),
728      OP3(ORREGD12, ORXREGD12, OWREG2),
729      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
730 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
731 
732 INSN(cmpltsp, s, 1_or_2_src, 1cycle, C67X, 0,
733      FIX1(FIX(op, 0x3a)),
734      OP3(ORREG1, ORXREG1, OWREG1),
735      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
736 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
737 
738 INSNE(cmpltu, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
739       FIX1(FIX(op, 0x5f)),
740       OP3(ORREG1, ORXREG1, 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(cmpltu, l_u4_xui_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
744       FIX2(FIX(op, 0x5e), RAN(src1, 0, 15)),
745       OP3(OACST, ORXREG1, OWREG1),
746       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, ucst, 0),
747 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
748 INSNE(cmpltu, l_u5_xui_ui, l, 1_or_2_src, 1cycle, C64X, 0,
749       FIX2(FIX(op, 0x5e), RAN(src1, 16, 31)),
750       OP3(OACST, ORXREG1, OWREG1),
751       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, ucst, 0),
752 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
753 INSNE(cmpltu, l_xui_ul_ui, l, 1_or_2_src, 1cycle, C62X, 0,
754       FIX1(FIX(op, 0x5d)),
755       OP3(ORXREG1, ORREGL1, OWREG1),
756       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
757 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
758 INSNE(cmpltu, l_u4_ul_ui, l, 1_or_2_src, 1cycle, C62X,
759       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
760       FIX3(FIX(op, 0x5c), FIX(x, 0), RAN(src1, 0, 15)),
761       OP3(OACST, ORREGL1, OWREG1),
762       ENC4(ENC(s, fu, 0), ENC(src1, ucst, 0), ENC(src2, reg, 1),
763 	   ENC(dst, reg, 2)))
764 INSNE(cmpltu, l_u5_ul_ui, l, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_NO_CROSS,
765       FIX3(FIX(op, 0x5c), FIX(x, 0), RAN(src1, 16, 31)),
766       OP3(OACST, ORREGL1, OWREG1),
767       ENC4(ENC(s, fu, 0), ENC(src1, ucst, 0), ENC(src2, reg, 1),
768 	   ENC(dst, reg, 2)))
769 
770 INSN(cmpltu4, s, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO,
771      FIX1(FIX(op, 0x15)),
772      OP3(ORXREG1, ORREG1, OWREG1),
773      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
774 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
775 
776 INSN(cmpy, m, 1_or_2_src, 4cycle, C64XP, 0,
777      FIX1(FIX(op, 0xa)),
778      OP3(ORREG1, ORXREG1, OWREGD4),
779      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
780 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
781 
782 INSN(cmpyr, m, 1_or_2_src, 4cycle, C64XP, 0,
783      FIX1(FIX(op, 0xb)),
784      OP3(ORREG1, ORXREG1, OWREG4),
785      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
786 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
787 
788 INSN(cmpyr1, m, 1_or_2_src, 4cycle, C64XP, 0,
789      FIX1(FIX(op, 0xc)),
790      OP3(ORREG1, ORXREG1, OWREG4),
791      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
792 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
793 
794 INSN(cmtl, d, 1_or_2_src, load, C64XP,
795      TIC6X_FLAG_LOAD|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_SIDE_T2_ONLY|TIC6X_FLAG_NO_CROSS,
796      FIX3(FIX(s, 1), FIX(op, 0xe), FIX(src1, 0)),
797      OP2(ORMEMDW, OWDREG5),
798      ENC2(ENC(src2, reg, 0), ENC(dst, reg, 1)))
799 
800 INSN(ddotp4, m, 1_or_2_src, 4cycle, C64XP, 0,
801      FIX1(FIX(op, 0x18)),
802      OP3(ORREG1, ORXREG1, OWREGD4),
803      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
804 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
805 
806 INSN(ddotph2, m, 1_or_2_src, 4cycle, C64XP, 0,
807      FIX1(FIX(op, 0x17)),
808      OP3(ORREGD1, ORXREG1, OWREGD4),
809      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
810 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
811 
812 INSN(ddotph2r, m, 1_or_2_src, 4cycle, C64XP, 0,
813      FIX1(FIX(op, 0x15)),
814      OP3(ORREGD1, ORXREG1, OWREG4),
815      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
816 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
817 
818 INSN(ddotpl2, m, 1_or_2_src, 4cycle, C64XP, 0,
819      FIX1(FIX(op, 0x16)),
820      OP3(ORREGD1, ORXREG1, OWREGD4),
821      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
822 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
823 
824 INSN(ddotpl2r, m, 1_or_2_src, 4cycle, C64XP, 0,
825      FIX1(FIX(op, 0x14)),
826      OP3(ORREGD1, ORXREG1, OWREG4),
827      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
828 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
829 
830 INSN(deal, m, unary, 1616_m, C64X, 0,
831      FIX1(FIX(op, 0x1d)),
832      OP2(ORXREG1, OWREG2),
833      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
834 	  ENC(dst, reg, 1)))
835 
836 INSN(dint, nfu, dint, 1cycle, C64XP, 0,
837      FIX1(FIX(s, 0)),
838      OP0(),
839      ENC0())
840 
841 INSN(dmv, s, ext_1_or_2_src, 1cycle, C64XP, 0,
842      FIX1(FIX(op, 0xb)),
843      OP3(ORREG1, ORXREG1, OWREGD1),
844      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
845 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
846 
847 INSNE(dotp2, m_s2_xs2_si, m, compound, 4cycle, C64X, 0,
848       FIX1(FIX(op, 0xc)),
849       OP3(ORREG1, ORXREG1, OWREG4),
850       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
851 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
852 INSNE(dotp2, m_s2_xs2_sll, m, compound, 4cycle, C64X, 0,
853       FIX1(FIX(op, 0xb)),
854       OP3(ORREG1, ORXREG1, OWREGD4),
855       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
856 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
857 
858 INSN(dotpn2, m, compound, 4cycle, C64X, 0,
859      FIX1(FIX(op, 0x9)),
860      OP3(ORREG1, ORXREG1, OWREG4),
861      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
862 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
863 
864 INSN(dotpnrsu2, m, compound, 4cycle, C64X, 0,
865      FIX1(FIX(op, 0x7)),
866      OP3(ORREG1, ORXREG1, OWREG4),
867      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
868 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
869 
870 INSN(dotpnrus2, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
871      FIX1(FIX(op, 0x7)),
872      OP3(ORXREG1, ORREG1, OWREG4),
873      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
874 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
875 
876 INSN(dotprsu2, m, compound, 4cycle, C64X, 0,
877      FIX1(FIX(op, 0xd)),
878      OP3(ORREG1, ORXREG1, OWREG4),
879      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
880 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
881 
882 INSN(dotprus2, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
883      FIX1(FIX(op, 0xd)),
884      OP3(ORXREG1, ORREG1, OWREG4),
885      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
886 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
887 
888 INSN(dotpsu4, m, compound, 4cycle, C64X, 0,
889      FIX1(FIX(op, 0x2)),
890      OP3(ORREG1, ORXREG1, OWREG4),
891      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
892 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
893 
894 INSN(dotpus4, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
895      FIX1(FIX(op, 0x2)),
896      OP3(ORXREG1, ORREG1, OWREG4),
897      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
898 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
899 
900 INSN(dotpu4, m, compound, 4cycle, C64X, 0,
901      FIX1(FIX(op, 0x6)),
902      OP3(ORREG1, ORXREG1, OWREG4),
903      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
904 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
905 
906 INSN(dpack2, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
907      FIX1(FIX(op, 0x34)),
908      OP3(ORREG1, ORXREG1, OWREGD1),
909      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
910 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
911 
912 INSN(dpackx2, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
913      FIX1(FIX(op, 0x33)),
914      OP3(ORREG1, ORXREG1, OWREGD1),
915      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
916 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
917 
918 INSN(dpint, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_NO_CROSS,
919      FIX3(FIX(op, 0x8), FIX(x, 0), FIX(src1, 0)),
920      OP2(ORREGD1, OWREG4),
921      ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
922 
923 INSN(dpsp, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_NO_CROSS,
924      FIX3(FIX(op, 0x9), FIX(x, 0), FIX(src1, 0)),
925      OP2(ORREGD1, OWREG4),
926      ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
927 
928 INSN(dptrunc, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_NO_CROSS,
929      FIX3(FIX(op, 0x1), FIX(x, 0), FIX(src1, 0)),
930      OP2(ORREGD1, OWREG4),
931      ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
932 
933 INSN(ext, s, field, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
934      FIX1(FIX(op, 0x1)),
935      OP4(ORREG1, OACST, OACST, OWREG1),
936      ENC5(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(csta, ucst, 1),
937 	  ENC(cstb, ucst, 2), ENC(dst, reg, 3)))
938 INSN(ext, s, 1_or_2_src, 1cycle, C62X, 0,
939      FIX1(FIX(op, 0x2f)),
940      OP3(ORXREG1, ORREG1, OWREG1),
941      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
942 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
943 
944 INSN(extu, s, field, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
945      FIX1(FIX(op, 0x0)),
946      OP4(ORREG1, OACST, OACST, OWREG1),
947      ENC5(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(csta, ucst, 1),
948 	  ENC(cstb, ucst, 2), ENC(dst, reg, 3)))
949 INSN(extu, s, 1_or_2_src, 1cycle, C62X, 0,
950      FIX1(FIX(op, 0x2b)),
951      OP3(ORXREG1, ORREG1, OWREG1),
952      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
953 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
954 
955 INSN(gmpy, m, 1_or_2_src, 4cycle, C64XP, TIC6X_FLAG_NO_CROSS,
956      FIX2(FIX(op, 0x1f), FIX(x, 0)),
957      OP3(ORREG1, ORREG1, OWREG4),
958      ENC4(ENC(s, fu, 0), ENC(src1, reg, 0), ENC(src2, reg, 1),
959 	  ENC(dst, reg, 2)))
960 
961 /* This instruction can be predicated as usual; SPRUFE8 is incorrect
962    where it shows the "z" field as fixed to 1.  */
963 INSN(gmpy4, m, compound, 4cycle, C64X, 0,
964      FIX1(FIX(op, 0x11)),
965      OP3(ORREG1, ORXREG1, OWREG4),
966      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
967 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
968 
969 INSN(idle, nfu, nop_idle, nop, C62X, TIC6X_FLAG_MCNOP,
970      FIX2(FIX(s, 0), FIX(op, 0xf)),
971      OP0(),
972      ENC0())
973 
974 INSN(intdp, l, 1_or_2_src, intdp, C67X, 0,
975      FIX2(FIX(op, 0x39), FIX(src1, 0)),
976      OP2(ORXREG1, OWREGD45),
977      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
978 	  ENC(dst, reg, 1)))
979 
980 INSN(intdpu, l, 1_or_2_src, intdp, C67X, 0,
981      FIX2(FIX(op, 0x3b), FIX(src1, 0)),
982      OP2(ORXREG1, OWREGD45),
983      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
984 	  ENC(dst, reg, 1)))
985 
986 INSN(intsp, l, 1_or_2_src, 4cycle, C67X, 0,
987      FIX2(FIX(op, 0x4a), FIX(src1, 0)),
988      OP2(ORXREG1, OWREG4),
989      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
990 	  ENC(dst, reg, 1)))
991 
992 INSN(intspu, l, 1_or_2_src, 4cycle, C67X, 0,
993      FIX2(FIX(op, 0x49), FIX(src1, 0)),
994      OP2(ORXREG1, OWREG4),
995      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
996 	  ENC(dst, reg, 1)))
997 
998 INSN(ldb, d, load_store, load, C62X,
999      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
1000      FIX2(FIX(op, 2), FIX(r, 0)),
1001      OP2(ORMEMSB, OWDREG5),
1002      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
1003 	  ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
1004 	  ENC(srcdst, reg, 1)))
1005 INSN(ldb, d, load_store_long, load, C62X,
1006      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
1007      FIX1(FIX(op, 2)),
1008      OP2(ORMEMLB, OWDREG5),
1009      ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_byte, 0),
1010 	  ENC(dst, reg, 1)))
1011 
1012 INSN(ldbu, d, load_store, load, C62X,
1013      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
1014      FIX2(FIX(op, 1), FIX(r, 0)),
1015      OP2(ORMEMSB, OWDREG5),
1016      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
1017 	  ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
1018 	  ENC(srcdst, reg, 1)))
1019 INSN(ldbu, d, load_store_long, load, C62X,
1020      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
1021      FIX1(FIX(op, 1)),
1022      OP2(ORMEMLB, OWDREG5),
1023      ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_byte, 0),
1024 	  ENC(dst, reg, 1)))
1025 
1026 INSN(lddw, d, load_store, load, C64X_AND_C67X,
1027      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS,
1028      FIX2(FIX(op, 6), FIX(r, 1)),
1029      OP2(ORMEMSD, OWDREGD5),
1030      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
1031 	  ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
1032 	  ENC(srcdst, reg, 1)))
1033 
1034 INSN(ldh, d, load_store, load, C62X,
1035      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
1036      FIX2(FIX(op, 4), FIX(r, 0)),
1037      OP2(ORMEMSH, OWDREG5),
1038      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
1039 	  ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
1040 	  ENC(srcdst, reg, 1)))
1041 INSN(ldh, d, load_store_long, load, C62X,
1042      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
1043      FIX1(FIX(op, 4)),
1044      OP2(ORMEMLH, OWDREG5),
1045      ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_half, 0),
1046 	  ENC(dst, reg, 1)))
1047 
1048 INSN(ldhu, d, load_store, load, C62X,
1049      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
1050      FIX2(FIX(op, 0), FIX(r, 0)),
1051      OP2(ORMEMSH, OWDREG5),
1052      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
1053 	  ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
1054 	  ENC(srcdst, reg, 1)))
1055 INSN(ldhu, d, load_store_long, load, C62X,
1056      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
1057      FIX1(FIX(op, 0)),
1058      OP2(ORMEMLH, OWDREG5),
1059      ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_half, 0),
1060 	  ENC(dst, reg, 1)))
1061 
1062 INSN(ldndw, d, load_nonaligned, load, C64X,
1063      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED,
1064      FIX0(),
1065      OP2(ORMEMND, OWDREGD5),
1066      ENC7(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
1067 	  ENC(offsetR, mem_offset_noscale, 0), ENC(baseR, reg, 0),
1068 	  ENC(sc, scaled, 0), ENC(dst, reg_shift, 1)))
1069 
1070 INSN(ldnw, d, load_store, load, C64X,
1071      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED,
1072      FIX2(FIX(op, 3), FIX(r, 1)),
1073      OP2(ORMEMSW, OWDREG5),
1074      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
1075 	  ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
1076 	  ENC(srcdst, reg, 1)))
1077 
1078 INSN(ldw, d, load_store, load, C62X,
1079      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
1080      FIX2(FIX(op, 6), FIX(r, 0)),
1081      OP2(ORMEMSW, OWDREG5),
1082      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
1083 	  ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
1084 	  ENC(srcdst, reg, 1)))
1085 INSN(ldw, d, load_store_long, load, C62X,
1086      TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
1087      FIX1(FIX(op, 6)),
1088      OP2(ORMEMLW, OWDREG5),
1089      ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_word, 0),
1090 	  ENC(dst, reg, 1)))
1091 
1092 INSN(ll, d, 1_or_2_src, load, C64XP,
1093      TIC6X_FLAG_LOAD|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_SIDE_T2_ONLY|TIC6X_FLAG_NO_CROSS,
1094      FIX3(FIX(s, 1), FIX(op, 0xc), FIX(src1, 0)),
1095      OP2(ORMEMDW, OWDREG5),
1096      ENC2(ENC(src2, reg, 0), ENC(dst, reg, 1)))
1097 
1098 INSNE(lmbd, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
1099       FIX1(FIX(op, 0x6b)),
1100       OP3(ORREG1, ORXREG1, OWREG1),
1101       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1102 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1103 INSNE(lmbd, l_s5_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
1104       FIX1(FIX(op, 0x6a)),
1105       OP3(OACST, ORXREG1, OWREG1),
1106       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
1107 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1108 
1109 INSN(max2, l, 1_or_2_src, 1cycle, C64X, 0,
1110      FIX1(FIX(op, 0x42)),
1111      OP3(ORREG1, ORXREG1, OWREG1),
1112      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1113 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1114 INSN(max2, s, ext_1_or_2_src, 1cycle, C64XP, 0,
1115      FIX1(FIX(op, 0xd)),
1116      OP3(ORREG1, ORXREG1, OWREG1),
1117      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1118 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1119 
1120 INSN(maxu4, l, 1_or_2_src, 1cycle, C64X, 0,
1121      FIX1(FIX(op, 0x43)),
1122      OP3(ORREG1, ORXREG1, OWREG1),
1123      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1124 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1125 
1126 INSN(min2, l, 1_or_2_src, 1cycle, C64X, 0,
1127      FIX1(FIX(op, 0x41)),
1128      OP3(ORREG1, ORXREG1, OWREG1),
1129      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1130 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1131 INSN(min2, s, ext_1_or_2_src, 1cycle, C64XP, 0,
1132      FIX1(FIX(op, 0xc)),
1133      OP3(ORREG1, ORXREG1, OWREG1),
1134      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1135 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1136 
1137 INSN(minu4, l, 1_or_2_src, 1cycle, C64X, 0,
1138      FIX1(FIX(op, 0x48)),
1139      OP3(ORREG1, ORXREG1, OWREG1),
1140      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1141 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1142 
1143 INSNE(mpy, m_sl16_xsl16_si, m, mpy, 1616_m, C62X, 0,
1144       FIX1(FIX(op, 0x19)),
1145       OP3(ORREG1, ORXREG1, OWREG2),
1146       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1147 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1148 INSNE(mpy, m_s5_xsl16_si, m, mpy, 1616_m, C62X, 0,
1149       FIX1(FIX(op, 0x18)),
1150       OP3(OACST, ORXREG1, OWREG2),
1151       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
1152 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1153 
1154 INSN(mpydp, m, mpy, mpydp, C67X, TIC6X_FLAG_NO_CROSS,
1155      FIX2(FIX(op, 0x0e), FIX(x, 0)),
1156      OP3(ORREGD1234, ORREGD1324, OWREGD910),
1157      ENC4(ENC(s, fu, 0), ENC(src1, reg, 0), ENC(src2, reg, 1),
1158 	  ENC(dst, reg, 2)))
1159 
1160 INSN(mpyh, m, mpy, 1616_m, C62X, 0,
1161      FIX1(FIX(op, 0x01)),
1162      OP3(ORREG1, ORXREG1, OWREG2),
1163      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1164 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1165 
1166 INSN(mpyhi, m, compound, 4cycle, C64X, 0,
1167      FIX1(FIX(op, 0x14)),
1168      OP3(ORREG1, ORXREG1, OWREGD4),
1169      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1170 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1171 
1172 INSN(mpyhir, m, compound, 4cycle, C64X, 0,
1173      FIX1(FIX(op, 0x10)),
1174      OP3(ORREG1, ORXREG1, OWREG4),
1175      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1176 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1177 
1178 INSN(mpyhl, m, mpy, 1616_m, C62X, 0,
1179      FIX1(FIX(op, 0x09)),
1180      OP3(ORREG1, ORXREG1, OWREG2),
1181      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1182 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1183 
1184 INSN(mpyhlu, m, mpy, 1616_m, C62X, 0,
1185      FIX1(FIX(op, 0x0f)),
1186      OP3(ORREG1, ORXREG1, OWREG2),
1187      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1188 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1189 
1190 INSN(mpyhslu, m, mpy, 1616_m, C62X, 0,
1191      FIX1(FIX(op, 0x0b)),
1192      OP3(ORREG1, ORXREG1, OWREG2),
1193      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1194 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1195 
1196 INSN(mpyhsu, m, mpy, 1616_m, C62X, 0,
1197      FIX1(FIX(op, 0x03)),
1198      OP3(ORREG1, ORXREG1, OWREG2),
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(mpyhu, m, mpy, 1616_m, C62X, 0,
1203      FIX1(FIX(op, 0x07)),
1204      OP3(ORREG1, ORXREG1, OWREG2),
1205      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1206 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1207 
1208 INSN(mpyhuls, m, mpy, 1616_m, C62X, 0,
1209      FIX1(FIX(op, 0x0d)),
1210      OP3(ORREG1, ORXREG1, OWREG2),
1211      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1212 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1213 
1214 INSN(mpyhus, m, mpy, 1616_m, C62X, 0,
1215      FIX1(FIX(op, 0x05)),
1216      OP3(ORREG1, ORXREG1, OWREG2),
1217      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1218 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1219 
1220 INSNE(mpyi, m_si_xsi_si, m, mpy, mpyi, C67X, 0,
1221       FIX1(FIX(op, 0x04)),
1222       OP3(ORREG14, ORXREG14, OWREG9),
1223       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1224 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1225 INSNE(mpyi, m_s5_xsi_si, m, mpy, mpyi, C67X, 0,
1226       FIX1(FIX(op, 0x06)),
1227       OP3(OACST, ORXREG14, OWREG9),
1228       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
1229 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1230 
1231 INSNE(mpyid, m_si_xsi_sll, m, mpy, mpyid, C67X, 0,
1232       FIX1(FIX(op, 0x08)),
1233       OP3(ORREG14, ORXREG14, OWREGD910),
1234       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1235 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1236 INSNE(mpyid, m_s5_xsi_sll, m, mpy, mpyid, C67X, 0,
1237       FIX1(FIX(op, 0x0c)),
1238       OP3(OACST, ORXREG14, OWREGD910),
1239       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
1240 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1241 
1242 INSN(mpyih, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
1243      FIX1(FIX(op, 0x14)),
1244      OP3(ORXREG1, ORREG1, OWREGD4),
1245      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1246 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
1247 
1248 INSN(mpyihr, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
1249      FIX1(FIX(op, 0x10)),
1250      OP3(ORXREG1, ORREG1, OWREG4),
1251      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1252 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
1253 
1254 INSN(mpyil, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
1255      FIX1(FIX(op, 0x15)),
1256      OP3(ORXREG1, ORREG1, OWREGD4),
1257      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1258 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
1259 
1260 INSN(mpyilr, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
1261      FIX1(FIX(op, 0x0e)),
1262      OP3(ORXREG1, ORREG1, OWREG4),
1263      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1264 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
1265 
1266 INSN(mpylh, m, mpy, 1616_m, C62X, 0,
1267      FIX1(FIX(op, 0x11)),
1268      OP3(ORREG1, ORXREG1, OWREG2),
1269      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1270 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1271 
1272 INSN(mpylhu, m, mpy, 1616_m, C62X, 0,
1273      FIX1(FIX(op, 0x17)),
1274      OP3(ORREG1, ORXREG1, OWREG2),
1275      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1276 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1277 
1278 INSN(mpyli, m, compound, 4cycle, C64X, 0,
1279      FIX1(FIX(op, 0x15)),
1280      OP3(ORREG1, ORXREG1, OWREGD4),
1281      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1282 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1283 
1284 INSN(mpylir, m, compound, 4cycle, C64X, 0,
1285      FIX1(FIX(op, 0x0e)),
1286      OP3(ORREG1, ORXREG1, OWREG4),
1287      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1288 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1289 
1290 INSN(mpylshu, m, mpy, 1616_m, C62X, 0,
1291      FIX1(FIX(op, 0x13)),
1292      OP3(ORREG1, ORXREG1, OWREG2),
1293      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1294 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1295 
1296 INSN(mpyluhs, m, mpy, 1616_m, C62X, 0,
1297      FIX1(FIX(op, 0x15)),
1298      OP3(ORREG1, ORXREG1, OWREG2),
1299      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1300 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1301 
1302 INSN(mpysp, m, mpy, 4cycle, C67X, 0,
1303      FIX1(FIX(op, 0x1c)),
1304      OP3(ORREG1, ORXREG1, OWREG4),
1305      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1306 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1307 
1308 /* Contrary to SPRU733A, MPYSPDP and MPYSP2DP are on both C67X and
1309    C67X+.  */
1310 INSN(mpyspdp, m, compound, mpyspdp, C67X, 0,
1311      FIX1(FIX(op, 0x16)),
1312      OP3(ORREG12, ORXREGD12, OWREGD67),
1313      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1314 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1315 
1316 INSN(mpysp2dp, m, compound, mpyspdp, C67X, 0,
1317      FIX1(FIX(op, 0x17)),
1318      OP3(ORREG1, ORXREG1, OWREGD45),
1319      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1320 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1321 
1322 INSNE(mpysu, m_sl16_xul16_si, m, mpy, 1616_m, C62X, 0,
1323       FIX1(FIX(op, 0x1b)),
1324       OP3(ORREG1, ORXREG1, OWREG2),
1325       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1326 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1327 INSNE(mpysu, m_s5_xul16_si, m, mpy, 1616_m, C62X, 0,
1328       FIX1(FIX(op, 0x1e)),
1329       OP3(OACST, ORXREG1, OWREG2),
1330       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
1331 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1332 
1333 INSN(mpysu4, m, compound, 4cycle, C64X, 0,
1334      FIX1(FIX(op, 0x05)),
1335      OP3(ORREG1, ORXREG1, OWREGD4),
1336      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1337 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1338 
1339 INSN(mpyu, m, mpy, 1616_m, C62X, 0,
1340      FIX1(FIX(op, 0x1f)),
1341      OP3(ORREG1, ORXREG1, OWREG2),
1342      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1343 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1344 
1345 INSN(mpyu4, m, compound, 4cycle, C64X, 0,
1346      FIX1(FIX(op, 0x04)),
1347      OP3(ORREG1, ORXREG1, OWREGD4),
1348      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1349 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1350 
1351 INSN(mpyus, m, mpy, 1616_m, C62X, 0,
1352      FIX1(FIX(op, 0x1d)),
1353      OP3(ORREG1, ORXREG1, OWREG2),
1354      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1355 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1356 
1357 INSN(mpyus4, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
1358      FIX1(FIX(op, 0x05)),
1359      OP3(ORXREG1, ORREG1, OWREGD4),
1360      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1361 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
1362 
1363 INSN(mpy2, m, compound, 4cycle, C64X, 0,
1364      FIX1(FIX(op, 0x00)),
1365      OP3(ORREG1, ORXREG1, OWREGD4),
1366      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1367 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1368 
1369 INSN(mpy2ir, m, 1_or_2_src, 4cycle, C64XP, 0,
1370      FIX1(FIX(op, 0x0f)),
1371      OP3(ORREG1, ORXREG1, OWREGD4),
1372      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1373 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1374 
1375 INSNE(mpy32, 32_32_32, m, mpy, 4cycle, C64XP, 0,
1376       FIX1(FIX(op, 0x10)),
1377       OP3(ORREG1, ORXREG1, OWREG4),
1378       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1379 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1380 INSNE(mpy32, 32_32_64, m, mpy, 4cycle, C64XP, 0,
1381       FIX1(FIX(op, 0x14)),
1382       OP3(ORREG1, ORXREG1, OWREGD4),
1383       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1384 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1385 
1386 INSN(mpy32su, m, mpy, 4cycle, C64XP, 0,
1387      FIX1(FIX(op, 0x16)),
1388      OP3(ORREG1, ORXREG1, OWREGD4),
1389      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1390 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1391 
1392 INSN(mpy32u, m, compound, 4cycle, C64XP, 0,
1393      FIX1(FIX(op, 0x18)),
1394      OP3(ORREG1, ORXREG1, OWREGD4),
1395      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1396 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1397 
1398 INSN(mpy32us, m, compound, 4cycle, C64XP, 0,
1399      FIX1(FIX(op, 0x19)),
1400      OP3(ORREG1, ORXREG1, OWREGD4),
1401      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1402 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1403 
1404 /* "or" forms of "mv" are preferred over "add" forms when available
1405    because "or" uses less power.  However, 40-bit moves are only
1406    available through "add", and before C64X D-unit moves are only
1407    available through "add" (without cross paths being available).  */
1408 INSNE(mv, l_xui_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
1409       FIX2(FIX(op, 0x7e), FIX(src1, 0)),
1410       OP2(ORXREG1, OWREG1),
1411       ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1412 	   ENC(dst, reg, 1)))
1413 INSNE(mv, l_sl_sl, l, 1_or_2_src, 1cycle, C62X,
1414       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO,
1415       FIX3(FIX(op, 0x20), FIX(x, 0), FIX(src1, 0)),
1416       OP2(ORREGL1, OWREGL1),
1417       ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
1418 INSNE(mv, s_xui_ui, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
1419       FIX2(FIX(op, 0x1a), FIX(src1, 0)),
1420       OP2(ORXREG1, OWREG1),
1421       ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1422 	   ENC(dst, reg, 1)))
1423 INSNE(mv, d_si_si, d, 1_or_2_src, 1cycle, C62X,
1424       TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(0),
1425       FIX2(FIX(op, 0x12), FIX(src1, 0)),
1426       OP2(ORREG1, OWREG1),
1427       ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
1428 INSNE(mv, d_xui_ui, d, ext_1_or_2_src, 1cycle, C64X,
1429       TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(1),
1430       FIX2(FIX(op, 0x3), FIX(src1, 0)),
1431       OP2(ORXREG1, OWREG1),
1432       ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1433 	   ENC(dst, reg, 1)))
1434 
1435 INSNE(mvc, from_cr, s, 1_or_2_src, 1cycle, C62X,
1436       TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_NO_CROSS,
1437       FIX3(FIX(s, 1), FIX(op, 0x0f), FIX(x, 0)),
1438       OP2(ORCREG1, OWREG1),
1439       ENC3(ENC(src1, crhi, 0), ENC(src2, crlo, 0), ENC(dst, reg, 1)))
1440 INSNE(mvc, to_cr, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_SIDE_B_ONLY,
1441       FIX2(FIX(s, 1), FIX(op, 0x0e)),
1442       OP2(ORXREG1, OWCREG1),
1443       ENC4(ENC(x, xpath, 0), ENC(src2, reg, 0), ENC(src1, crhi, 1),
1444 	   ENC(dst, crlo, 1)))
1445 
1446 INSN(mvd, m, unary, 4cycle, C64X, 0,
1447      FIX1(FIX(op, 0x1a)),
1448      OP2(ORXREG1, OWREG4),
1449      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1450 	  ENC(dst, reg, 1)))
1451 
1452 INSN(mvk, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
1453      FIX1(FIX(h, 0)),
1454      OP2(OLCST, OWREG1),
1455      ENC3(ENC(s, fu, 0), ENC(cst, scst, 0), ENC(dst, reg, 1)))
1456 INSN(mvk, l, unary, 1cycle, C64X, TIC6X_FLAG_NO_CROSS,
1457      FIX2(FIX(x, 0), FIX(op, 0x05)),
1458      OP2(OACST, OWREG1),
1459      ENC3(ENC(s, fu, 0), ENC(src2, scst, 0), ENC(dst, reg, 1)))
1460 INSN(mvk, d, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_NO_CROSS,
1461      FIX2(FIX(op, 0x00), FIX(src2, 0)),
1462      OP2(OACST, OWREG1),
1463      ENC3(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(dst, reg, 1)))
1464 
1465 INSN(mvkh, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
1466      FIX1(FIX(h, 1)),
1467      OP2(OLCST, OWREG1),
1468      ENC3(ENC(s, fu, 0), ENC(cst, lcst_high16, 0), ENC(dst, reg, 1)))
1469 
1470 INSN(mvklh, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO,
1471      FIX1(FIX(h, 1)),
1472      OP2(OLCST, OWREG1),
1473      ENC3(ENC(s, fu, 0), ENC(cst, lcst_low16, 0), ENC(dst, reg, 1)))
1474 
1475 INSN(mvkl, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO,
1476      FIX1(FIX(h, 0)),
1477      OP2(OLCST, OWREG1),
1478      ENC3(ENC(s, fu, 0), ENC(cst, lcst_low16, 0), ENC(dst, reg, 1)))
1479 
1480 INSNE(neg, s_xsi_si, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
1481       FIX2(FIX(op, 0x16), FIX(src1, 0)),
1482       OP2(ORXREG1, OWREG1),
1483       ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1484 	   ENC(dst, reg, 1)))
1485 INSNE(neg, l_xsi_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
1486       FIX2(FIX(op, 0x06), FIX(src1, 0)),
1487       OP2(ORXREG1, OWREG1),
1488       ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1489 	   ENC(dst, reg, 1)))
1490 INSNE(neg, l_sl_sl, l, 1_or_2_src, 1cycle, C62X,
1491       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO,
1492       FIX2(FIX(op, 0x24), FIX(src1, 0)),
1493       OP2(ORREGL1, OWREGL1),
1494       ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1495 	   ENC(dst, reg, 1)))
1496 
1497 INSN(nop, nfu, nop_idle, nop, C62X, 0,
1498      FIX2(FIX(s, 0), RAN(op, 0, 8)),
1499      OP1(OACST),
1500      ENC1(ENC(op, ucst_minus_one, 0)))
1501 INSNE(nop, 1, nfu, nop_idle, nop, C62X, TIC6X_FLAG_MACRO,
1502       FIX2(FIX(s, 0), FIX(op, 0)),
1503       OP0(),
1504       ENC0())
1505 
1506 INSNE(norm, l_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0,
1507       FIX2(FIX(op, 0x63), FIX(src1, 0)),
1508       OP2(ORXREG1, OWREG1),
1509       ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1510 	   ENC(dst, reg, 1)))
1511 INSNE(norm, l_sl_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
1512       FIX3(FIX(op, 0x60), FIX(x, 0), FIX(src1, 0)),
1513       OP2(ORREGL1, OWREG1),
1514       ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
1515 
1516 INSN(not, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
1517      FIX2(FIX(op, 0x6e), FIX(src1, 0x1f)),
1518      OP2(ORXREG1, OWREG1),
1519      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1520 	  ENC(dst, reg, 1)))
1521 INSN(not, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
1522      FIX2(FIX(op, 0x0a), FIX(src1, 0x1f)),
1523      OP2(ORXREG1, OWREG1),
1524      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1525 	  ENC(dst, reg, 1)))
1526 INSN(not, d, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO,
1527      FIX2(FIX(op, 0xf), FIX(src1, 0x1f)),
1528      OP2(ORXREG1, OWREG1),
1529      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1530 	  ENC(dst, reg, 1)))
1531 
1532 INSNE(or, d_ui_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0,
1533       FIX1(FIX(op, 0x2)),
1534       OP3(ORREG1, ORXREG1, OWREG1),
1535       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1536 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1537 INSNE(or, d_s5_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0,
1538       FIX1(FIX(op, 0x3)),
1539       OP3(OACST, ORXREG1, OWREG1),
1540       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
1541 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1542 INSNE(or, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
1543       FIX1(FIX(op, 0x7f)),
1544       OP3(ORREG1, ORXREG1, OWREG1),
1545       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1546 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1547 INSNE(or, l_s5_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
1548       FIX1(FIX(op, 0x7e)),
1549       OP3(OACST, ORXREG1, OWREG1),
1550       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
1551 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1552 INSNE(or, s_ui_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
1553       FIX1(FIX(op, 0x1b)),
1554       OP3(ORREG1, ORXREG1, OWREG1),
1555       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1556 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1557 INSNE(or, s_s5_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
1558       FIX1(FIX(op, 0x1a)),
1559       OP3(OACST, ORXREG1, OWREG1),
1560       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
1561 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1562 
1563 INSN(pack2, l, 1_or_2_src, 1cycle, C64X, 0,
1564      FIX1(FIX(op, 0x0)),
1565      OP3(ORREG1, ORXREG1, OWREG1),
1566      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1567 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1568 INSN(pack2, s, ext_1_or_2_src, 1cycle, C64X, 0,
1569      FIX1(FIX(op, 0xf)),
1570      OP3(ORREG1, ORXREG1, OWREG1),
1571      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1572 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1573 
1574 INSN(packh2, l, 1_or_2_src, 1cycle, C64X, 0,
1575      FIX1(FIX(op, 0x1e)),
1576      OP3(ORREG1, ORXREG1, OWREG1),
1577      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1578 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1579 INSN(packh2, s, 1_or_2_src, 1cycle, C64X, 0,
1580      FIX1(FIX(op, 0x9)),
1581      OP3(ORREG1, ORXREG1, OWREG1),
1582      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1583 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1584 
1585 INSN(packh4, l, 1_or_2_src, 1cycle, C64X, 0,
1586      FIX1(FIX(op, 0x69)),
1587      OP3(ORREG1, ORXREG1, OWREG1),
1588      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1589 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1590 
1591 INSN(packhl2, l, 1_or_2_src, 1cycle, C64X, 0,
1592      FIX1(FIX(op, 0x1c)),
1593      OP3(ORREG1, ORXREG1, OWREG1),
1594      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1595 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1596 INSN(packhl2, s, 1_or_2_src, 1cycle, C64X, 0,
1597      FIX1(FIX(op, 0x8)),
1598      OP3(ORREG1, ORXREG1, OWREG1),
1599      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1600 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1601 
1602 INSN(packlh2, l, 1_or_2_src, 1cycle, C64X, 0,
1603      FIX1(FIX(op, 0x1b)),
1604      OP3(ORREG1, ORXREG1, OWREG1),
1605      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1606 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1607 INSN(packlh2, s, 1_or_2_src, 1cycle, C64X, 0,
1608      FIX1(FIX(op, 0x10)),
1609      OP3(ORREG1, ORXREG1, OWREG1),
1610      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1611 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1612 
1613 INSN(packl4, l, 1_or_2_src, 1cycle, C64X, 0,
1614      FIX1(FIX(op, 0x68)),
1615      OP3(ORREG1, ORXREG1, OWREG1),
1616      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1617 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1618 
1619 INSN(rcpdp, s, 1_or_2_src, 2cycle_dp, C67X, TIC6X_FLAG_NO_CROSS,
1620      FIX3(FIX(op, 0x2d), FIX(x, 0), FIX(src1, 0)),
1621      OP2(ORREGD1, OWREGD12),
1622      ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
1623 
1624 INSN(rcpsp, s, 1_or_2_src, 1cycle, C67X, 0,
1625      FIX2(FIX(op, 0x3d), FIX(src1, 0)),
1626      OP2(ORXREG1, OWREG1),
1627      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1628 	  ENC(dst, reg, 1)))
1629 
1630 INSN(ret, s, ext_branch_cond_imm, branch, C62X,
1631      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN,
1632      FIX0(),
1633      OP1(OLCST),
1634      ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
1635 INSN(ret, s, branch, branch, C62X,
1636      TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN,
1637      FIX1(FIX(s, 1)),
1638      OP1(ORXREG1),
1639      ENC2(ENC(x, xpath, 0), ENC(src2, reg, 0)))
1640 INSN(ret, s, b_irp, branch, C62X,
1641      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN,
1642      FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
1643      OP1(ORIRP1),
1644      ENC0())
1645 INSN(ret, s, b_nrp, branch, C62X,
1646      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN,
1647      FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
1648      OP1(ORNRP1),
1649      ENC0())
1650 
1651 INSN(retp, s, call_imm_nop, branch, C64XP,
1652      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN,
1653      FIX1(FIX(z, 1)),
1654      OP2(OLCST, OWRETREG1),
1655      ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
1656 
1657 INSN(rint, nfu, rint, 1cycle, C64XP, 0,
1658      FIX1(FIX(s, 0)),
1659      OP0(),
1660      ENC0())
1661 
1662 INSNE(rotl, m_ui_xui_ui, m, compound, 1616_m, C64X, 0,
1663       FIX1(FIX(op, 0x1d)),
1664       OP3(ORXREG1, ORREG1, OWREG2),
1665       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1666 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
1667 INSNE(rotl, m_u5_xui_ui, m, compound, 1616_m, C64X, 0,
1668       FIX1(FIX(op, 0x1e)),
1669       OP3(ORXREG1, OACST, OWREG2),
1670       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1671 	   ENC(src1, ucst, 1), ENC(dst, reg, 2)))
1672 
1673 INSN(rpack2, s, ext_1_or_2_src_noncond, 1cycle, C64XP, 0,
1674      FIX2(FIX(op, 0xb), FIX(z, 1)),
1675      OP3(ORREG1, ORXREG1, OWREG1),
1676      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1677 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1678 
1679 INSN(rsqrdp, s, 1_or_2_src, 2cycle_dp, C67X, TIC6X_FLAG_NO_CROSS,
1680      FIX3(FIX(op, 0x2e), FIX(x, 0), FIX(src1, 0)),
1681      OP2(ORREGD1, OWREGD12),
1682      ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
1683 
1684 INSN(rsqrsp, s, 1_or_2_src, 1cycle, C67X, 0,
1685      FIX2(FIX(op, 0x3e), FIX(src1, 0)),
1686      OP2(ORXREG1, OWREG1),
1687      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1688 	  ENC(dst, reg, 1)))
1689 
1690 INSNE(sadd, l_si_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0,
1691       FIX1(FIX(op, 0x13)),
1692       OP3(ORREG1, ORXREG1, OWREG1),
1693       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1694 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1695 INSNE(sadd, l_xsi_sl_sl, l, 1_or_2_src, 1cycle, C62X, 0,
1696       FIX1(FIX(op, 0x31)),
1697       OP3(ORXREG1, ORREGL1, OWREGL1),
1698       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1699 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1700 INSNE(sadd, l_s5_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0,
1701       FIX1(FIX(op, 0x12)),
1702       OP3(OACST, ORXREG1, OWREG1),
1703       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
1704 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1705 INSNE(sadd, l_s5_sl_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
1706       FIX1(FIX(op, 0x30)),
1707       OP3(OACST, ORREGL1, OWREGL1),
1708       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
1709 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
1710 INSNE(sadd, s_si_xsi_si, s, 1_or_2_src, 1cycle, C64X, 0,
1711       FIX1(FIX(op, 0x20)),
1712       OP3(ORREG1, ORXREG1, OWREG1),
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(sadd2, s, ext_1_or_2_src, 1cycle, C64X, 0,
1717      FIX1(FIX(op, 0x0)),
1718      OP3(ORREG1, ORXREG1, OWREG1),
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(saddsub, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
1723      FIX1(FIX(op, 0x0e)),
1724      OP3(ORREG1, ORXREG1, OWREGD1),
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(saddsub2, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
1729      FIX1(FIX(op, 0x0f)),
1730      OP3(ORREG1, ORXREG1, OWREGD1),
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 INSN(saddsu2, s, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO,
1735      FIX1(FIX(op, 0x1)),
1736      OP3(ORXREG1, ORREG1, OWREG1),
1737      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1738 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
1739 
1740 INSN(saddus2, s, ext_1_or_2_src, 1cycle, C64X, 0,
1741      FIX1(FIX(op, 0x1)),
1742      OP3(ORREG1, ORXREG1, OWREG1),
1743      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1744 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1745 
1746 INSN(saddu4, s, ext_1_or_2_src, 1cycle, C64X, 0,
1747      FIX1(FIX(op, 0x3)),
1748      OP3(ORREG1, ORXREG1, OWREG1),
1749      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1750 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1751 
1752 INSN(sat, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
1753      FIX3(FIX(op, 0x40), FIX(x, 0), FIX(src1, 0)),
1754      OP2(ORREGL1, OWREG1),
1755      ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
1756 
1757 INSN(set, s, field, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
1758      FIX1(FIX(op, 0x2)),
1759      OP4(ORREG1, OACST, OACST, OWREG1),
1760      ENC5(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(csta, ucst, 1),
1761 	  ENC(cstb, ucst, 2), ENC(dst, reg, 3)))
1762 INSN(set, s, 1_or_2_src, 1cycle, C62X, 0,
1763      FIX1(FIX(op, 0x3b)),
1764      OP3(ORXREG1, ORREG1, OWREG1),
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(shfl, m, unary, 1616_m, C64X, 0,
1769      FIX1(FIX(op, 0x1c)),
1770      OP2(ORXREG1, OWREG2),
1771      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1772 	  ENC(dst, reg, 1)))
1773 
1774 INSN(shfl3, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
1775      FIX1(FIX(op, 0x36)),
1776      OP3(ORREG1, ORXREG1, OWREGD1),
1777      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1778 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1779 
1780 INSNE(shl, s_xsi_ui_si, s, 1_or_2_src, 1cycle, C62X, 0,
1781       FIX1(FIX(op, 0x33)),
1782       OP3(ORXREG1, ORREG1, OWREG1),
1783       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1784 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
1785 INSNE(shl, s_sl_ui_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
1786       FIX2(FIX(op, 0x31), FIX(x, 0)),
1787       OP3(ORREGL1, ORREG1, OWREGL1),
1788       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
1789 	   ENC(dst, reg, 2)))
1790 INSNE(shl, s_xui_ui_ul, s, 1_or_2_src, 1cycle, C62X, 0,
1791       FIX1(FIX(op, 0x13)),
1792       OP3(ORXREG1, ORREG1, OWREGL1),
1793       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1794 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
1795 INSNE(shl, s_xsi_u5_si, s, 1_or_2_src, 1cycle, C62X, 0,
1796       FIX1(FIX(op, 0x32)),
1797       OP3(ORXREG1, OACST, OWREG1),
1798       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1799 	   ENC(src1, ucst, 1), ENC(dst, reg, 2)))
1800 INSNE(shl, s_sl_u5_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
1801       FIX2(FIX(op, 0x30), FIX(x, 0)),
1802       OP3(ORREGL1, OACST, OWREGL1),
1803       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
1804 	   ENC(dst, reg, 2)))
1805 INSNE(shl, s_xui_u5_ul, s, 1_or_2_src, 1cycle, C62X, 0,
1806       FIX1(FIX(op, 0x12)),
1807       OP3(ORXREG1, OACST, OWREGL1),
1808       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1809 	   ENC(src1, ucst, 1), ENC(dst, reg, 2)))
1810 
1811 INSN(shlmb, l, 1_or_2_src, 1cycle, C64X, 0,
1812      FIX1(FIX(op, 0x61)),
1813      OP3(ORREG1, ORXREG1, OWREG1),
1814      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1815 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1816 INSN(shlmb, s, ext_1_or_2_src, 1cycle, C64X, 0,
1817      FIX1(FIX(op, 0x9)),
1818      OP3(ORREG1, ORXREG1, OWREG1),
1819      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1820 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1821 
1822 INSNE(shr, s_xsi_ui_si, s, 1_or_2_src, 1cycle, C62X, 0,
1823       FIX1(FIX(op, 0x37)),
1824       OP3(ORXREG1, ORREG1, OWREG1),
1825       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1826 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
1827 INSNE(shr, s_sl_ui_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
1828       FIX2(FIX(op, 0x35), FIX(x, 0)),
1829       OP3(ORREGL1, ORREG1, OWREGL1),
1830       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
1831 	   ENC(dst, reg, 2)))
1832 INSNE(shr, s_xsi_u5_si, s, 1_or_2_src, 1cycle, C62X, 0,
1833       FIX1(FIX(op, 0x36)),
1834       OP3(ORXREG1, OACST, OWREG1),
1835       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1836 	   ENC(src1, ucst, 1), ENC(dst, reg, 2)))
1837 INSNE(shr, s_sl_u5_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
1838       FIX2(FIX(op, 0x34), FIX(x, 0)),
1839       OP3(ORREGL1, OACST, OWREGL1),
1840       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
1841 	   ENC(dst, reg, 2)))
1842 
1843 INSNE(shr2, s_xs2_ui_s2, s, ext_1_or_2_src, 1cycle, C64X, 0,
1844       FIX1(FIX(op, 0x7)),
1845       OP3(ORXREG1, ORREG1, OWREG1),
1846       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1847 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
1848 INSNE(shr2, s_xs2_u5_s2, s, 1_or_2_src, 1cycle, C64X, 0,
1849       FIX1(FIX(op, 0x18)),
1850       OP3(ORXREG1, OACST, OWREG1),
1851       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1852 	   ENC(src1, ucst, 1), ENC(dst, reg, 2)))
1853 
1854 INSN(shrmb, l, 1_or_2_src, 1cycle, C64X, 0,
1855      FIX1(FIX(op, 0x62)),
1856      OP3(ORREG1, ORXREG1, OWREG1),
1857      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1858 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1859 INSN(shrmb, s, ext_1_or_2_src, 1cycle, C64X, 0,
1860      FIX1(FIX(op, 0xa)),
1861      OP3(ORREG1, ORXREG1, OWREG1),
1862      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1863 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1864 
1865 INSNE(shru, s_xui_ui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
1866       FIX1(FIX(op, 0x27)),
1867       OP3(ORXREG1, ORREG1, OWREG1),
1868       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1869 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
1870 INSNE(shru, s_ul_ui_ul, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
1871       FIX2(FIX(op, 0x25), FIX(x, 0)),
1872       OP3(ORREGL1, ORREG1, OWREGL1),
1873       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
1874 	   ENC(dst, reg, 2)))
1875 INSNE(shru, s_xui_u5_ui, s, 1_or_2_src, 1cycle, C62X, 0,
1876       FIX1(FIX(op, 0x26)),
1877       OP3(ORXREG1, OACST, OWREG1),
1878       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1879 	   ENC(src1, ucst, 1), ENC(dst, reg, 2)))
1880 INSNE(shru, s_ul_u5_ul, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
1881       FIX2(FIX(op, 0x24), FIX(x, 0)),
1882       OP3(ORREGL1, OACST, OWREGL1),
1883       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
1884 	   ENC(dst, reg, 2)))
1885 
1886 INSNE(shru2, s_xu2_ui_u2, s, ext_1_or_2_src, 1cycle, C64X, 0,
1887       FIX1(FIX(op, 0x8)),
1888       OP3(ORXREG1, ORREG1, OWREG1),
1889       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1890 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
1891 INSNE(shru2, s_xu2_u5_u2, s, 1_or_2_src, 1cycle, C64X, 0,
1892       FIX1(FIX(op, 0x19)),
1893       OP3(ORXREG1, OACST, OWREG1),
1894       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1895 	   ENC(src1, ucst, 1), ENC(dst, reg, 2)))
1896 
1897 INSN(sl, d, 1_or_2_src, store, C64XP,
1898      TIC6X_FLAG_STORE|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_SIDE_T2_ONLY|TIC6X_FLAG_NO_CROSS,
1899      FIX3(FIX(s, 1), FIX(op, 0xd), FIX(src1, 0)),
1900      OP2(ORDREG1, OWMEMDW),
1901      ENC2(ENC(dst, reg, 0), ENC(src2, reg, 1)))
1902 
1903 INSN(smpy, m, mpy, 1616_m, C62X, 0,
1904      FIX1(FIX(op, 0x1a)),
1905      OP3(ORREG1, ORXREG1, OWREG2),
1906      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1907 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1908 
1909 INSN(smpyh, m, mpy, 1616_m, C62X, 0,
1910      FIX1(FIX(op, 0x02)),
1911      OP3(ORREG1, ORXREG1, OWREG2),
1912      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1913 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1914 
1915 INSN(smpyhl, m, mpy, 1616_m, C62X, 0,
1916      FIX1(FIX(op, 0x0a)),
1917      OP3(ORREG1, ORXREG1, OWREG2),
1918      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1919 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1920 
1921 INSN(smpylh, m, mpy, 1616_m, C62X, 0,
1922      FIX1(FIX(op, 0x12)),
1923      OP3(ORREG1, ORXREG1, OWREG2),
1924      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1925 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1926 
1927 INSN(smpy2, m, compound, 4cycle, C64X, 0,
1928      FIX1(FIX(op, 0x01)),
1929      OP3(ORREG1, ORXREG1, OWREGD4),
1930      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1931 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1932 
1933 /* Contrary to SPRUFE8, this is the correct operand order for this
1934    instruction.  */
1935 INSN(smpy32, m, 1_or_2_src, 4cycle, C64XP, 0,
1936      FIX1(FIX(op, 0x19)),
1937      OP3(ORREG1, ORXREG1, OWREG4),
1938      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1939 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1940 
1941 INSN(spack2, s, ext_1_or_2_src, 1cycle, C64X, 0,
1942      FIX1(FIX(op, 0x2)),
1943      OP3(ORREG1, ORXREG1, OWREG1),
1944      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1945 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1946 
1947 INSN(spacku4, s, ext_1_or_2_src, 1cycle, C64X, 0,
1948      FIX1(FIX(op, 0x4)),
1949      OP3(ORREG1, ORXREG1, OWREG1),
1950      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
1951 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
1952 
1953 INSN(spdp, s, 1_or_2_src, 2cycle_dp, C67X, 0,
1954      FIX2(FIX(op, 0x02), FIX(src1, 0)),
1955      OP2(ORXREG1, OWREGD12),
1956      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1957 	  ENC(dst, reg, 1)))
1958 
1959 INSN(spint, l, 1_or_2_src, 4cycle, C67X, 0,
1960      FIX2(FIX(op, 0x0a), FIX(src1, 0)),
1961      OP2(ORXREG1, OWREG4),
1962      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
1963 	  ENC(dst, reg, 1)))
1964 
1965 INSNE(spkernel, nfu_2, nfu, spkernel, 1cycle, C64XP,
1966       TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPKERNEL,
1967       FIX1(FIX(s, 0)),
1968       OP2(OACST, OACST),
1969       ENC2(ENC(fstgfcyc, fstg, 0), ENC(fstgfcyc, fcyc, 1)))
1970 INSNE(spkernel, nfu_0, nfu, spkernel, 1cycle, C64XP,
1971       TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPKERNEL|TIC6X_FLAG_MACRO,
1972       FIX2(FIX(s, 0), FIX(fstgfcyc, 0)),
1973       OP0(),
1974       ENC0())
1975 
1976 INSN(spkernelr, nfu, spkernelr, 1cycle, C64XP,
1977      TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPKERNEL,
1978      FIX1(FIX(s, 0)),
1979      OP0(),
1980      ENC0())
1981 
1982 INSN(sploop, nfu, loop_buffer, 1cycle, C64XP,
1983      TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP,
1984      FIX4(FIX(s, 0), FIX(op, 0xc), FIX(csta, 0), RAN(cstb, 0, 13)),
1985      OP1(OACST),
1986      ENC1(ENC(cstb, ucst_minus_one, 0)))
1987 
1988 INSN(sploopd, nfu, loop_buffer, 1cycle, C64XP,
1989      TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP,
1990      FIX4(FIX(s, 0), FIX(op, 0xd), FIX(csta, 0), RAN(cstb, 0, 13)),
1991      OP1(OACST),
1992      ENC1(ENC(cstb, ucst_minus_one, 0)))
1993 
1994 INSN(sploopw, nfu, loop_buffer, 1cycle, C64XP,
1995      TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP,
1996      FIX4(FIX(s, 0), FIX(op, 0xf), FIX(csta, 0), RAN(cstb, 0, 13)),
1997      OP1(OACST),
1998      ENC1(ENC(cstb, ucst_minus_one, 0)))
1999 
2000 /* Contrary to SPRUFE8, this is the correct encoding for this
2001    instruction.  */
2002 INSN(spmask, nfu, spmask, 1cycle, C64XP, TIC6X_FLAG_FIRST|TIC6X_FLAG_SPMASK,
2003      FIX2(FIX(s, 0), FIX(op, 0x8)),
2004      OP1(OFULIST),
2005      ENC1(ENC(mask, spmask, 0)))
2006 
2007 INSN(spmaskr, nfu, spmask, 1cycle, C64XP, TIC6X_FLAG_FIRST|TIC6X_FLAG_SPMASK,
2008      FIX2(FIX(s, 0), FIX(op, 0x9)),
2009      OP1(OFULIST),
2010      ENC1(ENC(mask, spmask, 0)))
2011 
2012 INSN(sptrunc, l, 1_or_2_src, 4cycle, C67X, 0,
2013      FIX2(FIX(op, 0x0b), FIX(src1, 0)),
2014      OP2(ORXREG1, OWREG4),
2015      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
2016 	  ENC(dst, reg, 1)))
2017 
2018 INSNE(sshl, s_xsi_ui_si, s, 1_or_2_src, 1cycle, C62X, 0,
2019       FIX1(FIX(op, 0x23)),
2020       OP3(ORXREG1, ORREG1, OWREG1),
2021       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
2022 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
2023 INSNE(sshl, s_xsi_u5_si, s, 1_or_2_src, 1cycle, C62X, 0,
2024       FIX1(FIX(op, 0x22)),
2025       OP3(ORXREG1, OACST, OWREG1),
2026       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
2027 	   ENC(src1, ucst, 1), ENC(dst, reg, 2)))
2028 
2029 INSN(sshvl, m, compound, 1616_m, C64X, 0,
2030      FIX1(FIX(op, 0x1c)),
2031      OP3(ORXREG1, ORREG1, OWREG2),
2032      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
2033 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
2034 
2035 /* Contrary to SPRUFE8, this is the correct encoding for this
2036    instruction.  */
2037 INSN(sshvr, m, compound, 1616_m, C64X, 0,
2038      FIX1(FIX(op, 0x1a)),
2039      OP3(ORXREG1, ORREG1, OWREG2),
2040      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
2041 	  ENC(src1, reg, 1), ENC(dst, reg, 2)))
2042 
2043 INSNE(ssub, l_si_xsi_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
2044       FIX1(FIX(op, 0x0f)),
2045       OP3(ORREG1, ORXREG1, OWREG1),
2046       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2047 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2048 INSNE(ssub, l_xsi_si_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0),
2049       FIX1(FIX(op, 0x1f)),
2050       OP3(ORXREG1, ORREG1, OWREG1),
2051       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2052 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2053 INSNE(ssub, l_s5_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0,
2054       FIX1(FIX(op, 0x0e)),
2055       OP3(OACST, ORXREG1, OWREG1),
2056       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
2057 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2058 INSNE(ssub, l_s5_sl_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
2059       FIX1(FIX(op, 0x2c)),
2060       OP3(OACST, ORREGL1, OWREGL1),
2061       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
2062 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2063 
2064 INSN(ssub2, l, 1_or_2_src, 1cycle, C64XP, 0,
2065      FIX1(FIX(op, 0x64)),
2066      OP3(ORREG1, ORXREG1, OWREG1),
2067      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2068 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
2069 
2070 INSN(stb, d, load_store, store, C62X,
2071      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
2072      FIX2(FIX(op, 3), FIX(r, 0)),
2073      OP2(ORDREG1, OWMEMSB),
2074      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1),
2075 	  ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1),
2076 	  ENC(srcdst, reg, 0)))
2077 INSN(stb, d, load_store_long, store, C62X,
2078      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
2079      FIX1(FIX(op, 3)),
2080      OP2(ORDREG1, OWMEMLB),
2081      ENC4(ENC(s, data_fu, 0), ENC(y, areg, 1), ENC(offsetR, ulcst_dpr_byte, 1),
2082 	  ENC(dst, reg, 0)))
2083 
2084 INSN(stdw, d, load_store, store, C64X, TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS,
2085      FIX2(FIX(op, 4), FIX(r, 1)),
2086      OP2(ORDREGD1, OWMEMSD),
2087      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1),
2088 	  ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1),
2089 	  ENC(srcdst, reg, 0)))
2090 
2091 INSN(sth, d, load_store, store, C62X,
2092      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
2093      FIX2(FIX(op, 5), FIX(r, 0)),
2094      OP2(ORDREG1, OWMEMSH),
2095      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1),
2096 	  ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1),
2097 	  ENC(srcdst, reg, 0)))
2098 INSN(sth, d, load_store_long, store, C62X,
2099      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
2100      FIX1(FIX(op, 5)),
2101      OP2(ORDREG1, OWMEMLH),
2102      ENC4(ENC(s, data_fu, 0), ENC(y, areg, 1), ENC(offsetR, ulcst_dpr_half, 1),
2103 	  ENC(dst, reg, 0)))
2104 
2105 INSN(stndw, d, store_nonaligned, store, C64X,
2106      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED,
2107      FIX0(),
2108      OP2(ORDREGD1, OWMEMND),
2109      ENC7(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1),
2110 	  ENC(offsetR, mem_offset_noscale, 1), ENC(baseR, reg, 1),
2111 	  ENC(sc, scaled, 1), ENC(src, reg_shift, 0)))
2112 
2113 INSN(stnw, d, load_store, store, C64X,
2114      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED,
2115      FIX2(FIX(op, 5), FIX(r, 1)),
2116      OP2(ORDREG1, OWMEMSW),
2117      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1),
2118 	  ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1),
2119 	  ENC(srcdst, reg, 0)))
2120 
2121 INSN(stw, d, load_store, store, C62X,
2122      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
2123      FIX2(FIX(op, 7), FIX(r, 0)),
2124      OP2(ORDREG1, OWMEMSW),
2125      ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1),
2126 	  ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1),
2127 	  ENC(srcdst, reg, 0)))
2128 INSN(stw, d, load_store_long, store, C62X,
2129      TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
2130      FIX1(FIX(op, 7)),
2131      OP2(ORDREG1, OWMEMLW),
2132      ENC4(ENC(s, data_fu, 0), ENC(y, areg, 1), ENC(offsetR, ulcst_dpr_word, 1),
2133 	  ENC(dst, reg, 0)))
2134 
2135 INSNE(sub, l_si_xsi_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
2136       FIX1(FIX(op, 0x07)),
2137       OP3(ORREG1, ORXREG1, OWREG1),
2138       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2139 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2140 INSNE(sub, l_xsi_si_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0),
2141       FIX1(FIX(op, 0x17)),
2142       OP3(ORXREG1, ORREG1, OWREG1),
2143       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2144 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2145 INSNE(sub, l_si_xsi_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
2146       FIX1(FIX(op, 0x27)),
2147       OP3(ORREG1, ORXREG1, OWREGL1),
2148       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2149 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2150 INSNE(sub, l_xsi_si_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0),
2151       FIX1(FIX(op, 0x37)),
2152       OP3(ORXREG1, ORREG1, OWREGL1),
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(sub, l_s5_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0,
2156       FIX1(FIX(op, 0x06)),
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(sub, l_s5_sl_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
2161       FIX1(FIX(op, 0x24)),
2162       OP3(OACST, ORREGL1, OWREGL1),
2163       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
2164 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2165 INSNE(sub, l_xsi_s5_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
2166       FIX1(FIX(op, 0x2)),
2167       OP3(ORXREG1, OACST, OWREG1),
2168       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst_negate, 1),
2169 	   ENC(src2, reg, 0), ENC(dst, reg, 2)))
2170 INSNE(sub, l_sl_s5_sl, l, 1_or_2_src, 1cycle, C62X,
2171       TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS,
2172       FIX2(FIX(op, 0x20), FIX(x, 0)),
2173       OP3(ORREGL1, OACST, OWREGL1),
2174       ENC4(ENC(s, fu, 0), ENC(src1, scst_negate, 1), ENC(src2, reg, 0),
2175 	   ENC(dst, reg, 2)))
2176 INSNE(sub, s_si_xsi_si, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
2177       FIX1(FIX(op, 0x17)),
2178       OP3(ORREG1, ORXREG1, OWREG1),
2179       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2180 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2181 INSNE(sub, s_s5_xsi_si, s, 1_or_2_src, 1cycle, C62X, 0,
2182       FIX1(FIX(op, 0x16)),
2183       OP3(OACST, ORXREG1, OWREG1),
2184       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
2185 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2186 /* Contrary to SPRUFE8, this is the correct encoding for this
2187    instruction; this instruction can be predicated.  */
2188 INSNE(sub, s_xsi_si_si, s, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_PREFER(0),
2189       FIX1(FIX(op, 0x5)),
2190       OP3(ORXREG1, ORREG1, OWREG1),
2191       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
2192 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
2193 INSNE(sub, s_xsi_s5_si, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
2194       FIX1(FIX(op, 0x6)),
2195       OP3(ORXREG1, OACST, OWREG1),
2196       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst_negate, 1),
2197 	   ENC(src2, reg, 0), ENC(dst, reg, 2)))
2198 INSNE(sub, d_si_si_si, d, 1_or_2_src, 1cycle, C62X,
2199       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
2200       FIX1(FIX(op, 0x11)),
2201       OP3(ORREG1, ORREG1, OWREG1),
2202       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
2203 	   ENC(dst, reg, 2)))
2204 INSNE(sub, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
2205       FIX1(FIX(op, 0x13)),
2206       OP3(ORREG1, OACST, OWREG1),
2207       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
2208 	   ENC(dst, reg, 2)))
2209 INSNE(sub, d_si_xsi_si, d, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_PREFER(0),
2210       FIX1(FIX(op, 0xc)),
2211       OP3(ORREG1, ORXREG1, OWREG1),
2212       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2213 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2214 
2215 INSNE(subab, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
2216       FIX1(FIX(op, 0x31)),
2217       OP3(ORREG1, ORREG1, OWREG1),
2218       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
2219 	   ENC(dst, reg, 2)))
2220 INSNE(subab, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
2221       FIX1(FIX(op, 0x33)),
2222       OP3(ORREG1, OACST, OWREG1),
2223       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
2224 	   ENC(dst, reg, 2)))
2225 
2226 INSN(subabs4, l, 1_or_2_src, 1cycle, C64X, 0,
2227      FIX1(FIX(op, 0x5a)),
2228      OP3(ORREG1, ORXREG1, OWREG1),
2229      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2230 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
2231 
2232 INSNE(subah, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
2233       FIX1(FIX(op, 0x35)),
2234       OP3(ORREG1, ORREG1, OWREG1),
2235       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
2236 	   ENC(dst, reg, 2)))
2237 INSNE(subah, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
2238       FIX1(FIX(op, 0x37)),
2239       OP3(ORREG1, OACST, OWREG1),
2240       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
2241 	   ENC(dst, reg, 2)))
2242 
2243 INSNE(subaw, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
2244       FIX1(FIX(op, 0x39)),
2245       OP3(ORREG1, ORREG1, OWREG1),
2246       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
2247 	   ENC(dst, reg, 2)))
2248 INSNE(subaw, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
2249       FIX1(FIX(op, 0x3b)),
2250       OP3(ORREG1, OACST, OWREG1),
2251       ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
2252 	   ENC(dst, reg, 2)))
2253 
2254 INSN(subc, l, 1_or_2_src, 1cycle, C62X, 0,
2255      FIX1(FIX(op, 0x4b)),
2256      OP3(ORREG1, ORXREG1, OWREG1),
2257      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2258 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
2259 
2260 INSNE(subdp, l_dp_xdp_dp, l, 1_or_2_src, addsubdp, C67X, TIC6X_FLAG_PREFER(1),
2261       FIX1(FIX(op, 0x19)),
2262       OP3(ORREGD12, ORXREGD12, OWREGD67),
2263       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2264 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2265 INSNE(subdp, l_xdp_dp_dp, l, 1_or_2_src, addsubdp, C67X, TIC6X_FLAG_PREFER(0),
2266       FIX1(FIX(op, 0x1d)),
2267       OP3(ORXREGD12, ORREGD12, OWREGD67),
2268       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2269 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2270 INSNE(subdp, s_dp_xdp_dp, s, l_1_or_2_src, addsubdp, C67XP,
2271       TIC6X_FLAG_PREFER(1),
2272       FIX1(FIX(op, 0x73)),
2273       OP3(ORREGD12, ORXREGD12, OWREGD67),
2274       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2275 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2276 INSNE(subdp, s_xdp_dp_dp, s, l_1_or_2_src, addsubdp, C67XP,
2277       TIC6X_FLAG_PREFER(0),
2278       FIX1(FIX(op, 0x77)),
2279       OP3(ORXREGD12, ORREGD12, OWREGD67),
2280       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
2281 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
2282 
2283 INSNE(subsp, l_sp_xsp_sp, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_PREFER(1),
2284       FIX1(FIX(op, 0x11)),
2285       OP3(ORREG1, ORXREG1, OWREG4),
2286       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2287 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2288 INSNE(subsp, l_xsp_sp_sp, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_PREFER(0),
2289       FIX1(FIX(op, 0x15)),
2290       OP3(ORXREG1, ORREG1, OWREG4),
2291       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2292 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2293 INSNE(subsp, s_sp_xsp_sp, s, l_1_or_2_src, 4cycle, C67XP,
2294       TIC6X_FLAG_PREFER(1),
2295       FIX1(FIX(op, 0x71)),
2296       OP3(ORREG1, ORXREG1, OWREG4),
2297       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2298 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2299 INSNE(subsp, s_xsp_sp_sp, s, l_1_or_2_src, 4cycle, C67XP,
2300       TIC6X_FLAG_PREFER(0),
2301       FIX1(FIX(op, 0x75)),
2302       OP3(ORXREG1, ORREG1, OWREG4),
2303       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
2304 	   ENC(src1, reg, 1), ENC(dst, reg, 2)))
2305 
2306 INSNE(subu, l_ui_xui_ul, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
2307       FIX1(FIX(op, 0x2f)),
2308       OP3(ORREG1, ORXREG1, OWREGL1),
2309       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2310 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2311 INSNE(subu, l_xui_ui_ul, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0),
2312       FIX1(FIX(op, 0x3f)),
2313       OP3(ORXREG1, ORREG1, OWREGL1),
2314       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2315 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2316 
2317 INSN(sub2, l, 1_or_2_src, 1cycle, C64X, 0,
2318      FIX1(FIX(op, 0x04)),
2319      OP3(ORREG1, ORXREG1, OWREG1),
2320      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2321 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
2322 INSN(sub2, s, 1_or_2_src, 1cycle, C62X, 0,
2323      FIX1(FIX(op, 0x11)),
2324      OP3(ORREG1, ORXREG1, OWREG1),
2325      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2326 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
2327 INSN(sub2, d, ext_1_or_2_src, 1cycle, C64X, 0,
2328      FIX1(FIX(op, 0x5)),
2329      OP3(ORREG1, ORXREG1, OWREG1),
2330      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2331 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
2332 
2333 INSN(sub4, l, 1_or_2_src, 1cycle, C64X, 0,
2334      FIX1(FIX(op, 0x66)),
2335      OP3(ORREG1, ORXREG1, OWREG1),
2336      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2337 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
2338 
2339 INSN(swap2, l, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS,
2340      FIX2(FIX(op, 0x1b), FIX(x, 0)),
2341      OP2(ORREG1, OWREG1),
2342      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2343 	  ENC(src2, reg, 0), ENC(dst, reg, 1)))
2344 INSN(swap2, s, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS,
2345      FIX2(FIX(op, 0x10), FIX(x, 0)),
2346      OP2(ORREG1, OWREG1),
2347      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2348 	  ENC(src2, reg, 0), ENC(dst, reg, 1)))
2349 
2350 /* Contrary to SPRUFE8, this is the correct encoding for this
2351    instruction.  */
2352 INSN(swap4, l, unary, 1cycle, C64X, 0,
2353      FIX1(FIX(op, 0x1)),
2354      OP2(ORXREG1, OWREG1),
2355      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
2356 	  ENC(dst, reg, 1)))
2357 
2358 INSN(swe, nfu, swe, 1cycle, C64XP, 0,
2359      FIX1(FIX(s, 0)),
2360      OP0(),
2361      ENC0())
2362 
2363 INSN(swenr, nfu, swenr, 1cycle, C64XP, 0,
2364      FIX1(FIX(s, 0)),
2365      OP0(),
2366      ENC0())
2367 
2368 INSN(unpkhu4, l, unary, 1cycle, C64X, 0,
2369      FIX1(FIX(op, 0x03)),
2370      OP2(ORXREG1, OWREG1),
2371      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
2372 	  ENC(dst, reg, 1)))
2373 INSN(unpkhu4, s, unary, 1cycle, C64X, 0,
2374      FIX1(FIX(op, 0x03)),
2375      OP2(ORXREG1, OWREG1),
2376      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
2377 	  ENC(dst, reg, 1)))
2378 
2379 INSN(unpklu4, l, unary, 1cycle, C64X, 0,
2380      FIX1(FIX(op, 0x02)),
2381      OP2(ORXREG1, OWREG1),
2382      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
2383 	  ENC(dst, reg, 1)))
2384 INSN(unpklu4, s, unary, 1cycle, C64X, 0,
2385      FIX1(FIX(op, 0x02)),
2386      OP2(ORXREG1, OWREG1),
2387      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
2388 	  ENC(dst, reg, 1)))
2389 
2390 INSNE(xor, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
2391       FIX1(FIX(op, 0x6f)),
2392       OP3(ORREG1, ORXREG1, OWREG1),
2393       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2394 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2395 INSNE(xor, l_s5_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
2396       FIX1(FIX(op, 0x6e)),
2397       OP3(OACST, ORXREG1, OWREG1),
2398       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
2399 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2400 INSNE(xor, s_ui_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
2401       FIX1(FIX(op, 0x0b)),
2402       OP3(ORREG1, ORXREG1, OWREG1),
2403       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2404 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2405 INSNE(xor, s_s5_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
2406       FIX1(FIX(op, 0x0a)),
2407       OP3(OACST, ORXREG1, OWREG1),
2408       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
2409 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2410 INSNE(xor, d_ui_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0,
2411       FIX1(FIX(op, 0xe)),
2412       OP3(ORREG1, ORXREG1, OWREG1),
2413       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2414 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2415 INSNE(xor, d_s5_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0,
2416       FIX1(FIX(op, 0xf)),
2417       OP3(OACST, ORXREG1, OWREG1),
2418       ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
2419 	   ENC(src2, reg, 1), ENC(dst, reg, 2)))
2420 
2421 INSN(xormpy, m, 1_or_2_src, 4cycle, C64XP, 0,
2422      FIX1(FIX(op, 0x1b)),
2423      OP3(ORREG1, ORXREG1, OWREG4),
2424      ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
2425 	  ENC(src2, reg, 1), ENC(dst, reg, 2)))
2426 
2427 INSN(xpnd2, m, unary, 1616_m, C64X, 0,
2428      FIX1(FIX(op, 0x19)),
2429      OP2(ORXREG1, OWREG2),
2430      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
2431 	  ENC(dst, reg, 1)))
2432 
2433 INSN(xpnd4, m, unary, 1616_m, C64X, 0,
2434      FIX1(FIX(op, 0x18)),
2435      OP2(ORXREG1, OWREG2),
2436      ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
2437 	  ENC(dst, reg, 1)))
2438 
2439 INSN(zero, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO,
2440      FIX2(FIX(h, 0), FIX(cst, 0)),
2441      OP1(OWREG1),
2442      ENC2(ENC(s, fu, 0), ENC(dst, reg, 0)))
2443 INSN(zero, l, unary, 1cycle, C64X,
2444      TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(1),
2445      FIX3(FIX(x, 0), FIX(op, 0x05), FIX(src2, 0)),
2446      OP1(OWREG1),
2447      ENC2(ENC(s, fu, 0), ENC(dst, reg, 0)))
2448 INSNE(zero, l_sub, l, 1_or_2_src, 1cycle, C62X,
2449       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(0),
2450       FIX2(FIX(op, 0x07), FIX(x, 0)),
2451       OP1(OWREG1),
2452       ENC4(ENC(s, fu, 0), ENC(src1, reg_unused, 0), ENC(src2, reg_unused, 0),
2453 	   ENC(dst, reg, 0)))
2454 INSNE(zero, l_sub_sl, l, 1_or_2_src, 1cycle, C62X,
2455       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO,
2456       FIX2(FIX(op, 0x27), FIX(x, 0)),
2457       OP1(OWREGL1),
2458       ENC4(ENC(s, fu, 0), ENC(src1, reg_unused, 0), ENC(src2, reg_unused, 0),
2459 	   ENC(dst, reg, 0)))
2460 INSNE(zero, d_mvk, d, 1_or_2_src, 1cycle, C64X,
2461       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(1),
2462       FIX3(FIX(op, 0x00), FIX(src1, 0), FIX(src2, 0)),
2463       OP1(OWREG1),
2464       ENC2(ENC(s, fu, 0), ENC(dst, reg, 0)))
2465 INSNE(zero, d_sub, d, 1_or_2_src, 1cycle, C62X,
2466       TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(0),
2467       FIX1(FIX(op, 0x11)),
2468       OP1(OWREG1),
2469       ENC4(ENC(s, fu, 0), ENC(src2, reg_unused, 0), ENC(src1, reg_unused, 0),
2470 	   ENC(dst, reg, 0)))
2471 
2472 #undef TIC6X_INSN_C64X_AND_C67X
2473 #undef tic6x_insn_format_nfu_s_branch_nop_cst
2474 #undef tic6x_insn_format_s_l_1_or_2_src
2475 #undef RAN
2476 #undef FIX
2477 #undef FIX0
2478 #undef FIX1
2479 #undef FIX2
2480 #undef FIX3
2481 #undef FIX4
2482 #undef OP0
2483 #undef OP1
2484 #undef OP2
2485 #undef OP3
2486 #undef OP4
2487 #undef OACST
2488 #undef OLCST
2489 #undef OFULIST
2490 #undef ORIRP1
2491 #undef ORNRP1
2492 #undef OWREG1
2493 #undef OWRETREG1
2494 #undef ORREG1
2495 #undef ORDREG1
2496 #undef ORWREG1
2497 #undef ORAREG1
2498 #undef ORXREG1
2499 #undef ORREG12
2500 #undef ORREG14
2501 #undef ORXREG14
2502 #undef OWREG2
2503 #undef OWREG4
2504 #undef OWREG9
2505 #undef OWDREG5
2506 #undef OWREGL1
2507 #undef ORREGL1
2508 #undef OWREGD1
2509 #undef OWREGD12
2510 #undef OWREGD4
2511 #undef ORREGD1
2512 #undef OWREGD45
2513 #undef OWREGD67
2514 #undef ORDREGD1
2515 #undef OWDREGD5
2516 #undef ORREGD12
2517 #undef ORXREGD12
2518 #undef ORREGD1234
2519 #undef ORREGD1324
2520 #undef OWREGD910
2521 #undef ORCREG1
2522 #undef OWCREG1
2523 #undef ORMEMDW
2524 #undef OWMEMDW
2525 #undef ORMEMSB
2526 #undef OWMEMSB
2527 #undef ORMEMLB
2528 #undef OWMEMLB
2529 #undef ORMEMSH
2530 #undef OWMEMSH
2531 #undef ORMEMLH
2532 #undef OWMEMLH
2533 #undef ORMEMSW
2534 #undef OWMEMSW
2535 #undef ORMEMLW
2536 #undef OWMEMLW
2537 #undef ORMEMSD
2538 #undef OWMEMSD
2539 #undef ORMEMND
2540 #undef OWMEMND
2541 #undef ENC
2542 #undef ENC0
2543 #undef ENC1
2544 #undef ENC2
2545 #undef ENC3
2546 #undef ENC4
2547 #undef ENC5
2548 #undef ENC6
2549 #undef ENC7
2550