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