1 /* TI C6X opcode table.
2 Copyright 2010-2013 Free Software Foundation, Inc.
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.
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.
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. */
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
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 }
78 #define ORREGD1324 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 3, 2, 4 }
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), \
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 }
114 INSN(abs
, l
, unary
, 1cycle
, C62X
, 0,
116 OP2(ORXREG1
, OWREG1
),
117 ENC4(ENC(s
, fu
, 0), ENC(x
, xpath
, 0), ENC(src2
, reg
, 0),
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)))
124 INSN(abs2
, l
, unary
, 1cycle
, C64X
, 0,
126 OP2(ORXREG1
, OWREG1
),
127 ENC4(ENC(s
, fu
, 0), ENC(x
, xpath
, 0), ENC(src2
, reg
, 0),
130 INSN(absdp
, s
, 1_or_2_src
, 2cycle_dp
, C67X
, TIC6X_FLAG_NO_CROSS
,
131 FIX2(FIX(op
, 0x2c), FIX(x
, 0)),
132 OP2(ORREGD1
, OWREGD12
),
133 ENC4(ENC(s
, fu
, 0), ENC(src2
, regpair_msb
, 0), ENC(src1
, regpair_lsb
, 0),
136 INSN(abssp
, s
, unary
, 1cycle
, C67X
, 0,
138 OP2(ORXREG1
, OWREG1
),
139 ENC4(ENC(s
, fu
, 0), ENC(x
, xpath
, 0), ENC(src2
, reg
, 0),
142 INSNE(add
, l_si_xsi_si
, l
, 1_or_2_src
, 1cycle
, C62X
, 0,
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,
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,
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,
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),
167 INSNE(add
, s_si_xsi_si
, s
, 1_or_2_src
, 1cycle
, C62X
, 0,
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,
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),
180 OP3(ORREG1
, ORREG1
, OWREG1
),
181 ENC4(ENC(s
, fu
, 0), ENC(src2
, reg
, 0), ENC(src1
, reg
, 1),
183 INSNE(add
, d_si_u5_si
, d
, 1_or_2_src
, 1cycle
, C62X
,
184 TIC6X_FLAG_NO_CROSS
|TIC6X_FLAG_PREFER(1),
186 OP3(ORREG1
, OACST
, OWREG1
),
187 ENC4(ENC(s
, fu
, 0), ENC(src2
, reg
, 0), ENC(src1
, ucst
, 1),
189 INSNE(add
, d_si_xsi_si
, d
, ext_1_or_2_src
, 1cycle
, C64X
, TIC6X_FLAG_PREFER(0),
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),
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)))
200 INSNE(addab
, d_si_si_si
, d
, 1_or_2_src
, 1cycle
, C62X
, TIC6X_FLAG_NO_CROSS
,
202 OP3(ORREG1
, ORREG1
, OWREG1
),
203 ENC4(ENC(s
, fu
, 0), ENC(src2
, reg
, 0), ENC(src1
, reg
, 1),
205 INSNE(addab
, d_si_u5_si
, d
, 1_or_2_src
, 1cycle
, C62X
,
206 TIC6X_FLAG_NO_CROSS
|TIC6X_FLAG_PREFER(1),
208 OP3(ORREG1
, OACST
, OWREG1
),
209 ENC4(ENC(s
, fu
, 0), ENC(src2
, reg
, 0), ENC(src1
, ucst
, 1),
211 INSN(addab
, d
, adda_long
, 1cycle
, C64XP
, TIC6X_FLAG_PREFER(0),
213 OP3(ORAREG1
, OLCST
, OWREG1
),
214 ENC4(ENC(s
, fu
, 0), ENC(y
, areg
, 0), ENC(offsetR
, ulcst_dpr_byte
, 1),
217 INSNE(addad
, d_si_si_si
, d
, 1_or_2_src
, 1cycle
, C64X_AND_C67X
,
220 OP3(ORREG1
, ORREG1
, OWREG1
),
221 ENC4(ENC(s
, fu
, 0), ENC(src2
, reg
, 0), ENC(src1
, reg
, 1),
223 INSNE(addad
, d_si_u5_si
, d
, 1_or_2_src
, 1cycle
, C64X_AND_C67X
,
226 OP3(ORREG1
, OACST
, OWREG1
),
227 ENC4(ENC(s
, fu
, 0), ENC(src2
, reg
, 0), ENC(src1
, ucst
, 1),
230 INSNE(addah
, d_si_si_si
, d
, 1_or_2_src
, 1cycle
, C62X
, TIC6X_FLAG_NO_CROSS
,
232 OP3(ORREG1
, ORREG1
, OWREG1
),
233 ENC4(ENC(s
, fu
, 0), ENC(src2
, reg
, 0), ENC(src1
, reg
, 1),
235 INSNE(addah
, d_si_u5_si
, d
, 1_or_2_src
, 1cycle
, C62X
,
236 TIC6X_FLAG_NO_CROSS
|TIC6X_FLAG_PREFER(1),
238 OP3(ORREG1
, OACST
, OWREG1
),
239 ENC4(ENC(s
, fu
, 0), ENC(src2
, reg
, 0), ENC(src1
, ucst
, 1),
241 INSN(addah
, d
, adda_long
, 1cycle
, C64XP
, TIC6X_FLAG_PREFER(0),
243 OP3(ORAREG1
, OLCST
, OWREG1
),
244 ENC4(ENC(s
, fu
, 0), ENC(y
, areg
, 0), ENC(offsetR
, ulcst_dpr_half
, 1),
247 INSNE(addaw
, d_si_si_si
, d
, 1_or_2_src
, 1cycle
, C62X
, TIC6X_FLAG_NO_CROSS
,
249 OP3(ORREG1
, ORREG1
, OWREG1
),
250 ENC4(ENC(s
, fu
, 0), ENC(src2
, reg
, 0), ENC(src1
, reg
, 1),
252 INSNE(addaw
, d_si_u5_si
, d
, 1_or_2_src
, 1cycle
, C62X
,
253 TIC6X_FLAG_NO_CROSS
|TIC6X_FLAG_PREFER(1),
255 OP3(ORREG1
, OACST
, OWREG1
),
256 ENC4(ENC(s
, fu
, 0), ENC(src2
, reg
, 0), ENC(src1
, ucst
, 1),
258 INSN(addaw
, d
, adda_long
, 1cycle
, C64XP
, TIC6X_FLAG_PREFER(0),
260 OP3(ORAREG1
, OLCST
, OWREG1
),
261 ENC4(ENC(s
, fu
, 0), ENC(y
, areg
, 0), ENC(offsetR
, ulcst_dpr_word
, 1),
264 INSN(adddp
, l
, 1_or_2_src
, addsubdp
, C67X
, 0,
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,
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)))
275 INSN(addk
, s
, addk
, 1cycle
, C62X
, TIC6X_FLAG_NO_CROSS
,
278 ENC3(ENC(s
, fu
, 0), ENC(cst
, scst
, 0), ENC(dst
, reg
, 1)))
280 INSN(addkpc
, s
, addkpc
, 1cycle
, C64X
,
281 TIC6X_FLAG_NO_CROSS
|TIC6X_FLAG_MCNOP
|TIC6X_FLAG_SIDE_B_ONLY
,
283 OP3(OLCST
, OWREG1
, OACST
),
284 ENC3(ENC(src1
, pcrel
, 0), ENC(dst
, reg
, 1), ENC(src2
, ucst
, 2)))
286 INSN(addsp
, l
, 1_or_2_src
, 4cycle
, C67X
, 0,
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,
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)))
297 INSN(addsub
, l
, 1_or_2_src_noncond
, 1cycle
, C64XP
, 0,
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)))
303 INSN(addsub2
, l
, 1_or_2_src_noncond
, 1cycle
, C64XP
, 0,
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)))
309 INSNE(addu
, l_ui_xui_ul
, l
, 1_or_2_src
, 1cycle
, C62X
, 0,
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,
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)))
320 INSN(add2
, s
, 1_or_2_src
, 1cycle
, C62X
, 0,
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,
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,
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)))
336 INSN(add4
, l
, 1_or_2_src
, 1cycle
, C64X
, 0,
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)))
342 INSNE(and, l_ui_xui_ui
, l
, 1_or_2_src
, 1cycle
, C62X
, 0,
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,
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,
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,
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,
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,
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)))
373 INSN(andn
, l
, 1_or_2_src
, 1cycle
, C64X
, 0,
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,
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,
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)))
389 INSN(avg2
, m
, compound
, 1616_m
, C64X
, 0,
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)))
395 INSN(avgu4
, m
, compound
, 1616_m
, C64X
, 0,
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)))
401 INSN(b
, s
, ext_branch_cond_imm
, branch
, C62X
, TIC6X_FLAG_NO_CROSS
,
404 ENC2(ENC(s
, fu
, 0), ENC(cst
, pcrel
, 0)))
405 INSN(b
, s
, branch
, branch
, C62X
, TIC6X_FLAG_SIDE_B_ONLY
,
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)),
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)),
418 INSN(bdec
, s
, bdec
, branch
, C64X
, TIC6X_FLAG_NO_CROSS
,
421 ENC3(ENC(s
, fu
, 0), ENC(src
, pcrel
, 0), ENC(dst
, reg
, 1)))
423 INSN(bitc4
, m
, unary
, 1616_m
, C64X
, 0,
425 OP2(ORXREG1
, OWREG2
),
426 ENC4(ENC(s
, fu
, 0), ENC(x
, xpath
, 0), ENC(src2
, reg
, 0),
429 INSN(bitr
, m
, unary
, 1616_m
, C64X
, 0,
431 OP2(ORXREG1
, OWREG2
),
432 ENC4(ENC(s
, fu
, 0), ENC(x
, xpath
, 0), ENC(src2
, reg
, 0),
435 INSN(bnop
, s
, branch_nop_cst
, branch
, C64X
,
436 TIC6X_FLAG_NO_CROSS
|TIC6X_FLAG_MCNOP
,
439 ENC3(ENC(s
, fu
, 0), ENC(src2
, pcrel_half
, 0), ENC(src1
, ucst
, 1)))
440 INSN(bnop
, nfu
, s_branch_nop_cst
, branch
, C64XP
,
441 TIC6X_FLAG_NO_CROSS
|TIC6X_FLAG_MACRO
|TIC6X_FLAG_MCNOP
,
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
,
449 ENC3(ENC(x
, xpath
, 0), ENC(src2
, reg
, 0), ENC(src1
, ucst
, 1)))
451 INSN(bpos
, s
, bpos
, branch
, C64X
, TIC6X_FLAG_NO_CROSS
,
454 ENC3(ENC(s
, fu
, 0), ENC(src
, pcrel
, 0), ENC(dst
, reg
, 1)))
456 INSN(call
, s
, ext_branch_cond_imm
, branch
, C62X
,
457 TIC6X_FLAG_NO_CROSS
|TIC6X_FLAG_MACRO
|TIC6X_FLAG_CALL
,
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
,
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)),
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)),
477 INSN(callnop
, s
, branch_nop_cst
, branch
, C64X
,
478 TIC6X_FLAG_NO_CROSS
|TIC6X_FLAG_MACRO
|TIC6X_FLAG_MCNOP
|TIC6X_FLAG_CALL
,
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
,
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
,
491 ENC3(ENC(x
, xpath
, 0), ENC(src2
, reg
, 0), ENC(src1
, ucst
, 1)))
493 INSN(callp
, s
, call_imm_nop
, branch
, C64XP
,
494 TIC6X_FLAG_NO_CROSS
|TIC6X_FLAG_MCNOP
,
496 OP2(OLCST
, OWRETREG1
),
497 ENC2(ENC(s
, fu
, 0), ENC(cst
, pcrel
, 0)))
499 INSN(callret
, s
, ext_branch_cond_imm
, branch
, C62X
,
500 TIC6X_FLAG_NO_CROSS
|TIC6X_FLAG_MACRO
|TIC6X_FLAG_CALL
|TIC6X_FLAG_RETURN
,
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
,
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)),
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)),
520 INSN(clr
, s
, field
, 1cycle
, C62X
, TIC6X_FLAG_NO_CROSS
,
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,
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)))
531 INSNE(cmpeq
, l_si_xsi_ui
, l
, 1_or_2_src
, 1cycle
, C62X
, 0,
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,
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,
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),
552 INSN(cmpeq2
, s
, 1_or_2_src
, 1cycle
, C64X
, 0,
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)))
558 INSN(cmpeq4
, s
, 1_or_2_src
, 1cycle
, C64X
, 0,
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)))
564 INSN(cmpeqdp
, s
, 1_or_2_src
, dpcmp
, C67X
, 0,
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)))
570 INSN(cmpeqsp
, s
, 1_or_2_src
, 1cycle
, C67X
, 0,
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)))
576 INSNE(cmpgt
, l_si_xsi_ui
, l
, 1_or_2_src
, 1cycle
, C62X
, TIC6X_FLAG_PREFER(1),
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,
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,
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),
596 INSNE(cmpgt
, l_xsi_si_ui
, l
, 1_or_2_src
, 1cycle
, C62X
,
597 TIC6X_FLAG_MACRO
|TIC6X_FLAG_PREFER(0),
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
,
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
,
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),
619 INSN(cmpgt2
, s
, 1_or_2_src
, 1cycle
, C64X
, 0,
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)))
625 INSN(cmpgtdp
, s
, 1_or_2_src
, dpcmp
, C67X
, 0,
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)))
631 INSN(cmpgtsp
, s
, 1_or_2_src
, 1cycle
, C67X
, 0,
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)))
637 INSNE(cmpgtu
, l_ui_xui_ui
, l
, 1_or_2_src
, 1cycle
, C62X
, 0,
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,
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),
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),
671 INSN(cmpgtu4
, s
, 1_or_2_src
, 1cycle
, C64X
, 0,
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)))
677 INSNE(cmplt
, l_si_xsi_ui
, l
, 1_or_2_src
, 1cycle
, C62X
, TIC6X_FLAG_PREFER(1),
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,
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,
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),
697 INSNE(cmplt
, l_xsi_si_ui
, l
, 1_or_2_src
, 1cycle
, C62X
,
698 TIC6X_FLAG_MACRO
|TIC6X_FLAG_PREFER(0),
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
,
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
,
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),
720 INSN(cmplt2
, s
, 1_or_2_src
, 1cycle
, C64X
, TIC6X_FLAG_MACRO
,
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)))
726 INSN(cmpltdp
, s
, 1_or_2_src
, dpcmp
, C67X
, 0,
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)))
732 INSN(cmpltsp
, s
, 1_or_2_src
, 1cycle
, C67X
, 0,
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)))
738 INSNE(cmpltu
, l_ui_xui_ui
, l
, 1_or_2_src
, 1cycle
, C62X
, 0,
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,
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),
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),
770 INSN(cmpltu4
, s
, 1_or_2_src
, 1cycle
, C64X
, TIC6X_FLAG_MACRO
,
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)))
776 INSN(cmpy
, m
, 1_or_2_src
, 4cycle
, C64XP
, 0,
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)))
782 INSN(cmpyr
, m
, 1_or_2_src
, 4cycle
, C64XP
, 0,
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)))
788 INSN(cmpyr1
, m
, 1_or_2_src
, 4cycle
, C64XP
, 0,
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)))
794 INSN(cmtl
, d
, 1_or_2_src
, load
, C64XP
,
795 TIC6X_FLAG_LOAD
|TIC6X_FLAG_SIDE_B_ONLY
|TIC6X_FLAG_SIDE_T2_ONLY
|TIC6X_FLAG_NO_CROSS
,
796 FIX3(FIX(s
, 1), FIX(op
, 0xe), FIX(src1
, 0)),
797 OP2(ORMEMDW
, OWDREG5
),
798 ENC2(ENC(src2
, reg
, 0), ENC(dst
, reg
, 1)))
800 INSN(ddotp4
, m
, 1_or_2_src
, 4cycle
, C64XP
, 0,
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)))
806 INSN(ddotph2
, m
, 1_or_2_src
, 4cycle
, C64XP
, 0,
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)))
812 INSN(ddotph2r
, m
, 1_or_2_src
, 4cycle
, C64XP
, 0,
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)))
818 INSN(ddotpl2
, m
, 1_or_2_src
, 4cycle
, C64XP
, 0,
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)))
824 INSN(ddotpl2r
, m
, 1_or_2_src
, 4cycle
, C64XP
, 0,
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)))
830 INSN(deal
, m
, unary
, 1616_m
, C64X
, 0,
832 OP2(ORXREG1
, OWREG2
),
833 ENC4(ENC(s
, fu
, 0), ENC(x
, xpath
, 0), ENC(src2
, reg
, 0),
836 INSN(dint
, nfu
, dint
, 1cycle
, C64XP
, 0,
841 INSN(dmv
, s
, ext_1_or_2_src
, 1cycle
, C64XP
, 0,
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)))
847 INSNE(dotp2
, m_s2_xs2_si
, m
, compound
, 4cycle
, C64X
, 0,
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,
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)))
858 INSN(dotpn2
, m
, compound
, 4cycle
, C64X
, 0,
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)))
864 INSN(dotpnrsu2
, m
, compound
, 4cycle
, C64X
, 0,
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)))
870 INSN(dotpnrus2
, m
, compound
, 4cycle
, C64X
, TIC6X_FLAG_MACRO
,
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)))
876 INSN(dotprsu2
, m
, compound
, 4cycle
, C64X
, 0,
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)))
882 INSN(dotprus2
, m
, compound
, 4cycle
, C64X
, TIC6X_FLAG_MACRO
,
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)))
888 INSN(dotpsu4
, m
, compound
, 4cycle
, C64X
, 0,
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)))
894 INSN(dotpus4
, m
, compound
, 4cycle
, C64X
, TIC6X_FLAG_MACRO
,
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)))
900 INSN(dotpu4
, m
, compound
, 4cycle
, C64X
, 0,
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)))
906 INSN(dpack2
, l
, 1_or_2_src_noncond
, 1cycle
, C64XP
, 0,
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)))
912 INSN(dpackx2
, l
, 1_or_2_src_noncond
, 1cycle
, C64XP
, 0,
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)))
918 INSN(dpint
, l
, 1_or_2_src
, 4cycle
, C67X
, TIC6X_FLAG_NO_CROSS
,
919 FIX2(FIX(op
, 0x8), FIX(x
, 0)),
920 OP2(ORREGD1
, OWREG4
),
921 ENC4(ENC(s
, fu
, 0), ENC(src2
, regpair_msb
, 0), ENC(src1
, regpair_lsb
, 0),
924 INSN(dpsp
, l
, 1_or_2_src
, 4cycle
, C67X
, TIC6X_FLAG_NO_CROSS
,
925 FIX2(FIX(op
, 0x9), FIX(x
, 0)),
926 OP2(ORREGD1
, OWREG4
),
927 ENC4(ENC(s
, fu
, 0), ENC(src2
, regpair_msb
, 0), ENC(src1
, regpair_lsb
, 0),
930 INSN(dptrunc
, l
, 1_or_2_src
, 4cycle
, C67X
, TIC6X_FLAG_NO_CROSS
,
931 FIX2(FIX(op
, 0x1), FIX(x
, 0)),
932 OP2(ORREGD1
, OWREG4
),
933 ENC4(ENC(s
, fu
, 0), ENC(src2
, regpair_msb
, 0), ENC(src1
, regpair_lsb
, 0),
936 INSN(ext
, s
, field
, 1cycle
, C62X
, TIC6X_FLAG_NO_CROSS
,
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,
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)))
947 INSN(extu
, s
, field
, 1cycle
, C62X
, TIC6X_FLAG_NO_CROSS
,
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,
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)))
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),
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,
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)))
972 INSN(idle
, nfu
, nop_idle
, nop
, C62X
, TIC6X_FLAG_MCNOP
,
973 FIX2(FIX(s
, 0), FIX(op
, 0xf)),
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),
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),
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),
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),
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),
1011 OP2(ORMEMLB
, OWDREG5
),
1012 ENC4(ENC(s
, data_fu
, 0), ENC(y
, areg
, 0), ENC(offsetR
, ulcst_dpr_byte
, 0),
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),
1025 OP2(ORMEMLB
, OWDREG5
),
1026 ENC4(ENC(s
, data_fu
, 0), ENC(y
, areg
, 0), ENC(offsetR
, ulcst_dpr_byte
, 0),
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)))
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),
1047 OP2(ORMEMLH
, OWDREG5
),
1048 ENC4(ENC(s
, data_fu
, 0), ENC(y
, areg
, 0), ENC(offsetR
, ulcst_dpr_half
, 0),
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),
1061 OP2(ORMEMLH
, OWDREG5
),
1062 ENC4(ENC(s
, data_fu
, 0), ENC(y
, areg
, 0), ENC(offsetR
, ulcst_dpr_half
, 0),
1065 INSN(ldndw
, d
, load_nonaligned
, load
, C64X
,
1066 TIC6X_FLAG_LOAD
|TIC6X_FLAG_NO_CROSS
|TIC6X_FLAG_UNALIGNED
,
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)))
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)))
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),
1091 OP2(ORMEMLW
, OWDREG5
),
1092 ENC4(ENC(s
, data_fu
, 0), ENC(y
, areg
, 0), ENC(offsetR
, ulcst_dpr_word
, 0),
1095 INSN(ll
, d
, 1_or_2_src
, load
, C64XP
,
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)))
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)))
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,
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)))
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)))
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,
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)))
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)))
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)))
1157 INSN(mpydp
, m
, mpy
, mpydp
, C67X
, TIC6X_FLAG_NO_CROSS
,
1158 FIX2(FIX(op
, 0x0e), FIX(x
, 0)),
1159 OP3(ORREGD1234
, ORREGD1324
, OWREGD910
),
1160 ENC4(ENC(s
, fu
, 0), ENC(src1
, reg
, 0), ENC(src2
, reg
, 1),
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
1311 /* Contrary to SPRU733A, MPYSPDP and MPYSP2DP are on both C67X and
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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)))
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),
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),
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),
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),
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),
1455 INSN(mvk
, s
, mvk
, 1cycle
, C62X
, TIC6X_FLAG_NO_CROSS
,
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)),
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)),
1466 ENC3(ENC(s
, fu
, 0), ENC(src1
, scst
, 0), ENC(dst
, reg
, 1)))
1468 INSN(mvkh
, s
, mvk
, 1cycle
, C62X
, TIC6X_FLAG_NO_CROSS
,
1471 ENC3(ENC(s
, fu
, 0), ENC(cst
, lcst_high16
, 0), ENC(dst
, reg
, 1)))
1473 INSN(mvklh
, s
, mvk
, 1cycle
, C62X
, TIC6X_FLAG_NO_CROSS
|TIC6X_FLAG_MACRO
,
1476 ENC3(ENC(s
, fu
, 0), ENC(cst
, lcst_low16
, 0), ENC(dst
, reg
, 1)))
1478 INSN(mvkl
, s
, mvk
, 1cycle
, C62X
, TIC6X_FLAG_NO_CROSS
|TIC6X_FLAG_MACRO
,
1481 ENC3(ENC(s
, fu
, 0), ENC(cst
, lcst_low16
, 0), ENC(dst
, reg
, 1)))
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),
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),
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),
1500 INSN(nop
, nfu
, nop_idle
, nop
, C62X
, 0,
1501 FIX2(FIX(s
, 0), RAN(op
, 0, 8)),
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)),
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),
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)))
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),
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),
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),
1535 INSNE(or, d_ui_xui_ui
, d
, ext_1_or_2_src
, 1cycle
, C64X
, 0,
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,
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)))
1566 INSN(pack2
, l
, 1_or_2_src
, 1cycle
, C64X
, 0,
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,
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)))
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,
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)))
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)))
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,
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)))
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)))
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)))
1622 INSN(rcpdp
, s
, 1_or_2_src
, 2cycle_dp
, C67X
, TIC6X_FLAG_NO_CROSS
,
1623 FIX2(FIX(op
, 0x2d), FIX(x
, 0)),
1624 OP2(ORREGD1
, OWREGD12
),
1625 ENC4(ENC(s
, fu
, 0), ENC(src2
, regpair_msb
, 0), ENC(src1
, regpair_lsb
, 0),
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),
1634 INSN(ret
, s
, ext_branch_cond_imm
, branch
, C62X
,
1635 TIC6X_FLAG_NO_CROSS
|TIC6X_FLAG_MACRO
|TIC6X_FLAG_RETURN
,
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
,
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)),
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)),
1655 INSN(retp
, s
, call_imm_nop
, branch
, C64XP
,
1656 TIC6X_FLAG_NO_CROSS
|TIC6X_FLAG_MCNOP
|TIC6X_FLAG_MACRO
|TIC6X_FLAG_RETURN
,
1658 OP2(OLCST
, OWRETREG1
),
1659 ENC2(ENC(s
, fu
, 0), ENC(cst
, pcrel
, 0)))
1661 INSN(rint
, nfu
, rint
, 1cycle
, C64XP
, 0,
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)))
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)))
1683 INSN(rsqrdp
, s
, 1_or_2_src
, 2cycle_dp
, C67X
, TIC6X_FLAG_NO_CROSS
,
1684 FIX2(FIX(op
, 0x2e), FIX(x
, 0)),
1685 OP2(ORREGD1
, OWREGD12
),
1686 ENC4(ENC(s
, fu
, 0), ENC(src2
, regpair_msb
, 0), ENC(src1
, regpair_lsb
, 0),
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),
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)))
1721 INSN(sadd2
, s
, ext_1_or_2_src
, 1cycle
, C64X
, 0,
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)))
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)))
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)))
1739 INSN(saddsu2
, s
, ext_1_or_2_src
, 1cycle
, C64X
, TIC6X_FLAG_MACRO
,
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)))
1745 INSN(saddus2
, s
, ext_1_or_2_src
, 1cycle
, C64X
, 0,
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)))
1751 INSN(saddu4
, s
, ext_1_or_2_src
, 1cycle
, C64X
, 0,
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)))
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)))
1762 INSN(set
, s
, field
, 1cycle
, C62X
, TIC6X_FLAG_NO_CROSS
,
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)))
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),
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)))
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),
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),
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)))
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,
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)))
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),
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),
1848 INSNE(shr2
, s_xs2_ui_s2
, s
, ext_1_or_2_src
, 1cycle
, C64X
, 0,
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)))
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,
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)))
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),
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),
1891 INSNE(shru2
, s_xu2_ui_u2
, s
, ext_1_or_2_src
, 1cycle
, C64X
, 0,
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)))
1902 INSN(sl
, d
, 1_or_2_src
, store
, C64XP
,
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)))
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)))
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)))
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)))
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)))
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)))
1938 /* Contrary to SPRUFE8, this is the correct operand order for this
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)))
1946 INSN(spack2
, s
, ext_1_or_2_src
, 1cycle
, C64X
, 0,
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)))
1952 INSN(spacku4
, s
, ext_1_or_2_src
, 1cycle
, C64X
, 0,
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)))
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),
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),
1970 INSNE(spkernel
, nfu_2
, nfu
, spkernel
, 1cycle
, C64XP
,
1971 TIC6X_FLAG_FIRST
|TIC6X_FLAG_NO_MCNOP
|TIC6X_FLAG_SPKERNEL
,
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)),
1981 INSN(spkernelr
, nfu
, spkernelr
, 1cycle
, C64XP
,
1982 TIC6X_FLAG_FIRST
|TIC6X_FLAG_NO_MCNOP
|TIC6X_FLAG_SPKERNEL
,
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)),
1991 ENC1(ENC(cstb
, ucst_minus_one
, 0)))
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)),
1997 ENC1(ENC(cstb
, ucst_minus_one
, 0)))
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)),
2003 ENC1(ENC(cstb
, ucst_minus_one
, 0)))
2005 /* Contrary to SPRUFE8, this is the correct encoding for this
2007 INSN(spmask
, nfu
, spmask
, 1cycle
, C64XP
, TIC6X_FLAG_FIRST
|TIC6X_FLAG_SPMASK
,
2008 FIX2(FIX(s
, 0), FIX(op
, 0x8)),
2010 ENC1(ENC(mask
, spmask
, 0)))
2012 INSN(spmaskr
, nfu
, spmask
, 1cycle
, C64XP
, TIC6X_FLAG_FIRST
|TIC6X_FLAG_SPMASK
,
2013 FIX2(FIX(s
, 0), FIX(op
, 0x9)),
2015 ENC1(ENC(mask
, spmask
, 0)))
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),
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)))
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)))
2040 /* Contrary to SPRUFE8, this is the correct encoding for this
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)))
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)))
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)))
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),
2085 OP2(ORDREG1
, OWMEMLB
),
2086 ENC4(ENC(s
, data_fu
, 0), ENC(y
, areg
, 1), ENC(offsetR
, ulcst_dpr_byte
, 1),
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)))
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),
2106 OP2(ORDREG1
, OWMEMLH
),
2107 ENC4(ENC(s
, data_fu
, 0), ENC(y
, areg
, 1), ENC(offsetR
, ulcst_dpr_half
, 1),
2110 INSN(stndw
, d
, store_nonaligned
, store
, C64X
,
2111 TIC6X_FLAG_STORE
|TIC6X_FLAG_NO_CROSS
|TIC6X_FLAG_UNALIGNED
,
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)))
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)))
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),
2136 OP2(ORDREG1
, OWMEMLW
),
2137 ENC4(ENC(s
, data_fu
, 0), ENC(y
, areg
, 1), ENC(offsetR
, ulcst_dpr_word
, 1),
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
,
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),
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),
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
,
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),
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),
2214 INSNE(sub
, d_si_xsi_si
, d
, ext_1_or_2_src
, 1cycle
, C64X
, TIC6X_FLAG_PREFER(0),
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)))
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),
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),
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)))
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),
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),
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),
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),
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)))
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)))
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)))
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)))
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,
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)))
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)))
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)))
2355 /* Contrary to SPRUFE8, this is the correct encoding for this
2357 INSN(swap4
, l
, unary
, 1cycle
, C64X
, 0,
2359 OP2(ORXREG1
, OWREG1
),
2360 ENC4(ENC(s
, fu
, 0), ENC(x
, xpath
, 0), ENC(src2
, reg
, 0),
2363 INSN(swe
, nfu
, swe
, 1cycle
, C64XP
, 0,
2368 INSN(swenr
, nfu
, swenr
, 1cycle
, C64XP
, 0,
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),
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),
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),
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),
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,
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,
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)))
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)))
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),
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),
2444 INSN(zero
, s
, mvk
, 1cycle
, C62X
, TIC6X_FLAG_NO_CROSS
|TIC6X_FLAG_MACRO
,
2445 FIX2(FIX(h
, 0), FIX(cst
, 0)),
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)),
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)),
2457 ENC4(ENC(s
, fu
, 0), ENC(src1
, reg_unused
, 0), ENC(src2
, reg_unused
, 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)),
2463 ENC4(ENC(s
, fu
, 0), ENC(src1
, reg_unused
, 0), ENC(src2
, reg_unused
, 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)),
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)),
2474 ENC4(ENC(s
, fu
, 0), ENC(src2
, reg_unused
, 0), ENC(src1
, reg_unused
, 0),
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
This page took 0.14821 seconds and 5 git commands to generate.