1*d2201f2fSdrahn /* Xtensa configuration-specific ISA information.
2*d2201f2fSdrahn    Copyright 2003 Free Software Foundation, Inc.
3*d2201f2fSdrahn 
4*d2201f2fSdrahn    This file is part of BFD, the Binary File Descriptor library.
5*d2201f2fSdrahn 
6*d2201f2fSdrahn    This program is free software; you can redistribute it and/or modify
7*d2201f2fSdrahn    it under the terms of the GNU General Public License as published by
8*d2201f2fSdrahn    the Free Software Foundation; either version 2 of the License, or
9*d2201f2fSdrahn    (at your option) any later version.
10*d2201f2fSdrahn 
11*d2201f2fSdrahn    This program is distributed in the hope that it will be useful,
12*d2201f2fSdrahn    but WITHOUT ANY WARRANTY; without even the implied warranty of
13*d2201f2fSdrahn    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14*d2201f2fSdrahn    GNU General Public License for more details.
15*d2201f2fSdrahn 
16*d2201f2fSdrahn    You should have received a copy of the GNU General Public License
17*d2201f2fSdrahn    along with this program; if not, write to the Free Software
18*d2201f2fSdrahn    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
19*d2201f2fSdrahn 
20*d2201f2fSdrahn #include <xtensa-isa.h>
21*d2201f2fSdrahn #include "xtensa-isa-internal.h"
22*d2201f2fSdrahn #include "ansidecl.h"
23*d2201f2fSdrahn 
24*d2201f2fSdrahn #define BPW 32
25*d2201f2fSdrahn #define WINDEX(_n) ((_n) / BPW)
26*d2201f2fSdrahn #define BINDEX(_n) ((_n) %% BPW)
27*d2201f2fSdrahn 
28*d2201f2fSdrahn static uint32 tie_do_reloc_l (uint32, uint32) ATTRIBUTE_UNUSED;
29*d2201f2fSdrahn static uint32 tie_undo_reloc_l (uint32, uint32) ATTRIBUTE_UNUSED;
30*d2201f2fSdrahn 
31*d2201f2fSdrahn static uint32
tie_do_reloc_l(uint32 addr,uint32 pc)32*d2201f2fSdrahn tie_do_reloc_l (uint32 addr, uint32 pc)
33*d2201f2fSdrahn {
34*d2201f2fSdrahn   return (addr - pc);
35*d2201f2fSdrahn }
36*d2201f2fSdrahn 
37*d2201f2fSdrahn static uint32
tie_undo_reloc_l(uint32 offset,uint32 pc)38*d2201f2fSdrahn tie_undo_reloc_l (uint32 offset, uint32 pc)
39*d2201f2fSdrahn {
40*d2201f2fSdrahn   return (pc + offset);
41*d2201f2fSdrahn }
42*d2201f2fSdrahn 
43*d2201f2fSdrahn xtensa_opcode_internal** get_opcodes (void);
44*d2201f2fSdrahn int get_num_opcodes (void);
45*d2201f2fSdrahn int decode_insn (const xtensa_insnbuf);
46*d2201f2fSdrahn int interface_version (void);
47*d2201f2fSdrahn 
48*d2201f2fSdrahn uint32 get_bbi_field (const xtensa_insnbuf);
49*d2201f2fSdrahn void set_bbi_field (xtensa_insnbuf, uint32);
50*d2201f2fSdrahn uint32 get_bbi4_field (const xtensa_insnbuf);
51*d2201f2fSdrahn void set_bbi4_field (xtensa_insnbuf, uint32);
52*d2201f2fSdrahn uint32 get_i_field (const xtensa_insnbuf);
53*d2201f2fSdrahn void set_i_field (xtensa_insnbuf, uint32);
54*d2201f2fSdrahn uint32 get_imm12_field (const xtensa_insnbuf);
55*d2201f2fSdrahn void set_imm12_field (xtensa_insnbuf, uint32);
56*d2201f2fSdrahn uint32 get_imm12b_field (const xtensa_insnbuf);
57*d2201f2fSdrahn void set_imm12b_field (xtensa_insnbuf, uint32);
58*d2201f2fSdrahn uint32 get_imm16_field (const xtensa_insnbuf);
59*d2201f2fSdrahn void set_imm16_field (xtensa_insnbuf, uint32);
60*d2201f2fSdrahn uint32 get_imm4_field (const xtensa_insnbuf);
61*d2201f2fSdrahn void set_imm4_field (xtensa_insnbuf, uint32);
62*d2201f2fSdrahn uint32 get_imm6_field (const xtensa_insnbuf);
63*d2201f2fSdrahn void set_imm6_field (xtensa_insnbuf, uint32);
64*d2201f2fSdrahn uint32 get_imm6hi_field (const xtensa_insnbuf);
65*d2201f2fSdrahn void set_imm6hi_field (xtensa_insnbuf, uint32);
66*d2201f2fSdrahn uint32 get_imm6lo_field (const xtensa_insnbuf);
67*d2201f2fSdrahn void set_imm6lo_field (xtensa_insnbuf, uint32);
68*d2201f2fSdrahn uint32 get_imm7_field (const xtensa_insnbuf);
69*d2201f2fSdrahn void set_imm7_field (xtensa_insnbuf, uint32);
70*d2201f2fSdrahn uint32 get_imm7hi_field (const xtensa_insnbuf);
71*d2201f2fSdrahn void set_imm7hi_field (xtensa_insnbuf, uint32);
72*d2201f2fSdrahn uint32 get_imm7lo_field (const xtensa_insnbuf);
73*d2201f2fSdrahn void set_imm7lo_field (xtensa_insnbuf, uint32);
74*d2201f2fSdrahn uint32 get_imm8_field (const xtensa_insnbuf);
75*d2201f2fSdrahn void set_imm8_field (xtensa_insnbuf, uint32);
76*d2201f2fSdrahn uint32 get_m_field (const xtensa_insnbuf);
77*d2201f2fSdrahn void set_m_field (xtensa_insnbuf, uint32);
78*d2201f2fSdrahn uint32 get_mn_field (const xtensa_insnbuf);
79*d2201f2fSdrahn void set_mn_field (xtensa_insnbuf, uint32);
80*d2201f2fSdrahn uint32 get_n_field (const xtensa_insnbuf);
81*d2201f2fSdrahn void set_n_field (xtensa_insnbuf, uint32);
82*d2201f2fSdrahn uint32 get_none_field (const xtensa_insnbuf);
83*d2201f2fSdrahn void set_none_field (xtensa_insnbuf, uint32);
84*d2201f2fSdrahn uint32 get_offset_field (const xtensa_insnbuf);
85*d2201f2fSdrahn void set_offset_field (xtensa_insnbuf, uint32);
86*d2201f2fSdrahn uint32 get_op0_field (const xtensa_insnbuf);
87*d2201f2fSdrahn void set_op0_field (xtensa_insnbuf, uint32);
88*d2201f2fSdrahn uint32 get_op1_field (const xtensa_insnbuf);
89*d2201f2fSdrahn void set_op1_field (xtensa_insnbuf, uint32);
90*d2201f2fSdrahn uint32 get_op2_field (const xtensa_insnbuf);
91*d2201f2fSdrahn void set_op2_field (xtensa_insnbuf, uint32);
92*d2201f2fSdrahn uint32 get_r_field (const xtensa_insnbuf);
93*d2201f2fSdrahn void set_r_field (xtensa_insnbuf, uint32);
94*d2201f2fSdrahn uint32 get_s_field (const xtensa_insnbuf);
95*d2201f2fSdrahn void set_s_field (xtensa_insnbuf, uint32);
96*d2201f2fSdrahn uint32 get_sa4_field (const xtensa_insnbuf);
97*d2201f2fSdrahn void set_sa4_field (xtensa_insnbuf, uint32);
98*d2201f2fSdrahn uint32 get_sae_field (const xtensa_insnbuf);
99*d2201f2fSdrahn void set_sae_field (xtensa_insnbuf, uint32);
100*d2201f2fSdrahn uint32 get_sae4_field (const xtensa_insnbuf);
101*d2201f2fSdrahn void set_sae4_field (xtensa_insnbuf, uint32);
102*d2201f2fSdrahn uint32 get_sal_field (const xtensa_insnbuf);
103*d2201f2fSdrahn void set_sal_field (xtensa_insnbuf, uint32);
104*d2201f2fSdrahn uint32 get_sar_field (const xtensa_insnbuf);
105*d2201f2fSdrahn void set_sar_field (xtensa_insnbuf, uint32);
106*d2201f2fSdrahn uint32 get_sas_field (const xtensa_insnbuf);
107*d2201f2fSdrahn void set_sas_field (xtensa_insnbuf, uint32);
108*d2201f2fSdrahn uint32 get_sas4_field (const xtensa_insnbuf);
109*d2201f2fSdrahn void set_sas4_field (xtensa_insnbuf, uint32);
110*d2201f2fSdrahn uint32 get_sr_field (const xtensa_insnbuf);
111*d2201f2fSdrahn void set_sr_field (xtensa_insnbuf, uint32);
112*d2201f2fSdrahn uint32 get_t_field (const xtensa_insnbuf);
113*d2201f2fSdrahn void set_t_field (xtensa_insnbuf, uint32);
114*d2201f2fSdrahn uint32 get_thi3_field (const xtensa_insnbuf);
115*d2201f2fSdrahn void set_thi3_field (xtensa_insnbuf, uint32);
116*d2201f2fSdrahn uint32 get_z_field (const xtensa_insnbuf);
117*d2201f2fSdrahn void set_z_field (xtensa_insnbuf, uint32);
118*d2201f2fSdrahn 
119*d2201f2fSdrahn 
120*d2201f2fSdrahn uint32
get_bbi_field(const xtensa_insnbuf insn)121*d2201f2fSdrahn get_bbi_field (const xtensa_insnbuf insn)
122*d2201f2fSdrahn {
123*d2201f2fSdrahn   return ((insn[0] & 0xf0000) >> 16) |
124*d2201f2fSdrahn          ((insn[0] & 0x100) >> 4);
125*d2201f2fSdrahn }
126*d2201f2fSdrahn 
127*d2201f2fSdrahn void
set_bbi_field(xtensa_insnbuf insn,uint32 val)128*d2201f2fSdrahn set_bbi_field (xtensa_insnbuf insn, uint32 val)
129*d2201f2fSdrahn {
130*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfff0ffff) | ((val << 16) & 0xf0000);
131*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffffeff) | ((val << 4) & 0x100);
132*d2201f2fSdrahn }
133*d2201f2fSdrahn 
134*d2201f2fSdrahn uint32
get_bbi4_field(const xtensa_insnbuf insn)135*d2201f2fSdrahn get_bbi4_field (const xtensa_insnbuf insn)
136*d2201f2fSdrahn {
137*d2201f2fSdrahn   return ((insn[0] & 0x100) >> 8);
138*d2201f2fSdrahn }
139*d2201f2fSdrahn 
140*d2201f2fSdrahn void
set_bbi4_field(xtensa_insnbuf insn,uint32 val)141*d2201f2fSdrahn set_bbi4_field (xtensa_insnbuf insn, uint32 val)
142*d2201f2fSdrahn {
143*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffffeff) | ((val << 8) & 0x100);
144*d2201f2fSdrahn }
145*d2201f2fSdrahn 
146*d2201f2fSdrahn uint32
get_i_field(const xtensa_insnbuf insn)147*d2201f2fSdrahn get_i_field (const xtensa_insnbuf insn)
148*d2201f2fSdrahn {
149*d2201f2fSdrahn   return ((insn[0] & 0x80000) >> 19);
150*d2201f2fSdrahn }
151*d2201f2fSdrahn 
152*d2201f2fSdrahn void
set_i_field(xtensa_insnbuf insn,uint32 val)153*d2201f2fSdrahn set_i_field (xtensa_insnbuf insn, uint32 val)
154*d2201f2fSdrahn {
155*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfff7ffff) | ((val << 19) & 0x80000);
156*d2201f2fSdrahn }
157*d2201f2fSdrahn 
158*d2201f2fSdrahn uint32
get_imm12_field(const xtensa_insnbuf insn)159*d2201f2fSdrahn get_imm12_field (const xtensa_insnbuf insn)
160*d2201f2fSdrahn {
161*d2201f2fSdrahn   return ((insn[0] & 0xfff));
162*d2201f2fSdrahn }
163*d2201f2fSdrahn 
164*d2201f2fSdrahn void
set_imm12_field(xtensa_insnbuf insn,uint32 val)165*d2201f2fSdrahn set_imm12_field (xtensa_insnbuf insn, uint32 val)
166*d2201f2fSdrahn {
167*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffff000) | (val & 0xfff);
168*d2201f2fSdrahn }
169*d2201f2fSdrahn 
170*d2201f2fSdrahn uint32
get_imm12b_field(const xtensa_insnbuf insn)171*d2201f2fSdrahn get_imm12b_field (const xtensa_insnbuf insn)
172*d2201f2fSdrahn {
173*d2201f2fSdrahn   return ((insn[0] & 0xff)) |
174*d2201f2fSdrahn          ((insn[0] & 0xf000) >> 4);
175*d2201f2fSdrahn }
176*d2201f2fSdrahn 
177*d2201f2fSdrahn void
set_imm12b_field(xtensa_insnbuf insn,uint32 val)178*d2201f2fSdrahn set_imm12b_field (xtensa_insnbuf insn, uint32 val)
179*d2201f2fSdrahn {
180*d2201f2fSdrahn   insn[0] = (insn[0] & 0xffffff00) | (val & 0xff);
181*d2201f2fSdrahn   insn[0] = (insn[0] & 0xffff0fff) | ((val << 4) & 0xf000);
182*d2201f2fSdrahn }
183*d2201f2fSdrahn 
184*d2201f2fSdrahn uint32
get_imm16_field(const xtensa_insnbuf insn)185*d2201f2fSdrahn get_imm16_field (const xtensa_insnbuf insn)
186*d2201f2fSdrahn {
187*d2201f2fSdrahn   return ((insn[0] & 0xffff));
188*d2201f2fSdrahn }
189*d2201f2fSdrahn 
190*d2201f2fSdrahn void
set_imm16_field(xtensa_insnbuf insn,uint32 val)191*d2201f2fSdrahn set_imm16_field (xtensa_insnbuf insn, uint32 val)
192*d2201f2fSdrahn {
193*d2201f2fSdrahn   insn[0] = (insn[0] & 0xffff0000) | (val & 0xffff);
194*d2201f2fSdrahn }
195*d2201f2fSdrahn 
196*d2201f2fSdrahn uint32
get_imm4_field(const xtensa_insnbuf insn)197*d2201f2fSdrahn get_imm4_field (const xtensa_insnbuf insn)
198*d2201f2fSdrahn {
199*d2201f2fSdrahn   return ((insn[0] & 0xf00) >> 8);
200*d2201f2fSdrahn }
201*d2201f2fSdrahn 
202*d2201f2fSdrahn void
set_imm4_field(xtensa_insnbuf insn,uint32 val)203*d2201f2fSdrahn set_imm4_field (xtensa_insnbuf insn, uint32 val)
204*d2201f2fSdrahn {
205*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffff0ff) | ((val << 8) & 0xf00);
206*d2201f2fSdrahn }
207*d2201f2fSdrahn 
208*d2201f2fSdrahn uint32
get_imm6_field(const xtensa_insnbuf insn)209*d2201f2fSdrahn get_imm6_field (const xtensa_insnbuf insn)
210*d2201f2fSdrahn {
211*d2201f2fSdrahn   return ((insn[0] & 0xf00) >> 8) |
212*d2201f2fSdrahn          ((insn[0] & 0x30000) >> 12);
213*d2201f2fSdrahn }
214*d2201f2fSdrahn 
215*d2201f2fSdrahn void
set_imm6_field(xtensa_insnbuf insn,uint32 val)216*d2201f2fSdrahn set_imm6_field (xtensa_insnbuf insn, uint32 val)
217*d2201f2fSdrahn {
218*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffff0ff) | ((val << 8) & 0xf00);
219*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffcffff) | ((val << 12) & 0x30000);
220*d2201f2fSdrahn }
221*d2201f2fSdrahn 
222*d2201f2fSdrahn uint32
get_imm6hi_field(const xtensa_insnbuf insn)223*d2201f2fSdrahn get_imm6hi_field (const xtensa_insnbuf insn)
224*d2201f2fSdrahn {
225*d2201f2fSdrahn   return ((insn[0] & 0x30000) >> 16);
226*d2201f2fSdrahn }
227*d2201f2fSdrahn 
228*d2201f2fSdrahn void
set_imm6hi_field(xtensa_insnbuf insn,uint32 val)229*d2201f2fSdrahn set_imm6hi_field (xtensa_insnbuf insn, uint32 val)
230*d2201f2fSdrahn {
231*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffcffff) | ((val << 16) & 0x30000);
232*d2201f2fSdrahn }
233*d2201f2fSdrahn 
234*d2201f2fSdrahn uint32
get_imm6lo_field(const xtensa_insnbuf insn)235*d2201f2fSdrahn get_imm6lo_field (const xtensa_insnbuf insn)
236*d2201f2fSdrahn {
237*d2201f2fSdrahn   return ((insn[0] & 0xf00) >> 8);
238*d2201f2fSdrahn }
239*d2201f2fSdrahn 
240*d2201f2fSdrahn void
set_imm6lo_field(xtensa_insnbuf insn,uint32 val)241*d2201f2fSdrahn set_imm6lo_field (xtensa_insnbuf insn, uint32 val)
242*d2201f2fSdrahn {
243*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffff0ff) | ((val << 8) & 0xf00);
244*d2201f2fSdrahn }
245*d2201f2fSdrahn 
246*d2201f2fSdrahn uint32
get_imm7_field(const xtensa_insnbuf insn)247*d2201f2fSdrahn get_imm7_field (const xtensa_insnbuf insn)
248*d2201f2fSdrahn {
249*d2201f2fSdrahn   return ((insn[0] & 0xf00) >> 8) |
250*d2201f2fSdrahn          ((insn[0] & 0x70000) >> 12);
251*d2201f2fSdrahn }
252*d2201f2fSdrahn 
253*d2201f2fSdrahn void
set_imm7_field(xtensa_insnbuf insn,uint32 val)254*d2201f2fSdrahn set_imm7_field (xtensa_insnbuf insn, uint32 val)
255*d2201f2fSdrahn {
256*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffff0ff) | ((val << 8) & 0xf00);
257*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfff8ffff) | ((val << 12) & 0x70000);
258*d2201f2fSdrahn }
259*d2201f2fSdrahn 
260*d2201f2fSdrahn uint32
get_imm7hi_field(const xtensa_insnbuf insn)261*d2201f2fSdrahn get_imm7hi_field (const xtensa_insnbuf insn)
262*d2201f2fSdrahn {
263*d2201f2fSdrahn   return ((insn[0] & 0x70000) >> 16);
264*d2201f2fSdrahn }
265*d2201f2fSdrahn 
266*d2201f2fSdrahn void
set_imm7hi_field(xtensa_insnbuf insn,uint32 val)267*d2201f2fSdrahn set_imm7hi_field (xtensa_insnbuf insn, uint32 val)
268*d2201f2fSdrahn {
269*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfff8ffff) | ((val << 16) & 0x70000);
270*d2201f2fSdrahn }
271*d2201f2fSdrahn 
272*d2201f2fSdrahn uint32
get_imm7lo_field(const xtensa_insnbuf insn)273*d2201f2fSdrahn get_imm7lo_field (const xtensa_insnbuf insn)
274*d2201f2fSdrahn {
275*d2201f2fSdrahn   return ((insn[0] & 0xf00) >> 8);
276*d2201f2fSdrahn }
277*d2201f2fSdrahn 
278*d2201f2fSdrahn void
set_imm7lo_field(xtensa_insnbuf insn,uint32 val)279*d2201f2fSdrahn set_imm7lo_field (xtensa_insnbuf insn, uint32 val)
280*d2201f2fSdrahn {
281*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffff0ff) | ((val << 8) & 0xf00);
282*d2201f2fSdrahn }
283*d2201f2fSdrahn 
284*d2201f2fSdrahn uint32
get_imm8_field(const xtensa_insnbuf insn)285*d2201f2fSdrahn get_imm8_field (const xtensa_insnbuf insn)
286*d2201f2fSdrahn {
287*d2201f2fSdrahn   return ((insn[0] & 0xff));
288*d2201f2fSdrahn }
289*d2201f2fSdrahn 
290*d2201f2fSdrahn void
set_imm8_field(xtensa_insnbuf insn,uint32 val)291*d2201f2fSdrahn set_imm8_field (xtensa_insnbuf insn, uint32 val)
292*d2201f2fSdrahn {
293*d2201f2fSdrahn   insn[0] = (insn[0] & 0xffffff00) | (val & 0xff);
294*d2201f2fSdrahn }
295*d2201f2fSdrahn 
296*d2201f2fSdrahn uint32
get_m_field(const xtensa_insnbuf insn)297*d2201f2fSdrahn get_m_field (const xtensa_insnbuf insn)
298*d2201f2fSdrahn {
299*d2201f2fSdrahn   return ((insn[0] & 0x30000) >> 16);
300*d2201f2fSdrahn }
301*d2201f2fSdrahn 
302*d2201f2fSdrahn void
set_m_field(xtensa_insnbuf insn,uint32 val)303*d2201f2fSdrahn set_m_field (xtensa_insnbuf insn, uint32 val)
304*d2201f2fSdrahn {
305*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffcffff) | ((val << 16) & 0x30000);
306*d2201f2fSdrahn }
307*d2201f2fSdrahn 
308*d2201f2fSdrahn uint32
get_mn_field(const xtensa_insnbuf insn)309*d2201f2fSdrahn get_mn_field (const xtensa_insnbuf insn)
310*d2201f2fSdrahn {
311*d2201f2fSdrahn   return ((insn[0] & 0x30000) >> 16) |
312*d2201f2fSdrahn          ((insn[0] & 0xc0000) >> 16);
313*d2201f2fSdrahn }
314*d2201f2fSdrahn 
315*d2201f2fSdrahn void
set_mn_field(xtensa_insnbuf insn,uint32 val)316*d2201f2fSdrahn set_mn_field (xtensa_insnbuf insn, uint32 val)
317*d2201f2fSdrahn {
318*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffcffff) | ((val << 16) & 0x30000);
319*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfff3ffff) | ((val << 16) & 0xc0000);
320*d2201f2fSdrahn }
321*d2201f2fSdrahn 
322*d2201f2fSdrahn uint32
get_n_field(const xtensa_insnbuf insn)323*d2201f2fSdrahn get_n_field (const xtensa_insnbuf insn)
324*d2201f2fSdrahn {
325*d2201f2fSdrahn   return ((insn[0] & 0xc0000) >> 18);
326*d2201f2fSdrahn }
327*d2201f2fSdrahn 
328*d2201f2fSdrahn void
set_n_field(xtensa_insnbuf insn,uint32 val)329*d2201f2fSdrahn set_n_field (xtensa_insnbuf insn, uint32 val)
330*d2201f2fSdrahn {
331*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfff3ffff) | ((val << 18) & 0xc0000);
332*d2201f2fSdrahn }
333*d2201f2fSdrahn 
334*d2201f2fSdrahn uint32
get_none_field(const xtensa_insnbuf insn)335*d2201f2fSdrahn get_none_field (const xtensa_insnbuf insn)
336*d2201f2fSdrahn {
337*d2201f2fSdrahn   return ((insn[0] & 0x0));
338*d2201f2fSdrahn }
339*d2201f2fSdrahn 
340*d2201f2fSdrahn void
set_none_field(xtensa_insnbuf insn,uint32 val)341*d2201f2fSdrahn set_none_field (xtensa_insnbuf insn, uint32 val)
342*d2201f2fSdrahn {
343*d2201f2fSdrahn   insn[0] = (insn[0] & 0xffffffff) | (val & 0x0);
344*d2201f2fSdrahn }
345*d2201f2fSdrahn 
346*d2201f2fSdrahn uint32
get_offset_field(const xtensa_insnbuf insn)347*d2201f2fSdrahn get_offset_field (const xtensa_insnbuf insn)
348*d2201f2fSdrahn {
349*d2201f2fSdrahn   return ((insn[0] & 0x3ffff));
350*d2201f2fSdrahn }
351*d2201f2fSdrahn 
352*d2201f2fSdrahn void
set_offset_field(xtensa_insnbuf insn,uint32 val)353*d2201f2fSdrahn set_offset_field (xtensa_insnbuf insn, uint32 val)
354*d2201f2fSdrahn {
355*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffc0000) | (val & 0x3ffff);
356*d2201f2fSdrahn }
357*d2201f2fSdrahn 
358*d2201f2fSdrahn uint32
get_op0_field(const xtensa_insnbuf insn)359*d2201f2fSdrahn get_op0_field (const xtensa_insnbuf insn)
360*d2201f2fSdrahn {
361*d2201f2fSdrahn   return ((insn[0] & 0xf00000) >> 20);
362*d2201f2fSdrahn }
363*d2201f2fSdrahn 
364*d2201f2fSdrahn void
set_op0_field(xtensa_insnbuf insn,uint32 val)365*d2201f2fSdrahn set_op0_field (xtensa_insnbuf insn, uint32 val)
366*d2201f2fSdrahn {
367*d2201f2fSdrahn   insn[0] = (insn[0] & 0xff0fffff) | ((val << 20) & 0xf00000);
368*d2201f2fSdrahn }
369*d2201f2fSdrahn 
370*d2201f2fSdrahn uint32
get_op1_field(const xtensa_insnbuf insn)371*d2201f2fSdrahn get_op1_field (const xtensa_insnbuf insn)
372*d2201f2fSdrahn {
373*d2201f2fSdrahn   return ((insn[0] & 0xf0) >> 4);
374*d2201f2fSdrahn }
375*d2201f2fSdrahn 
376*d2201f2fSdrahn void
set_op1_field(xtensa_insnbuf insn,uint32 val)377*d2201f2fSdrahn set_op1_field (xtensa_insnbuf insn, uint32 val)
378*d2201f2fSdrahn {
379*d2201f2fSdrahn   insn[0] = (insn[0] & 0xffffff0f) | ((val << 4) & 0xf0);
380*d2201f2fSdrahn }
381*d2201f2fSdrahn 
382*d2201f2fSdrahn uint32
get_op2_field(const xtensa_insnbuf insn)383*d2201f2fSdrahn get_op2_field (const xtensa_insnbuf insn)
384*d2201f2fSdrahn {
385*d2201f2fSdrahn   return ((insn[0] & 0xf));
386*d2201f2fSdrahn }
387*d2201f2fSdrahn 
388*d2201f2fSdrahn void
set_op2_field(xtensa_insnbuf insn,uint32 val)389*d2201f2fSdrahn set_op2_field (xtensa_insnbuf insn, uint32 val)
390*d2201f2fSdrahn {
391*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffffff0) | (val & 0xf);
392*d2201f2fSdrahn }
393*d2201f2fSdrahn 
394*d2201f2fSdrahn uint32
get_r_field(const xtensa_insnbuf insn)395*d2201f2fSdrahn get_r_field (const xtensa_insnbuf insn)
396*d2201f2fSdrahn {
397*d2201f2fSdrahn   return ((insn[0] & 0xf00) >> 8);
398*d2201f2fSdrahn }
399*d2201f2fSdrahn 
400*d2201f2fSdrahn void
set_r_field(xtensa_insnbuf insn,uint32 val)401*d2201f2fSdrahn set_r_field (xtensa_insnbuf insn, uint32 val)
402*d2201f2fSdrahn {
403*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffff0ff) | ((val << 8) & 0xf00);
404*d2201f2fSdrahn }
405*d2201f2fSdrahn 
406*d2201f2fSdrahn uint32
get_s_field(const xtensa_insnbuf insn)407*d2201f2fSdrahn get_s_field (const xtensa_insnbuf insn)
408*d2201f2fSdrahn {
409*d2201f2fSdrahn   return ((insn[0] & 0xf000) >> 12);
410*d2201f2fSdrahn }
411*d2201f2fSdrahn 
412*d2201f2fSdrahn void
set_s_field(xtensa_insnbuf insn,uint32 val)413*d2201f2fSdrahn set_s_field (xtensa_insnbuf insn, uint32 val)
414*d2201f2fSdrahn {
415*d2201f2fSdrahn   insn[0] = (insn[0] & 0xffff0fff) | ((val << 12) & 0xf000);
416*d2201f2fSdrahn }
417*d2201f2fSdrahn 
418*d2201f2fSdrahn uint32
get_sa4_field(const xtensa_insnbuf insn)419*d2201f2fSdrahn get_sa4_field (const xtensa_insnbuf insn)
420*d2201f2fSdrahn {
421*d2201f2fSdrahn   return ((insn[0] & 0x1));
422*d2201f2fSdrahn }
423*d2201f2fSdrahn 
424*d2201f2fSdrahn void
set_sa4_field(xtensa_insnbuf insn,uint32 val)425*d2201f2fSdrahn set_sa4_field (xtensa_insnbuf insn, uint32 val)
426*d2201f2fSdrahn {
427*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffffffe) | (val & 0x1);
428*d2201f2fSdrahn }
429*d2201f2fSdrahn 
430*d2201f2fSdrahn uint32
get_sae_field(const xtensa_insnbuf insn)431*d2201f2fSdrahn get_sae_field (const xtensa_insnbuf insn)
432*d2201f2fSdrahn {
433*d2201f2fSdrahn   return ((insn[0] & 0xf000) >> 12) |
434*d2201f2fSdrahn          ((insn[0] & 0x10));
435*d2201f2fSdrahn }
436*d2201f2fSdrahn 
437*d2201f2fSdrahn void
set_sae_field(xtensa_insnbuf insn,uint32 val)438*d2201f2fSdrahn set_sae_field (xtensa_insnbuf insn, uint32 val)
439*d2201f2fSdrahn {
440*d2201f2fSdrahn   insn[0] = (insn[0] & 0xffff0fff) | ((val << 12) & 0xf000);
441*d2201f2fSdrahn   insn[0] = (insn[0] & 0xffffffef) | (val & 0x10);
442*d2201f2fSdrahn }
443*d2201f2fSdrahn 
444*d2201f2fSdrahn uint32
get_sae4_field(const xtensa_insnbuf insn)445*d2201f2fSdrahn get_sae4_field (const xtensa_insnbuf insn)
446*d2201f2fSdrahn {
447*d2201f2fSdrahn   return ((insn[0] & 0x10) >> 4);
448*d2201f2fSdrahn }
449*d2201f2fSdrahn 
450*d2201f2fSdrahn void
set_sae4_field(xtensa_insnbuf insn,uint32 val)451*d2201f2fSdrahn set_sae4_field (xtensa_insnbuf insn, uint32 val)
452*d2201f2fSdrahn {
453*d2201f2fSdrahn   insn[0] = (insn[0] & 0xffffffef) | ((val << 4) & 0x10);
454*d2201f2fSdrahn }
455*d2201f2fSdrahn 
456*d2201f2fSdrahn uint32
get_sal_field(const xtensa_insnbuf insn)457*d2201f2fSdrahn get_sal_field (const xtensa_insnbuf insn)
458*d2201f2fSdrahn {
459*d2201f2fSdrahn   return ((insn[0] & 0xf0000) >> 16) |
460*d2201f2fSdrahn          ((insn[0] & 0x1) << 4);
461*d2201f2fSdrahn }
462*d2201f2fSdrahn 
463*d2201f2fSdrahn void
set_sal_field(xtensa_insnbuf insn,uint32 val)464*d2201f2fSdrahn set_sal_field (xtensa_insnbuf insn, uint32 val)
465*d2201f2fSdrahn {
466*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfff0ffff) | ((val << 16) & 0xf0000);
467*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffffffe) | ((val >> 4) & 0x1);
468*d2201f2fSdrahn }
469*d2201f2fSdrahn 
470*d2201f2fSdrahn uint32
get_sar_field(const xtensa_insnbuf insn)471*d2201f2fSdrahn get_sar_field (const xtensa_insnbuf insn)
472*d2201f2fSdrahn {
473*d2201f2fSdrahn   return ((insn[0] & 0xf000) >> 12) |
474*d2201f2fSdrahn          ((insn[0] & 0x1) << 4);
475*d2201f2fSdrahn }
476*d2201f2fSdrahn 
477*d2201f2fSdrahn void
set_sar_field(xtensa_insnbuf insn,uint32 val)478*d2201f2fSdrahn set_sar_field (xtensa_insnbuf insn, uint32 val)
479*d2201f2fSdrahn {
480*d2201f2fSdrahn   insn[0] = (insn[0] & 0xffff0fff) | ((val << 12) & 0xf000);
481*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffffffe) | ((val >> 4) & 0x1);
482*d2201f2fSdrahn }
483*d2201f2fSdrahn 
484*d2201f2fSdrahn uint32
get_sas_field(const xtensa_insnbuf insn)485*d2201f2fSdrahn get_sas_field (const xtensa_insnbuf insn)
486*d2201f2fSdrahn {
487*d2201f2fSdrahn   return ((insn[0] & 0xf000) >> 12) |
488*d2201f2fSdrahn          ((insn[0] & 0x10000) >> 12);
489*d2201f2fSdrahn }
490*d2201f2fSdrahn 
491*d2201f2fSdrahn void
set_sas_field(xtensa_insnbuf insn,uint32 val)492*d2201f2fSdrahn set_sas_field (xtensa_insnbuf insn, uint32 val)
493*d2201f2fSdrahn {
494*d2201f2fSdrahn   insn[0] = (insn[0] & 0xffff0fff) | ((val << 12) & 0xf000);
495*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffeffff) | ((val << 12) & 0x10000);
496*d2201f2fSdrahn }
497*d2201f2fSdrahn 
498*d2201f2fSdrahn uint32
get_sas4_field(const xtensa_insnbuf insn)499*d2201f2fSdrahn get_sas4_field (const xtensa_insnbuf insn)
500*d2201f2fSdrahn {
501*d2201f2fSdrahn   return ((insn[0] & 0x10000) >> 16);
502*d2201f2fSdrahn }
503*d2201f2fSdrahn 
504*d2201f2fSdrahn void
set_sas4_field(xtensa_insnbuf insn,uint32 val)505*d2201f2fSdrahn set_sas4_field (xtensa_insnbuf insn, uint32 val)
506*d2201f2fSdrahn {
507*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffeffff) | ((val << 16) & 0x10000);
508*d2201f2fSdrahn }
509*d2201f2fSdrahn 
510*d2201f2fSdrahn uint32
get_sr_field(const xtensa_insnbuf insn)511*d2201f2fSdrahn get_sr_field (const xtensa_insnbuf insn)
512*d2201f2fSdrahn {
513*d2201f2fSdrahn   return ((insn[0] & 0xf00) >> 8) |
514*d2201f2fSdrahn          ((insn[0] & 0xf000) >> 8);
515*d2201f2fSdrahn }
516*d2201f2fSdrahn 
517*d2201f2fSdrahn void
set_sr_field(xtensa_insnbuf insn,uint32 val)518*d2201f2fSdrahn set_sr_field (xtensa_insnbuf insn, uint32 val)
519*d2201f2fSdrahn {
520*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffff0ff) | ((val << 8) & 0xf00);
521*d2201f2fSdrahn   insn[0] = (insn[0] & 0xffff0fff) | ((val << 8) & 0xf000);
522*d2201f2fSdrahn }
523*d2201f2fSdrahn 
524*d2201f2fSdrahn uint32
get_t_field(const xtensa_insnbuf insn)525*d2201f2fSdrahn get_t_field (const xtensa_insnbuf insn)
526*d2201f2fSdrahn {
527*d2201f2fSdrahn   return ((insn[0] & 0xf0000) >> 16);
528*d2201f2fSdrahn }
529*d2201f2fSdrahn 
530*d2201f2fSdrahn void
set_t_field(xtensa_insnbuf insn,uint32 val)531*d2201f2fSdrahn set_t_field (xtensa_insnbuf insn, uint32 val)
532*d2201f2fSdrahn {
533*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfff0ffff) | ((val << 16) & 0xf0000);
534*d2201f2fSdrahn }
535*d2201f2fSdrahn 
536*d2201f2fSdrahn uint32
get_thi3_field(const xtensa_insnbuf insn)537*d2201f2fSdrahn get_thi3_field (const xtensa_insnbuf insn)
538*d2201f2fSdrahn {
539*d2201f2fSdrahn   return ((insn[0] & 0xe0000) >> 17);
540*d2201f2fSdrahn }
541*d2201f2fSdrahn 
542*d2201f2fSdrahn void
set_thi3_field(xtensa_insnbuf insn,uint32 val)543*d2201f2fSdrahn set_thi3_field (xtensa_insnbuf insn, uint32 val)
544*d2201f2fSdrahn {
545*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfff1ffff) | ((val << 17) & 0xe0000);
546*d2201f2fSdrahn }
547*d2201f2fSdrahn 
548*d2201f2fSdrahn uint32
get_z_field(const xtensa_insnbuf insn)549*d2201f2fSdrahn get_z_field (const xtensa_insnbuf insn)
550*d2201f2fSdrahn {
551*d2201f2fSdrahn   return ((insn[0] & 0x40000) >> 18);
552*d2201f2fSdrahn }
553*d2201f2fSdrahn 
554*d2201f2fSdrahn void
set_z_field(xtensa_insnbuf insn,uint32 val)555*d2201f2fSdrahn set_z_field (xtensa_insnbuf insn, uint32 val)
556*d2201f2fSdrahn {
557*d2201f2fSdrahn   insn[0] = (insn[0] & 0xfffbffff) | ((val << 18) & 0x40000);
558*d2201f2fSdrahn }
559*d2201f2fSdrahn 
560*d2201f2fSdrahn uint32 decode_b4constu (uint32);
561*d2201f2fSdrahn xtensa_encode_result encode_b4constu (uint32 *);
562*d2201f2fSdrahn uint32 decode_simm8x256 (uint32);
563*d2201f2fSdrahn xtensa_encode_result encode_simm8x256 (uint32 *);
564*d2201f2fSdrahn uint32 decode_soffset (uint32);
565*d2201f2fSdrahn xtensa_encode_result encode_soffset (uint32 *);
566*d2201f2fSdrahn uint32 decode_imm4 (uint32);
567*d2201f2fSdrahn xtensa_encode_result encode_imm4 (uint32 *);
568*d2201f2fSdrahn uint32 decode_op0 (uint32);
569*d2201f2fSdrahn xtensa_encode_result encode_op0 (uint32 *);
570*d2201f2fSdrahn uint32 decode_op1 (uint32);
571*d2201f2fSdrahn xtensa_encode_result encode_op1 (uint32 *);
572*d2201f2fSdrahn uint32 decode_imm6 (uint32);
573*d2201f2fSdrahn xtensa_encode_result encode_imm6 (uint32 *);
574*d2201f2fSdrahn uint32 decode_op2 (uint32);
575*d2201f2fSdrahn xtensa_encode_result encode_op2 (uint32 *);
576*d2201f2fSdrahn uint32 decode_imm7 (uint32);
577*d2201f2fSdrahn xtensa_encode_result encode_imm7 (uint32 *);
578*d2201f2fSdrahn uint32 decode_simm4 (uint32);
579*d2201f2fSdrahn xtensa_encode_result encode_simm4 (uint32 *);
580*d2201f2fSdrahn uint32 decode_ai4const (uint32);
581*d2201f2fSdrahn xtensa_encode_result encode_ai4const (uint32 *);
582*d2201f2fSdrahn uint32 decode_imm8 (uint32);
583*d2201f2fSdrahn xtensa_encode_result encode_imm8 (uint32 *);
584*d2201f2fSdrahn uint32 decode_sae (uint32);
585*d2201f2fSdrahn xtensa_encode_result encode_sae (uint32 *);
586*d2201f2fSdrahn uint32 decode_imm7lo (uint32);
587*d2201f2fSdrahn xtensa_encode_result encode_imm7lo (uint32 *);
588*d2201f2fSdrahn uint32 decode_simm7 (uint32);
589*d2201f2fSdrahn xtensa_encode_result encode_simm7 (uint32 *);
590*d2201f2fSdrahn uint32 decode_simm8 (uint32);
591*d2201f2fSdrahn xtensa_encode_result encode_simm8 (uint32 *);
592*d2201f2fSdrahn uint32 decode_uimm12x8 (uint32);
593*d2201f2fSdrahn xtensa_encode_result encode_uimm12x8 (uint32 *);
594*d2201f2fSdrahn uint32 decode_sal (uint32);
595*d2201f2fSdrahn xtensa_encode_result encode_sal (uint32 *);
596*d2201f2fSdrahn uint32 decode_uimm6 (uint32);
597*d2201f2fSdrahn xtensa_encode_result encode_uimm6 (uint32 *);
598*d2201f2fSdrahn uint32 decode_sas4 (uint32);
599*d2201f2fSdrahn xtensa_encode_result encode_sas4 (uint32 *);
600*d2201f2fSdrahn uint32 decode_uimm8 (uint32);
601*d2201f2fSdrahn xtensa_encode_result encode_uimm8 (uint32 *);
602*d2201f2fSdrahn uint32 decode_uimm16x4 (uint32);
603*d2201f2fSdrahn xtensa_encode_result encode_uimm16x4 (uint32 *);
604*d2201f2fSdrahn uint32 decode_sar (uint32);
605*d2201f2fSdrahn xtensa_encode_result encode_sar (uint32 *);
606*d2201f2fSdrahn uint32 decode_sa4 (uint32);
607*d2201f2fSdrahn xtensa_encode_result encode_sa4 (uint32 *);
608*d2201f2fSdrahn uint32 decode_sas (uint32);
609*d2201f2fSdrahn xtensa_encode_result encode_sas (uint32 *);
610*d2201f2fSdrahn uint32 decode_imm6hi (uint32);
611*d2201f2fSdrahn xtensa_encode_result encode_imm6hi (uint32 *);
612*d2201f2fSdrahn uint32 decode_bbi (uint32);
613*d2201f2fSdrahn xtensa_encode_result encode_bbi (uint32 *);
614*d2201f2fSdrahn uint32 decode_uimm8x2 (uint32);
615*d2201f2fSdrahn xtensa_encode_result encode_uimm8x2 (uint32 *);
616*d2201f2fSdrahn uint32 decode_uimm8x4 (uint32);
617*d2201f2fSdrahn xtensa_encode_result encode_uimm8x4 (uint32 *);
618*d2201f2fSdrahn uint32 decode_msalp32 (uint32);
619*d2201f2fSdrahn xtensa_encode_result encode_msalp32 (uint32 *);
620*d2201f2fSdrahn uint32 decode_bbi4 (uint32);
621*d2201f2fSdrahn xtensa_encode_result encode_bbi4 (uint32 *);
622*d2201f2fSdrahn uint32 decode_op2p1 (uint32);
623*d2201f2fSdrahn xtensa_encode_result encode_op2p1 (uint32 *);
624*d2201f2fSdrahn uint32 decode_soffsetx4 (uint32);
625*d2201f2fSdrahn xtensa_encode_result encode_soffsetx4 (uint32 *);
626*d2201f2fSdrahn uint32 decode_imm6lo (uint32);
627*d2201f2fSdrahn xtensa_encode_result encode_imm6lo (uint32 *);
628*d2201f2fSdrahn uint32 decode_imm12 (uint32);
629*d2201f2fSdrahn xtensa_encode_result encode_imm12 (uint32 *);
630*d2201f2fSdrahn uint32 decode_b4const (uint32);
631*d2201f2fSdrahn xtensa_encode_result encode_b4const (uint32 *);
632*d2201f2fSdrahn uint32 decode_i (uint32);
633*d2201f2fSdrahn xtensa_encode_result encode_i (uint32 *);
634*d2201f2fSdrahn uint32 decode_imm16 (uint32);
635*d2201f2fSdrahn xtensa_encode_result encode_imm16 (uint32 *);
636*d2201f2fSdrahn uint32 decode_mn (uint32);
637*d2201f2fSdrahn xtensa_encode_result encode_mn (uint32 *);
638*d2201f2fSdrahn uint32 decode_m (uint32);
639*d2201f2fSdrahn xtensa_encode_result encode_m (uint32 *);
640*d2201f2fSdrahn uint32 decode_n (uint32);
641*d2201f2fSdrahn xtensa_encode_result encode_n (uint32 *);
642*d2201f2fSdrahn uint32 decode_none (uint32);
643*d2201f2fSdrahn xtensa_encode_result encode_none (uint32 *);
644*d2201f2fSdrahn uint32 decode_imm12b (uint32);
645*d2201f2fSdrahn xtensa_encode_result encode_imm12b (uint32 *);
646*d2201f2fSdrahn uint32 decode_r (uint32);
647*d2201f2fSdrahn xtensa_encode_result encode_r (uint32 *);
648*d2201f2fSdrahn uint32 decode_s (uint32);
649*d2201f2fSdrahn xtensa_encode_result encode_s (uint32 *);
650*d2201f2fSdrahn uint32 decode_t (uint32);
651*d2201f2fSdrahn xtensa_encode_result encode_t (uint32 *);
652*d2201f2fSdrahn uint32 decode_thi3 (uint32);
653*d2201f2fSdrahn xtensa_encode_result encode_thi3 (uint32 *);
654*d2201f2fSdrahn uint32 decode_sae4 (uint32);
655*d2201f2fSdrahn xtensa_encode_result encode_sae4 (uint32 *);
656*d2201f2fSdrahn uint32 decode_offset (uint32);
657*d2201f2fSdrahn xtensa_encode_result encode_offset (uint32 *);
658*d2201f2fSdrahn uint32 decode_imm7hi (uint32);
659*d2201f2fSdrahn xtensa_encode_result encode_imm7hi (uint32 *);
660*d2201f2fSdrahn uint32 decode_uimm4x16 (uint32);
661*d2201f2fSdrahn xtensa_encode_result encode_uimm4x16 (uint32 *);
662*d2201f2fSdrahn uint32 decode_simm12b (uint32);
663*d2201f2fSdrahn xtensa_encode_result encode_simm12b (uint32 *);
664*d2201f2fSdrahn uint32 decode_lsi4x4 (uint32);
665*d2201f2fSdrahn xtensa_encode_result encode_lsi4x4 (uint32 *);
666*d2201f2fSdrahn uint32 decode_z (uint32);
667*d2201f2fSdrahn xtensa_encode_result encode_z (uint32 *);
668*d2201f2fSdrahn uint32 decode_simm12 (uint32);
669*d2201f2fSdrahn xtensa_encode_result encode_simm12 (uint32 *);
670*d2201f2fSdrahn uint32 decode_sr (uint32);
671*d2201f2fSdrahn xtensa_encode_result encode_sr (uint32 *);
672*d2201f2fSdrahn uint32 decode_nimm4x2 (uint32);
673*d2201f2fSdrahn xtensa_encode_result encode_nimm4x2 (uint32 *);
674*d2201f2fSdrahn 
675*d2201f2fSdrahn 
676*d2201f2fSdrahn static const uint32 b4constu_table[] = {
677*d2201f2fSdrahn   32768,
678*d2201f2fSdrahn   65536,
679*d2201f2fSdrahn   2,
680*d2201f2fSdrahn   3,
681*d2201f2fSdrahn   4,
682*d2201f2fSdrahn   5,
683*d2201f2fSdrahn   6,
684*d2201f2fSdrahn   7,
685*d2201f2fSdrahn   8,
686*d2201f2fSdrahn   10,
687*d2201f2fSdrahn   12,
688*d2201f2fSdrahn   16,
689*d2201f2fSdrahn   32,
690*d2201f2fSdrahn   64,
691*d2201f2fSdrahn   128,
692*d2201f2fSdrahn   256
693*d2201f2fSdrahn };
694*d2201f2fSdrahn 
695*d2201f2fSdrahn uint32
decode_b4constu(uint32 val)696*d2201f2fSdrahn decode_b4constu (uint32 val)
697*d2201f2fSdrahn {
698*d2201f2fSdrahn   val = b4constu_table[val];
699*d2201f2fSdrahn   return val;
700*d2201f2fSdrahn }
701*d2201f2fSdrahn 
702*d2201f2fSdrahn xtensa_encode_result
encode_b4constu(uint32 * valp)703*d2201f2fSdrahn encode_b4constu (uint32 *valp)
704*d2201f2fSdrahn {
705*d2201f2fSdrahn   uint32 val = *valp;
706*d2201f2fSdrahn   unsigned i;
707*d2201f2fSdrahn   for (i = 0; i < (1 << 4); i += 1)
708*d2201f2fSdrahn     if (b4constu_table[i] == val) goto found;
709*d2201f2fSdrahn   return xtensa_encode_result_not_in_table;
710*d2201f2fSdrahn  found:
711*d2201f2fSdrahn   val = i;
712*d2201f2fSdrahn   *valp = val;
713*d2201f2fSdrahn   return xtensa_encode_result_ok;
714*d2201f2fSdrahn }
715*d2201f2fSdrahn 
716*d2201f2fSdrahn uint32
decode_simm8x256(uint32 val)717*d2201f2fSdrahn decode_simm8x256 (uint32 val)
718*d2201f2fSdrahn {
719*d2201f2fSdrahn   val = (val ^ 0x80) - 0x80;
720*d2201f2fSdrahn   val <<= 8;
721*d2201f2fSdrahn   return val;
722*d2201f2fSdrahn }
723*d2201f2fSdrahn 
724*d2201f2fSdrahn xtensa_encode_result
encode_simm8x256(uint32 * valp)725*d2201f2fSdrahn encode_simm8x256 (uint32 *valp)
726*d2201f2fSdrahn {
727*d2201f2fSdrahn   uint32 val = *valp;
728*d2201f2fSdrahn   if ((val & ((1 << 8) - 1)) != 0)
729*d2201f2fSdrahn     return xtensa_encode_result_align;
730*d2201f2fSdrahn   val = (signed int) val >> 8;
731*d2201f2fSdrahn   if (((val + (1 << 7)) >> 8) != 0)
732*d2201f2fSdrahn     {
733*d2201f2fSdrahn       if ((signed int) val > 0)
734*d2201f2fSdrahn         return xtensa_encode_result_too_high;
735*d2201f2fSdrahn       else
736*d2201f2fSdrahn         return xtensa_encode_result_too_low;
737*d2201f2fSdrahn     }
738*d2201f2fSdrahn   *valp = val;
739*d2201f2fSdrahn   return xtensa_encode_result_ok;
740*d2201f2fSdrahn }
741*d2201f2fSdrahn 
742*d2201f2fSdrahn uint32
decode_soffset(uint32 val)743*d2201f2fSdrahn decode_soffset (uint32 val)
744*d2201f2fSdrahn {
745*d2201f2fSdrahn   val = (val ^ 0x20000) - 0x20000;
746*d2201f2fSdrahn   return val;
747*d2201f2fSdrahn }
748*d2201f2fSdrahn 
749*d2201f2fSdrahn xtensa_encode_result
encode_soffset(uint32 * valp)750*d2201f2fSdrahn encode_soffset (uint32 *valp)
751*d2201f2fSdrahn {
752*d2201f2fSdrahn   uint32 val = *valp;
753*d2201f2fSdrahn   if (((val + (1 << 17)) >> 18) != 0)
754*d2201f2fSdrahn     {
755*d2201f2fSdrahn       if ((signed int) val > 0)
756*d2201f2fSdrahn         return xtensa_encode_result_too_high;
757*d2201f2fSdrahn       else
758*d2201f2fSdrahn         return xtensa_encode_result_too_low;
759*d2201f2fSdrahn     }
760*d2201f2fSdrahn   *valp = val;
761*d2201f2fSdrahn   return xtensa_encode_result_ok;
762*d2201f2fSdrahn }
763*d2201f2fSdrahn 
764*d2201f2fSdrahn uint32
decode_imm4(uint32 val)765*d2201f2fSdrahn decode_imm4 (uint32 val)
766*d2201f2fSdrahn {
767*d2201f2fSdrahn   return val;
768*d2201f2fSdrahn }
769*d2201f2fSdrahn 
770*d2201f2fSdrahn xtensa_encode_result
encode_imm4(uint32 * valp)771*d2201f2fSdrahn encode_imm4 (uint32 *valp)
772*d2201f2fSdrahn {
773*d2201f2fSdrahn   uint32 val = *valp;
774*d2201f2fSdrahn   if ((val >> 4) != 0)
775*d2201f2fSdrahn     return xtensa_encode_result_too_high;
776*d2201f2fSdrahn   *valp = val;
777*d2201f2fSdrahn   return xtensa_encode_result_ok;
778*d2201f2fSdrahn }
779*d2201f2fSdrahn 
780*d2201f2fSdrahn uint32
decode_op0(uint32 val)781*d2201f2fSdrahn decode_op0 (uint32 val)
782*d2201f2fSdrahn {
783*d2201f2fSdrahn   return val;
784*d2201f2fSdrahn }
785*d2201f2fSdrahn 
786*d2201f2fSdrahn xtensa_encode_result
encode_op0(uint32 * valp)787*d2201f2fSdrahn encode_op0 (uint32 *valp)
788*d2201f2fSdrahn {
789*d2201f2fSdrahn   uint32 val = *valp;
790*d2201f2fSdrahn   if ((val >> 4) != 0)
791*d2201f2fSdrahn     return xtensa_encode_result_too_high;
792*d2201f2fSdrahn   *valp = val;
793*d2201f2fSdrahn   return xtensa_encode_result_ok;
794*d2201f2fSdrahn }
795*d2201f2fSdrahn 
796*d2201f2fSdrahn uint32
decode_op1(uint32 val)797*d2201f2fSdrahn decode_op1 (uint32 val)
798*d2201f2fSdrahn {
799*d2201f2fSdrahn   return val;
800*d2201f2fSdrahn }
801*d2201f2fSdrahn 
802*d2201f2fSdrahn xtensa_encode_result
encode_op1(uint32 * valp)803*d2201f2fSdrahn encode_op1 (uint32 *valp)
804*d2201f2fSdrahn {
805*d2201f2fSdrahn   uint32 val = *valp;
806*d2201f2fSdrahn   if ((val >> 4) != 0)
807*d2201f2fSdrahn     return xtensa_encode_result_too_high;
808*d2201f2fSdrahn   *valp = val;
809*d2201f2fSdrahn   return xtensa_encode_result_ok;
810*d2201f2fSdrahn }
811*d2201f2fSdrahn 
812*d2201f2fSdrahn uint32
decode_imm6(uint32 val)813*d2201f2fSdrahn decode_imm6 (uint32 val)
814*d2201f2fSdrahn {
815*d2201f2fSdrahn   return val;
816*d2201f2fSdrahn }
817*d2201f2fSdrahn 
818*d2201f2fSdrahn xtensa_encode_result
encode_imm6(uint32 * valp)819*d2201f2fSdrahn encode_imm6 (uint32 *valp)
820*d2201f2fSdrahn {
821*d2201f2fSdrahn   uint32 val = *valp;
822*d2201f2fSdrahn   if ((val >> 6) != 0)
823*d2201f2fSdrahn     return xtensa_encode_result_too_high;
824*d2201f2fSdrahn   *valp = val;
825*d2201f2fSdrahn   return xtensa_encode_result_ok;
826*d2201f2fSdrahn }
827*d2201f2fSdrahn 
828*d2201f2fSdrahn uint32
decode_op2(uint32 val)829*d2201f2fSdrahn decode_op2 (uint32 val)
830*d2201f2fSdrahn {
831*d2201f2fSdrahn   return val;
832*d2201f2fSdrahn }
833*d2201f2fSdrahn 
834*d2201f2fSdrahn xtensa_encode_result
encode_op2(uint32 * valp)835*d2201f2fSdrahn encode_op2 (uint32 *valp)
836*d2201f2fSdrahn {
837*d2201f2fSdrahn   uint32 val = *valp;
838*d2201f2fSdrahn   if ((val >> 4) != 0)
839*d2201f2fSdrahn     return xtensa_encode_result_too_high;
840*d2201f2fSdrahn   *valp = val;
841*d2201f2fSdrahn   return xtensa_encode_result_ok;
842*d2201f2fSdrahn }
843*d2201f2fSdrahn 
844*d2201f2fSdrahn uint32
decode_imm7(uint32 val)845*d2201f2fSdrahn decode_imm7 (uint32 val)
846*d2201f2fSdrahn {
847*d2201f2fSdrahn   return val;
848*d2201f2fSdrahn }
849*d2201f2fSdrahn 
850*d2201f2fSdrahn xtensa_encode_result
encode_imm7(uint32 * valp)851*d2201f2fSdrahn encode_imm7 (uint32 *valp)
852*d2201f2fSdrahn {
853*d2201f2fSdrahn   uint32 val = *valp;
854*d2201f2fSdrahn   if ((val >> 7) != 0)
855*d2201f2fSdrahn     return xtensa_encode_result_too_high;
856*d2201f2fSdrahn   *valp = val;
857*d2201f2fSdrahn   return xtensa_encode_result_ok;
858*d2201f2fSdrahn }
859*d2201f2fSdrahn 
860*d2201f2fSdrahn uint32
decode_simm4(uint32 val)861*d2201f2fSdrahn decode_simm4 (uint32 val)
862*d2201f2fSdrahn {
863*d2201f2fSdrahn   val = (val ^ 0x8) - 0x8;
864*d2201f2fSdrahn   return val;
865*d2201f2fSdrahn }
866*d2201f2fSdrahn 
867*d2201f2fSdrahn xtensa_encode_result
encode_simm4(uint32 * valp)868*d2201f2fSdrahn encode_simm4 (uint32 *valp)
869*d2201f2fSdrahn {
870*d2201f2fSdrahn   uint32 val = *valp;
871*d2201f2fSdrahn   if (((val + (1 << 3)) >> 4) != 0)
872*d2201f2fSdrahn     {
873*d2201f2fSdrahn       if ((signed int) val > 0)
874*d2201f2fSdrahn         return xtensa_encode_result_too_high;
875*d2201f2fSdrahn       else
876*d2201f2fSdrahn         return xtensa_encode_result_too_low;
877*d2201f2fSdrahn     }
878*d2201f2fSdrahn   *valp = val;
879*d2201f2fSdrahn   return xtensa_encode_result_ok;
880*d2201f2fSdrahn }
881*d2201f2fSdrahn 
882*d2201f2fSdrahn static const uint32 ai4const_table[] = {
883*d2201f2fSdrahn   -1,
884*d2201f2fSdrahn   1,
885*d2201f2fSdrahn   2,
886*d2201f2fSdrahn   3,
887*d2201f2fSdrahn   4,
888*d2201f2fSdrahn   5,
889*d2201f2fSdrahn   6,
890*d2201f2fSdrahn   7,
891*d2201f2fSdrahn   8,
892*d2201f2fSdrahn   9,
893*d2201f2fSdrahn   10,
894*d2201f2fSdrahn   11,
895*d2201f2fSdrahn   12,
896*d2201f2fSdrahn   13,
897*d2201f2fSdrahn   14,
898*d2201f2fSdrahn   15
899*d2201f2fSdrahn };
900*d2201f2fSdrahn 
901*d2201f2fSdrahn uint32
decode_ai4const(uint32 val)902*d2201f2fSdrahn decode_ai4const (uint32 val)
903*d2201f2fSdrahn {
904*d2201f2fSdrahn   val = ai4const_table[val];
905*d2201f2fSdrahn   return val;
906*d2201f2fSdrahn }
907*d2201f2fSdrahn 
908*d2201f2fSdrahn xtensa_encode_result
encode_ai4const(uint32 * valp)909*d2201f2fSdrahn encode_ai4const (uint32 *valp)
910*d2201f2fSdrahn {
911*d2201f2fSdrahn   uint32 val = *valp;
912*d2201f2fSdrahn   unsigned i;
913*d2201f2fSdrahn   for (i = 0; i < (1 << 4); i += 1)
914*d2201f2fSdrahn     if (ai4const_table[i] == val) goto found;
915*d2201f2fSdrahn   return xtensa_encode_result_not_in_table;
916*d2201f2fSdrahn  found:
917*d2201f2fSdrahn   val = i;
918*d2201f2fSdrahn   *valp = val;
919*d2201f2fSdrahn   return xtensa_encode_result_ok;
920*d2201f2fSdrahn }
921*d2201f2fSdrahn 
922*d2201f2fSdrahn uint32
decode_imm8(uint32 val)923*d2201f2fSdrahn decode_imm8 (uint32 val)
924*d2201f2fSdrahn {
925*d2201f2fSdrahn   return val;
926*d2201f2fSdrahn }
927*d2201f2fSdrahn 
928*d2201f2fSdrahn xtensa_encode_result
encode_imm8(uint32 * valp)929*d2201f2fSdrahn encode_imm8 (uint32 *valp)
930*d2201f2fSdrahn {
931*d2201f2fSdrahn   uint32 val = *valp;
932*d2201f2fSdrahn   if ((val >> 8) != 0)
933*d2201f2fSdrahn     return xtensa_encode_result_too_high;
934*d2201f2fSdrahn   *valp = val;
935*d2201f2fSdrahn   return xtensa_encode_result_ok;
936*d2201f2fSdrahn }
937*d2201f2fSdrahn 
938*d2201f2fSdrahn uint32
decode_sae(uint32 val)939*d2201f2fSdrahn decode_sae (uint32 val)
940*d2201f2fSdrahn {
941*d2201f2fSdrahn   return val;
942*d2201f2fSdrahn }
943*d2201f2fSdrahn 
944*d2201f2fSdrahn xtensa_encode_result
encode_sae(uint32 * valp)945*d2201f2fSdrahn encode_sae (uint32 *valp)
946*d2201f2fSdrahn {
947*d2201f2fSdrahn   uint32 val = *valp;
948*d2201f2fSdrahn   if ((val >> 5) != 0)
949*d2201f2fSdrahn     return xtensa_encode_result_too_high;
950*d2201f2fSdrahn   *valp = val;
951*d2201f2fSdrahn   return xtensa_encode_result_ok;
952*d2201f2fSdrahn }
953*d2201f2fSdrahn 
954*d2201f2fSdrahn uint32
decode_imm7lo(uint32 val)955*d2201f2fSdrahn decode_imm7lo (uint32 val)
956*d2201f2fSdrahn {
957*d2201f2fSdrahn   return val;
958*d2201f2fSdrahn }
959*d2201f2fSdrahn 
960*d2201f2fSdrahn xtensa_encode_result
encode_imm7lo(uint32 * valp)961*d2201f2fSdrahn encode_imm7lo (uint32 *valp)
962*d2201f2fSdrahn {
963*d2201f2fSdrahn   uint32 val = *valp;
964*d2201f2fSdrahn   if ((val >> 4) != 0)
965*d2201f2fSdrahn     return xtensa_encode_result_too_high;
966*d2201f2fSdrahn   *valp = val;
967*d2201f2fSdrahn   return xtensa_encode_result_ok;
968*d2201f2fSdrahn }
969*d2201f2fSdrahn 
970*d2201f2fSdrahn uint32
decode_simm7(uint32 val)971*d2201f2fSdrahn decode_simm7 (uint32 val)
972*d2201f2fSdrahn {
973*d2201f2fSdrahn   if (val > 95)
974*d2201f2fSdrahn       val |= -32;
975*d2201f2fSdrahn   return val;
976*d2201f2fSdrahn }
977*d2201f2fSdrahn 
978*d2201f2fSdrahn xtensa_encode_result
encode_simm7(uint32 * valp)979*d2201f2fSdrahn encode_simm7 (uint32 *valp)
980*d2201f2fSdrahn {
981*d2201f2fSdrahn   uint32 val = *valp;
982*d2201f2fSdrahn   if ((signed int) val < -32)
983*d2201f2fSdrahn     return xtensa_encode_result_too_low;
984*d2201f2fSdrahn   if ((signed int) val > 95)
985*d2201f2fSdrahn     return xtensa_encode_result_too_high;
986*d2201f2fSdrahn   *valp = val;
987*d2201f2fSdrahn   return xtensa_encode_result_ok;
988*d2201f2fSdrahn }
989*d2201f2fSdrahn 
990*d2201f2fSdrahn uint32
decode_simm8(uint32 val)991*d2201f2fSdrahn decode_simm8 (uint32 val)
992*d2201f2fSdrahn {
993*d2201f2fSdrahn   val = (val ^ 0x80) - 0x80;
994*d2201f2fSdrahn   return val;
995*d2201f2fSdrahn }
996*d2201f2fSdrahn 
997*d2201f2fSdrahn xtensa_encode_result
encode_simm8(uint32 * valp)998*d2201f2fSdrahn encode_simm8 (uint32 *valp)
999*d2201f2fSdrahn {
1000*d2201f2fSdrahn   uint32 val = *valp;
1001*d2201f2fSdrahn   if (((val + (1 << 7)) >> 8) != 0)
1002*d2201f2fSdrahn     {
1003*d2201f2fSdrahn       if ((signed int) val > 0)
1004*d2201f2fSdrahn         return xtensa_encode_result_too_high;
1005*d2201f2fSdrahn       else
1006*d2201f2fSdrahn         return xtensa_encode_result_too_low;
1007*d2201f2fSdrahn     }
1008*d2201f2fSdrahn   *valp = val;
1009*d2201f2fSdrahn   return xtensa_encode_result_ok;
1010*d2201f2fSdrahn }
1011*d2201f2fSdrahn 
1012*d2201f2fSdrahn uint32
decode_uimm12x8(uint32 val)1013*d2201f2fSdrahn decode_uimm12x8 (uint32 val)
1014*d2201f2fSdrahn {
1015*d2201f2fSdrahn   val <<= 3;
1016*d2201f2fSdrahn   return val;
1017*d2201f2fSdrahn }
1018*d2201f2fSdrahn 
1019*d2201f2fSdrahn xtensa_encode_result
encode_uimm12x8(uint32 * valp)1020*d2201f2fSdrahn encode_uimm12x8 (uint32 *valp)
1021*d2201f2fSdrahn {
1022*d2201f2fSdrahn   uint32 val = *valp;
1023*d2201f2fSdrahn   if ((val & ((1 << 3) - 1)) != 0)
1024*d2201f2fSdrahn     return xtensa_encode_result_align;
1025*d2201f2fSdrahn   val = (signed int) val >> 3;
1026*d2201f2fSdrahn   if ((val >> 12) != 0)
1027*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1028*d2201f2fSdrahn   *valp = val;
1029*d2201f2fSdrahn   return xtensa_encode_result_ok;
1030*d2201f2fSdrahn }
1031*d2201f2fSdrahn 
1032*d2201f2fSdrahn uint32
decode_sal(uint32 val)1033*d2201f2fSdrahn decode_sal (uint32 val)
1034*d2201f2fSdrahn {
1035*d2201f2fSdrahn   return val;
1036*d2201f2fSdrahn }
1037*d2201f2fSdrahn 
1038*d2201f2fSdrahn xtensa_encode_result
encode_sal(uint32 * valp)1039*d2201f2fSdrahn encode_sal (uint32 *valp)
1040*d2201f2fSdrahn {
1041*d2201f2fSdrahn   uint32 val = *valp;
1042*d2201f2fSdrahn   if ((val >> 5) != 0)
1043*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1044*d2201f2fSdrahn   *valp = val;
1045*d2201f2fSdrahn   return xtensa_encode_result_ok;
1046*d2201f2fSdrahn }
1047*d2201f2fSdrahn 
1048*d2201f2fSdrahn uint32
decode_uimm6(uint32 val)1049*d2201f2fSdrahn decode_uimm6 (uint32 val)
1050*d2201f2fSdrahn {
1051*d2201f2fSdrahn   return val;
1052*d2201f2fSdrahn }
1053*d2201f2fSdrahn 
1054*d2201f2fSdrahn xtensa_encode_result
encode_uimm6(uint32 * valp)1055*d2201f2fSdrahn encode_uimm6 (uint32 *valp)
1056*d2201f2fSdrahn {
1057*d2201f2fSdrahn   uint32 val = *valp;
1058*d2201f2fSdrahn   if ((val >> 6) != 0)
1059*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1060*d2201f2fSdrahn   *valp = val;
1061*d2201f2fSdrahn   return xtensa_encode_result_ok;
1062*d2201f2fSdrahn }
1063*d2201f2fSdrahn 
1064*d2201f2fSdrahn uint32
decode_sas4(uint32 val)1065*d2201f2fSdrahn decode_sas4 (uint32 val)
1066*d2201f2fSdrahn {
1067*d2201f2fSdrahn   return val;
1068*d2201f2fSdrahn }
1069*d2201f2fSdrahn 
1070*d2201f2fSdrahn xtensa_encode_result
encode_sas4(uint32 * valp)1071*d2201f2fSdrahn encode_sas4 (uint32 *valp)
1072*d2201f2fSdrahn {
1073*d2201f2fSdrahn   uint32 val = *valp;
1074*d2201f2fSdrahn   if ((val >> 1) != 0)
1075*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1076*d2201f2fSdrahn   *valp = val;
1077*d2201f2fSdrahn   return xtensa_encode_result_ok;
1078*d2201f2fSdrahn }
1079*d2201f2fSdrahn 
1080*d2201f2fSdrahn uint32
decode_uimm8(uint32 val)1081*d2201f2fSdrahn decode_uimm8 (uint32 val)
1082*d2201f2fSdrahn {
1083*d2201f2fSdrahn   return val;
1084*d2201f2fSdrahn }
1085*d2201f2fSdrahn 
1086*d2201f2fSdrahn xtensa_encode_result
encode_uimm8(uint32 * valp)1087*d2201f2fSdrahn encode_uimm8 (uint32 *valp)
1088*d2201f2fSdrahn {
1089*d2201f2fSdrahn   uint32 val = *valp;
1090*d2201f2fSdrahn   if ((val >> 8) != 0)
1091*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1092*d2201f2fSdrahn   *valp = val;
1093*d2201f2fSdrahn   return xtensa_encode_result_ok;
1094*d2201f2fSdrahn }
1095*d2201f2fSdrahn 
1096*d2201f2fSdrahn uint32
decode_uimm16x4(uint32 val)1097*d2201f2fSdrahn decode_uimm16x4 (uint32 val)
1098*d2201f2fSdrahn {
1099*d2201f2fSdrahn   val |= -1 << 16;
1100*d2201f2fSdrahn   val <<= 2;
1101*d2201f2fSdrahn   return val;
1102*d2201f2fSdrahn }
1103*d2201f2fSdrahn 
1104*d2201f2fSdrahn xtensa_encode_result
encode_uimm16x4(uint32 * valp)1105*d2201f2fSdrahn encode_uimm16x4 (uint32 *valp)
1106*d2201f2fSdrahn {
1107*d2201f2fSdrahn   uint32 val = *valp;
1108*d2201f2fSdrahn   if ((val & ((1 << 2) - 1)) != 0)
1109*d2201f2fSdrahn     return xtensa_encode_result_align;
1110*d2201f2fSdrahn   val = (signed int) val >> 2;
1111*d2201f2fSdrahn   if ((signed int) val >> 16 != -1)
1112*d2201f2fSdrahn     {
1113*d2201f2fSdrahn       if ((signed int) val >= 0)
1114*d2201f2fSdrahn         return xtensa_encode_result_too_high;
1115*d2201f2fSdrahn       else
1116*d2201f2fSdrahn         return xtensa_encode_result_too_low;
1117*d2201f2fSdrahn     }
1118*d2201f2fSdrahn   *valp = val;
1119*d2201f2fSdrahn   return xtensa_encode_result_ok;
1120*d2201f2fSdrahn }
1121*d2201f2fSdrahn 
1122*d2201f2fSdrahn uint32
decode_sar(uint32 val)1123*d2201f2fSdrahn decode_sar (uint32 val)
1124*d2201f2fSdrahn {
1125*d2201f2fSdrahn   return val;
1126*d2201f2fSdrahn }
1127*d2201f2fSdrahn 
1128*d2201f2fSdrahn xtensa_encode_result
encode_sar(uint32 * valp)1129*d2201f2fSdrahn encode_sar (uint32 *valp)
1130*d2201f2fSdrahn {
1131*d2201f2fSdrahn   uint32 val = *valp;
1132*d2201f2fSdrahn   if ((val >> 5) != 0)
1133*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1134*d2201f2fSdrahn   *valp = val;
1135*d2201f2fSdrahn   return xtensa_encode_result_ok;
1136*d2201f2fSdrahn }
1137*d2201f2fSdrahn 
1138*d2201f2fSdrahn uint32
decode_sa4(uint32 val)1139*d2201f2fSdrahn decode_sa4 (uint32 val)
1140*d2201f2fSdrahn {
1141*d2201f2fSdrahn   return val;
1142*d2201f2fSdrahn }
1143*d2201f2fSdrahn 
1144*d2201f2fSdrahn xtensa_encode_result
encode_sa4(uint32 * valp)1145*d2201f2fSdrahn encode_sa4 (uint32 *valp)
1146*d2201f2fSdrahn {
1147*d2201f2fSdrahn   uint32 val = *valp;
1148*d2201f2fSdrahn   if ((val >> 1) != 0)
1149*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1150*d2201f2fSdrahn   *valp = val;
1151*d2201f2fSdrahn   return xtensa_encode_result_ok;
1152*d2201f2fSdrahn }
1153*d2201f2fSdrahn 
1154*d2201f2fSdrahn uint32
decode_sas(uint32 val)1155*d2201f2fSdrahn decode_sas (uint32 val)
1156*d2201f2fSdrahn {
1157*d2201f2fSdrahn   return val;
1158*d2201f2fSdrahn }
1159*d2201f2fSdrahn 
1160*d2201f2fSdrahn xtensa_encode_result
encode_sas(uint32 * valp)1161*d2201f2fSdrahn encode_sas (uint32 *valp)
1162*d2201f2fSdrahn {
1163*d2201f2fSdrahn   uint32 val = *valp;
1164*d2201f2fSdrahn   if ((val >> 5) != 0)
1165*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1166*d2201f2fSdrahn   *valp = val;
1167*d2201f2fSdrahn   return xtensa_encode_result_ok;
1168*d2201f2fSdrahn }
1169*d2201f2fSdrahn 
1170*d2201f2fSdrahn uint32
decode_imm6hi(uint32 val)1171*d2201f2fSdrahn decode_imm6hi (uint32 val)
1172*d2201f2fSdrahn {
1173*d2201f2fSdrahn   return val;
1174*d2201f2fSdrahn }
1175*d2201f2fSdrahn 
1176*d2201f2fSdrahn xtensa_encode_result
encode_imm6hi(uint32 * valp)1177*d2201f2fSdrahn encode_imm6hi (uint32 *valp)
1178*d2201f2fSdrahn {
1179*d2201f2fSdrahn   uint32 val = *valp;
1180*d2201f2fSdrahn   if ((val >> 2) != 0)
1181*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1182*d2201f2fSdrahn   *valp = val;
1183*d2201f2fSdrahn   return xtensa_encode_result_ok;
1184*d2201f2fSdrahn }
1185*d2201f2fSdrahn 
1186*d2201f2fSdrahn uint32
decode_bbi(uint32 val)1187*d2201f2fSdrahn decode_bbi (uint32 val)
1188*d2201f2fSdrahn {
1189*d2201f2fSdrahn   return val;
1190*d2201f2fSdrahn }
1191*d2201f2fSdrahn 
1192*d2201f2fSdrahn xtensa_encode_result
encode_bbi(uint32 * valp)1193*d2201f2fSdrahn encode_bbi (uint32 *valp)
1194*d2201f2fSdrahn {
1195*d2201f2fSdrahn   uint32 val = *valp;
1196*d2201f2fSdrahn   if ((val >> 5) != 0)
1197*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1198*d2201f2fSdrahn   *valp = val;
1199*d2201f2fSdrahn   return xtensa_encode_result_ok;
1200*d2201f2fSdrahn }
1201*d2201f2fSdrahn 
1202*d2201f2fSdrahn uint32
decode_uimm8x2(uint32 val)1203*d2201f2fSdrahn decode_uimm8x2 (uint32 val)
1204*d2201f2fSdrahn {
1205*d2201f2fSdrahn   val <<= 1;
1206*d2201f2fSdrahn   return val;
1207*d2201f2fSdrahn }
1208*d2201f2fSdrahn 
1209*d2201f2fSdrahn xtensa_encode_result
encode_uimm8x2(uint32 * valp)1210*d2201f2fSdrahn encode_uimm8x2 (uint32 *valp)
1211*d2201f2fSdrahn {
1212*d2201f2fSdrahn   uint32 val = *valp;
1213*d2201f2fSdrahn   if ((val & ((1 << 1) - 1)) != 0)
1214*d2201f2fSdrahn     return xtensa_encode_result_align;
1215*d2201f2fSdrahn   val = (signed int) val >> 1;
1216*d2201f2fSdrahn   if ((val >> 8) != 0)
1217*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1218*d2201f2fSdrahn   *valp = val;
1219*d2201f2fSdrahn   return xtensa_encode_result_ok;
1220*d2201f2fSdrahn }
1221*d2201f2fSdrahn 
1222*d2201f2fSdrahn uint32
decode_uimm8x4(uint32 val)1223*d2201f2fSdrahn decode_uimm8x4 (uint32 val)
1224*d2201f2fSdrahn {
1225*d2201f2fSdrahn   val <<= 2;
1226*d2201f2fSdrahn   return val;
1227*d2201f2fSdrahn }
1228*d2201f2fSdrahn 
1229*d2201f2fSdrahn xtensa_encode_result
encode_uimm8x4(uint32 * valp)1230*d2201f2fSdrahn encode_uimm8x4 (uint32 *valp)
1231*d2201f2fSdrahn {
1232*d2201f2fSdrahn   uint32 val = *valp;
1233*d2201f2fSdrahn   if ((val & ((1 << 2) - 1)) != 0)
1234*d2201f2fSdrahn     return xtensa_encode_result_align;
1235*d2201f2fSdrahn   val = (signed int) val >> 2;
1236*d2201f2fSdrahn   if ((val >> 8) != 0)
1237*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1238*d2201f2fSdrahn   *valp = val;
1239*d2201f2fSdrahn   return xtensa_encode_result_ok;
1240*d2201f2fSdrahn }
1241*d2201f2fSdrahn 
1242*d2201f2fSdrahn static const uint32 mip32const_table[] = {
1243*d2201f2fSdrahn   32,
1244*d2201f2fSdrahn   31,
1245*d2201f2fSdrahn   30,
1246*d2201f2fSdrahn   29,
1247*d2201f2fSdrahn   28,
1248*d2201f2fSdrahn   27,
1249*d2201f2fSdrahn   26,
1250*d2201f2fSdrahn   25,
1251*d2201f2fSdrahn   24,
1252*d2201f2fSdrahn   23,
1253*d2201f2fSdrahn   22,
1254*d2201f2fSdrahn   21,
1255*d2201f2fSdrahn   20,
1256*d2201f2fSdrahn   19,
1257*d2201f2fSdrahn   18,
1258*d2201f2fSdrahn   17,
1259*d2201f2fSdrahn   16,
1260*d2201f2fSdrahn   15,
1261*d2201f2fSdrahn   14,
1262*d2201f2fSdrahn   13,
1263*d2201f2fSdrahn   12,
1264*d2201f2fSdrahn   11,
1265*d2201f2fSdrahn   10,
1266*d2201f2fSdrahn   9,
1267*d2201f2fSdrahn   8,
1268*d2201f2fSdrahn   7,
1269*d2201f2fSdrahn   6,
1270*d2201f2fSdrahn   5,
1271*d2201f2fSdrahn   4,
1272*d2201f2fSdrahn   3,
1273*d2201f2fSdrahn   2,
1274*d2201f2fSdrahn   1
1275*d2201f2fSdrahn };
1276*d2201f2fSdrahn 
1277*d2201f2fSdrahn uint32
decode_msalp32(uint32 val)1278*d2201f2fSdrahn decode_msalp32 (uint32 val)
1279*d2201f2fSdrahn {
1280*d2201f2fSdrahn   val = mip32const_table[val];
1281*d2201f2fSdrahn   return val;
1282*d2201f2fSdrahn }
1283*d2201f2fSdrahn 
1284*d2201f2fSdrahn xtensa_encode_result
encode_msalp32(uint32 * valp)1285*d2201f2fSdrahn encode_msalp32 (uint32 *valp)
1286*d2201f2fSdrahn {
1287*d2201f2fSdrahn   uint32 val = *valp;
1288*d2201f2fSdrahn   unsigned i;
1289*d2201f2fSdrahn   for (i = 0; i < (1 << 5); i += 1)
1290*d2201f2fSdrahn     if (mip32const_table[i] == val) goto found;
1291*d2201f2fSdrahn   return xtensa_encode_result_not_in_table;
1292*d2201f2fSdrahn  found:
1293*d2201f2fSdrahn   val = i;
1294*d2201f2fSdrahn   *valp = val;
1295*d2201f2fSdrahn   return xtensa_encode_result_ok;
1296*d2201f2fSdrahn }
1297*d2201f2fSdrahn 
1298*d2201f2fSdrahn uint32
decode_bbi4(uint32 val)1299*d2201f2fSdrahn decode_bbi4 (uint32 val)
1300*d2201f2fSdrahn {
1301*d2201f2fSdrahn   return val;
1302*d2201f2fSdrahn }
1303*d2201f2fSdrahn 
1304*d2201f2fSdrahn xtensa_encode_result
encode_bbi4(uint32 * valp)1305*d2201f2fSdrahn encode_bbi4 (uint32 *valp)
1306*d2201f2fSdrahn {
1307*d2201f2fSdrahn   uint32 val = *valp;
1308*d2201f2fSdrahn   if ((val >> 1) != 0)
1309*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1310*d2201f2fSdrahn   *valp = val;
1311*d2201f2fSdrahn   return xtensa_encode_result_ok;
1312*d2201f2fSdrahn }
1313*d2201f2fSdrahn 
1314*d2201f2fSdrahn static const uint32 i4p1const_table[] = {
1315*d2201f2fSdrahn   1,
1316*d2201f2fSdrahn   2,
1317*d2201f2fSdrahn   3,
1318*d2201f2fSdrahn   4,
1319*d2201f2fSdrahn   5,
1320*d2201f2fSdrahn   6,
1321*d2201f2fSdrahn   7,
1322*d2201f2fSdrahn   8,
1323*d2201f2fSdrahn   9,
1324*d2201f2fSdrahn   10,
1325*d2201f2fSdrahn   11,
1326*d2201f2fSdrahn   12,
1327*d2201f2fSdrahn   13,
1328*d2201f2fSdrahn   14,
1329*d2201f2fSdrahn   15,
1330*d2201f2fSdrahn   16
1331*d2201f2fSdrahn };
1332*d2201f2fSdrahn 
1333*d2201f2fSdrahn uint32
decode_op2p1(uint32 val)1334*d2201f2fSdrahn decode_op2p1 (uint32 val)
1335*d2201f2fSdrahn {
1336*d2201f2fSdrahn   val = i4p1const_table[val];
1337*d2201f2fSdrahn   return val;
1338*d2201f2fSdrahn }
1339*d2201f2fSdrahn 
1340*d2201f2fSdrahn xtensa_encode_result
encode_op2p1(uint32 * valp)1341*d2201f2fSdrahn encode_op2p1 (uint32 *valp)
1342*d2201f2fSdrahn {
1343*d2201f2fSdrahn   uint32 val = *valp;
1344*d2201f2fSdrahn   unsigned i;
1345*d2201f2fSdrahn   for (i = 0; i < (1 << 4); i += 1)
1346*d2201f2fSdrahn     if (i4p1const_table[i] == val) goto found;
1347*d2201f2fSdrahn   return xtensa_encode_result_not_in_table;
1348*d2201f2fSdrahn  found:
1349*d2201f2fSdrahn   val = i;
1350*d2201f2fSdrahn   *valp = val;
1351*d2201f2fSdrahn   return xtensa_encode_result_ok;
1352*d2201f2fSdrahn }
1353*d2201f2fSdrahn 
1354*d2201f2fSdrahn uint32
decode_soffsetx4(uint32 val)1355*d2201f2fSdrahn decode_soffsetx4 (uint32 val)
1356*d2201f2fSdrahn {
1357*d2201f2fSdrahn   val = (val ^ 0x20000) - 0x20000;
1358*d2201f2fSdrahn   val <<= 2;
1359*d2201f2fSdrahn   return val;
1360*d2201f2fSdrahn }
1361*d2201f2fSdrahn 
1362*d2201f2fSdrahn xtensa_encode_result
encode_soffsetx4(uint32 * valp)1363*d2201f2fSdrahn encode_soffsetx4 (uint32 *valp)
1364*d2201f2fSdrahn {
1365*d2201f2fSdrahn   uint32 val = *valp;
1366*d2201f2fSdrahn   if ((val & ((1 << 2) - 1)) != 0)
1367*d2201f2fSdrahn     return xtensa_encode_result_align;
1368*d2201f2fSdrahn   val = (signed int) val >> 2;
1369*d2201f2fSdrahn   if (((val + (1 << 17)) >> 18) != 0)
1370*d2201f2fSdrahn     {
1371*d2201f2fSdrahn       if ((signed int) val > 0)
1372*d2201f2fSdrahn         return xtensa_encode_result_too_high;
1373*d2201f2fSdrahn       else
1374*d2201f2fSdrahn         return xtensa_encode_result_too_low;
1375*d2201f2fSdrahn     }
1376*d2201f2fSdrahn   *valp = val;
1377*d2201f2fSdrahn   return xtensa_encode_result_ok;
1378*d2201f2fSdrahn }
1379*d2201f2fSdrahn 
1380*d2201f2fSdrahn uint32
decode_imm6lo(uint32 val)1381*d2201f2fSdrahn decode_imm6lo (uint32 val)
1382*d2201f2fSdrahn {
1383*d2201f2fSdrahn   return val;
1384*d2201f2fSdrahn }
1385*d2201f2fSdrahn 
1386*d2201f2fSdrahn xtensa_encode_result
encode_imm6lo(uint32 * valp)1387*d2201f2fSdrahn encode_imm6lo (uint32 *valp)
1388*d2201f2fSdrahn {
1389*d2201f2fSdrahn   uint32 val = *valp;
1390*d2201f2fSdrahn   if ((val >> 4) != 0)
1391*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1392*d2201f2fSdrahn   *valp = val;
1393*d2201f2fSdrahn   return xtensa_encode_result_ok;
1394*d2201f2fSdrahn }
1395*d2201f2fSdrahn 
1396*d2201f2fSdrahn uint32
decode_imm12(uint32 val)1397*d2201f2fSdrahn decode_imm12 (uint32 val)
1398*d2201f2fSdrahn {
1399*d2201f2fSdrahn   return val;
1400*d2201f2fSdrahn }
1401*d2201f2fSdrahn 
1402*d2201f2fSdrahn xtensa_encode_result
encode_imm12(uint32 * valp)1403*d2201f2fSdrahn encode_imm12 (uint32 *valp)
1404*d2201f2fSdrahn {
1405*d2201f2fSdrahn   uint32 val = *valp;
1406*d2201f2fSdrahn   if ((val >> 12) != 0)
1407*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1408*d2201f2fSdrahn   *valp = val;
1409*d2201f2fSdrahn   return xtensa_encode_result_ok;
1410*d2201f2fSdrahn }
1411*d2201f2fSdrahn 
1412*d2201f2fSdrahn static const uint32 b4const_table[] = {
1413*d2201f2fSdrahn   -1,
1414*d2201f2fSdrahn   1,
1415*d2201f2fSdrahn   2,
1416*d2201f2fSdrahn   3,
1417*d2201f2fSdrahn   4,
1418*d2201f2fSdrahn   5,
1419*d2201f2fSdrahn   6,
1420*d2201f2fSdrahn   7,
1421*d2201f2fSdrahn   8,
1422*d2201f2fSdrahn   10,
1423*d2201f2fSdrahn   12,
1424*d2201f2fSdrahn   16,
1425*d2201f2fSdrahn   32,
1426*d2201f2fSdrahn   64,
1427*d2201f2fSdrahn   128,
1428*d2201f2fSdrahn   256
1429*d2201f2fSdrahn };
1430*d2201f2fSdrahn 
1431*d2201f2fSdrahn uint32
decode_b4const(uint32 val)1432*d2201f2fSdrahn decode_b4const (uint32 val)
1433*d2201f2fSdrahn {
1434*d2201f2fSdrahn   val = b4const_table[val];
1435*d2201f2fSdrahn   return val;
1436*d2201f2fSdrahn }
1437*d2201f2fSdrahn 
1438*d2201f2fSdrahn xtensa_encode_result
encode_b4const(uint32 * valp)1439*d2201f2fSdrahn encode_b4const (uint32 *valp)
1440*d2201f2fSdrahn {
1441*d2201f2fSdrahn   uint32 val = *valp;
1442*d2201f2fSdrahn   unsigned i;
1443*d2201f2fSdrahn   for (i = 0; i < (1 << 4); i += 1)
1444*d2201f2fSdrahn     if (b4const_table[i] == val) goto found;
1445*d2201f2fSdrahn   return xtensa_encode_result_not_in_table;
1446*d2201f2fSdrahn  found:
1447*d2201f2fSdrahn   val = i;
1448*d2201f2fSdrahn   *valp = val;
1449*d2201f2fSdrahn   return xtensa_encode_result_ok;
1450*d2201f2fSdrahn }
1451*d2201f2fSdrahn 
1452*d2201f2fSdrahn uint32
decode_i(uint32 val)1453*d2201f2fSdrahn decode_i (uint32 val)
1454*d2201f2fSdrahn {
1455*d2201f2fSdrahn   return val;
1456*d2201f2fSdrahn }
1457*d2201f2fSdrahn 
1458*d2201f2fSdrahn xtensa_encode_result
encode_i(uint32 * valp)1459*d2201f2fSdrahn encode_i (uint32 *valp)
1460*d2201f2fSdrahn {
1461*d2201f2fSdrahn   uint32 val = *valp;
1462*d2201f2fSdrahn   if ((val >> 1) != 0)
1463*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1464*d2201f2fSdrahn   *valp = val;
1465*d2201f2fSdrahn   return xtensa_encode_result_ok;
1466*d2201f2fSdrahn }
1467*d2201f2fSdrahn 
1468*d2201f2fSdrahn uint32
decode_imm16(uint32 val)1469*d2201f2fSdrahn decode_imm16 (uint32 val)
1470*d2201f2fSdrahn {
1471*d2201f2fSdrahn   return val;
1472*d2201f2fSdrahn }
1473*d2201f2fSdrahn 
1474*d2201f2fSdrahn xtensa_encode_result
encode_imm16(uint32 * valp)1475*d2201f2fSdrahn encode_imm16 (uint32 *valp)
1476*d2201f2fSdrahn {
1477*d2201f2fSdrahn   uint32 val = *valp;
1478*d2201f2fSdrahn   if ((val >> 16) != 0)
1479*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1480*d2201f2fSdrahn   *valp = val;
1481*d2201f2fSdrahn   return xtensa_encode_result_ok;
1482*d2201f2fSdrahn }
1483*d2201f2fSdrahn 
1484*d2201f2fSdrahn uint32
decode_mn(uint32 val)1485*d2201f2fSdrahn decode_mn (uint32 val)
1486*d2201f2fSdrahn {
1487*d2201f2fSdrahn   return val;
1488*d2201f2fSdrahn }
1489*d2201f2fSdrahn 
1490*d2201f2fSdrahn xtensa_encode_result
encode_mn(uint32 * valp)1491*d2201f2fSdrahn encode_mn (uint32 *valp)
1492*d2201f2fSdrahn {
1493*d2201f2fSdrahn   uint32 val = *valp;
1494*d2201f2fSdrahn   if ((val >> 4) != 0)
1495*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1496*d2201f2fSdrahn   *valp = val;
1497*d2201f2fSdrahn   return xtensa_encode_result_ok;
1498*d2201f2fSdrahn }
1499*d2201f2fSdrahn 
1500*d2201f2fSdrahn uint32
decode_m(uint32 val)1501*d2201f2fSdrahn decode_m (uint32 val)
1502*d2201f2fSdrahn {
1503*d2201f2fSdrahn   return val;
1504*d2201f2fSdrahn }
1505*d2201f2fSdrahn 
1506*d2201f2fSdrahn xtensa_encode_result
encode_m(uint32 * valp)1507*d2201f2fSdrahn encode_m (uint32 *valp)
1508*d2201f2fSdrahn {
1509*d2201f2fSdrahn   uint32 val = *valp;
1510*d2201f2fSdrahn   if ((val >> 2) != 0)
1511*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1512*d2201f2fSdrahn   *valp = val;
1513*d2201f2fSdrahn   return xtensa_encode_result_ok;
1514*d2201f2fSdrahn }
1515*d2201f2fSdrahn 
1516*d2201f2fSdrahn uint32
decode_n(uint32 val)1517*d2201f2fSdrahn decode_n (uint32 val)
1518*d2201f2fSdrahn {
1519*d2201f2fSdrahn   return val;
1520*d2201f2fSdrahn }
1521*d2201f2fSdrahn 
1522*d2201f2fSdrahn xtensa_encode_result
encode_n(uint32 * valp)1523*d2201f2fSdrahn encode_n (uint32 *valp)
1524*d2201f2fSdrahn {
1525*d2201f2fSdrahn   uint32 val = *valp;
1526*d2201f2fSdrahn   if ((val >> 2) != 0)
1527*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1528*d2201f2fSdrahn   *valp = val;
1529*d2201f2fSdrahn   return xtensa_encode_result_ok;
1530*d2201f2fSdrahn }
1531*d2201f2fSdrahn 
1532*d2201f2fSdrahn uint32
decode_none(uint32 val)1533*d2201f2fSdrahn decode_none (uint32 val)
1534*d2201f2fSdrahn {
1535*d2201f2fSdrahn   return val;
1536*d2201f2fSdrahn }
1537*d2201f2fSdrahn 
1538*d2201f2fSdrahn xtensa_encode_result
encode_none(uint32 * valp)1539*d2201f2fSdrahn encode_none (uint32 *valp)
1540*d2201f2fSdrahn {
1541*d2201f2fSdrahn   uint32 val = *valp;
1542*d2201f2fSdrahn   if ((val >> 0) != 0)
1543*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1544*d2201f2fSdrahn   *valp = val;
1545*d2201f2fSdrahn   return xtensa_encode_result_ok;
1546*d2201f2fSdrahn }
1547*d2201f2fSdrahn 
1548*d2201f2fSdrahn uint32
decode_imm12b(uint32 val)1549*d2201f2fSdrahn decode_imm12b (uint32 val)
1550*d2201f2fSdrahn {
1551*d2201f2fSdrahn   return val;
1552*d2201f2fSdrahn }
1553*d2201f2fSdrahn 
1554*d2201f2fSdrahn xtensa_encode_result
encode_imm12b(uint32 * valp)1555*d2201f2fSdrahn encode_imm12b (uint32 *valp)
1556*d2201f2fSdrahn {
1557*d2201f2fSdrahn   uint32 val = *valp;
1558*d2201f2fSdrahn   if ((val >> 12) != 0)
1559*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1560*d2201f2fSdrahn   *valp = val;
1561*d2201f2fSdrahn   return xtensa_encode_result_ok;
1562*d2201f2fSdrahn }
1563*d2201f2fSdrahn 
1564*d2201f2fSdrahn uint32
decode_r(uint32 val)1565*d2201f2fSdrahn decode_r (uint32 val)
1566*d2201f2fSdrahn {
1567*d2201f2fSdrahn   return val;
1568*d2201f2fSdrahn }
1569*d2201f2fSdrahn 
1570*d2201f2fSdrahn xtensa_encode_result
encode_r(uint32 * valp)1571*d2201f2fSdrahn encode_r (uint32 *valp)
1572*d2201f2fSdrahn {
1573*d2201f2fSdrahn   uint32 val = *valp;
1574*d2201f2fSdrahn   if ((val >> 4) != 0)
1575*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1576*d2201f2fSdrahn   *valp = val;
1577*d2201f2fSdrahn   return xtensa_encode_result_ok;
1578*d2201f2fSdrahn }
1579*d2201f2fSdrahn 
1580*d2201f2fSdrahn uint32
decode_s(uint32 val)1581*d2201f2fSdrahn decode_s (uint32 val)
1582*d2201f2fSdrahn {
1583*d2201f2fSdrahn   return val;
1584*d2201f2fSdrahn }
1585*d2201f2fSdrahn 
1586*d2201f2fSdrahn xtensa_encode_result
encode_s(uint32 * valp)1587*d2201f2fSdrahn encode_s (uint32 *valp)
1588*d2201f2fSdrahn {
1589*d2201f2fSdrahn   uint32 val = *valp;
1590*d2201f2fSdrahn   if ((val >> 4) != 0)
1591*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1592*d2201f2fSdrahn   *valp = val;
1593*d2201f2fSdrahn   return xtensa_encode_result_ok;
1594*d2201f2fSdrahn }
1595*d2201f2fSdrahn 
1596*d2201f2fSdrahn uint32
decode_t(uint32 val)1597*d2201f2fSdrahn decode_t (uint32 val)
1598*d2201f2fSdrahn {
1599*d2201f2fSdrahn   return val;
1600*d2201f2fSdrahn }
1601*d2201f2fSdrahn 
1602*d2201f2fSdrahn xtensa_encode_result
encode_t(uint32 * valp)1603*d2201f2fSdrahn encode_t (uint32 *valp)
1604*d2201f2fSdrahn {
1605*d2201f2fSdrahn   uint32 val = *valp;
1606*d2201f2fSdrahn   if ((val >> 4) != 0)
1607*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1608*d2201f2fSdrahn   *valp = val;
1609*d2201f2fSdrahn   return xtensa_encode_result_ok;
1610*d2201f2fSdrahn }
1611*d2201f2fSdrahn 
1612*d2201f2fSdrahn uint32
decode_thi3(uint32 val)1613*d2201f2fSdrahn decode_thi3 (uint32 val)
1614*d2201f2fSdrahn {
1615*d2201f2fSdrahn   return val;
1616*d2201f2fSdrahn }
1617*d2201f2fSdrahn 
1618*d2201f2fSdrahn xtensa_encode_result
encode_thi3(uint32 * valp)1619*d2201f2fSdrahn encode_thi3 (uint32 *valp)
1620*d2201f2fSdrahn {
1621*d2201f2fSdrahn   uint32 val = *valp;
1622*d2201f2fSdrahn   if ((val >> 3) != 0)
1623*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1624*d2201f2fSdrahn   *valp = val;
1625*d2201f2fSdrahn   return xtensa_encode_result_ok;
1626*d2201f2fSdrahn }
1627*d2201f2fSdrahn 
1628*d2201f2fSdrahn uint32
decode_sae4(uint32 val)1629*d2201f2fSdrahn decode_sae4 (uint32 val)
1630*d2201f2fSdrahn {
1631*d2201f2fSdrahn   return val;
1632*d2201f2fSdrahn }
1633*d2201f2fSdrahn 
1634*d2201f2fSdrahn xtensa_encode_result
encode_sae4(uint32 * valp)1635*d2201f2fSdrahn encode_sae4 (uint32 *valp)
1636*d2201f2fSdrahn {
1637*d2201f2fSdrahn   uint32 val = *valp;
1638*d2201f2fSdrahn   if ((val >> 1) != 0)
1639*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1640*d2201f2fSdrahn   *valp = val;
1641*d2201f2fSdrahn   return xtensa_encode_result_ok;
1642*d2201f2fSdrahn }
1643*d2201f2fSdrahn 
1644*d2201f2fSdrahn uint32
decode_offset(uint32 val)1645*d2201f2fSdrahn decode_offset (uint32 val)
1646*d2201f2fSdrahn {
1647*d2201f2fSdrahn   return val;
1648*d2201f2fSdrahn }
1649*d2201f2fSdrahn 
1650*d2201f2fSdrahn xtensa_encode_result
encode_offset(uint32 * valp)1651*d2201f2fSdrahn encode_offset (uint32 *valp)
1652*d2201f2fSdrahn {
1653*d2201f2fSdrahn   uint32 val = *valp;
1654*d2201f2fSdrahn   if ((val >> 18) != 0)
1655*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1656*d2201f2fSdrahn   *valp = val;
1657*d2201f2fSdrahn   return xtensa_encode_result_ok;
1658*d2201f2fSdrahn }
1659*d2201f2fSdrahn 
1660*d2201f2fSdrahn uint32
decode_imm7hi(uint32 val)1661*d2201f2fSdrahn decode_imm7hi (uint32 val)
1662*d2201f2fSdrahn {
1663*d2201f2fSdrahn   return val;
1664*d2201f2fSdrahn }
1665*d2201f2fSdrahn 
1666*d2201f2fSdrahn xtensa_encode_result
encode_imm7hi(uint32 * valp)1667*d2201f2fSdrahn encode_imm7hi (uint32 *valp)
1668*d2201f2fSdrahn {
1669*d2201f2fSdrahn   uint32 val = *valp;
1670*d2201f2fSdrahn   if ((val >> 3) != 0)
1671*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1672*d2201f2fSdrahn   *valp = val;
1673*d2201f2fSdrahn   return xtensa_encode_result_ok;
1674*d2201f2fSdrahn }
1675*d2201f2fSdrahn 
1676*d2201f2fSdrahn uint32
decode_uimm4x16(uint32 val)1677*d2201f2fSdrahn decode_uimm4x16 (uint32 val)
1678*d2201f2fSdrahn {
1679*d2201f2fSdrahn   val <<= 4;
1680*d2201f2fSdrahn   return val;
1681*d2201f2fSdrahn }
1682*d2201f2fSdrahn 
1683*d2201f2fSdrahn xtensa_encode_result
encode_uimm4x16(uint32 * valp)1684*d2201f2fSdrahn encode_uimm4x16 (uint32 *valp)
1685*d2201f2fSdrahn {
1686*d2201f2fSdrahn   uint32 val = *valp;
1687*d2201f2fSdrahn   if ((val & ((1 << 4) - 1)) != 0)
1688*d2201f2fSdrahn     return xtensa_encode_result_align;
1689*d2201f2fSdrahn   val = (signed int) val >> 4;
1690*d2201f2fSdrahn   if ((val >> 4) != 0)
1691*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1692*d2201f2fSdrahn   *valp = val;
1693*d2201f2fSdrahn   return xtensa_encode_result_ok;
1694*d2201f2fSdrahn }
1695*d2201f2fSdrahn 
1696*d2201f2fSdrahn uint32
decode_simm12b(uint32 val)1697*d2201f2fSdrahn decode_simm12b (uint32 val)
1698*d2201f2fSdrahn {
1699*d2201f2fSdrahn   val = (val ^ 0x800) - 0x800;
1700*d2201f2fSdrahn   return val;
1701*d2201f2fSdrahn }
1702*d2201f2fSdrahn 
1703*d2201f2fSdrahn xtensa_encode_result
encode_simm12b(uint32 * valp)1704*d2201f2fSdrahn encode_simm12b (uint32 *valp)
1705*d2201f2fSdrahn {
1706*d2201f2fSdrahn   uint32 val = *valp;
1707*d2201f2fSdrahn   if (((val + (1 << 11)) >> 12) != 0)
1708*d2201f2fSdrahn     {
1709*d2201f2fSdrahn       if ((signed int) val > 0)
1710*d2201f2fSdrahn         return xtensa_encode_result_too_high;
1711*d2201f2fSdrahn       else
1712*d2201f2fSdrahn         return xtensa_encode_result_too_low;
1713*d2201f2fSdrahn     }
1714*d2201f2fSdrahn   *valp = val;
1715*d2201f2fSdrahn   return xtensa_encode_result_ok;
1716*d2201f2fSdrahn }
1717*d2201f2fSdrahn 
1718*d2201f2fSdrahn uint32
decode_lsi4x4(uint32 val)1719*d2201f2fSdrahn decode_lsi4x4 (uint32 val)
1720*d2201f2fSdrahn {
1721*d2201f2fSdrahn   val <<= 2;
1722*d2201f2fSdrahn   return val;
1723*d2201f2fSdrahn }
1724*d2201f2fSdrahn 
1725*d2201f2fSdrahn xtensa_encode_result
encode_lsi4x4(uint32 * valp)1726*d2201f2fSdrahn encode_lsi4x4 (uint32 *valp)
1727*d2201f2fSdrahn {
1728*d2201f2fSdrahn   uint32 val = *valp;
1729*d2201f2fSdrahn   if ((val & ((1 << 2) - 1)) != 0)
1730*d2201f2fSdrahn     return xtensa_encode_result_align;
1731*d2201f2fSdrahn   val = (signed int) val >> 2;
1732*d2201f2fSdrahn   if ((val >> 4) != 0)
1733*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1734*d2201f2fSdrahn   *valp = val;
1735*d2201f2fSdrahn   return xtensa_encode_result_ok;
1736*d2201f2fSdrahn }
1737*d2201f2fSdrahn 
1738*d2201f2fSdrahn uint32
decode_z(uint32 val)1739*d2201f2fSdrahn decode_z (uint32 val)
1740*d2201f2fSdrahn {
1741*d2201f2fSdrahn   return val;
1742*d2201f2fSdrahn }
1743*d2201f2fSdrahn 
1744*d2201f2fSdrahn xtensa_encode_result
encode_z(uint32 * valp)1745*d2201f2fSdrahn encode_z (uint32 *valp)
1746*d2201f2fSdrahn {
1747*d2201f2fSdrahn   uint32 val = *valp;
1748*d2201f2fSdrahn   if ((val >> 1) != 0)
1749*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1750*d2201f2fSdrahn   *valp = val;
1751*d2201f2fSdrahn   return xtensa_encode_result_ok;
1752*d2201f2fSdrahn }
1753*d2201f2fSdrahn 
1754*d2201f2fSdrahn uint32
decode_simm12(uint32 val)1755*d2201f2fSdrahn decode_simm12 (uint32 val)
1756*d2201f2fSdrahn {
1757*d2201f2fSdrahn   val = (val ^ 0x800) - 0x800;
1758*d2201f2fSdrahn   return val;
1759*d2201f2fSdrahn }
1760*d2201f2fSdrahn 
1761*d2201f2fSdrahn xtensa_encode_result
encode_simm12(uint32 * valp)1762*d2201f2fSdrahn encode_simm12 (uint32 *valp)
1763*d2201f2fSdrahn {
1764*d2201f2fSdrahn   uint32 val = *valp;
1765*d2201f2fSdrahn   if (((val + (1 << 11)) >> 12) != 0)
1766*d2201f2fSdrahn     {
1767*d2201f2fSdrahn       if ((signed int) val > 0)
1768*d2201f2fSdrahn         return xtensa_encode_result_too_high;
1769*d2201f2fSdrahn       else
1770*d2201f2fSdrahn         return xtensa_encode_result_too_low;
1771*d2201f2fSdrahn     }
1772*d2201f2fSdrahn   *valp = val;
1773*d2201f2fSdrahn   return xtensa_encode_result_ok;
1774*d2201f2fSdrahn }
1775*d2201f2fSdrahn 
1776*d2201f2fSdrahn uint32
decode_sr(uint32 val)1777*d2201f2fSdrahn decode_sr (uint32 val)
1778*d2201f2fSdrahn {
1779*d2201f2fSdrahn   return val;
1780*d2201f2fSdrahn }
1781*d2201f2fSdrahn 
1782*d2201f2fSdrahn xtensa_encode_result
encode_sr(uint32 * valp)1783*d2201f2fSdrahn encode_sr (uint32 *valp)
1784*d2201f2fSdrahn {
1785*d2201f2fSdrahn   uint32 val = *valp;
1786*d2201f2fSdrahn   if ((val >> 8) != 0)
1787*d2201f2fSdrahn     return xtensa_encode_result_too_high;
1788*d2201f2fSdrahn   *valp = val;
1789*d2201f2fSdrahn   return xtensa_encode_result_ok;
1790*d2201f2fSdrahn }
1791*d2201f2fSdrahn 
1792*d2201f2fSdrahn uint32
decode_nimm4x2(uint32 val)1793*d2201f2fSdrahn decode_nimm4x2 (uint32 val)
1794*d2201f2fSdrahn {
1795*d2201f2fSdrahn   val |= -1 << 4;
1796*d2201f2fSdrahn   val <<= 2;
1797*d2201f2fSdrahn   return val;
1798*d2201f2fSdrahn }
1799*d2201f2fSdrahn 
1800*d2201f2fSdrahn xtensa_encode_result
encode_nimm4x2(uint32 * valp)1801*d2201f2fSdrahn encode_nimm4x2 (uint32 *valp)
1802*d2201f2fSdrahn {
1803*d2201f2fSdrahn   uint32 val = *valp;
1804*d2201f2fSdrahn   if ((val & ((1 << 2) - 1)) != 0)
1805*d2201f2fSdrahn     return xtensa_encode_result_align;
1806*d2201f2fSdrahn   val = (signed int) val >> 2;
1807*d2201f2fSdrahn   if ((signed int) val >> 4 != -1)
1808*d2201f2fSdrahn     {
1809*d2201f2fSdrahn       if ((signed int) val >= 0)
1810*d2201f2fSdrahn         return xtensa_encode_result_too_high;
1811*d2201f2fSdrahn       else
1812*d2201f2fSdrahn         return xtensa_encode_result_too_low;
1813*d2201f2fSdrahn     }
1814*d2201f2fSdrahn   *valp = val;
1815*d2201f2fSdrahn   return xtensa_encode_result_ok;
1816*d2201f2fSdrahn }
1817*d2201f2fSdrahn 
1818*d2201f2fSdrahn 
1819*d2201f2fSdrahn 
1820*d2201f2fSdrahn uint32 do_reloc_l (uint32, uint32);
1821*d2201f2fSdrahn uint32 undo_reloc_l (uint32, uint32);
1822*d2201f2fSdrahn uint32 do_reloc_L (uint32, uint32);
1823*d2201f2fSdrahn uint32 undo_reloc_L (uint32, uint32);
1824*d2201f2fSdrahn uint32 do_reloc_r (uint32, uint32);
1825*d2201f2fSdrahn uint32 undo_reloc_r (uint32, uint32);
1826*d2201f2fSdrahn 
1827*d2201f2fSdrahn 
1828*d2201f2fSdrahn uint32
do_reloc_l(uint32 addr,uint32 pc)1829*d2201f2fSdrahn do_reloc_l (uint32 addr, uint32 pc)
1830*d2201f2fSdrahn {
1831*d2201f2fSdrahn   return addr - pc - 4;
1832*d2201f2fSdrahn }
1833*d2201f2fSdrahn 
1834*d2201f2fSdrahn uint32
undo_reloc_l(uint32 offset,uint32 pc)1835*d2201f2fSdrahn undo_reloc_l (uint32 offset, uint32 pc)
1836*d2201f2fSdrahn {
1837*d2201f2fSdrahn   return pc + offset + 4;
1838*d2201f2fSdrahn }
1839*d2201f2fSdrahn 
1840*d2201f2fSdrahn uint32
do_reloc_L(uint32 addr,uint32 pc)1841*d2201f2fSdrahn do_reloc_L (uint32 addr, uint32 pc)
1842*d2201f2fSdrahn {
1843*d2201f2fSdrahn   return addr - (pc & -4) - 4;
1844*d2201f2fSdrahn }
1845*d2201f2fSdrahn 
1846*d2201f2fSdrahn uint32
undo_reloc_L(uint32 offset,uint32 pc)1847*d2201f2fSdrahn undo_reloc_L (uint32 offset, uint32 pc)
1848*d2201f2fSdrahn {
1849*d2201f2fSdrahn   return (pc & -4) + offset + 4;
1850*d2201f2fSdrahn }
1851*d2201f2fSdrahn 
1852*d2201f2fSdrahn uint32
do_reloc_r(uint32 addr,uint32 pc)1853*d2201f2fSdrahn do_reloc_r (uint32 addr, uint32 pc)
1854*d2201f2fSdrahn {
1855*d2201f2fSdrahn   return addr - ((pc+3) & -4);
1856*d2201f2fSdrahn }
1857*d2201f2fSdrahn 
1858*d2201f2fSdrahn uint32
undo_reloc_r(uint32 offset,uint32 pc)1859*d2201f2fSdrahn undo_reloc_r (uint32 offset, uint32 pc)
1860*d2201f2fSdrahn {
1861*d2201f2fSdrahn   return ((pc+3) & -4) + offset;
1862*d2201f2fSdrahn }
1863*d2201f2fSdrahn 
1864*d2201f2fSdrahn static xtensa_operand_internal iib4const_operand = {
1865*d2201f2fSdrahn   "i",
1866*d2201f2fSdrahn   '<',
1867*d2201f2fSdrahn   0,
1868*d2201f2fSdrahn   get_r_field,
1869*d2201f2fSdrahn   set_r_field,
1870*d2201f2fSdrahn   encode_b4const,
1871*d2201f2fSdrahn   decode_b4const,
1872*d2201f2fSdrahn   0,
1873*d2201f2fSdrahn   0
1874*d2201f2fSdrahn };
1875*d2201f2fSdrahn 
1876*d2201f2fSdrahn static xtensa_operand_internal iiuimm8_operand = {
1877*d2201f2fSdrahn   "i",
1878*d2201f2fSdrahn   '<',
1879*d2201f2fSdrahn   0,
1880*d2201f2fSdrahn   get_imm8_field,
1881*d2201f2fSdrahn   set_imm8_field,
1882*d2201f2fSdrahn   encode_uimm8,
1883*d2201f2fSdrahn   decode_uimm8,
1884*d2201f2fSdrahn   0,
1885*d2201f2fSdrahn   0
1886*d2201f2fSdrahn };
1887*d2201f2fSdrahn 
1888*d2201f2fSdrahn static xtensa_operand_internal lisoffsetx4_operand = {
1889*d2201f2fSdrahn   "L",
1890*d2201f2fSdrahn   '<',
1891*d2201f2fSdrahn   1,
1892*d2201f2fSdrahn   get_offset_field,
1893*d2201f2fSdrahn   set_offset_field,
1894*d2201f2fSdrahn   encode_soffsetx4,
1895*d2201f2fSdrahn   decode_soffsetx4,
1896*d2201f2fSdrahn   do_reloc_L,
1897*d2201f2fSdrahn   undo_reloc_L,
1898*d2201f2fSdrahn };
1899*d2201f2fSdrahn 
1900*d2201f2fSdrahn static xtensa_operand_internal iisimm8x256_operand = {
1901*d2201f2fSdrahn   "i",
1902*d2201f2fSdrahn   '<',
1903*d2201f2fSdrahn   0,
1904*d2201f2fSdrahn   get_imm8_field,
1905*d2201f2fSdrahn   set_imm8_field,
1906*d2201f2fSdrahn   encode_simm8x256,
1907*d2201f2fSdrahn   decode_simm8x256,
1908*d2201f2fSdrahn   0,
1909*d2201f2fSdrahn   0
1910*d2201f2fSdrahn };
1911*d2201f2fSdrahn 
1912*d2201f2fSdrahn static xtensa_operand_internal lisimm12_operand = {
1913*d2201f2fSdrahn   "l",
1914*d2201f2fSdrahn   '<',
1915*d2201f2fSdrahn   1,
1916*d2201f2fSdrahn   get_imm12_field,
1917*d2201f2fSdrahn   set_imm12_field,
1918*d2201f2fSdrahn   encode_simm12,
1919*d2201f2fSdrahn   decode_simm12,
1920*d2201f2fSdrahn   do_reloc_l,
1921*d2201f2fSdrahn   undo_reloc_l,
1922*d2201f2fSdrahn };
1923*d2201f2fSdrahn 
1924*d2201f2fSdrahn static xtensa_operand_internal iiop2p1_operand = {
1925*d2201f2fSdrahn   "i",
1926*d2201f2fSdrahn   '<',
1927*d2201f2fSdrahn   0,
1928*d2201f2fSdrahn   get_op2_field,
1929*d2201f2fSdrahn   set_op2_field,
1930*d2201f2fSdrahn   encode_op2p1,
1931*d2201f2fSdrahn   decode_op2p1,
1932*d2201f2fSdrahn   0,
1933*d2201f2fSdrahn   0
1934*d2201f2fSdrahn };
1935*d2201f2fSdrahn 
1936*d2201f2fSdrahn static xtensa_operand_internal iisae_operand = {
1937*d2201f2fSdrahn   "i",
1938*d2201f2fSdrahn   '<',
1939*d2201f2fSdrahn   0,
1940*d2201f2fSdrahn   get_sae_field,
1941*d2201f2fSdrahn   set_sae_field,
1942*d2201f2fSdrahn   encode_sae,
1943*d2201f2fSdrahn   decode_sae,
1944*d2201f2fSdrahn   0,
1945*d2201f2fSdrahn   0
1946*d2201f2fSdrahn };
1947*d2201f2fSdrahn 
1948*d2201f2fSdrahn static xtensa_operand_internal iis_operand = {
1949*d2201f2fSdrahn   "i",
1950*d2201f2fSdrahn   '<',
1951*d2201f2fSdrahn   0,
1952*d2201f2fSdrahn   get_s_field,
1953*d2201f2fSdrahn   set_s_field,
1954*d2201f2fSdrahn   encode_s,
1955*d2201f2fSdrahn   decode_s,
1956*d2201f2fSdrahn   0,
1957*d2201f2fSdrahn   0
1958*d2201f2fSdrahn };
1959*d2201f2fSdrahn 
1960*d2201f2fSdrahn static xtensa_operand_internal iit_operand = {
1961*d2201f2fSdrahn   "i",
1962*d2201f2fSdrahn   '<',
1963*d2201f2fSdrahn   0,
1964*d2201f2fSdrahn   get_t_field,
1965*d2201f2fSdrahn   set_t_field,
1966*d2201f2fSdrahn   encode_t,
1967*d2201f2fSdrahn   decode_t,
1968*d2201f2fSdrahn   0,
1969*d2201f2fSdrahn   0
1970*d2201f2fSdrahn };
1971*d2201f2fSdrahn 
1972*d2201f2fSdrahn static xtensa_operand_internal iisimm12b_operand = {
1973*d2201f2fSdrahn   "i",
1974*d2201f2fSdrahn   '<',
1975*d2201f2fSdrahn   0,
1976*d2201f2fSdrahn   get_imm12b_field,
1977*d2201f2fSdrahn   set_imm12b_field,
1978*d2201f2fSdrahn   encode_simm12b,
1979*d2201f2fSdrahn   decode_simm12b,
1980*d2201f2fSdrahn   0,
1981*d2201f2fSdrahn   0
1982*d2201f2fSdrahn };
1983*d2201f2fSdrahn 
1984*d2201f2fSdrahn static xtensa_operand_internal iinimm4x2_operand = {
1985*d2201f2fSdrahn   "i",
1986*d2201f2fSdrahn   '<',
1987*d2201f2fSdrahn   0,
1988*d2201f2fSdrahn   get_imm4_field,
1989*d2201f2fSdrahn   set_imm4_field,
1990*d2201f2fSdrahn   encode_nimm4x2,
1991*d2201f2fSdrahn   decode_nimm4x2,
1992*d2201f2fSdrahn   0,
1993*d2201f2fSdrahn   0
1994*d2201f2fSdrahn };
1995*d2201f2fSdrahn 
1996*d2201f2fSdrahn static xtensa_operand_internal iiuimm4x16_operand = {
1997*d2201f2fSdrahn   "i",
1998*d2201f2fSdrahn   '<',
1999*d2201f2fSdrahn   0,
2000*d2201f2fSdrahn   get_op2_field,
2001*d2201f2fSdrahn   set_op2_field,
2002*d2201f2fSdrahn   encode_uimm4x16,
2003*d2201f2fSdrahn   decode_uimm4x16,
2004*d2201f2fSdrahn   0,
2005*d2201f2fSdrahn   0
2006*d2201f2fSdrahn };
2007*d2201f2fSdrahn 
2008*d2201f2fSdrahn static xtensa_operand_internal abs_operand = {
2009*d2201f2fSdrahn   "a",
2010*d2201f2fSdrahn   '=',
2011*d2201f2fSdrahn   0,
2012*d2201f2fSdrahn   get_s_field,
2013*d2201f2fSdrahn   set_s_field,
2014*d2201f2fSdrahn   encode_s,
2015*d2201f2fSdrahn   decode_s,
2016*d2201f2fSdrahn   0,
2017*d2201f2fSdrahn   0
2018*d2201f2fSdrahn };
2019*d2201f2fSdrahn 
2020*d2201f2fSdrahn static xtensa_operand_internal iisar_operand = {
2021*d2201f2fSdrahn   "i",
2022*d2201f2fSdrahn   '<',
2023*d2201f2fSdrahn   0,
2024*d2201f2fSdrahn   get_sar_field,
2025*d2201f2fSdrahn   set_sar_field,
2026*d2201f2fSdrahn   encode_sar,
2027*d2201f2fSdrahn   decode_sar,
2028*d2201f2fSdrahn   0,
2029*d2201f2fSdrahn   0
2030*d2201f2fSdrahn };
2031*d2201f2fSdrahn 
2032*d2201f2fSdrahn static xtensa_operand_internal abt_operand = {
2033*d2201f2fSdrahn   "a",
2034*d2201f2fSdrahn   '=',
2035*d2201f2fSdrahn   0,
2036*d2201f2fSdrahn   get_t_field,
2037*d2201f2fSdrahn   set_t_field,
2038*d2201f2fSdrahn   encode_t,
2039*d2201f2fSdrahn   decode_t,
2040*d2201f2fSdrahn   0,
2041*d2201f2fSdrahn   0
2042*d2201f2fSdrahn };
2043*d2201f2fSdrahn 
2044*d2201f2fSdrahn static xtensa_operand_internal iisas_operand = {
2045*d2201f2fSdrahn   "i",
2046*d2201f2fSdrahn   '<',
2047*d2201f2fSdrahn   0,
2048*d2201f2fSdrahn   get_sas_field,
2049*d2201f2fSdrahn   set_sas_field,
2050*d2201f2fSdrahn   encode_sas,
2051*d2201f2fSdrahn   decode_sas,
2052*d2201f2fSdrahn   0,
2053*d2201f2fSdrahn   0
2054*d2201f2fSdrahn };
2055*d2201f2fSdrahn 
2056*d2201f2fSdrahn static xtensa_operand_internal amr_operand = {
2057*d2201f2fSdrahn   "a",
2058*d2201f2fSdrahn   '=',
2059*d2201f2fSdrahn   0,
2060*d2201f2fSdrahn   get_r_field,
2061*d2201f2fSdrahn   set_r_field,
2062*d2201f2fSdrahn   encode_r,
2063*d2201f2fSdrahn   decode_r,
2064*d2201f2fSdrahn   0,
2065*d2201f2fSdrahn   0
2066*d2201f2fSdrahn };
2067*d2201f2fSdrahn 
2068*d2201f2fSdrahn static xtensa_operand_internal iib4constu_operand = {
2069*d2201f2fSdrahn   "i",
2070*d2201f2fSdrahn   '<',
2071*d2201f2fSdrahn   0,
2072*d2201f2fSdrahn   get_r_field,
2073*d2201f2fSdrahn   set_r_field,
2074*d2201f2fSdrahn   encode_b4constu,
2075*d2201f2fSdrahn   decode_b4constu,
2076*d2201f2fSdrahn   0,
2077*d2201f2fSdrahn   0
2078*d2201f2fSdrahn };
2079*d2201f2fSdrahn 
2080*d2201f2fSdrahn static xtensa_operand_internal iisr_operand = {
2081*d2201f2fSdrahn   "i",
2082*d2201f2fSdrahn   '<',
2083*d2201f2fSdrahn   0,
2084*d2201f2fSdrahn   get_sr_field,
2085*d2201f2fSdrahn   set_sr_field,
2086*d2201f2fSdrahn   encode_sr,
2087*d2201f2fSdrahn   decode_sr,
2088*d2201f2fSdrahn   0,
2089*d2201f2fSdrahn   0
2090*d2201f2fSdrahn };
2091*d2201f2fSdrahn 
2092*d2201f2fSdrahn static xtensa_operand_internal iibbi_operand = {
2093*d2201f2fSdrahn   "i",
2094*d2201f2fSdrahn   '<',
2095*d2201f2fSdrahn   0,
2096*d2201f2fSdrahn   get_bbi_field,
2097*d2201f2fSdrahn   set_bbi_field,
2098*d2201f2fSdrahn   encode_bbi,
2099*d2201f2fSdrahn   decode_bbi,
2100*d2201f2fSdrahn   0,
2101*d2201f2fSdrahn   0
2102*d2201f2fSdrahn };
2103*d2201f2fSdrahn 
2104*d2201f2fSdrahn static xtensa_operand_internal iiai4const_operand = {
2105*d2201f2fSdrahn   "i",
2106*d2201f2fSdrahn   '<',
2107*d2201f2fSdrahn   0,
2108*d2201f2fSdrahn   get_t_field,
2109*d2201f2fSdrahn   set_t_field,
2110*d2201f2fSdrahn   encode_ai4const,
2111*d2201f2fSdrahn   decode_ai4const,
2112*d2201f2fSdrahn   0,
2113*d2201f2fSdrahn   0
2114*d2201f2fSdrahn };
2115*d2201f2fSdrahn 
2116*d2201f2fSdrahn static xtensa_operand_internal iiuimm12x8_operand = {
2117*d2201f2fSdrahn   "i",
2118*d2201f2fSdrahn   '<',
2119*d2201f2fSdrahn   0,
2120*d2201f2fSdrahn   get_imm12_field,
2121*d2201f2fSdrahn   set_imm12_field,
2122*d2201f2fSdrahn   encode_uimm12x8,
2123*d2201f2fSdrahn   decode_uimm12x8,
2124*d2201f2fSdrahn   0,
2125*d2201f2fSdrahn   0
2126*d2201f2fSdrahn };
2127*d2201f2fSdrahn 
2128*d2201f2fSdrahn static xtensa_operand_internal riuimm16x4_operand = {
2129*d2201f2fSdrahn   "r",
2130*d2201f2fSdrahn   '<',
2131*d2201f2fSdrahn   1,
2132*d2201f2fSdrahn   get_imm16_field,
2133*d2201f2fSdrahn   set_imm16_field,
2134*d2201f2fSdrahn   encode_uimm16x4,
2135*d2201f2fSdrahn   decode_uimm16x4,
2136*d2201f2fSdrahn   do_reloc_r,
2137*d2201f2fSdrahn   undo_reloc_r,
2138*d2201f2fSdrahn };
2139*d2201f2fSdrahn 
2140*d2201f2fSdrahn static xtensa_operand_internal lisimm8_operand = {
2141*d2201f2fSdrahn   "l",
2142*d2201f2fSdrahn   '<',
2143*d2201f2fSdrahn   1,
2144*d2201f2fSdrahn   get_imm8_field,
2145*d2201f2fSdrahn   set_imm8_field,
2146*d2201f2fSdrahn   encode_simm8,
2147*d2201f2fSdrahn   decode_simm8,
2148*d2201f2fSdrahn   do_reloc_l,
2149*d2201f2fSdrahn   undo_reloc_l,
2150*d2201f2fSdrahn };
2151*d2201f2fSdrahn 
2152*d2201f2fSdrahn static xtensa_operand_internal iilsi4x4_operand = {
2153*d2201f2fSdrahn   "i",
2154*d2201f2fSdrahn   '<',
2155*d2201f2fSdrahn   0,
2156*d2201f2fSdrahn   get_r_field,
2157*d2201f2fSdrahn   set_r_field,
2158*d2201f2fSdrahn   encode_lsi4x4,
2159*d2201f2fSdrahn   decode_lsi4x4,
2160*d2201f2fSdrahn   0,
2161*d2201f2fSdrahn   0
2162*d2201f2fSdrahn };
2163*d2201f2fSdrahn 
2164*d2201f2fSdrahn static xtensa_operand_internal iiuimm8x2_operand = {
2165*d2201f2fSdrahn   "i",
2166*d2201f2fSdrahn   '<',
2167*d2201f2fSdrahn   0,
2168*d2201f2fSdrahn   get_imm8_field,
2169*d2201f2fSdrahn   set_imm8_field,
2170*d2201f2fSdrahn   encode_uimm8x2,
2171*d2201f2fSdrahn   decode_uimm8x2,
2172*d2201f2fSdrahn   0,
2173*d2201f2fSdrahn   0
2174*d2201f2fSdrahn };
2175*d2201f2fSdrahn 
2176*d2201f2fSdrahn static xtensa_operand_internal iisimm4_operand = {
2177*d2201f2fSdrahn   "i",
2178*d2201f2fSdrahn   '<',
2179*d2201f2fSdrahn   0,
2180*d2201f2fSdrahn   get_mn_field,
2181*d2201f2fSdrahn   set_mn_field,
2182*d2201f2fSdrahn   encode_simm4,
2183*d2201f2fSdrahn   decode_simm4,
2184*d2201f2fSdrahn   0,
2185*d2201f2fSdrahn   0
2186*d2201f2fSdrahn };
2187*d2201f2fSdrahn 
2188*d2201f2fSdrahn static xtensa_operand_internal iimsalp32_operand = {
2189*d2201f2fSdrahn   "i",
2190*d2201f2fSdrahn   '<',
2191*d2201f2fSdrahn   0,
2192*d2201f2fSdrahn   get_sal_field,
2193*d2201f2fSdrahn   set_sal_field,
2194*d2201f2fSdrahn   encode_msalp32,
2195*d2201f2fSdrahn   decode_msalp32,
2196*d2201f2fSdrahn   0,
2197*d2201f2fSdrahn   0
2198*d2201f2fSdrahn };
2199*d2201f2fSdrahn 
2200*d2201f2fSdrahn static xtensa_operand_internal liuimm6_operand = {
2201*d2201f2fSdrahn   "l",
2202*d2201f2fSdrahn   '<',
2203*d2201f2fSdrahn   1,
2204*d2201f2fSdrahn   get_imm6_field,
2205*d2201f2fSdrahn   set_imm6_field,
2206*d2201f2fSdrahn   encode_uimm6,
2207*d2201f2fSdrahn   decode_uimm6,
2208*d2201f2fSdrahn   do_reloc_l,
2209*d2201f2fSdrahn   undo_reloc_l,
2210*d2201f2fSdrahn };
2211*d2201f2fSdrahn 
2212*d2201f2fSdrahn static xtensa_operand_internal iiuimm8x4_operand = {
2213*d2201f2fSdrahn   "i",
2214*d2201f2fSdrahn   '<',
2215*d2201f2fSdrahn   0,
2216*d2201f2fSdrahn   get_imm8_field,
2217*d2201f2fSdrahn   set_imm8_field,
2218*d2201f2fSdrahn   encode_uimm8x4,
2219*d2201f2fSdrahn   decode_uimm8x4,
2220*d2201f2fSdrahn   0,
2221*d2201f2fSdrahn   0
2222*d2201f2fSdrahn };
2223*d2201f2fSdrahn 
2224*d2201f2fSdrahn static xtensa_operand_internal lisoffset_operand = {
2225*d2201f2fSdrahn   "l",
2226*d2201f2fSdrahn   '<',
2227*d2201f2fSdrahn   1,
2228*d2201f2fSdrahn   get_offset_field,
2229*d2201f2fSdrahn   set_offset_field,
2230*d2201f2fSdrahn   encode_soffset,
2231*d2201f2fSdrahn   decode_soffset,
2232*d2201f2fSdrahn   do_reloc_l,
2233*d2201f2fSdrahn   undo_reloc_l,
2234*d2201f2fSdrahn };
2235*d2201f2fSdrahn 
2236*d2201f2fSdrahn static xtensa_operand_internal iisimm7_operand = {
2237*d2201f2fSdrahn   "i",
2238*d2201f2fSdrahn   '<',
2239*d2201f2fSdrahn   0,
2240*d2201f2fSdrahn   get_imm7_field,
2241*d2201f2fSdrahn   set_imm7_field,
2242*d2201f2fSdrahn   encode_simm7,
2243*d2201f2fSdrahn   decode_simm7,
2244*d2201f2fSdrahn   0,
2245*d2201f2fSdrahn   0
2246*d2201f2fSdrahn };
2247*d2201f2fSdrahn 
2248*d2201f2fSdrahn static xtensa_operand_internal ais_operand = {
2249*d2201f2fSdrahn   "a",
2250*d2201f2fSdrahn   '<',
2251*d2201f2fSdrahn   0,
2252*d2201f2fSdrahn   get_s_field,
2253*d2201f2fSdrahn   set_s_field,
2254*d2201f2fSdrahn   encode_s,
2255*d2201f2fSdrahn   decode_s,
2256*d2201f2fSdrahn   0,
2257*d2201f2fSdrahn   0
2258*d2201f2fSdrahn };
2259*d2201f2fSdrahn 
2260*d2201f2fSdrahn static xtensa_operand_internal liuimm8_operand = {
2261*d2201f2fSdrahn   "l",
2262*d2201f2fSdrahn   '<',
2263*d2201f2fSdrahn   1,
2264*d2201f2fSdrahn   get_imm8_field,
2265*d2201f2fSdrahn   set_imm8_field,
2266*d2201f2fSdrahn   encode_uimm8,
2267*d2201f2fSdrahn   decode_uimm8,
2268*d2201f2fSdrahn   do_reloc_l,
2269*d2201f2fSdrahn   undo_reloc_l,
2270*d2201f2fSdrahn };
2271*d2201f2fSdrahn 
2272*d2201f2fSdrahn static xtensa_operand_internal ait_operand = {
2273*d2201f2fSdrahn   "a",
2274*d2201f2fSdrahn   '<',
2275*d2201f2fSdrahn   0,
2276*d2201f2fSdrahn   get_t_field,
2277*d2201f2fSdrahn   set_t_field,
2278*d2201f2fSdrahn   encode_t,
2279*d2201f2fSdrahn   decode_t,
2280*d2201f2fSdrahn   0,
2281*d2201f2fSdrahn   0
2282*d2201f2fSdrahn };
2283*d2201f2fSdrahn 
2284*d2201f2fSdrahn static xtensa_operand_internal iisimm8_operand = {
2285*d2201f2fSdrahn   "i",
2286*d2201f2fSdrahn   '<',
2287*d2201f2fSdrahn   0,
2288*d2201f2fSdrahn   get_imm8_field,
2289*d2201f2fSdrahn   set_imm8_field,
2290*d2201f2fSdrahn   encode_simm8,
2291*d2201f2fSdrahn   decode_simm8,
2292*d2201f2fSdrahn   0,
2293*d2201f2fSdrahn   0
2294*d2201f2fSdrahn };
2295*d2201f2fSdrahn 
2296*d2201f2fSdrahn static xtensa_operand_internal aor_operand = {
2297*d2201f2fSdrahn   "a",
2298*d2201f2fSdrahn   '>',
2299*d2201f2fSdrahn   0,
2300*d2201f2fSdrahn   get_r_field,
2301*d2201f2fSdrahn   set_r_field,
2302*d2201f2fSdrahn   encode_r,
2303*d2201f2fSdrahn   decode_r,
2304*d2201f2fSdrahn   0,
2305*d2201f2fSdrahn   0
2306*d2201f2fSdrahn };
2307*d2201f2fSdrahn 
2308*d2201f2fSdrahn static xtensa_operand_internal aos_operand = {
2309*d2201f2fSdrahn   "a",
2310*d2201f2fSdrahn   '>',
2311*d2201f2fSdrahn   0,
2312*d2201f2fSdrahn   get_s_field,
2313*d2201f2fSdrahn   set_s_field,
2314*d2201f2fSdrahn   encode_s,
2315*d2201f2fSdrahn   decode_s,
2316*d2201f2fSdrahn   0,
2317*d2201f2fSdrahn   0
2318*d2201f2fSdrahn };
2319*d2201f2fSdrahn 
2320*d2201f2fSdrahn static xtensa_operand_internal aot_operand = {
2321*d2201f2fSdrahn   "a",
2322*d2201f2fSdrahn   '>',
2323*d2201f2fSdrahn   0,
2324*d2201f2fSdrahn   get_t_field,
2325*d2201f2fSdrahn   set_t_field,
2326*d2201f2fSdrahn   encode_t,
2327*d2201f2fSdrahn   decode_t,
2328*d2201f2fSdrahn   0,
2329*d2201f2fSdrahn   0
2330*d2201f2fSdrahn };
2331*d2201f2fSdrahn 
2332*d2201f2fSdrahn static xtensa_iclass_internal nopn_iclass = {
2333*d2201f2fSdrahn   0,
2334*d2201f2fSdrahn   0
2335*d2201f2fSdrahn };
2336*d2201f2fSdrahn 
2337*d2201f2fSdrahn static xtensa_operand_internal *movi_operand_list[] = {
2338*d2201f2fSdrahn   &aot_operand,
2339*d2201f2fSdrahn   &iisimm12b_operand
2340*d2201f2fSdrahn };
2341*d2201f2fSdrahn 
2342*d2201f2fSdrahn static xtensa_iclass_internal movi_iclass = {
2343*d2201f2fSdrahn   2,
2344*d2201f2fSdrahn   &movi_operand_list[0]
2345*d2201f2fSdrahn };
2346*d2201f2fSdrahn 
2347*d2201f2fSdrahn static xtensa_operand_internal *bsi8u_operand_list[] = {
2348*d2201f2fSdrahn   &ais_operand,
2349*d2201f2fSdrahn   &iib4constu_operand,
2350*d2201f2fSdrahn   &lisimm8_operand
2351*d2201f2fSdrahn };
2352*d2201f2fSdrahn 
2353*d2201f2fSdrahn static xtensa_iclass_internal bsi8u_iclass = {
2354*d2201f2fSdrahn   3,
2355*d2201f2fSdrahn   &bsi8u_operand_list[0]
2356*d2201f2fSdrahn };
2357*d2201f2fSdrahn 
2358*d2201f2fSdrahn static xtensa_operand_internal *itlb_operand_list[] = {
2359*d2201f2fSdrahn   &ais_operand
2360*d2201f2fSdrahn };
2361*d2201f2fSdrahn 
2362*d2201f2fSdrahn static xtensa_iclass_internal itlb_iclass = {
2363*d2201f2fSdrahn   1,
2364*d2201f2fSdrahn   &itlb_operand_list[0]
2365*d2201f2fSdrahn };
2366*d2201f2fSdrahn 
2367*d2201f2fSdrahn static xtensa_operand_internal *shiftst_operand_list[] = {
2368*d2201f2fSdrahn   &aor_operand,
2369*d2201f2fSdrahn   &ais_operand,
2370*d2201f2fSdrahn   &ait_operand
2371*d2201f2fSdrahn };
2372*d2201f2fSdrahn 
2373*d2201f2fSdrahn static xtensa_iclass_internal shiftst_iclass = {
2374*d2201f2fSdrahn   3,
2375*d2201f2fSdrahn   &shiftst_operand_list[0]
2376*d2201f2fSdrahn };
2377*d2201f2fSdrahn 
2378*d2201f2fSdrahn static xtensa_operand_internal *l32r_operand_list[] = {
2379*d2201f2fSdrahn   &aot_operand,
2380*d2201f2fSdrahn   &riuimm16x4_operand
2381*d2201f2fSdrahn };
2382*d2201f2fSdrahn 
2383*d2201f2fSdrahn static xtensa_iclass_internal l32r_iclass = {
2384*d2201f2fSdrahn   2,
2385*d2201f2fSdrahn   &l32r_operand_list[0]
2386*d2201f2fSdrahn };
2387*d2201f2fSdrahn 
2388*d2201f2fSdrahn static xtensa_iclass_internal rfe_iclass = {
2389*d2201f2fSdrahn   0,
2390*d2201f2fSdrahn   0
2391*d2201f2fSdrahn };
2392*d2201f2fSdrahn 
2393*d2201f2fSdrahn static xtensa_operand_internal *wait_operand_list[] = {
2394*d2201f2fSdrahn   &iis_operand
2395*d2201f2fSdrahn };
2396*d2201f2fSdrahn 
2397*d2201f2fSdrahn static xtensa_iclass_internal wait_iclass = {
2398*d2201f2fSdrahn   1,
2399*d2201f2fSdrahn   &wait_operand_list[0]
2400*d2201f2fSdrahn };
2401*d2201f2fSdrahn 
2402*d2201f2fSdrahn static xtensa_operand_internal *rfi_operand_list[] = {
2403*d2201f2fSdrahn   &iis_operand
2404*d2201f2fSdrahn };
2405*d2201f2fSdrahn 
2406*d2201f2fSdrahn static xtensa_iclass_internal rfi_iclass = {
2407*d2201f2fSdrahn   1,
2408*d2201f2fSdrahn   &rfi_operand_list[0]
2409*d2201f2fSdrahn };
2410*d2201f2fSdrahn 
2411*d2201f2fSdrahn static xtensa_operand_internal *movz_operand_list[] = {
2412*d2201f2fSdrahn   &amr_operand,
2413*d2201f2fSdrahn   &ais_operand,
2414*d2201f2fSdrahn   &ait_operand
2415*d2201f2fSdrahn };
2416*d2201f2fSdrahn 
2417*d2201f2fSdrahn static xtensa_iclass_internal movz_iclass = {
2418*d2201f2fSdrahn   3,
2419*d2201f2fSdrahn   &movz_operand_list[0]
2420*d2201f2fSdrahn };
2421*d2201f2fSdrahn 
2422*d2201f2fSdrahn static xtensa_operand_internal *callx_operand_list[] = {
2423*d2201f2fSdrahn   &ais_operand
2424*d2201f2fSdrahn };
2425*d2201f2fSdrahn 
2426*d2201f2fSdrahn static xtensa_iclass_internal callx_iclass = {
2427*d2201f2fSdrahn   1,
2428*d2201f2fSdrahn   &callx_operand_list[0]
2429*d2201f2fSdrahn };
2430*d2201f2fSdrahn 
2431*d2201f2fSdrahn static xtensa_operand_internal *mov_n_operand_list[] = {
2432*d2201f2fSdrahn   &aot_operand,
2433*d2201f2fSdrahn   &ais_operand
2434*d2201f2fSdrahn };
2435*d2201f2fSdrahn 
2436*d2201f2fSdrahn static xtensa_iclass_internal mov_n_iclass = {
2437*d2201f2fSdrahn   2,
2438*d2201f2fSdrahn   &mov_n_operand_list[0]
2439*d2201f2fSdrahn };
2440*d2201f2fSdrahn 
2441*d2201f2fSdrahn static xtensa_operand_internal *loadi4_operand_list[] = {
2442*d2201f2fSdrahn   &aot_operand,
2443*d2201f2fSdrahn   &ais_operand,
2444*d2201f2fSdrahn   &iilsi4x4_operand
2445*d2201f2fSdrahn };
2446*d2201f2fSdrahn 
2447*d2201f2fSdrahn static xtensa_iclass_internal loadi4_iclass = {
2448*d2201f2fSdrahn   3,
2449*d2201f2fSdrahn   &loadi4_operand_list[0]
2450*d2201f2fSdrahn };
2451*d2201f2fSdrahn 
2452*d2201f2fSdrahn static xtensa_operand_internal *exti_operand_list[] = {
2453*d2201f2fSdrahn   &aor_operand,
2454*d2201f2fSdrahn   &ait_operand,
2455*d2201f2fSdrahn   &iisae_operand,
2456*d2201f2fSdrahn   &iiop2p1_operand
2457*d2201f2fSdrahn };
2458*d2201f2fSdrahn 
2459*d2201f2fSdrahn static xtensa_iclass_internal exti_iclass = {
2460*d2201f2fSdrahn   4,
2461*d2201f2fSdrahn   &exti_operand_list[0]
2462*d2201f2fSdrahn };
2463*d2201f2fSdrahn 
2464*d2201f2fSdrahn static xtensa_operand_internal *break_operand_list[] = {
2465*d2201f2fSdrahn   &iis_operand,
2466*d2201f2fSdrahn   &iit_operand
2467*d2201f2fSdrahn };
2468*d2201f2fSdrahn 
2469*d2201f2fSdrahn static xtensa_iclass_internal break_iclass = {
2470*d2201f2fSdrahn   2,
2471*d2201f2fSdrahn   &break_operand_list[0]
2472*d2201f2fSdrahn };
2473*d2201f2fSdrahn 
2474*d2201f2fSdrahn static xtensa_operand_internal *slli_operand_list[] = {
2475*d2201f2fSdrahn   &aor_operand,
2476*d2201f2fSdrahn   &ais_operand,
2477*d2201f2fSdrahn   &iimsalp32_operand
2478*d2201f2fSdrahn };
2479*d2201f2fSdrahn 
2480*d2201f2fSdrahn static xtensa_iclass_internal slli_iclass = {
2481*d2201f2fSdrahn   3,
2482*d2201f2fSdrahn   &slli_operand_list[0]
2483*d2201f2fSdrahn };
2484*d2201f2fSdrahn 
2485*d2201f2fSdrahn static xtensa_operand_internal *s16i_operand_list[] = {
2486*d2201f2fSdrahn   &ait_operand,
2487*d2201f2fSdrahn   &ais_operand,
2488*d2201f2fSdrahn   &iiuimm8x2_operand
2489*d2201f2fSdrahn };
2490*d2201f2fSdrahn 
2491*d2201f2fSdrahn static xtensa_iclass_internal s16i_iclass = {
2492*d2201f2fSdrahn   3,
2493*d2201f2fSdrahn   &s16i_operand_list[0]
2494*d2201f2fSdrahn };
2495*d2201f2fSdrahn 
2496*d2201f2fSdrahn static xtensa_operand_internal *call_operand_list[] = {
2497*d2201f2fSdrahn   &lisoffsetx4_operand
2498*d2201f2fSdrahn };
2499*d2201f2fSdrahn 
2500*d2201f2fSdrahn static xtensa_iclass_internal call_iclass = {
2501*d2201f2fSdrahn   1,
2502*d2201f2fSdrahn   &call_operand_list[0]
2503*d2201f2fSdrahn };
2504*d2201f2fSdrahn 
2505*d2201f2fSdrahn static xtensa_operand_internal *shifts_operand_list[] = {
2506*d2201f2fSdrahn   &aor_operand,
2507*d2201f2fSdrahn   &ais_operand
2508*d2201f2fSdrahn };
2509*d2201f2fSdrahn 
2510*d2201f2fSdrahn static xtensa_iclass_internal shifts_iclass = {
2511*d2201f2fSdrahn   2,
2512*d2201f2fSdrahn   &shifts_operand_list[0]
2513*d2201f2fSdrahn };
2514*d2201f2fSdrahn 
2515*d2201f2fSdrahn static xtensa_operand_internal *shiftt_operand_list[] = {
2516*d2201f2fSdrahn   &aor_operand,
2517*d2201f2fSdrahn   &ait_operand
2518*d2201f2fSdrahn };
2519*d2201f2fSdrahn 
2520*d2201f2fSdrahn static xtensa_iclass_internal shiftt_iclass = {
2521*d2201f2fSdrahn   2,
2522*d2201f2fSdrahn   &shiftt_operand_list[0]
2523*d2201f2fSdrahn };
2524*d2201f2fSdrahn 
2525*d2201f2fSdrahn static xtensa_operand_internal *rotw_operand_list[] = {
2526*d2201f2fSdrahn   &iisimm4_operand
2527*d2201f2fSdrahn };
2528*d2201f2fSdrahn 
2529*d2201f2fSdrahn static xtensa_iclass_internal rotw_iclass = {
2530*d2201f2fSdrahn   1,
2531*d2201f2fSdrahn   &rotw_operand_list[0]
2532*d2201f2fSdrahn };
2533*d2201f2fSdrahn 
2534*d2201f2fSdrahn static xtensa_operand_internal *addsub_operand_list[] = {
2535*d2201f2fSdrahn   &aor_operand,
2536*d2201f2fSdrahn   &ais_operand,
2537*d2201f2fSdrahn   &ait_operand
2538*d2201f2fSdrahn };
2539*d2201f2fSdrahn 
2540*d2201f2fSdrahn static xtensa_iclass_internal addsub_iclass = {
2541*d2201f2fSdrahn   3,
2542*d2201f2fSdrahn   &addsub_operand_list[0]
2543*d2201f2fSdrahn };
2544*d2201f2fSdrahn 
2545*d2201f2fSdrahn static xtensa_operand_internal *l8i_operand_list[] = {
2546*d2201f2fSdrahn   &aot_operand,
2547*d2201f2fSdrahn   &ais_operand,
2548*d2201f2fSdrahn   &iiuimm8_operand
2549*d2201f2fSdrahn };
2550*d2201f2fSdrahn 
2551*d2201f2fSdrahn static xtensa_iclass_internal l8i_iclass = {
2552*d2201f2fSdrahn   3,
2553*d2201f2fSdrahn   &l8i_operand_list[0]
2554*d2201f2fSdrahn };
2555*d2201f2fSdrahn 
2556*d2201f2fSdrahn static xtensa_operand_internal *sari_operand_list[] = {
2557*d2201f2fSdrahn   &iisas_operand
2558*d2201f2fSdrahn };
2559*d2201f2fSdrahn 
2560*d2201f2fSdrahn static xtensa_iclass_internal sari_iclass = {
2561*d2201f2fSdrahn   1,
2562*d2201f2fSdrahn   &sari_operand_list[0]
2563*d2201f2fSdrahn };
2564*d2201f2fSdrahn 
2565*d2201f2fSdrahn static xtensa_operand_internal *xsr_operand_list[] = {
2566*d2201f2fSdrahn   &abt_operand,
2567*d2201f2fSdrahn   &iisr_operand
2568*d2201f2fSdrahn };
2569*d2201f2fSdrahn 
2570*d2201f2fSdrahn static xtensa_iclass_internal xsr_iclass = {
2571*d2201f2fSdrahn   2,
2572*d2201f2fSdrahn   &xsr_operand_list[0]
2573*d2201f2fSdrahn };
2574*d2201f2fSdrahn 
2575*d2201f2fSdrahn static xtensa_operand_internal *rsil_operand_list[] = {
2576*d2201f2fSdrahn   &aot_operand,
2577*d2201f2fSdrahn   &iis_operand
2578*d2201f2fSdrahn };
2579*d2201f2fSdrahn 
2580*d2201f2fSdrahn static xtensa_iclass_internal rsil_iclass = {
2581*d2201f2fSdrahn   2,
2582*d2201f2fSdrahn   &rsil_operand_list[0]
2583*d2201f2fSdrahn };
2584*d2201f2fSdrahn 
2585*d2201f2fSdrahn static xtensa_operand_internal *bst8_operand_list[] = {
2586*d2201f2fSdrahn   &ais_operand,
2587*d2201f2fSdrahn   &ait_operand,
2588*d2201f2fSdrahn   &lisimm8_operand
2589*d2201f2fSdrahn };
2590*d2201f2fSdrahn 
2591*d2201f2fSdrahn static xtensa_iclass_internal bst8_iclass = {
2592*d2201f2fSdrahn   3,
2593*d2201f2fSdrahn   &bst8_operand_list[0]
2594*d2201f2fSdrahn };
2595*d2201f2fSdrahn 
2596*d2201f2fSdrahn static xtensa_operand_internal *addi_operand_list[] = {
2597*d2201f2fSdrahn   &aot_operand,
2598*d2201f2fSdrahn   &ais_operand,
2599*d2201f2fSdrahn   &iisimm8_operand
2600*d2201f2fSdrahn };
2601*d2201f2fSdrahn 
2602*d2201f2fSdrahn static xtensa_iclass_internal addi_iclass = {
2603*d2201f2fSdrahn   3,
2604*d2201f2fSdrahn   &addi_operand_list[0]
2605*d2201f2fSdrahn };
2606*d2201f2fSdrahn 
2607*d2201f2fSdrahn static xtensa_operand_internal *callx12_operand_list[] = {
2608*d2201f2fSdrahn   &ais_operand
2609*d2201f2fSdrahn };
2610*d2201f2fSdrahn 
2611*d2201f2fSdrahn static xtensa_iclass_internal callx12_iclass = {
2612*d2201f2fSdrahn   1,
2613*d2201f2fSdrahn   &callx12_operand_list[0]
2614*d2201f2fSdrahn };
2615*d2201f2fSdrahn 
2616*d2201f2fSdrahn static xtensa_operand_internal *bsi8_operand_list[] = {
2617*d2201f2fSdrahn   &ais_operand,
2618*d2201f2fSdrahn   &iib4const_operand,
2619*d2201f2fSdrahn   &lisimm8_operand
2620*d2201f2fSdrahn };
2621*d2201f2fSdrahn 
2622*d2201f2fSdrahn static xtensa_iclass_internal bsi8_iclass = {
2623*d2201f2fSdrahn   3,
2624*d2201f2fSdrahn   &bsi8_operand_list[0]
2625*d2201f2fSdrahn };
2626*d2201f2fSdrahn 
2627*d2201f2fSdrahn static xtensa_operand_internal *jumpx_operand_list[] = {
2628*d2201f2fSdrahn   &ais_operand
2629*d2201f2fSdrahn };
2630*d2201f2fSdrahn 
2631*d2201f2fSdrahn static xtensa_iclass_internal jumpx_iclass = {
2632*d2201f2fSdrahn   1,
2633*d2201f2fSdrahn   &jumpx_operand_list[0]
2634*d2201f2fSdrahn };
2635*d2201f2fSdrahn 
2636*d2201f2fSdrahn static xtensa_iclass_internal retn_iclass = {
2637*d2201f2fSdrahn   0,
2638*d2201f2fSdrahn   0
2639*d2201f2fSdrahn };
2640*d2201f2fSdrahn 
2641*d2201f2fSdrahn static xtensa_operand_internal *nsa_operand_list[] = {
2642*d2201f2fSdrahn   &aot_operand,
2643*d2201f2fSdrahn   &ais_operand
2644*d2201f2fSdrahn };
2645*d2201f2fSdrahn 
2646*d2201f2fSdrahn static xtensa_iclass_internal nsa_iclass = {
2647*d2201f2fSdrahn   2,
2648*d2201f2fSdrahn   &nsa_operand_list[0]
2649*d2201f2fSdrahn };
2650*d2201f2fSdrahn 
2651*d2201f2fSdrahn static xtensa_operand_internal *storei4_operand_list[] = {
2652*d2201f2fSdrahn   &ait_operand,
2653*d2201f2fSdrahn   &ais_operand,
2654*d2201f2fSdrahn   &iilsi4x4_operand
2655*d2201f2fSdrahn };
2656*d2201f2fSdrahn 
2657*d2201f2fSdrahn static xtensa_iclass_internal storei4_iclass = {
2658*d2201f2fSdrahn   3,
2659*d2201f2fSdrahn   &storei4_operand_list[0]
2660*d2201f2fSdrahn };
2661*d2201f2fSdrahn 
2662*d2201f2fSdrahn static xtensa_operand_internal *wtlb_operand_list[] = {
2663*d2201f2fSdrahn   &ait_operand,
2664*d2201f2fSdrahn   &ais_operand
2665*d2201f2fSdrahn };
2666*d2201f2fSdrahn 
2667*d2201f2fSdrahn static xtensa_iclass_internal wtlb_iclass = {
2668*d2201f2fSdrahn   2,
2669*d2201f2fSdrahn   &wtlb_operand_list[0]
2670*d2201f2fSdrahn };
2671*d2201f2fSdrahn 
2672*d2201f2fSdrahn static xtensa_operand_internal *dce_operand_list[] = {
2673*d2201f2fSdrahn   &ais_operand,
2674*d2201f2fSdrahn   &iiuimm4x16_operand
2675*d2201f2fSdrahn };
2676*d2201f2fSdrahn 
2677*d2201f2fSdrahn static xtensa_iclass_internal dce_iclass = {
2678*d2201f2fSdrahn   2,
2679*d2201f2fSdrahn   &dce_operand_list[0]
2680*d2201f2fSdrahn };
2681*d2201f2fSdrahn 
2682*d2201f2fSdrahn static xtensa_operand_internal *l16i_operand_list[] = {
2683*d2201f2fSdrahn   &aot_operand,
2684*d2201f2fSdrahn   &ais_operand,
2685*d2201f2fSdrahn   &iiuimm8x2_operand
2686*d2201f2fSdrahn };
2687*d2201f2fSdrahn 
2688*d2201f2fSdrahn static xtensa_iclass_internal l16i_iclass = {
2689*d2201f2fSdrahn   3,
2690*d2201f2fSdrahn   &l16i_operand_list[0]
2691*d2201f2fSdrahn };
2692*d2201f2fSdrahn 
2693*d2201f2fSdrahn static xtensa_operand_internal *callx4_operand_list[] = {
2694*d2201f2fSdrahn   &ais_operand
2695*d2201f2fSdrahn };
2696*d2201f2fSdrahn 
2697*d2201f2fSdrahn static xtensa_iclass_internal callx4_iclass = {
2698*d2201f2fSdrahn   1,
2699*d2201f2fSdrahn   &callx4_operand_list[0]
2700*d2201f2fSdrahn };
2701*d2201f2fSdrahn 
2702*d2201f2fSdrahn static xtensa_operand_internal *callx8_operand_list[] = {
2703*d2201f2fSdrahn   &ais_operand
2704*d2201f2fSdrahn };
2705*d2201f2fSdrahn 
2706*d2201f2fSdrahn static xtensa_iclass_internal callx8_iclass = {
2707*d2201f2fSdrahn   1,
2708*d2201f2fSdrahn   &callx8_operand_list[0]
2709*d2201f2fSdrahn };
2710*d2201f2fSdrahn 
2711*d2201f2fSdrahn static xtensa_operand_internal *movsp_operand_list[] = {
2712*d2201f2fSdrahn   &aot_operand,
2713*d2201f2fSdrahn   &ais_operand
2714*d2201f2fSdrahn };
2715*d2201f2fSdrahn 
2716*d2201f2fSdrahn static xtensa_iclass_internal movsp_iclass = {
2717*d2201f2fSdrahn   2,
2718*d2201f2fSdrahn   &movsp_operand_list[0]
2719*d2201f2fSdrahn };
2720*d2201f2fSdrahn 
2721*d2201f2fSdrahn static xtensa_operand_internal *wsr_operand_list[] = {
2722*d2201f2fSdrahn   &ait_operand,
2723*d2201f2fSdrahn   &iisr_operand
2724*d2201f2fSdrahn };
2725*d2201f2fSdrahn 
2726*d2201f2fSdrahn static xtensa_iclass_internal wsr_iclass = {
2727*d2201f2fSdrahn   2,
2728*d2201f2fSdrahn   &wsr_operand_list[0]
2729*d2201f2fSdrahn };
2730*d2201f2fSdrahn 
2731*d2201f2fSdrahn static xtensa_operand_internal *call12_operand_list[] = {
2732*d2201f2fSdrahn   &lisoffsetx4_operand
2733*d2201f2fSdrahn };
2734*d2201f2fSdrahn 
2735*d2201f2fSdrahn static xtensa_iclass_internal call12_iclass = {
2736*d2201f2fSdrahn   1,
2737*d2201f2fSdrahn   &call12_operand_list[0]
2738*d2201f2fSdrahn };
2739*d2201f2fSdrahn 
2740*d2201f2fSdrahn static xtensa_operand_internal *call4_operand_list[] = {
2741*d2201f2fSdrahn   &lisoffsetx4_operand
2742*d2201f2fSdrahn };
2743*d2201f2fSdrahn 
2744*d2201f2fSdrahn static xtensa_iclass_internal call4_iclass = {
2745*d2201f2fSdrahn   1,
2746*d2201f2fSdrahn   &call4_operand_list[0]
2747*d2201f2fSdrahn };
2748*d2201f2fSdrahn 
2749*d2201f2fSdrahn static xtensa_operand_internal *addmi_operand_list[] = {
2750*d2201f2fSdrahn   &aot_operand,
2751*d2201f2fSdrahn   &ais_operand,
2752*d2201f2fSdrahn   &iisimm8x256_operand
2753*d2201f2fSdrahn };
2754*d2201f2fSdrahn 
2755*d2201f2fSdrahn static xtensa_iclass_internal addmi_iclass = {
2756*d2201f2fSdrahn   3,
2757*d2201f2fSdrahn   &addmi_operand_list[0]
2758*d2201f2fSdrahn };
2759*d2201f2fSdrahn 
2760*d2201f2fSdrahn static xtensa_operand_internal *bit_operand_list[] = {
2761*d2201f2fSdrahn   &aor_operand,
2762*d2201f2fSdrahn   &ais_operand,
2763*d2201f2fSdrahn   &ait_operand
2764*d2201f2fSdrahn };
2765*d2201f2fSdrahn 
2766*d2201f2fSdrahn static xtensa_iclass_internal bit_iclass = {
2767*d2201f2fSdrahn   3,
2768*d2201f2fSdrahn   &bit_operand_list[0]
2769*d2201f2fSdrahn };
2770*d2201f2fSdrahn 
2771*d2201f2fSdrahn static xtensa_operand_internal *call8_operand_list[] = {
2772*d2201f2fSdrahn   &lisoffsetx4_operand
2773*d2201f2fSdrahn };
2774*d2201f2fSdrahn 
2775*d2201f2fSdrahn static xtensa_iclass_internal call8_iclass = {
2776*d2201f2fSdrahn   1,
2777*d2201f2fSdrahn   &call8_operand_list[0]
2778*d2201f2fSdrahn };
2779*d2201f2fSdrahn 
2780*d2201f2fSdrahn static xtensa_iclass_internal itlba_iclass = {
2781*d2201f2fSdrahn   0,
2782*d2201f2fSdrahn   0
2783*d2201f2fSdrahn };
2784*d2201f2fSdrahn 
2785*d2201f2fSdrahn static xtensa_operand_internal *break_n_operand_list[] = {
2786*d2201f2fSdrahn   &iis_operand
2787*d2201f2fSdrahn };
2788*d2201f2fSdrahn 
2789*d2201f2fSdrahn static xtensa_iclass_internal break_n_iclass = {
2790*d2201f2fSdrahn   1,
2791*d2201f2fSdrahn   &break_n_operand_list[0]
2792*d2201f2fSdrahn };
2793*d2201f2fSdrahn 
2794*d2201f2fSdrahn static xtensa_operand_internal *sar_operand_list[] = {
2795*d2201f2fSdrahn   &ais_operand
2796*d2201f2fSdrahn };
2797*d2201f2fSdrahn 
2798*d2201f2fSdrahn static xtensa_iclass_internal sar_iclass = {
2799*d2201f2fSdrahn   1,
2800*d2201f2fSdrahn   &sar_operand_list[0]
2801*d2201f2fSdrahn };
2802*d2201f2fSdrahn 
2803*d2201f2fSdrahn static xtensa_operand_internal *s32e_operand_list[] = {
2804*d2201f2fSdrahn   &ait_operand,
2805*d2201f2fSdrahn   &ais_operand,
2806*d2201f2fSdrahn   &iinimm4x2_operand
2807*d2201f2fSdrahn };
2808*d2201f2fSdrahn 
2809*d2201f2fSdrahn static xtensa_iclass_internal s32e_iclass = {
2810*d2201f2fSdrahn   3,
2811*d2201f2fSdrahn   &s32e_operand_list[0]
2812*d2201f2fSdrahn };
2813*d2201f2fSdrahn 
2814*d2201f2fSdrahn static xtensa_operand_internal *bz6_operand_list[] = {
2815*d2201f2fSdrahn   &ais_operand,
2816*d2201f2fSdrahn   &liuimm6_operand
2817*d2201f2fSdrahn };
2818*d2201f2fSdrahn 
2819*d2201f2fSdrahn static xtensa_iclass_internal bz6_iclass = {
2820*d2201f2fSdrahn   2,
2821*d2201f2fSdrahn   &bz6_operand_list[0]
2822*d2201f2fSdrahn };
2823*d2201f2fSdrahn 
2824*d2201f2fSdrahn static xtensa_operand_internal *loop_operand_list[] = {
2825*d2201f2fSdrahn   &ais_operand,
2826*d2201f2fSdrahn   &liuimm8_operand
2827*d2201f2fSdrahn };
2828*d2201f2fSdrahn 
2829*d2201f2fSdrahn static xtensa_iclass_internal loop_iclass = {
2830*d2201f2fSdrahn   2,
2831*d2201f2fSdrahn   &loop_operand_list[0]
2832*d2201f2fSdrahn };
2833*d2201f2fSdrahn 
2834*d2201f2fSdrahn static xtensa_operand_internal *rsr_operand_list[] = {
2835*d2201f2fSdrahn   &aot_operand,
2836*d2201f2fSdrahn   &iisr_operand
2837*d2201f2fSdrahn };
2838*d2201f2fSdrahn 
2839*d2201f2fSdrahn static xtensa_iclass_internal rsr_iclass = {
2840*d2201f2fSdrahn   2,
2841*d2201f2fSdrahn   &rsr_operand_list[0]
2842*d2201f2fSdrahn };
2843*d2201f2fSdrahn 
2844*d2201f2fSdrahn static xtensa_operand_internal *icache_operand_list[] = {
2845*d2201f2fSdrahn   &ais_operand,
2846*d2201f2fSdrahn   &iiuimm8x4_operand
2847*d2201f2fSdrahn };
2848*d2201f2fSdrahn 
2849*d2201f2fSdrahn static xtensa_iclass_internal icache_iclass = {
2850*d2201f2fSdrahn   2,
2851*d2201f2fSdrahn   &icache_operand_list[0]
2852*d2201f2fSdrahn };
2853*d2201f2fSdrahn 
2854*d2201f2fSdrahn static xtensa_operand_internal *s8i_operand_list[] = {
2855*d2201f2fSdrahn   &ait_operand,
2856*d2201f2fSdrahn   &ais_operand,
2857*d2201f2fSdrahn   &iiuimm8_operand
2858*d2201f2fSdrahn };
2859*d2201f2fSdrahn 
2860*d2201f2fSdrahn static xtensa_iclass_internal s8i_iclass = {
2861*d2201f2fSdrahn   3,
2862*d2201f2fSdrahn   &s8i_operand_list[0]
2863*d2201f2fSdrahn };
2864*d2201f2fSdrahn 
2865*d2201f2fSdrahn static xtensa_iclass_internal return_iclass = {
2866*d2201f2fSdrahn   0,
2867*d2201f2fSdrahn   0
2868*d2201f2fSdrahn };
2869*d2201f2fSdrahn 
2870*d2201f2fSdrahn static xtensa_operand_internal *dcache_operand_list[] = {
2871*d2201f2fSdrahn   &ais_operand,
2872*d2201f2fSdrahn   &iiuimm8x4_operand
2873*d2201f2fSdrahn };
2874*d2201f2fSdrahn 
2875*d2201f2fSdrahn static xtensa_iclass_internal dcache_iclass = {
2876*d2201f2fSdrahn   2,
2877*d2201f2fSdrahn   &dcache_operand_list[0]
2878*d2201f2fSdrahn };
2879*d2201f2fSdrahn 
2880*d2201f2fSdrahn static xtensa_operand_internal *s32i_operand_list[] = {
2881*d2201f2fSdrahn   &ait_operand,
2882*d2201f2fSdrahn   &ais_operand,
2883*d2201f2fSdrahn   &iiuimm8x4_operand
2884*d2201f2fSdrahn };
2885*d2201f2fSdrahn 
2886*d2201f2fSdrahn static xtensa_iclass_internal s32i_iclass = {
2887*d2201f2fSdrahn   3,
2888*d2201f2fSdrahn   &s32i_operand_list[0]
2889*d2201f2fSdrahn };
2890*d2201f2fSdrahn 
2891*d2201f2fSdrahn static xtensa_operand_internal *jump_operand_list[] = {
2892*d2201f2fSdrahn   &lisoffset_operand
2893*d2201f2fSdrahn };
2894*d2201f2fSdrahn 
2895*d2201f2fSdrahn static xtensa_iclass_internal jump_iclass = {
2896*d2201f2fSdrahn   1,
2897*d2201f2fSdrahn   &jump_operand_list[0]
2898*d2201f2fSdrahn };
2899*d2201f2fSdrahn 
2900*d2201f2fSdrahn static xtensa_operand_internal *addi_n_operand_list[] = {
2901*d2201f2fSdrahn   &aor_operand,
2902*d2201f2fSdrahn   &ais_operand,
2903*d2201f2fSdrahn   &iiai4const_operand
2904*d2201f2fSdrahn };
2905*d2201f2fSdrahn 
2906*d2201f2fSdrahn static xtensa_iclass_internal addi_n_iclass = {
2907*d2201f2fSdrahn   3,
2908*d2201f2fSdrahn   &addi_n_operand_list[0]
2909*d2201f2fSdrahn };
2910*d2201f2fSdrahn 
2911*d2201f2fSdrahn static xtensa_iclass_internal sync_iclass = {
2912*d2201f2fSdrahn   0,
2913*d2201f2fSdrahn   0
2914*d2201f2fSdrahn };
2915*d2201f2fSdrahn 
2916*d2201f2fSdrahn static xtensa_operand_internal *neg_operand_list[] = {
2917*d2201f2fSdrahn   &aor_operand,
2918*d2201f2fSdrahn   &ait_operand
2919*d2201f2fSdrahn };
2920*d2201f2fSdrahn 
2921*d2201f2fSdrahn static xtensa_iclass_internal neg_iclass = {
2922*d2201f2fSdrahn   2,
2923*d2201f2fSdrahn   &neg_operand_list[0]
2924*d2201f2fSdrahn };
2925*d2201f2fSdrahn 
2926*d2201f2fSdrahn static xtensa_iclass_internal syscall_iclass = {
2927*d2201f2fSdrahn   0,
2928*d2201f2fSdrahn   0
2929*d2201f2fSdrahn };
2930*d2201f2fSdrahn 
2931*d2201f2fSdrahn static xtensa_operand_internal *bsz12_operand_list[] = {
2932*d2201f2fSdrahn   &ais_operand,
2933*d2201f2fSdrahn   &lisimm12_operand
2934*d2201f2fSdrahn };
2935*d2201f2fSdrahn 
2936*d2201f2fSdrahn static xtensa_iclass_internal bsz12_iclass = {
2937*d2201f2fSdrahn   2,
2938*d2201f2fSdrahn   &bsz12_operand_list[0]
2939*d2201f2fSdrahn };
2940*d2201f2fSdrahn 
2941*d2201f2fSdrahn static xtensa_iclass_internal excw_iclass = {
2942*d2201f2fSdrahn   0,
2943*d2201f2fSdrahn   0
2944*d2201f2fSdrahn };
2945*d2201f2fSdrahn 
2946*d2201f2fSdrahn static xtensa_operand_internal *movi_n_operand_list[] = {
2947*d2201f2fSdrahn   &aos_operand,
2948*d2201f2fSdrahn   &iisimm7_operand
2949*d2201f2fSdrahn };
2950*d2201f2fSdrahn 
2951*d2201f2fSdrahn static xtensa_iclass_internal movi_n_iclass = {
2952*d2201f2fSdrahn   2,
2953*d2201f2fSdrahn   &movi_n_operand_list[0]
2954*d2201f2fSdrahn };
2955*d2201f2fSdrahn 
2956*d2201f2fSdrahn static xtensa_operand_internal *rtlb_operand_list[] = {
2957*d2201f2fSdrahn   &aot_operand,
2958*d2201f2fSdrahn   &ais_operand
2959*d2201f2fSdrahn };
2960*d2201f2fSdrahn 
2961*d2201f2fSdrahn static xtensa_iclass_internal rtlb_iclass = {
2962*d2201f2fSdrahn   2,
2963*d2201f2fSdrahn   &rtlb_operand_list[0]
2964*d2201f2fSdrahn };
2965*d2201f2fSdrahn 
2966*d2201f2fSdrahn static xtensa_operand_internal *actl_operand_list[] = {
2967*d2201f2fSdrahn   &aot_operand,
2968*d2201f2fSdrahn   &ais_operand
2969*d2201f2fSdrahn };
2970*d2201f2fSdrahn 
2971*d2201f2fSdrahn static xtensa_iclass_internal actl_iclass = {
2972*d2201f2fSdrahn   2,
2973*d2201f2fSdrahn   &actl_operand_list[0]
2974*d2201f2fSdrahn };
2975*d2201f2fSdrahn 
2976*d2201f2fSdrahn static xtensa_operand_internal *srli_operand_list[] = {
2977*d2201f2fSdrahn   &aor_operand,
2978*d2201f2fSdrahn   &ait_operand,
2979*d2201f2fSdrahn   &iis_operand
2980*d2201f2fSdrahn };
2981*d2201f2fSdrahn 
2982*d2201f2fSdrahn static xtensa_iclass_internal srli_iclass = {
2983*d2201f2fSdrahn   3,
2984*d2201f2fSdrahn   &srli_operand_list[0]
2985*d2201f2fSdrahn };
2986*d2201f2fSdrahn 
2987*d2201f2fSdrahn static xtensa_operand_internal *bsi8b_operand_list[] = {
2988*d2201f2fSdrahn   &ais_operand,
2989*d2201f2fSdrahn   &iibbi_operand,
2990*d2201f2fSdrahn   &lisimm8_operand
2991*d2201f2fSdrahn };
2992*d2201f2fSdrahn 
2993*d2201f2fSdrahn static xtensa_iclass_internal bsi8b_iclass = {
2994*d2201f2fSdrahn   3,
2995*d2201f2fSdrahn   &bsi8b_operand_list[0]
2996*d2201f2fSdrahn };
2997*d2201f2fSdrahn 
2998*d2201f2fSdrahn static xtensa_operand_internal *acts_operand_list[] = {
2999*d2201f2fSdrahn   &ait_operand,
3000*d2201f2fSdrahn   &ais_operand
3001*d2201f2fSdrahn };
3002*d2201f2fSdrahn 
3003*d2201f2fSdrahn static xtensa_iclass_internal acts_iclass = {
3004*d2201f2fSdrahn   2,
3005*d2201f2fSdrahn   &acts_operand_list[0]
3006*d2201f2fSdrahn };
3007*d2201f2fSdrahn 
3008*d2201f2fSdrahn static xtensa_operand_internal *add_n_operand_list[] = {
3009*d2201f2fSdrahn   &aor_operand,
3010*d2201f2fSdrahn   &ais_operand,
3011*d2201f2fSdrahn   &ait_operand
3012*d2201f2fSdrahn };
3013*d2201f2fSdrahn 
3014*d2201f2fSdrahn static xtensa_iclass_internal add_n_iclass = {
3015*d2201f2fSdrahn   3,
3016*d2201f2fSdrahn   &add_n_operand_list[0]
3017*d2201f2fSdrahn };
3018*d2201f2fSdrahn 
3019*d2201f2fSdrahn static xtensa_operand_internal *srai_operand_list[] = {
3020*d2201f2fSdrahn   &aor_operand,
3021*d2201f2fSdrahn   &ait_operand,
3022*d2201f2fSdrahn   &iisar_operand
3023*d2201f2fSdrahn };
3024*d2201f2fSdrahn 
3025*d2201f2fSdrahn static xtensa_iclass_internal srai_iclass = {
3026*d2201f2fSdrahn   3,
3027*d2201f2fSdrahn   &srai_operand_list[0]
3028*d2201f2fSdrahn };
3029*d2201f2fSdrahn 
3030*d2201f2fSdrahn static xtensa_operand_internal *entry_operand_list[] = {
3031*d2201f2fSdrahn   &abs_operand,
3032*d2201f2fSdrahn   &iiuimm12x8_operand
3033*d2201f2fSdrahn };
3034*d2201f2fSdrahn 
3035*d2201f2fSdrahn static xtensa_iclass_internal entry_iclass = {
3036*d2201f2fSdrahn   2,
3037*d2201f2fSdrahn   &entry_operand_list[0]
3038*d2201f2fSdrahn };
3039*d2201f2fSdrahn 
3040*d2201f2fSdrahn static xtensa_operand_internal *l32e_operand_list[] = {
3041*d2201f2fSdrahn   &aot_operand,
3042*d2201f2fSdrahn   &ais_operand,
3043*d2201f2fSdrahn   &iinimm4x2_operand
3044*d2201f2fSdrahn };
3045*d2201f2fSdrahn 
3046*d2201f2fSdrahn static xtensa_iclass_internal l32e_iclass = {
3047*d2201f2fSdrahn   3,
3048*d2201f2fSdrahn   &l32e_operand_list[0]
3049*d2201f2fSdrahn };
3050*d2201f2fSdrahn 
3051*d2201f2fSdrahn static xtensa_operand_internal *dpf_operand_list[] = {
3052*d2201f2fSdrahn   &ais_operand,
3053*d2201f2fSdrahn   &iiuimm8x4_operand
3054*d2201f2fSdrahn };
3055*d2201f2fSdrahn 
3056*d2201f2fSdrahn static xtensa_iclass_internal dpf_iclass = {
3057*d2201f2fSdrahn   2,
3058*d2201f2fSdrahn   &dpf_operand_list[0]
3059*d2201f2fSdrahn };
3060*d2201f2fSdrahn 
3061*d2201f2fSdrahn static xtensa_operand_internal *l32i_operand_list[] = {
3062*d2201f2fSdrahn   &aot_operand,
3063*d2201f2fSdrahn   &ais_operand,
3064*d2201f2fSdrahn   &iiuimm8x4_operand
3065*d2201f2fSdrahn };
3066*d2201f2fSdrahn 
3067*d2201f2fSdrahn static xtensa_iclass_internal l32i_iclass = {
3068*d2201f2fSdrahn   3,
3069*d2201f2fSdrahn   &l32i_operand_list[0]
3070*d2201f2fSdrahn };
3071*d2201f2fSdrahn 
3072*d2201f2fSdrahn static xtensa_insnbuf abs_template (void);
3073*d2201f2fSdrahn static xtensa_insnbuf add_template (void);
3074*d2201f2fSdrahn static xtensa_insnbuf add_n_template (void);
3075*d2201f2fSdrahn static xtensa_insnbuf addi_template (void);
3076*d2201f2fSdrahn static xtensa_insnbuf addi_n_template (void);
3077*d2201f2fSdrahn static xtensa_insnbuf addmi_template (void);
3078*d2201f2fSdrahn static xtensa_insnbuf addx2_template (void);
3079*d2201f2fSdrahn static xtensa_insnbuf addx4_template (void);
3080*d2201f2fSdrahn static xtensa_insnbuf addx8_template (void);
3081*d2201f2fSdrahn static xtensa_insnbuf and_template (void);
3082*d2201f2fSdrahn static xtensa_insnbuf ball_template (void);
3083*d2201f2fSdrahn static xtensa_insnbuf bany_template (void);
3084*d2201f2fSdrahn static xtensa_insnbuf bbc_template (void);
3085*d2201f2fSdrahn static xtensa_insnbuf bbci_template (void);
3086*d2201f2fSdrahn static xtensa_insnbuf bbs_template (void);
3087*d2201f2fSdrahn static xtensa_insnbuf bbsi_template (void);
3088*d2201f2fSdrahn static xtensa_insnbuf beq_template (void);
3089*d2201f2fSdrahn static xtensa_insnbuf beqi_template (void);
3090*d2201f2fSdrahn static xtensa_insnbuf beqz_template (void);
3091*d2201f2fSdrahn static xtensa_insnbuf beqz_n_template (void);
3092*d2201f2fSdrahn static xtensa_insnbuf bge_template (void);
3093*d2201f2fSdrahn static xtensa_insnbuf bgei_template (void);
3094*d2201f2fSdrahn static xtensa_insnbuf bgeu_template (void);
3095*d2201f2fSdrahn static xtensa_insnbuf bgeui_template (void);
3096*d2201f2fSdrahn static xtensa_insnbuf bgez_template (void);
3097*d2201f2fSdrahn static xtensa_insnbuf blt_template (void);
3098*d2201f2fSdrahn static xtensa_insnbuf blti_template (void);
3099*d2201f2fSdrahn static xtensa_insnbuf bltu_template (void);
3100*d2201f2fSdrahn static xtensa_insnbuf bltui_template (void);
3101*d2201f2fSdrahn static xtensa_insnbuf bltz_template (void);
3102*d2201f2fSdrahn static xtensa_insnbuf bnall_template (void);
3103*d2201f2fSdrahn static xtensa_insnbuf bne_template (void);
3104*d2201f2fSdrahn static xtensa_insnbuf bnei_template (void);
3105*d2201f2fSdrahn static xtensa_insnbuf bnez_template (void);
3106*d2201f2fSdrahn static xtensa_insnbuf bnez_n_template (void);
3107*d2201f2fSdrahn static xtensa_insnbuf bnone_template (void);
3108*d2201f2fSdrahn static xtensa_insnbuf break_template (void);
3109*d2201f2fSdrahn static xtensa_insnbuf break_n_template (void);
3110*d2201f2fSdrahn static xtensa_insnbuf call0_template (void);
3111*d2201f2fSdrahn static xtensa_insnbuf call12_template (void);
3112*d2201f2fSdrahn static xtensa_insnbuf call4_template (void);
3113*d2201f2fSdrahn static xtensa_insnbuf call8_template (void);
3114*d2201f2fSdrahn static xtensa_insnbuf callx0_template (void);
3115*d2201f2fSdrahn static xtensa_insnbuf callx12_template (void);
3116*d2201f2fSdrahn static xtensa_insnbuf callx4_template (void);
3117*d2201f2fSdrahn static xtensa_insnbuf callx8_template (void);
3118*d2201f2fSdrahn static xtensa_insnbuf dhi_template (void);
3119*d2201f2fSdrahn static xtensa_insnbuf dhwb_template (void);
3120*d2201f2fSdrahn static xtensa_insnbuf dhwbi_template (void);
3121*d2201f2fSdrahn static xtensa_insnbuf dii_template (void);
3122*d2201f2fSdrahn static xtensa_insnbuf diwb_template (void);
3123*d2201f2fSdrahn static xtensa_insnbuf diwbi_template (void);
3124*d2201f2fSdrahn static xtensa_insnbuf dpfr_template (void);
3125*d2201f2fSdrahn static xtensa_insnbuf dpfro_template (void);
3126*d2201f2fSdrahn static xtensa_insnbuf dpfw_template (void);
3127*d2201f2fSdrahn static xtensa_insnbuf dpfwo_template (void);
3128*d2201f2fSdrahn static xtensa_insnbuf dsync_template (void);
3129*d2201f2fSdrahn static xtensa_insnbuf entry_template (void);
3130*d2201f2fSdrahn static xtensa_insnbuf esync_template (void);
3131*d2201f2fSdrahn static xtensa_insnbuf excw_template (void);
3132*d2201f2fSdrahn static xtensa_insnbuf extui_template (void);
3133*d2201f2fSdrahn static xtensa_insnbuf idtlb_template (void);
3134*d2201f2fSdrahn static xtensa_insnbuf idtlba_template (void);
3135*d2201f2fSdrahn static xtensa_insnbuf ihi_template (void);
3136*d2201f2fSdrahn static xtensa_insnbuf iii_template (void);
3137*d2201f2fSdrahn static xtensa_insnbuf iitlb_template (void);
3138*d2201f2fSdrahn static xtensa_insnbuf iitlba_template (void);
3139*d2201f2fSdrahn static xtensa_insnbuf ipf_template (void);
3140*d2201f2fSdrahn static xtensa_insnbuf isync_template (void);
3141*d2201f2fSdrahn static xtensa_insnbuf j_template (void);
3142*d2201f2fSdrahn static xtensa_insnbuf jx_template (void);
3143*d2201f2fSdrahn static xtensa_insnbuf l16si_template (void);
3144*d2201f2fSdrahn static xtensa_insnbuf l16ui_template (void);
3145*d2201f2fSdrahn static xtensa_insnbuf l32e_template (void);
3146*d2201f2fSdrahn static xtensa_insnbuf l32i_template (void);
3147*d2201f2fSdrahn static xtensa_insnbuf l32i_n_template (void);
3148*d2201f2fSdrahn static xtensa_insnbuf l32r_template (void);
3149*d2201f2fSdrahn static xtensa_insnbuf l8ui_template (void);
3150*d2201f2fSdrahn static xtensa_insnbuf ldct_template (void);
3151*d2201f2fSdrahn static xtensa_insnbuf lict_template (void);
3152*d2201f2fSdrahn static xtensa_insnbuf licw_template (void);
3153*d2201f2fSdrahn static xtensa_insnbuf loop_template (void);
3154*d2201f2fSdrahn static xtensa_insnbuf loopgtz_template (void);
3155*d2201f2fSdrahn static xtensa_insnbuf loopnez_template (void);
3156*d2201f2fSdrahn static xtensa_insnbuf memw_template (void);
3157*d2201f2fSdrahn static xtensa_insnbuf mov_n_template (void);
3158*d2201f2fSdrahn static xtensa_insnbuf moveqz_template (void);
3159*d2201f2fSdrahn static xtensa_insnbuf movgez_template (void);
3160*d2201f2fSdrahn static xtensa_insnbuf movi_template (void);
3161*d2201f2fSdrahn static xtensa_insnbuf movi_n_template (void);
3162*d2201f2fSdrahn static xtensa_insnbuf movltz_template (void);
3163*d2201f2fSdrahn static xtensa_insnbuf movnez_template (void);
3164*d2201f2fSdrahn static xtensa_insnbuf movsp_template (void);
3165*d2201f2fSdrahn static xtensa_insnbuf neg_template (void);
3166*d2201f2fSdrahn static xtensa_insnbuf nop_n_template (void);
3167*d2201f2fSdrahn static xtensa_insnbuf nsa_template (void);
3168*d2201f2fSdrahn static xtensa_insnbuf nsau_template (void);
3169*d2201f2fSdrahn static xtensa_insnbuf or_template (void);
3170*d2201f2fSdrahn static xtensa_insnbuf pdtlb_template (void);
3171*d2201f2fSdrahn static xtensa_insnbuf pitlb_template (void);
3172*d2201f2fSdrahn static xtensa_insnbuf rdtlb0_template (void);
3173*d2201f2fSdrahn static xtensa_insnbuf rdtlb1_template (void);
3174*d2201f2fSdrahn static xtensa_insnbuf ret_template (void);
3175*d2201f2fSdrahn static xtensa_insnbuf ret_n_template (void);
3176*d2201f2fSdrahn static xtensa_insnbuf retw_template (void);
3177*d2201f2fSdrahn static xtensa_insnbuf retw_n_template (void);
3178*d2201f2fSdrahn static xtensa_insnbuf rfde_template (void);
3179*d2201f2fSdrahn static xtensa_insnbuf rfe_template (void);
3180*d2201f2fSdrahn static xtensa_insnbuf rfi_template (void);
3181*d2201f2fSdrahn static xtensa_insnbuf rfwo_template (void);
3182*d2201f2fSdrahn static xtensa_insnbuf rfwu_template (void);
3183*d2201f2fSdrahn static xtensa_insnbuf ritlb0_template (void);
3184*d2201f2fSdrahn static xtensa_insnbuf ritlb1_template (void);
3185*d2201f2fSdrahn static xtensa_insnbuf rotw_template (void);
3186*d2201f2fSdrahn static xtensa_insnbuf rsil_template (void);
3187*d2201f2fSdrahn static xtensa_insnbuf rsr_template (void);
3188*d2201f2fSdrahn static xtensa_insnbuf rsync_template (void);
3189*d2201f2fSdrahn static xtensa_insnbuf s16i_template (void);
3190*d2201f2fSdrahn static xtensa_insnbuf s32e_template (void);
3191*d2201f2fSdrahn static xtensa_insnbuf s32i_template (void);
3192*d2201f2fSdrahn static xtensa_insnbuf s32i_n_template (void);
3193*d2201f2fSdrahn static xtensa_insnbuf s8i_template (void);
3194*d2201f2fSdrahn static xtensa_insnbuf sdct_template (void);
3195*d2201f2fSdrahn static xtensa_insnbuf sict_template (void);
3196*d2201f2fSdrahn static xtensa_insnbuf sicw_template (void);
3197*d2201f2fSdrahn static xtensa_insnbuf simcall_template (void);
3198*d2201f2fSdrahn static xtensa_insnbuf sll_template (void);
3199*d2201f2fSdrahn static xtensa_insnbuf slli_template (void);
3200*d2201f2fSdrahn static xtensa_insnbuf sra_template (void);
3201*d2201f2fSdrahn static xtensa_insnbuf srai_template (void);
3202*d2201f2fSdrahn static xtensa_insnbuf src_template (void);
3203*d2201f2fSdrahn static xtensa_insnbuf srl_template (void);
3204*d2201f2fSdrahn static xtensa_insnbuf srli_template (void);
3205*d2201f2fSdrahn static xtensa_insnbuf ssa8b_template (void);
3206*d2201f2fSdrahn static xtensa_insnbuf ssa8l_template (void);
3207*d2201f2fSdrahn static xtensa_insnbuf ssai_template (void);
3208*d2201f2fSdrahn static xtensa_insnbuf ssl_template (void);
3209*d2201f2fSdrahn static xtensa_insnbuf ssr_template (void);
3210*d2201f2fSdrahn static xtensa_insnbuf sub_template (void);
3211*d2201f2fSdrahn static xtensa_insnbuf subx2_template (void);
3212*d2201f2fSdrahn static xtensa_insnbuf subx4_template (void);
3213*d2201f2fSdrahn static xtensa_insnbuf subx8_template (void);
3214*d2201f2fSdrahn static xtensa_insnbuf syscall_template (void);
3215*d2201f2fSdrahn static xtensa_insnbuf waiti_template (void);
3216*d2201f2fSdrahn static xtensa_insnbuf wdtlb_template (void);
3217*d2201f2fSdrahn static xtensa_insnbuf witlb_template (void);
3218*d2201f2fSdrahn static xtensa_insnbuf wsr_template (void);
3219*d2201f2fSdrahn static xtensa_insnbuf xor_template (void);
3220*d2201f2fSdrahn static xtensa_insnbuf xsr_template (void);
3221*d2201f2fSdrahn 
3222*d2201f2fSdrahn static xtensa_insnbuf
abs_template(void)3223*d2201f2fSdrahn abs_template (void)
3224*d2201f2fSdrahn {
3225*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00001006 };
3226*d2201f2fSdrahn   return &template[0];
3227*d2201f2fSdrahn }
3228*d2201f2fSdrahn 
3229*d2201f2fSdrahn static xtensa_insnbuf
add_template(void)3230*d2201f2fSdrahn add_template (void)
3231*d2201f2fSdrahn {
3232*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000008 };
3233*d2201f2fSdrahn   return &template[0];
3234*d2201f2fSdrahn }
3235*d2201f2fSdrahn 
3236*d2201f2fSdrahn static xtensa_insnbuf
add_n_template(void)3237*d2201f2fSdrahn add_n_template (void)
3238*d2201f2fSdrahn {
3239*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00a00000 };
3240*d2201f2fSdrahn   return &template[0];
3241*d2201f2fSdrahn }
3242*d2201f2fSdrahn 
3243*d2201f2fSdrahn static xtensa_insnbuf
addi_template(void)3244*d2201f2fSdrahn addi_template (void)
3245*d2201f2fSdrahn {
3246*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00200c00 };
3247*d2201f2fSdrahn   return &template[0];
3248*d2201f2fSdrahn }
3249*d2201f2fSdrahn 
3250*d2201f2fSdrahn static xtensa_insnbuf
addi_n_template(void)3251*d2201f2fSdrahn addi_n_template (void)
3252*d2201f2fSdrahn {
3253*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00b00000 };
3254*d2201f2fSdrahn   return &template[0];
3255*d2201f2fSdrahn }
3256*d2201f2fSdrahn 
3257*d2201f2fSdrahn static xtensa_insnbuf
addmi_template(void)3258*d2201f2fSdrahn addmi_template (void)
3259*d2201f2fSdrahn {
3260*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00200d00 };
3261*d2201f2fSdrahn   return &template[0];
3262*d2201f2fSdrahn }
3263*d2201f2fSdrahn 
3264*d2201f2fSdrahn static xtensa_insnbuf
addx2_template(void)3265*d2201f2fSdrahn addx2_template (void)
3266*d2201f2fSdrahn {
3267*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000009 };
3268*d2201f2fSdrahn   return &template[0];
3269*d2201f2fSdrahn }
3270*d2201f2fSdrahn 
3271*d2201f2fSdrahn static xtensa_insnbuf
addx4_template(void)3272*d2201f2fSdrahn addx4_template (void)
3273*d2201f2fSdrahn {
3274*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x0000000a };
3275*d2201f2fSdrahn   return &template[0];
3276*d2201f2fSdrahn }
3277*d2201f2fSdrahn 
3278*d2201f2fSdrahn static xtensa_insnbuf
addx8_template(void)3279*d2201f2fSdrahn addx8_template (void)
3280*d2201f2fSdrahn {
3281*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x0000000b };
3282*d2201f2fSdrahn   return &template[0];
3283*d2201f2fSdrahn }
3284*d2201f2fSdrahn 
3285*d2201f2fSdrahn static xtensa_insnbuf
and_template(void)3286*d2201f2fSdrahn and_template (void)
3287*d2201f2fSdrahn {
3288*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000001 };
3289*d2201f2fSdrahn   return &template[0];
3290*d2201f2fSdrahn }
3291*d2201f2fSdrahn 
3292*d2201f2fSdrahn static xtensa_insnbuf
ball_template(void)3293*d2201f2fSdrahn ball_template (void)
3294*d2201f2fSdrahn {
3295*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00700400 };
3296*d2201f2fSdrahn   return &template[0];
3297*d2201f2fSdrahn }
3298*d2201f2fSdrahn 
3299*d2201f2fSdrahn static xtensa_insnbuf
bany_template(void)3300*d2201f2fSdrahn bany_template (void)
3301*d2201f2fSdrahn {
3302*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00700800 };
3303*d2201f2fSdrahn   return &template[0];
3304*d2201f2fSdrahn }
3305*d2201f2fSdrahn 
3306*d2201f2fSdrahn static xtensa_insnbuf
bbc_template(void)3307*d2201f2fSdrahn bbc_template (void)
3308*d2201f2fSdrahn {
3309*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00700500 };
3310*d2201f2fSdrahn   return &template[0];
3311*d2201f2fSdrahn }
3312*d2201f2fSdrahn 
3313*d2201f2fSdrahn static xtensa_insnbuf
bbci_template(void)3314*d2201f2fSdrahn bbci_template (void)
3315*d2201f2fSdrahn {
3316*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00700600 };
3317*d2201f2fSdrahn   return &template[0];
3318*d2201f2fSdrahn }
3319*d2201f2fSdrahn 
3320*d2201f2fSdrahn static xtensa_insnbuf
bbs_template(void)3321*d2201f2fSdrahn bbs_template (void)
3322*d2201f2fSdrahn {
3323*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00700d00 };
3324*d2201f2fSdrahn   return &template[0];
3325*d2201f2fSdrahn }
3326*d2201f2fSdrahn 
3327*d2201f2fSdrahn static xtensa_insnbuf
bbsi_template(void)3328*d2201f2fSdrahn bbsi_template (void)
3329*d2201f2fSdrahn {
3330*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00700e00 };
3331*d2201f2fSdrahn   return &template[0];
3332*d2201f2fSdrahn }
3333*d2201f2fSdrahn 
3334*d2201f2fSdrahn static xtensa_insnbuf
beq_template(void)3335*d2201f2fSdrahn beq_template (void)
3336*d2201f2fSdrahn {
3337*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00700100 };
3338*d2201f2fSdrahn   return &template[0];
3339*d2201f2fSdrahn }
3340*d2201f2fSdrahn 
3341*d2201f2fSdrahn static xtensa_insnbuf
beqi_template(void)3342*d2201f2fSdrahn beqi_template (void)
3343*d2201f2fSdrahn {
3344*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00680000 };
3345*d2201f2fSdrahn   return &template[0];
3346*d2201f2fSdrahn }
3347*d2201f2fSdrahn 
3348*d2201f2fSdrahn static xtensa_insnbuf
beqz_template(void)3349*d2201f2fSdrahn beqz_template (void)
3350*d2201f2fSdrahn {
3351*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00640000 };
3352*d2201f2fSdrahn   return &template[0];
3353*d2201f2fSdrahn }
3354*d2201f2fSdrahn 
3355*d2201f2fSdrahn static xtensa_insnbuf
beqz_n_template(void)3356*d2201f2fSdrahn beqz_n_template (void)
3357*d2201f2fSdrahn {
3358*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00c80000 };
3359*d2201f2fSdrahn   return &template[0];
3360*d2201f2fSdrahn }
3361*d2201f2fSdrahn 
3362*d2201f2fSdrahn static xtensa_insnbuf
bge_template(void)3363*d2201f2fSdrahn bge_template (void)
3364*d2201f2fSdrahn {
3365*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00700a00 };
3366*d2201f2fSdrahn   return &template[0];
3367*d2201f2fSdrahn }
3368*d2201f2fSdrahn 
3369*d2201f2fSdrahn static xtensa_insnbuf
bgei_template(void)3370*d2201f2fSdrahn bgei_template (void)
3371*d2201f2fSdrahn {
3372*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x006b0000 };
3373*d2201f2fSdrahn   return &template[0];
3374*d2201f2fSdrahn }
3375*d2201f2fSdrahn 
3376*d2201f2fSdrahn static xtensa_insnbuf
bgeu_template(void)3377*d2201f2fSdrahn bgeu_template (void)
3378*d2201f2fSdrahn {
3379*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00700b00 };
3380*d2201f2fSdrahn   return &template[0];
3381*d2201f2fSdrahn }
3382*d2201f2fSdrahn 
3383*d2201f2fSdrahn static xtensa_insnbuf
bgeui_template(void)3384*d2201f2fSdrahn bgeui_template (void)
3385*d2201f2fSdrahn {
3386*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x006f0000 };
3387*d2201f2fSdrahn   return &template[0];
3388*d2201f2fSdrahn }
3389*d2201f2fSdrahn 
3390*d2201f2fSdrahn static xtensa_insnbuf
bgez_template(void)3391*d2201f2fSdrahn bgez_template (void)
3392*d2201f2fSdrahn {
3393*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00670000 };
3394*d2201f2fSdrahn   return &template[0];
3395*d2201f2fSdrahn }
3396*d2201f2fSdrahn 
3397*d2201f2fSdrahn static xtensa_insnbuf
blt_template(void)3398*d2201f2fSdrahn blt_template (void)
3399*d2201f2fSdrahn {
3400*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00700200 };
3401*d2201f2fSdrahn   return &template[0];
3402*d2201f2fSdrahn }
3403*d2201f2fSdrahn 
3404*d2201f2fSdrahn static xtensa_insnbuf
blti_template(void)3405*d2201f2fSdrahn blti_template (void)
3406*d2201f2fSdrahn {
3407*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x006a0000 };
3408*d2201f2fSdrahn   return &template[0];
3409*d2201f2fSdrahn }
3410*d2201f2fSdrahn 
3411*d2201f2fSdrahn static xtensa_insnbuf
bltu_template(void)3412*d2201f2fSdrahn bltu_template (void)
3413*d2201f2fSdrahn {
3414*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00700300 };
3415*d2201f2fSdrahn   return &template[0];
3416*d2201f2fSdrahn }
3417*d2201f2fSdrahn 
3418*d2201f2fSdrahn static xtensa_insnbuf
bltui_template(void)3419*d2201f2fSdrahn bltui_template (void)
3420*d2201f2fSdrahn {
3421*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x006e0000 };
3422*d2201f2fSdrahn   return &template[0];
3423*d2201f2fSdrahn }
3424*d2201f2fSdrahn 
3425*d2201f2fSdrahn static xtensa_insnbuf
bltz_template(void)3426*d2201f2fSdrahn bltz_template (void)
3427*d2201f2fSdrahn {
3428*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00660000 };
3429*d2201f2fSdrahn   return &template[0];
3430*d2201f2fSdrahn }
3431*d2201f2fSdrahn 
3432*d2201f2fSdrahn static xtensa_insnbuf
bnall_template(void)3433*d2201f2fSdrahn bnall_template (void)
3434*d2201f2fSdrahn {
3435*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00700c00 };
3436*d2201f2fSdrahn   return &template[0];
3437*d2201f2fSdrahn }
3438*d2201f2fSdrahn 
3439*d2201f2fSdrahn static xtensa_insnbuf
bne_template(void)3440*d2201f2fSdrahn bne_template (void)
3441*d2201f2fSdrahn {
3442*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00700900 };
3443*d2201f2fSdrahn   return &template[0];
3444*d2201f2fSdrahn }
3445*d2201f2fSdrahn 
3446*d2201f2fSdrahn static xtensa_insnbuf
bnei_template(void)3447*d2201f2fSdrahn bnei_template (void)
3448*d2201f2fSdrahn {
3449*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00690000 };
3450*d2201f2fSdrahn   return &template[0];
3451*d2201f2fSdrahn }
3452*d2201f2fSdrahn 
3453*d2201f2fSdrahn static xtensa_insnbuf
bnez_template(void)3454*d2201f2fSdrahn bnez_template (void)
3455*d2201f2fSdrahn {
3456*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00650000 };
3457*d2201f2fSdrahn   return &template[0];
3458*d2201f2fSdrahn }
3459*d2201f2fSdrahn 
3460*d2201f2fSdrahn static xtensa_insnbuf
bnez_n_template(void)3461*d2201f2fSdrahn bnez_n_template (void)
3462*d2201f2fSdrahn {
3463*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00cc0000 };
3464*d2201f2fSdrahn   return &template[0];
3465*d2201f2fSdrahn }
3466*d2201f2fSdrahn 
3467*d2201f2fSdrahn static xtensa_insnbuf
bnone_template(void)3468*d2201f2fSdrahn bnone_template (void)
3469*d2201f2fSdrahn {
3470*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00700000 };
3471*d2201f2fSdrahn   return &template[0];
3472*d2201f2fSdrahn }
3473*d2201f2fSdrahn 
3474*d2201f2fSdrahn static xtensa_insnbuf
break_template(void)3475*d2201f2fSdrahn break_template (void)
3476*d2201f2fSdrahn {
3477*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000400 };
3478*d2201f2fSdrahn   return &template[0];
3479*d2201f2fSdrahn }
3480*d2201f2fSdrahn 
3481*d2201f2fSdrahn static xtensa_insnbuf
break_n_template(void)3482*d2201f2fSdrahn break_n_template (void)
3483*d2201f2fSdrahn {
3484*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00d20f00 };
3485*d2201f2fSdrahn   return &template[0];
3486*d2201f2fSdrahn }
3487*d2201f2fSdrahn 
3488*d2201f2fSdrahn static xtensa_insnbuf
call0_template(void)3489*d2201f2fSdrahn call0_template (void)
3490*d2201f2fSdrahn {
3491*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00500000 };
3492*d2201f2fSdrahn   return &template[0];
3493*d2201f2fSdrahn }
3494*d2201f2fSdrahn 
3495*d2201f2fSdrahn static xtensa_insnbuf
call12_template(void)3496*d2201f2fSdrahn call12_template (void)
3497*d2201f2fSdrahn {
3498*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x005c0000 };
3499*d2201f2fSdrahn   return &template[0];
3500*d2201f2fSdrahn }
3501*d2201f2fSdrahn 
3502*d2201f2fSdrahn static xtensa_insnbuf
call4_template(void)3503*d2201f2fSdrahn call4_template (void)
3504*d2201f2fSdrahn {
3505*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00540000 };
3506*d2201f2fSdrahn   return &template[0];
3507*d2201f2fSdrahn }
3508*d2201f2fSdrahn 
3509*d2201f2fSdrahn static xtensa_insnbuf
call8_template(void)3510*d2201f2fSdrahn call8_template (void)
3511*d2201f2fSdrahn {
3512*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00580000 };
3513*d2201f2fSdrahn   return &template[0];
3514*d2201f2fSdrahn }
3515*d2201f2fSdrahn 
3516*d2201f2fSdrahn static xtensa_insnbuf
callx0_template(void)3517*d2201f2fSdrahn callx0_template (void)
3518*d2201f2fSdrahn {
3519*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00030000 };
3520*d2201f2fSdrahn   return &template[0];
3521*d2201f2fSdrahn }
3522*d2201f2fSdrahn 
3523*d2201f2fSdrahn static xtensa_insnbuf
callx12_template(void)3524*d2201f2fSdrahn callx12_template (void)
3525*d2201f2fSdrahn {
3526*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x000f0000 };
3527*d2201f2fSdrahn   return &template[0];
3528*d2201f2fSdrahn }
3529*d2201f2fSdrahn 
3530*d2201f2fSdrahn static xtensa_insnbuf
callx4_template(void)3531*d2201f2fSdrahn callx4_template (void)
3532*d2201f2fSdrahn {
3533*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00070000 };
3534*d2201f2fSdrahn   return &template[0];
3535*d2201f2fSdrahn }
3536*d2201f2fSdrahn 
3537*d2201f2fSdrahn static xtensa_insnbuf
callx8_template(void)3538*d2201f2fSdrahn callx8_template (void)
3539*d2201f2fSdrahn {
3540*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x000b0000 };
3541*d2201f2fSdrahn   return &template[0];
3542*d2201f2fSdrahn }
3543*d2201f2fSdrahn 
3544*d2201f2fSdrahn static xtensa_insnbuf
dhi_template(void)3545*d2201f2fSdrahn dhi_template (void)
3546*d2201f2fSdrahn {
3547*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00260700 };
3548*d2201f2fSdrahn   return &template[0];
3549*d2201f2fSdrahn }
3550*d2201f2fSdrahn 
3551*d2201f2fSdrahn static xtensa_insnbuf
dhwb_template(void)3552*d2201f2fSdrahn dhwb_template (void)
3553*d2201f2fSdrahn {
3554*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00240700 };
3555*d2201f2fSdrahn   return &template[0];
3556*d2201f2fSdrahn }
3557*d2201f2fSdrahn 
3558*d2201f2fSdrahn static xtensa_insnbuf
dhwbi_template(void)3559*d2201f2fSdrahn dhwbi_template (void)
3560*d2201f2fSdrahn {
3561*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00250700 };
3562*d2201f2fSdrahn   return &template[0];
3563*d2201f2fSdrahn }
3564*d2201f2fSdrahn 
3565*d2201f2fSdrahn static xtensa_insnbuf
dii_template(void)3566*d2201f2fSdrahn dii_template (void)
3567*d2201f2fSdrahn {
3568*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00270700 };
3569*d2201f2fSdrahn   return &template[0];
3570*d2201f2fSdrahn }
3571*d2201f2fSdrahn 
3572*d2201f2fSdrahn static xtensa_insnbuf
diwb_template(void)3573*d2201f2fSdrahn diwb_template (void)
3574*d2201f2fSdrahn {
3575*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00280740 };
3576*d2201f2fSdrahn   return &template[0];
3577*d2201f2fSdrahn }
3578*d2201f2fSdrahn 
3579*d2201f2fSdrahn static xtensa_insnbuf
diwbi_template(void)3580*d2201f2fSdrahn diwbi_template (void)
3581*d2201f2fSdrahn {
3582*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00280750 };
3583*d2201f2fSdrahn   return &template[0];
3584*d2201f2fSdrahn }
3585*d2201f2fSdrahn 
3586*d2201f2fSdrahn static xtensa_insnbuf
dpfr_template(void)3587*d2201f2fSdrahn dpfr_template (void)
3588*d2201f2fSdrahn {
3589*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00200700 };
3590*d2201f2fSdrahn   return &template[0];
3591*d2201f2fSdrahn }
3592*d2201f2fSdrahn 
3593*d2201f2fSdrahn static xtensa_insnbuf
dpfro_template(void)3594*d2201f2fSdrahn dpfro_template (void)
3595*d2201f2fSdrahn {
3596*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00220700 };
3597*d2201f2fSdrahn   return &template[0];
3598*d2201f2fSdrahn }
3599*d2201f2fSdrahn 
3600*d2201f2fSdrahn static xtensa_insnbuf
dpfw_template(void)3601*d2201f2fSdrahn dpfw_template (void)
3602*d2201f2fSdrahn {
3603*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00210700 };
3604*d2201f2fSdrahn   return &template[0];
3605*d2201f2fSdrahn }
3606*d2201f2fSdrahn 
3607*d2201f2fSdrahn static xtensa_insnbuf
dpfwo_template(void)3608*d2201f2fSdrahn dpfwo_template (void)
3609*d2201f2fSdrahn {
3610*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00230700 };
3611*d2201f2fSdrahn   return &template[0];
3612*d2201f2fSdrahn }
3613*d2201f2fSdrahn 
3614*d2201f2fSdrahn static xtensa_insnbuf
dsync_template(void)3615*d2201f2fSdrahn dsync_template (void)
3616*d2201f2fSdrahn {
3617*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00030200 };
3618*d2201f2fSdrahn   return &template[0];
3619*d2201f2fSdrahn }
3620*d2201f2fSdrahn 
3621*d2201f2fSdrahn static xtensa_insnbuf
entry_template(void)3622*d2201f2fSdrahn entry_template (void)
3623*d2201f2fSdrahn {
3624*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x006c0000 };
3625*d2201f2fSdrahn   return &template[0];
3626*d2201f2fSdrahn }
3627*d2201f2fSdrahn 
3628*d2201f2fSdrahn static xtensa_insnbuf
esync_template(void)3629*d2201f2fSdrahn esync_template (void)
3630*d2201f2fSdrahn {
3631*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00020200 };
3632*d2201f2fSdrahn   return &template[0];
3633*d2201f2fSdrahn }
3634*d2201f2fSdrahn 
3635*d2201f2fSdrahn static xtensa_insnbuf
excw_template(void)3636*d2201f2fSdrahn excw_template (void)
3637*d2201f2fSdrahn {
3638*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00080200 };
3639*d2201f2fSdrahn   return &template[0];
3640*d2201f2fSdrahn }
3641*d2201f2fSdrahn 
3642*d2201f2fSdrahn static xtensa_insnbuf
extui_template(void)3643*d2201f2fSdrahn extui_template (void)
3644*d2201f2fSdrahn {
3645*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000040 };
3646*d2201f2fSdrahn   return &template[0];
3647*d2201f2fSdrahn }
3648*d2201f2fSdrahn 
3649*d2201f2fSdrahn static xtensa_insnbuf
idtlb_template(void)3650*d2201f2fSdrahn idtlb_template (void)
3651*d2201f2fSdrahn {
3652*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000c05 };
3653*d2201f2fSdrahn   return &template[0];
3654*d2201f2fSdrahn }
3655*d2201f2fSdrahn 
3656*d2201f2fSdrahn static xtensa_insnbuf
idtlba_template(void)3657*d2201f2fSdrahn idtlba_template (void)
3658*d2201f2fSdrahn {
3659*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000805 };
3660*d2201f2fSdrahn   return &template[0];
3661*d2201f2fSdrahn }
3662*d2201f2fSdrahn 
3663*d2201f2fSdrahn static xtensa_insnbuf
ihi_template(void)3664*d2201f2fSdrahn ihi_template (void)
3665*d2201f2fSdrahn {
3666*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x002e0700 };
3667*d2201f2fSdrahn   return &template[0];
3668*d2201f2fSdrahn }
3669*d2201f2fSdrahn 
3670*d2201f2fSdrahn static xtensa_insnbuf
iii_template(void)3671*d2201f2fSdrahn iii_template (void)
3672*d2201f2fSdrahn {
3673*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x002f0700 };
3674*d2201f2fSdrahn   return &template[0];
3675*d2201f2fSdrahn }
3676*d2201f2fSdrahn 
3677*d2201f2fSdrahn static xtensa_insnbuf
iitlb_template(void)3678*d2201f2fSdrahn iitlb_template (void)
3679*d2201f2fSdrahn {
3680*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000405 };
3681*d2201f2fSdrahn   return &template[0];
3682*d2201f2fSdrahn }
3683*d2201f2fSdrahn 
3684*d2201f2fSdrahn static xtensa_insnbuf
iitlba_template(void)3685*d2201f2fSdrahn iitlba_template (void)
3686*d2201f2fSdrahn {
3687*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000005 };
3688*d2201f2fSdrahn   return &template[0];
3689*d2201f2fSdrahn }
3690*d2201f2fSdrahn 
3691*d2201f2fSdrahn static xtensa_insnbuf
ipf_template(void)3692*d2201f2fSdrahn ipf_template (void)
3693*d2201f2fSdrahn {
3694*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x002c0700 };
3695*d2201f2fSdrahn   return &template[0];
3696*d2201f2fSdrahn }
3697*d2201f2fSdrahn 
3698*d2201f2fSdrahn static xtensa_insnbuf
isync_template(void)3699*d2201f2fSdrahn isync_template (void)
3700*d2201f2fSdrahn {
3701*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000200 };
3702*d2201f2fSdrahn   return &template[0];
3703*d2201f2fSdrahn }
3704*d2201f2fSdrahn 
3705*d2201f2fSdrahn static xtensa_insnbuf
j_template(void)3706*d2201f2fSdrahn j_template (void)
3707*d2201f2fSdrahn {
3708*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00600000 };
3709*d2201f2fSdrahn   return &template[0];
3710*d2201f2fSdrahn }
3711*d2201f2fSdrahn 
3712*d2201f2fSdrahn static xtensa_insnbuf
jx_template(void)3713*d2201f2fSdrahn jx_template (void)
3714*d2201f2fSdrahn {
3715*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x000a0000 };
3716*d2201f2fSdrahn   return &template[0];
3717*d2201f2fSdrahn }
3718*d2201f2fSdrahn 
3719*d2201f2fSdrahn static xtensa_insnbuf
l16si_template(void)3720*d2201f2fSdrahn l16si_template (void)
3721*d2201f2fSdrahn {
3722*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00200900 };
3723*d2201f2fSdrahn   return &template[0];
3724*d2201f2fSdrahn }
3725*d2201f2fSdrahn 
3726*d2201f2fSdrahn static xtensa_insnbuf
l16ui_template(void)3727*d2201f2fSdrahn l16ui_template (void)
3728*d2201f2fSdrahn {
3729*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00200100 };
3730*d2201f2fSdrahn   return &template[0];
3731*d2201f2fSdrahn }
3732*d2201f2fSdrahn 
3733*d2201f2fSdrahn static xtensa_insnbuf
l32e_template(void)3734*d2201f2fSdrahn l32e_template (void)
3735*d2201f2fSdrahn {
3736*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000090 };
3737*d2201f2fSdrahn   return &template[0];
3738*d2201f2fSdrahn }
3739*d2201f2fSdrahn 
3740*d2201f2fSdrahn static xtensa_insnbuf
l32i_template(void)3741*d2201f2fSdrahn l32i_template (void)
3742*d2201f2fSdrahn {
3743*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00200200 };
3744*d2201f2fSdrahn   return &template[0];
3745*d2201f2fSdrahn }
3746*d2201f2fSdrahn 
3747*d2201f2fSdrahn static xtensa_insnbuf
l32i_n_template(void)3748*d2201f2fSdrahn l32i_n_template (void)
3749*d2201f2fSdrahn {
3750*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00800000 };
3751*d2201f2fSdrahn   return &template[0];
3752*d2201f2fSdrahn }
3753*d2201f2fSdrahn 
3754*d2201f2fSdrahn static xtensa_insnbuf
l32r_template(void)3755*d2201f2fSdrahn l32r_template (void)
3756*d2201f2fSdrahn {
3757*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00100000 };
3758*d2201f2fSdrahn   return &template[0];
3759*d2201f2fSdrahn }
3760*d2201f2fSdrahn 
3761*d2201f2fSdrahn static xtensa_insnbuf
l8ui_template(void)3762*d2201f2fSdrahn l8ui_template (void)
3763*d2201f2fSdrahn {
3764*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00200000 };
3765*d2201f2fSdrahn   return &template[0];
3766*d2201f2fSdrahn }
3767*d2201f2fSdrahn 
3768*d2201f2fSdrahn static xtensa_insnbuf
ldct_template(void)3769*d2201f2fSdrahn ldct_template (void)
3770*d2201f2fSdrahn {
3771*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x0000081f };
3772*d2201f2fSdrahn   return &template[0];
3773*d2201f2fSdrahn }
3774*d2201f2fSdrahn 
3775*d2201f2fSdrahn static xtensa_insnbuf
lict_template(void)3776*d2201f2fSdrahn lict_template (void)
3777*d2201f2fSdrahn {
3778*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x0000001f };
3779*d2201f2fSdrahn   return &template[0];
3780*d2201f2fSdrahn }
3781*d2201f2fSdrahn 
3782*d2201f2fSdrahn static xtensa_insnbuf
licw_template(void)3783*d2201f2fSdrahn licw_template (void)
3784*d2201f2fSdrahn {
3785*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x0000021f };
3786*d2201f2fSdrahn   return &template[0];
3787*d2201f2fSdrahn }
3788*d2201f2fSdrahn 
3789*d2201f2fSdrahn static xtensa_insnbuf
loop_template(void)3790*d2201f2fSdrahn loop_template (void)
3791*d2201f2fSdrahn {
3792*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x006d0800 };
3793*d2201f2fSdrahn   return &template[0];
3794*d2201f2fSdrahn }
3795*d2201f2fSdrahn 
3796*d2201f2fSdrahn static xtensa_insnbuf
loopgtz_template(void)3797*d2201f2fSdrahn loopgtz_template (void)
3798*d2201f2fSdrahn {
3799*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x006d0a00 };
3800*d2201f2fSdrahn   return &template[0];
3801*d2201f2fSdrahn }
3802*d2201f2fSdrahn 
3803*d2201f2fSdrahn static xtensa_insnbuf
loopnez_template(void)3804*d2201f2fSdrahn loopnez_template (void)
3805*d2201f2fSdrahn {
3806*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x006d0900 };
3807*d2201f2fSdrahn   return &template[0];
3808*d2201f2fSdrahn }
3809*d2201f2fSdrahn 
3810*d2201f2fSdrahn static xtensa_insnbuf
memw_template(void)3811*d2201f2fSdrahn memw_template (void)
3812*d2201f2fSdrahn {
3813*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x000c0200 };
3814*d2201f2fSdrahn   return &template[0];
3815*d2201f2fSdrahn }
3816*d2201f2fSdrahn 
3817*d2201f2fSdrahn static xtensa_insnbuf
mov_n_template(void)3818*d2201f2fSdrahn mov_n_template (void)
3819*d2201f2fSdrahn {
3820*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00d00000 };
3821*d2201f2fSdrahn   return &template[0];
3822*d2201f2fSdrahn }
3823*d2201f2fSdrahn 
3824*d2201f2fSdrahn static xtensa_insnbuf
moveqz_template(void)3825*d2201f2fSdrahn moveqz_template (void)
3826*d2201f2fSdrahn {
3827*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000038 };
3828*d2201f2fSdrahn   return &template[0];
3829*d2201f2fSdrahn }
3830*d2201f2fSdrahn 
3831*d2201f2fSdrahn static xtensa_insnbuf
movgez_template(void)3832*d2201f2fSdrahn movgez_template (void)
3833*d2201f2fSdrahn {
3834*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x0000003b };
3835*d2201f2fSdrahn   return &template[0];
3836*d2201f2fSdrahn }
3837*d2201f2fSdrahn 
3838*d2201f2fSdrahn static xtensa_insnbuf
movi_template(void)3839*d2201f2fSdrahn movi_template (void)
3840*d2201f2fSdrahn {
3841*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00200a00 };
3842*d2201f2fSdrahn   return &template[0];
3843*d2201f2fSdrahn }
3844*d2201f2fSdrahn 
3845*d2201f2fSdrahn static xtensa_insnbuf
movi_n_template(void)3846*d2201f2fSdrahn movi_n_template (void)
3847*d2201f2fSdrahn {
3848*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00c00000 };
3849*d2201f2fSdrahn   return &template[0];
3850*d2201f2fSdrahn }
3851*d2201f2fSdrahn 
3852*d2201f2fSdrahn static xtensa_insnbuf
movltz_template(void)3853*d2201f2fSdrahn movltz_template (void)
3854*d2201f2fSdrahn {
3855*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x0000003a };
3856*d2201f2fSdrahn   return &template[0];
3857*d2201f2fSdrahn }
3858*d2201f2fSdrahn 
3859*d2201f2fSdrahn static xtensa_insnbuf
movnez_template(void)3860*d2201f2fSdrahn movnez_template (void)
3861*d2201f2fSdrahn {
3862*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000039 };
3863*d2201f2fSdrahn   return &template[0];
3864*d2201f2fSdrahn }
3865*d2201f2fSdrahn 
3866*d2201f2fSdrahn static xtensa_insnbuf
movsp_template(void)3867*d2201f2fSdrahn movsp_template (void)
3868*d2201f2fSdrahn {
3869*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000100 };
3870*d2201f2fSdrahn   return &template[0];
3871*d2201f2fSdrahn }
3872*d2201f2fSdrahn 
3873*d2201f2fSdrahn static xtensa_insnbuf
neg_template(void)3874*d2201f2fSdrahn neg_template (void)
3875*d2201f2fSdrahn {
3876*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000006 };
3877*d2201f2fSdrahn   return &template[0];
3878*d2201f2fSdrahn }
3879*d2201f2fSdrahn 
3880*d2201f2fSdrahn static xtensa_insnbuf
nop_n_template(void)3881*d2201f2fSdrahn nop_n_template (void)
3882*d2201f2fSdrahn {
3883*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00d30f00 };
3884*d2201f2fSdrahn   return &template[0];
3885*d2201f2fSdrahn }
3886*d2201f2fSdrahn 
3887*d2201f2fSdrahn static xtensa_insnbuf
nsa_template(void)3888*d2201f2fSdrahn nsa_template (void)
3889*d2201f2fSdrahn {
3890*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000e04 };
3891*d2201f2fSdrahn   return &template[0];
3892*d2201f2fSdrahn }
3893*d2201f2fSdrahn 
3894*d2201f2fSdrahn static xtensa_insnbuf
nsau_template(void)3895*d2201f2fSdrahn nsau_template (void)
3896*d2201f2fSdrahn {
3897*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000f04 };
3898*d2201f2fSdrahn   return &template[0];
3899*d2201f2fSdrahn }
3900*d2201f2fSdrahn 
3901*d2201f2fSdrahn static xtensa_insnbuf
or_template(void)3902*d2201f2fSdrahn or_template (void)
3903*d2201f2fSdrahn {
3904*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000002 };
3905*d2201f2fSdrahn   return &template[0];
3906*d2201f2fSdrahn }
3907*d2201f2fSdrahn 
3908*d2201f2fSdrahn static xtensa_insnbuf
pdtlb_template(void)3909*d2201f2fSdrahn pdtlb_template (void)
3910*d2201f2fSdrahn {
3911*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000d05 };
3912*d2201f2fSdrahn   return &template[0];
3913*d2201f2fSdrahn }
3914*d2201f2fSdrahn 
3915*d2201f2fSdrahn static xtensa_insnbuf
pitlb_template(void)3916*d2201f2fSdrahn pitlb_template (void)
3917*d2201f2fSdrahn {
3918*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000505 };
3919*d2201f2fSdrahn   return &template[0];
3920*d2201f2fSdrahn }
3921*d2201f2fSdrahn 
3922*d2201f2fSdrahn static xtensa_insnbuf
rdtlb0_template(void)3923*d2201f2fSdrahn rdtlb0_template (void)
3924*d2201f2fSdrahn {
3925*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000b05 };
3926*d2201f2fSdrahn   return &template[0];
3927*d2201f2fSdrahn }
3928*d2201f2fSdrahn 
3929*d2201f2fSdrahn static xtensa_insnbuf
rdtlb1_template(void)3930*d2201f2fSdrahn rdtlb1_template (void)
3931*d2201f2fSdrahn {
3932*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000f05 };
3933*d2201f2fSdrahn   return &template[0];
3934*d2201f2fSdrahn }
3935*d2201f2fSdrahn 
3936*d2201f2fSdrahn static xtensa_insnbuf
ret_template(void)3937*d2201f2fSdrahn ret_template (void)
3938*d2201f2fSdrahn {
3939*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00020000 };
3940*d2201f2fSdrahn   return &template[0];
3941*d2201f2fSdrahn }
3942*d2201f2fSdrahn 
3943*d2201f2fSdrahn static xtensa_insnbuf
ret_n_template(void)3944*d2201f2fSdrahn ret_n_template (void)
3945*d2201f2fSdrahn {
3946*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00d00f00 };
3947*d2201f2fSdrahn   return &template[0];
3948*d2201f2fSdrahn }
3949*d2201f2fSdrahn 
3950*d2201f2fSdrahn static xtensa_insnbuf
retw_template(void)3951*d2201f2fSdrahn retw_template (void)
3952*d2201f2fSdrahn {
3953*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00060000 };
3954*d2201f2fSdrahn   return &template[0];
3955*d2201f2fSdrahn }
3956*d2201f2fSdrahn 
3957*d2201f2fSdrahn static xtensa_insnbuf
retw_n_template(void)3958*d2201f2fSdrahn retw_n_template (void)
3959*d2201f2fSdrahn {
3960*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00d10f00 };
3961*d2201f2fSdrahn   return &template[0];
3962*d2201f2fSdrahn }
3963*d2201f2fSdrahn 
3964*d2201f2fSdrahn static xtensa_insnbuf
rfde_template(void)3965*d2201f2fSdrahn rfde_template (void)
3966*d2201f2fSdrahn {
3967*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00002300 };
3968*d2201f2fSdrahn   return &template[0];
3969*d2201f2fSdrahn }
3970*d2201f2fSdrahn 
3971*d2201f2fSdrahn static xtensa_insnbuf
rfe_template(void)3972*d2201f2fSdrahn rfe_template (void)
3973*d2201f2fSdrahn {
3974*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000300 };
3975*d2201f2fSdrahn   return &template[0];
3976*d2201f2fSdrahn }
3977*d2201f2fSdrahn 
3978*d2201f2fSdrahn static xtensa_insnbuf
rfi_template(void)3979*d2201f2fSdrahn rfi_template (void)
3980*d2201f2fSdrahn {
3981*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00010300 };
3982*d2201f2fSdrahn   return &template[0];
3983*d2201f2fSdrahn }
3984*d2201f2fSdrahn 
3985*d2201f2fSdrahn static xtensa_insnbuf
rfwo_template(void)3986*d2201f2fSdrahn rfwo_template (void)
3987*d2201f2fSdrahn {
3988*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00004300 };
3989*d2201f2fSdrahn   return &template[0];
3990*d2201f2fSdrahn }
3991*d2201f2fSdrahn 
3992*d2201f2fSdrahn static xtensa_insnbuf
rfwu_template(void)3993*d2201f2fSdrahn rfwu_template (void)
3994*d2201f2fSdrahn {
3995*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00005300 };
3996*d2201f2fSdrahn   return &template[0];
3997*d2201f2fSdrahn }
3998*d2201f2fSdrahn 
3999*d2201f2fSdrahn static xtensa_insnbuf
ritlb0_template(void)4000*d2201f2fSdrahn ritlb0_template (void)
4001*d2201f2fSdrahn {
4002*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000305 };
4003*d2201f2fSdrahn   return &template[0];
4004*d2201f2fSdrahn }
4005*d2201f2fSdrahn 
4006*d2201f2fSdrahn static xtensa_insnbuf
ritlb1_template(void)4007*d2201f2fSdrahn ritlb1_template (void)
4008*d2201f2fSdrahn {
4009*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000705 };
4010*d2201f2fSdrahn   return &template[0];
4011*d2201f2fSdrahn }
4012*d2201f2fSdrahn 
4013*d2201f2fSdrahn static xtensa_insnbuf
rotw_template(void)4014*d2201f2fSdrahn rotw_template (void)
4015*d2201f2fSdrahn {
4016*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000804 };
4017*d2201f2fSdrahn   return &template[0];
4018*d2201f2fSdrahn }
4019*d2201f2fSdrahn 
4020*d2201f2fSdrahn static xtensa_insnbuf
rsil_template(void)4021*d2201f2fSdrahn rsil_template (void)
4022*d2201f2fSdrahn {
4023*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000600 };
4024*d2201f2fSdrahn   return &template[0];
4025*d2201f2fSdrahn }
4026*d2201f2fSdrahn 
4027*d2201f2fSdrahn static xtensa_insnbuf
rsr_template(void)4028*d2201f2fSdrahn rsr_template (void)
4029*d2201f2fSdrahn {
4030*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000030 };
4031*d2201f2fSdrahn   return &template[0];
4032*d2201f2fSdrahn }
4033*d2201f2fSdrahn 
4034*d2201f2fSdrahn static xtensa_insnbuf
rsync_template(void)4035*d2201f2fSdrahn rsync_template (void)
4036*d2201f2fSdrahn {
4037*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00010200 };
4038*d2201f2fSdrahn   return &template[0];
4039*d2201f2fSdrahn }
4040*d2201f2fSdrahn 
4041*d2201f2fSdrahn static xtensa_insnbuf
s16i_template(void)4042*d2201f2fSdrahn s16i_template (void)
4043*d2201f2fSdrahn {
4044*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00200500 };
4045*d2201f2fSdrahn   return &template[0];
4046*d2201f2fSdrahn }
4047*d2201f2fSdrahn 
4048*d2201f2fSdrahn static xtensa_insnbuf
s32e_template(void)4049*d2201f2fSdrahn s32e_template (void)
4050*d2201f2fSdrahn {
4051*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000094 };
4052*d2201f2fSdrahn   return &template[0];
4053*d2201f2fSdrahn }
4054*d2201f2fSdrahn 
4055*d2201f2fSdrahn static xtensa_insnbuf
s32i_template(void)4056*d2201f2fSdrahn s32i_template (void)
4057*d2201f2fSdrahn {
4058*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00200600 };
4059*d2201f2fSdrahn   return &template[0];
4060*d2201f2fSdrahn }
4061*d2201f2fSdrahn 
4062*d2201f2fSdrahn static xtensa_insnbuf
s32i_n_template(void)4063*d2201f2fSdrahn s32i_n_template (void)
4064*d2201f2fSdrahn {
4065*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00900000 };
4066*d2201f2fSdrahn   return &template[0];
4067*d2201f2fSdrahn }
4068*d2201f2fSdrahn 
4069*d2201f2fSdrahn static xtensa_insnbuf
s8i_template(void)4070*d2201f2fSdrahn s8i_template (void)
4071*d2201f2fSdrahn {
4072*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00200400 };
4073*d2201f2fSdrahn   return &template[0];
4074*d2201f2fSdrahn }
4075*d2201f2fSdrahn 
4076*d2201f2fSdrahn static xtensa_insnbuf
sdct_template(void)4077*d2201f2fSdrahn sdct_template (void)
4078*d2201f2fSdrahn {
4079*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x0000091f };
4080*d2201f2fSdrahn   return &template[0];
4081*d2201f2fSdrahn }
4082*d2201f2fSdrahn 
4083*d2201f2fSdrahn static xtensa_insnbuf
sict_template(void)4084*d2201f2fSdrahn sict_template (void)
4085*d2201f2fSdrahn {
4086*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x0000011f };
4087*d2201f2fSdrahn   return &template[0];
4088*d2201f2fSdrahn }
4089*d2201f2fSdrahn 
4090*d2201f2fSdrahn static xtensa_insnbuf
sicw_template(void)4091*d2201f2fSdrahn sicw_template (void)
4092*d2201f2fSdrahn {
4093*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x0000031f };
4094*d2201f2fSdrahn   return &template[0];
4095*d2201f2fSdrahn }
4096*d2201f2fSdrahn 
4097*d2201f2fSdrahn static xtensa_insnbuf
simcall_template(void)4098*d2201f2fSdrahn simcall_template (void)
4099*d2201f2fSdrahn {
4100*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00001500 };
4101*d2201f2fSdrahn   return &template[0];
4102*d2201f2fSdrahn }
4103*d2201f2fSdrahn 
4104*d2201f2fSdrahn static xtensa_insnbuf
sll_template(void)4105*d2201f2fSdrahn sll_template (void)
4106*d2201f2fSdrahn {
4107*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x0000001a };
4108*d2201f2fSdrahn   return &template[0];
4109*d2201f2fSdrahn }
4110*d2201f2fSdrahn 
4111*d2201f2fSdrahn static xtensa_insnbuf
slli_template(void)4112*d2201f2fSdrahn slli_template (void)
4113*d2201f2fSdrahn {
4114*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000010 };
4115*d2201f2fSdrahn   return &template[0];
4116*d2201f2fSdrahn }
4117*d2201f2fSdrahn 
4118*d2201f2fSdrahn static xtensa_insnbuf
sra_template(void)4119*d2201f2fSdrahn sra_template (void)
4120*d2201f2fSdrahn {
4121*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x0000001b };
4122*d2201f2fSdrahn   return &template[0];
4123*d2201f2fSdrahn }
4124*d2201f2fSdrahn 
4125*d2201f2fSdrahn static xtensa_insnbuf
srai_template(void)4126*d2201f2fSdrahn srai_template (void)
4127*d2201f2fSdrahn {
4128*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000012 };
4129*d2201f2fSdrahn   return &template[0];
4130*d2201f2fSdrahn }
4131*d2201f2fSdrahn 
4132*d2201f2fSdrahn static xtensa_insnbuf
src_template(void)4133*d2201f2fSdrahn src_template (void)
4134*d2201f2fSdrahn {
4135*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000018 };
4136*d2201f2fSdrahn   return &template[0];
4137*d2201f2fSdrahn }
4138*d2201f2fSdrahn 
4139*d2201f2fSdrahn static xtensa_insnbuf
srl_template(void)4140*d2201f2fSdrahn srl_template (void)
4141*d2201f2fSdrahn {
4142*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000019 };
4143*d2201f2fSdrahn   return &template[0];
4144*d2201f2fSdrahn }
4145*d2201f2fSdrahn 
4146*d2201f2fSdrahn static xtensa_insnbuf
srli_template(void)4147*d2201f2fSdrahn srli_template (void)
4148*d2201f2fSdrahn {
4149*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000014 };
4150*d2201f2fSdrahn   return &template[0];
4151*d2201f2fSdrahn }
4152*d2201f2fSdrahn 
4153*d2201f2fSdrahn static xtensa_insnbuf
ssa8b_template(void)4154*d2201f2fSdrahn ssa8b_template (void)
4155*d2201f2fSdrahn {
4156*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000304 };
4157*d2201f2fSdrahn   return &template[0];
4158*d2201f2fSdrahn }
4159*d2201f2fSdrahn 
4160*d2201f2fSdrahn static xtensa_insnbuf
ssa8l_template(void)4161*d2201f2fSdrahn ssa8l_template (void)
4162*d2201f2fSdrahn {
4163*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000204 };
4164*d2201f2fSdrahn   return &template[0];
4165*d2201f2fSdrahn }
4166*d2201f2fSdrahn 
4167*d2201f2fSdrahn static xtensa_insnbuf
ssai_template(void)4168*d2201f2fSdrahn ssai_template (void)
4169*d2201f2fSdrahn {
4170*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000404 };
4171*d2201f2fSdrahn   return &template[0];
4172*d2201f2fSdrahn }
4173*d2201f2fSdrahn 
4174*d2201f2fSdrahn static xtensa_insnbuf
ssl_template(void)4175*d2201f2fSdrahn ssl_template (void)
4176*d2201f2fSdrahn {
4177*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000104 };
4178*d2201f2fSdrahn   return &template[0];
4179*d2201f2fSdrahn }
4180*d2201f2fSdrahn 
4181*d2201f2fSdrahn static xtensa_insnbuf
ssr_template(void)4182*d2201f2fSdrahn ssr_template (void)
4183*d2201f2fSdrahn {
4184*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000004 };
4185*d2201f2fSdrahn   return &template[0];
4186*d2201f2fSdrahn }
4187*d2201f2fSdrahn 
4188*d2201f2fSdrahn static xtensa_insnbuf
sub_template(void)4189*d2201f2fSdrahn sub_template (void)
4190*d2201f2fSdrahn {
4191*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x0000000c };
4192*d2201f2fSdrahn   return &template[0];
4193*d2201f2fSdrahn }
4194*d2201f2fSdrahn 
4195*d2201f2fSdrahn static xtensa_insnbuf
subx2_template(void)4196*d2201f2fSdrahn subx2_template (void)
4197*d2201f2fSdrahn {
4198*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x0000000d };
4199*d2201f2fSdrahn   return &template[0];
4200*d2201f2fSdrahn }
4201*d2201f2fSdrahn 
4202*d2201f2fSdrahn static xtensa_insnbuf
subx4_template(void)4203*d2201f2fSdrahn subx4_template (void)
4204*d2201f2fSdrahn {
4205*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x0000000e };
4206*d2201f2fSdrahn   return &template[0];
4207*d2201f2fSdrahn }
4208*d2201f2fSdrahn 
4209*d2201f2fSdrahn static xtensa_insnbuf
subx8_template(void)4210*d2201f2fSdrahn subx8_template (void)
4211*d2201f2fSdrahn {
4212*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x0000000f };
4213*d2201f2fSdrahn   return &template[0];
4214*d2201f2fSdrahn }
4215*d2201f2fSdrahn 
4216*d2201f2fSdrahn static xtensa_insnbuf
syscall_template(void)4217*d2201f2fSdrahn syscall_template (void)
4218*d2201f2fSdrahn {
4219*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000500 };
4220*d2201f2fSdrahn   return &template[0];
4221*d2201f2fSdrahn }
4222*d2201f2fSdrahn 
4223*d2201f2fSdrahn static xtensa_insnbuf
waiti_template(void)4224*d2201f2fSdrahn waiti_template (void)
4225*d2201f2fSdrahn {
4226*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000700 };
4227*d2201f2fSdrahn   return &template[0];
4228*d2201f2fSdrahn }
4229*d2201f2fSdrahn 
4230*d2201f2fSdrahn static xtensa_insnbuf
wdtlb_template(void)4231*d2201f2fSdrahn wdtlb_template (void)
4232*d2201f2fSdrahn {
4233*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000e05 };
4234*d2201f2fSdrahn   return &template[0];
4235*d2201f2fSdrahn }
4236*d2201f2fSdrahn 
4237*d2201f2fSdrahn static xtensa_insnbuf
witlb_template(void)4238*d2201f2fSdrahn witlb_template (void)
4239*d2201f2fSdrahn {
4240*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000605 };
4241*d2201f2fSdrahn   return &template[0];
4242*d2201f2fSdrahn }
4243*d2201f2fSdrahn 
4244*d2201f2fSdrahn static xtensa_insnbuf
wsr_template(void)4245*d2201f2fSdrahn wsr_template (void)
4246*d2201f2fSdrahn {
4247*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000031 };
4248*d2201f2fSdrahn   return &template[0];
4249*d2201f2fSdrahn }
4250*d2201f2fSdrahn 
4251*d2201f2fSdrahn static xtensa_insnbuf
xor_template(void)4252*d2201f2fSdrahn xor_template (void)
4253*d2201f2fSdrahn {
4254*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000003 };
4255*d2201f2fSdrahn   return &template[0];
4256*d2201f2fSdrahn }
4257*d2201f2fSdrahn 
4258*d2201f2fSdrahn static xtensa_insnbuf
xsr_template(void)4259*d2201f2fSdrahn xsr_template (void)
4260*d2201f2fSdrahn {
4261*d2201f2fSdrahn   static xtensa_insnbuf_word template[] = { 0x00000016 };
4262*d2201f2fSdrahn   return &template[0];
4263*d2201f2fSdrahn }
4264*d2201f2fSdrahn 
4265*d2201f2fSdrahn static xtensa_opcode_internal abs_opcode = {
4266*d2201f2fSdrahn   "abs",
4267*d2201f2fSdrahn   3,
4268*d2201f2fSdrahn   abs_template,
4269*d2201f2fSdrahn   &neg_iclass
4270*d2201f2fSdrahn };
4271*d2201f2fSdrahn 
4272*d2201f2fSdrahn static xtensa_opcode_internal add_opcode = {
4273*d2201f2fSdrahn   "add",
4274*d2201f2fSdrahn   3,
4275*d2201f2fSdrahn   add_template,
4276*d2201f2fSdrahn   &addsub_iclass
4277*d2201f2fSdrahn };
4278*d2201f2fSdrahn 
4279*d2201f2fSdrahn static xtensa_opcode_internal add_n_opcode = {
4280*d2201f2fSdrahn   "add.n",
4281*d2201f2fSdrahn   2,
4282*d2201f2fSdrahn   add_n_template,
4283*d2201f2fSdrahn   &add_n_iclass
4284*d2201f2fSdrahn };
4285*d2201f2fSdrahn 
4286*d2201f2fSdrahn static xtensa_opcode_internal addi_opcode = {
4287*d2201f2fSdrahn   "addi",
4288*d2201f2fSdrahn   3,
4289*d2201f2fSdrahn   addi_template,
4290*d2201f2fSdrahn   &addi_iclass
4291*d2201f2fSdrahn };
4292*d2201f2fSdrahn 
4293*d2201f2fSdrahn static xtensa_opcode_internal addi_n_opcode = {
4294*d2201f2fSdrahn   "addi.n",
4295*d2201f2fSdrahn   2,
4296*d2201f2fSdrahn   addi_n_template,
4297*d2201f2fSdrahn   &addi_n_iclass
4298*d2201f2fSdrahn };
4299*d2201f2fSdrahn 
4300*d2201f2fSdrahn static xtensa_opcode_internal addmi_opcode = {
4301*d2201f2fSdrahn   "addmi",
4302*d2201f2fSdrahn   3,
4303*d2201f2fSdrahn   addmi_template,
4304*d2201f2fSdrahn   &addmi_iclass
4305*d2201f2fSdrahn };
4306*d2201f2fSdrahn 
4307*d2201f2fSdrahn static xtensa_opcode_internal addx2_opcode = {
4308*d2201f2fSdrahn   "addx2",
4309*d2201f2fSdrahn   3,
4310*d2201f2fSdrahn   addx2_template,
4311*d2201f2fSdrahn   &addsub_iclass
4312*d2201f2fSdrahn };
4313*d2201f2fSdrahn 
4314*d2201f2fSdrahn static xtensa_opcode_internal addx4_opcode = {
4315*d2201f2fSdrahn   "addx4",
4316*d2201f2fSdrahn   3,
4317*d2201f2fSdrahn   addx4_template,
4318*d2201f2fSdrahn   &addsub_iclass
4319*d2201f2fSdrahn };
4320*d2201f2fSdrahn 
4321*d2201f2fSdrahn static xtensa_opcode_internal addx8_opcode = {
4322*d2201f2fSdrahn   "addx8",
4323*d2201f2fSdrahn   3,
4324*d2201f2fSdrahn   addx8_template,
4325*d2201f2fSdrahn   &addsub_iclass
4326*d2201f2fSdrahn };
4327*d2201f2fSdrahn 
4328*d2201f2fSdrahn static xtensa_opcode_internal and_opcode = {
4329*d2201f2fSdrahn   "and",
4330*d2201f2fSdrahn   3,
4331*d2201f2fSdrahn   and_template,
4332*d2201f2fSdrahn   &bit_iclass
4333*d2201f2fSdrahn };
4334*d2201f2fSdrahn 
4335*d2201f2fSdrahn static xtensa_opcode_internal ball_opcode = {
4336*d2201f2fSdrahn   "ball",
4337*d2201f2fSdrahn   3,
4338*d2201f2fSdrahn   ball_template,
4339*d2201f2fSdrahn   &bst8_iclass
4340*d2201f2fSdrahn };
4341*d2201f2fSdrahn 
4342*d2201f2fSdrahn static xtensa_opcode_internal bany_opcode = {
4343*d2201f2fSdrahn   "bany",
4344*d2201f2fSdrahn   3,
4345*d2201f2fSdrahn   bany_template,
4346*d2201f2fSdrahn   &bst8_iclass
4347*d2201f2fSdrahn };
4348*d2201f2fSdrahn 
4349*d2201f2fSdrahn static xtensa_opcode_internal bbc_opcode = {
4350*d2201f2fSdrahn   "bbc",
4351*d2201f2fSdrahn   3,
4352*d2201f2fSdrahn   bbc_template,
4353*d2201f2fSdrahn   &bst8_iclass
4354*d2201f2fSdrahn };
4355*d2201f2fSdrahn 
4356*d2201f2fSdrahn static xtensa_opcode_internal bbci_opcode = {
4357*d2201f2fSdrahn   "bbci",
4358*d2201f2fSdrahn   3,
4359*d2201f2fSdrahn   bbci_template,
4360*d2201f2fSdrahn   &bsi8b_iclass
4361*d2201f2fSdrahn };
4362*d2201f2fSdrahn 
4363*d2201f2fSdrahn static xtensa_opcode_internal bbs_opcode = {
4364*d2201f2fSdrahn   "bbs",
4365*d2201f2fSdrahn   3,
4366*d2201f2fSdrahn   bbs_template,
4367*d2201f2fSdrahn   &bst8_iclass
4368*d2201f2fSdrahn };
4369*d2201f2fSdrahn 
4370*d2201f2fSdrahn static xtensa_opcode_internal bbsi_opcode = {
4371*d2201f2fSdrahn   "bbsi",
4372*d2201f2fSdrahn   3,
4373*d2201f2fSdrahn   bbsi_template,
4374*d2201f2fSdrahn   &bsi8b_iclass
4375*d2201f2fSdrahn };
4376*d2201f2fSdrahn 
4377*d2201f2fSdrahn static xtensa_opcode_internal beq_opcode = {
4378*d2201f2fSdrahn   "beq",
4379*d2201f2fSdrahn   3,
4380*d2201f2fSdrahn   beq_template,
4381*d2201f2fSdrahn   &bst8_iclass
4382*d2201f2fSdrahn };
4383*d2201f2fSdrahn 
4384*d2201f2fSdrahn static xtensa_opcode_internal beqi_opcode = {
4385*d2201f2fSdrahn   "beqi",
4386*d2201f2fSdrahn   3,
4387*d2201f2fSdrahn   beqi_template,
4388*d2201f2fSdrahn   &bsi8_iclass
4389*d2201f2fSdrahn };
4390*d2201f2fSdrahn 
4391*d2201f2fSdrahn static xtensa_opcode_internal beqz_opcode = {
4392*d2201f2fSdrahn   "beqz",
4393*d2201f2fSdrahn   3,
4394*d2201f2fSdrahn   beqz_template,
4395*d2201f2fSdrahn   &bsz12_iclass
4396*d2201f2fSdrahn };
4397*d2201f2fSdrahn 
4398*d2201f2fSdrahn static xtensa_opcode_internal beqz_n_opcode = {
4399*d2201f2fSdrahn   "beqz.n",
4400*d2201f2fSdrahn   2,
4401*d2201f2fSdrahn   beqz_n_template,
4402*d2201f2fSdrahn   &bz6_iclass
4403*d2201f2fSdrahn };
4404*d2201f2fSdrahn 
4405*d2201f2fSdrahn static xtensa_opcode_internal bge_opcode = {
4406*d2201f2fSdrahn   "bge",
4407*d2201f2fSdrahn   3,
4408*d2201f2fSdrahn   bge_template,
4409*d2201f2fSdrahn   &bst8_iclass
4410*d2201f2fSdrahn };
4411*d2201f2fSdrahn 
4412*d2201f2fSdrahn static xtensa_opcode_internal bgei_opcode = {
4413*d2201f2fSdrahn   "bgei",
4414*d2201f2fSdrahn   3,
4415*d2201f2fSdrahn   bgei_template,
4416*d2201f2fSdrahn   &bsi8_iclass
4417*d2201f2fSdrahn };
4418*d2201f2fSdrahn 
4419*d2201f2fSdrahn static xtensa_opcode_internal bgeu_opcode = {
4420*d2201f2fSdrahn   "bgeu",
4421*d2201f2fSdrahn   3,
4422*d2201f2fSdrahn   bgeu_template,
4423*d2201f2fSdrahn   &bst8_iclass
4424*d2201f2fSdrahn };
4425*d2201f2fSdrahn 
4426*d2201f2fSdrahn static xtensa_opcode_internal bgeui_opcode = {
4427*d2201f2fSdrahn   "bgeui",
4428*d2201f2fSdrahn   3,
4429*d2201f2fSdrahn   bgeui_template,
4430*d2201f2fSdrahn   &bsi8u_iclass
4431*d2201f2fSdrahn };
4432*d2201f2fSdrahn 
4433*d2201f2fSdrahn static xtensa_opcode_internal bgez_opcode = {
4434*d2201f2fSdrahn   "bgez",
4435*d2201f2fSdrahn   3,
4436*d2201f2fSdrahn   bgez_template,
4437*d2201f2fSdrahn   &bsz12_iclass
4438*d2201f2fSdrahn };
4439*d2201f2fSdrahn 
4440*d2201f2fSdrahn static xtensa_opcode_internal blt_opcode = {
4441*d2201f2fSdrahn   "blt",
4442*d2201f2fSdrahn   3,
4443*d2201f2fSdrahn   blt_template,
4444*d2201f2fSdrahn   &bst8_iclass
4445*d2201f2fSdrahn };
4446*d2201f2fSdrahn 
4447*d2201f2fSdrahn static xtensa_opcode_internal blti_opcode = {
4448*d2201f2fSdrahn   "blti",
4449*d2201f2fSdrahn   3,
4450*d2201f2fSdrahn   blti_template,
4451*d2201f2fSdrahn   &bsi8_iclass
4452*d2201f2fSdrahn };
4453*d2201f2fSdrahn 
4454*d2201f2fSdrahn static xtensa_opcode_internal bltu_opcode = {
4455*d2201f2fSdrahn   "bltu",
4456*d2201f2fSdrahn   3,
4457*d2201f2fSdrahn   bltu_template,
4458*d2201f2fSdrahn   &bst8_iclass
4459*d2201f2fSdrahn };
4460*d2201f2fSdrahn 
4461*d2201f2fSdrahn static xtensa_opcode_internal bltui_opcode = {
4462*d2201f2fSdrahn   "bltui",
4463*d2201f2fSdrahn   3,
4464*d2201f2fSdrahn   bltui_template,
4465*d2201f2fSdrahn   &bsi8u_iclass
4466*d2201f2fSdrahn };
4467*d2201f2fSdrahn 
4468*d2201f2fSdrahn static xtensa_opcode_internal bltz_opcode = {
4469*d2201f2fSdrahn   "bltz",
4470*d2201f2fSdrahn   3,
4471*d2201f2fSdrahn   bltz_template,
4472*d2201f2fSdrahn   &bsz12_iclass
4473*d2201f2fSdrahn };
4474*d2201f2fSdrahn 
4475*d2201f2fSdrahn static xtensa_opcode_internal bnall_opcode = {
4476*d2201f2fSdrahn   "bnall",
4477*d2201f2fSdrahn   3,
4478*d2201f2fSdrahn   bnall_template,
4479*d2201f2fSdrahn   &bst8_iclass
4480*d2201f2fSdrahn };
4481*d2201f2fSdrahn 
4482*d2201f2fSdrahn static xtensa_opcode_internal bne_opcode = {
4483*d2201f2fSdrahn   "bne",
4484*d2201f2fSdrahn   3,
4485*d2201f2fSdrahn   bne_template,
4486*d2201f2fSdrahn   &bst8_iclass
4487*d2201f2fSdrahn };
4488*d2201f2fSdrahn 
4489*d2201f2fSdrahn static xtensa_opcode_internal bnei_opcode = {
4490*d2201f2fSdrahn   "bnei",
4491*d2201f2fSdrahn   3,
4492*d2201f2fSdrahn   bnei_template,
4493*d2201f2fSdrahn   &bsi8_iclass
4494*d2201f2fSdrahn };
4495*d2201f2fSdrahn 
4496*d2201f2fSdrahn static xtensa_opcode_internal bnez_opcode = {
4497*d2201f2fSdrahn   "bnez",
4498*d2201f2fSdrahn   3,
4499*d2201f2fSdrahn   bnez_template,
4500*d2201f2fSdrahn   &bsz12_iclass
4501*d2201f2fSdrahn };
4502*d2201f2fSdrahn 
4503*d2201f2fSdrahn static xtensa_opcode_internal bnez_n_opcode = {
4504*d2201f2fSdrahn   "bnez.n",
4505*d2201f2fSdrahn   2,
4506*d2201f2fSdrahn   bnez_n_template,
4507*d2201f2fSdrahn   &bz6_iclass
4508*d2201f2fSdrahn };
4509*d2201f2fSdrahn 
4510*d2201f2fSdrahn static xtensa_opcode_internal bnone_opcode = {
4511*d2201f2fSdrahn   "bnone",
4512*d2201f2fSdrahn   3,
4513*d2201f2fSdrahn   bnone_template,
4514*d2201f2fSdrahn   &bst8_iclass
4515*d2201f2fSdrahn };
4516*d2201f2fSdrahn 
4517*d2201f2fSdrahn static xtensa_opcode_internal break_opcode = {
4518*d2201f2fSdrahn   "break",
4519*d2201f2fSdrahn   3,
4520*d2201f2fSdrahn   break_template,
4521*d2201f2fSdrahn   &break_iclass
4522*d2201f2fSdrahn };
4523*d2201f2fSdrahn 
4524*d2201f2fSdrahn static xtensa_opcode_internal break_n_opcode = {
4525*d2201f2fSdrahn   "break.n",
4526*d2201f2fSdrahn   2,
4527*d2201f2fSdrahn   break_n_template,
4528*d2201f2fSdrahn   &break_n_iclass
4529*d2201f2fSdrahn };
4530*d2201f2fSdrahn 
4531*d2201f2fSdrahn static xtensa_opcode_internal call0_opcode = {
4532*d2201f2fSdrahn   "call0",
4533*d2201f2fSdrahn   3,
4534*d2201f2fSdrahn   call0_template,
4535*d2201f2fSdrahn   &call_iclass
4536*d2201f2fSdrahn };
4537*d2201f2fSdrahn 
4538*d2201f2fSdrahn static xtensa_opcode_internal call12_opcode = {
4539*d2201f2fSdrahn   "call12",
4540*d2201f2fSdrahn   3,
4541*d2201f2fSdrahn   call12_template,
4542*d2201f2fSdrahn   &call12_iclass
4543*d2201f2fSdrahn };
4544*d2201f2fSdrahn 
4545*d2201f2fSdrahn static xtensa_opcode_internal call4_opcode = {
4546*d2201f2fSdrahn   "call4",
4547*d2201f2fSdrahn   3,
4548*d2201f2fSdrahn   call4_template,
4549*d2201f2fSdrahn   &call4_iclass
4550*d2201f2fSdrahn };
4551*d2201f2fSdrahn 
4552*d2201f2fSdrahn static xtensa_opcode_internal call8_opcode = {
4553*d2201f2fSdrahn   "call8",
4554*d2201f2fSdrahn   3,
4555*d2201f2fSdrahn   call8_template,
4556*d2201f2fSdrahn   &call8_iclass
4557*d2201f2fSdrahn };
4558*d2201f2fSdrahn 
4559*d2201f2fSdrahn static xtensa_opcode_internal callx0_opcode = {
4560*d2201f2fSdrahn   "callx0",
4561*d2201f2fSdrahn   3,
4562*d2201f2fSdrahn   callx0_template,
4563*d2201f2fSdrahn   &callx_iclass
4564*d2201f2fSdrahn };
4565*d2201f2fSdrahn 
4566*d2201f2fSdrahn static xtensa_opcode_internal callx12_opcode = {
4567*d2201f2fSdrahn   "callx12",
4568*d2201f2fSdrahn   3,
4569*d2201f2fSdrahn   callx12_template,
4570*d2201f2fSdrahn   &callx12_iclass
4571*d2201f2fSdrahn };
4572*d2201f2fSdrahn 
4573*d2201f2fSdrahn static xtensa_opcode_internal callx4_opcode = {
4574*d2201f2fSdrahn   "callx4",
4575*d2201f2fSdrahn   3,
4576*d2201f2fSdrahn   callx4_template,
4577*d2201f2fSdrahn   &callx4_iclass
4578*d2201f2fSdrahn };
4579*d2201f2fSdrahn 
4580*d2201f2fSdrahn static xtensa_opcode_internal callx8_opcode = {
4581*d2201f2fSdrahn   "callx8",
4582*d2201f2fSdrahn   3,
4583*d2201f2fSdrahn   callx8_template,
4584*d2201f2fSdrahn   &callx8_iclass
4585*d2201f2fSdrahn };
4586*d2201f2fSdrahn 
4587*d2201f2fSdrahn static xtensa_opcode_internal dhi_opcode = {
4588*d2201f2fSdrahn   "dhi",
4589*d2201f2fSdrahn   3,
4590*d2201f2fSdrahn   dhi_template,
4591*d2201f2fSdrahn   &dcache_iclass
4592*d2201f2fSdrahn };
4593*d2201f2fSdrahn 
4594*d2201f2fSdrahn static xtensa_opcode_internal dhwb_opcode = {
4595*d2201f2fSdrahn   "dhwb",
4596*d2201f2fSdrahn   3,
4597*d2201f2fSdrahn   dhwb_template,
4598*d2201f2fSdrahn   &dcache_iclass
4599*d2201f2fSdrahn };
4600*d2201f2fSdrahn 
4601*d2201f2fSdrahn static xtensa_opcode_internal dhwbi_opcode = {
4602*d2201f2fSdrahn   "dhwbi",
4603*d2201f2fSdrahn   3,
4604*d2201f2fSdrahn   dhwbi_template,
4605*d2201f2fSdrahn   &dcache_iclass
4606*d2201f2fSdrahn };
4607*d2201f2fSdrahn 
4608*d2201f2fSdrahn static xtensa_opcode_internal dii_opcode = {
4609*d2201f2fSdrahn   "dii",
4610*d2201f2fSdrahn   3,
4611*d2201f2fSdrahn   dii_template,
4612*d2201f2fSdrahn   &dcache_iclass
4613*d2201f2fSdrahn };
4614*d2201f2fSdrahn 
4615*d2201f2fSdrahn static xtensa_opcode_internal diwb_opcode = {
4616*d2201f2fSdrahn   "diwb",
4617*d2201f2fSdrahn   3,
4618*d2201f2fSdrahn   diwb_template,
4619*d2201f2fSdrahn   &dce_iclass
4620*d2201f2fSdrahn };
4621*d2201f2fSdrahn 
4622*d2201f2fSdrahn static xtensa_opcode_internal diwbi_opcode = {
4623*d2201f2fSdrahn   "diwbi",
4624*d2201f2fSdrahn   3,
4625*d2201f2fSdrahn   diwbi_template,
4626*d2201f2fSdrahn   &dce_iclass
4627*d2201f2fSdrahn };
4628*d2201f2fSdrahn 
4629*d2201f2fSdrahn static xtensa_opcode_internal dpfr_opcode = {
4630*d2201f2fSdrahn   "dpfr",
4631*d2201f2fSdrahn   3,
4632*d2201f2fSdrahn   dpfr_template,
4633*d2201f2fSdrahn   &dpf_iclass
4634*d2201f2fSdrahn };
4635*d2201f2fSdrahn 
4636*d2201f2fSdrahn static xtensa_opcode_internal dpfro_opcode = {
4637*d2201f2fSdrahn   "dpfro",
4638*d2201f2fSdrahn   3,
4639*d2201f2fSdrahn   dpfro_template,
4640*d2201f2fSdrahn   &dpf_iclass
4641*d2201f2fSdrahn };
4642*d2201f2fSdrahn 
4643*d2201f2fSdrahn static xtensa_opcode_internal dpfw_opcode = {
4644*d2201f2fSdrahn   "dpfw",
4645*d2201f2fSdrahn   3,
4646*d2201f2fSdrahn   dpfw_template,
4647*d2201f2fSdrahn   &dpf_iclass
4648*d2201f2fSdrahn };
4649*d2201f2fSdrahn 
4650*d2201f2fSdrahn static xtensa_opcode_internal dpfwo_opcode = {
4651*d2201f2fSdrahn   "dpfwo",
4652*d2201f2fSdrahn   3,
4653*d2201f2fSdrahn   dpfwo_template,
4654*d2201f2fSdrahn   &dpf_iclass
4655*d2201f2fSdrahn };
4656*d2201f2fSdrahn 
4657*d2201f2fSdrahn static xtensa_opcode_internal dsync_opcode = {
4658*d2201f2fSdrahn   "dsync",
4659*d2201f2fSdrahn   3,
4660*d2201f2fSdrahn   dsync_template,
4661*d2201f2fSdrahn   &sync_iclass
4662*d2201f2fSdrahn };
4663*d2201f2fSdrahn 
4664*d2201f2fSdrahn static xtensa_opcode_internal entry_opcode = {
4665*d2201f2fSdrahn   "entry",
4666*d2201f2fSdrahn   3,
4667*d2201f2fSdrahn   entry_template,
4668*d2201f2fSdrahn   &entry_iclass
4669*d2201f2fSdrahn };
4670*d2201f2fSdrahn 
4671*d2201f2fSdrahn static xtensa_opcode_internal esync_opcode = {
4672*d2201f2fSdrahn   "esync",
4673*d2201f2fSdrahn   3,
4674*d2201f2fSdrahn   esync_template,
4675*d2201f2fSdrahn   &sync_iclass
4676*d2201f2fSdrahn };
4677*d2201f2fSdrahn 
4678*d2201f2fSdrahn static xtensa_opcode_internal excw_opcode = {
4679*d2201f2fSdrahn   "excw",
4680*d2201f2fSdrahn   3,
4681*d2201f2fSdrahn   excw_template,
4682*d2201f2fSdrahn   &excw_iclass
4683*d2201f2fSdrahn };
4684*d2201f2fSdrahn 
4685*d2201f2fSdrahn static xtensa_opcode_internal extui_opcode = {
4686*d2201f2fSdrahn   "extui",
4687*d2201f2fSdrahn   3,
4688*d2201f2fSdrahn   extui_template,
4689*d2201f2fSdrahn   &exti_iclass
4690*d2201f2fSdrahn };
4691*d2201f2fSdrahn 
4692*d2201f2fSdrahn static xtensa_opcode_internal idtlb_opcode = {
4693*d2201f2fSdrahn   "idtlb",
4694*d2201f2fSdrahn   3,
4695*d2201f2fSdrahn   idtlb_template,
4696*d2201f2fSdrahn   &itlb_iclass
4697*d2201f2fSdrahn };
4698*d2201f2fSdrahn 
4699*d2201f2fSdrahn static xtensa_opcode_internal idtlba_opcode = {
4700*d2201f2fSdrahn   "idtlba",
4701*d2201f2fSdrahn   3,
4702*d2201f2fSdrahn   idtlba_template,
4703*d2201f2fSdrahn   &itlba_iclass
4704*d2201f2fSdrahn };
4705*d2201f2fSdrahn 
4706*d2201f2fSdrahn static xtensa_opcode_internal ihi_opcode = {
4707*d2201f2fSdrahn   "ihi",
4708*d2201f2fSdrahn   3,
4709*d2201f2fSdrahn   ihi_template,
4710*d2201f2fSdrahn   &icache_iclass
4711*d2201f2fSdrahn };
4712*d2201f2fSdrahn 
4713*d2201f2fSdrahn static xtensa_opcode_internal iii_opcode = {
4714*d2201f2fSdrahn   "iii",
4715*d2201f2fSdrahn   3,
4716*d2201f2fSdrahn   iii_template,
4717*d2201f2fSdrahn   &icache_iclass
4718*d2201f2fSdrahn };
4719*d2201f2fSdrahn 
4720*d2201f2fSdrahn static xtensa_opcode_internal iitlb_opcode = {
4721*d2201f2fSdrahn   "iitlb",
4722*d2201f2fSdrahn   3,
4723*d2201f2fSdrahn   iitlb_template,
4724*d2201f2fSdrahn   &itlb_iclass
4725*d2201f2fSdrahn };
4726*d2201f2fSdrahn 
4727*d2201f2fSdrahn static xtensa_opcode_internal iitlba_opcode = {
4728*d2201f2fSdrahn   "iitlba",
4729*d2201f2fSdrahn   3,
4730*d2201f2fSdrahn   iitlba_template,
4731*d2201f2fSdrahn   &itlba_iclass
4732*d2201f2fSdrahn };
4733*d2201f2fSdrahn 
4734*d2201f2fSdrahn static xtensa_opcode_internal ipf_opcode = {
4735*d2201f2fSdrahn   "ipf",
4736*d2201f2fSdrahn   3,
4737*d2201f2fSdrahn   ipf_template,
4738*d2201f2fSdrahn   &icache_iclass
4739*d2201f2fSdrahn };
4740*d2201f2fSdrahn 
4741*d2201f2fSdrahn static xtensa_opcode_internal isync_opcode = {
4742*d2201f2fSdrahn   "isync",
4743*d2201f2fSdrahn   3,
4744*d2201f2fSdrahn   isync_template,
4745*d2201f2fSdrahn   &sync_iclass
4746*d2201f2fSdrahn };
4747*d2201f2fSdrahn 
4748*d2201f2fSdrahn static xtensa_opcode_internal j_opcode = {
4749*d2201f2fSdrahn   "j",
4750*d2201f2fSdrahn   3,
4751*d2201f2fSdrahn   j_template,
4752*d2201f2fSdrahn   &jump_iclass
4753*d2201f2fSdrahn };
4754*d2201f2fSdrahn 
4755*d2201f2fSdrahn static xtensa_opcode_internal jx_opcode = {
4756*d2201f2fSdrahn   "jx",
4757*d2201f2fSdrahn   3,
4758*d2201f2fSdrahn   jx_template,
4759*d2201f2fSdrahn   &jumpx_iclass
4760*d2201f2fSdrahn };
4761*d2201f2fSdrahn 
4762*d2201f2fSdrahn static xtensa_opcode_internal l16si_opcode = {
4763*d2201f2fSdrahn   "l16si",
4764*d2201f2fSdrahn   3,
4765*d2201f2fSdrahn   l16si_template,
4766*d2201f2fSdrahn   &l16i_iclass
4767*d2201f2fSdrahn };
4768*d2201f2fSdrahn 
4769*d2201f2fSdrahn static xtensa_opcode_internal l16ui_opcode = {
4770*d2201f2fSdrahn   "l16ui",
4771*d2201f2fSdrahn   3,
4772*d2201f2fSdrahn   l16ui_template,
4773*d2201f2fSdrahn   &l16i_iclass
4774*d2201f2fSdrahn };
4775*d2201f2fSdrahn 
4776*d2201f2fSdrahn static xtensa_opcode_internal l32e_opcode = {
4777*d2201f2fSdrahn   "l32e",
4778*d2201f2fSdrahn   3,
4779*d2201f2fSdrahn   l32e_template,
4780*d2201f2fSdrahn   &l32e_iclass
4781*d2201f2fSdrahn };
4782*d2201f2fSdrahn 
4783*d2201f2fSdrahn static xtensa_opcode_internal l32i_opcode = {
4784*d2201f2fSdrahn   "l32i",
4785*d2201f2fSdrahn   3,
4786*d2201f2fSdrahn   l32i_template,
4787*d2201f2fSdrahn   &l32i_iclass
4788*d2201f2fSdrahn };
4789*d2201f2fSdrahn 
4790*d2201f2fSdrahn static xtensa_opcode_internal l32i_n_opcode = {
4791*d2201f2fSdrahn   "l32i.n",
4792*d2201f2fSdrahn   2,
4793*d2201f2fSdrahn   l32i_n_template,
4794*d2201f2fSdrahn   &loadi4_iclass
4795*d2201f2fSdrahn };
4796*d2201f2fSdrahn 
4797*d2201f2fSdrahn static xtensa_opcode_internal l32r_opcode = {
4798*d2201f2fSdrahn   "l32r",
4799*d2201f2fSdrahn   3,
4800*d2201f2fSdrahn   l32r_template,
4801*d2201f2fSdrahn   &l32r_iclass
4802*d2201f2fSdrahn };
4803*d2201f2fSdrahn 
4804*d2201f2fSdrahn static xtensa_opcode_internal l8ui_opcode = {
4805*d2201f2fSdrahn   "l8ui",
4806*d2201f2fSdrahn   3,
4807*d2201f2fSdrahn   l8ui_template,
4808*d2201f2fSdrahn   &l8i_iclass
4809*d2201f2fSdrahn };
4810*d2201f2fSdrahn 
4811*d2201f2fSdrahn static xtensa_opcode_internal ldct_opcode = {
4812*d2201f2fSdrahn   "ldct",
4813*d2201f2fSdrahn   3,
4814*d2201f2fSdrahn   ldct_template,
4815*d2201f2fSdrahn   &actl_iclass
4816*d2201f2fSdrahn };
4817*d2201f2fSdrahn 
4818*d2201f2fSdrahn static xtensa_opcode_internal lict_opcode = {
4819*d2201f2fSdrahn   "lict",
4820*d2201f2fSdrahn   3,
4821*d2201f2fSdrahn   lict_template,
4822*d2201f2fSdrahn   &actl_iclass
4823*d2201f2fSdrahn };
4824*d2201f2fSdrahn 
4825*d2201f2fSdrahn static xtensa_opcode_internal licw_opcode = {
4826*d2201f2fSdrahn   "licw",
4827*d2201f2fSdrahn   3,
4828*d2201f2fSdrahn   licw_template,
4829*d2201f2fSdrahn   &actl_iclass
4830*d2201f2fSdrahn };
4831*d2201f2fSdrahn 
4832*d2201f2fSdrahn static xtensa_opcode_internal loop_opcode = {
4833*d2201f2fSdrahn   "loop",
4834*d2201f2fSdrahn   3,
4835*d2201f2fSdrahn   loop_template,
4836*d2201f2fSdrahn   &loop_iclass
4837*d2201f2fSdrahn };
4838*d2201f2fSdrahn 
4839*d2201f2fSdrahn static xtensa_opcode_internal loopgtz_opcode = {
4840*d2201f2fSdrahn   "loopgtz",
4841*d2201f2fSdrahn   3,
4842*d2201f2fSdrahn   loopgtz_template,
4843*d2201f2fSdrahn   &loop_iclass
4844*d2201f2fSdrahn };
4845*d2201f2fSdrahn 
4846*d2201f2fSdrahn static xtensa_opcode_internal loopnez_opcode = {
4847*d2201f2fSdrahn   "loopnez",
4848*d2201f2fSdrahn   3,
4849*d2201f2fSdrahn   loopnez_template,
4850*d2201f2fSdrahn   &loop_iclass
4851*d2201f2fSdrahn };
4852*d2201f2fSdrahn 
4853*d2201f2fSdrahn static xtensa_opcode_internal memw_opcode = {
4854*d2201f2fSdrahn   "memw",
4855*d2201f2fSdrahn   3,
4856*d2201f2fSdrahn   memw_template,
4857*d2201f2fSdrahn   &sync_iclass
4858*d2201f2fSdrahn };
4859*d2201f2fSdrahn 
4860*d2201f2fSdrahn static xtensa_opcode_internal mov_n_opcode = {
4861*d2201f2fSdrahn   "mov.n",
4862*d2201f2fSdrahn   2,
4863*d2201f2fSdrahn   mov_n_template,
4864*d2201f2fSdrahn   &mov_n_iclass
4865*d2201f2fSdrahn };
4866*d2201f2fSdrahn 
4867*d2201f2fSdrahn static xtensa_opcode_internal moveqz_opcode = {
4868*d2201f2fSdrahn   "moveqz",
4869*d2201f2fSdrahn   3,
4870*d2201f2fSdrahn   moveqz_template,
4871*d2201f2fSdrahn   &movz_iclass
4872*d2201f2fSdrahn };
4873*d2201f2fSdrahn 
4874*d2201f2fSdrahn static xtensa_opcode_internal movgez_opcode = {
4875*d2201f2fSdrahn   "movgez",
4876*d2201f2fSdrahn   3,
4877*d2201f2fSdrahn   movgez_template,
4878*d2201f2fSdrahn   &movz_iclass
4879*d2201f2fSdrahn };
4880*d2201f2fSdrahn 
4881*d2201f2fSdrahn static xtensa_opcode_internal movi_opcode = {
4882*d2201f2fSdrahn   "movi",
4883*d2201f2fSdrahn   3,
4884*d2201f2fSdrahn   movi_template,
4885*d2201f2fSdrahn   &movi_iclass
4886*d2201f2fSdrahn };
4887*d2201f2fSdrahn 
4888*d2201f2fSdrahn static xtensa_opcode_internal movi_n_opcode = {
4889*d2201f2fSdrahn   "movi.n",
4890*d2201f2fSdrahn   2,
4891*d2201f2fSdrahn   movi_n_template,
4892*d2201f2fSdrahn   &movi_n_iclass
4893*d2201f2fSdrahn };
4894*d2201f2fSdrahn 
4895*d2201f2fSdrahn static xtensa_opcode_internal movltz_opcode = {
4896*d2201f2fSdrahn   "movltz",
4897*d2201f2fSdrahn   3,
4898*d2201f2fSdrahn   movltz_template,
4899*d2201f2fSdrahn   &movz_iclass
4900*d2201f2fSdrahn };
4901*d2201f2fSdrahn 
4902*d2201f2fSdrahn static xtensa_opcode_internal movnez_opcode = {
4903*d2201f2fSdrahn   "movnez",
4904*d2201f2fSdrahn   3,
4905*d2201f2fSdrahn   movnez_template,
4906*d2201f2fSdrahn   &movz_iclass
4907*d2201f2fSdrahn };
4908*d2201f2fSdrahn 
4909*d2201f2fSdrahn static xtensa_opcode_internal movsp_opcode = {
4910*d2201f2fSdrahn   "movsp",
4911*d2201f2fSdrahn   3,
4912*d2201f2fSdrahn   movsp_template,
4913*d2201f2fSdrahn   &movsp_iclass
4914*d2201f2fSdrahn };
4915*d2201f2fSdrahn 
4916*d2201f2fSdrahn static xtensa_opcode_internal neg_opcode = {
4917*d2201f2fSdrahn   "neg",
4918*d2201f2fSdrahn   3,
4919*d2201f2fSdrahn   neg_template,
4920*d2201f2fSdrahn   &neg_iclass
4921*d2201f2fSdrahn };
4922*d2201f2fSdrahn 
4923*d2201f2fSdrahn static xtensa_opcode_internal nop_n_opcode = {
4924*d2201f2fSdrahn   "nop.n",
4925*d2201f2fSdrahn   2,
4926*d2201f2fSdrahn   nop_n_template,
4927*d2201f2fSdrahn   &nopn_iclass
4928*d2201f2fSdrahn };
4929*d2201f2fSdrahn 
4930*d2201f2fSdrahn static xtensa_opcode_internal nsa_opcode = {
4931*d2201f2fSdrahn   "nsa",
4932*d2201f2fSdrahn   3,
4933*d2201f2fSdrahn   nsa_template,
4934*d2201f2fSdrahn   &nsa_iclass
4935*d2201f2fSdrahn };
4936*d2201f2fSdrahn 
4937*d2201f2fSdrahn static xtensa_opcode_internal nsau_opcode = {
4938*d2201f2fSdrahn   "nsau",
4939*d2201f2fSdrahn   3,
4940*d2201f2fSdrahn   nsau_template,
4941*d2201f2fSdrahn   &nsa_iclass
4942*d2201f2fSdrahn };
4943*d2201f2fSdrahn 
4944*d2201f2fSdrahn static xtensa_opcode_internal or_opcode = {
4945*d2201f2fSdrahn   "or",
4946*d2201f2fSdrahn   3,
4947*d2201f2fSdrahn   or_template,
4948*d2201f2fSdrahn   &bit_iclass
4949*d2201f2fSdrahn };
4950*d2201f2fSdrahn 
4951*d2201f2fSdrahn static xtensa_opcode_internal pdtlb_opcode = {
4952*d2201f2fSdrahn   "pdtlb",
4953*d2201f2fSdrahn   3,
4954*d2201f2fSdrahn   pdtlb_template,
4955*d2201f2fSdrahn   &rtlb_iclass
4956*d2201f2fSdrahn };
4957*d2201f2fSdrahn 
4958*d2201f2fSdrahn static xtensa_opcode_internal pitlb_opcode = {
4959*d2201f2fSdrahn   "pitlb",
4960*d2201f2fSdrahn   3,
4961*d2201f2fSdrahn   pitlb_template,
4962*d2201f2fSdrahn   &rtlb_iclass
4963*d2201f2fSdrahn };
4964*d2201f2fSdrahn 
4965*d2201f2fSdrahn static xtensa_opcode_internal rdtlb0_opcode = {
4966*d2201f2fSdrahn   "rdtlb0",
4967*d2201f2fSdrahn   3,
4968*d2201f2fSdrahn   rdtlb0_template,
4969*d2201f2fSdrahn   &rtlb_iclass
4970*d2201f2fSdrahn };
4971*d2201f2fSdrahn 
4972*d2201f2fSdrahn static xtensa_opcode_internal rdtlb1_opcode = {
4973*d2201f2fSdrahn   "rdtlb1",
4974*d2201f2fSdrahn   3,
4975*d2201f2fSdrahn   rdtlb1_template,
4976*d2201f2fSdrahn   &rtlb_iclass
4977*d2201f2fSdrahn };
4978*d2201f2fSdrahn 
4979*d2201f2fSdrahn static xtensa_opcode_internal ret_opcode = {
4980*d2201f2fSdrahn   "ret",
4981*d2201f2fSdrahn   3,
4982*d2201f2fSdrahn   ret_template,
4983*d2201f2fSdrahn   &return_iclass
4984*d2201f2fSdrahn };
4985*d2201f2fSdrahn 
4986*d2201f2fSdrahn static xtensa_opcode_internal ret_n_opcode = {
4987*d2201f2fSdrahn   "ret.n",
4988*d2201f2fSdrahn   2,
4989*d2201f2fSdrahn   ret_n_template,
4990*d2201f2fSdrahn   &retn_iclass
4991*d2201f2fSdrahn };
4992*d2201f2fSdrahn 
4993*d2201f2fSdrahn static xtensa_opcode_internal retw_opcode = {
4994*d2201f2fSdrahn   "retw",
4995*d2201f2fSdrahn   3,
4996*d2201f2fSdrahn   retw_template,
4997*d2201f2fSdrahn   &return_iclass
4998*d2201f2fSdrahn };
4999*d2201f2fSdrahn 
5000*d2201f2fSdrahn static xtensa_opcode_internal retw_n_opcode = {
5001*d2201f2fSdrahn   "retw.n",
5002*d2201f2fSdrahn   2,
5003*d2201f2fSdrahn   retw_n_template,
5004*d2201f2fSdrahn   &retn_iclass
5005*d2201f2fSdrahn };
5006*d2201f2fSdrahn 
5007*d2201f2fSdrahn static xtensa_opcode_internal rfde_opcode = {
5008*d2201f2fSdrahn   "rfde",
5009*d2201f2fSdrahn   3,
5010*d2201f2fSdrahn   rfde_template,
5011*d2201f2fSdrahn   &rfe_iclass
5012*d2201f2fSdrahn };
5013*d2201f2fSdrahn 
5014*d2201f2fSdrahn static xtensa_opcode_internal rfe_opcode = {
5015*d2201f2fSdrahn   "rfe",
5016*d2201f2fSdrahn   3,
5017*d2201f2fSdrahn   rfe_template,
5018*d2201f2fSdrahn   &rfe_iclass
5019*d2201f2fSdrahn };
5020*d2201f2fSdrahn 
5021*d2201f2fSdrahn static xtensa_opcode_internal rfi_opcode = {
5022*d2201f2fSdrahn   "rfi",
5023*d2201f2fSdrahn   3,
5024*d2201f2fSdrahn   rfi_template,
5025*d2201f2fSdrahn   &rfi_iclass
5026*d2201f2fSdrahn };
5027*d2201f2fSdrahn 
5028*d2201f2fSdrahn static xtensa_opcode_internal rfwo_opcode = {
5029*d2201f2fSdrahn   "rfwo",
5030*d2201f2fSdrahn   3,
5031*d2201f2fSdrahn   rfwo_template,
5032*d2201f2fSdrahn   &rfe_iclass
5033*d2201f2fSdrahn };
5034*d2201f2fSdrahn 
5035*d2201f2fSdrahn static xtensa_opcode_internal rfwu_opcode = {
5036*d2201f2fSdrahn   "rfwu",
5037*d2201f2fSdrahn   3,
5038*d2201f2fSdrahn   rfwu_template,
5039*d2201f2fSdrahn   &rfe_iclass
5040*d2201f2fSdrahn };
5041*d2201f2fSdrahn 
5042*d2201f2fSdrahn static xtensa_opcode_internal ritlb0_opcode = {
5043*d2201f2fSdrahn   "ritlb0",
5044*d2201f2fSdrahn   3,
5045*d2201f2fSdrahn   ritlb0_template,
5046*d2201f2fSdrahn   &rtlb_iclass
5047*d2201f2fSdrahn };
5048*d2201f2fSdrahn 
5049*d2201f2fSdrahn static xtensa_opcode_internal ritlb1_opcode = {
5050*d2201f2fSdrahn   "ritlb1",
5051*d2201f2fSdrahn   3,
5052*d2201f2fSdrahn   ritlb1_template,
5053*d2201f2fSdrahn   &rtlb_iclass
5054*d2201f2fSdrahn };
5055*d2201f2fSdrahn 
5056*d2201f2fSdrahn static xtensa_opcode_internal rotw_opcode = {
5057*d2201f2fSdrahn   "rotw",
5058*d2201f2fSdrahn   3,
5059*d2201f2fSdrahn   rotw_template,
5060*d2201f2fSdrahn   &rotw_iclass
5061*d2201f2fSdrahn };
5062*d2201f2fSdrahn 
5063*d2201f2fSdrahn static xtensa_opcode_internal rsil_opcode = {
5064*d2201f2fSdrahn   "rsil",
5065*d2201f2fSdrahn   3,
5066*d2201f2fSdrahn   rsil_template,
5067*d2201f2fSdrahn   &rsil_iclass
5068*d2201f2fSdrahn };
5069*d2201f2fSdrahn 
5070*d2201f2fSdrahn static xtensa_opcode_internal rsr_opcode = {
5071*d2201f2fSdrahn   "rsr",
5072*d2201f2fSdrahn   3,
5073*d2201f2fSdrahn   rsr_template,
5074*d2201f2fSdrahn   &rsr_iclass
5075*d2201f2fSdrahn };
5076*d2201f2fSdrahn 
5077*d2201f2fSdrahn static xtensa_opcode_internal rsync_opcode = {
5078*d2201f2fSdrahn   "rsync",
5079*d2201f2fSdrahn   3,
5080*d2201f2fSdrahn   rsync_template,
5081*d2201f2fSdrahn   &sync_iclass
5082*d2201f2fSdrahn };
5083*d2201f2fSdrahn 
5084*d2201f2fSdrahn static xtensa_opcode_internal s16i_opcode = {
5085*d2201f2fSdrahn   "s16i",
5086*d2201f2fSdrahn   3,
5087*d2201f2fSdrahn   s16i_template,
5088*d2201f2fSdrahn   &s16i_iclass
5089*d2201f2fSdrahn };
5090*d2201f2fSdrahn 
5091*d2201f2fSdrahn static xtensa_opcode_internal s32e_opcode = {
5092*d2201f2fSdrahn   "s32e",
5093*d2201f2fSdrahn   3,
5094*d2201f2fSdrahn   s32e_template,
5095*d2201f2fSdrahn   &s32e_iclass
5096*d2201f2fSdrahn };
5097*d2201f2fSdrahn 
5098*d2201f2fSdrahn static xtensa_opcode_internal s32i_opcode = {
5099*d2201f2fSdrahn   "s32i",
5100*d2201f2fSdrahn   3,
5101*d2201f2fSdrahn   s32i_template,
5102*d2201f2fSdrahn   &s32i_iclass
5103*d2201f2fSdrahn };
5104*d2201f2fSdrahn 
5105*d2201f2fSdrahn static xtensa_opcode_internal s32i_n_opcode = {
5106*d2201f2fSdrahn   "s32i.n",
5107*d2201f2fSdrahn   2,
5108*d2201f2fSdrahn   s32i_n_template,
5109*d2201f2fSdrahn   &storei4_iclass
5110*d2201f2fSdrahn };
5111*d2201f2fSdrahn 
5112*d2201f2fSdrahn static xtensa_opcode_internal s8i_opcode = {
5113*d2201f2fSdrahn   "s8i",
5114*d2201f2fSdrahn   3,
5115*d2201f2fSdrahn   s8i_template,
5116*d2201f2fSdrahn   &s8i_iclass
5117*d2201f2fSdrahn };
5118*d2201f2fSdrahn 
5119*d2201f2fSdrahn static xtensa_opcode_internal sdct_opcode = {
5120*d2201f2fSdrahn   "sdct",
5121*d2201f2fSdrahn   3,
5122*d2201f2fSdrahn   sdct_template,
5123*d2201f2fSdrahn   &acts_iclass
5124*d2201f2fSdrahn };
5125*d2201f2fSdrahn 
5126*d2201f2fSdrahn static xtensa_opcode_internal sict_opcode = {
5127*d2201f2fSdrahn   "sict",
5128*d2201f2fSdrahn   3,
5129*d2201f2fSdrahn   sict_template,
5130*d2201f2fSdrahn   &acts_iclass
5131*d2201f2fSdrahn };
5132*d2201f2fSdrahn 
5133*d2201f2fSdrahn static xtensa_opcode_internal sicw_opcode = {
5134*d2201f2fSdrahn   "sicw",
5135*d2201f2fSdrahn   3,
5136*d2201f2fSdrahn   sicw_template,
5137*d2201f2fSdrahn   &acts_iclass
5138*d2201f2fSdrahn };
5139*d2201f2fSdrahn 
5140*d2201f2fSdrahn static xtensa_opcode_internal simcall_opcode = {
5141*d2201f2fSdrahn   "simcall",
5142*d2201f2fSdrahn   3,
5143*d2201f2fSdrahn   simcall_template,
5144*d2201f2fSdrahn   &syscall_iclass
5145*d2201f2fSdrahn };
5146*d2201f2fSdrahn 
5147*d2201f2fSdrahn static xtensa_opcode_internal sll_opcode = {
5148*d2201f2fSdrahn   "sll",
5149*d2201f2fSdrahn   3,
5150*d2201f2fSdrahn   sll_template,
5151*d2201f2fSdrahn   &shifts_iclass
5152*d2201f2fSdrahn };
5153*d2201f2fSdrahn 
5154*d2201f2fSdrahn static xtensa_opcode_internal slli_opcode = {
5155*d2201f2fSdrahn   "slli",
5156*d2201f2fSdrahn   3,
5157*d2201f2fSdrahn   slli_template,
5158*d2201f2fSdrahn   &slli_iclass
5159*d2201f2fSdrahn };
5160*d2201f2fSdrahn 
5161*d2201f2fSdrahn static xtensa_opcode_internal sra_opcode = {
5162*d2201f2fSdrahn   "sra",
5163*d2201f2fSdrahn   3,
5164*d2201f2fSdrahn   sra_template,
5165*d2201f2fSdrahn   &shiftt_iclass
5166*d2201f2fSdrahn };
5167*d2201f2fSdrahn 
5168*d2201f2fSdrahn static xtensa_opcode_internal srai_opcode = {
5169*d2201f2fSdrahn   "srai",
5170*d2201f2fSdrahn   3,
5171*d2201f2fSdrahn   srai_template,
5172*d2201f2fSdrahn   &srai_iclass
5173*d2201f2fSdrahn };
5174*d2201f2fSdrahn 
5175*d2201f2fSdrahn static xtensa_opcode_internal src_opcode = {
5176*d2201f2fSdrahn   "src",
5177*d2201f2fSdrahn   3,
5178*d2201f2fSdrahn   src_template,
5179*d2201f2fSdrahn   &shiftst_iclass
5180*d2201f2fSdrahn };
5181*d2201f2fSdrahn 
5182*d2201f2fSdrahn static xtensa_opcode_internal srl_opcode = {
5183*d2201f2fSdrahn   "srl",
5184*d2201f2fSdrahn   3,
5185*d2201f2fSdrahn   srl_template,
5186*d2201f2fSdrahn   &shiftt_iclass
5187*d2201f2fSdrahn };
5188*d2201f2fSdrahn 
5189*d2201f2fSdrahn static xtensa_opcode_internal srli_opcode = {
5190*d2201f2fSdrahn   "srli",
5191*d2201f2fSdrahn   3,
5192*d2201f2fSdrahn   srli_template,
5193*d2201f2fSdrahn   &srli_iclass
5194*d2201f2fSdrahn };
5195*d2201f2fSdrahn 
5196*d2201f2fSdrahn static xtensa_opcode_internal ssa8b_opcode = {
5197*d2201f2fSdrahn   "ssa8b",
5198*d2201f2fSdrahn   3,
5199*d2201f2fSdrahn   ssa8b_template,
5200*d2201f2fSdrahn   &sar_iclass
5201*d2201f2fSdrahn };
5202*d2201f2fSdrahn 
5203*d2201f2fSdrahn static xtensa_opcode_internal ssa8l_opcode = {
5204*d2201f2fSdrahn   "ssa8l",
5205*d2201f2fSdrahn   3,
5206*d2201f2fSdrahn   ssa8l_template,
5207*d2201f2fSdrahn   &sar_iclass
5208*d2201f2fSdrahn };
5209*d2201f2fSdrahn 
5210*d2201f2fSdrahn static xtensa_opcode_internal ssai_opcode = {
5211*d2201f2fSdrahn   "ssai",
5212*d2201f2fSdrahn   3,
5213*d2201f2fSdrahn   ssai_template,
5214*d2201f2fSdrahn   &sari_iclass
5215*d2201f2fSdrahn };
5216*d2201f2fSdrahn 
5217*d2201f2fSdrahn static xtensa_opcode_internal ssl_opcode = {
5218*d2201f2fSdrahn   "ssl",
5219*d2201f2fSdrahn   3,
5220*d2201f2fSdrahn   ssl_template,
5221*d2201f2fSdrahn   &sar_iclass
5222*d2201f2fSdrahn };
5223*d2201f2fSdrahn 
5224*d2201f2fSdrahn static xtensa_opcode_internal ssr_opcode = {
5225*d2201f2fSdrahn   "ssr",
5226*d2201f2fSdrahn   3,
5227*d2201f2fSdrahn   ssr_template,
5228*d2201f2fSdrahn   &sar_iclass
5229*d2201f2fSdrahn };
5230*d2201f2fSdrahn 
5231*d2201f2fSdrahn static xtensa_opcode_internal sub_opcode = {
5232*d2201f2fSdrahn   "sub",
5233*d2201f2fSdrahn   3,
5234*d2201f2fSdrahn   sub_template,
5235*d2201f2fSdrahn   &addsub_iclass
5236*d2201f2fSdrahn };
5237*d2201f2fSdrahn 
5238*d2201f2fSdrahn static xtensa_opcode_internal subx2_opcode = {
5239*d2201f2fSdrahn   "subx2",
5240*d2201f2fSdrahn   3,
5241*d2201f2fSdrahn   subx2_template,
5242*d2201f2fSdrahn   &addsub_iclass
5243*d2201f2fSdrahn };
5244*d2201f2fSdrahn 
5245*d2201f2fSdrahn static xtensa_opcode_internal subx4_opcode = {
5246*d2201f2fSdrahn   "subx4",
5247*d2201f2fSdrahn   3,
5248*d2201f2fSdrahn   subx4_template,
5249*d2201f2fSdrahn   &addsub_iclass
5250*d2201f2fSdrahn };
5251*d2201f2fSdrahn 
5252*d2201f2fSdrahn static xtensa_opcode_internal subx8_opcode = {
5253*d2201f2fSdrahn   "subx8",
5254*d2201f2fSdrahn   3,
5255*d2201f2fSdrahn   subx8_template,
5256*d2201f2fSdrahn   &addsub_iclass
5257*d2201f2fSdrahn };
5258*d2201f2fSdrahn 
5259*d2201f2fSdrahn static xtensa_opcode_internal syscall_opcode = {
5260*d2201f2fSdrahn   "syscall",
5261*d2201f2fSdrahn   3,
5262*d2201f2fSdrahn   syscall_template,
5263*d2201f2fSdrahn   &syscall_iclass
5264*d2201f2fSdrahn };
5265*d2201f2fSdrahn 
5266*d2201f2fSdrahn static xtensa_opcode_internal waiti_opcode = {
5267*d2201f2fSdrahn   "waiti",
5268*d2201f2fSdrahn   3,
5269*d2201f2fSdrahn   waiti_template,
5270*d2201f2fSdrahn   &wait_iclass
5271*d2201f2fSdrahn };
5272*d2201f2fSdrahn 
5273*d2201f2fSdrahn static xtensa_opcode_internal wdtlb_opcode = {
5274*d2201f2fSdrahn   "wdtlb",
5275*d2201f2fSdrahn   3,
5276*d2201f2fSdrahn   wdtlb_template,
5277*d2201f2fSdrahn   &wtlb_iclass
5278*d2201f2fSdrahn };
5279*d2201f2fSdrahn 
5280*d2201f2fSdrahn static xtensa_opcode_internal witlb_opcode = {
5281*d2201f2fSdrahn   "witlb",
5282*d2201f2fSdrahn   3,
5283*d2201f2fSdrahn   witlb_template,
5284*d2201f2fSdrahn   &wtlb_iclass
5285*d2201f2fSdrahn };
5286*d2201f2fSdrahn 
5287*d2201f2fSdrahn static xtensa_opcode_internal wsr_opcode = {
5288*d2201f2fSdrahn   "wsr",
5289*d2201f2fSdrahn   3,
5290*d2201f2fSdrahn   wsr_template,
5291*d2201f2fSdrahn   &wsr_iclass
5292*d2201f2fSdrahn };
5293*d2201f2fSdrahn 
5294*d2201f2fSdrahn static xtensa_opcode_internal xor_opcode = {
5295*d2201f2fSdrahn   "xor",
5296*d2201f2fSdrahn   3,
5297*d2201f2fSdrahn   xor_template,
5298*d2201f2fSdrahn   &bit_iclass
5299*d2201f2fSdrahn };
5300*d2201f2fSdrahn 
5301*d2201f2fSdrahn static xtensa_opcode_internal xsr_opcode = {
5302*d2201f2fSdrahn   "xsr",
5303*d2201f2fSdrahn   3,
5304*d2201f2fSdrahn   xsr_template,
5305*d2201f2fSdrahn   &xsr_iclass
5306*d2201f2fSdrahn };
5307*d2201f2fSdrahn 
5308*d2201f2fSdrahn static xtensa_opcode_internal * opcodes[149] = {
5309*d2201f2fSdrahn   &abs_opcode,
5310*d2201f2fSdrahn   &add_opcode,
5311*d2201f2fSdrahn   &add_n_opcode,
5312*d2201f2fSdrahn   &addi_opcode,
5313*d2201f2fSdrahn   &addi_n_opcode,
5314*d2201f2fSdrahn   &addmi_opcode,
5315*d2201f2fSdrahn   &addx2_opcode,
5316*d2201f2fSdrahn   &addx4_opcode,
5317*d2201f2fSdrahn   &addx8_opcode,
5318*d2201f2fSdrahn   &and_opcode,
5319*d2201f2fSdrahn   &ball_opcode,
5320*d2201f2fSdrahn   &bany_opcode,
5321*d2201f2fSdrahn   &bbc_opcode,
5322*d2201f2fSdrahn   &bbci_opcode,
5323*d2201f2fSdrahn   &bbs_opcode,
5324*d2201f2fSdrahn   &bbsi_opcode,
5325*d2201f2fSdrahn   &beq_opcode,
5326*d2201f2fSdrahn   &beqi_opcode,
5327*d2201f2fSdrahn   &beqz_opcode,
5328*d2201f2fSdrahn   &beqz_n_opcode,
5329*d2201f2fSdrahn   &bge_opcode,
5330*d2201f2fSdrahn   &bgei_opcode,
5331*d2201f2fSdrahn   &bgeu_opcode,
5332*d2201f2fSdrahn   &bgeui_opcode,
5333*d2201f2fSdrahn   &bgez_opcode,
5334*d2201f2fSdrahn   &blt_opcode,
5335*d2201f2fSdrahn   &blti_opcode,
5336*d2201f2fSdrahn   &bltu_opcode,
5337*d2201f2fSdrahn   &bltui_opcode,
5338*d2201f2fSdrahn   &bltz_opcode,
5339*d2201f2fSdrahn   &bnall_opcode,
5340*d2201f2fSdrahn   &bne_opcode,
5341*d2201f2fSdrahn   &bnei_opcode,
5342*d2201f2fSdrahn   &bnez_opcode,
5343*d2201f2fSdrahn   &bnez_n_opcode,
5344*d2201f2fSdrahn   &bnone_opcode,
5345*d2201f2fSdrahn   &break_opcode,
5346*d2201f2fSdrahn   &break_n_opcode,
5347*d2201f2fSdrahn   &call0_opcode,
5348*d2201f2fSdrahn   &call12_opcode,
5349*d2201f2fSdrahn   &call4_opcode,
5350*d2201f2fSdrahn   &call8_opcode,
5351*d2201f2fSdrahn   &callx0_opcode,
5352*d2201f2fSdrahn   &callx12_opcode,
5353*d2201f2fSdrahn   &callx4_opcode,
5354*d2201f2fSdrahn   &callx8_opcode,
5355*d2201f2fSdrahn   &dhi_opcode,
5356*d2201f2fSdrahn   &dhwb_opcode,
5357*d2201f2fSdrahn   &dhwbi_opcode,
5358*d2201f2fSdrahn   &dii_opcode,
5359*d2201f2fSdrahn   &diwb_opcode,
5360*d2201f2fSdrahn   &diwbi_opcode,
5361*d2201f2fSdrahn   &dpfr_opcode,
5362*d2201f2fSdrahn   &dpfro_opcode,
5363*d2201f2fSdrahn   &dpfw_opcode,
5364*d2201f2fSdrahn   &dpfwo_opcode,
5365*d2201f2fSdrahn   &dsync_opcode,
5366*d2201f2fSdrahn   &entry_opcode,
5367*d2201f2fSdrahn   &esync_opcode,
5368*d2201f2fSdrahn   &excw_opcode,
5369*d2201f2fSdrahn   &extui_opcode,
5370*d2201f2fSdrahn   &idtlb_opcode,
5371*d2201f2fSdrahn   &idtlba_opcode,
5372*d2201f2fSdrahn   &ihi_opcode,
5373*d2201f2fSdrahn   &iii_opcode,
5374*d2201f2fSdrahn   &iitlb_opcode,
5375*d2201f2fSdrahn   &iitlba_opcode,
5376*d2201f2fSdrahn   &ipf_opcode,
5377*d2201f2fSdrahn   &isync_opcode,
5378*d2201f2fSdrahn   &j_opcode,
5379*d2201f2fSdrahn   &jx_opcode,
5380*d2201f2fSdrahn   &l16si_opcode,
5381*d2201f2fSdrahn   &l16ui_opcode,
5382*d2201f2fSdrahn   &l32e_opcode,
5383*d2201f2fSdrahn   &l32i_opcode,
5384*d2201f2fSdrahn   &l32i_n_opcode,
5385*d2201f2fSdrahn   &l32r_opcode,
5386*d2201f2fSdrahn   &l8ui_opcode,
5387*d2201f2fSdrahn   &ldct_opcode,
5388*d2201f2fSdrahn   &lict_opcode,
5389*d2201f2fSdrahn   &licw_opcode,
5390*d2201f2fSdrahn   &loop_opcode,
5391*d2201f2fSdrahn   &loopgtz_opcode,
5392*d2201f2fSdrahn   &loopnez_opcode,
5393*d2201f2fSdrahn   &memw_opcode,
5394*d2201f2fSdrahn   &mov_n_opcode,
5395*d2201f2fSdrahn   &moveqz_opcode,
5396*d2201f2fSdrahn   &movgez_opcode,
5397*d2201f2fSdrahn   &movi_opcode,
5398*d2201f2fSdrahn   &movi_n_opcode,
5399*d2201f2fSdrahn   &movltz_opcode,
5400*d2201f2fSdrahn   &movnez_opcode,
5401*d2201f2fSdrahn   &movsp_opcode,
5402*d2201f2fSdrahn   &neg_opcode,
5403*d2201f2fSdrahn   &nop_n_opcode,
5404*d2201f2fSdrahn   &nsa_opcode,
5405*d2201f2fSdrahn   &nsau_opcode,
5406*d2201f2fSdrahn   &or_opcode,
5407*d2201f2fSdrahn   &pdtlb_opcode,
5408*d2201f2fSdrahn   &pitlb_opcode,
5409*d2201f2fSdrahn   &rdtlb0_opcode,
5410*d2201f2fSdrahn   &rdtlb1_opcode,
5411*d2201f2fSdrahn   &ret_opcode,
5412*d2201f2fSdrahn   &ret_n_opcode,
5413*d2201f2fSdrahn   &retw_opcode,
5414*d2201f2fSdrahn   &retw_n_opcode,
5415*d2201f2fSdrahn   &rfde_opcode,
5416*d2201f2fSdrahn   &rfe_opcode,
5417*d2201f2fSdrahn   &rfi_opcode,
5418*d2201f2fSdrahn   &rfwo_opcode,
5419*d2201f2fSdrahn   &rfwu_opcode,
5420*d2201f2fSdrahn   &ritlb0_opcode,
5421*d2201f2fSdrahn   &ritlb1_opcode,
5422*d2201f2fSdrahn   &rotw_opcode,
5423*d2201f2fSdrahn   &rsil_opcode,
5424*d2201f2fSdrahn   &rsr_opcode,
5425*d2201f2fSdrahn   &rsync_opcode,
5426*d2201f2fSdrahn   &s16i_opcode,
5427*d2201f2fSdrahn   &s32e_opcode,
5428*d2201f2fSdrahn   &s32i_opcode,
5429*d2201f2fSdrahn   &s32i_n_opcode,
5430*d2201f2fSdrahn   &s8i_opcode,
5431*d2201f2fSdrahn   &sdct_opcode,
5432*d2201f2fSdrahn   &sict_opcode,
5433*d2201f2fSdrahn   &sicw_opcode,
5434*d2201f2fSdrahn   &simcall_opcode,
5435*d2201f2fSdrahn   &sll_opcode,
5436*d2201f2fSdrahn   &slli_opcode,
5437*d2201f2fSdrahn   &sra_opcode,
5438*d2201f2fSdrahn   &srai_opcode,
5439*d2201f2fSdrahn   &src_opcode,
5440*d2201f2fSdrahn   &srl_opcode,
5441*d2201f2fSdrahn   &srli_opcode,
5442*d2201f2fSdrahn   &ssa8b_opcode,
5443*d2201f2fSdrahn   &ssa8l_opcode,
5444*d2201f2fSdrahn   &ssai_opcode,
5445*d2201f2fSdrahn   &ssl_opcode,
5446*d2201f2fSdrahn   &ssr_opcode,
5447*d2201f2fSdrahn   &sub_opcode,
5448*d2201f2fSdrahn   &subx2_opcode,
5449*d2201f2fSdrahn   &subx4_opcode,
5450*d2201f2fSdrahn   &subx8_opcode,
5451*d2201f2fSdrahn   &syscall_opcode,
5452*d2201f2fSdrahn   &waiti_opcode,
5453*d2201f2fSdrahn   &wdtlb_opcode,
5454*d2201f2fSdrahn   &witlb_opcode,
5455*d2201f2fSdrahn   &wsr_opcode,
5456*d2201f2fSdrahn   &xor_opcode,
5457*d2201f2fSdrahn   &xsr_opcode
5458*d2201f2fSdrahn };
5459*d2201f2fSdrahn 
5460*d2201f2fSdrahn xtensa_opcode_internal **
get_opcodes(void)5461*d2201f2fSdrahn get_opcodes (void)
5462*d2201f2fSdrahn {
5463*d2201f2fSdrahn   return &opcodes[0];
5464*d2201f2fSdrahn }
5465*d2201f2fSdrahn 
5466*d2201f2fSdrahn int
get_num_opcodes(void)5467*d2201f2fSdrahn get_num_opcodes (void)
5468*d2201f2fSdrahn {
5469*d2201f2fSdrahn   return 149;
5470*d2201f2fSdrahn }
5471*d2201f2fSdrahn 
5472*d2201f2fSdrahn #define xtensa_abs_op 0
5473*d2201f2fSdrahn #define xtensa_add_op 1
5474*d2201f2fSdrahn #define xtensa_add_n_op 2
5475*d2201f2fSdrahn #define xtensa_addi_op 3
5476*d2201f2fSdrahn #define xtensa_addi_n_op 4
5477*d2201f2fSdrahn #define xtensa_addmi_op 5
5478*d2201f2fSdrahn #define xtensa_addx2_op 6
5479*d2201f2fSdrahn #define xtensa_addx4_op 7
5480*d2201f2fSdrahn #define xtensa_addx8_op 8
5481*d2201f2fSdrahn #define xtensa_and_op 9
5482*d2201f2fSdrahn #define xtensa_ball_op 10
5483*d2201f2fSdrahn #define xtensa_bany_op 11
5484*d2201f2fSdrahn #define xtensa_bbc_op 12
5485*d2201f2fSdrahn #define xtensa_bbci_op 13
5486*d2201f2fSdrahn #define xtensa_bbs_op 14
5487*d2201f2fSdrahn #define xtensa_bbsi_op 15
5488*d2201f2fSdrahn #define xtensa_beq_op 16
5489*d2201f2fSdrahn #define xtensa_beqi_op 17
5490*d2201f2fSdrahn #define xtensa_beqz_op 18
5491*d2201f2fSdrahn #define xtensa_beqz_n_op 19
5492*d2201f2fSdrahn #define xtensa_bge_op 20
5493*d2201f2fSdrahn #define xtensa_bgei_op 21
5494*d2201f2fSdrahn #define xtensa_bgeu_op 22
5495*d2201f2fSdrahn #define xtensa_bgeui_op 23
5496*d2201f2fSdrahn #define xtensa_bgez_op 24
5497*d2201f2fSdrahn #define xtensa_blt_op 25
5498*d2201f2fSdrahn #define xtensa_blti_op 26
5499*d2201f2fSdrahn #define xtensa_bltu_op 27
5500*d2201f2fSdrahn #define xtensa_bltui_op 28
5501*d2201f2fSdrahn #define xtensa_bltz_op 29
5502*d2201f2fSdrahn #define xtensa_bnall_op 30
5503*d2201f2fSdrahn #define xtensa_bne_op 31
5504*d2201f2fSdrahn #define xtensa_bnei_op 32
5505*d2201f2fSdrahn #define xtensa_bnez_op 33
5506*d2201f2fSdrahn #define xtensa_bnez_n_op 34
5507*d2201f2fSdrahn #define xtensa_bnone_op 35
5508*d2201f2fSdrahn #define xtensa_break_op 36
5509*d2201f2fSdrahn #define xtensa_break_n_op 37
5510*d2201f2fSdrahn #define xtensa_call0_op 38
5511*d2201f2fSdrahn #define xtensa_call12_op 39
5512*d2201f2fSdrahn #define xtensa_call4_op 40
5513*d2201f2fSdrahn #define xtensa_call8_op 41
5514*d2201f2fSdrahn #define xtensa_callx0_op 42
5515*d2201f2fSdrahn #define xtensa_callx12_op 43
5516*d2201f2fSdrahn #define xtensa_callx4_op 44
5517*d2201f2fSdrahn #define xtensa_callx8_op 45
5518*d2201f2fSdrahn #define xtensa_dhi_op 46
5519*d2201f2fSdrahn #define xtensa_dhwb_op 47
5520*d2201f2fSdrahn #define xtensa_dhwbi_op 48
5521*d2201f2fSdrahn #define xtensa_dii_op 49
5522*d2201f2fSdrahn #define xtensa_diwb_op 50
5523*d2201f2fSdrahn #define xtensa_diwbi_op 51
5524*d2201f2fSdrahn #define xtensa_dpfr_op 52
5525*d2201f2fSdrahn #define xtensa_dpfro_op 53
5526*d2201f2fSdrahn #define xtensa_dpfw_op 54
5527*d2201f2fSdrahn #define xtensa_dpfwo_op 55
5528*d2201f2fSdrahn #define xtensa_dsync_op 56
5529*d2201f2fSdrahn #define xtensa_entry_op 57
5530*d2201f2fSdrahn #define xtensa_esync_op 58
5531*d2201f2fSdrahn #define xtensa_excw_op 59
5532*d2201f2fSdrahn #define xtensa_extui_op 60
5533*d2201f2fSdrahn #define xtensa_idtlb_op 61
5534*d2201f2fSdrahn #define xtensa_idtlba_op 62
5535*d2201f2fSdrahn #define xtensa_ihi_op 63
5536*d2201f2fSdrahn #define xtensa_iii_op 64
5537*d2201f2fSdrahn #define xtensa_iitlb_op 65
5538*d2201f2fSdrahn #define xtensa_iitlba_op 66
5539*d2201f2fSdrahn #define xtensa_ipf_op 67
5540*d2201f2fSdrahn #define xtensa_isync_op 68
5541*d2201f2fSdrahn #define xtensa_j_op 69
5542*d2201f2fSdrahn #define xtensa_jx_op 70
5543*d2201f2fSdrahn #define xtensa_l16si_op 71
5544*d2201f2fSdrahn #define xtensa_l16ui_op 72
5545*d2201f2fSdrahn #define xtensa_l32e_op 73
5546*d2201f2fSdrahn #define xtensa_l32i_op 74
5547*d2201f2fSdrahn #define xtensa_l32i_n_op 75
5548*d2201f2fSdrahn #define xtensa_l32r_op 76
5549*d2201f2fSdrahn #define xtensa_l8ui_op 77
5550*d2201f2fSdrahn #define xtensa_ldct_op 78
5551*d2201f2fSdrahn #define xtensa_lict_op 79
5552*d2201f2fSdrahn #define xtensa_licw_op 80
5553*d2201f2fSdrahn #define xtensa_loop_op 81
5554*d2201f2fSdrahn #define xtensa_loopgtz_op 82
5555*d2201f2fSdrahn #define xtensa_loopnez_op 83
5556*d2201f2fSdrahn #define xtensa_memw_op 84
5557*d2201f2fSdrahn #define xtensa_mov_n_op 85
5558*d2201f2fSdrahn #define xtensa_moveqz_op 86
5559*d2201f2fSdrahn #define xtensa_movgez_op 87
5560*d2201f2fSdrahn #define xtensa_movi_op 88
5561*d2201f2fSdrahn #define xtensa_movi_n_op 89
5562*d2201f2fSdrahn #define xtensa_movltz_op 90
5563*d2201f2fSdrahn #define xtensa_movnez_op 91
5564*d2201f2fSdrahn #define xtensa_movsp_op 92
5565*d2201f2fSdrahn #define xtensa_neg_op 93
5566*d2201f2fSdrahn #define xtensa_nop_n_op 94
5567*d2201f2fSdrahn #define xtensa_nsa_op 95
5568*d2201f2fSdrahn #define xtensa_nsau_op 96
5569*d2201f2fSdrahn #define xtensa_or_op 97
5570*d2201f2fSdrahn #define xtensa_pdtlb_op 98
5571*d2201f2fSdrahn #define xtensa_pitlb_op 99
5572*d2201f2fSdrahn #define xtensa_rdtlb0_op 100
5573*d2201f2fSdrahn #define xtensa_rdtlb1_op 101
5574*d2201f2fSdrahn #define xtensa_ret_op 102
5575*d2201f2fSdrahn #define xtensa_ret_n_op 103
5576*d2201f2fSdrahn #define xtensa_retw_op 104
5577*d2201f2fSdrahn #define xtensa_retw_n_op 105
5578*d2201f2fSdrahn #define xtensa_rfde_op 106
5579*d2201f2fSdrahn #define xtensa_rfe_op 107
5580*d2201f2fSdrahn #define xtensa_rfi_op 108
5581*d2201f2fSdrahn #define xtensa_rfwo_op 109
5582*d2201f2fSdrahn #define xtensa_rfwu_op 110
5583*d2201f2fSdrahn #define xtensa_ritlb0_op 111
5584*d2201f2fSdrahn #define xtensa_ritlb1_op 112
5585*d2201f2fSdrahn #define xtensa_rotw_op 113
5586*d2201f2fSdrahn #define xtensa_rsil_op 114
5587*d2201f2fSdrahn #define xtensa_rsr_op 115
5588*d2201f2fSdrahn #define xtensa_rsync_op 116
5589*d2201f2fSdrahn #define xtensa_s16i_op 117
5590*d2201f2fSdrahn #define xtensa_s32e_op 118
5591*d2201f2fSdrahn #define xtensa_s32i_op 119
5592*d2201f2fSdrahn #define xtensa_s32i_n_op 120
5593*d2201f2fSdrahn #define xtensa_s8i_op 121
5594*d2201f2fSdrahn #define xtensa_sdct_op 122
5595*d2201f2fSdrahn #define xtensa_sict_op 123
5596*d2201f2fSdrahn #define xtensa_sicw_op 124
5597*d2201f2fSdrahn #define xtensa_simcall_op 125
5598*d2201f2fSdrahn #define xtensa_sll_op 126
5599*d2201f2fSdrahn #define xtensa_slli_op 127
5600*d2201f2fSdrahn #define xtensa_sra_op 128
5601*d2201f2fSdrahn #define xtensa_srai_op 129
5602*d2201f2fSdrahn #define xtensa_src_op 130
5603*d2201f2fSdrahn #define xtensa_srl_op 131
5604*d2201f2fSdrahn #define xtensa_srli_op 132
5605*d2201f2fSdrahn #define xtensa_ssa8b_op 133
5606*d2201f2fSdrahn #define xtensa_ssa8l_op 134
5607*d2201f2fSdrahn #define xtensa_ssai_op 135
5608*d2201f2fSdrahn #define xtensa_ssl_op 136
5609*d2201f2fSdrahn #define xtensa_ssr_op 137
5610*d2201f2fSdrahn #define xtensa_sub_op 138
5611*d2201f2fSdrahn #define xtensa_subx2_op 139
5612*d2201f2fSdrahn #define xtensa_subx4_op 140
5613*d2201f2fSdrahn #define xtensa_subx8_op 141
5614*d2201f2fSdrahn #define xtensa_syscall_op 142
5615*d2201f2fSdrahn #define xtensa_waiti_op 143
5616*d2201f2fSdrahn #define xtensa_wdtlb_op 144
5617*d2201f2fSdrahn #define xtensa_witlb_op 145
5618*d2201f2fSdrahn #define xtensa_wsr_op 146
5619*d2201f2fSdrahn #define xtensa_xor_op 147
5620*d2201f2fSdrahn #define xtensa_xsr_op 148
5621*d2201f2fSdrahn 
5622*d2201f2fSdrahn int
decode_insn(const xtensa_insnbuf insn)5623*d2201f2fSdrahn decode_insn (const xtensa_insnbuf insn)
5624*d2201f2fSdrahn {
5625*d2201f2fSdrahn   switch (get_op0_field (insn)) {
5626*d2201f2fSdrahn   case 0: /* QRST: op0=0000 */
5627*d2201f2fSdrahn     switch (get_op1_field (insn)) {
5628*d2201f2fSdrahn     case 3: /* RST3: op1=0011 */
5629*d2201f2fSdrahn       switch (get_op2_field (insn)) {
5630*d2201f2fSdrahn       case 8: /* MOVEQZ: op2=1000 */
5631*d2201f2fSdrahn         return xtensa_moveqz_op;
5632*d2201f2fSdrahn       case 9: /* MOVNEZ: op2=1001 */
5633*d2201f2fSdrahn         return xtensa_movnez_op;
5634*d2201f2fSdrahn       case 10: /* MOVLTZ: op2=1010 */
5635*d2201f2fSdrahn         return xtensa_movltz_op;
5636*d2201f2fSdrahn       case 11: /* MOVGEZ: op2=1011 */
5637*d2201f2fSdrahn         return xtensa_movgez_op;
5638*d2201f2fSdrahn       case 0: /* RSR: op2=0000 */
5639*d2201f2fSdrahn         return xtensa_rsr_op;
5640*d2201f2fSdrahn       case 1: /* WSR: op2=0001 */
5641*d2201f2fSdrahn         return xtensa_wsr_op;
5642*d2201f2fSdrahn       }
5643*d2201f2fSdrahn       break;
5644*d2201f2fSdrahn     case 9: /* LSI4: op1=1001 */
5645*d2201f2fSdrahn       switch (get_op2_field (insn)) {
5646*d2201f2fSdrahn       case 4: /* S32E: op2=0100 */
5647*d2201f2fSdrahn         return xtensa_s32e_op;
5648*d2201f2fSdrahn       case 0: /* L32E: op2=0000 */
5649*d2201f2fSdrahn         return xtensa_l32e_op;
5650*d2201f2fSdrahn       }
5651*d2201f2fSdrahn       break;
5652*d2201f2fSdrahn     case 4: /* EXTUI: op1=010x */
5653*d2201f2fSdrahn     case 5: /* EXTUI: op1=010x */
5654*d2201f2fSdrahn       return xtensa_extui_op;
5655*d2201f2fSdrahn     case 0: /* RST0: op1=0000 */
5656*d2201f2fSdrahn       switch (get_op2_field (insn)) {
5657*d2201f2fSdrahn       case 15: /* SUBX8: op2=1111 */
5658*d2201f2fSdrahn         return xtensa_subx8_op;
5659*d2201f2fSdrahn       case 0: /* ST0: op2=0000 */
5660*d2201f2fSdrahn         switch (get_r_field (insn)) {
5661*d2201f2fSdrahn         case 0: /* SNM0: r=0000 */
5662*d2201f2fSdrahn           switch (get_m_field (insn)) {
5663*d2201f2fSdrahn           case 2: /* JR: m=10 */
5664*d2201f2fSdrahn             switch (get_n_field (insn)) {
5665*d2201f2fSdrahn             case 0: /* RET: n=00 */
5666*d2201f2fSdrahn               return xtensa_ret_op;
5667*d2201f2fSdrahn             case 1: /* RETW: n=01 */
5668*d2201f2fSdrahn               return xtensa_retw_op;
5669*d2201f2fSdrahn             case 2: /* JX: n=10 */
5670*d2201f2fSdrahn               return xtensa_jx_op;
5671*d2201f2fSdrahn             }
5672*d2201f2fSdrahn             break;
5673*d2201f2fSdrahn           case 3: /* CALLX: m=11 */
5674*d2201f2fSdrahn             switch (get_n_field (insn)) {
5675*d2201f2fSdrahn             case 0: /* CALLX0: n=00 */
5676*d2201f2fSdrahn               return xtensa_callx0_op;
5677*d2201f2fSdrahn             case 1: /* CALLX4: n=01 */
5678*d2201f2fSdrahn               return xtensa_callx4_op;
5679*d2201f2fSdrahn             case 2: /* CALLX8: n=10 */
5680*d2201f2fSdrahn               return xtensa_callx8_op;
5681*d2201f2fSdrahn             case 3: /* CALLX12: n=11 */
5682*d2201f2fSdrahn               return xtensa_callx12_op;
5683*d2201f2fSdrahn             }
5684*d2201f2fSdrahn             break;
5685*d2201f2fSdrahn           }
5686*d2201f2fSdrahn           break;
5687*d2201f2fSdrahn         case 1: /* MOVSP: r=0001 */
5688*d2201f2fSdrahn           return xtensa_movsp_op;
5689*d2201f2fSdrahn         case 2: /* SYNC: r=0010 */
5690*d2201f2fSdrahn           switch (get_s_field (insn)) {
5691*d2201f2fSdrahn           case 0: /* SYNCT: s=0000 */
5692*d2201f2fSdrahn             switch (get_t_field (insn)) {
5693*d2201f2fSdrahn             case 2: /* ESYNC: t=0010 */
5694*d2201f2fSdrahn               return xtensa_esync_op;
5695*d2201f2fSdrahn             case 3: /* DSYNC: t=0011 */
5696*d2201f2fSdrahn               return xtensa_dsync_op;
5697*d2201f2fSdrahn             case 8: /* EXCW: t=1000 */
5698*d2201f2fSdrahn               return xtensa_excw_op;
5699*d2201f2fSdrahn             case 12: /* MEMW: t=1100 */
5700*d2201f2fSdrahn               return xtensa_memw_op;
5701*d2201f2fSdrahn             case 0: /* ISYNC: t=0000 */
5702*d2201f2fSdrahn               return xtensa_isync_op;
5703*d2201f2fSdrahn             case 1: /* RSYNC: t=0001 */
5704*d2201f2fSdrahn               return xtensa_rsync_op;
5705*d2201f2fSdrahn             }
5706*d2201f2fSdrahn             break;
5707*d2201f2fSdrahn           }
5708*d2201f2fSdrahn           break;
5709*d2201f2fSdrahn         case 4: /* BREAK: r=0100 */
5710*d2201f2fSdrahn           return xtensa_break_op;
5711*d2201f2fSdrahn         case 3: /* RFEI: r=0011 */
5712*d2201f2fSdrahn           switch (get_t_field (insn)) {
5713*d2201f2fSdrahn           case 0: /* RFET: t=0000 */
5714*d2201f2fSdrahn             switch (get_s_field (insn)) {
5715*d2201f2fSdrahn             case 2: /* RFDE: s=0010 */
5716*d2201f2fSdrahn               return xtensa_rfde_op;
5717*d2201f2fSdrahn             case 4: /* RFWO: s=0100 */
5718*d2201f2fSdrahn               return xtensa_rfwo_op;
5719*d2201f2fSdrahn             case 5: /* RFWU: s=0101 */
5720*d2201f2fSdrahn               return xtensa_rfwu_op;
5721*d2201f2fSdrahn             case 0: /* RFE: s=0000 */
5722*d2201f2fSdrahn               return xtensa_rfe_op;
5723*d2201f2fSdrahn             }
5724*d2201f2fSdrahn             break;
5725*d2201f2fSdrahn           case 1: /* RFI: t=0001 */
5726*d2201f2fSdrahn             return xtensa_rfi_op;
5727*d2201f2fSdrahn           }
5728*d2201f2fSdrahn           break;
5729*d2201f2fSdrahn         case 5: /* SCALL: r=0101 */
5730*d2201f2fSdrahn           switch (get_s_field (insn)) {
5731*d2201f2fSdrahn           case 0: /* SYSCALL: s=0000 */
5732*d2201f2fSdrahn             return xtensa_syscall_op;
5733*d2201f2fSdrahn           case 1: /* SIMCALL: s=0001 */
5734*d2201f2fSdrahn             return xtensa_simcall_op;
5735*d2201f2fSdrahn           }
5736*d2201f2fSdrahn           break;
5737*d2201f2fSdrahn         case 6: /* RSIL: r=0110 */
5738*d2201f2fSdrahn           return xtensa_rsil_op;
5739*d2201f2fSdrahn         case 7: /* WAITI: r=0111 */
5740*d2201f2fSdrahn           return xtensa_waiti_op;
5741*d2201f2fSdrahn         }
5742*d2201f2fSdrahn         break;
5743*d2201f2fSdrahn       case 1: /* AND: op2=0001 */
5744*d2201f2fSdrahn         return xtensa_and_op;
5745*d2201f2fSdrahn       case 2: /* OR: op2=0010 */
5746*d2201f2fSdrahn         return xtensa_or_op;
5747*d2201f2fSdrahn       case 3: /* XOR: op2=0011 */
5748*d2201f2fSdrahn         return xtensa_xor_op;
5749*d2201f2fSdrahn       case 4: /* ST1: op2=0100 */
5750*d2201f2fSdrahn         switch (get_r_field (insn)) {
5751*d2201f2fSdrahn         case 15: /* NSAU: r=1111 */
5752*d2201f2fSdrahn           return xtensa_nsau_op;
5753*d2201f2fSdrahn         case 0: /* SSR: r=0000 */
5754*d2201f2fSdrahn           return xtensa_ssr_op;
5755*d2201f2fSdrahn         case 1: /* SSL: r=0001 */
5756*d2201f2fSdrahn           return xtensa_ssl_op;
5757*d2201f2fSdrahn         case 2: /* SSA8L: r=0010 */
5758*d2201f2fSdrahn           return xtensa_ssa8l_op;
5759*d2201f2fSdrahn         case 3: /* SSA8B: r=0011 */
5760*d2201f2fSdrahn           return xtensa_ssa8b_op;
5761*d2201f2fSdrahn         case 4: /* SSAI: r=0100 */
5762*d2201f2fSdrahn           return xtensa_ssai_op;
5763*d2201f2fSdrahn         case 8: /* ROTW: r=1000 */
5764*d2201f2fSdrahn           return xtensa_rotw_op;
5765*d2201f2fSdrahn         case 14: /* NSA: r=1110 */
5766*d2201f2fSdrahn           return xtensa_nsa_op;
5767*d2201f2fSdrahn         }
5768*d2201f2fSdrahn         break;
5769*d2201f2fSdrahn       case 8: /* ADD: op2=1000 */
5770*d2201f2fSdrahn         return xtensa_add_op;
5771*d2201f2fSdrahn       case 5: /* ST4: op2=0101 */
5772*d2201f2fSdrahn         switch (get_r_field (insn)) {
5773*d2201f2fSdrahn         case 15: /* RDTLB1: r=1111 */
5774*d2201f2fSdrahn           return xtensa_rdtlb1_op;
5775*d2201f2fSdrahn         case 0: /* IITLBA: r=0000 */
5776*d2201f2fSdrahn           return xtensa_iitlba_op;
5777*d2201f2fSdrahn         case 3: /* RITLB0: r=0011 */
5778*d2201f2fSdrahn           return xtensa_ritlb0_op;
5779*d2201f2fSdrahn         case 4: /* IITLB: r=0100 */
5780*d2201f2fSdrahn           return xtensa_iitlb_op;
5781*d2201f2fSdrahn         case 8: /* IDTLBA: r=1000 */
5782*d2201f2fSdrahn           return xtensa_idtlba_op;
5783*d2201f2fSdrahn         case 5: /* PITLB: r=0101 */
5784*d2201f2fSdrahn           return xtensa_pitlb_op;
5785*d2201f2fSdrahn         case 6: /* WITLB: r=0110 */
5786*d2201f2fSdrahn           return xtensa_witlb_op;
5787*d2201f2fSdrahn         case 7: /* RITLB1: r=0111 */
5788*d2201f2fSdrahn           return xtensa_ritlb1_op;
5789*d2201f2fSdrahn         case 11: /* RDTLB0: r=1011 */
5790*d2201f2fSdrahn           return xtensa_rdtlb0_op;
5791*d2201f2fSdrahn         case 12: /* IDTLB: r=1100 */
5792*d2201f2fSdrahn           return xtensa_idtlb_op;
5793*d2201f2fSdrahn         case 13: /* PDTLB: r=1101 */
5794*d2201f2fSdrahn           return xtensa_pdtlb_op;
5795*d2201f2fSdrahn         case 14: /* WDTLB: r=1110 */
5796*d2201f2fSdrahn           return xtensa_wdtlb_op;
5797*d2201f2fSdrahn         }
5798*d2201f2fSdrahn         break;
5799*d2201f2fSdrahn       case 6: /* RT0: op2=0110 */
5800*d2201f2fSdrahn         switch (get_s_field (insn)) {
5801*d2201f2fSdrahn         case 0: /* NEG: s=0000 */
5802*d2201f2fSdrahn           return xtensa_neg_op;
5803*d2201f2fSdrahn         case 1: /* ABS: s=0001 */
5804*d2201f2fSdrahn           return xtensa_abs_op;
5805*d2201f2fSdrahn         }
5806*d2201f2fSdrahn         break;
5807*d2201f2fSdrahn       case 9: /* ADDX2: op2=1001 */
5808*d2201f2fSdrahn         return xtensa_addx2_op;
5809*d2201f2fSdrahn       case 10: /* ADDX4: op2=1010 */
5810*d2201f2fSdrahn         return xtensa_addx4_op;
5811*d2201f2fSdrahn       case 11: /* ADDX8: op2=1011 */
5812*d2201f2fSdrahn         return xtensa_addx8_op;
5813*d2201f2fSdrahn       case 12: /* SUB: op2=1100 */
5814*d2201f2fSdrahn         return xtensa_sub_op;
5815*d2201f2fSdrahn       case 13: /* SUBX2: op2=1101 */
5816*d2201f2fSdrahn         return xtensa_subx2_op;
5817*d2201f2fSdrahn       case 14: /* SUBX4: op2=1110 */
5818*d2201f2fSdrahn         return xtensa_subx4_op;
5819*d2201f2fSdrahn       }
5820*d2201f2fSdrahn       break;
5821*d2201f2fSdrahn     case 1: /* RST1: op1=0001 */
5822*d2201f2fSdrahn       switch (get_op2_field (insn)) {
5823*d2201f2fSdrahn       case 15: /* IMP: op2=1111 */
5824*d2201f2fSdrahn         switch (get_r_field (insn)) {
5825*d2201f2fSdrahn         case 0: /* LICT: r=0000 */
5826*d2201f2fSdrahn           return xtensa_lict_op;
5827*d2201f2fSdrahn         case 1: /* SICT: r=0001 */
5828*d2201f2fSdrahn           return xtensa_sict_op;
5829*d2201f2fSdrahn         case 2: /* LICW: r=0010 */
5830*d2201f2fSdrahn           return xtensa_licw_op;
5831*d2201f2fSdrahn         case 3: /* SICW: r=0011 */
5832*d2201f2fSdrahn           return xtensa_sicw_op;
5833*d2201f2fSdrahn         case 8: /* LDCT: r=1000 */
5834*d2201f2fSdrahn           return xtensa_ldct_op;
5835*d2201f2fSdrahn         case 9: /* SDCT: r=1001 */
5836*d2201f2fSdrahn           return xtensa_sdct_op;
5837*d2201f2fSdrahn         }
5838*d2201f2fSdrahn         break;
5839*d2201f2fSdrahn       case 0: /* SLLI: op2=000x */
5840*d2201f2fSdrahn       case 1: /* SLLI: op2=000x */
5841*d2201f2fSdrahn         return xtensa_slli_op;
5842*d2201f2fSdrahn       case 2: /* SRAI: op2=001x */
5843*d2201f2fSdrahn       case 3: /* SRAI: op2=001x */
5844*d2201f2fSdrahn         return xtensa_srai_op;
5845*d2201f2fSdrahn       case 4: /* SRLI: op2=0100 */
5846*d2201f2fSdrahn         return xtensa_srli_op;
5847*d2201f2fSdrahn       case 8: /* SRC: op2=1000 */
5848*d2201f2fSdrahn         return xtensa_src_op;
5849*d2201f2fSdrahn       case 9: /* SRL: op2=1001 */
5850*d2201f2fSdrahn         return xtensa_srl_op;
5851*d2201f2fSdrahn       case 6: /* XSR: op2=0110 */
5852*d2201f2fSdrahn         return xtensa_xsr_op;
5853*d2201f2fSdrahn       case 10: /* SLL: op2=1010 */
5854*d2201f2fSdrahn         return xtensa_sll_op;
5855*d2201f2fSdrahn       case 11: /* SRA: op2=1011 */
5856*d2201f2fSdrahn         return xtensa_sra_op;
5857*d2201f2fSdrahn       }
5858*d2201f2fSdrahn       break;
5859*d2201f2fSdrahn     }
5860*d2201f2fSdrahn     break;
5861*d2201f2fSdrahn   case 1: /* L32R: op0=0001 */
5862*d2201f2fSdrahn     return xtensa_l32r_op;
5863*d2201f2fSdrahn   case 2: /* LSAI: op0=0010 */
5864*d2201f2fSdrahn     switch (get_r_field (insn)) {
5865*d2201f2fSdrahn     case 0: /* L8UI: r=0000 */
5866*d2201f2fSdrahn       return xtensa_l8ui_op;
5867*d2201f2fSdrahn     case 1: /* L16UI: r=0001 */
5868*d2201f2fSdrahn       return xtensa_l16ui_op;
5869*d2201f2fSdrahn     case 2: /* L32I: r=0010 */
5870*d2201f2fSdrahn       return xtensa_l32i_op;
5871*d2201f2fSdrahn     case 4: /* S8I: r=0100 */
5872*d2201f2fSdrahn       return xtensa_s8i_op;
5873*d2201f2fSdrahn     case 5: /* S16I: r=0101 */
5874*d2201f2fSdrahn       return xtensa_s16i_op;
5875*d2201f2fSdrahn     case 9: /* L16SI: r=1001 */
5876*d2201f2fSdrahn       return xtensa_l16si_op;
5877*d2201f2fSdrahn     case 6: /* S32I: r=0110 */
5878*d2201f2fSdrahn       return xtensa_s32i_op;
5879*d2201f2fSdrahn     case 7: /* CACHE: r=0111 */
5880*d2201f2fSdrahn       switch (get_t_field (insn)) {
5881*d2201f2fSdrahn       case 15: /* III: t=1111 */
5882*d2201f2fSdrahn         return xtensa_iii_op;
5883*d2201f2fSdrahn       case 0: /* DPFR: t=0000 */
5884*d2201f2fSdrahn         return xtensa_dpfr_op;
5885*d2201f2fSdrahn       case 1: /* DPFW: t=0001 */
5886*d2201f2fSdrahn         return xtensa_dpfw_op;
5887*d2201f2fSdrahn       case 2: /* DPFRO: t=0010 */
5888*d2201f2fSdrahn         return xtensa_dpfro_op;
5889*d2201f2fSdrahn       case 4: /* DHWB: t=0100 */
5890*d2201f2fSdrahn         return xtensa_dhwb_op;
5891*d2201f2fSdrahn       case 3: /* DPFWO: t=0011 */
5892*d2201f2fSdrahn         return xtensa_dpfwo_op;
5893*d2201f2fSdrahn       case 8: /* DCE: t=1000 */
5894*d2201f2fSdrahn         switch (get_op1_field (insn)) {
5895*d2201f2fSdrahn         case 4: /* DIWB: op1=0100 */
5896*d2201f2fSdrahn           return xtensa_diwb_op;
5897*d2201f2fSdrahn         case 5: /* DIWBI: op1=0101 */
5898*d2201f2fSdrahn           return xtensa_diwbi_op;
5899*d2201f2fSdrahn         }
5900*d2201f2fSdrahn         break;
5901*d2201f2fSdrahn       case 5: /* DHWBI: t=0101 */
5902*d2201f2fSdrahn         return xtensa_dhwbi_op;
5903*d2201f2fSdrahn       case 6: /* DHI: t=0110 */
5904*d2201f2fSdrahn         return xtensa_dhi_op;
5905*d2201f2fSdrahn       case 7: /* DII: t=0111 */
5906*d2201f2fSdrahn         return xtensa_dii_op;
5907*d2201f2fSdrahn       case 12: /* IPF: t=1100 */
5908*d2201f2fSdrahn         return xtensa_ipf_op;
5909*d2201f2fSdrahn       case 14: /* IHI: t=1110 */
5910*d2201f2fSdrahn         return xtensa_ihi_op;
5911*d2201f2fSdrahn       }
5912*d2201f2fSdrahn       break;
5913*d2201f2fSdrahn     case 10: /* MOVI: r=1010 */
5914*d2201f2fSdrahn       return xtensa_movi_op;
5915*d2201f2fSdrahn     case 12: /* ADDI: r=1100 */
5916*d2201f2fSdrahn       return xtensa_addi_op;
5917*d2201f2fSdrahn     case 13: /* ADDMI: r=1101 */
5918*d2201f2fSdrahn       return xtensa_addmi_op;
5919*d2201f2fSdrahn     }
5920*d2201f2fSdrahn     break;
5921*d2201f2fSdrahn   case 8: /* L32I.N: op0=1000 */
5922*d2201f2fSdrahn     return xtensa_l32i_n_op;
5923*d2201f2fSdrahn   case 5: /* CALL: op0=0101 */
5924*d2201f2fSdrahn     switch (get_n_field (insn)) {
5925*d2201f2fSdrahn     case 0: /* CALL0: n=00 */
5926*d2201f2fSdrahn       return xtensa_call0_op;
5927*d2201f2fSdrahn     case 1: /* CALL4: n=01 */
5928*d2201f2fSdrahn       return xtensa_call4_op;
5929*d2201f2fSdrahn     case 2: /* CALL8: n=10 */
5930*d2201f2fSdrahn       return xtensa_call8_op;
5931*d2201f2fSdrahn     case 3: /* CALL12: n=11 */
5932*d2201f2fSdrahn       return xtensa_call12_op;
5933*d2201f2fSdrahn     }
5934*d2201f2fSdrahn     break;
5935*d2201f2fSdrahn   case 6: /* SI: op0=0110 */
5936*d2201f2fSdrahn     switch (get_n_field (insn)) {
5937*d2201f2fSdrahn     case 0: /* J: n=00 */
5938*d2201f2fSdrahn       return xtensa_j_op;
5939*d2201f2fSdrahn     case 1: /* BZ: n=01 */
5940*d2201f2fSdrahn       switch (get_m_field (insn)) {
5941*d2201f2fSdrahn       case 0: /* BEQZ: m=00 */
5942*d2201f2fSdrahn         return xtensa_beqz_op;
5943*d2201f2fSdrahn       case 1: /* BNEZ: m=01 */
5944*d2201f2fSdrahn         return xtensa_bnez_op;
5945*d2201f2fSdrahn       case 2: /* BLTZ: m=10 */
5946*d2201f2fSdrahn         return xtensa_bltz_op;
5947*d2201f2fSdrahn       case 3: /* BGEZ: m=11 */
5948*d2201f2fSdrahn         return xtensa_bgez_op;
5949*d2201f2fSdrahn       }
5950*d2201f2fSdrahn       break;
5951*d2201f2fSdrahn     case 2: /* BI0: n=10 */
5952*d2201f2fSdrahn       switch (get_m_field (insn)) {
5953*d2201f2fSdrahn       case 0: /* BEQI: m=00 */
5954*d2201f2fSdrahn         return xtensa_beqi_op;
5955*d2201f2fSdrahn       case 1: /* BNEI: m=01 */
5956*d2201f2fSdrahn         return xtensa_bnei_op;
5957*d2201f2fSdrahn       case 2: /* BLTI: m=10 */
5958*d2201f2fSdrahn         return xtensa_blti_op;
5959*d2201f2fSdrahn       case 3: /* BGEI: m=11 */
5960*d2201f2fSdrahn         return xtensa_bgei_op;
5961*d2201f2fSdrahn       }
5962*d2201f2fSdrahn       break;
5963*d2201f2fSdrahn     case 3: /* BI1: n=11 */
5964*d2201f2fSdrahn       switch (get_m_field (insn)) {
5965*d2201f2fSdrahn       case 0: /* ENTRY: m=00 */
5966*d2201f2fSdrahn         return xtensa_entry_op;
5967*d2201f2fSdrahn       case 1: /* B1: m=01 */
5968*d2201f2fSdrahn         switch (get_r_field (insn)) {
5969*d2201f2fSdrahn         case 8: /* LOOP: r=1000 */
5970*d2201f2fSdrahn           return xtensa_loop_op;
5971*d2201f2fSdrahn         case 9: /* LOOPNEZ: r=1001 */
5972*d2201f2fSdrahn           return xtensa_loopnez_op;
5973*d2201f2fSdrahn         case 10: /* LOOPGTZ: r=1010 */
5974*d2201f2fSdrahn           return xtensa_loopgtz_op;
5975*d2201f2fSdrahn         }
5976*d2201f2fSdrahn         break;
5977*d2201f2fSdrahn       case 2: /* BLTUI: m=10 */
5978*d2201f2fSdrahn         return xtensa_bltui_op;
5979*d2201f2fSdrahn       case 3: /* BGEUI: m=11 */
5980*d2201f2fSdrahn         return xtensa_bgeui_op;
5981*d2201f2fSdrahn       }
5982*d2201f2fSdrahn       break;
5983*d2201f2fSdrahn     }
5984*d2201f2fSdrahn     break;
5985*d2201f2fSdrahn   case 9: /* S32I.N: op0=1001 */
5986*d2201f2fSdrahn     return xtensa_s32i_n_op;
5987*d2201f2fSdrahn   case 10: /* ADD.N: op0=1010 */
5988*d2201f2fSdrahn     return xtensa_add_n_op;
5989*d2201f2fSdrahn   case 7: /* B: op0=0111 */
5990*d2201f2fSdrahn     switch (get_r_field (insn)) {
5991*d2201f2fSdrahn     case 6: /* BBCI: r=011x */
5992*d2201f2fSdrahn     case 7: /* BBCI: r=011x */
5993*d2201f2fSdrahn       return xtensa_bbci_op;
5994*d2201f2fSdrahn     case 0: /* BNONE: r=0000 */
5995*d2201f2fSdrahn       return xtensa_bnone_op;
5996*d2201f2fSdrahn     case 1: /* BEQ: r=0001 */
5997*d2201f2fSdrahn       return xtensa_beq_op;
5998*d2201f2fSdrahn     case 2: /* BLT: r=0010 */
5999*d2201f2fSdrahn       return xtensa_blt_op;
6000*d2201f2fSdrahn     case 4: /* BALL: r=0100 */
6001*d2201f2fSdrahn       return xtensa_ball_op;
6002*d2201f2fSdrahn     case 14: /* BBSI: r=111x */
6003*d2201f2fSdrahn     case 15: /* BBSI: r=111x */
6004*d2201f2fSdrahn       return xtensa_bbsi_op;
6005*d2201f2fSdrahn     case 3: /* BLTU: r=0011 */
6006*d2201f2fSdrahn       return xtensa_bltu_op;
6007*d2201f2fSdrahn     case 5: /* BBC: r=0101 */
6008*d2201f2fSdrahn       return xtensa_bbc_op;
6009*d2201f2fSdrahn     case 8: /* BANY: r=1000 */
6010*d2201f2fSdrahn       return xtensa_bany_op;
6011*d2201f2fSdrahn     case 9: /* BNE: r=1001 */
6012*d2201f2fSdrahn       return xtensa_bne_op;
6013*d2201f2fSdrahn     case 10: /* BGE: r=1010 */
6014*d2201f2fSdrahn       return xtensa_bge_op;
6015*d2201f2fSdrahn     case 11: /* BGEU: r=1011 */
6016*d2201f2fSdrahn       return xtensa_bgeu_op;
6017*d2201f2fSdrahn     case 12: /* BNALL: r=1100 */
6018*d2201f2fSdrahn       return xtensa_bnall_op;
6019*d2201f2fSdrahn     case 13: /* BBS: r=1101 */
6020*d2201f2fSdrahn       return xtensa_bbs_op;
6021*d2201f2fSdrahn     }
6022*d2201f2fSdrahn     break;
6023*d2201f2fSdrahn   case 11: /* ADDI.N: op0=1011 */
6024*d2201f2fSdrahn     return xtensa_addi_n_op;
6025*d2201f2fSdrahn   case 12: /* ST2: op0=1100 */
6026*d2201f2fSdrahn     switch (get_i_field (insn)) {
6027*d2201f2fSdrahn     case 0: /* MOVI.N: i=0 */
6028*d2201f2fSdrahn       return xtensa_movi_n_op;
6029*d2201f2fSdrahn     case 1: /* BZ6: i=1 */
6030*d2201f2fSdrahn       switch (get_z_field (insn)) {
6031*d2201f2fSdrahn       case 0: /* BEQZ.N: z=0 */
6032*d2201f2fSdrahn         return xtensa_beqz_n_op;
6033*d2201f2fSdrahn       case 1: /* BNEZ.N: z=1 */
6034*d2201f2fSdrahn         return xtensa_bnez_n_op;
6035*d2201f2fSdrahn       }
6036*d2201f2fSdrahn       break;
6037*d2201f2fSdrahn     }
6038*d2201f2fSdrahn     break;
6039*d2201f2fSdrahn   case 13: /* ST3: op0=1101 */
6040*d2201f2fSdrahn     switch (get_r_field (insn)) {
6041*d2201f2fSdrahn     case 15: /* S3: r=1111 */
6042*d2201f2fSdrahn       switch (get_t_field (insn)) {
6043*d2201f2fSdrahn       case 0: /* RET.N: t=0000 */
6044*d2201f2fSdrahn         return xtensa_ret_n_op;
6045*d2201f2fSdrahn       case 1: /* RETW.N: t=0001 */
6046*d2201f2fSdrahn         return xtensa_retw_n_op;
6047*d2201f2fSdrahn       case 2: /* BREAK.N: t=0010 */
6048*d2201f2fSdrahn         return xtensa_break_n_op;
6049*d2201f2fSdrahn       case 3: /* NOP.N: t=0011 */
6050*d2201f2fSdrahn         return xtensa_nop_n_op;
6051*d2201f2fSdrahn       }
6052*d2201f2fSdrahn       break;
6053*d2201f2fSdrahn     case 0: /* MOV.N: r=0000 */
6054*d2201f2fSdrahn       return xtensa_mov_n_op;
6055*d2201f2fSdrahn     }
6056*d2201f2fSdrahn     break;
6057*d2201f2fSdrahn   }
6058*d2201f2fSdrahn   return XTENSA_UNDEFINED;
6059*d2201f2fSdrahn }
6060*d2201f2fSdrahn 
6061*d2201f2fSdrahn int
interface_version(void)6062*d2201f2fSdrahn interface_version (void)
6063*d2201f2fSdrahn {
6064*d2201f2fSdrahn   return 3;
6065*d2201f2fSdrahn }
6066*d2201f2fSdrahn 
6067*d2201f2fSdrahn static struct config_struct config_table[] = {
6068*d2201f2fSdrahn   {"IsaMemoryOrder", "BigEndian"},
6069*d2201f2fSdrahn   {"PIFReadDataBits", "128"},
6070*d2201f2fSdrahn   {"PIFWriteDataBits", "128"},
6071*d2201f2fSdrahn   {"IsaCoprocessorCount", "0"},
6072*d2201f2fSdrahn   {"IsaUseBooleans", "0"},
6073*d2201f2fSdrahn   {"IsaUseDensityInstruction", "1"},
6074*d2201f2fSdrahn   {0, 0}
6075*d2201f2fSdrahn };
6076*d2201f2fSdrahn 
6077*d2201f2fSdrahn struct config_struct * get_config_table (void);
6078*d2201f2fSdrahn 
6079*d2201f2fSdrahn struct config_struct *
get_config_table(void)6080*d2201f2fSdrahn get_config_table (void)
6081*d2201f2fSdrahn {
6082*d2201f2fSdrahn   return config_table;
6083*d2201f2fSdrahn }
6084*d2201f2fSdrahn 
6085*d2201f2fSdrahn xtensa_isa_module xtensa_isa_modules[] = {
6086*d2201f2fSdrahn   { get_num_opcodes, get_opcodes, decode_insn, get_config_table },
6087*d2201f2fSdrahn   { 0, 0, 0, 0 }
6088*d2201f2fSdrahn };
6089