or1k: Add the l.adrp insn and supporting relocations
[deliverable/binutils-gdb.git] / opcodes / or1k-opc.c
CommitLineData
4162bb66 1/* DO NOT EDIT! -*- buffer-read-only: t -*- vi:set ro: */
73589c9d
CS
2/* Instruction opcode table for or1k.
3
4THIS FILE IS MACHINE GENERATED WITH CGEN.
5
219d1afa 6Copyright (C) 1996-2018 Free Software Foundation, Inc.
73589c9d
CS
7
8This file is part of the GNU Binutils and/or GDB, the GNU debugger.
9
10 This file is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 3, or (at your option)
13 any later version.
14
15 It is distributed in the hope that it will be useful, but WITHOUT
16 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
17 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
18 License for more details.
19
20 You should have received a copy of the GNU General Public License along
21 with this program; if not, write to the Free Software Foundation, Inc.,
22 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
23
24*/
25
26#include "sysdep.h"
27#include "ansidecl.h"
28#include "bfd.h"
29#include "symcat.h"
30#include "or1k-desc.h"
31#include "or1k-opc.h"
32#include "libiberty.h"
33
34/* -- opc.c */
35/* -- */
36/* The hash functions are recorded here to help keep assembler code out of
37 the disassembler and vice versa. */
38
39static int asm_hash_insn_p (const CGEN_INSN *);
40static unsigned int asm_hash_insn (const char *);
41static int dis_hash_insn_p (const CGEN_INSN *);
42static unsigned int dis_hash_insn (const char *, CGEN_INSN_INT);
43
44/* Instruction formats. */
45
46#define F(f) & or1k_cgen_ifld_table[OR1K_##f]
47static const CGEN_IFMT ifmt_empty ATTRIBUTE_UNUSED = {
48 0, 0, 0x0, { { 0 } }
49};
50
51static const CGEN_IFMT ifmt_l_j ATTRIBUTE_UNUSED = {
52 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_DISP26) }, { 0 } }
53};
54
c8e98e36
SH
55static const CGEN_IFMT ifmt_l_adrp ATTRIBUTE_UNUSED = {
56 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_DISP21) }, { 0 } }
57};
58
73589c9d
CS
59static const CGEN_IFMT ifmt_l_jr ATTRIBUTE_UNUSED = {
60 32, 32, 0xffff07ff, { { F (F_OPCODE) }, { F (F_RESV_25_10) }, { F (F_R3) }, { F (F_RESV_10_11) }, { 0 } }
61};
62
63static const CGEN_IFMT ifmt_l_trap ATTRIBUTE_UNUSED = {
64 32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_OP_25_5) }, { F (F_RESV_20_5) }, { F (F_UIMM16) }, { 0 } }
65};
66
018dc9be
SK
67static const CGEN_IFMT ifmt_l_msync ATTRIBUTE_UNUSED = {
68 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_OP_25_5) }, { F (F_RESV_20_21) }, { 0 } }
69};
70
73589c9d
CS
71static const CGEN_IFMT ifmt_l_rfe ATTRIBUTE_UNUSED = {
72 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RESV_25_26) }, { 0 } }
73};
74
75static const CGEN_IFMT ifmt_l_nop_imm ATTRIBUTE_UNUSED = {
76 32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_OP_25_2) }, { F (F_RESV_23_8) }, { F (F_UIMM16) }, { 0 } }
77};
78
79static const CGEN_IFMT ifmt_l_movhi ATTRIBUTE_UNUSED = {
80 32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_RESV_20_4) }, { F (F_OP_16_1) }, { F (F_UIMM16) }, { 0 } }
81};
82
83static const CGEN_IFMT ifmt_l_macrc ATTRIBUTE_UNUSED = {
84 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_RESV_20_4) }, { F (F_OP_16_1) }, { F (F_UIMM16) }, { 0 } }
85};
86
87static const CGEN_IFMT ifmt_l_mfspr ATTRIBUTE_UNUSED = {
88 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_UIMM16) }, { 0 } }
89};
90
91static const CGEN_IFMT ifmt_l_mtspr ATTRIBUTE_UNUSED = {
92 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_R2) }, { F (F_R3) }, { F (F_UIMM16_SPLIT) }, { 0 } }
93};
94
95static const CGEN_IFMT ifmt_l_lwz ATTRIBUTE_UNUSED = {
96 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } }
97};
98
99static const CGEN_IFMT ifmt_l_sw ATTRIBUTE_UNUSED = {
999b995d
SK
100 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_R2) }, { F (F_R3) }, { F (F_SIMM16_SPLIT) }, { 0 } }
101};
102
103static const CGEN_IFMT ifmt_l_swa ATTRIBUTE_UNUSED = {
104 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_R2) }, { F (F_R3) }, { F (F_SIMM16) }, { 0 } }
73589c9d
CS
105};
106
107static const CGEN_IFMT ifmt_l_sll ATTRIBUTE_UNUSED = {
108 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_3) }, { F (F_OP_7_2) }, { F (F_RESV_5_2) }, { F (F_OP_3_4) }, { 0 } }
109};
110
111static const CGEN_IFMT ifmt_l_slli ATTRIBUTE_UNUSED = {
112 32, 32, 0xfc00ffc0, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_RESV_15_8) }, { F (F_OP_7_2) }, { F (F_UIMM6) }, { 0 } }
113};
114
115static const CGEN_IFMT ifmt_l_and ATTRIBUTE_UNUSED = {
116 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_7) }, { F (F_OP_3_4) }, { 0 } }
117};
118
119static const CGEN_IFMT ifmt_l_exths ATTRIBUTE_UNUSED = {
120 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_RESV_15_6) }, { F (F_OP_9_4) }, { F (F_RESV_5_2) }, { F (F_OP_3_4) }, { 0 } }
121};
122
123static const CGEN_IFMT ifmt_l_cmov ATTRIBUTE_UNUSED = {
124 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_1) }, { F (F_OP_9_2) }, { F (F_RESV_7_4) }, { F (F_OP_3_4) }, { 0 } }
125};
126
127static const CGEN_IFMT ifmt_l_sfgts ATTRIBUTE_UNUSED = {
128 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_OP_25_5) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_11) }, { 0 } }
129};
130
131static const CGEN_IFMT ifmt_l_sfgtsi ATTRIBUTE_UNUSED = {
132 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_OP_25_5) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } }
133};
134
135static const CGEN_IFMT ifmt_l_mac ATTRIBUTE_UNUSED = {
136 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_OP_25_5) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_7) }, { F (F_OP_3_4) }, { 0 } }
137};
138
139static const CGEN_IFMT ifmt_l_maci ATTRIBUTE_UNUSED = {
140 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RESV_25_5) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } }
141};
142
143static const CGEN_IFMT ifmt_lf_add_s ATTRIBUTE_UNUSED = {
144 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_3) }, { F (F_OP_7_8) }, { 0 } }
145};
146
147static const CGEN_IFMT ifmt_lf_add_d ATTRIBUTE_UNUSED = {
148 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R1) }, { F (F_R1) }, { F (F_RESV_10_3) }, { F (F_OP_7_8) }, { 0 } }
149};
150
151static const CGEN_IFMT ifmt_lf_itof_s ATTRIBUTE_UNUSED = {
152 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_3) }, { F (F_OP_7_8) }, { 0 } }
153};
154
155static const CGEN_IFMT ifmt_lf_ftoi_s ATTRIBUTE_UNUSED = {
156 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_3) }, { F (F_OP_7_8) }, { 0 } }
157};
158
159static const CGEN_IFMT ifmt_lf_ftoi_d ATTRIBUTE_UNUSED = {
160 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R1) }, { F (F_R3) }, { F (F_RESV_10_3) }, { F (F_OP_7_8) }, { 0 } }
161};
162
163static const CGEN_IFMT ifmt_lf_eq_s ATTRIBUTE_UNUSED = {
164 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_3) }, { F (F_OP_7_8) }, { 0 } }
165};
166
167static const CGEN_IFMT ifmt_lf_cust1_s ATTRIBUTE_UNUSED = {
168 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RESV_25_5) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_3) }, { F (F_OP_7_8) }, { 0 } }
169};
170
171static const CGEN_IFMT ifmt_lf_cust1_d ATTRIBUTE_UNUSED = {
172 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RESV_25_5) }, { F (F_R1) }, { F (F_R1) }, { F (F_RESV_10_3) }, { F (F_OP_7_8) }, { 0 } }
173};
174
175#undef F
176
177#define A(a) (1 << CGEN_INSN_##a)
178#define OPERAND(op) OR1K_OPERAND_##op
179#define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
180#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
181
182/* The instruction table. */
183
184static const CGEN_OPCODE or1k_cgen_insn_opcode_table[MAX_INSNS] =
185{
186 /* Special null first entry.
187 A `num' value of zero is thus invalid.
188 Also, the special `invalid' insn resides here. */
189 { { 0, 0, 0, 0 }, {{0}}, 0, {0}},
190/* l.j ${disp26} */
191 {
192 { 0, 0, 0, 0 },
193 { { MNEM, ' ', OP (DISP26), 0 } },
194 & ifmt_l_j, { 0x0 }
195 },
c8e98e36
SH
196/* l.adrp $rD,${disp21} */
197 {
198 { 0, 0, 0, 0 },
199 { { MNEM, ' ', OP (RD), ',', OP (DISP21), 0 } },
200 & ifmt_l_adrp, { 0x8000000 }
201 },
73589c9d
CS
202/* l.jal ${disp26} */
203 {
204 { 0, 0, 0, 0 },
205 { { MNEM, ' ', OP (DISP26), 0 } },
206 & ifmt_l_j, { 0x4000000 }
207 },
208/* l.jr $rB */
209 {
210 { 0, 0, 0, 0 },
211 { { MNEM, ' ', OP (RB), 0 } },
212 & ifmt_l_jr, { 0x44000000 }
213 },
214/* l.jalr $rB */
215 {
216 { 0, 0, 0, 0 },
217 { { MNEM, ' ', OP (RB), 0 } },
218 & ifmt_l_jr, { 0x48000000 }
219 },
220/* l.bnf ${disp26} */
221 {
222 { 0, 0, 0, 0 },
223 { { MNEM, ' ', OP (DISP26), 0 } },
224 & ifmt_l_j, { 0xc000000 }
225 },
226/* l.bf ${disp26} */
227 {
228 { 0, 0, 0, 0 },
229 { { MNEM, ' ', OP (DISP26), 0 } },
230 & ifmt_l_j, { 0x10000000 }
231 },
232/* l.trap ${uimm16} */
233 {
234 { 0, 0, 0, 0 },
235 { { MNEM, ' ', OP (UIMM16), 0 } },
236 & ifmt_l_trap, { 0x21000000 }
237 },
238/* l.sys ${uimm16} */
239 {
240 { 0, 0, 0, 0 },
241 { { MNEM, ' ', OP (UIMM16), 0 } },
242 & ifmt_l_trap, { 0x20000000 }
243 },
018dc9be
SK
244/* l.msync */
245 {
246 { 0, 0, 0, 0 },
247 { { MNEM, 0 } },
248 & ifmt_l_msync, { 0x22000000 }
249 },
250/* l.psync */
251 {
252 { 0, 0, 0, 0 },
253 { { MNEM, 0 } },
254 & ifmt_l_msync, { 0x22800000 }
255 },
256/* l.csync */
257 {
258 { 0, 0, 0, 0 },
259 { { MNEM, 0 } },
260 & ifmt_l_msync, { 0x23000000 }
261 },
73589c9d
CS
262/* l.rfe */
263 {
264 { 0, 0, 0, 0 },
265 { { MNEM, 0 } },
266 & ifmt_l_rfe, { 0x24000000 }
267 },
268/* l.nop ${uimm16} */
269 {
270 { 0, 0, 0, 0 },
271 { { MNEM, ' ', OP (UIMM16), 0 } },
272 & ifmt_l_nop_imm, { 0x15000000 }
273 },
274/* l.nop */
275 {
276 { 0, 0, 0, 0 },
277 { { MNEM, 0 } },
278 & ifmt_l_nop_imm, { 0x15000000 }
279 },
280/* l.movhi $rD,$uimm16 */
281 {
282 { 0, 0, 0, 0 },
283 { { MNEM, ' ', OP (RD), ',', OP (UIMM16), 0 } },
284 & ifmt_l_movhi, { 0x18000000 }
285 },
286/* l.macrc $rD */
287 {
288 { 0, 0, 0, 0 },
289 { { MNEM, ' ', OP (RD), 0 } },
290 & ifmt_l_macrc, { 0x18010000 }
291 },
292/* l.mfspr $rD,$rA,${uimm16} */
293 {
294 { 0, 0, 0, 0 },
295 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (UIMM16), 0 } },
296 & ifmt_l_mfspr, { 0xb4000000 }
297 },
298/* l.mtspr $rA,$rB,${uimm16-split} */
299 {
300 { 0, 0, 0, 0 },
301 { { MNEM, ' ', OP (RA), ',', OP (RB), ',', OP (UIMM16_SPLIT), 0 } },
302 & ifmt_l_mtspr, { 0xc0000000 }
303 },
304/* l.lwz $rD,${simm16}($rA) */
305 {
306 { 0, 0, 0, 0 },
307 { { MNEM, ' ', OP (RD), ',', OP (SIMM16), '(', OP (RA), ')', 0 } },
308 & ifmt_l_lwz, { 0x84000000 }
309 },
310/* l.lws $rD,${simm16}($rA) */
311 {
312 { 0, 0, 0, 0 },
313 { { MNEM, ' ', OP (RD), ',', OP (SIMM16), '(', OP (RA), ')', 0 } },
314 & ifmt_l_lwz, { 0x88000000 }
315 },
999b995d
SK
316/* l.lwa $rD,${simm16}($rA) */
317 {
318 { 0, 0, 0, 0 },
319 { { MNEM, ' ', OP (RD), ',', OP (SIMM16), '(', OP (RA), ')', 0 } },
320 & ifmt_l_lwz, { 0x6c000000 }
321 },
73589c9d
CS
322/* l.lbz $rD,${simm16}($rA) */
323 {
324 { 0, 0, 0, 0 },
325 { { MNEM, ' ', OP (RD), ',', OP (SIMM16), '(', OP (RA), ')', 0 } },
326 & ifmt_l_lwz, { 0x8c000000 }
327 },
328/* l.lbs $rD,${simm16}($rA) */
329 {
330 { 0, 0, 0, 0 },
331 { { MNEM, ' ', OP (RD), ',', OP (SIMM16), '(', OP (RA), ')', 0 } },
332 & ifmt_l_lwz, { 0x90000000 }
333 },
334/* l.lhz $rD,${simm16}($rA) */
335 {
336 { 0, 0, 0, 0 },
337 { { MNEM, ' ', OP (RD), ',', OP (SIMM16), '(', OP (RA), ')', 0 } },
338 & ifmt_l_lwz, { 0x94000000 }
339 },
340/* l.lhs $rD,${simm16}($rA) */
341 {
342 { 0, 0, 0, 0 },
343 { { MNEM, ' ', OP (RD), ',', OP (SIMM16), '(', OP (RA), ')', 0 } },
344 & ifmt_l_lwz, { 0x98000000 }
345 },
346/* l.sw ${simm16-split}($rA),$rB */
347 {
348 { 0, 0, 0, 0 },
349 { { MNEM, ' ', OP (SIMM16_SPLIT), '(', OP (RA), ')', ',', OP (RB), 0 } },
350 & ifmt_l_sw, { 0xd4000000 }
351 },
352/* l.sb ${simm16-split}($rA),$rB */
353 {
354 { 0, 0, 0, 0 },
355 { { MNEM, ' ', OP (SIMM16_SPLIT), '(', OP (RA), ')', ',', OP (RB), 0 } },
356 & ifmt_l_sw, { 0xd8000000 }
357 },
358/* l.sh ${simm16-split}($rA),$rB */
359 {
360 { 0, 0, 0, 0 },
361 { { MNEM, ' ', OP (SIMM16_SPLIT), '(', OP (RA), ')', ',', OP (RB), 0 } },
362 & ifmt_l_sw, { 0xdc000000 }
363 },
999b995d
SK
364/* l.swa ${simm16-split}($rA),$rB */
365 {
366 { 0, 0, 0, 0 },
367 { { MNEM, ' ', OP (SIMM16_SPLIT), '(', OP (RA), ')', ',', OP (RB), 0 } },
368 & ifmt_l_swa, { 0xcc000000 }
369 },
73589c9d
CS
370/* l.sll $rD,$rA,$rB */
371 {
372 { 0, 0, 0, 0 },
373 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } },
374 & ifmt_l_sll, { 0xe0000008 }
375 },
376/* l.slli $rD,$rA,${uimm6} */
377 {
378 { 0, 0, 0, 0 },
379 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (UIMM6), 0 } },
380 & ifmt_l_slli, { 0xb8000000 }
381 },
382/* l.srl $rD,$rA,$rB */
383 {
384 { 0, 0, 0, 0 },
385 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } },
386 & ifmt_l_sll, { 0xe0000048 }
387 },
388/* l.srli $rD,$rA,${uimm6} */
389 {
390 { 0, 0, 0, 0 },
391 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (UIMM6), 0 } },
392 & ifmt_l_slli, { 0xb8000040 }
393 },
394/* l.sra $rD,$rA,$rB */
395 {
396 { 0, 0, 0, 0 },
397 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } },
398 & ifmt_l_sll, { 0xe0000088 }
399 },
400/* l.srai $rD,$rA,${uimm6} */
401 {
402 { 0, 0, 0, 0 },
403 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (UIMM6), 0 } },
404 & ifmt_l_slli, { 0xb8000080 }
405 },
406/* l.ror $rD,$rA,$rB */
407 {
408 { 0, 0, 0, 0 },
409 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } },
410 & ifmt_l_sll, { 0xe00000c8 }
411 },
412/* l.rori $rD,$rA,${uimm6} */
413 {
414 { 0, 0, 0, 0 },
415 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (UIMM6), 0 } },
416 & ifmt_l_slli, { 0xb80000c0 }
417 },
418/* l.and $rD,$rA,$rB */
419 {
420 { 0, 0, 0, 0 },
421 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } },
422 & ifmt_l_and, { 0xe0000003 }
423 },
424/* l.or $rD,$rA,$rB */
425 {
426 { 0, 0, 0, 0 },
427 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } },
428 & ifmt_l_and, { 0xe0000004 }
429 },
430/* l.xor $rD,$rA,$rB */
431 {
432 { 0, 0, 0, 0 },
433 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } },
434 & ifmt_l_and, { 0xe0000005 }
435 },
436/* l.add $rD,$rA,$rB */
437 {
438 { 0, 0, 0, 0 },
439 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } },
440 & ifmt_l_and, { 0xe0000000 }
441 },
442/* l.sub $rD,$rA,$rB */
443 {
444 { 0, 0, 0, 0 },
445 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } },
446 & ifmt_l_and, { 0xe0000002 }
447 },
448/* l.addc $rD,$rA,$rB */
449 {
450 { 0, 0, 0, 0 },
451 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } },
452 & ifmt_l_and, { 0xe0000001 }
453 },
454/* l.mul $rD,$rA,$rB */
455 {
456 { 0, 0, 0, 0 },
457 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } },
458 & ifmt_l_and, { 0xe0000306 }
459 },
460/* l.mulu $rD,$rA,$rB */
461 {
462 { 0, 0, 0, 0 },
463 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } },
464 & ifmt_l_and, { 0xe000030b }
465 },
466/* l.div $rD,$rA,$rB */
467 {
468 { 0, 0, 0, 0 },
469 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } },
470 & ifmt_l_and, { 0xe0000309 }
471 },
472/* l.divu $rD,$rA,$rB */
473 {
474 { 0, 0, 0, 0 },
475 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } },
476 & ifmt_l_and, { 0xe000030a }
477 },
478/* l.ff1 $rD,$rA */
479 {
480 { 0, 0, 0, 0 },
481 { { MNEM, ' ', OP (RD), ',', OP (RA), 0 } },
482 & ifmt_l_and, { 0xe000000f }
483 },
484/* l.fl1 $rD,$rA */
485 {
486 { 0, 0, 0, 0 },
487 { { MNEM, ' ', OP (RD), ',', OP (RA), 0 } },
488 & ifmt_l_and, { 0xe000010f }
489 },
490/* l.andi $rD,$rA,$uimm16 */
491 {
492 { 0, 0, 0, 0 },
493 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (UIMM16), 0 } },
494 & ifmt_l_mfspr, { 0xa4000000 }
495 },
496/* l.ori $rD,$rA,$uimm16 */
497 {
498 { 0, 0, 0, 0 },
499 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (UIMM16), 0 } },
500 & ifmt_l_mfspr, { 0xa8000000 }
501 },
502/* l.xori $rD,$rA,$simm16 */
503 {
504 { 0, 0, 0, 0 },
505 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (SIMM16), 0 } },
506 & ifmt_l_lwz, { 0xac000000 }
507 },
508/* l.addi $rD,$rA,$simm16 */
509 {
510 { 0, 0, 0, 0 },
511 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (SIMM16), 0 } },
512 & ifmt_l_lwz, { 0x9c000000 }
513 },
514/* l.addic $rD,$rA,$simm16 */
515 {
516 { 0, 0, 0, 0 },
517 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (SIMM16), 0 } },
518 & ifmt_l_lwz, { 0xa0000000 }
519 },
520/* l.muli $rD,$rA,$simm16 */
521 {
522 { 0, 0, 0, 0 },
523 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (SIMM16), 0 } },
524 & ifmt_l_lwz, { 0xb0000000 }
525 },
526/* l.exths $rD,$rA */
527 {
528 { 0, 0, 0, 0 },
529 { { MNEM, ' ', OP (RD), ',', OP (RA), 0 } },
530 & ifmt_l_exths, { 0xe000000c }
531 },
532/* l.extbs $rD,$rA */
533 {
534 { 0, 0, 0, 0 },
535 { { MNEM, ' ', OP (RD), ',', OP (RA), 0 } },
536 & ifmt_l_exths, { 0xe000004c }
537 },
538/* l.exthz $rD,$rA */
539 {
540 { 0, 0, 0, 0 },
541 { { MNEM, ' ', OP (RD), ',', OP (RA), 0 } },
542 & ifmt_l_exths, { 0xe000008c }
543 },
544/* l.extbz $rD,$rA */
545 {
546 { 0, 0, 0, 0 },
547 { { MNEM, ' ', OP (RD), ',', OP (RA), 0 } },
548 & ifmt_l_exths, { 0xe00000cc }
549 },
550/* l.extws $rD,$rA */
551 {
552 { 0, 0, 0, 0 },
553 { { MNEM, ' ', OP (RD), ',', OP (RA), 0 } },
554 & ifmt_l_exths, { 0xe000000d }
555 },
556/* l.extwz $rD,$rA */
557 {
558 { 0, 0, 0, 0 },
559 { { MNEM, ' ', OP (RD), ',', OP (RA), 0 } },
560 & ifmt_l_exths, { 0xe000004d }
561 },
562/* l.cmov $rD,$rA,$rB */
563 {
564 { 0, 0, 0, 0 },
565 { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } },
566 & ifmt_l_cmov, { 0xe000000e }
567 },
568/* l.sfgts $rA,$rB */
569 {
570 { 0, 0, 0, 0 },
571 { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } },
572 & ifmt_l_sfgts, { 0xe5400000 }
573 },
574/* l.sfgtsi $rA,$simm16 */
575 {
576 { 0, 0, 0, 0 },
577 { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } },
578 & ifmt_l_sfgtsi, { 0xbd400000 }
579 },
580/* l.sfgtu $rA,$rB */
581 {
582 { 0, 0, 0, 0 },
583 { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } },
584 & ifmt_l_sfgts, { 0xe4400000 }
585 },
586/* l.sfgtui $rA,$simm16 */
587 {
588 { 0, 0, 0, 0 },
589 { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } },
590 & ifmt_l_sfgtsi, { 0xbc400000 }
591 },
592/* l.sfges $rA,$rB */
593 {
594 { 0, 0, 0, 0 },
595 { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } },
596 & ifmt_l_sfgts, { 0xe5600000 }
597 },
598/* l.sfgesi $rA,$simm16 */
599 {
600 { 0, 0, 0, 0 },
601 { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } },
602 & ifmt_l_sfgtsi, { 0xbd600000 }
603 },
604/* l.sfgeu $rA,$rB */
605 {
606 { 0, 0, 0, 0 },
607 { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } },
608 & ifmt_l_sfgts, { 0xe4600000 }
609 },
610/* l.sfgeui $rA,$simm16 */
611 {
612 { 0, 0, 0, 0 },
613 { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } },
614 & ifmt_l_sfgtsi, { 0xbc600000 }
615 },
616/* l.sflts $rA,$rB */
617 {
618 { 0, 0, 0, 0 },
619 { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } },
620 & ifmt_l_sfgts, { 0xe5800000 }
621 },
622/* l.sfltsi $rA,$simm16 */
623 {
624 { 0, 0, 0, 0 },
625 { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } },
626 & ifmt_l_sfgtsi, { 0xbd800000 }
627 },
628/* l.sfltu $rA,$rB */
629 {
630 { 0, 0, 0, 0 },
631 { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } },
632 & ifmt_l_sfgts, { 0xe4800000 }
633 },
634/* l.sfltui $rA,$simm16 */
635 {
636 { 0, 0, 0, 0 },
637 { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } },
638 & ifmt_l_sfgtsi, { 0xbc800000 }
639 },
640/* l.sfles $rA,$rB */
641 {
642 { 0, 0, 0, 0 },
643 { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } },
644 & ifmt_l_sfgts, { 0xe5a00000 }
645 },
646/* l.sflesi $rA,$simm16 */
647 {
648 { 0, 0, 0, 0 },
649 { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } },
650 & ifmt_l_sfgtsi, { 0xbda00000 }
651 },
652/* l.sfleu $rA,$rB */
653 {
654 { 0, 0, 0, 0 },
655 { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } },
656 & ifmt_l_sfgts, { 0xe4a00000 }
657 },
658/* l.sfleui $rA,$simm16 */
659 {
660 { 0, 0, 0, 0 },
661 { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } },
662 & ifmt_l_sfgtsi, { 0xbca00000 }
663 },
664/* l.sfeq $rA,$rB */
665 {
666 { 0, 0, 0, 0 },
667 { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } },
668 & ifmt_l_sfgts, { 0xe4000000 }
669 },
670/* l.sfeqi $rA,$simm16 */
671 {
672 { 0, 0, 0, 0 },
673 { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } },
674 & ifmt_l_sfgtsi, { 0xbc000000 }
675 },
676/* l.sfne $rA,$rB */
677 {
678 { 0, 0, 0, 0 },
679 { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } },
680 & ifmt_l_sfgts, { 0xe4200000 }
681 },
682/* l.sfnei $rA,$simm16 */
683 {
684 { 0, 0, 0, 0 },
685 { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } },
686 & ifmt_l_sfgtsi, { 0xbc200000 }
687 },
688/* l.mac $rA,$rB */
689 {
690 { 0, 0, 0, 0 },
691 { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } },
692 & ifmt_l_mac, { 0xc4000001 }
693 },
694/* l.msb $rA,$rB */
695 {
696 { 0, 0, 0, 0 },
697 { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } },
698 & ifmt_l_mac, { 0xc4000002 }
699 },
700/* l.maci $rA,${simm16} */
701 {
702 { 0, 0, 0, 0 },
703 { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } },
704 & ifmt_l_maci, { 0x4c000000 }
705 },
706/* l.cust1 */
707 {
708 { 0, 0, 0, 0 },
709 { { MNEM, 0 } },
710 & ifmt_l_rfe, { 0x70000000 }
711 },
712/* l.cust2 */
713 {
714 { 0, 0, 0, 0 },
715 { { MNEM, 0 } },
716 & ifmt_l_rfe, { 0x74000000 }
717 },
718/* l.cust3 */
719 {
720 { 0, 0, 0, 0 },
721 { { MNEM, 0 } },
722 & ifmt_l_rfe, { 0x78000000 }
723 },
724/* l.cust4 */
725 {
726 { 0, 0, 0, 0 },
727 { { MNEM, 0 } },
728 & ifmt_l_rfe, { 0x7c000000 }
729 },
730/* l.cust5 */
731 {
732 { 0, 0, 0, 0 },
733 { { MNEM, 0 } },
734 & ifmt_l_rfe, { 0xf0000000 }
735 },
736/* l.cust6 */
737 {
738 { 0, 0, 0, 0 },
739 { { MNEM, 0 } },
740 & ifmt_l_rfe, { 0xf4000000 }
741 },
742/* l.cust7 */
743 {
744 { 0, 0, 0, 0 },
745 { { MNEM, 0 } },
746 & ifmt_l_rfe, { 0xf8000000 }
747 },
748/* l.cust8 */
749 {
750 { 0, 0, 0, 0 },
751 { { MNEM, 0 } },
752 & ifmt_l_rfe, { 0xfc000000 }
753 },
754/* lf.add.s $rDSF,$rASF,$rBSF */
755 {
756 { 0, 0, 0, 0 },
757 { { MNEM, ' ', OP (RDSF), ',', OP (RASF), ',', OP (RBSF), 0 } },
758 & ifmt_lf_add_s, { 0xc8000000 }
759 },
760/* lf.add.d $rDDF,$rADF,$rBDF */
761 {
762 { 0, 0, 0, 0 },
763 { { MNEM, ' ', OP (RDDF), ',', OP (RADF), ',', OP (RBDF), 0 } },
764 & ifmt_lf_add_d, { 0xc8000010 }
765 },
766/* lf.sub.s $rDSF,$rASF,$rBSF */
767 {
768 { 0, 0, 0, 0 },
769 { { MNEM, ' ', OP (RDSF), ',', OP (RASF), ',', OP (RBSF), 0 } },
770 & ifmt_lf_add_s, { 0xc8000001 }
771 },
772/* lf.sub.d $rDDF,$rADF,$rBDF */
773 {
774 { 0, 0, 0, 0 },
775 { { MNEM, ' ', OP (RDDF), ',', OP (RADF), ',', OP (RBDF), 0 } },
776 & ifmt_lf_add_d, { 0xc8000011 }
777 },
778/* lf.mul.s $rDSF,$rASF,$rBSF */
779 {
780 { 0, 0, 0, 0 },
781 { { MNEM, ' ', OP (RDSF), ',', OP (RASF), ',', OP (RBSF), 0 } },
782 & ifmt_lf_add_s, { 0xc8000002 }
783 },
784/* lf.mul.d $rDDF,$rADF,$rBDF */
785 {
786 { 0, 0, 0, 0 },
787 { { MNEM, ' ', OP (RDDF), ',', OP (RADF), ',', OP (RBDF), 0 } },
788 & ifmt_lf_add_d, { 0xc8000012 }
789 },
790/* lf.div.s $rDSF,$rASF,$rBSF */
791 {
792 { 0, 0, 0, 0 },
793 { { MNEM, ' ', OP (RDSF), ',', OP (RASF), ',', OP (RBSF), 0 } },
794 & ifmt_lf_add_s, { 0xc8000003 }
795 },
796/* lf.div.d $rDDF,$rADF,$rBDF */
797 {
798 { 0, 0, 0, 0 },
799 { { MNEM, ' ', OP (RDDF), ',', OP (RADF), ',', OP (RBDF), 0 } },
800 & ifmt_lf_add_d, { 0xc8000013 }
801 },
802/* lf.rem.s $rDSF,$rASF,$rBSF */
803 {
804 { 0, 0, 0, 0 },
805 { { MNEM, ' ', OP (RDSF), ',', OP (RASF), ',', OP (RBSF), 0 } },
806 & ifmt_lf_add_s, { 0xc8000006 }
807 },
808/* lf.rem.d $rDDF,$rADF,$rBDF */
809 {
810 { 0, 0, 0, 0 },
811 { { MNEM, ' ', OP (RDDF), ',', OP (RADF), ',', OP (RBDF), 0 } },
812 & ifmt_lf_add_d, { 0xc8000016 }
813 },
814/* lf.itof.s $rDSF,$rA */
815 {
816 { 0, 0, 0, 0 },
817 { { MNEM, ' ', OP (RDSF), ',', OP (RA), 0 } },
818 & ifmt_lf_itof_s, { 0xc8000004 }
819 },
820/* lf.itof.d $rDSF,$rA */
821 {
822 { 0, 0, 0, 0 },
823 { { MNEM, ' ', OP (RDSF), ',', OP (RA), 0 } },
824 & ifmt_lf_itof_s, { 0xc8000014 }
825 },
826/* lf.ftoi.s $rD,$rASF */
827 {
828 { 0, 0, 0, 0 },
829 { { MNEM, ' ', OP (RD), ',', OP (RASF), 0 } },
830 & ifmt_lf_ftoi_s, { 0xc8000005 }
831 },
832/* lf.ftoi.d $rD,$rADF */
833 {
834 { 0, 0, 0, 0 },
835 { { MNEM, ' ', OP (RD), ',', OP (RADF), 0 } },
836 & ifmt_lf_ftoi_d, { 0xc8000015 }
837 },
838/* lf.sfeq.s $rASF,$rBSF */
839 {
840 { 0, 0, 0, 0 },
841 { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } },
842 & ifmt_lf_eq_s, { 0xc8000008 }
843 },
844/* lf.sfeq.d $rASF,$rBSF */
845 {
846 { 0, 0, 0, 0 },
847 { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } },
848 & ifmt_lf_eq_s, { 0xc8000018 }
849 },
850/* lf.sfne.s $rASF,$rBSF */
851 {
852 { 0, 0, 0, 0 },
853 { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } },
854 & ifmt_lf_eq_s, { 0xc8000009 }
855 },
856/* lf.sfne.d $rASF,$rBSF */
857 {
858 { 0, 0, 0, 0 },
859 { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } },
860 & ifmt_lf_eq_s, { 0xc8000019 }
861 },
862/* lf.sfge.s $rASF,$rBSF */
863 {
864 { 0, 0, 0, 0 },
865 { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } },
866 & ifmt_lf_eq_s, { 0xc800000b }
867 },
868/* lf.sfge.d $rASF,$rBSF */
869 {
870 { 0, 0, 0, 0 },
871 { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } },
872 & ifmt_lf_eq_s, { 0xc800001b }
873 },
874/* lf.sfgt.s $rASF,$rBSF */
875 {
876 { 0, 0, 0, 0 },
877 { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } },
878 & ifmt_lf_eq_s, { 0xc800000a }
879 },
880/* lf.sfgt.d $rASF,$rBSF */
881 {
882 { 0, 0, 0, 0 },
883 { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } },
884 & ifmt_lf_eq_s, { 0xc800001a }
885 },
886/* lf.sflt.s $rASF,$rBSF */
887 {
888 { 0, 0, 0, 0 },
889 { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } },
890 & ifmt_lf_eq_s, { 0xc800000c }
891 },
892/* lf.sflt.d $rASF,$rBSF */
893 {
894 { 0, 0, 0, 0 },
895 { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } },
896 & ifmt_lf_eq_s, { 0xc800001c }
897 },
898/* lf.sfle.s $rASF,$rBSF */
899 {
900 { 0, 0, 0, 0 },
901 { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } },
902 & ifmt_lf_eq_s, { 0xc800000d }
903 },
904/* lf.sfle.d $rASF,$rBSF */
905 {
906 { 0, 0, 0, 0 },
907 { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } },
908 & ifmt_lf_eq_s, { 0xc800001d }
909 },
910/* lf.madd.s $rDSF,$rASF,$rBSF */
911 {
912 { 0, 0, 0, 0 },
913 { { MNEM, ' ', OP (RDSF), ',', OP (RASF), ',', OP (RBSF), 0 } },
914 & ifmt_lf_add_s, { 0xc8000007 }
915 },
916/* lf.madd.d $rDDF,$rADF,$rBDF */
917 {
918 { 0, 0, 0, 0 },
919 { { MNEM, ' ', OP (RDDF), ',', OP (RADF), ',', OP (RBDF), 0 } },
920 & ifmt_lf_add_d, { 0xc8000017 }
921 },
922/* lf.cust1.s $rASF,$rBSF */
923 {
924 { 0, 0, 0, 0 },
925 { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } },
926 & ifmt_lf_cust1_s, { 0xc80000d0 }
927 },
928/* lf.cust1.d */
929 {
930 { 0, 0, 0, 0 },
931 { { MNEM, 0 } },
932 & ifmt_lf_cust1_d, { 0xc80000e0 }
933 },
934};
935
936#undef A
937#undef OPERAND
938#undef MNEM
939#undef OP
940
941/* Formats for ALIAS macro-insns. */
942
943#define F(f) & or1k_cgen_ifld_table[OR1K_##f]
944#undef F
945
946/* Each non-simple macro entry points to an array of expansion possibilities. */
947
948#define A(a) (1 << CGEN_INSN_##a)
949#define OPERAND(op) OR1K_OPERAND_##op
950#define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
951#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
952
953/* The macro instruction table. */
954
955static const CGEN_IBASE or1k_cgen_macro_insn_table[] =
956{
957};
958
959/* The macro instruction opcode table. */
960
961static const CGEN_OPCODE or1k_cgen_macro_insn_opcode_table[] =
962{
963};
964
965#undef A
966#undef OPERAND
967#undef MNEM
968#undef OP
969
970#ifndef CGEN_ASM_HASH_P
971#define CGEN_ASM_HASH_P(insn) 1
972#endif
973
974#ifndef CGEN_DIS_HASH_P
975#define CGEN_DIS_HASH_P(insn) 1
976#endif
977
978/* Return non-zero if INSN is to be added to the hash table.
979 Targets are free to override CGEN_{ASM,DIS}_HASH_P in the .opc file. */
980
981static int
e6c7cdec 982asm_hash_insn_p (const CGEN_INSN *insn ATTRIBUTE_UNUSED)
73589c9d
CS
983{
984 return CGEN_ASM_HASH_P (insn);
985}
986
987static int
e6c7cdec 988dis_hash_insn_p (const CGEN_INSN *insn)
73589c9d
CS
989{
990 /* If building the hash table and the NO-DIS attribute is present,
991 ignore. */
992 if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_NO_DIS))
993 return 0;
994 return CGEN_DIS_HASH_P (insn);
995}
996
997#ifndef CGEN_ASM_HASH
998#define CGEN_ASM_HASH_SIZE 127
999#ifdef CGEN_MNEMONIC_OPERANDS
1000#define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE)
1001#else
1002#define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE) /*FIXME*/
1003#endif
1004#endif
1005
1006/* It doesn't make much sense to provide a default here,
1007 but while this is under development we do.
1008 BUFFER is a pointer to the bytes of the insn, target order.
1009 VALUE is the first base_insn_bitsize bits as an int in host order. */
1010
1011#ifndef CGEN_DIS_HASH
1012#define CGEN_DIS_HASH_SIZE 256
1013#define CGEN_DIS_HASH(buf, value) (*(unsigned char *) (buf))
1014#endif
1015
1016/* The result is the hash value of the insn.
1017 Targets are free to override CGEN_{ASM,DIS}_HASH in the .opc file. */
1018
1019static unsigned int
e6c7cdec 1020asm_hash_insn (const char *mnem)
73589c9d
CS
1021{
1022 return CGEN_ASM_HASH (mnem);
1023}
1024
1025/* BUF is a pointer to the bytes of the insn, target order.
1026 VALUE is the first base_insn_bitsize bits as an int in host order. */
1027
1028static unsigned int
e6c7cdec
TS
1029dis_hash_insn (const char *buf ATTRIBUTE_UNUSED,
1030 CGEN_INSN_INT value ATTRIBUTE_UNUSED)
73589c9d
CS
1031{
1032 return CGEN_DIS_HASH (buf, value);
1033}
1034
1035/* Set the recorded length of the insn in the CGEN_FIELDS struct. */
1036
1037static void
1038set_fields_bitsize (CGEN_FIELDS *fields, int size)
1039{
1040 CGEN_FIELDS_BITSIZE (fields) = size;
1041}
1042
1043/* Function to call before using the operand instance table.
1044 This plugs the opcode entries and macro instructions into the cpu table. */
1045
1046void
1047or1k_cgen_init_opcode_table (CGEN_CPU_DESC cd)
1048{
1049 int i;
1050 int num_macros = (sizeof (or1k_cgen_macro_insn_table) /
1051 sizeof (or1k_cgen_macro_insn_table[0]));
1052 const CGEN_IBASE *ib = & or1k_cgen_macro_insn_table[0];
1053 const CGEN_OPCODE *oc = & or1k_cgen_macro_insn_opcode_table[0];
1054 CGEN_INSN *insns = xmalloc (num_macros * sizeof (CGEN_INSN));
1055
1056 /* This test has been added to avoid a warning generated
1057 if memset is called with a third argument of value zero. */
1058 if (num_macros >= 1)
1059 memset (insns, 0, num_macros * sizeof (CGEN_INSN));
1060 for (i = 0; i < num_macros; ++i)
1061 {
1062 insns[i].base = &ib[i];
1063 insns[i].opcode = &oc[i];
1064 or1k_cgen_build_insn_regex (& insns[i]);
1065 }
1066 cd->macro_insn_table.init_entries = insns;
1067 cd->macro_insn_table.entry_size = sizeof (CGEN_IBASE);
1068 cd->macro_insn_table.num_init_entries = num_macros;
1069
1070 oc = & or1k_cgen_insn_opcode_table[0];
1071 insns = (CGEN_INSN *) cd->insn_table.init_entries;
1072 for (i = 0; i < MAX_INSNS; ++i)
1073 {
1074 insns[i].opcode = &oc[i];
1075 or1k_cgen_build_insn_regex (& insns[i]);
1076 }
1077
1078 cd->sizeof_fields = sizeof (CGEN_FIELDS);
1079 cd->set_fields_bitsize = set_fields_bitsize;
1080
1081 cd->asm_hash_p = asm_hash_insn_p;
1082 cd->asm_hash = asm_hash_insn;
1083 cd->asm_hash_size = CGEN_ASM_HASH_SIZE;
1084
1085 cd->dis_hash_p = dis_hash_insn_p;
1086 cd->dis_hash = dis_hash_insn;
1087 cd->dis_hash_size = CGEN_DIS_HASH_SIZE;
1088}
This page took 0.266407 seconds and 4 git commands to generate.