OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gdb-7.2/] [gdb-7.2-or32-1.0rc1/] [include/] [opcode/] [tic6x-opcode-table.h] - Blame information for rev 330

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.