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