Commit | Line | Data |
---|---|---|
40b36596 | 1 | /* TI C6X opcode table. |
795b8e6b | 2 | Copyright 2010-2013 Free Software Foundation, Inc. |
40b36596 JM |
3 | |
4 | This program is free software; you can redistribute it and/or modify | |
5 | it under the terms of the GNU General Public License as published by | |
6 | the Free Software Foundation; either version 3 of the License, or | |
7 | (at your option) any later version. | |
8 | ||
9 | This program is distributed in the hope that it will be useful, | |
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | GNU General Public License for more details. | |
13 | ||
14 | You should have received a copy of the GNU General Public License | |
15 | along with this program; if not, write to the Free Software | |
16 | Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, | |
17 | MA 02110-1301, USA. */ | |
18 | ||
19 | /* Define the INSN macro before including this file; it takes as | |
20 | arguments the fields from tic6x_opcode (defined in tic6x.h). The | |
21 | name is given as an identifier; the subsequent four operands should | |
22 | have "tic6x_func_unit_", "tic6x_insn_format_", "tic6x_pipeline_" | |
23 | and "TIC6X_INSN_", respectively, prepended to them by the macro | |
24 | definition. Also define INSNE, which has a second argument that | |
25 | goes after tic6x_opcode_NAME_ to form the enumeration value for | |
26 | this instruction, where the value otherwise formed from the name, | |
27 | functional unit and format is ambiguous, but otherwise has the same | |
28 | arguments as INSN. */ | |
29 | ||
30 | #define TIC6X_INSN_C64X_AND_C67X TIC6X_INSN_C64X|TIC6X_INSN_C67X | |
31 | #define tic6x_insn_format_nfu_s_branch_nop_cst \ | |
32 | tic6x_insn_format_s_branch_nop_cst | |
33 | #define tic6x_insn_format_s_l_1_or_2_src tic6x_insn_format_l_1_or_2_src | |
34 | #define RAN(id, min, max) { CONCAT2(tic6x_field_,id), (min), (max) } | |
35 | #define FIX(id, val) RAN(id, val, val) | |
36 | #define FIX0() 0, { { 0, 0, 0 } } | |
37 | #define FIX1(a) 1, { a } | |
38 | #define FIX2(a, b) 2, { a, b } | |
39 | #define FIX3(a, b, c) 3, { a, b, c } | |
40 | #define FIX4(a, b, c, d) 4, { a, b, c, d } | |
41 | #define OP0() 0, { { 0, 0, FALSE, 0, 0, 0, 0 } } | |
42 | #define OP1(a) 1, { a } | |
43 | #define OP2(a, b) 2, { a, b } | |
44 | #define OP3(a, b, c) 3, { a, b, c } | |
45 | #define OP4(a, b, c, d) 4, { a, b, c, d } | |
46 | #define OACST { tic6x_operand_asm_const, 0, tic6x_rw_none, 0, 0, 0, 0 } | |
47 | #define OLCST { tic6x_operand_link_const, 0, tic6x_rw_none, 0, 0, 0, 0 } | |
48 | #define OFULIST { tic6x_operand_func_unit, 0, tic6x_rw_none, 0, 0, 0, 0 } | |
49 | #define ORIRP1 { tic6x_operand_irp, 4, tic6x_rw_read, 1, 1, 0, 0 } | |
50 | #define ORNRP1 { tic6x_operand_nrp, 4, tic6x_rw_read, 1, 1, 0, 0 } | |
51 | #define OWREG1 { tic6x_operand_reg, 4, tic6x_rw_write, 1, 1, 0, 0 } | |
52 | #define OWRETREG1 { tic6x_operand_retreg, 4, tic6x_rw_write, 1, 1, 0, 0 } | |
53 | #define ORREG1 { tic6x_operand_reg, 4, tic6x_rw_read, 1, 1, 0, 0 } | |
54 | #define ORDREG1 { tic6x_operand_dreg, 4, tic6x_rw_read, 1, 1, 0, 0 } | |
55 | #define ORWREG1 { tic6x_operand_reg, 4, tic6x_rw_read_write, 1, 1, 0, 0 } | |
56 | #define ORAREG1 { tic6x_operand_areg, 4, tic6x_rw_read, 1, 1, 0, 0 } | |
57 | #define ORXREG1 { tic6x_operand_xreg, 4, tic6x_rw_read, 1, 1, 0, 0 } | |
58 | #define ORREG12 { tic6x_operand_reg, 4, tic6x_rw_read, 1, 2, 0, 0 } | |
59 | #define ORREG14 { tic6x_operand_reg, 4, tic6x_rw_read, 1, 4, 0, 0 } | |
60 | #define ORXREG14 { tic6x_operand_xreg, 4, tic6x_rw_read, 1, 4, 0, 0 } | |
61 | #define OWREG2 { tic6x_operand_reg, 4, tic6x_rw_write, 2, 2, 0, 0 } | |
62 | #define OWREG4 { tic6x_operand_reg, 4, tic6x_rw_write, 4, 4, 0, 0 } | |
63 | #define OWREG9 { tic6x_operand_reg, 4, tic6x_rw_write, 9, 9, 0, 0 } | |
64 | #define OWDREG5 { tic6x_operand_dreg, 4, tic6x_rw_write, 5, 5, 0, 0 } | |
65 | #define OWREGL1 { tic6x_operand_regpair, 5, tic6x_rw_write, 1, 1, 1, 1 } | |
66 | #define ORREGL1 { tic6x_operand_regpair, 5, tic6x_rw_read, 1, 1, 1, 1 } | |
67 | #define OWREGD1 { tic6x_operand_regpair, 8, tic6x_rw_write, 1, 1, 1, 1 } | |
68 | #define OWREGD12 { tic6x_operand_regpair, 8, tic6x_rw_write, 1, 1, 2, 2 } | |
69 | #define OWREGD4 { tic6x_operand_regpair, 8, tic6x_rw_write, 4, 4, 4, 4 } | |
70 | #define ORREGD1 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 1, 1, 1 } | |
71 | #define OWREGD45 { tic6x_operand_regpair, 8, tic6x_rw_write, 4, 4, 5, 5 } | |
72 | #define OWREGD67 { tic6x_operand_regpair, 8, tic6x_rw_write, 6, 6, 7, 7 } | |
73 | #define ORDREGD1 { tic6x_operand_dregpair, 8, tic6x_rw_read, 1, 1, 1, 1 } | |
74 | #define OWDREGD5 { tic6x_operand_dregpair, 8, tic6x_rw_write, 5, 5, 5, 5 } | |
75 | #define ORREGD12 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 1, 2, 2 } | |
76 | #define ORXREGD12 { tic6x_operand_xregpair, 8, tic6x_rw_read, 1, 1, 2, 2 } | |
77 | #define ORREGD1234 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 2, 3, 4 } | |
165546ad | 78 | #define ORXREGD1324 { tic6x_operand_xregpair, 8, tic6x_rw_read, 1, 3, 2, 4 } |
40b36596 JM |
79 | #define OWREGD910 { tic6x_operand_regpair, 8, tic6x_rw_write, 9, 9, 10, 10 } |
80 | #define ORCREG1 { tic6x_operand_ctrl, 4, tic6x_rw_read, 1, 1, 0, 0 } | |
81 | #define OWCREG1 { tic6x_operand_ctrl, 4, tic6x_rw_write, 1, 1, 0, 0 } | |
82 | #define ORMEMDW { tic6x_operand_mem_deref, 4, tic6x_rw_read, 3, 3, 0, 0 } | |
83 | #define OWMEMDW { tic6x_operand_mem_deref, 4, tic6x_rw_write, 3, 3, 0, 0 } | |
84 | #define ORMEMSB { tic6x_operand_mem_short, 1, tic6x_rw_read, 3, 3, 0, 0 } | |
85 | #define OWMEMSB { tic6x_operand_mem_short, 1, tic6x_rw_write, 3, 3, 0, 0 } | |
86 | #define ORMEMLB { tic6x_operand_mem_long, 1, tic6x_rw_read, 3, 3, 0, 0 } | |
87 | #define OWMEMLB { tic6x_operand_mem_long, 1, tic6x_rw_write, 3, 3, 0, 0 } | |
88 | #define ORMEMSH { tic6x_operand_mem_short, 2, tic6x_rw_read, 3, 3, 0, 0 } | |
89 | #define OWMEMSH { tic6x_operand_mem_short, 2, tic6x_rw_write, 3, 3, 0, 0 } | |
90 | #define ORMEMLH { tic6x_operand_mem_long, 2, tic6x_rw_read, 3, 3, 0, 0 } | |
91 | #define OWMEMLH { tic6x_operand_mem_long, 2, tic6x_rw_write, 3, 3, 0, 0 } | |
92 | #define ORMEMSW { tic6x_operand_mem_short, 4, tic6x_rw_read, 3, 3, 0, 0 } | |
93 | #define OWMEMSW { tic6x_operand_mem_short, 4, tic6x_rw_write, 3, 3, 0, 0 } | |
94 | #define ORMEMLW { tic6x_operand_mem_long, 4, tic6x_rw_read, 3, 3, 0, 0 } | |
95 | #define OWMEMLW { tic6x_operand_mem_long, 4, tic6x_rw_write, 3, 3, 0, 0 } | |
96 | #define ORMEMSD { tic6x_operand_mem_short, 8, tic6x_rw_read, 3, 3, 0, 0 } | |
97 | #define OWMEMSD { tic6x_operand_mem_short, 8, tic6x_rw_write, 3, 3, 0, 0 } | |
98 | #define ORMEMND { tic6x_operand_mem_ndw, 8, tic6x_rw_read, 3, 3, 0, 0 } | |
99 | #define OWMEMND { tic6x_operand_mem_ndw, 8, tic6x_rw_write, 3, 3, 0, 0 } | |
100 | #define ENC(id, meth, op) { \ | |
101 | CONCAT2(tic6x_field_,id), \ | |
102 | CONCAT2(tic6x_coding_,meth), \ | |
103 | op \ | |
104 | } | |
105 | #define ENC0() 0, { { 0, 0, 0 } } | |
106 | #define ENC1(a) 1, { a } | |
107 | #define ENC2(a, b) 2, { a, b } | |
108 | #define ENC3(a, b, c) 3, { a, b, c } | |
109 | #define ENC4(a, b, c, d) 4, { a, b, c, d } | |
110 | #define ENC5(a, b, c, d, e) 5, { a, b, c, d, e } | |
111 | #define ENC6(a, b, c, d, e, f) 6, { a, b, c, d, e, f } | |
112 | #define ENC7(a, b, c, d, e, f, g) 7, { a, b, c, d, e, f, g } | |
113 | ||
114 | INSN(abs, l, unary, 1cycle, C62X, 0, | |
115 | FIX1(FIX(op, 0)), | |
116 | OP2(ORXREG1, OWREG1), | |
117 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
118 | ENC(dst, reg, 1))) | |
119 | INSN(abs, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
120 | FIX3(FIX(op, 0x38), FIX(x, 0), FIX(src1, 0)), | |
121 | OP2(ORREGL1, OWREGL1), | |
122 | ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1))) | |
123 | ||
124 | INSN(abs2, l, unary, 1cycle, C64X, 0, | |
125 | FIX1(FIX(op, 0x4)), | |
126 | OP2(ORXREG1, OWREG1), | |
127 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
128 | ENC(dst, reg, 1))) | |
129 | ||
130 | INSN(absdp, s, 1_or_2_src, 2cycle_dp, C67X, TIC6X_FLAG_NO_CROSS, | |
795b8e6b | 131 | FIX2(FIX(op, 0x2c), FIX(x, 0)), |
40b36596 | 132 | OP2(ORREGD1, OWREGD12), |
795b8e6b NC |
133 | ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0), |
134 | ENC(dst, reg, 1))) | |
40b36596 JM |
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), | |
0c9573f4 | 439 | ENC3(ENC(s, fu, 0), ENC(src2, pcrel_half, 0), ENC(src1, ucst, 1))) |
40b36596 JM |
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, | |
795b8e6b | 919 | FIX2(FIX(op, 0x8), FIX(x, 0)), |
40b36596 | 920 | OP2(ORREGD1, OWREG4), |
795b8e6b NC |
921 | ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0), |
922 | ENC(dst, reg, 1))) | |
40b36596 JM |
923 | |
924 | INSN(dpsp, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_NO_CROSS, | |
795b8e6b | 925 | FIX2(FIX(op, 0x9), FIX(x, 0)), |
40b36596 | 926 | OP2(ORREGD1, OWREG4), |
795b8e6b NC |
927 | ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0), |
928 | ENC(dst, reg, 1))) | |
40b36596 JM |
929 | |
930 | INSN(dptrunc, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_NO_CROSS, | |
795b8e6b | 931 | FIX2(FIX(op, 0x1), FIX(x, 0)), |
40b36596 | 932 | OP2(ORREGD1, OWREG4), |
795b8e6b NC |
933 | ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0), |
934 | ENC(dst, reg, 1))) | |
40b36596 JM |
935 | |
936 | INSN(ext, s, field, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
937 | FIX1(FIX(op, 0x1)), | |
938 | OP4(ORREG1, OACST, OACST, OWREG1), | |
939 | ENC5(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(csta, ucst, 1), | |
940 | ENC(cstb, ucst, 2), ENC(dst, reg, 3))) | |
941 | INSN(ext, s, 1_or_2_src, 1cycle, C62X, 0, | |
942 | FIX1(FIX(op, 0x2f)), | |
943 | OP3(ORXREG1, ORREG1, OWREG1), | |
944 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
945 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
946 | ||
947 | INSN(extu, s, field, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
948 | FIX1(FIX(op, 0x0)), | |
949 | OP4(ORREG1, OACST, OACST, OWREG1), | |
950 | ENC5(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(csta, ucst, 1), | |
951 | ENC(cstb, ucst, 2), ENC(dst, reg, 3))) | |
952 | INSN(extu, s, 1_or_2_src, 1cycle, C62X, 0, | |
953 | FIX1(FIX(op, 0x2b)), | |
954 | OP3(ORXREG1, ORREG1, OWREG1), | |
955 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
956 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
957 | ||
958 | INSN(gmpy, m, 1_or_2_src, 4cycle, C64XP, TIC6X_FLAG_NO_CROSS, | |
959 | FIX2(FIX(op, 0x1f), FIX(x, 0)), | |
960 | OP3(ORREG1, ORREG1, OWREG4), | |
961 | ENC4(ENC(s, fu, 0), ENC(src1, reg, 0), ENC(src2, reg, 1), | |
962 | ENC(dst, reg, 2))) | |
963 | ||
964 | /* This instruction can be predicated as usual; SPRUFE8 is incorrect | |
965 | where it shows the "z" field as fixed to 1. */ | |
966 | INSN(gmpy4, m, compound, 4cycle, C64X, 0, | |
967 | FIX1(FIX(op, 0x11)), | |
968 | OP3(ORREG1, ORXREG1, OWREG4), | |
969 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
970 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
971 | ||
972 | INSN(idle, nfu, nop_idle, nop, C62X, TIC6X_FLAG_MCNOP, | |
973 | FIX2(FIX(s, 0), FIX(op, 0xf)), | |
974 | OP0(), | |
975 | ENC0()) | |
976 | ||
977 | INSN(intdp, l, 1_or_2_src, intdp, C67X, 0, | |
978 | FIX2(FIX(op, 0x39), FIX(src1, 0)), | |
979 | OP2(ORXREG1, OWREGD45), | |
980 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
981 | ENC(dst, reg, 1))) | |
982 | ||
983 | INSN(intdpu, l, 1_or_2_src, intdp, C67X, 0, | |
984 | FIX2(FIX(op, 0x3b), FIX(src1, 0)), | |
985 | OP2(ORXREG1, OWREGD45), | |
986 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
987 | ENC(dst, reg, 1))) | |
988 | ||
989 | INSN(intsp, l, 1_or_2_src, 4cycle, C67X, 0, | |
990 | FIX2(FIX(op, 0x4a), FIX(src1, 0)), | |
991 | OP2(ORXREG1, OWREG4), | |
992 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
993 | ENC(dst, reg, 1))) | |
994 | ||
995 | INSN(intspu, l, 1_or_2_src, 4cycle, C67X, 0, | |
996 | FIX2(FIX(op, 0x49), FIX(src1, 0)), | |
997 | OP2(ORXREG1, OWREG4), | |
998 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
999 | ENC(dst, reg, 1))) | |
1000 | ||
1001 | INSN(ldb, d, load_store, load, C62X, | |
1002 | TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), | |
1003 | FIX2(FIX(op, 2), FIX(r, 0)), | |
1004 | OP2(ORMEMSB, OWDREG5), | |
1005 | ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0), | |
1006 | ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0), | |
1007 | ENC(srcdst, reg, 1))) | |
1008 | INSN(ldb, d, load_store_long, load, C62X, | |
1009 | TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0), | |
1010 | FIX1(FIX(op, 2)), | |
1011 | OP2(ORMEMLB, OWDREG5), | |
1012 | ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_byte, 0), | |
1013 | ENC(dst, reg, 1))) | |
1014 | ||
1015 | INSN(ldbu, d, load_store, load, C62X, | |
1016 | TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), | |
1017 | FIX2(FIX(op, 1), FIX(r, 0)), | |
1018 | OP2(ORMEMSB, OWDREG5), | |
1019 | ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0), | |
1020 | ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0), | |
1021 | ENC(srcdst, reg, 1))) | |
1022 | INSN(ldbu, d, load_store_long, load, C62X, | |
1023 | TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0), | |
1024 | FIX1(FIX(op, 1)), | |
1025 | OP2(ORMEMLB, OWDREG5), | |
1026 | ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_byte, 0), | |
1027 | ENC(dst, reg, 1))) | |
1028 | ||
1029 | INSN(lddw, d, load_store, load, C64X_AND_C67X, | |
1030 | TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS, | |
1031 | FIX2(FIX(op, 6), FIX(r, 1)), | |
1032 | OP2(ORMEMSD, OWDREGD5), | |
1033 | ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0), | |
1034 | ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0), | |
1035 | ENC(srcdst, reg, 1))) | |
1036 | ||
1037 | INSN(ldh, d, load_store, load, C62X, | |
1038 | TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), | |
1039 | FIX2(FIX(op, 4), FIX(r, 0)), | |
1040 | OP2(ORMEMSH, OWDREG5), | |
1041 | ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0), | |
1042 | ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0), | |
1043 | ENC(srcdst, reg, 1))) | |
1044 | INSN(ldh, d, load_store_long, load, C62X, | |
1045 | TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0), | |
1046 | FIX1(FIX(op, 4)), | |
1047 | OP2(ORMEMLH, OWDREG5), | |
1048 | ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_half, 0), | |
1049 | ENC(dst, reg, 1))) | |
1050 | ||
1051 | INSN(ldhu, d, load_store, load, C62X, | |
1052 | TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), | |
1053 | FIX2(FIX(op, 0), FIX(r, 0)), | |
1054 | OP2(ORMEMSH, OWDREG5), | |
1055 | ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0), | |
1056 | ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0), | |
1057 | ENC(srcdst, reg, 1))) | |
1058 | INSN(ldhu, d, load_store_long, load, C62X, | |
1059 | TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0), | |
1060 | FIX1(FIX(op, 0)), | |
1061 | OP2(ORMEMLH, OWDREG5), | |
1062 | ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_half, 0), | |
1063 | ENC(dst, reg, 1))) | |
1064 | ||
1065 | INSN(ldndw, d, load_nonaligned, load, C64X, | |
1066 | TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED, | |
1067 | FIX0(), | |
1068 | OP2(ORMEMND, OWDREGD5), | |
1069 | ENC7(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0), | |
1070 | ENC(offsetR, mem_offset_noscale, 0), ENC(baseR, reg, 0), | |
1071 | ENC(sc, scaled, 0), ENC(dst, reg_shift, 1))) | |
1072 | ||
1073 | INSN(ldnw, d, load_store, load, C64X, | |
1074 | TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED, | |
1075 | FIX2(FIX(op, 3), FIX(r, 1)), | |
1076 | OP2(ORMEMSW, OWDREG5), | |
1077 | ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0), | |
1078 | ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0), | |
1079 | ENC(srcdst, reg, 1))) | |
1080 | ||
1081 | INSN(ldw, d, load_store, load, C62X, | |
1082 | TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), | |
1083 | FIX2(FIX(op, 6), FIX(r, 0)), | |
1084 | OP2(ORMEMSW, OWDREG5), | |
1085 | ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0), | |
1086 | ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0), | |
1087 | ENC(srcdst, reg, 1))) | |
1088 | INSN(ldw, d, load_store_long, load, C62X, | |
1089 | TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0), | |
1090 | FIX1(FIX(op, 6)), | |
1091 | OP2(ORMEMLW, OWDREG5), | |
1092 | ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_word, 0), | |
1093 | ENC(dst, reg, 1))) | |
1094 | ||
98d23bef | 1095 | INSN(ll, d, 1_or_2_src, load, C64XP, |
40b36596 JM |
1096 | TIC6X_FLAG_LOAD|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_SIDE_T2_ONLY|TIC6X_FLAG_NO_CROSS, |
1097 | FIX3(FIX(s, 1), FIX(op, 0xc), FIX(src1, 0)), | |
1098 | OP2(ORMEMDW, OWDREG5), | |
1099 | ENC2(ENC(src2, reg, 0), ENC(dst, reg, 1))) | |
1100 | ||
1101 | INSNE(lmbd, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0, | |
1102 | FIX1(FIX(op, 0x6b)), | |
1103 | OP3(ORREG1, ORXREG1, OWREG1), | |
1104 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1105 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1106 | INSNE(lmbd, l_s5_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0, | |
1107 | FIX1(FIX(op, 0x6a)), | |
1108 | OP3(OACST, ORXREG1, OWREG1), | |
1109 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), | |
1110 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1111 | ||
1112 | INSN(max2, l, 1_or_2_src, 1cycle, C64X, 0, | |
1113 | FIX1(FIX(op, 0x42)), | |
1114 | OP3(ORREG1, ORXREG1, OWREG1), | |
1115 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1116 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1117 | INSN(max2, s, ext_1_or_2_src, 1cycle, C64XP, 0, | |
1118 | FIX1(FIX(op, 0xd)), | |
1119 | OP3(ORREG1, ORXREG1, OWREG1), | |
1120 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1121 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1122 | ||
1123 | INSN(maxu4, l, 1_or_2_src, 1cycle, C64X, 0, | |
1124 | FIX1(FIX(op, 0x43)), | |
1125 | OP3(ORREG1, ORXREG1, OWREG1), | |
1126 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1127 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1128 | ||
1129 | INSN(min2, l, 1_or_2_src, 1cycle, C64X, 0, | |
1130 | FIX1(FIX(op, 0x41)), | |
1131 | OP3(ORREG1, ORXREG1, OWREG1), | |
1132 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1133 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1134 | INSN(min2, s, ext_1_or_2_src, 1cycle, C64XP, 0, | |
1135 | FIX1(FIX(op, 0xc)), | |
1136 | OP3(ORREG1, ORXREG1, OWREG1), | |
1137 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1138 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1139 | ||
1140 | INSN(minu4, l, 1_or_2_src, 1cycle, C64X, 0, | |
1141 | FIX1(FIX(op, 0x48)), | |
1142 | OP3(ORREG1, ORXREG1, OWREG1), | |
1143 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1144 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1145 | ||
1146 | INSNE(mpy, m_sl16_xsl16_si, m, mpy, 1616_m, C62X, 0, | |
1147 | FIX1(FIX(op, 0x19)), | |
1148 | OP3(ORREG1, ORXREG1, OWREG2), | |
1149 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1150 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1151 | INSNE(mpy, m_s5_xsl16_si, m, mpy, 1616_m, C62X, 0, | |
1152 | FIX1(FIX(op, 0x18)), | |
1153 | OP3(OACST, ORXREG1, OWREG2), | |
1154 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), | |
1155 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1156 | ||
165546ad NC |
1157 | INSN(mpydp, m, mpy, mpydp, C67X, 0, |
1158 | FIX1(FIX(op, 0x0e)), | |
1159 | OP3(ORREGD1234, ORXREGD1324, OWREGD910), | |
1160 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1161 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
40b36596 JM |
1162 | |
1163 | INSN(mpyh, m, mpy, 1616_m, C62X, 0, | |
1164 | FIX1(FIX(op, 0x01)), | |
1165 | OP3(ORREG1, ORXREG1, OWREG2), | |
1166 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1167 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1168 | ||
1169 | INSN(mpyhi, m, compound, 4cycle, C64X, 0, | |
1170 | FIX1(FIX(op, 0x14)), | |
1171 | OP3(ORREG1, ORXREG1, OWREGD4), | |
1172 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1173 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1174 | ||
1175 | INSN(mpyhir, m, compound, 4cycle, C64X, 0, | |
1176 | FIX1(FIX(op, 0x10)), | |
1177 | OP3(ORREG1, ORXREG1, OWREG4), | |
1178 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1179 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1180 | ||
1181 | INSN(mpyhl, m, mpy, 1616_m, C62X, 0, | |
1182 | FIX1(FIX(op, 0x09)), | |
1183 | OP3(ORREG1, ORXREG1, OWREG2), | |
1184 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1185 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1186 | ||
1187 | INSN(mpyhlu, m, mpy, 1616_m, C62X, 0, | |
1188 | FIX1(FIX(op, 0x0f)), | |
1189 | OP3(ORREG1, ORXREG1, OWREG2), | |
1190 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1191 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1192 | ||
1193 | INSN(mpyhslu, m, mpy, 1616_m, C62X, 0, | |
1194 | FIX1(FIX(op, 0x0b)), | |
1195 | OP3(ORREG1, ORXREG1, OWREG2), | |
1196 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1197 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1198 | ||
1199 | INSN(mpyhsu, m, mpy, 1616_m, C62X, 0, | |
1200 | FIX1(FIX(op, 0x03)), | |
1201 | OP3(ORREG1, ORXREG1, OWREG2), | |
1202 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1203 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1204 | ||
1205 | INSN(mpyhu, m, mpy, 1616_m, C62X, 0, | |
1206 | FIX1(FIX(op, 0x07)), | |
1207 | OP3(ORREG1, ORXREG1, OWREG2), | |
1208 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1209 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1210 | ||
1211 | INSN(mpyhuls, m, mpy, 1616_m, C62X, 0, | |
1212 | FIX1(FIX(op, 0x0d)), | |
1213 | OP3(ORREG1, ORXREG1, OWREG2), | |
1214 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1215 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1216 | ||
1217 | INSN(mpyhus, m, mpy, 1616_m, C62X, 0, | |
1218 | FIX1(FIX(op, 0x05)), | |
1219 | OP3(ORREG1, ORXREG1, OWREG2), | |
1220 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1221 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1222 | ||
1223 | INSNE(mpyi, m_si_xsi_si, m, mpy, mpyi, C67X, 0, | |
1224 | FIX1(FIX(op, 0x04)), | |
1225 | OP3(ORREG14, ORXREG14, OWREG9), | |
1226 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1227 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1228 | INSNE(mpyi, m_s5_xsi_si, m, mpy, mpyi, C67X, 0, | |
1229 | FIX1(FIX(op, 0x06)), | |
1230 | OP3(OACST, ORXREG14, OWREG9), | |
1231 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), | |
1232 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1233 | ||
1234 | INSNE(mpyid, m_si_xsi_sll, m, mpy, mpyid, C67X, 0, | |
1235 | FIX1(FIX(op, 0x08)), | |
1236 | OP3(ORREG14, ORXREG14, OWREGD910), | |
1237 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1238 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1239 | INSNE(mpyid, m_s5_xsi_sll, m, mpy, mpyid, C67X, 0, | |
1240 | FIX1(FIX(op, 0x0c)), | |
1241 | OP3(OACST, ORXREG14, OWREGD910), | |
1242 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), | |
1243 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1244 | ||
1245 | INSN(mpyih, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO, | |
1246 | FIX1(FIX(op, 0x14)), | |
1247 | OP3(ORXREG1, ORREG1, OWREGD4), | |
1248 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1249 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
1250 | ||
1251 | INSN(mpyihr, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO, | |
1252 | FIX1(FIX(op, 0x10)), | |
1253 | OP3(ORXREG1, ORREG1, OWREG4), | |
1254 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1255 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
1256 | ||
1257 | INSN(mpyil, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO, | |
1258 | FIX1(FIX(op, 0x15)), | |
1259 | OP3(ORXREG1, ORREG1, OWREGD4), | |
1260 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1261 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
1262 | ||
1263 | INSN(mpyilr, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO, | |
1264 | FIX1(FIX(op, 0x0e)), | |
1265 | OP3(ORXREG1, ORREG1, OWREG4), | |
1266 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1267 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
1268 | ||
1269 | INSN(mpylh, m, mpy, 1616_m, C62X, 0, | |
1270 | FIX1(FIX(op, 0x11)), | |
1271 | OP3(ORREG1, ORXREG1, OWREG2), | |
1272 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1273 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1274 | ||
1275 | INSN(mpylhu, m, mpy, 1616_m, C62X, 0, | |
1276 | FIX1(FIX(op, 0x17)), | |
1277 | OP3(ORREG1, ORXREG1, OWREG2), | |
1278 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1279 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1280 | ||
1281 | INSN(mpyli, m, compound, 4cycle, C64X, 0, | |
1282 | FIX1(FIX(op, 0x15)), | |
1283 | OP3(ORREG1, ORXREG1, OWREGD4), | |
1284 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1285 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1286 | ||
1287 | INSN(mpylir, m, compound, 4cycle, C64X, 0, | |
1288 | FIX1(FIX(op, 0x0e)), | |
1289 | OP3(ORREG1, ORXREG1, OWREG4), | |
1290 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1291 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1292 | ||
1293 | INSN(mpylshu, m, mpy, 1616_m, C62X, 0, | |
1294 | FIX1(FIX(op, 0x13)), | |
1295 | OP3(ORREG1, ORXREG1, OWREG2), | |
1296 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1297 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1298 | ||
1299 | INSN(mpyluhs, m, mpy, 1616_m, C62X, 0, | |
1300 | FIX1(FIX(op, 0x15)), | |
1301 | OP3(ORREG1, ORXREG1, OWREG2), | |
1302 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1303 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1304 | ||
1305 | INSN(mpysp, m, mpy, 4cycle, C67X, 0, | |
1306 | FIX1(FIX(op, 0x1c)), | |
1307 | OP3(ORREG1, ORXREG1, OWREG4), | |
1308 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1309 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1310 | ||
1311 | /* Contrary to SPRU733A, MPYSPDP and MPYSP2DP are on both C67X and | |
1312 | C67X+. */ | |
1313 | INSN(mpyspdp, m, compound, mpyspdp, C67X, 0, | |
1314 | FIX1(FIX(op, 0x16)), | |
1315 | OP3(ORREG12, ORXREGD12, OWREGD67), | |
1316 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1317 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1318 | ||
1319 | INSN(mpysp2dp, m, compound, mpyspdp, C67X, 0, | |
1320 | FIX1(FIX(op, 0x17)), | |
1321 | OP3(ORREG1, ORXREG1, OWREGD45), | |
1322 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1323 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1324 | ||
1325 | INSNE(mpysu, m_sl16_xul16_si, m, mpy, 1616_m, C62X, 0, | |
1326 | FIX1(FIX(op, 0x1b)), | |
1327 | OP3(ORREG1, ORXREG1, OWREG2), | |
1328 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1329 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1330 | INSNE(mpysu, m_s5_xul16_si, m, mpy, 1616_m, C62X, 0, | |
1331 | FIX1(FIX(op, 0x1e)), | |
1332 | OP3(OACST, ORXREG1, OWREG2), | |
1333 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), | |
1334 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1335 | ||
1336 | INSN(mpysu4, m, compound, 4cycle, C64X, 0, | |
1337 | FIX1(FIX(op, 0x05)), | |
1338 | OP3(ORREG1, ORXREG1, OWREGD4), | |
1339 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1340 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1341 | ||
1342 | INSN(mpyu, m, mpy, 1616_m, C62X, 0, | |
1343 | FIX1(FIX(op, 0x1f)), | |
1344 | OP3(ORREG1, ORXREG1, OWREG2), | |
1345 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1346 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1347 | ||
1348 | INSN(mpyu4, m, compound, 4cycle, C64X, 0, | |
1349 | FIX1(FIX(op, 0x04)), | |
1350 | OP3(ORREG1, ORXREG1, OWREGD4), | |
1351 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1352 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1353 | ||
1354 | INSN(mpyus, m, mpy, 1616_m, C62X, 0, | |
1355 | FIX1(FIX(op, 0x1d)), | |
1356 | OP3(ORREG1, ORXREG1, OWREG2), | |
1357 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1358 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1359 | ||
1360 | INSN(mpyus4, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO, | |
1361 | FIX1(FIX(op, 0x05)), | |
1362 | OP3(ORXREG1, ORREG1, OWREGD4), | |
1363 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1364 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
1365 | ||
1366 | INSN(mpy2, m, compound, 4cycle, C64X, 0, | |
1367 | FIX1(FIX(op, 0x00)), | |
1368 | OP3(ORREG1, ORXREG1, OWREGD4), | |
1369 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1370 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1371 | ||
1372 | INSN(mpy2ir, m, 1_or_2_src, 4cycle, C64XP, 0, | |
1373 | FIX1(FIX(op, 0x0f)), | |
1374 | OP3(ORREG1, ORXREG1, OWREGD4), | |
1375 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1376 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1377 | ||
1378 | INSNE(mpy32, 32_32_32, m, mpy, 4cycle, C64XP, 0, | |
1379 | FIX1(FIX(op, 0x10)), | |
1380 | OP3(ORREG1, ORXREG1, OWREG4), | |
1381 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1382 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1383 | INSNE(mpy32, 32_32_64, m, mpy, 4cycle, C64XP, 0, | |
1384 | FIX1(FIX(op, 0x14)), | |
1385 | OP3(ORREG1, ORXREG1, OWREGD4), | |
1386 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1387 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1388 | ||
1389 | INSN(mpy32su, m, mpy, 4cycle, C64XP, 0, | |
1390 | FIX1(FIX(op, 0x16)), | |
1391 | OP3(ORREG1, ORXREG1, OWREGD4), | |
1392 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1393 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1394 | ||
1395 | INSN(mpy32u, m, compound, 4cycle, C64XP, 0, | |
1396 | FIX1(FIX(op, 0x18)), | |
1397 | OP3(ORREG1, ORXREG1, OWREGD4), | |
1398 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1399 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1400 | ||
1401 | INSN(mpy32us, m, compound, 4cycle, C64XP, 0, | |
1402 | FIX1(FIX(op, 0x19)), | |
1403 | OP3(ORREG1, ORXREG1, OWREGD4), | |
1404 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1405 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1406 | ||
1407 | /* "or" forms of "mv" are preferred over "add" forms when available | |
1408 | because "or" uses less power. However, 40-bit moves are only | |
1409 | available through "add", and before C64X D-unit moves are only | |
1410 | available through "add" (without cross paths being available). */ | |
1411 | INSNE(mv, l_xui_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, | |
1412 | FIX2(FIX(op, 0x7e), FIX(src1, 0)), | |
1413 | OP2(ORXREG1, OWREG1), | |
1414 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1415 | ENC(dst, reg, 1))) | |
1416 | INSNE(mv, l_sl_sl, l, 1_or_2_src, 1cycle, C62X, | |
1417 | TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO, | |
1418 | FIX3(FIX(op, 0x20), FIX(x, 0), FIX(src1, 0)), | |
1419 | OP2(ORREGL1, OWREGL1), | |
1420 | ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1))) | |
1421 | INSNE(mv, s_xui_ui, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, | |
1422 | FIX2(FIX(op, 0x1a), FIX(src1, 0)), | |
1423 | OP2(ORXREG1, OWREG1), | |
1424 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1425 | ENC(dst, reg, 1))) | |
1426 | INSNE(mv, d_si_si, d, 1_or_2_src, 1cycle, C62X, | |
1427 | TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(0), | |
1428 | FIX2(FIX(op, 0x12), FIX(src1, 0)), | |
1429 | OP2(ORREG1, OWREG1), | |
1430 | ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1))) | |
1431 | INSNE(mv, d_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, | |
1432 | TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(1), | |
1433 | FIX2(FIX(op, 0x3), FIX(src1, 0)), | |
1434 | OP2(ORXREG1, OWREG1), | |
1435 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1436 | ENC(dst, reg, 1))) | |
1437 | ||
1438 | INSNE(mvc, from_cr, s, 1_or_2_src, 1cycle, C62X, | |
1439 | TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_NO_CROSS, | |
1440 | FIX3(FIX(s, 1), FIX(op, 0x0f), FIX(x, 0)), | |
1441 | OP2(ORCREG1, OWREG1), | |
1442 | ENC3(ENC(src1, crhi, 0), ENC(src2, crlo, 0), ENC(dst, reg, 1))) | |
1443 | INSNE(mvc, to_cr, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_SIDE_B_ONLY, | |
1444 | FIX2(FIX(s, 1), FIX(op, 0x0e)), | |
1445 | OP2(ORXREG1, OWCREG1), | |
1446 | ENC4(ENC(x, xpath, 0), ENC(src2, reg, 0), ENC(src1, crhi, 1), | |
1447 | ENC(dst, crlo, 1))) | |
1448 | ||
1449 | INSN(mvd, m, unary, 4cycle, C64X, 0, | |
1450 | FIX1(FIX(op, 0x1a)), | |
1451 | OP2(ORXREG1, OWREG4), | |
1452 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1453 | ENC(dst, reg, 1))) | |
1454 | ||
1455 | INSN(mvk, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
1456 | FIX1(FIX(h, 0)), | |
1457 | OP2(OLCST, OWREG1), | |
1458 | ENC3(ENC(s, fu, 0), ENC(cst, scst, 0), ENC(dst, reg, 1))) | |
1459 | INSN(mvk, l, unary, 1cycle, C64X, TIC6X_FLAG_NO_CROSS, | |
1460 | FIX2(FIX(x, 0), FIX(op, 0x05)), | |
1461 | OP2(OACST, OWREG1), | |
1462 | ENC3(ENC(s, fu, 0), ENC(src2, scst, 0), ENC(dst, reg, 1))) | |
1463 | INSN(mvk, d, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_NO_CROSS, | |
1464 | FIX2(FIX(op, 0x00), FIX(src2, 0)), | |
1465 | OP2(OACST, OWREG1), | |
1466 | ENC3(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(dst, reg, 1))) | |
1467 | ||
1468 | INSN(mvkh, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
1469 | FIX1(FIX(h, 1)), | |
1470 | OP2(OLCST, OWREG1), | |
1471 | ENC3(ENC(s, fu, 0), ENC(cst, lcst_high16, 0), ENC(dst, reg, 1))) | |
1472 | ||
1473 | INSN(mvklh, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO, | |
1474 | FIX1(FIX(h, 1)), | |
1475 | OP2(OLCST, OWREG1), | |
1476 | ENC3(ENC(s, fu, 0), ENC(cst, lcst_low16, 0), ENC(dst, reg, 1))) | |
1477 | ||
1478 | INSN(mvkl, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO, | |
1479 | FIX1(FIX(h, 0)), | |
1480 | OP2(OLCST, OWREG1), | |
1481 | ENC3(ENC(s, fu, 0), ENC(cst, lcst_low16, 0), ENC(dst, reg, 1))) | |
1482 | ||
1483 | INSNE(neg, s_xsi_si, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, | |
1484 | FIX2(FIX(op, 0x16), FIX(src1, 0)), | |
1485 | OP2(ORXREG1, OWREG1), | |
1486 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1487 | ENC(dst, reg, 1))) | |
1488 | INSNE(neg, l_xsi_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, | |
1489 | FIX2(FIX(op, 0x06), FIX(src1, 0)), | |
1490 | OP2(ORXREG1, OWREG1), | |
1491 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1492 | ENC(dst, reg, 1))) | |
1493 | INSNE(neg, l_sl_sl, l, 1_or_2_src, 1cycle, C62X, | |
1494 | TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO, | |
1495 | FIX2(FIX(op, 0x24), FIX(src1, 0)), | |
1496 | OP2(ORREGL1, OWREGL1), | |
1497 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1498 | ENC(dst, reg, 1))) | |
1499 | ||
1500 | INSN(nop, nfu, nop_idle, nop, C62X, 0, | |
1501 | FIX2(FIX(s, 0), RAN(op, 0, 8)), | |
1502 | OP1(OACST), | |
1503 | ENC1(ENC(op, ucst_minus_one, 0))) | |
1504 | INSNE(nop, 1, nfu, nop_idle, nop, C62X, TIC6X_FLAG_MACRO, | |
1505 | FIX2(FIX(s, 0), FIX(op, 0)), | |
1506 | OP0(), | |
1507 | ENC0()) | |
1508 | ||
1509 | INSNE(norm, l_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0, | |
1510 | FIX2(FIX(op, 0x63), FIX(src1, 0)), | |
1511 | OP2(ORXREG1, OWREG1), | |
1512 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1513 | ENC(dst, reg, 1))) | |
1514 | INSNE(norm, l_sl_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
1515 | FIX3(FIX(op, 0x60), FIX(x, 0), FIX(src1, 0)), | |
1516 | OP2(ORREGL1, OWREG1), | |
1517 | ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1))) | |
1518 | ||
1519 | INSN(not, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, | |
1520 | FIX2(FIX(op, 0x6e), FIX(src1, 0x1f)), | |
1521 | OP2(ORXREG1, OWREG1), | |
1522 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1523 | ENC(dst, reg, 1))) | |
1524 | INSN(not, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, | |
1525 | FIX2(FIX(op, 0x0a), FIX(src1, 0x1f)), | |
1526 | OP2(ORXREG1, OWREG1), | |
1527 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1528 | ENC(dst, reg, 1))) | |
1529 | INSN(not, d, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO, | |
1530 | FIX2(FIX(op, 0xf), FIX(src1, 0x1f)), | |
1531 | OP2(ORXREG1, OWREG1), | |
1532 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1533 | ENC(dst, reg, 1))) | |
1534 | ||
1535 | INSNE(or, d_ui_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0, | |
1536 | FIX1(FIX(op, 0x2)), | |
1537 | OP3(ORREG1, ORXREG1, OWREG1), | |
1538 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1539 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1540 | INSNE(or, d_s5_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0, | |
1541 | FIX1(FIX(op, 0x3)), | |
1542 | OP3(OACST, ORXREG1, OWREG1), | |
1543 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), | |
1544 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1545 | INSNE(or, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0, | |
1546 | FIX1(FIX(op, 0x7f)), | |
1547 | OP3(ORREG1, ORXREG1, OWREG1), | |
1548 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1549 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1550 | INSNE(or, l_s5_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0, | |
1551 | FIX1(FIX(op, 0x7e)), | |
1552 | OP3(OACST, ORXREG1, OWREG1), | |
1553 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), | |
1554 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1555 | INSNE(or, s_ui_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0, | |
1556 | FIX1(FIX(op, 0x1b)), | |
1557 | OP3(ORREG1, ORXREG1, OWREG1), | |
1558 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1559 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1560 | INSNE(or, s_s5_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0, | |
1561 | FIX1(FIX(op, 0x1a)), | |
1562 | OP3(OACST, ORXREG1, OWREG1), | |
1563 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), | |
1564 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1565 | ||
1566 | INSN(pack2, l, 1_or_2_src, 1cycle, C64X, 0, | |
1567 | FIX1(FIX(op, 0x0)), | |
1568 | OP3(ORREG1, ORXREG1, OWREG1), | |
1569 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1570 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1571 | INSN(pack2, s, ext_1_or_2_src, 1cycle, C64X, 0, | |
1572 | FIX1(FIX(op, 0xf)), | |
1573 | OP3(ORREG1, ORXREG1, OWREG1), | |
1574 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1575 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1576 | ||
1577 | INSN(packh2, l, 1_or_2_src, 1cycle, C64X, 0, | |
1578 | FIX1(FIX(op, 0x1e)), | |
1579 | OP3(ORREG1, ORXREG1, OWREG1), | |
1580 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1581 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1582 | INSN(packh2, s, 1_or_2_src, 1cycle, C64X, 0, | |
1583 | FIX1(FIX(op, 0x9)), | |
1584 | OP3(ORREG1, ORXREG1, OWREG1), | |
1585 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1586 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1587 | ||
1588 | INSN(packh4, l, 1_or_2_src, 1cycle, C64X, 0, | |
1589 | FIX1(FIX(op, 0x69)), | |
1590 | OP3(ORREG1, ORXREG1, OWREG1), | |
1591 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1592 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1593 | ||
1594 | INSN(packhl2, l, 1_or_2_src, 1cycle, C64X, 0, | |
1595 | FIX1(FIX(op, 0x1c)), | |
1596 | OP3(ORREG1, ORXREG1, OWREG1), | |
1597 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1598 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1599 | INSN(packhl2, s, 1_or_2_src, 1cycle, C64X, 0, | |
1600 | FIX1(FIX(op, 0x8)), | |
1601 | OP3(ORREG1, ORXREG1, OWREG1), | |
1602 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1603 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1604 | ||
1605 | INSN(packlh2, l, 1_or_2_src, 1cycle, C64X, 0, | |
1606 | FIX1(FIX(op, 0x1b)), | |
1607 | OP3(ORREG1, ORXREG1, OWREG1), | |
1608 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1609 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1610 | INSN(packlh2, s, 1_or_2_src, 1cycle, C64X, 0, | |
1611 | FIX1(FIX(op, 0x10)), | |
1612 | OP3(ORREG1, ORXREG1, OWREG1), | |
1613 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1614 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1615 | ||
1616 | INSN(packl4, l, 1_or_2_src, 1cycle, C64X, 0, | |
1617 | FIX1(FIX(op, 0x68)), | |
1618 | OP3(ORREG1, ORXREG1, OWREG1), | |
1619 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1620 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1621 | ||
1622 | INSN(rcpdp, s, 1_or_2_src, 2cycle_dp, C67X, TIC6X_FLAG_NO_CROSS, | |
795b8e6b | 1623 | FIX2(FIX(op, 0x2d), FIX(x, 0)), |
40b36596 | 1624 | OP2(ORREGD1, OWREGD12), |
795b8e6b NC |
1625 | ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0), |
1626 | ENC(dst, reg, 1))) | |
40b36596 JM |
1627 | |
1628 | INSN(rcpsp, s, 1_or_2_src, 1cycle, C67X, 0, | |
1629 | FIX2(FIX(op, 0x3d), FIX(src1, 0)), | |
1630 | OP2(ORXREG1, OWREG1), | |
1631 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1632 | ENC(dst, reg, 1))) | |
1633 | ||
1634 | INSN(ret, s, ext_branch_cond_imm, branch, C62X, | |
1635 | TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN, | |
1636 | FIX0(), | |
1637 | OP1(OLCST), | |
1638 | ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0))) | |
1639 | INSN(ret, s, branch, branch, C62X, | |
1640 | TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN, | |
1641 | FIX1(FIX(s, 1)), | |
1642 | OP1(ORXREG1), | |
1643 | ENC2(ENC(x, xpath, 0), ENC(src2, reg, 0))) | |
1644 | INSN(ret, s, b_irp, branch, C62X, | |
1645 | TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN, | |
1646 | FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)), | |
1647 | OP1(ORIRP1), | |
1648 | ENC0()) | |
1649 | INSN(ret, s, b_nrp, branch, C62X, | |
1650 | TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN, | |
1651 | FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)), | |
1652 | OP1(ORNRP1), | |
1653 | ENC0()) | |
1654 | ||
1655 | INSN(retp, s, call_imm_nop, branch, C64XP, | |
1656 | TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN, | |
1657 | FIX1(FIX(z, 1)), | |
1658 | OP2(OLCST, OWRETREG1), | |
1659 | ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0))) | |
1660 | ||
1661 | INSN(rint, nfu, rint, 1cycle, C64XP, 0, | |
1662 | FIX1(FIX(s, 0)), | |
1663 | OP0(), | |
1664 | ENC0()) | |
1665 | ||
1666 | INSNE(rotl, m_ui_xui_ui, m, compound, 1616_m, C64X, 0, | |
1667 | FIX1(FIX(op, 0x1d)), | |
1668 | OP3(ORXREG1, ORREG1, OWREG2), | |
1669 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1670 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
1671 | INSNE(rotl, m_u5_xui_ui, m, compound, 1616_m, C64X, 0, | |
1672 | FIX1(FIX(op, 0x1e)), | |
1673 | OP3(ORXREG1, OACST, OWREG2), | |
1674 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1675 | ENC(src1, ucst, 1), ENC(dst, reg, 2))) | |
1676 | ||
1677 | INSN(rpack2, s, ext_1_or_2_src_noncond, 1cycle, C64XP, 0, | |
1678 | FIX2(FIX(op, 0xb), FIX(z, 1)), | |
1679 | OP3(ORREG1, ORXREG1, OWREG1), | |
1680 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1681 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1682 | ||
1683 | INSN(rsqrdp, s, 1_or_2_src, 2cycle_dp, C67X, TIC6X_FLAG_NO_CROSS, | |
795b8e6b | 1684 | FIX2(FIX(op, 0x2e), FIX(x, 0)), |
40b36596 | 1685 | OP2(ORREGD1, OWREGD12), |
795b8e6b NC |
1686 | ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0), |
1687 | ENC(dst, reg, 1))) | |
40b36596 JM |
1688 | |
1689 | INSN(rsqrsp, s, 1_or_2_src, 1cycle, C67X, 0, | |
1690 | FIX2(FIX(op, 0x3e), FIX(src1, 0)), | |
1691 | OP2(ORXREG1, OWREG1), | |
1692 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1693 | ENC(dst, reg, 1))) | |
1694 | ||
1695 | INSNE(sadd, l_si_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0, | |
1696 | FIX1(FIX(op, 0x13)), | |
1697 | OP3(ORREG1, ORXREG1, OWREG1), | |
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_xsi_sl_sl, l, 1_or_2_src, 1cycle, C62X, 0, | |
1701 | FIX1(FIX(op, 0x31)), | |
1702 | OP3(ORXREG1, ORREGL1, OWREGL1), | |
1703 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1704 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1705 | INSNE(sadd, l_s5_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0, | |
1706 | FIX1(FIX(op, 0x12)), | |
1707 | OP3(OACST, ORXREG1, OWREG1), | |
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, l_s5_sl_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
1711 | FIX1(FIX(op, 0x30)), | |
1712 | OP3(OACST, ORREGL1, OWREGL1), | |
1713 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), | |
1714 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1715 | INSNE(sadd, s_si_xsi_si, s, 1_or_2_src, 1cycle, C64X, 0, | |
1716 | FIX1(FIX(op, 0x20)), | |
1717 | OP3(ORREG1, ORXREG1, OWREG1), | |
1718 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1719 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1720 | ||
1721 | INSN(sadd2, s, ext_1_or_2_src, 1cycle, C64X, 0, | |
1722 | FIX1(FIX(op, 0x0)), | |
1723 | OP3(ORREG1, ORXREG1, OWREG1), | |
1724 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1725 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1726 | ||
1727 | INSN(saddsub, l, 1_or_2_src_noncond, 1cycle, C64XP, 0, | |
1728 | FIX1(FIX(op, 0x0e)), | |
1729 | OP3(ORREG1, ORXREG1, OWREGD1), | |
1730 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1731 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1732 | ||
1733 | INSN(saddsub2, l, 1_or_2_src_noncond, 1cycle, C64XP, 0, | |
1734 | FIX1(FIX(op, 0x0f)), | |
1735 | OP3(ORREG1, ORXREG1, OWREGD1), | |
1736 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1737 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1738 | ||
1739 | INSN(saddsu2, s, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO, | |
1740 | FIX1(FIX(op, 0x1)), | |
1741 | OP3(ORXREG1, ORREG1, OWREG1), | |
1742 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1743 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
1744 | ||
1745 | INSN(saddus2, s, ext_1_or_2_src, 1cycle, C64X, 0, | |
1746 | FIX1(FIX(op, 0x1)), | |
1747 | OP3(ORREG1, ORXREG1, OWREG1), | |
1748 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1749 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1750 | ||
1751 | INSN(saddu4, s, ext_1_or_2_src, 1cycle, C64X, 0, | |
1752 | FIX1(FIX(op, 0x3)), | |
1753 | OP3(ORREG1, ORXREG1, OWREG1), | |
1754 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1755 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1756 | ||
1757 | INSN(sat, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
1758 | FIX3(FIX(op, 0x40), FIX(x, 0), FIX(src1, 0)), | |
1759 | OP2(ORREGL1, OWREG1), | |
1760 | ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1))) | |
1761 | ||
1762 | INSN(set, s, field, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
1763 | FIX1(FIX(op, 0x2)), | |
1764 | OP4(ORREG1, OACST, OACST, OWREG1), | |
1765 | ENC5(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(csta, ucst, 1), | |
1766 | ENC(cstb, ucst, 2), ENC(dst, reg, 3))) | |
1767 | INSN(set, s, 1_or_2_src, 1cycle, C62X, 0, | |
1768 | FIX1(FIX(op, 0x3b)), | |
1769 | OP3(ORXREG1, ORREG1, OWREG1), | |
1770 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1771 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
1772 | ||
1773 | INSN(shfl, m, unary, 1616_m, C64X, 0, | |
1774 | FIX1(FIX(op, 0x1c)), | |
1775 | OP2(ORXREG1, OWREG2), | |
1776 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1777 | ENC(dst, reg, 1))) | |
1778 | ||
1779 | INSN(shfl3, l, 1_or_2_src_noncond, 1cycle, C64XP, 0, | |
1780 | FIX1(FIX(op, 0x36)), | |
1781 | OP3(ORREG1, ORXREG1, OWREGD1), | |
1782 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1783 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1784 | ||
1785 | INSNE(shl, s_xsi_ui_si, s, 1_or_2_src, 1cycle, C62X, 0, | |
1786 | FIX1(FIX(op, 0x33)), | |
1787 | OP3(ORXREG1, ORREG1, OWREG1), | |
1788 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1789 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
1790 | INSNE(shl, s_sl_ui_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
1791 | FIX2(FIX(op, 0x31), FIX(x, 0)), | |
1792 | OP3(ORREGL1, ORREG1, OWREGL1), | |
1793 | ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1), | |
1794 | ENC(dst, reg, 2))) | |
1795 | INSNE(shl, s_xui_ui_ul, s, 1_or_2_src, 1cycle, C62X, 0, | |
1796 | FIX1(FIX(op, 0x13)), | |
1797 | OP3(ORXREG1, ORREG1, OWREGL1), | |
1798 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1799 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
1800 | INSNE(shl, s_xsi_u5_si, s, 1_or_2_src, 1cycle, C62X, 0, | |
1801 | FIX1(FIX(op, 0x32)), | |
1802 | OP3(ORXREG1, OACST, OWREG1), | |
1803 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1804 | ENC(src1, ucst, 1), ENC(dst, reg, 2))) | |
1805 | INSNE(shl, s_sl_u5_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
1806 | FIX2(FIX(op, 0x30), FIX(x, 0)), | |
1807 | OP3(ORREGL1, OACST, OWREGL1), | |
1808 | ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1), | |
1809 | ENC(dst, reg, 2))) | |
1810 | INSNE(shl, s_xui_u5_ul, s, 1_or_2_src, 1cycle, C62X, 0, | |
1811 | FIX1(FIX(op, 0x12)), | |
1812 | OP3(ORXREG1, OACST, OWREGL1), | |
1813 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1814 | ENC(src1, ucst, 1), ENC(dst, reg, 2))) | |
1815 | ||
1816 | INSN(shlmb, l, 1_or_2_src, 1cycle, C64X, 0, | |
1817 | FIX1(FIX(op, 0x61)), | |
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 | INSN(shlmb, s, ext_1_or_2_src, 1cycle, C64X, 0, | |
1822 | FIX1(FIX(op, 0x9)), | |
1823 | OP3(ORREG1, ORXREG1, OWREG1), | |
1824 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1825 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1826 | ||
1827 | INSNE(shr, s_xsi_ui_si, s, 1_or_2_src, 1cycle, C62X, 0, | |
1828 | FIX1(FIX(op, 0x37)), | |
1829 | OP3(ORXREG1, ORREG1, OWREG1), | |
1830 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1831 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
1832 | INSNE(shr, s_sl_ui_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
1833 | FIX2(FIX(op, 0x35), FIX(x, 0)), | |
1834 | OP3(ORREGL1, ORREG1, OWREGL1), | |
1835 | ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1), | |
1836 | ENC(dst, reg, 2))) | |
1837 | INSNE(shr, s_xsi_u5_si, s, 1_or_2_src, 1cycle, C62X, 0, | |
1838 | FIX1(FIX(op, 0x36)), | |
1839 | OP3(ORXREG1, OACST, OWREG1), | |
1840 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1841 | ENC(src1, ucst, 1), ENC(dst, reg, 2))) | |
1842 | INSNE(shr, s_sl_u5_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
1843 | FIX2(FIX(op, 0x34), FIX(x, 0)), | |
1844 | OP3(ORREGL1, OACST, OWREGL1), | |
1845 | ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1), | |
1846 | ENC(dst, reg, 2))) | |
1847 | ||
1848 | INSNE(shr2, s_xs2_ui_s2, s, ext_1_or_2_src, 1cycle, C64X, 0, | |
1849 | FIX1(FIX(op, 0x7)), | |
1850 | OP3(ORXREG1, ORREG1, OWREG1), | |
1851 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1852 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
1853 | INSNE(shr2, s_xs2_u5_s2, s, 1_or_2_src, 1cycle, C64X, 0, | |
1854 | FIX1(FIX(op, 0x18)), | |
1855 | OP3(ORXREG1, OACST, OWREG1), | |
1856 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1857 | ENC(src1, ucst, 1), ENC(dst, reg, 2))) | |
1858 | ||
1859 | INSN(shrmb, l, 1_or_2_src, 1cycle, C64X, 0, | |
1860 | FIX1(FIX(op, 0x62)), | |
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 | INSN(shrmb, s, ext_1_or_2_src, 1cycle, C64X, 0, | |
1865 | FIX1(FIX(op, 0xa)), | |
1866 | OP3(ORREG1, ORXREG1, OWREG1), | |
1867 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1868 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1869 | ||
1870 | INSNE(shru, s_xui_ui_ui, s, 1_or_2_src, 1cycle, C62X, 0, | |
1871 | FIX1(FIX(op, 0x27)), | |
1872 | OP3(ORXREG1, ORREG1, OWREG1), | |
1873 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1874 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
1875 | INSNE(shru, s_ul_ui_ul, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
1876 | FIX2(FIX(op, 0x25), FIX(x, 0)), | |
1877 | OP3(ORREGL1, ORREG1, OWREGL1), | |
1878 | ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1), | |
1879 | ENC(dst, reg, 2))) | |
1880 | INSNE(shru, s_xui_u5_ui, s, 1_or_2_src, 1cycle, C62X, 0, | |
1881 | FIX1(FIX(op, 0x26)), | |
1882 | OP3(ORXREG1, OACST, OWREG1), | |
1883 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1884 | ENC(src1, ucst, 1), ENC(dst, reg, 2))) | |
1885 | INSNE(shru, s_ul_u5_ul, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
1886 | FIX2(FIX(op, 0x24), FIX(x, 0)), | |
1887 | OP3(ORREGL1, OACST, OWREGL1), | |
1888 | ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1), | |
1889 | ENC(dst, reg, 2))) | |
1890 | ||
1891 | INSNE(shru2, s_xu2_ui_u2, s, ext_1_or_2_src, 1cycle, C64X, 0, | |
1892 | FIX1(FIX(op, 0x8)), | |
1893 | OP3(ORXREG1, ORREG1, OWREG1), | |
1894 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1895 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
1896 | INSNE(shru2, s_xu2_u5_u2, s, 1_or_2_src, 1cycle, C64X, 0, | |
1897 | FIX1(FIX(op, 0x19)), | |
1898 | OP3(ORXREG1, OACST, OWREG1), | |
1899 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1900 | ENC(src1, ucst, 1), ENC(dst, reg, 2))) | |
1901 | ||
98d23bef | 1902 | INSN(sl, d, 1_or_2_src, store, C64XP, |
40b36596 JM |
1903 | TIC6X_FLAG_STORE|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_SIDE_T2_ONLY|TIC6X_FLAG_NO_CROSS, |
1904 | FIX3(FIX(s, 1), FIX(op, 0xd), FIX(src1, 0)), | |
1905 | OP2(ORDREG1, OWMEMDW), | |
1906 | ENC2(ENC(dst, reg, 0), ENC(src2, reg, 1))) | |
1907 | ||
1908 | INSN(smpy, m, mpy, 1616_m, C62X, 0, | |
1909 | FIX1(FIX(op, 0x1a)), | |
1910 | OP3(ORREG1, ORXREG1, OWREG2), | |
1911 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1912 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1913 | ||
1914 | INSN(smpyh, m, mpy, 1616_m, C62X, 0, | |
1915 | FIX1(FIX(op, 0x02)), | |
1916 | OP3(ORREG1, ORXREG1, OWREG2), | |
1917 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1918 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1919 | ||
1920 | INSN(smpyhl, m, mpy, 1616_m, C62X, 0, | |
1921 | FIX1(FIX(op, 0x0a)), | |
1922 | OP3(ORREG1, ORXREG1, OWREG2), | |
1923 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1924 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1925 | ||
1926 | INSN(smpylh, m, mpy, 1616_m, C62X, 0, | |
1927 | FIX1(FIX(op, 0x12)), | |
1928 | OP3(ORREG1, ORXREG1, OWREG2), | |
1929 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1930 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1931 | ||
1932 | INSN(smpy2, m, compound, 4cycle, C64X, 0, | |
1933 | FIX1(FIX(op, 0x01)), | |
1934 | OP3(ORREG1, ORXREG1, OWREGD4), | |
1935 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1936 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1937 | ||
1938 | /* Contrary to SPRUFE8, this is the correct operand order for this | |
1939 | instruction. */ | |
1940 | INSN(smpy32, m, 1_or_2_src, 4cycle, C64XP, 0, | |
1941 | FIX1(FIX(op, 0x19)), | |
1942 | OP3(ORREG1, ORXREG1, OWREG4), | |
1943 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1944 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1945 | ||
1946 | INSN(spack2, s, ext_1_or_2_src, 1cycle, C64X, 0, | |
1947 | FIX1(FIX(op, 0x2)), | |
1948 | OP3(ORREG1, ORXREG1, OWREG1), | |
1949 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1950 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1951 | ||
1952 | INSN(spacku4, s, ext_1_or_2_src, 1cycle, C64X, 0, | |
1953 | FIX1(FIX(op, 0x4)), | |
1954 | OP3(ORREG1, ORXREG1, OWREG1), | |
1955 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
1956 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
1957 | ||
1958 | INSN(spdp, s, 1_or_2_src, 2cycle_dp, C67X, 0, | |
1959 | FIX2(FIX(op, 0x02), FIX(src1, 0)), | |
1960 | OP2(ORXREG1, OWREGD12), | |
1961 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1962 | ENC(dst, reg, 1))) | |
1963 | ||
1964 | INSN(spint, l, 1_or_2_src, 4cycle, C67X, 0, | |
1965 | FIX2(FIX(op, 0x0a), FIX(src1, 0)), | |
1966 | OP2(ORXREG1, OWREG4), | |
1967 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
1968 | ENC(dst, reg, 1))) | |
1969 | ||
1970 | INSNE(spkernel, nfu_2, nfu, spkernel, 1cycle, C64XP, | |
1971 | TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPKERNEL, | |
1972 | FIX1(FIX(s, 0)), | |
1973 | OP2(OACST, OACST), | |
1974 | ENC2(ENC(fstgfcyc, fstg, 0), ENC(fstgfcyc, fcyc, 1))) | |
1975 | INSNE(spkernel, nfu_0, nfu, spkernel, 1cycle, C64XP, | |
1976 | TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPKERNEL|TIC6X_FLAG_MACRO, | |
1977 | FIX2(FIX(s, 0), FIX(fstgfcyc, 0)), | |
1978 | OP0(), | |
1979 | ENC0()) | |
1980 | ||
1981 | INSN(spkernelr, nfu, spkernelr, 1cycle, C64XP, | |
1982 | TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPKERNEL, | |
1983 | FIX1(FIX(s, 0)), | |
1984 | OP0(), | |
1985 | ENC0()) | |
1986 | ||
1987 | INSN(sploop, nfu, loop_buffer, 1cycle, C64XP, | |
1988 | TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP, | |
1989 | FIX4(FIX(s, 0), FIX(op, 0xc), FIX(csta, 0), RAN(cstb, 0, 13)), | |
1990 | OP1(OACST), | |
1991 | ENC1(ENC(cstb, ucst_minus_one, 0))) | |
1992 | ||
1993 | INSN(sploopd, nfu, loop_buffer, 1cycle, C64XP, | |
1994 | TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP, | |
1995 | FIX4(FIX(s, 0), FIX(op, 0xd), FIX(csta, 0), RAN(cstb, 0, 13)), | |
1996 | OP1(OACST), | |
1997 | ENC1(ENC(cstb, ucst_minus_one, 0))) | |
1998 | ||
1999 | INSN(sploopw, nfu, loop_buffer, 1cycle, C64XP, | |
2000 | TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP, | |
2001 | FIX4(FIX(s, 0), FIX(op, 0xf), FIX(csta, 0), RAN(cstb, 0, 13)), | |
2002 | OP1(OACST), | |
2003 | ENC1(ENC(cstb, ucst_minus_one, 0))) | |
2004 | ||
2005 | /* Contrary to SPRUFE8, this is the correct encoding for this | |
2006 | instruction. */ | |
2007 | INSN(spmask, nfu, spmask, 1cycle, C64XP, TIC6X_FLAG_FIRST|TIC6X_FLAG_SPMASK, | |
2008 | FIX2(FIX(s, 0), FIX(op, 0x8)), | |
2009 | OP1(OFULIST), | |
2010 | ENC1(ENC(mask, spmask, 0))) | |
2011 | ||
2012 | INSN(spmaskr, nfu, spmask, 1cycle, C64XP, TIC6X_FLAG_FIRST|TIC6X_FLAG_SPMASK, | |
2013 | FIX2(FIX(s, 0), FIX(op, 0x9)), | |
2014 | OP1(OFULIST), | |
2015 | ENC1(ENC(mask, spmask, 0))) | |
2016 | ||
2017 | INSN(sptrunc, l, 1_or_2_src, 4cycle, C67X, 0, | |
2018 | FIX2(FIX(op, 0x0b), FIX(src1, 0)), | |
2019 | OP2(ORXREG1, OWREG4), | |
2020 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
2021 | ENC(dst, reg, 1))) | |
2022 | ||
2023 | INSNE(sshl, s_xsi_ui_si, s, 1_or_2_src, 1cycle, C62X, 0, | |
2024 | FIX1(FIX(op, 0x23)), | |
2025 | OP3(ORXREG1, ORREG1, OWREG1), | |
2026 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
2027 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
2028 | INSNE(sshl, s_xsi_u5_si, s, 1_or_2_src, 1cycle, C62X, 0, | |
2029 | FIX1(FIX(op, 0x22)), | |
2030 | OP3(ORXREG1, OACST, OWREG1), | |
2031 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
2032 | ENC(src1, ucst, 1), ENC(dst, reg, 2))) | |
2033 | ||
2034 | INSN(sshvl, m, compound, 1616_m, C64X, 0, | |
2035 | FIX1(FIX(op, 0x1c)), | |
2036 | OP3(ORXREG1, ORREG1, OWREG2), | |
2037 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
2038 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
2039 | ||
2040 | /* Contrary to SPRUFE8, this is the correct encoding for this | |
2041 | instruction. */ | |
2042 | INSN(sshvr, m, compound, 1616_m, C64X, 0, | |
2043 | FIX1(FIX(op, 0x1a)), | |
2044 | OP3(ORXREG1, ORREG1, OWREG2), | |
2045 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
2046 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
2047 | ||
2048 | INSNE(ssub, l_si_xsi_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1), | |
2049 | FIX1(FIX(op, 0x0f)), | |
2050 | OP3(ORREG1, ORXREG1, 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_xsi_si_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0), | |
2054 | FIX1(FIX(op, 0x1f)), | |
2055 | OP3(ORXREG1, ORREG1, OWREG1), | |
2056 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
2057 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2058 | INSNE(ssub, l_s5_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0, | |
2059 | FIX1(FIX(op, 0x0e)), | |
2060 | OP3(OACST, ORXREG1, OWREG1), | |
2061 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), | |
2062 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2063 | INSNE(ssub, l_s5_sl_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
2064 | FIX1(FIX(op, 0x2c)), | |
2065 | OP3(OACST, ORREGL1, OWREGL1), | |
2066 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), | |
2067 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2068 | ||
2069 | INSN(ssub2, l, 1_or_2_src, 1cycle, C64XP, 0, | |
2070 | FIX1(FIX(op, 0x64)), | |
2071 | OP3(ORREG1, ORXREG1, OWREG1), | |
2072 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
2073 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2074 | ||
2075 | INSN(stb, d, load_store, store, C62X, | |
2076 | TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), | |
2077 | FIX2(FIX(op, 3), FIX(r, 0)), | |
2078 | OP2(ORDREG1, OWMEMSB), | |
2079 | ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1), | |
2080 | ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1), | |
2081 | ENC(srcdst, reg, 0))) | |
2082 | INSN(stb, d, load_store_long, store, C62X, | |
2083 | TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0), | |
2084 | FIX1(FIX(op, 3)), | |
2085 | OP2(ORDREG1, OWMEMLB), | |
2086 | ENC4(ENC(s, data_fu, 0), ENC(y, areg, 1), ENC(offsetR, ulcst_dpr_byte, 1), | |
2087 | ENC(dst, reg, 0))) | |
2088 | ||
2089 | INSN(stdw, d, load_store, store, C64X, TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS, | |
2090 | FIX2(FIX(op, 4), FIX(r, 1)), | |
2091 | OP2(ORDREGD1, OWMEMSD), | |
2092 | ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1), | |
2093 | ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1), | |
2094 | ENC(srcdst, reg, 0))) | |
2095 | ||
2096 | INSN(sth, d, load_store, store, C62X, | |
2097 | TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), | |
2098 | FIX2(FIX(op, 5), FIX(r, 0)), | |
2099 | OP2(ORDREG1, OWMEMSH), | |
2100 | ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1), | |
2101 | ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1), | |
2102 | ENC(srcdst, reg, 0))) | |
2103 | INSN(sth, d, load_store_long, store, C62X, | |
2104 | TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0), | |
2105 | FIX1(FIX(op, 5)), | |
2106 | OP2(ORDREG1, OWMEMLH), | |
2107 | ENC4(ENC(s, data_fu, 0), ENC(y, areg, 1), ENC(offsetR, ulcst_dpr_half, 1), | |
2108 | ENC(dst, reg, 0))) | |
2109 | ||
2110 | INSN(stndw, d, store_nonaligned, store, C64X, | |
2111 | TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED, | |
2112 | FIX0(), | |
2113 | OP2(ORDREGD1, OWMEMND), | |
2114 | ENC7(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1), | |
2115 | ENC(offsetR, mem_offset_noscale, 1), ENC(baseR, reg, 1), | |
2116 | ENC(sc, scaled, 1), ENC(src, reg_shift, 0))) | |
2117 | ||
2118 | INSN(stnw, d, load_store, store, C64X, | |
2119 | TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED, | |
2120 | FIX2(FIX(op, 5), FIX(r, 1)), | |
2121 | OP2(ORDREG1, OWMEMSW), | |
2122 | ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1), | |
2123 | ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1), | |
2124 | ENC(srcdst, reg, 0))) | |
2125 | ||
2126 | INSN(stw, d, load_store, store, C62X, | |
2127 | TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), | |
2128 | FIX2(FIX(op, 7), FIX(r, 0)), | |
2129 | OP2(ORDREG1, OWMEMSW), | |
2130 | ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1), | |
2131 | ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1), | |
2132 | ENC(srcdst, reg, 0))) | |
2133 | INSN(stw, d, load_store_long, store, C62X, | |
2134 | TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0), | |
2135 | FIX1(FIX(op, 7)), | |
2136 | OP2(ORDREG1, OWMEMLW), | |
2137 | ENC4(ENC(s, data_fu, 0), ENC(y, areg, 1), ENC(offsetR, ulcst_dpr_word, 1), | |
2138 | ENC(dst, reg, 0))) | |
2139 | ||
2140 | INSNE(sub, l_si_xsi_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1), | |
2141 | FIX1(FIX(op, 0x07)), | |
2142 | OP3(ORREG1, ORXREG1, 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_xsi_si_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0), | |
2146 | FIX1(FIX(op, 0x17)), | |
2147 | OP3(ORXREG1, ORREG1, OWREG1), | |
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_si_xsi_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1), | |
2151 | FIX1(FIX(op, 0x27)), | |
2152 | OP3(ORREG1, ORXREG1, 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_xsi_si_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0), | |
2156 | FIX1(FIX(op, 0x37)), | |
2157 | OP3(ORXREG1, ORREG1, OWREGL1), | |
2158 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
2159 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2160 | INSNE(sub, l_s5_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0, | |
2161 | FIX1(FIX(op, 0x06)), | |
2162 | OP3(OACST, ORXREG1, OWREG1), | |
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_s5_sl_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
2166 | FIX1(FIX(op, 0x24)), | |
2167 | OP3(OACST, ORREGL1, OWREGL1), | |
2168 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), | |
2169 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2170 | INSNE(sub, l_xsi_s5_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, | |
2171 | FIX1(FIX(op, 0x2)), | |
2172 | OP3(ORXREG1, OACST, OWREG1), | |
2173 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst_negate, 1), | |
2174 | ENC(src2, reg, 0), ENC(dst, reg, 2))) | |
2175 | INSNE(sub, l_sl_s5_sl, l, 1_or_2_src, 1cycle, C62X, | |
2176 | TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS, | |
2177 | FIX2(FIX(op, 0x20), FIX(x, 0)), | |
2178 | OP3(ORREGL1, OACST, OWREGL1), | |
2179 | ENC4(ENC(s, fu, 0), ENC(src1, scst_negate, 1), ENC(src2, reg, 0), | |
2180 | ENC(dst, reg, 2))) | |
2181 | INSNE(sub, s_si_xsi_si, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1), | |
2182 | FIX1(FIX(op, 0x17)), | |
2183 | OP3(ORREG1, ORXREG1, OWREG1), | |
2184 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
2185 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2186 | INSNE(sub, s_s5_xsi_si, s, 1_or_2_src, 1cycle, C62X, 0, | |
2187 | FIX1(FIX(op, 0x16)), | |
2188 | OP3(OACST, ORXREG1, OWREG1), | |
2189 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), | |
2190 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2191 | /* Contrary to SPRUFE8, this is the correct encoding for this | |
2192 | instruction; this instruction can be predicated. */ | |
2193 | INSNE(sub, s_xsi_si_si, s, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_PREFER(0), | |
2194 | FIX1(FIX(op, 0x5)), | |
2195 | OP3(ORXREG1, ORREG1, OWREG1), | |
2196 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
2197 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
2198 | INSNE(sub, s_xsi_s5_si, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, | |
2199 | FIX1(FIX(op, 0x6)), | |
2200 | OP3(ORXREG1, OACST, OWREG1), | |
2201 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst_negate, 1), | |
2202 | ENC(src2, reg, 0), ENC(dst, reg, 2))) | |
2203 | INSNE(sub, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, | |
2204 | TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), | |
2205 | FIX1(FIX(op, 0x11)), | |
2206 | OP3(ORREG1, ORREG1, OWREG1), | |
2207 | ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1), | |
2208 | ENC(dst, reg, 2))) | |
2209 | INSNE(sub, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
2210 | FIX1(FIX(op, 0x13)), | |
2211 | OP3(ORREG1, OACST, OWREG1), | |
2212 | ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1), | |
2213 | ENC(dst, reg, 2))) | |
2214 | INSNE(sub, d_si_xsi_si, d, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_PREFER(0), | |
2215 | FIX1(FIX(op, 0xc)), | |
2216 | OP3(ORREG1, ORXREG1, OWREG1), | |
2217 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
2218 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2219 | ||
2220 | INSNE(subab, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
2221 | FIX1(FIX(op, 0x31)), | |
2222 | OP3(ORREG1, ORREG1, OWREG1), | |
2223 | ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1), | |
2224 | ENC(dst, reg, 2))) | |
2225 | INSNE(subab, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
2226 | FIX1(FIX(op, 0x33)), | |
2227 | OP3(ORREG1, OACST, OWREG1), | |
2228 | ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1), | |
2229 | ENC(dst, reg, 2))) | |
2230 | ||
2231 | INSN(subabs4, l, 1_or_2_src, 1cycle, C64X, 0, | |
2232 | FIX1(FIX(op, 0x5a)), | |
2233 | OP3(ORREG1, ORXREG1, OWREG1), | |
2234 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
2235 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2236 | ||
2237 | INSNE(subah, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
2238 | FIX1(FIX(op, 0x35)), | |
2239 | OP3(ORREG1, ORREG1, OWREG1), | |
2240 | ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1), | |
2241 | ENC(dst, reg, 2))) | |
2242 | INSNE(subah, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
2243 | FIX1(FIX(op, 0x37)), | |
2244 | OP3(ORREG1, OACST, OWREG1), | |
2245 | ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1), | |
2246 | ENC(dst, reg, 2))) | |
2247 | ||
2248 | INSNE(subaw, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
2249 | FIX1(FIX(op, 0x39)), | |
2250 | OP3(ORREG1, ORREG1, OWREG1), | |
2251 | ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1), | |
2252 | ENC(dst, reg, 2))) | |
2253 | INSNE(subaw, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, | |
2254 | FIX1(FIX(op, 0x3b)), | |
2255 | OP3(ORREG1, OACST, OWREG1), | |
2256 | ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1), | |
2257 | ENC(dst, reg, 2))) | |
2258 | ||
2259 | INSN(subc, l, 1_or_2_src, 1cycle, C62X, 0, | |
2260 | FIX1(FIX(op, 0x4b)), | |
2261 | OP3(ORREG1, ORXREG1, OWREG1), | |
2262 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
2263 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2264 | ||
2265 | INSNE(subdp, l_dp_xdp_dp, l, 1_or_2_src, addsubdp, C67X, TIC6X_FLAG_PREFER(1), | |
2266 | FIX1(FIX(op, 0x19)), | |
2267 | OP3(ORREGD12, ORXREGD12, 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, l_xdp_dp_dp, l, 1_or_2_src, addsubdp, C67X, TIC6X_FLAG_PREFER(0), | |
2271 | FIX1(FIX(op, 0x1d)), | |
2272 | OP3(ORXREGD12, ORREGD12, OWREGD67), | |
2273 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
2274 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2275 | INSNE(subdp, s_dp_xdp_dp, s, l_1_or_2_src, addsubdp, C67XP, | |
2276 | TIC6X_FLAG_PREFER(1), | |
2277 | FIX1(FIX(op, 0x73)), | |
2278 | OP3(ORREGD12, ORXREGD12, OWREGD67), | |
2279 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
2280 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2281 | INSNE(subdp, s_xdp_dp_dp, s, l_1_or_2_src, addsubdp, C67XP, | |
2282 | TIC6X_FLAG_PREFER(0), | |
2283 | FIX1(FIX(op, 0x77)), | |
2284 | OP3(ORXREGD12, ORREGD12, OWREGD67), | |
2285 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
2286 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
2287 | ||
2288 | INSNE(subsp, l_sp_xsp_sp, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_PREFER(1), | |
2289 | FIX1(FIX(op, 0x11)), | |
2290 | OP3(ORREG1, ORXREG1, 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, l_xsp_sp_sp, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_PREFER(0), | |
2294 | FIX1(FIX(op, 0x15)), | |
2295 | OP3(ORXREG1, ORREG1, OWREG4), | |
2296 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
2297 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2298 | INSNE(subsp, s_sp_xsp_sp, s, l_1_or_2_src, 4cycle, C67XP, | |
2299 | TIC6X_FLAG_PREFER(1), | |
2300 | FIX1(FIX(op, 0x71)), | |
2301 | OP3(ORREG1, ORXREG1, OWREG4), | |
2302 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
2303 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2304 | INSNE(subsp, s_xsp_sp_sp, s, l_1_or_2_src, 4cycle, C67XP, | |
2305 | TIC6X_FLAG_PREFER(0), | |
2306 | FIX1(FIX(op, 0x75)), | |
2307 | OP3(ORXREG1, ORREG1, OWREG4), | |
2308 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
2309 | ENC(src1, reg, 1), ENC(dst, reg, 2))) | |
2310 | ||
2311 | INSNE(subu, l_ui_xui_ul, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1), | |
2312 | FIX1(FIX(op, 0x2f)), | |
2313 | OP3(ORREG1, ORXREG1, 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 | INSNE(subu, l_xui_ui_ul, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0), | |
2317 | FIX1(FIX(op, 0x3f)), | |
2318 | OP3(ORXREG1, ORREG1, OWREGL1), | |
2319 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
2320 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2321 | ||
2322 | INSN(sub2, l, 1_or_2_src, 1cycle, C64X, 0, | |
2323 | FIX1(FIX(op, 0x04)), | |
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, s, 1_or_2_src, 1cycle, C62X, 0, | |
2328 | FIX1(FIX(op, 0x11)), | |
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 | INSN(sub2, d, ext_1_or_2_src, 1cycle, C64X, 0, | |
2333 | FIX1(FIX(op, 0x5)), | |
2334 | OP3(ORREG1, ORXREG1, OWREG1), | |
2335 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
2336 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2337 | ||
2338 | INSN(sub4, l, 1_or_2_src, 1cycle, C64X, 0, | |
2339 | FIX1(FIX(op, 0x66)), | |
2340 | OP3(ORREG1, ORXREG1, OWREG1), | |
2341 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
2342 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2343 | ||
2344 | INSN(swap2, l, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS, | |
2345 | FIX2(FIX(op, 0x1b), 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 | INSN(swap2, s, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS, | |
2350 | FIX2(FIX(op, 0x10), FIX(x, 0)), | |
2351 | OP2(ORREG1, OWREG1), | |
2352 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
2353 | ENC(src2, reg, 0), ENC(dst, reg, 1))) | |
2354 | ||
2355 | /* Contrary to SPRUFE8, this is the correct encoding for this | |
2356 | instruction. */ | |
2357 | INSN(swap4, l, unary, 1cycle, C64X, 0, | |
2358 | FIX1(FIX(op, 0x1)), | |
2359 | OP2(ORXREG1, OWREG1), | |
2360 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
2361 | ENC(dst, reg, 1))) | |
2362 | ||
2363 | INSN(swe, nfu, swe, 1cycle, C64XP, 0, | |
2364 | FIX1(FIX(s, 0)), | |
2365 | OP0(), | |
2366 | ENC0()) | |
2367 | ||
2368 | INSN(swenr, nfu, swenr, 1cycle, C64XP, 0, | |
2369 | FIX1(FIX(s, 0)), | |
2370 | OP0(), | |
2371 | ENC0()) | |
2372 | ||
2373 | INSN(unpkhu4, l, 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 | INSN(unpkhu4, s, unary, 1cycle, C64X, 0, | |
2379 | FIX1(FIX(op, 0x03)), | |
2380 | OP2(ORXREG1, OWREG1), | |
2381 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
2382 | ENC(dst, reg, 1))) | |
2383 | ||
2384 | INSN(unpklu4, l, 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 | INSN(unpklu4, s, unary, 1cycle, C64X, 0, | |
2390 | FIX1(FIX(op, 0x02)), | |
2391 | OP2(ORXREG1, OWREG1), | |
2392 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
2393 | ENC(dst, reg, 1))) | |
2394 | ||
2395 | INSNE(xor, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0, | |
2396 | FIX1(FIX(op, 0x6f)), | |
2397 | OP3(ORREG1, ORXREG1, OWREG1), | |
2398 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
2399 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2400 | INSNE(xor, l_s5_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0, | |
2401 | FIX1(FIX(op, 0x6e)), | |
2402 | OP3(OACST, ORXREG1, OWREG1), | |
2403 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), | |
2404 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2405 | INSNE(xor, s_ui_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0, | |
2406 | FIX1(FIX(op, 0x0b)), | |
2407 | OP3(ORREG1, ORXREG1, OWREG1), | |
2408 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
2409 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2410 | INSNE(xor, s_s5_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0, | |
2411 | FIX1(FIX(op, 0x0a)), | |
2412 | OP3(OACST, ORXREG1, OWREG1), | |
2413 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), | |
2414 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2415 | INSNE(xor, d_ui_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0, | |
2416 | FIX1(FIX(op, 0xe)), | |
2417 | OP3(ORREG1, ORXREG1, OWREG1), | |
2418 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
2419 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2420 | INSNE(xor, d_s5_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0, | |
2421 | FIX1(FIX(op, 0xf)), | |
2422 | OP3(OACST, ORXREG1, OWREG1), | |
2423 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), | |
2424 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2425 | ||
2426 | INSN(xormpy, m, 1_or_2_src, 4cycle, C64XP, 0, | |
2427 | FIX1(FIX(op, 0x1b)), | |
2428 | OP3(ORREG1, ORXREG1, OWREG4), | |
2429 | ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), | |
2430 | ENC(src2, reg, 1), ENC(dst, reg, 2))) | |
2431 | ||
2432 | INSN(xpnd2, m, unary, 1616_m, C64X, 0, | |
2433 | FIX1(FIX(op, 0x19)), | |
2434 | OP2(ORXREG1, OWREG2), | |
2435 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
2436 | ENC(dst, reg, 1))) | |
2437 | ||
2438 | INSN(xpnd4, m, unary, 1616_m, C64X, 0, | |
2439 | FIX1(FIX(op, 0x18)), | |
2440 | OP2(ORXREG1, OWREG2), | |
2441 | ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), | |
2442 | ENC(dst, reg, 1))) | |
2443 | ||
2444 | INSN(zero, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO, | |
2445 | FIX2(FIX(h, 0), FIX(cst, 0)), | |
2446 | OP1(OWREG1), | |
2447 | ENC2(ENC(s, fu, 0), ENC(dst, reg, 0))) | |
2448 | INSN(zero, l, unary, 1cycle, C64X, | |
2449 | TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(1), | |
2450 | FIX3(FIX(x, 0), FIX(op, 0x05), FIX(src2, 0)), | |
2451 | OP1(OWREG1), | |
2452 | ENC2(ENC(s, fu, 0), ENC(dst, reg, 0))) | |
2453 | INSNE(zero, l_sub, l, 1_or_2_src, 1cycle, C62X, | |
2454 | TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(0), | |
2455 | FIX2(FIX(op, 0x07), FIX(x, 0)), | |
2456 | OP1(OWREG1), | |
2457 | ENC4(ENC(s, fu, 0), ENC(src1, reg_unused, 0), ENC(src2, reg_unused, 0), | |
2458 | ENC(dst, reg, 0))) | |
2459 | INSNE(zero, l_sub_sl, l, 1_or_2_src, 1cycle, C62X, | |
2460 | TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO, | |
2461 | FIX2(FIX(op, 0x27), FIX(x, 0)), | |
2462 | OP1(OWREGL1), | |
2463 | ENC4(ENC(s, fu, 0), ENC(src1, reg_unused, 0), ENC(src2, reg_unused, 0), | |
2464 | ENC(dst, reg, 0))) | |
2465 | INSNE(zero, d_mvk, d, 1_or_2_src, 1cycle, C64X, | |
2466 | TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(1), | |
2467 | FIX3(FIX(op, 0x00), FIX(src1, 0), FIX(src2, 0)), | |
2468 | OP1(OWREG1), | |
2469 | ENC2(ENC(s, fu, 0), ENC(dst, reg, 0))) | |
2470 | INSNE(zero, d_sub, d, 1_or_2_src, 1cycle, C62X, | |
2471 | TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(0), | |
2472 | FIX1(FIX(op, 0x11)), | |
2473 | OP1(OWREG1), | |
2474 | ENC4(ENC(s, fu, 0), ENC(src2, reg_unused, 0), ENC(src1, reg_unused, 0), | |
2475 | ENC(dst, reg, 0))) | |
2476 | ||
2477 | #undef TIC6X_INSN_C64X_AND_C67X | |
2478 | #undef tic6x_insn_format_nfu_s_branch_nop_cst | |
2479 | #undef tic6x_insn_format_s_l_1_or_2_src | |
2480 | #undef RAN | |
2481 | #undef FIX | |
2482 | #undef FIX0 | |
2483 | #undef FIX1 | |
2484 | #undef FIX2 | |
2485 | #undef FIX3 | |
2486 | #undef FIX4 | |
2487 | #undef OP0 | |
2488 | #undef OP1 | |
2489 | #undef OP2 | |
2490 | #undef OP3 | |
2491 | #undef OP4 | |
2492 | #undef OACST | |
2493 | #undef OLCST | |
2494 | #undef OFULIST | |
2495 | #undef ORIRP1 | |
2496 | #undef ORNRP1 | |
2497 | #undef OWREG1 | |
2498 | #undef OWRETREG1 | |
2499 | #undef ORREG1 | |
2500 | #undef ORDREG1 | |
2501 | #undef ORWREG1 | |
2502 | #undef ORAREG1 | |
2503 | #undef ORXREG1 | |
2504 | #undef ORREG12 | |
2505 | #undef ORREG14 | |
2506 | #undef ORXREG14 | |
2507 | #undef OWREG2 | |
2508 | #undef OWREG4 | |
2509 | #undef OWREG9 | |
2510 | #undef OWDREG5 | |
2511 | #undef OWREGL1 | |
2512 | #undef ORREGL1 | |
2513 | #undef OWREGD1 | |
2514 | #undef OWREGD12 | |
2515 | #undef OWREGD4 | |
2516 | #undef ORREGD1 | |
2517 | #undef OWREGD45 | |
2518 | #undef OWREGD67 | |
2519 | #undef ORDREGD1 | |
2520 | #undef OWDREGD5 | |
2521 | #undef ORREGD12 | |
2522 | #undef ORXREGD12 | |
165546ad | 2523 | #undef ORXREGD1234 |
40b36596 JM |
2524 | #undef ORREGD1324 |
2525 | #undef OWREGD910 | |
2526 | #undef ORCREG1 | |
2527 | #undef OWCREG1 | |
2528 | #undef ORMEMDW | |
2529 | #undef OWMEMDW | |
2530 | #undef ORMEMSB | |
2531 | #undef OWMEMSB | |
2532 | #undef ORMEMLB | |
2533 | #undef OWMEMLB | |
2534 | #undef ORMEMSH | |
2535 | #undef OWMEMSH | |
2536 | #undef ORMEMLH | |
2537 | #undef OWMEMLH | |
2538 | #undef ORMEMSW | |
2539 | #undef OWMEMSW | |
2540 | #undef ORMEMLW | |
2541 | #undef OWMEMLW | |
2542 | #undef ORMEMSD | |
2543 | #undef OWMEMSD | |
2544 | #undef ORMEMND | |
2545 | #undef OWMEMND | |
2546 | #undef ENC | |
2547 | #undef ENC0 | |
2548 | #undef ENC1 | |
2549 | #undef ENC2 | |
2550 | #undef ENC3 | |
2551 | #undef ENC4 | |
2552 | #undef ENC5 | |
2553 | #undef ENC6 | |
2554 | #undef ENC7 |