Rizin
unix-like reverse engineering framework and cli tools
lanai-opc.c
Go to the documentation of this file.
1 /*************************************************************************
2  * *
3  * Table of opcodes for the Lanai. *
4  * *
5  * Copyright (c) 1994, 1995 by Myricom, Inc. *
6  * All rights reserved. *
7  * *
8  * This program is free software; you can redistribute it and/or modify *
9  * it under the terms of version 2 of the GNU General Public License *
10  * as published by the Free Software Foundation. Myricom requests that *
11  * all modifications of this software be returned to Myricom, Inc. for *
12  * redistribution. The name of Myricom, Inc. may not be used to endorse *
13  * or promote products derived from this software without specific prior *
14  * written permission. *
15  * *
16  * Myricom, Inc. makes no representations about the suitability of this *
17  * software for any purpose. *
18  * *
19  * THIS FILE IS PROVIDED "AS-IS" WITHOUT WARRANTY OF ANY KIND, WHETHER *
20  * EXPRESSED OR IMPLIED, INCLUDING THE WARRANTY OF MERCHANTABILITY OR *
21  * FITNESS FOR A PARTICULAR PURPOSE. MYRICOM, INC. SHALL HAVE NO *
22  * LIABILITY WITH RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE *
23  * SECRETS OR ANY PATENTS BY THIS FILE OR ANY PART THEREOF. *
24  * *
25  * In no event will Myricom, Inc. be liable for any lost revenue *
26  * or profits or other special, indirect and consequential damages, even *
27  * if Myricom has been advised of the possibility of such damages. *
28  * *
29  * Other copyrights might apply to parts of this software and are so *
30  * noted when applicable. *
31  * *
32  * Myricom, Inc. Email: info@myri.com *
33  * 325 N. Santa Anita Ave. World Wide Web: http://www.myri.com/ *
34  * Arcadia, CA 91024 *
35  *************************************************************************/
36  /* initial version released 5/95 */
37  /* This file is based upon <> from the Gnu binutils-2.5.2
38  release, which had the following copyright notice: */
39 
40  /* Table of opcodes for the sparc.
41  Copyright 1989, 1991, 1992 Free Software Foundation, Inc.
42 
43  This file is part of the BFD library.
44 
45  BFD is free software; you can redistribute it and/or modify it under
46  the terms of the GNU General Public License as published by the Free
47  Software Foundation; either version 2, or (at your option) any later
48  version.
49 
50  BFD is distributed in the hope that it will be useful, but WITHOUT ANY
51  WARRANTY; without even the implied warranty of MERCHANTABILITY or
52  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
53  for more details.
54 
55  You should have received a copy of the GNU General Public License
56  along with this software; see the file COPYING. If not, write to
57  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139,
58  USA. */
59 
60 /* FIXME-someday: perhaps the ,a's and such should be embedded in the
61  instruction's name rather than the args. This would make gas faster, pinsn
62  slower, but would mess up some macros a bit. xoxorich. */
63 
64 /* v9 FIXME: Doesn't accept `iprefetch', `setX', `signx', `cleartop', `cas',
65  `casx', `clrx', `clruw' synthetic instructions for v9. */
66 
67 #include <stdio.h>
68 #include "ansidecl.h"
69 #include "opcode/lanai.h"
70 
71 const char *architecture_pname[] = {
72  "v0",
73  "v1",
74  NULL,
75 };
76 
77 /* A pair is the set of all bits that must be high or low as determined
78  solely by the opcode. This macro takes a mask and the set of
79  all bits that must be high and generates the pair. I do this
80  so the macro definitions below are simpler. */
81 
82 #define GENERIC_PAIR(mask,high) \
83  (high),((mask)&~(high))
84 
85 /* Specifies the bits that must be set and the bits that must be cleared
86  for an RI instruction. */
87 #define RI_PAIR(op,f,h) GENERIC_PAIR(L3_RI_MASK, \
88  L3_RI | L3_RI_OP(op) | ((f)?L3_RI_F:0) | ((h)?L3_RI_H:0) )
89 
90 #define RR_PAIR(f,op) GENERIC_PAIR(L3_RR_MASK, \
91  L3_RR | ((f)?L3_RR_F:0) | L3_RR_OP(op) \
92  | ((((op)&L3_OP_MASK)==L3_SH) ? ((op)&L3_ARITH?0xc0:0x80) : 0 ))
93 
94 #define LEADZ_PAIR(f) GENERIC_PAIR(L3_LEADZ_MASK, \
95  L3_LEADZ | ((f)?L3_LEADZ_F:0))
96 
97 #define POPC_PAIR(f) GENERIC_PAIR(L3_POPC_MASK, \
98  L3_POPC | ((f)?L3_POPC_F:0))
99 
100 #define RRR_PAIR() GENERIC_PAIR(L3_RRR_MASK, \
101  L3_RRR )
102 
103 #define RM_PAIR(s,p,q) GENERIC_PAIR(L3_RM_MASK, \
104  L3_RM | ((s)?L3_RM_S:0) | ((p)?L3_RM_P:0) | ((q)?L3_RM_Q:0) )
105 
106 #define RRM_PAIR(s,p,q,mode) GENERIC_PAIR(L3_RRM_MASK, \
107  L3_RRM | ((s)?L3_RRM_S:0) | ((p)?L3_RRM_P:0) \
108  | ((q)?L3_RRM_Q:0) | L3_RRM_MODE(mode) )
109 
110 #define BR_PAIR(cond,r) GENERIC_PAIR(L3_BR_MASK, \
111  L3_BR | L3_BR_COND(cond) | ((r)?L3_BR_R:0) )
112 
113 #define SCC_PAIR(cond) GENERIC_PAIR (L3_SCC_MASK, L3_SCC | L3_BR_COND (cond))
114 
115 #define SLS_PAIR(s) GENERIC_PAIR(L3_SLS_MASK, \
116  L3_SLS | ((s)?L3_SLS_S:0) )
117 
118 #define SLI_PAIR() GENERIC_PAIR(L3_SLI_MASK, \
119  L3_SLI )
120 
121 #define SPLS_PAIR(s,mode,p,q) GENERIC_PAIR(L3_SPLS_MASK, \
122  L3_SPLS | L3_SPLS_MODE(mode) | ((s)?L3_SPLS_S:0) \
123  | ((p)?L3_SPLS_P:0) | ((q)?L3_SPLS_Q:0) )
124 
125 #define PUNT_PAIR() GENERIC_PAIR(L3_PUNT_MASK, \
126  L3_PUNT )
127 
128 #define SBR_PAIR(cond,op,r) GENERIC_PAIR(L3_SBR_MASK, \
129  L3_SBR|L3_SBR_COND(cond)|L3_SBR_OP(op)|((r)?L3_SBR_R:0))
130 
131 #define PCREL_SBR_PAIR(cond) GENERIC_PAIR(L3_SBR_MASK|L3_RS1(0x1f)| \
132  L3_SBR_OP(7), \
133  L3_SBR|L3_SBR_COND(cond)|L3_SBR_OP(L3_ADD)|L3_RS1(2)|L3_SBR_R)
134 
135 /* Specifies the bits that must be set and the bits that must be cleared
136  for an RI "mov" instruction. Note that Rs1 is 1 for AND type moves */
137 #define RI_MOV_PAIR(op,f,h) GENERIC_PAIR(L3_RI_MASK|L3_RS1(31), \
138 L3_RI|L3_RI_OP(op)|((f)?L3_RI_F:0)|((h)?L3_RI_H:0)|(((op)==L3_AND)?L3_RS1(1):0))
139 
140 /* Similarly for RR "mov" insns */
141 #define RR_MOV_PAIR(f,op) GENERIC_PAIR(L3_RR_MASK|0x007c0000, \
142  L3_RR | ((f)?L3_RR_F:0) | L3_RR_OP(op) \
143  | (((op)&L3_ARITH)?1<<6:0) | ((op)==L3_SH?1<<7:0) )
144 
145 /* The order of the opcodes in the table is significant:
146 
147  * The assembler requires that all instances of the same mnemonic must
148  be consecutive. If they aren't, the assembler will bomb at runtime.
149 
150  * The disassembler should not care about the order of the opcodes.
151 
152  * instructions with constants must come at the end of the
153  list of instructions with the same mnemonic to avoid using
154  get_expression unless it is guaranteed to work because it
155  aborts if it fails.
156 */
157 
158 struct lanai_opcode lanai_opcodes[] = {
159 
160  /* nop (at beginning so disassembler will use these if possible) */
161 
162  { "nop", 0x00000001,0xfffffffe ,"", F_RI, 0},
163  { "nop(RI)", 0x00000000,0x8f820000 ,"", F_RI, 0},
164  { "nop(RR)", 0xc0000000,0x3f820000 ,"", F_RR, 0},
165  { "nop(RRR)", 0xd0000000,0x2f820000 ,"", F_RRR, 0},
166  { "nop(BR)", 0xe2000000,0x1c000000 ,"", F_BR, 0},
167  { "nop(SLI)", 0xf0020000,0x0f810000 ,"", F_SLI, 0},
168  { "nop(SPLS)", 0xf0030000,0x0f808000 ,"", F_SPLS, 0},
169  { "nop(SBR)", 0xf203c000,0x0c003800 ,"", F_SBR, 0},
170 
171  /* mov (at beginning so disassembler will use these if possible) */
172 
173  { "mov", RR_MOV_PAIR(0,L3_ADD) ,"1,d", F_RR, 0},
174  { "mov", BR_PAIR(L3_T,0) ,"B,P", F_ALIAS,0},
175  { "mov", SLI_PAIR() ,"I,d", F_SLI, 0},
176  { "mov", RI_MOV_PAIR(L3_ADD,0,0) ,"j,d", F_RI, 0},
177  { "mov", RI_MOV_PAIR(L3_ADD,0,1) ,"J,d", F_RI, 0},
178  { "mov", RI_MOV_PAIR(L3_AND,0,0) ,"l,d", F_RI, 0},
179  { "mov", RI_MOV_PAIR(L3_AND,0,1) ,"L,d", F_RI, 0},
180 /*{ "mov", RI_MOV_PAIR(L3_SUB,0,0) ,"k,d", F_RI, 0}, */
181  /* These moves used only for disassembler */
182  { "mov", RI_MOV_PAIR(L3_OR,0,0) ,"j,d", F_RI, 0},
183  { "mov", RI_MOV_PAIR(L3_OR,0,1) ,"J,d", F_RI, 0},
184  { "mov", RI_MOV_PAIR(L3_OR,0,0) ,"l,d", F_RI, 0},
185  { "mov", RI_MOV_PAIR(L3_OR,0,1) ,"L,d", F_RI, 0},
186 
187  /* add */
188 
189  { "add", RR_PAIR(0,L3_ADD) ,"1,2,d", F_RR,0},
190  { "add", BR_PAIR(L3_T,1) ,"p,b,P", F_UNBR|F_ALIAS,0},
191  { "add", RI_PAIR(L3_ADD,0,0) ,"1,j,d", F_RI,0},
192  { "add", RI_PAIR(L3_ADD,0,1) ,"1,J,d", F_RI,0},
193 /*{ "add", RI_PAIR(L3_SUB,0,0) ,"18k,d", F_RI|F_ALIAS,0}, */
194  { "add.f", RR_PAIR(1,L3_ADD) ,"1,2,d", F_RR,0},
195  { "add.f", RI_PAIR(L3_ADD,1,0) ,"1,j,d", F_RI,0},
196  { "add.f", RI_PAIR(L3_ADD,1,1) ,"1,J,d", F_RI,0},
197 /*{ "add.f", RI_PAIR(L3_SUB,1,1) ,"1,k,d", F_RI|F_ALIAS,0}, */
198  { "addc", RR_PAIR(0,L3_ADDC) ,"1,2,d", F_RR,0},
199  { "addc", RI_PAIR(L3_ADDC,0,0) ,"1,j,d", F_RI,0},
200  { "addc", RI_PAIR(L3_ADDC,0,1) ,"1,J,d", F_RI,0},
201 /*{ "addc", RI_PAIR(L3_SUBB,0,0) ,"1,k,d", F_RI|F_ALIAS,0}, */
202  { "addc.f", RR_PAIR(1,L3_ADDC) ,"1,2,d", F_RR,0},
203  { "addc.f", RI_PAIR(L3_ADDC,1,0) ,"1,j,d", F_RI,0},
204  { "addc.f", RI_PAIR(L3_ADDC,1,1) ,"1,J,d", F_RI,0},
205 /*{ "addc.f", RI_PAIR(L3_SUBB,0,1) ,"1,k,d", F_RI|F_ALIAS,0}, */
206 
207  /* and */
208 
209  { "and", RR_PAIR(0,L3_AND) ,"1,2,d", F_RR,0},
210  { "and", RI_PAIR(L3_AND,0,0) ,"1,l,d", F_RI,0},
211  { "and", RI_PAIR(L3_AND,0,1) ,"1,L,d", F_RI,0},
212  { "and.f", RR_PAIR(1,L3_AND) ,"1,2,d", F_RR,0},
213  { "and.f", RI_PAIR(L3_AND,1,0) ,"1,l,d", F_RI,0},
214  { "and.f", RI_PAIR(L3_AND,1,1) ,"1,L,d", F_RI,0},
215 
216  /* b?? */
217 
218  { "bt", BR_PAIR(L3_T,0) ,"B", F_UNBR,0},
219  { "bt", SBR_PAIR(L3_T,0,0) ,"1", F_UNBR,0},
220  { "bt", SBR_PAIR(L3_T,0,0) ,"143", F_UNBR,0},
221  { "bt.r", BR_PAIR(L3_T,1) ,"b", F_RELUNBR,0},
222  { "bt.r", PCREL_SBR_PAIR(L3_T) ,"3", F_RELUNBR,0},
223 
224  { "bf", BR_PAIR(L3_F,0) ,"B", F_BR,0},
225  { "bf", SBR_PAIR(L3_F,0,0) ,"1", F_BR,0},
226  { "bf", SBR_PAIR(L3_F,0,0) ,"143", F_BR,0},
227  { "bf.r", BR_PAIR(L3_F,1) ,"b", F_BR|F_REL,0},
228  { "bf.r", PCREL_SBR_PAIR(L3_F) ,"3", F_BR|F_REL,0},
229 
230  { "bhi", BR_PAIR(L3_HI,0) ,"B", F_CONDBR,0},
231  { "bhi", SBR_PAIR(L3_HI,0,0) ,"1", F_CONDBR,0},
232  { "bhi", SBR_PAIR(L3_HI,0,0) ,"143", F_CONDBR,0},
233  { "bhi.r", BR_PAIR(L3_HI,1) ,"b", F_RELCONDBR,0},
234  { "bhi.r", PCREL_SBR_PAIR(L3_HI) ,"3", F_RELCONDBR,0},
235 
236  { "bugt", BR_PAIR(L3_HI,0) ,"B",F_ALIAS|F_CONDBR,0},
237  { "bugt", SBR_PAIR(L3_HI,0,0) ,"1",F_ALIAS|F_CONDBR,0},
238  { "bugt", SBR_PAIR(L3_HI,0,0) ,"143",F_ALIAS|F_CONDBR,0},
239  { "bugt.r", BR_PAIR(L3_HI,1) ,"b",F_ALIAS|F_RELCONDBR,0},
240  { "bugt.r", PCREL_SBR_PAIR(L3_HI) ,"3",F_ALIAS|F_RELCONDBR,0},
241 
242  { "bls", BR_PAIR(L3_LS,0) ,"B", F_CONDBR,0},
243  { "bls", SBR_PAIR(L3_LS,0,0) ,"1", F_CONDBR,0},
244  { "bls", SBR_PAIR(L3_LS,0,0) ,"143", F_CONDBR,0},
245  { "bls.r", BR_PAIR(L3_LS,1) ,"b", F_RELCONDBR,0},
246  { "bls.r", PCREL_SBR_PAIR(L3_LS) ,"3", F_RELCONDBR,0},
247 
248  { "bule", BR_PAIR(L3_LS,0) ,"B",F_ALIAS|F_CONDBR,0},
249  { "bule", SBR_PAIR(L3_LS,0,0) ,"1",F_ALIAS|F_CONDBR,0},
250  { "bule", SBR_PAIR(L3_LS,0,0) ,"143",F_ALIAS|F_CONDBR,0},
251  { "bule.r", BR_PAIR(L3_LS,1) ,"b",F_ALIAS|F_RELCONDBR,0},
252  { "bule.r", PCREL_SBR_PAIR(L3_LS) ,"3",F_ALIAS|F_RELCONDBR,0},
253 
254  { "bcc", BR_PAIR(L3_CC,0) ,"B", F_CONDBR,0},
255  { "bcc", SBR_PAIR(L3_CC,0,0) ,"1", F_CONDBR,0},
256  { "bcc", SBR_PAIR(L3_CC,0,0) ,"143", F_CONDBR,0},
257  { "bcc.r", BR_PAIR(L3_CC,1) ,"b", F_RELCONDBR,0},
258  { "bcc.r", PCREL_SBR_PAIR(L3_CC) ,"3", F_RELCONDBR,0},
259 
260  { "buge", BR_PAIR(L3_CS,0) ,"B",F_ALIAS|F_CONDBR,0},
261  { "buge", SBR_PAIR(L3_CS,0,0) ,"1",F_ALIAS|F_CONDBR,0},
262  { "buge", SBR_PAIR(L3_CS,0,0) ,"143",F_ALIAS|F_CONDBR,0},
263  { "buge.r", BR_PAIR(L3_CS,1) ,"b",F_ALIAS|F_RELCONDBR,0},
264  { "buge.r", PCREL_SBR_PAIR(L3_CS) ,"3",F_ALIAS|F_RELCONDBR,0},
265 
266  { "bcs", BR_PAIR(L3_CS,0) ,"B", F_CONDBR,0},
267  { "bcs", SBR_PAIR(L3_CS,0,0) ,"1", F_CONDBR,0},
268  { "bcs", SBR_PAIR(L3_CS,0,0) ,"143", F_CONDBR,0},
269  { "bcs.r", BR_PAIR(L3_CS,1) ,"b", F_RELCONDBR,0},
270  { "bcs.r", PCREL_SBR_PAIR(L3_CS) ,"3", F_RELCONDBR,0},
271 
272  { "bult", BR_PAIR(L3_CC,0) ,"B",F_ALIAS|F_CONDBR,0},
273  { "bult", SBR_PAIR(L3_CC,0,0) ,"1",F_ALIAS|F_CONDBR,0},
274  { "bult", SBR_PAIR(L3_CC,0,0) ,"143",F_ALIAS|F_CONDBR,0},
275  { "bult.r", BR_PAIR(L3_CC,1) ,"b",F_ALIAS|F_RELCONDBR,0},
276  { "bult.r", PCREL_SBR_PAIR(L3_CC) ,"3",F_ALIAS|F_RELCONDBR,0},
277 
278  { "bne", BR_PAIR(L3_NE,0) ,"B", F_CONDBR,0},
279  { "bne", SBR_PAIR(L3_NE,0,0) ,"1", F_CONDBR,0},
280  { "bne", SBR_PAIR(L3_NE,0,0) ,"143", F_CONDBR,0},
281  { "bne.r", BR_PAIR(L3_NE,1) ,"b", F_RELCONDBR,0},
282  { "bne.r", PCREL_SBR_PAIR(L3_NE) ,"3", F_RELCONDBR,0},
283 
284  { "beq", BR_PAIR(L3_EQ,0) ,"B", F_CONDBR,0},
285  { "beq", SBR_PAIR(L3_EQ,0,0) ,"1", F_CONDBR,0},
286  { "beq", SBR_PAIR(L3_EQ,0,0) ,"143", F_CONDBR,0},
287  { "beq.r", BR_PAIR(L3_EQ,1) ,"b", F_RELCONDBR,0},
288  { "beq.r", PCREL_SBR_PAIR(L3_EQ) ,"3", F_RELCONDBR,0},
289 
290  { "bvc", BR_PAIR(L3_VC,0) ,"B", F_CONDBR,0},
291  { "bvc", SBR_PAIR(L3_VC,0,0) ,"1", F_CONDBR,0},
292  { "bvc", SBR_PAIR(L3_VC,0,0) ,"143", F_CONDBR,0},
293  { "bvc.r", BR_PAIR(L3_VC,1) ,"b", F_RELCONDBR,0},
294  { "bvc.r", PCREL_SBR_PAIR(L3_VC) ,"3", F_RELCONDBR,0},
295 
296  { "bvs", BR_PAIR(L3_VS,0) ,"B", F_CONDBR,0},
297  { "bvs", SBR_PAIR(L3_VS,0,0) ,"1", F_CONDBR,0},
298  { "bvs", SBR_PAIR(L3_VS,0,0) ,"143", F_CONDBR,0},
299  { "bvs.r", BR_PAIR(L3_VS,1) ,"b", F_RELCONDBR,0},
300  { "bvs.r", PCREL_SBR_PAIR(L3_VS) ,"3", F_RELCONDBR,0},
301 
302  { "bpl", BR_PAIR(L3_PL,0) ,"B", F_CONDBR,0},
303  { "bpl", SBR_PAIR(L3_PL,0,0) ,"1", F_CONDBR,0},
304  { "bpl", SBR_PAIR(L3_PL,0,0) ,"143", F_CONDBR,0},
305  { "bpl.r", BR_PAIR(L3_PL,1) ,"b", F_RELCONDBR,0},
306  { "bpl.r", PCREL_SBR_PAIR(L3_PL) ,"3", F_RELCONDBR,0},
307 
308  { "bmi", BR_PAIR(L3_MI,0) ,"B", F_CONDBR,0},
309  { "bmi", SBR_PAIR(L3_MI,0,0) ,"1", F_CONDBR,0},
310  { "bmi", SBR_PAIR(L3_MI,0,0) ,"143", F_CONDBR,0},
311  { "bmi.r", BR_PAIR(L3_MI,1) ,"b", F_RELCONDBR,0},
312  { "bmi.r", PCREL_SBR_PAIR(L3_MI) ,"3", F_RELCONDBR,0},
313 
314  { "bge", BR_PAIR(L3_GE,0) ,"B", F_CONDBR,0},
315  { "bge", SBR_PAIR(L3_GE,0,0) ,"1", F_CONDBR,0},
316  { "bge", SBR_PAIR(L3_GE,0,0) ,"143", F_CONDBR,0},
317  { "bge.r", BR_PAIR(L3_GE,1) ,"b", F_RELCONDBR,0},
318  { "bge.r", PCREL_SBR_PAIR(L3_GE) ,"3", F_RELCONDBR,0},
319 
320  { "blt", BR_PAIR(L3_LT,0) ,"B", F_CONDBR,0},
321  { "blt", SBR_PAIR(L3_LT,0,0) ,"1", F_CONDBR,0},
322  { "blt", SBR_PAIR(L3_LT,0,0) ,"143", F_CONDBR,0},
323  { "blt.r", BR_PAIR(L3_LT,1) ,"b", F_RELCONDBR,0},
324  { "blt.r", PCREL_SBR_PAIR(L3_LT) ,"3", F_RELCONDBR,0},
325 
326  { "bgt", BR_PAIR(L3_GT,0) ,"B", F_CONDBR,0},
327  { "bgt", SBR_PAIR(L3_GT,0,0) ,"1", F_CONDBR,0},
328  { "bgt", SBR_PAIR(L3_GT,0,0) ,"143", F_CONDBR,0},
329  { "bgt.r", BR_PAIR(L3_GT,1) ,"b", F_RELCONDBR,0},
330  { "bgt.r", PCREL_SBR_PAIR(L3_GT) ,"3", F_RELCONDBR,0},
331 
332  { "ble", BR_PAIR(L3_LE,0) ,"B", F_CONDBR,0},
333  { "ble", SBR_PAIR(L3_LE,0,0) ,"1", F_CONDBR,0},
334  { "ble", SBR_PAIR(L3_LE,0,0) ,"143", F_CONDBR,0},
335  { "ble.r", BR_PAIR(L3_LE,1) ,"b", F_RELCONDBR,0},
336  { "ble.r", PCREL_SBR_PAIR(L3_LE) ,"3", F_RELCONDBR,0},
337 
338  /* ld */
339 
340  { "ld", 0x80030004,0x7000fffb ,"[++1],d", F_RM,0},
341  { "ld", 0x80010004,0x7002fffb ,"[1++],d", F_RM,0},
342  { "ld", 0x8003fffc,0x70000003 ,"[--1],d", F_RM,0},
343  { "ld", 0x8001fffc,0x70020003 ,"[1--],d", F_RM,0},
344  { "ld", RRM_PAIR(0,1,0,L3_SIGNED_FULLWORD) ,"2[1],d", F_RRM,0},
345  { "ld", RRM_PAIR(0,1,1,L3_SIGNED_FULLWORD) ,"2[*1],d", F_RRM,0},
346  { "ld", RRM_PAIR(0,0,1,L3_SIGNED_FULLWORD) ,"2[1*],d", F_RRM,0},
347  { "ld", RRM_PAIR(0,1,0,L3_SIGNED_FULLWORD) ,"[162],d", F_RRM,0},
348  { "ld", RRM_PAIR(0,1,1,L3_SIGNED_FULLWORD) ,"[*162],d", F_RRM,0},
349  { "ld", RRM_PAIR(0,0,1,L3_SIGNED_FULLWORD) ,"[1*62],d", F_RRM,0},
350  { "ld", SLS_PAIR(0) ,"[Y],d", F_SLS,0},
351  { "ld", 0x80020000,0x707d0000 ,"[o],d", F_RM,0},
352 /*{ "ld", RM_PAIR(0,1,0) ,"[o],d", F_RM,0},*/
353  { "ld", RM_PAIR(0,1,0) ,"o[1],d", F_RM,0},
354  { "ld", RM_PAIR(0,1,1) ,"o[*1],d", F_RM,0},
355  { "ld", RM_PAIR(0,0,1) ,"o[1*],d", F_RM,0},
356 
357  { "uld", 0x80030004,0x7000fffb ,"[++1],d", F_ALIAS,0},
358  { "uld", 0x80010004,0x7002fffb ,"[1++],d", F_ALIAS,0},
359  { "uld", 0x8003fffc,0x70000003 ,"[--1],d", F_ALIAS,0},
360  { "uld", 0x8001fffc,0x70020003 ,"[1--],d", F_ALIAS,0},
361  { "uld", RRM_PAIR(0,1,0,L3_UNSIGNED_FULLWORD) ,"2[1],d", F_ALIAS,0},
362  { "uld", RRM_PAIR(0,1,1,L3_UNSIGNED_FULLWORD) ,"2[*1],d", F_ALIAS,0},
363  { "uld", RRM_PAIR(0,0,1,L3_UNSIGNED_FULLWORD) ,"2[1*],d", F_ALIAS,0},
364  { "uld", RRM_PAIR(0,1,0,L3_UNSIGNED_FULLWORD) ,"[162],d", F_ALIAS,0},
365  { "uld", RRM_PAIR(0,1,1,L3_UNSIGNED_FULLWORD) ,"[*162],d", F_ALIAS,0},
366  { "uld", RRM_PAIR(0,0,1,L3_UNSIGNED_FULLWORD) ,"[1*62],d", F_ALIAS,0},
367  { "uld", SLS_PAIR(0) ,"[Y],d", F_SLS|F_ALIAS,0},
368  /* Here, the second part of the RM_PAIR is wrong, but that's OK */
369  { "uld", RM_PAIR(0,1,0) ,"[o],d", F_ALIAS,0},
370  { "uld", RM_PAIR(0,1,0) ,"o[1],d", F_ALIAS,0},
371  { "uld", RM_PAIR(0,1,1) ,"o[*1],d", F_ALIAS,0},
372  { "uld", RM_PAIR(0,0,1) ,"o[1*],d", F_ALIAS,0},
373 
374  { "ld.h", 0xf0030c02,0x0000f3fd ,"[++1],d", F_HALF|F_SPLS,0},
375  { "ld.h", 0xf0030402,0x0000fbfd ,"[1++],d", F_HALF|F_SPLS,0},
376  { "ld.h", 0xf0030ffe,0x0000f001 ,"[--1],d", F_HALF|F_SPLS,0},
377  { "ld.h", 0xf00307fe,0x0000f801 ,"[1--],d", F_HALF|F_SPLS,0},
378  { "ld.h", RRM_PAIR(0,1,0,L3_SIGNED_HALFWORD) ,"2[1],d", F_HALF|F_RRM,0},
379  { "ld.h", RRM_PAIR(0,1,1,L3_SIGNED_HALFWORD) ,"2[*1],d", F_HALF|F_RRM,0},
380  { "ld.h", RRM_PAIR(0,0,1,L3_SIGNED_HALFWORD) ,"2[1*],d", F_HALF|F_RRM,0},
381  { "ld.h", RRM_PAIR(0,1,0,L3_SIGNED_HALFWORD) ,"[162],d", F_HALF|F_RRM,0},
382  { "ld.h", RRM_PAIR(0,1,1,L3_SIGNED_HALFWORD) ,"[*162],d", F_HALF|F_RRM,0},
383  { "ld.h", RRM_PAIR(0,0,1,L3_SIGNED_HALFWORD) ,"[1*62],d", F_HALF|F_RRM,0},
384  { "ld.h", 0xf0030800,0x007cf400 ,"[i],d", F_HALF|F_SPLS,0},
385 /*{ "ld.h", SPLS_PAIR(0,L3_SIGNED_HALFWORD,1,0) ,"[i],d", F_HALF|F_SPLS,0},*/
386  { "ld.h", SPLS_PAIR(0,L3_SIGNED_HALFWORD,1,0) ,"i[1],d", F_HALF|F_SPLS,0},
387  { "ld.h", SPLS_PAIR(0,L3_SIGNED_HALFWORD,1,1) ,"i[*1],d", F_HALF|F_SPLS,0},
388  { "ld.h", SPLS_PAIR(0,L3_SIGNED_HALFWORD,0,1) ,"i[1*],d", F_HALF|F_SPLS,0},
389 
390  { "uld.h", 0xf0031c02,0x0000e3fd ,"[++1],d", F_HALF|F_SPLS,0},
391  { "uld.h", 0xf0031402,0x0000ebfd ,"[1++],d", F_HALF|F_SPLS,0},
392  { "uld.h", 0xf0031ffe,0x0000e001 ,"[--1],d", F_HALF|F_SPLS,0},
393  { "uld.h", 0xf00317fe,0x0000e801 ,"[1--],d", F_HALF|F_SPLS,0},
394  { "uld.h",RRM_PAIR(0,1,0,L3_UNSIGNED_HALFWORD),"2[1],d", F_HALF|F_RRM,0},
395  { "uld.h",RRM_PAIR(0,1,1,L3_UNSIGNED_HALFWORD),"2[*1],d", F_HALF|F_RRM,0},
396  { "uld.h",RRM_PAIR(0,0,1,L3_UNSIGNED_HALFWORD),"2[1*],d", F_HALF|F_RRM,0},
397  { "uld.h",RRM_PAIR(0,1,0,L3_UNSIGNED_HALFWORD),"[162],d", F_HALF|F_RRM,0},
398  { "uld.h",RRM_PAIR(0,1,1,L3_UNSIGNED_HALFWORD),"[*162],d", F_HALF|F_RRM,0},
399  { "uld.h",RRM_PAIR(0,0,1,L3_UNSIGNED_HALFWORD),"[1*62],d", F_HALF|F_RRM,0},
400  { "uld.h", 0xf0031800,0x007ce400 ,"[i],d", F_HALF|F_SPLS,0},
401 /*{ "uld.h",SPLS_PAIR(0,L3_UNSIGNED_HALFWORD,1,0),"[i],d", F_HALF|F_SPLS,0},*/
402  { "uld.h",SPLS_PAIR(0,L3_UNSIGNED_HALFWORD,1,0),"i[1],d", F_HALF|F_SPLS,0},
403  { "uld.h",SPLS_PAIR(0,L3_UNSIGNED_HALFWORD,1,1),"i[*1],d", F_HALF|F_SPLS,0},
404  { "uld.h",SPLS_PAIR(0,L3_UNSIGNED_HALFWORD,0,1),"i[1*],d", F_HALF|F_SPLS,0},
405 
406  { "ld.b", 0xf0034c01,0x0000b3fe ,"[++1],d", F_BYTE|F_SPLS,0},
407  { "ld.b", 0xf0034401,0x0000bbfe ,"[1++],d", F_BYTE|F_SPLS,0},
408  { "ld.b", 0xf0034fff,0x0000b000 ,"[--1],d", F_BYTE|F_SPLS,0},
409  { "ld.b", 0xf00347ff,0x0000b800 ,"[1--],d", F_BYTE|F_SPLS,0},
410  { "ld.b", RRM_PAIR(0,1,0,L3_SIGNED_BYTE) ,"2[1],d", F_BYTE|F_RRM,0},
411  { "ld.b", RRM_PAIR(0,1,1,L3_SIGNED_BYTE) ,"2[*1],d", F_BYTE|F_RRM,0},
412  { "ld.b", RRM_PAIR(0,0,1,L3_SIGNED_BYTE) ,"2[1*],d", F_BYTE|F_RRM,0},
413  { "ld.b", RRM_PAIR(0,1,0,L3_SIGNED_BYTE) ,"[162],d", F_BYTE|F_RRM,0},
414  { "ld.b", RRM_PAIR(0,1,1,L3_SIGNED_BYTE) ,"[*162],d", F_BYTE|F_RRM,0},
415  { "ld.b", RRM_PAIR(0,0,1,L3_SIGNED_BYTE) ,"[1*62],d", F_BYTE|F_RRM,0},
416  { "ld.b", 0xf0034800,0x007cb400 ,"[i],d", F_BYTE|F_SPLS,0},
417 /*{ "ld.b", SPLS_PAIR(0,L3_SIGNED_BYTE,1,0) ,"[i],d", F_BYTE|F_SPLS,0},*/
418  { "ld.b", SPLS_PAIR(0,L3_SIGNED_BYTE,1,0) ,"i[1],d", F_BYTE|F_SPLS,0},
419  { "ld.b", SPLS_PAIR(0,L3_SIGNED_BYTE,1,1) ,"i[*1],d", F_BYTE|F_SPLS,0},
420  { "ld.b", SPLS_PAIR(0,L3_SIGNED_BYTE,0,1) ,"i[1*],d", F_BYTE|F_SPLS,0},
421 
422  { "uld.b", 0xf0035c01,0x0000a3fe ,"[++1],d", F_BYTE|F_SPLS,0},
423  { "uld.b", 0xf0035401,0x0000abfe ,"[1++],d", F_BYTE|F_SPLS,0},
424  { "uld.b", 0xf0035fff,0x0000a000 ,"[--1],d", F_BYTE|F_SPLS,0},
425  { "uld.b", 0xf00357ff,0x0000a800 ,"[1--],d", F_BYTE|F_SPLS,0},
426  { "uld.b", RRM_PAIR(0,1,0,L3_UNSIGNED_BYTE) ,"2[1],d", F_BYTE|F_RRM,0},
427  { "uld.b", RRM_PAIR(0,1,1,L3_UNSIGNED_BYTE) ,"2[*1],d", F_BYTE|F_RRM,0},
428  { "uld.b", RRM_PAIR(0,0,1,L3_UNSIGNED_BYTE) ,"2[1*],d", F_BYTE|F_RRM,0},
429  { "uld.b", RRM_PAIR(0,1,0,L3_UNSIGNED_BYTE) ,"[162],d", F_BYTE|F_RRM,0},
430  { "uld.b", RRM_PAIR(0,1,1,L3_UNSIGNED_BYTE) ,"[*162],d", F_BYTE|F_RRM,0},
431  { "uld.b", RRM_PAIR(0,0,1,L3_UNSIGNED_BYTE) ,"[1*62],d", F_BYTE|F_RRM,0},
432  { "uld.b", 0xf0035800,0x007ca400 ,"[i],d", F_BYTE|F_SPLS,0},
433 /*{ "uld.b", SPLS_PAIR(0,L3_UNSIGNED_BYTE,1,0) ,"[i],d", F_BYTE|F_SPLS,0},*/
434  { "uld.b", SPLS_PAIR(0,L3_UNSIGNED_BYTE,1,0) ,"i[1],d", F_BYTE|F_SPLS,0},
435  { "uld.b", SPLS_PAIR(0,L3_UNSIGNED_BYTE,1,1) ,"i[*1],d", F_BYTE|F_SPLS,0},
436  { "uld.b", SPLS_PAIR(0,L3_UNSIGNED_BYTE,0,1) ,"i[1*],d", F_BYTE|F_SPLS,0},
437 
438  /* leadz */
439 
440  { "leadz", LEADZ_PAIR(0) ,"1,d", F_LEADZ,0},
441  { "leadz.f", LEADZ_PAIR(1) ,"1,d", F_LEADZ,0},
442 
443  /* or */
444 
445  { "or", RR_PAIR(0,L3_OR) ,"1,2,d", F_RR,0},
446  { "or", RI_PAIR(L3_OR,0,0) ,"1,j,d", F_RI,0},
447  { "or", RI_PAIR(L3_OR,0,1) ,"1,J,d", F_RI,0},
448  { "or.f", RR_PAIR(1,L3_OR) ,"1,2,d", F_RR,0},
449  { "or.f", RI_PAIR(L3_OR,1,0) ,"1,j,d", F_RI,0},
450  { "or.f", RI_PAIR(L3_OR,1,1) ,"1,J,d", F_RI,0},
451 
452  /* popc */
453 
454  { "popc", POPC_PAIR(0) ,"1,d", F_POPC,0},
455  { "popc.f", POPC_PAIR(1) ,"1,d", F_POPC,0},
456 
457  /* put */
458 
459  { "put", RRR_PAIR() ,"15(243),d",F_RRR, 0},
460 
461  /* punt */
462 
463  { "punt", 0xf003ff47, 0x00000000 ,"", F_PUNT, 0},
464 
465  /* sh */
466 
467  { "sh", RR_PAIR(0,L3_SH) ,"1,2,d", F_RR, 0},
468  { "sh", RI_PAIR(L3_SH,0,0) ,"1,s,d", F_RI, 0},
469  { "sh.f", RR_PAIR(1,L3_SH) ,"1,2,d", F_RR, 0},
470  { "sh.f", RI_PAIR(L3_SH,1,0) ,"1,s,d", F_RI, 0},
471  { "sha", RR_PAIR(0,L3_SH|L3_ARITH) ,"1,2,d", F_RR, 0},
472  { "sha", RI_PAIR(L3_SH,0,1) ,"1,s,d", F_RI, 0},
473  { "sha.f", RR_PAIR(1,L3_SH|L3_ARITH) ,"1,2,d", F_RR, 0},
474  { "sha.f", RI_PAIR(L3_SH,1,1) ,"1,s,d", F_RI, 0},
475 
476  /* st */
477 
478  { "st", 0x90030004,0x6000fffb ,"d,[++1]", F_RM,0},
479  { "st", 0x90010004,0x6002fffb ,"d,[1++]", F_RM,0},
480  { "st", 0x9003fffc,0x60000003 ,"d,[--1]", F_RM,0},
481  { "st", 0x9001fffc,0x60020003 ,"d,[1--]", F_RM,0},
482  { "st", RRM_PAIR(1,1,0,L3_SIGNED_FULLWORD) ,"d,2[1]", F_RRM,0},
483  { "st", RRM_PAIR(1,1,1,L3_SIGNED_FULLWORD) ,"d,2[*1]", F_RRM,0},
484  { "st", RRM_PAIR(1,0,1,L3_SIGNED_FULLWORD) ,"d,2[1*]", F_RRM,0},
485  { "st", RRM_PAIR(1,1,0,L3_SIGNED_FULLWORD) ,"d,[162]", F_RRM,0},
486  { "st", RRM_PAIR(1,1,1,L3_SIGNED_FULLWORD) ,"d,[*162]", F_RRM,0},
487  { "st", RRM_PAIR(1,0,1,L3_SIGNED_FULLWORD) ,"d,[1*62]", F_RRM,0},
488  { "st", SLS_PAIR(1) ,"d,[Y]", F_SLS,0},
489  { "st", 0x90020000,0x607d0000 ,"d,[o]", F_RM,0},
490 /*{ "st", RM_PAIR(1,1,0) ,"d,[o]", F_RM,0},*/
491  { "st", RM_PAIR(1,1,0) ,"d,o[1]", F_RM,0},
492  { "st", RM_PAIR(1,1,1) ,"d,o[*1]", F_RM,0},
493  { "st", RM_PAIR(1,0,1) ,"d,o[1*]", F_RM,0},
494 
495  { "st.h", 0xf0032c02,0x0000d3fd ,"d,[++1]", F_HALF|F_SPLS,0},
496  { "st.h", 0xf0032402,0x0000dbfd ,"d,[1++]", F_HALF|F_SPLS,0},
497  { "st.h", 0xf0032ffe,0x0000d001 ,"d,[--1]", F_HALF|F_SPLS,0},
498  { "st.h", 0xf00327fe,0x0000d801 ,"d,[1--]", F_HALF|F_SPLS,0},
499  { "st.h", RRM_PAIR(1,1,0,L3_SIGNED_HALFWORD) ,"d,2[1]", F_HALF|F_RRM,0},
500  { "st.h", RRM_PAIR(1,1,1,L3_SIGNED_HALFWORD) ,"d,2[*1]", F_HALF|F_RRM,0},
501  { "st.h", RRM_PAIR(1,0,1,L3_SIGNED_HALFWORD) ,"d,2[1*]", F_HALF|F_RRM,0},
502  { "st.h", RRM_PAIR(1,1,0,L3_SIGNED_HALFWORD) ,"d,[162]", F_HALF|F_RRM,0},
503  { "st.h", RRM_PAIR(1,1,1,L3_SIGNED_HALFWORD) ,"d,[*162]", F_HALF|F_RRM,0},
504  { "st.h", RRM_PAIR(1,0,1,L3_SIGNED_HALFWORD) ,"d,[1*62]", F_HALF|F_RRM,0},
505  { "st.h", 0xf0032800,0x007cd400 ,"d,[i]", F_HALF|F_SPLS,0},
506 /*{ "st.h", SPLS_PAIR(1,L3_SIGNED_HALFWORD,1,0) ,"d,[i]", F_HALF|F_SPLS,0},*/
507  { "st.h", SPLS_PAIR(1,L3_SIGNED_HALFWORD,1,0) ,"d,i[1]", F_HALF|F_SPLS,0},
508  { "st.h", SPLS_PAIR(1,L3_SIGNED_HALFWORD,1,1) ,"d,i[*1]", F_HALF|F_SPLS,0},
509  { "st.h", SPLS_PAIR(1,L3_SIGNED_HALFWORD,0,1) ,"d,i[1*]", F_HALF|F_SPLS,0},
510 
511  { "st.b", 0xf0036c01,0x000093fe ,"d,[++1]", F_BYTE|F_SPLS,0},
512  { "st.b", 0xf0036401,0x00009bfe ,"d,[1++]", F_BYTE|F_SPLS,0},
513  { "st.b", 0xf0036fff,0x00009000 ,"d,[--1]", F_BYTE|F_SPLS,0},
514  { "st.b", 0xf00367ff,0x00009800 ,"d,[1--]", F_BYTE|F_SPLS,0},
515  { "st.b", RRM_PAIR(1,1,0,L3_SIGNED_BYTE) ,"d,2[1]", F_BYTE|F_RRM,0},
516  { "st.b", RRM_PAIR(1,1,1,L3_SIGNED_BYTE) ,"d,2[*1]", F_BYTE|F_RRM,0},
517  { "st.b", RRM_PAIR(1,0,1,L3_SIGNED_BYTE) ,"d,2[1*]", F_BYTE|F_RRM,0},
518  { "st.b", RRM_PAIR(1,1,0,L3_SIGNED_BYTE) ,"d,[162]", F_BYTE|F_RRM,0},
519  { "st.b", RRM_PAIR(1,1,1,L3_SIGNED_BYTE) ,"d,[*162]", F_BYTE|F_RRM,0},
520  { "st.b", RRM_PAIR(1,0,1,L3_SIGNED_BYTE) ,"d,[1*62]", F_BYTE|F_RRM,0},
521  { "st.b", 0xf0036800,0x007c9400 ,"d,[i]", F_BYTE|F_SPLS,0},
522 /*{ "st.b", SPLS_PAIR(1,L3_SIGNED_BYTE,1,0) ,"d,[i]", F_BYTE|F_SPLS,0},*/
523  { "st.b", SPLS_PAIR(1,L3_SIGNED_BYTE,1,0) ,"d,i[1]", F_BYTE|F_SPLS,0},
524  { "st.b", SPLS_PAIR(1,L3_SIGNED_BYTE,1,1) ,"d,i[*1]", F_BYTE|F_SPLS,0},
525  { "st.b", SPLS_PAIR(1,L3_SIGNED_BYTE,0,1) ,"d,i[1*]", F_BYTE|F_SPLS,0},
526 
527  /* sub */
528 
529  { "sub", RR_PAIR(0,L3_SUB) ,"1,2,d", F_RR,0},
530  { "sub", RI_PAIR(L3_SUB,0,0) ,"1,j,d", F_RI,0},
531  { "sub", RI_PAIR(L3_SUB,0,1) ,"1,J,d", F_RI,0},
532 /*{ "sub", RI_PAIR(L3_ADD,0,0) ,"1,k,d", F_ALIAS,0}, */
533  { "sub.f", RR_PAIR(1,L3_SUB) ,"1,2,d", F_RR,0},
534  { "sub.f", RI_PAIR(L3_SUB,1,0) ,"1,j,d", F_RI,0},
535  { "sub.f", RI_PAIR(L3_SUB,1,1) ,"1,J,d", F_RI,0},
536 /*{ "sub.f", RI_PAIR(L3_ADD,1,0) ,"1,k,d", F_ALIAS,0}, */
537  { "subb", RR_PAIR(0,L3_SUBB) ,"1,2,d", F_RR,0},
538  { "subb", RI_PAIR(L3_SUBB,0,0) ,"1,j,d", F_RI,0},
539  { "subb", RI_PAIR(L3_SUBB,0,1) ,"1,J,d", F_RI,0},
540 /*{ "subb", RI_PAIR(L3_ADDC,0,0) ,"1,k,d", F_ALIAS,0}, */
541  { "subb.f", RR_PAIR(1,L3_SUBB) ,"1,2,d", F_RR,0},
542  { "subb.f", RI_PAIR(L3_SUBB,1,0) ,"1,j,d", F_RI,0},
543  { "subb.f", RI_PAIR(L3_SUBB,1,1) ,"1,J,d", F_RI,0},
544 /*{ "subb.f", RI_PAIR(L3_ADDC,1,0) ,"1,k,d", F_ALIAS,0}, */
545 
546  /* sCC */
547 
548  { "shi", SCC_PAIR(L3_HI) ,"1", F_SCC|F_ALIAS,0},
549  { "sugt", SCC_PAIR(L3_HI) ,"1", F_SCC,0},
550  { "sls", SCC_PAIR(L3_LS) ,"1", F_SCC|F_ALIAS,0},
551  { "sule", SCC_PAIR(L3_LS) ,"1", F_SCC,0},
552  { "scc", SCC_PAIR(L3_CC) ,"1", F_SCC|F_ALIAS,0},
553  { "suge", SCC_PAIR(L3_CS) ,"1", F_SCC,0},
554  { "scs", SCC_PAIR(L3_CS) ,"1", F_SCC|F_ALIAS,0},
555  { "sult", SCC_PAIR(L3_CC) ,"1", F_SCC,0},
556  { "sne", SCC_PAIR(L3_NE) ,"1", F_SCC,0},
557  { "seq", SCC_PAIR(L3_EQ) ,"1", F_SCC,0},
558  { "svc", SCC_PAIR(L3_VC) ,"1", F_SCC,0},
559  { "svs", SCC_PAIR(L3_VS) ,"1", F_SCC,0},
560  { "spl", SCC_PAIR(L3_PL) ,"1", F_SCC,0},
561  { "smi", SCC_PAIR(L3_MI) ,"1", F_SCC,0},
562  { "sge", SCC_PAIR(L3_GE) ,"1", F_SCC,0},
563  { "slt", SCC_PAIR(L3_LT) ,"1", F_SCC,0},
564  { "sgt", SCC_PAIR(L3_GT) ,"1", F_SCC,0},
565  { "sle", SCC_PAIR(L3_LE) ,"1", F_SCC,0},
566 
567  /* xor */
568 
569  { "xor", RR_PAIR(0,L3_XOR) ,"1,2,d", F_RR,0},
570  { "xor", RI_PAIR(L3_XOR,0,0) ,"1,j,d", F_RI,0},
571  { "xor", RI_PAIR(L3_XOR,0,1) ,"1,J,d", F_RI,0},
572  { "xor.f", RR_PAIR(1,L3_XOR) ,"1,2,d", F_RR,0},
573  { "xor.f", RI_PAIR(L3_XOR,1,0) ,"1,j,d", F_RI,0},
574  { "xor.f", RI_PAIR(L3_XOR,1,1) ,"1,J,d", F_RI,0},
575 
576 };
577 
578 const int bfd_lanai_num_opcodes = ((sizeof lanai_opcodes)/(sizeof lanai_opcodes[0]));
#define F_ALIAS
Definition: aarch64.h:722
#define NULL
Definition: cris-opc.c:27
#define RI_PAIR(op, f, h)
Definition: lanai-opc.c:87
#define RR_MOV_PAIR(f, op)
Definition: lanai-opc.c:141
#define RRM_PAIR(s, p, q, mode)
Definition: lanai-opc.c:106
#define BR_PAIR(cond, r)
Definition: lanai-opc.c:110
const int bfd_lanai_num_opcodes
Definition: lanai-opc.c:578
#define LEADZ_PAIR(f)
Definition: lanai-opc.c:94
#define SCC_PAIR(cond)
Definition: lanai-opc.c:113
#define RR_PAIR(f, op)
Definition: lanai-opc.c:90
#define POPC_PAIR(f)
Definition: lanai-opc.c:97
struct lanai_opcode lanai_opcodes[]
Definition: lanai-opc.c:158
#define SPLS_PAIR(s, mode, p, q)
Definition: lanai-opc.c:121
#define RRR_PAIR()
Definition: lanai-opc.c:100
#define PCREL_SBR_PAIR(cond)
Definition: lanai-opc.c:131
#define SLI_PAIR()
Definition: lanai-opc.c:118
#define SBR_PAIR(cond, op, r)
Definition: lanai-opc.c:128
#define RM_PAIR(s, p, q)
Definition: lanai-opc.c:103
#define RI_MOV_PAIR(op, f, h)
Definition: lanai-opc.c:137
#define SLS_PAIR(s)
Definition: lanai-opc.c:115
const char * architecture_pname[]
Definition: lanai-opc.c:71
#define L3_SUBB
Definition: lanai.h:274
#define F_BR
Definition: lanai.h:107
#define F_RELUNBR
Definition: lanai.h:128
#define F_RM
Definition: lanai.h:105
#define L3_OR
Definition: lanai.h:276
#define F_SPLS
Definition: lanai.h:110
#define F_RELCONDBR
Definition: lanai.h:127
#define L3_SIGNED_BYTE
Definition: lanai.h:293
#define L3_UNSIGNED_FULLWORD
Definition: lanai.h:297
#define F_SCC
Definition: lanai.h:113
#define F_SLS
Definition: lanai.h:108
#define L3_F
Definition: lanai.h:190
#define F_LEADZ
Definition: lanai.h:122
#define L3_T
Definition: lanai.h:189
#define F_POPC
Definition: lanai.h:123
#define L3_AND
Definition: lanai.h:275
#define L3_HI
Definition: lanai.h:191
#define F_HALF
Definition: lanai.h:116
#define F_UNBR
Definition: lanai.h:126
#define L3_UNSIGNED_HALFWORD
Definition: lanai.h:295
#define L3_UNSIGNED_BYTE
Definition: lanai.h:296
#define L3_EQ
Definition: lanai.h:196
#define F_RRR
Definition: lanai.h:104
#define L3_SH
Definition: lanai.h:278
#define L3_VC
Definition: lanai.h:197
#define L3_SIGNED_FULLWORD
Definition: lanai.h:294
#define F_SLI
Definition: lanai.h:109
#define F_RR
Definition: lanai.h:103
#define L3_CC
Definition: lanai.h:193
#define L3_VS
Definition: lanai.h:198
#define L3_PL
Definition: lanai.h:199
#define F_PUNT
Definition: lanai.h:111
#define F_RI
Definition: lanai.h:102
#define L3_LE
Definition: lanai.h:204
#define F_CONDBR
Definition: lanai.h:125
#define L3_SUB
Definition: lanai.h:273
#define L3_LS
Definition: lanai.h:192
#define F_SBR
Definition: lanai.h:112
#define L3_XOR
Definition: lanai.h:277
#define L3_ADDC
Definition: lanai.h:272
#define L3_SIGNED_HALFWORD
Definition: lanai.h:292
#define F_RRM
Definition: lanai.h:106
#define L3_ARITH
Definition: lanai.h:281
#define F_REL
Definition: lanai.h:120
#define L3_GT
Definition: lanai.h:203
#define L3_MI
Definition: lanai.h:200
#define F_BYTE
Definition: lanai.h:115
#define L3_LT
Definition: lanai.h:202
#define L3_GE
Definition: lanai.h:201
#define L3_NE
Definition: lanai.h:195
#define L3_ADD
Definition: lanai.h:271
#define L3_CS
Definition: lanai.h:194