2006-03-07 Paul Brook <paul@codesourcery.com>
[binutils.git] / opcodes / m32c-ibld.c
blob62c753b93452651f667a9d93b69f123611ed3b58
1 /* Instruction building/extraction support for m32c. -*- C -*-
3 THIS FILE IS MACHINE GENERATED WITH CGEN: Cpu tools GENerator.
4 - the resultant file is machine generated, cgen-ibld.in isn't
6 Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2005, 2006
7 Free Software Foundation, Inc.
9 This file is part of the GNU Binutils and GDB, the GNU debugger.
11 This program is free software; you can redistribute it and/or modify
12 it under the terms of the GNU General Public License as published by
13 the Free Software Foundation; either version 2, or (at your option)
14 any later version.
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License for more details.
21 You should have received a copy of the GNU General Public License
22 along with this program; if not, write to the Free Software Foundation, Inc.,
23 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
25 /* ??? Eventually more and more of this stuff can go to cpu-independent files.
26 Keep that in mind. */
28 #include "sysdep.h"
29 #include <stdio.h>
30 #include "ansidecl.h"
31 #include "dis-asm.h"
32 #include "bfd.h"
33 #include "symcat.h"
34 #include "m32c-desc.h"
35 #include "m32c-opc.h"
36 #include "opintl.h"
37 #include "safe-ctype.h"
39 #undef min
40 #define min(a,b) ((a) < (b) ? (a) : (b))
41 #undef max
42 #define max(a,b) ((a) > (b) ? (a) : (b))
44 /* Used by the ifield rtx function. */
45 #define FLD(f) (fields->f)
47 static const char * insert_normal
48 (CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
49 unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR);
50 static const char * insert_insn_normal
51 (CGEN_CPU_DESC, const CGEN_INSN *,
52 CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma);
53 static int extract_normal
54 (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
55 unsigned int, unsigned int, unsigned int, unsigned int,
56 unsigned int, unsigned int, bfd_vma, long *);
57 static int extract_insn_normal
58 (CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
59 CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma);
60 #if CGEN_INT_INSN_P
61 static void put_insn_int_value
62 (CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT);
63 #endif
64 #if ! CGEN_INT_INSN_P
65 static CGEN_INLINE void insert_1
66 (CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *);
67 static CGEN_INLINE int fill_cache
68 (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, bfd_vma);
69 static CGEN_INLINE long extract_1
70 (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int, unsigned char *, bfd_vma);
71 #endif
73 /* Operand insertion. */
75 #if ! CGEN_INT_INSN_P
77 /* Subroutine of insert_normal. */
79 static CGEN_INLINE void
80 insert_1 (CGEN_CPU_DESC cd,
81 unsigned long value,
82 int start,
83 int length,
84 int word_length,
85 unsigned char *bufp)
87 unsigned long x,mask;
88 int shift;
90 x = cgen_get_insn_value (cd, bufp, word_length);
92 /* Written this way to avoid undefined behaviour. */
93 mask = (((1L << (length - 1)) - 1) << 1) | 1;
94 if (CGEN_INSN_LSB0_P)
95 shift = (start + 1) - length;
96 else
97 shift = (word_length - (start + length));
98 x = (x & ~(mask << shift)) | ((value & mask) << shift);
100 cgen_put_insn_value (cd, bufp, word_length, (bfd_vma) x);
103 #endif /* ! CGEN_INT_INSN_P */
105 /* Default insertion routine.
107 ATTRS is a mask of the boolean attributes.
108 WORD_OFFSET is the offset in bits from the start of the insn of the value.
109 WORD_LENGTH is the length of the word in bits in which the value resides.
110 START is the starting bit number in the word, architecture origin.
111 LENGTH is the length of VALUE in bits.
112 TOTAL_LENGTH is the total length of the insn in bits.
114 The result is an error message or NULL if success. */
116 /* ??? This duplicates functionality with bfd's howto table and
117 bfd_install_relocation. */
118 /* ??? This doesn't handle bfd_vma's. Create another function when
119 necessary. */
121 static const char *
122 insert_normal (CGEN_CPU_DESC cd,
123 long value,
124 unsigned int attrs,
125 unsigned int word_offset,
126 unsigned int start,
127 unsigned int length,
128 unsigned int word_length,
129 unsigned int total_length,
130 CGEN_INSN_BYTES_PTR buffer)
132 static char errbuf[100];
133 /* Written this way to avoid undefined behaviour. */
134 unsigned long mask = (((1L << (length - 1)) - 1) << 1) | 1;
136 /* If LENGTH is zero, this operand doesn't contribute to the value. */
137 if (length == 0)
138 return NULL;
140 if (word_length > 32)
141 abort ();
143 /* For architectures with insns smaller than the base-insn-bitsize,
144 word_length may be too big. */
145 if (cd->min_insn_bitsize < cd->base_insn_bitsize)
147 if (word_offset == 0
148 && word_length > total_length)
149 word_length = total_length;
152 /* Ensure VALUE will fit. */
153 if (CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGN_OPT))
155 long minval = - (1L << (length - 1));
156 unsigned long maxval = mask;
158 if ((value > 0 && (unsigned long) value > maxval)
159 || value < minval)
161 /* xgettext:c-format */
162 sprintf (errbuf,
163 _("operand out of range (%ld not between %ld and %lu)"),
164 value, minval, maxval);
165 return errbuf;
168 else if (! CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGNED))
170 unsigned long maxval = mask;
172 if ((unsigned long) value > maxval)
174 /* xgettext:c-format */
175 sprintf (errbuf,
176 _("operand out of range (%lu not between 0 and %lu)"),
177 value, maxval);
178 return errbuf;
181 else
183 if (! cgen_signed_overflow_ok_p (cd))
185 long minval = - (1L << (length - 1));
186 long maxval = (1L << (length - 1)) - 1;
188 if (value < minval || value > maxval)
190 sprintf
191 /* xgettext:c-format */
192 (errbuf, _("operand out of range (%ld not between %ld and %ld)"),
193 value, minval, maxval);
194 return errbuf;
199 #if CGEN_INT_INSN_P
202 int shift;
204 if (CGEN_INSN_LSB0_P)
205 shift = (word_offset + start + 1) - length;
206 else
207 shift = total_length - (word_offset + start + length);
208 *buffer = (*buffer & ~(mask << shift)) | ((value & mask) << shift);
211 #else /* ! CGEN_INT_INSN_P */
214 unsigned char *bufp = (unsigned char *) buffer + word_offset / 8;
216 insert_1 (cd, value, start, length, word_length, bufp);
219 #endif /* ! CGEN_INT_INSN_P */
221 return NULL;
224 /* Default insn builder (insert handler).
225 The instruction is recorded in CGEN_INT_INSN_P byte order (meaning
226 that if CGEN_INSN_BYTES_PTR is an int * and thus, the value is
227 recorded in host byte order, otherwise BUFFER is an array of bytes
228 and the value is recorded in target byte order).
229 The result is an error message or NULL if success. */
231 static const char *
232 insert_insn_normal (CGEN_CPU_DESC cd,
233 const CGEN_INSN * insn,
234 CGEN_FIELDS * fields,
235 CGEN_INSN_BYTES_PTR buffer,
236 bfd_vma pc)
238 const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
239 unsigned long value;
240 const CGEN_SYNTAX_CHAR_TYPE * syn;
242 CGEN_INIT_INSERT (cd);
243 value = CGEN_INSN_BASE_VALUE (insn);
245 /* If we're recording insns as numbers (rather than a string of bytes),
246 target byte order handling is deferred until later. */
248 #if CGEN_INT_INSN_P
250 put_insn_int_value (cd, buffer, cd->base_insn_bitsize,
251 CGEN_FIELDS_BITSIZE (fields), value);
253 #else
255 cgen_put_insn_value (cd, buffer, min ((unsigned) cd->base_insn_bitsize,
256 (unsigned) CGEN_FIELDS_BITSIZE (fields)),
257 value);
259 #endif /* ! CGEN_INT_INSN_P */
261 /* ??? It would be better to scan the format's fields.
262 Still need to be able to insert a value based on the operand though;
263 e.g. storing a branch displacement that got resolved later.
264 Needs more thought first. */
266 for (syn = CGEN_SYNTAX_STRING (syntax); * syn; ++ syn)
268 const char *errmsg;
270 if (CGEN_SYNTAX_CHAR_P (* syn))
271 continue;
273 errmsg = (* cd->insert_operand) (cd, CGEN_SYNTAX_FIELD (*syn),
274 fields, buffer, pc);
275 if (errmsg)
276 return errmsg;
279 return NULL;
282 #if CGEN_INT_INSN_P
283 /* Cover function to store an insn value into an integral insn. Must go here
284 because it needs <prefix>-desc.h for CGEN_INT_INSN_P. */
286 static void
287 put_insn_int_value (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
288 CGEN_INSN_BYTES_PTR buf,
289 int length,
290 int insn_length,
291 CGEN_INSN_INT value)
293 /* For architectures with insns smaller than the base-insn-bitsize,
294 length may be too big. */
295 if (length > insn_length)
296 *buf = value;
297 else
299 int shift = insn_length - length;
300 /* Written this way to avoid undefined behaviour. */
301 CGEN_INSN_INT mask = (((1L << (length - 1)) - 1) << 1) | 1;
303 *buf = (*buf & ~(mask << shift)) | ((value & mask) << shift);
306 #endif
308 /* Operand extraction. */
310 #if ! CGEN_INT_INSN_P
312 /* Subroutine of extract_normal.
313 Ensure sufficient bytes are cached in EX_INFO.
314 OFFSET is the offset in bytes from the start of the insn of the value.
315 BYTES is the length of the needed value.
316 Returns 1 for success, 0 for failure. */
318 static CGEN_INLINE int
319 fill_cache (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
320 CGEN_EXTRACT_INFO *ex_info,
321 int offset,
322 int bytes,
323 bfd_vma pc)
325 /* It's doubtful that the middle part has already been fetched so
326 we don't optimize that case. kiss. */
327 unsigned int mask;
328 disassemble_info *info = (disassemble_info *) ex_info->dis_info;
330 /* First do a quick check. */
331 mask = (1 << bytes) - 1;
332 if (((ex_info->valid >> offset) & mask) == mask)
333 return 1;
335 /* Search for the first byte we need to read. */
336 for (mask = 1 << offset; bytes > 0; --bytes, ++offset, mask <<= 1)
337 if (! (mask & ex_info->valid))
338 break;
340 if (bytes)
342 int status;
344 pc += offset;
345 status = (*info->read_memory_func)
346 (pc, ex_info->insn_bytes + offset, bytes, info);
348 if (status != 0)
350 (*info->memory_error_func) (status, pc, info);
351 return 0;
354 ex_info->valid |= ((1 << bytes) - 1) << offset;
357 return 1;
360 /* Subroutine of extract_normal. */
362 static CGEN_INLINE long
363 extract_1 (CGEN_CPU_DESC cd,
364 CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
365 int start,
366 int length,
367 int word_length,
368 unsigned char *bufp,
369 bfd_vma pc ATTRIBUTE_UNUSED)
371 unsigned long x;
372 int shift;
374 x = cgen_get_insn_value (cd, bufp, word_length);
376 if (CGEN_INSN_LSB0_P)
377 shift = (start + 1) - length;
378 else
379 shift = (word_length - (start + length));
380 return x >> shift;
383 #endif /* ! CGEN_INT_INSN_P */
385 /* Default extraction routine.
387 INSN_VALUE is the first base_insn_bitsize bits of the insn in host order,
388 or sometimes less for cases like the m32r where the base insn size is 32
389 but some insns are 16 bits.
390 ATTRS is a mask of the boolean attributes. We only need `SIGNED',
391 but for generality we take a bitmask of all of them.
392 WORD_OFFSET is the offset in bits from the start of the insn of the value.
393 WORD_LENGTH is the length of the word in bits in which the value resides.
394 START is the starting bit number in the word, architecture origin.
395 LENGTH is the length of VALUE in bits.
396 TOTAL_LENGTH is the total length of the insn in bits.
398 Returns 1 for success, 0 for failure. */
400 /* ??? The return code isn't properly used. wip. */
402 /* ??? This doesn't handle bfd_vma's. Create another function when
403 necessary. */
405 static int
406 extract_normal (CGEN_CPU_DESC cd,
407 #if ! CGEN_INT_INSN_P
408 CGEN_EXTRACT_INFO *ex_info,
409 #else
410 CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
411 #endif
412 CGEN_INSN_INT insn_value,
413 unsigned int attrs,
414 unsigned int word_offset,
415 unsigned int start,
416 unsigned int length,
417 unsigned int word_length,
418 unsigned int total_length,
419 #if ! CGEN_INT_INSN_P
420 bfd_vma pc,
421 #else
422 bfd_vma pc ATTRIBUTE_UNUSED,
423 #endif
424 long *valuep)
426 long value, mask;
428 /* If LENGTH is zero, this operand doesn't contribute to the value
429 so give it a standard value of zero. */
430 if (length == 0)
432 *valuep = 0;
433 return 1;
436 if (word_length > 32)
437 abort ();
439 /* For architectures with insns smaller than the insn-base-bitsize,
440 word_length may be too big. */
441 if (cd->min_insn_bitsize < cd->base_insn_bitsize)
443 if (word_offset + word_length > total_length)
444 word_length = total_length - word_offset;
447 /* Does the value reside in INSN_VALUE, and at the right alignment? */
449 if (CGEN_INT_INSN_P || (word_offset == 0 && word_length == total_length))
451 if (CGEN_INSN_LSB0_P)
452 value = insn_value >> ((word_offset + start + 1) - length);
453 else
454 value = insn_value >> (total_length - ( word_offset + start + length));
457 #if ! CGEN_INT_INSN_P
459 else
461 unsigned char *bufp = ex_info->insn_bytes + word_offset / 8;
463 if (word_length > 32)
464 abort ();
466 if (fill_cache (cd, ex_info, word_offset / 8, word_length / 8, pc) == 0)
467 return 0;
469 value = extract_1 (cd, ex_info, start, length, word_length, bufp, pc);
472 #endif /* ! CGEN_INT_INSN_P */
474 /* Written this way to avoid undefined behaviour. */
475 mask = (((1L << (length - 1)) - 1) << 1) | 1;
477 value &= mask;
478 /* sign extend? */
479 if (CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGNED)
480 && (value & (1L << (length - 1))))
481 value |= ~mask;
483 *valuep = value;
485 return 1;
488 /* Default insn extractor.
490 INSN_VALUE is the first base_insn_bitsize bits, translated to host order.
491 The extracted fields are stored in FIELDS.
492 EX_INFO is used to handle reading variable length insns.
493 Return the length of the insn in bits, or 0 if no match,
494 or -1 if an error occurs fetching data (memory_error_func will have
495 been called). */
497 static int
498 extract_insn_normal (CGEN_CPU_DESC cd,
499 const CGEN_INSN *insn,
500 CGEN_EXTRACT_INFO *ex_info,
501 CGEN_INSN_INT insn_value,
502 CGEN_FIELDS *fields,
503 bfd_vma pc)
505 const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
506 const CGEN_SYNTAX_CHAR_TYPE *syn;
508 CGEN_FIELDS_BITSIZE (fields) = CGEN_INSN_BITSIZE (insn);
510 CGEN_INIT_EXTRACT (cd);
512 for (syn = CGEN_SYNTAX_STRING (syntax); *syn; ++syn)
514 int length;
516 if (CGEN_SYNTAX_CHAR_P (*syn))
517 continue;
519 length = (* cd->extract_operand) (cd, CGEN_SYNTAX_FIELD (*syn),
520 ex_info, insn_value, fields, pc);
521 if (length <= 0)
522 return length;
525 /* We recognized and successfully extracted this insn. */
526 return CGEN_INSN_BITSIZE (insn);
529 /* Machine generated code added here. */
531 const char * m32c_cgen_insert_operand
532 (CGEN_CPU_DESC, int, CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma);
534 /* Main entry point for operand insertion.
536 This function is basically just a big switch statement. Earlier versions
537 used tables to look up the function to use, but
538 - if the table contains both assembler and disassembler functions then
539 the disassembler contains much of the assembler and vice-versa,
540 - there's a lot of inlining possibilities as things grow,
541 - using a switch statement avoids the function call overhead.
543 This function could be moved into `parse_insn_normal', but keeping it
544 separate makes clear the interface between `parse_insn_normal' and each of
545 the handlers. It's also needed by GAS to insert operands that couldn't be
546 resolved during parsing. */
548 const char *
549 m32c_cgen_insert_operand (CGEN_CPU_DESC cd,
550 int opindex,
551 CGEN_FIELDS * fields,
552 CGEN_INSN_BYTES_PTR buffer,
553 bfd_vma pc ATTRIBUTE_UNUSED)
555 const char * errmsg = NULL;
556 unsigned int total_length = CGEN_FIELDS_BITSIZE (fields);
558 switch (opindex)
560 case M32C_OPERAND_A0 :
561 break;
562 case M32C_OPERAND_A1 :
563 break;
564 case M32C_OPERAND_AN16_PUSH_S :
565 errmsg = insert_normal (cd, fields->f_4_1, 0, 0, 4, 1, 32, total_length, buffer);
566 break;
567 case M32C_OPERAND_BIT16AN :
568 errmsg = insert_normal (cd, fields->f_dst16_an, 0, 0, 15, 1, 32, total_length, buffer);
569 break;
570 case M32C_OPERAND_BIT16RN :
571 errmsg = insert_normal (cd, fields->f_dst16_rn, 0, 0, 14, 2, 32, total_length, buffer);
572 break;
573 case M32C_OPERAND_BIT32ANPREFIXED :
574 errmsg = insert_normal (cd, fields->f_dst32_an_prefixed, 0, 0, 17, 1, 32, total_length, buffer);
575 break;
576 case M32C_OPERAND_BIT32ANUNPREFIXED :
577 errmsg = insert_normal (cd, fields->f_dst32_an_unprefixed, 0, 0, 9, 1, 32, total_length, buffer);
578 break;
579 case M32C_OPERAND_BIT32RNPREFIXED :
581 long value = fields->f_dst32_rn_prefixed_QI;
582 value = (((((((~ (value))) << (1))) & (2))) | (((((unsigned int) (value) >> (1))) & (1))));
583 errmsg = insert_normal (cd, value, 0, 0, 16, 2, 32, total_length, buffer);
585 break;
586 case M32C_OPERAND_BIT32RNUNPREFIXED :
588 long value = fields->f_dst32_rn_unprefixed_QI;
589 value = (((((((~ (value))) << (1))) & (2))) | (((((unsigned int) (value) >> (1))) & (1))));
590 errmsg = insert_normal (cd, value, 0, 0, 8, 2, 32, total_length, buffer);
592 break;
593 case M32C_OPERAND_BITBASE16_16_S8 :
594 errmsg = insert_normal (cd, fields->f_dsp_16_s8, 0|(1<<CGEN_IFLD_SIGNED), 0, 16, 8, 32, total_length, buffer);
595 break;
596 case M32C_OPERAND_BITBASE16_16_U16 :
598 long value = fields->f_dsp_16_u16;
599 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
600 errmsg = insert_normal (cd, value, 0, 0, 16, 16, 32, total_length, buffer);
602 break;
603 case M32C_OPERAND_BITBASE16_16_U8 :
604 errmsg = insert_normal (cd, fields->f_dsp_16_u8, 0, 0, 16, 8, 32, total_length, buffer);
605 break;
606 case M32C_OPERAND_BITBASE16_8_U11_S :
609 FLD (f_bitno16_S) = ((FLD (f_bitbase16_u11_S)) & (7));
610 FLD (f_dsp_8_u8) = ((((unsigned int) (FLD (f_bitbase16_u11_S)) >> (3))) & (255));
612 errmsg = insert_normal (cd, fields->f_bitno16_S, 0, 0, 5, 3, 32, total_length, buffer);
613 if (errmsg)
614 break;
615 errmsg = insert_normal (cd, fields->f_dsp_8_u8, 0, 0, 8, 8, 32, total_length, buffer);
616 if (errmsg)
617 break;
619 break;
620 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED :
623 FLD (f_bitno32_unprefixed) = ((FLD (f_bitbase32_16_s11_unprefixed)) & (7));
624 FLD (f_dsp_16_s8) = ((int) (FLD (f_bitbase32_16_s11_unprefixed)) >> (3));
626 errmsg = insert_normal (cd, fields->f_bitno32_unprefixed, 0, 0, 13, 3, 32, total_length, buffer);
627 if (errmsg)
628 break;
629 errmsg = insert_normal (cd, fields->f_dsp_16_s8, 0|(1<<CGEN_IFLD_SIGNED), 0, 16, 8, 32, total_length, buffer);
630 if (errmsg)
631 break;
633 break;
634 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED :
637 FLD (f_bitno32_unprefixed) = ((FLD (f_bitbase32_16_s19_unprefixed)) & (7));
638 FLD (f_dsp_16_s16) = ((int) (FLD (f_bitbase32_16_s19_unprefixed)) >> (3));
640 errmsg = insert_normal (cd, fields->f_bitno32_unprefixed, 0, 0, 13, 3, 32, total_length, buffer);
641 if (errmsg)
642 break;
644 long value = fields->f_dsp_16_s16;
645 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
646 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED), 0, 16, 16, 32, total_length, buffer);
648 if (errmsg)
649 break;
651 break;
652 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED :
655 FLD (f_bitno32_unprefixed) = ((FLD (f_bitbase32_16_u11_unprefixed)) & (7));
656 FLD (f_dsp_16_u8) = ((((unsigned int) (FLD (f_bitbase32_16_u11_unprefixed)) >> (3))) & (255));
658 errmsg = insert_normal (cd, fields->f_bitno32_unprefixed, 0, 0, 13, 3, 32, total_length, buffer);
659 if (errmsg)
660 break;
661 errmsg = insert_normal (cd, fields->f_dsp_16_u8, 0, 0, 16, 8, 32, total_length, buffer);
662 if (errmsg)
663 break;
665 break;
666 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED :
669 FLD (f_bitno32_unprefixed) = ((FLD (f_bitbase32_16_u19_unprefixed)) & (7));
670 FLD (f_dsp_16_u16) = ((((unsigned int) (FLD (f_bitbase32_16_u19_unprefixed)) >> (3))) & (65535));
672 errmsg = insert_normal (cd, fields->f_bitno32_unprefixed, 0, 0, 13, 3, 32, total_length, buffer);
673 if (errmsg)
674 break;
676 long value = fields->f_dsp_16_u16;
677 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
678 errmsg = insert_normal (cd, value, 0, 0, 16, 16, 32, total_length, buffer);
680 if (errmsg)
681 break;
683 break;
684 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED :
687 FLD (f_bitno32_unprefixed) = ((FLD (f_bitbase32_16_u27_unprefixed)) & (7));
688 FLD (f_dsp_16_u16) = ((((unsigned int) (FLD (f_bitbase32_16_u27_unprefixed)) >> (3))) & (65535));
689 FLD (f_dsp_32_u8) = ((((unsigned int) (FLD (f_bitbase32_16_u27_unprefixed)) >> (19))) & (255));
691 errmsg = insert_normal (cd, fields->f_bitno32_unprefixed, 0, 0, 13, 3, 32, total_length, buffer);
692 if (errmsg)
693 break;
695 long value = fields->f_dsp_16_u16;
696 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
697 errmsg = insert_normal (cd, value, 0, 0, 16, 16, 32, total_length, buffer);
699 if (errmsg)
700 break;
701 errmsg = insert_normal (cd, fields->f_dsp_32_u8, 0, 32, 0, 8, 32, total_length, buffer);
702 if (errmsg)
703 break;
705 break;
706 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED :
709 FLD (f_bitno32_prefixed) = ((FLD (f_bitbase32_24_s11_prefixed)) & (7));
710 FLD (f_dsp_24_s8) = ((int) (FLD (f_bitbase32_24_s11_prefixed)) >> (3));
712 errmsg = insert_normal (cd, fields->f_bitno32_prefixed, 0, 0, 21, 3, 32, total_length, buffer);
713 if (errmsg)
714 break;
715 errmsg = insert_normal (cd, fields->f_dsp_24_s8, 0|(1<<CGEN_IFLD_SIGNED), 0, 24, 8, 32, total_length, buffer);
716 if (errmsg)
717 break;
719 break;
720 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED :
723 FLD (f_bitno32_prefixed) = ((FLD (f_bitbase32_24_s19_prefixed)) & (7));
724 FLD (f_dsp_24_u8) = ((((unsigned int) (FLD (f_bitbase32_24_s19_prefixed)) >> (3))) & (255));
725 FLD (f_dsp_32_s8) = ((int) (FLD (f_bitbase32_24_s19_prefixed)) >> (11));
727 errmsg = insert_normal (cd, fields->f_bitno32_prefixed, 0, 0, 21, 3, 32, total_length, buffer);
728 if (errmsg)
729 break;
730 errmsg = insert_normal (cd, fields->f_dsp_24_u8, 0, 0, 24, 8, 32, total_length, buffer);
731 if (errmsg)
732 break;
733 errmsg = insert_normal (cd, fields->f_dsp_32_s8, 0|(1<<CGEN_IFLD_SIGNED), 32, 0, 8, 32, total_length, buffer);
734 if (errmsg)
735 break;
737 break;
738 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED :
741 FLD (f_bitno32_prefixed) = ((FLD (f_bitbase32_24_u11_prefixed)) & (7));
742 FLD (f_dsp_24_u8) = ((((unsigned int) (FLD (f_bitbase32_24_u11_prefixed)) >> (3))) & (255));
744 errmsg = insert_normal (cd, fields->f_bitno32_prefixed, 0, 0, 21, 3, 32, total_length, buffer);
745 if (errmsg)
746 break;
747 errmsg = insert_normal (cd, fields->f_dsp_24_u8, 0, 0, 24, 8, 32, total_length, buffer);
748 if (errmsg)
749 break;
751 break;
752 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED :
755 FLD (f_bitno32_prefixed) = ((FLD (f_bitbase32_24_u19_prefixed)) & (7));
756 FLD (f_dsp_24_u8) = ((((unsigned int) (FLD (f_bitbase32_24_u19_prefixed)) >> (3))) & (255));
757 FLD (f_dsp_32_u8) = ((((unsigned int) (FLD (f_bitbase32_24_u19_prefixed)) >> (11))) & (255));
759 errmsg = insert_normal (cd, fields->f_bitno32_prefixed, 0, 0, 21, 3, 32, total_length, buffer);
760 if (errmsg)
761 break;
762 errmsg = insert_normal (cd, fields->f_dsp_24_u8, 0, 0, 24, 8, 32, total_length, buffer);
763 if (errmsg)
764 break;
765 errmsg = insert_normal (cd, fields->f_dsp_32_u8, 0, 32, 0, 8, 32, total_length, buffer);
766 if (errmsg)
767 break;
769 break;
770 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED :
773 FLD (f_bitno32_prefixed) = ((FLD (f_bitbase32_24_u27_prefixed)) & (7));
774 FLD (f_dsp_24_u8) = ((((unsigned int) (FLD (f_bitbase32_24_u27_prefixed)) >> (3))) & (255));
775 FLD (f_dsp_32_u16) = ((((unsigned int) (FLD (f_bitbase32_24_u27_prefixed)) >> (11))) & (65535));
777 errmsg = insert_normal (cd, fields->f_bitno32_prefixed, 0, 0, 21, 3, 32, total_length, buffer);
778 if (errmsg)
779 break;
780 errmsg = insert_normal (cd, fields->f_dsp_24_u8, 0, 0, 24, 8, 32, total_length, buffer);
781 if (errmsg)
782 break;
784 long value = fields->f_dsp_32_u16;
785 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
786 errmsg = insert_normal (cd, value, 0, 32, 0, 16, 32, total_length, buffer);
788 if (errmsg)
789 break;
791 break;
792 case M32C_OPERAND_BITNO16R :
793 errmsg = insert_normal (cd, fields->f_dsp_16_u8, 0, 0, 16, 8, 32, total_length, buffer);
794 break;
795 case M32C_OPERAND_BITNO32PREFIXED :
796 errmsg = insert_normal (cd, fields->f_bitno32_prefixed, 0, 0, 21, 3, 32, total_length, buffer);
797 break;
798 case M32C_OPERAND_BITNO32UNPREFIXED :
799 errmsg = insert_normal (cd, fields->f_bitno32_unprefixed, 0, 0, 13, 3, 32, total_length, buffer);
800 break;
801 case M32C_OPERAND_DSP_10_U6 :
802 errmsg = insert_normal (cd, fields->f_dsp_10_u6, 0, 0, 10, 6, 32, total_length, buffer);
803 break;
804 case M32C_OPERAND_DSP_16_S16 :
806 long value = fields->f_dsp_16_s16;
807 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
808 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED), 0, 16, 16, 32, total_length, buffer);
810 break;
811 case M32C_OPERAND_DSP_16_S8 :
812 errmsg = insert_normal (cd, fields->f_dsp_16_s8, 0|(1<<CGEN_IFLD_SIGNED), 0, 16, 8, 32, total_length, buffer);
813 break;
814 case M32C_OPERAND_DSP_16_U16 :
816 long value = fields->f_dsp_16_u16;
817 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
818 errmsg = insert_normal (cd, value, 0, 0, 16, 16, 32, total_length, buffer);
820 break;
821 case M32C_OPERAND_DSP_16_U20 :
824 FLD (f_dsp_16_u16) = ((FLD (f_dsp_16_u24)) & (65535));
825 FLD (f_dsp_32_u8) = ((((unsigned int) (FLD (f_dsp_16_u24)) >> (16))) & (255));
828 long value = fields->f_dsp_16_u16;
829 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
830 errmsg = insert_normal (cd, value, 0, 0, 16, 16, 32, total_length, buffer);
832 if (errmsg)
833 break;
834 errmsg = insert_normal (cd, fields->f_dsp_32_u8, 0, 32, 0, 8, 32, total_length, buffer);
835 if (errmsg)
836 break;
838 break;
839 case M32C_OPERAND_DSP_16_U24 :
842 FLD (f_dsp_16_u16) = ((FLD (f_dsp_16_u24)) & (65535));
843 FLD (f_dsp_32_u8) = ((((unsigned int) (FLD (f_dsp_16_u24)) >> (16))) & (255));
846 long value = fields->f_dsp_16_u16;
847 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
848 errmsg = insert_normal (cd, value, 0, 0, 16, 16, 32, total_length, buffer);
850 if (errmsg)
851 break;
852 errmsg = insert_normal (cd, fields->f_dsp_32_u8, 0, 32, 0, 8, 32, total_length, buffer);
853 if (errmsg)
854 break;
856 break;
857 case M32C_OPERAND_DSP_16_U8 :
858 errmsg = insert_normal (cd, fields->f_dsp_16_u8, 0, 0, 16, 8, 32, total_length, buffer);
859 break;
860 case M32C_OPERAND_DSP_24_S16 :
863 FLD (f_dsp_24_u8) = ((FLD (f_dsp_24_s16)) & (255));
864 FLD (f_dsp_32_u8) = ((((unsigned int) (FLD (f_dsp_24_s16)) >> (8))) & (255));
866 errmsg = insert_normal (cd, fields->f_dsp_24_u8, 0, 0, 24, 8, 32, total_length, buffer);
867 if (errmsg)
868 break;
869 errmsg = insert_normal (cd, fields->f_dsp_32_u8, 0, 32, 0, 8, 32, total_length, buffer);
870 if (errmsg)
871 break;
873 break;
874 case M32C_OPERAND_DSP_24_S8 :
875 errmsg = insert_normal (cd, fields->f_dsp_24_s8, 0|(1<<CGEN_IFLD_SIGNED), 0, 24, 8, 32, total_length, buffer);
876 break;
877 case M32C_OPERAND_DSP_24_U16 :
880 FLD (f_dsp_24_u8) = ((FLD (f_dsp_24_u16)) & (255));
881 FLD (f_dsp_32_u8) = ((((unsigned int) (FLD (f_dsp_24_u16)) >> (8))) & (255));
883 errmsg = insert_normal (cd, fields->f_dsp_24_u8, 0, 0, 24, 8, 32, total_length, buffer);
884 if (errmsg)
885 break;
886 errmsg = insert_normal (cd, fields->f_dsp_32_u8, 0, 32, 0, 8, 32, total_length, buffer);
887 if (errmsg)
888 break;
890 break;
891 case M32C_OPERAND_DSP_24_U20 :
894 FLD (f_dsp_24_u8) = ((FLD (f_dsp_24_u24)) & (255));
895 FLD (f_dsp_32_u16) = ((((unsigned int) (FLD (f_dsp_24_u24)) >> (8))) & (65535));
897 errmsg = insert_normal (cd, fields->f_dsp_24_u8, 0, 0, 24, 8, 32, total_length, buffer);
898 if (errmsg)
899 break;
901 long value = fields->f_dsp_32_u16;
902 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
903 errmsg = insert_normal (cd, value, 0, 32, 0, 16, 32, total_length, buffer);
905 if (errmsg)
906 break;
908 break;
909 case M32C_OPERAND_DSP_24_U24 :
912 FLD (f_dsp_24_u8) = ((FLD (f_dsp_24_u24)) & (255));
913 FLD (f_dsp_32_u16) = ((((unsigned int) (FLD (f_dsp_24_u24)) >> (8))) & (65535));
915 errmsg = insert_normal (cd, fields->f_dsp_24_u8, 0, 0, 24, 8, 32, total_length, buffer);
916 if (errmsg)
917 break;
919 long value = fields->f_dsp_32_u16;
920 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
921 errmsg = insert_normal (cd, value, 0, 32, 0, 16, 32, total_length, buffer);
923 if (errmsg)
924 break;
926 break;
927 case M32C_OPERAND_DSP_24_U8 :
928 errmsg = insert_normal (cd, fields->f_dsp_24_u8, 0, 0, 24, 8, 32, total_length, buffer);
929 break;
930 case M32C_OPERAND_DSP_32_S16 :
932 long value = fields->f_dsp_32_s16;
933 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
934 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED), 32, 0, 16, 32, total_length, buffer);
936 break;
937 case M32C_OPERAND_DSP_32_S8 :
938 errmsg = insert_normal (cd, fields->f_dsp_32_s8, 0|(1<<CGEN_IFLD_SIGNED), 32, 0, 8, 32, total_length, buffer);
939 break;
940 case M32C_OPERAND_DSP_32_U16 :
942 long value = fields->f_dsp_32_u16;
943 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
944 errmsg = insert_normal (cd, value, 0, 32, 0, 16, 32, total_length, buffer);
946 break;
947 case M32C_OPERAND_DSP_32_U20 :
949 long value = fields->f_dsp_32_u24;
950 value = ((((((((unsigned int) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((((value) << (16))) & (16711680))));
951 errmsg = insert_normal (cd, value, 0, 32, 0, 24, 32, total_length, buffer);
953 break;
954 case M32C_OPERAND_DSP_32_U24 :
956 long value = fields->f_dsp_32_u24;
957 value = ((((((((unsigned int) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((((value) << (16))) & (16711680))));
958 errmsg = insert_normal (cd, value, 0, 32, 0, 24, 32, total_length, buffer);
960 break;
961 case M32C_OPERAND_DSP_32_U8 :
962 errmsg = insert_normal (cd, fields->f_dsp_32_u8, 0, 32, 0, 8, 32, total_length, buffer);
963 break;
964 case M32C_OPERAND_DSP_40_S16 :
966 long value = fields->f_dsp_40_s16;
967 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
968 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED), 32, 8, 16, 32, total_length, buffer);
970 break;
971 case M32C_OPERAND_DSP_40_S8 :
972 errmsg = insert_normal (cd, fields->f_dsp_40_s8, 0|(1<<CGEN_IFLD_SIGNED), 32, 8, 8, 32, total_length, buffer);
973 break;
974 case M32C_OPERAND_DSP_40_U16 :
976 long value = fields->f_dsp_40_u16;
977 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
978 errmsg = insert_normal (cd, value, 0, 32, 8, 16, 32, total_length, buffer);
980 break;
981 case M32C_OPERAND_DSP_40_U24 :
983 long value = fields->f_dsp_40_u24;
984 value = ((((((((unsigned int) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((((value) << (16))) & (16711680))));
985 errmsg = insert_normal (cd, value, 0, 32, 8, 24, 32, total_length, buffer);
987 break;
988 case M32C_OPERAND_DSP_40_U8 :
989 errmsg = insert_normal (cd, fields->f_dsp_40_u8, 0, 32, 8, 8, 32, total_length, buffer);
990 break;
991 case M32C_OPERAND_DSP_48_S16 :
993 long value = fields->f_dsp_48_s16;
994 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
995 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED), 32, 16, 16, 32, total_length, buffer);
997 break;
998 case M32C_OPERAND_DSP_48_S8 :
999 errmsg = insert_normal (cd, fields->f_dsp_48_s8, 0|(1<<CGEN_IFLD_SIGNED), 32, 16, 8, 32, total_length, buffer);
1000 break;
1001 case M32C_OPERAND_DSP_48_U16 :
1003 long value = fields->f_dsp_48_u16;
1004 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
1005 errmsg = insert_normal (cd, value, 0, 32, 16, 16, 32, total_length, buffer);
1007 break;
1008 case M32C_OPERAND_DSP_48_U24 :
1011 FLD (f_dsp_64_u8) = ((((unsigned int) (FLD (f_dsp_48_u24)) >> (16))) & (255));
1012 FLD (f_dsp_48_u16) = ((FLD (f_dsp_48_u24)) & (65535));
1015 long value = fields->f_dsp_48_u16;
1016 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
1017 errmsg = insert_normal (cd, value, 0, 32, 16, 16, 32, total_length, buffer);
1019 if (errmsg)
1020 break;
1021 errmsg = insert_normal (cd, fields->f_dsp_64_u8, 0, 64, 0, 8, 32, total_length, buffer);
1022 if (errmsg)
1023 break;
1025 break;
1026 case M32C_OPERAND_DSP_48_U8 :
1027 errmsg = insert_normal (cd, fields->f_dsp_48_u8, 0, 32, 16, 8, 32, total_length, buffer);
1028 break;
1029 case M32C_OPERAND_DSP_8_S24 :
1031 long value = fields->f_dsp_8_s24;
1032 value = ((((((unsigned int) (value) >> (16))) | (((value) & (65280))))) | (((EXTQISI (TRUNCSIQI (((value) & (255))))) << (16))));
1033 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 24, 32, total_length, buffer);
1035 break;
1036 case M32C_OPERAND_DSP_8_S8 :
1037 errmsg = insert_normal (cd, fields->f_dsp_8_s8, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 8, 32, total_length, buffer);
1038 break;
1039 case M32C_OPERAND_DSP_8_U16 :
1041 long value = fields->f_dsp_8_u16;
1042 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
1043 errmsg = insert_normal (cd, value, 0, 0, 8, 16, 32, total_length, buffer);
1045 break;
1046 case M32C_OPERAND_DSP_8_U24 :
1048 long value = fields->f_dsp_8_u24;
1049 value = ((((((unsigned int) (value) >> (16))) | (((value) & (65280))))) | (((((value) & (255))) << (16))));
1050 errmsg = insert_normal (cd, value, 0, 0, 8, 24, 32, total_length, buffer);
1052 break;
1053 case M32C_OPERAND_DSP_8_U6 :
1054 errmsg = insert_normal (cd, fields->f_dsp_8_u6, 0, 0, 8, 6, 32, total_length, buffer);
1055 break;
1056 case M32C_OPERAND_DSP_8_U8 :
1057 errmsg = insert_normal (cd, fields->f_dsp_8_u8, 0, 0, 8, 8, 32, total_length, buffer);
1058 break;
1059 case M32C_OPERAND_DST16AN :
1060 errmsg = insert_normal (cd, fields->f_dst16_an, 0, 0, 15, 1, 32, total_length, buffer);
1061 break;
1062 case M32C_OPERAND_DST16AN_S :
1063 errmsg = insert_normal (cd, fields->f_dst16_an_s, 0, 0, 4, 1, 32, total_length, buffer);
1064 break;
1065 case M32C_OPERAND_DST16ANHI :
1066 errmsg = insert_normal (cd, fields->f_dst16_an, 0, 0, 15, 1, 32, total_length, buffer);
1067 break;
1068 case M32C_OPERAND_DST16ANQI :
1069 errmsg = insert_normal (cd, fields->f_dst16_an, 0, 0, 15, 1, 32, total_length, buffer);
1070 break;
1071 case M32C_OPERAND_DST16ANQI_S :
1072 errmsg = insert_normal (cd, fields->f_dst16_rn_QI_s, 0, 0, 5, 1, 32, total_length, buffer);
1073 break;
1074 case M32C_OPERAND_DST16ANSI :
1075 errmsg = insert_normal (cd, fields->f_dst16_an, 0, 0, 15, 1, 32, total_length, buffer);
1076 break;
1077 case M32C_OPERAND_DST16RNEXTQI :
1078 errmsg = insert_normal (cd, fields->f_dst16_rn_ext, 0, 0, 14, 1, 32, total_length, buffer);
1079 break;
1080 case M32C_OPERAND_DST16RNHI :
1081 errmsg = insert_normal (cd, fields->f_dst16_rn, 0, 0, 14, 2, 32, total_length, buffer);
1082 break;
1083 case M32C_OPERAND_DST16RNQI :
1084 errmsg = insert_normal (cd, fields->f_dst16_rn, 0, 0, 14, 2, 32, total_length, buffer);
1085 break;
1086 case M32C_OPERAND_DST16RNQI_S :
1087 errmsg = insert_normal (cd, fields->f_dst16_rn_QI_s, 0, 0, 5, 1, 32, total_length, buffer);
1088 break;
1089 case M32C_OPERAND_DST16RNSI :
1090 errmsg = insert_normal (cd, fields->f_dst16_rn, 0, 0, 14, 2, 32, total_length, buffer);
1091 break;
1092 case M32C_OPERAND_DST32ANEXTUNPREFIXED :
1093 errmsg = insert_normal (cd, fields->f_dst32_an_unprefixed, 0, 0, 9, 1, 32, total_length, buffer);
1094 break;
1095 case M32C_OPERAND_DST32ANPREFIXED :
1096 errmsg = insert_normal (cd, fields->f_dst32_an_prefixed, 0, 0, 17, 1, 32, total_length, buffer);
1097 break;
1098 case M32C_OPERAND_DST32ANPREFIXEDHI :
1099 errmsg = insert_normal (cd, fields->f_dst32_an_prefixed, 0, 0, 17, 1, 32, total_length, buffer);
1100 break;
1101 case M32C_OPERAND_DST32ANPREFIXEDQI :
1102 errmsg = insert_normal (cd, fields->f_dst32_an_prefixed, 0, 0, 17, 1, 32, total_length, buffer);
1103 break;
1104 case M32C_OPERAND_DST32ANPREFIXEDSI :
1105 errmsg = insert_normal (cd, fields->f_dst32_an_prefixed, 0, 0, 17, 1, 32, total_length, buffer);
1106 break;
1107 case M32C_OPERAND_DST32ANUNPREFIXED :
1108 errmsg = insert_normal (cd, fields->f_dst32_an_unprefixed, 0, 0, 9, 1, 32, total_length, buffer);
1109 break;
1110 case M32C_OPERAND_DST32ANUNPREFIXEDHI :
1111 errmsg = insert_normal (cd, fields->f_dst32_an_unprefixed, 0, 0, 9, 1, 32, total_length, buffer);
1112 break;
1113 case M32C_OPERAND_DST32ANUNPREFIXEDQI :
1114 errmsg = insert_normal (cd, fields->f_dst32_an_unprefixed, 0, 0, 9, 1, 32, total_length, buffer);
1115 break;
1116 case M32C_OPERAND_DST32ANUNPREFIXEDSI :
1117 errmsg = insert_normal (cd, fields->f_dst32_an_unprefixed, 0, 0, 9, 1, 32, total_length, buffer);
1118 break;
1119 case M32C_OPERAND_DST32R0HI_S :
1120 break;
1121 case M32C_OPERAND_DST32R0QI_S :
1122 break;
1123 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI :
1124 errmsg = insert_normal (cd, fields->f_dst32_rn_ext_unprefixed, 0, 0, 9, 1, 32, total_length, buffer);
1125 break;
1126 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI :
1127 errmsg = insert_normal (cd, fields->f_dst32_rn_ext_unprefixed, 0, 0, 9, 1, 32, total_length, buffer);
1128 break;
1129 case M32C_OPERAND_DST32RNPREFIXEDHI :
1131 long value = fields->f_dst32_rn_prefixed_HI;
1132 value = ((((value) + (2))) % (4));
1133 errmsg = insert_normal (cd, value, 0, 0, 16, 2, 32, total_length, buffer);
1135 break;
1136 case M32C_OPERAND_DST32RNPREFIXEDQI :
1138 long value = fields->f_dst32_rn_prefixed_QI;
1139 value = (((((((~ (value))) << (1))) & (2))) | (((((unsigned int) (value) >> (1))) & (1))));
1140 errmsg = insert_normal (cd, value, 0, 0, 16, 2, 32, total_length, buffer);
1142 break;
1143 case M32C_OPERAND_DST32RNPREFIXEDSI :
1145 long value = fields->f_dst32_rn_prefixed_SI;
1146 value = ((value) + (2));
1147 errmsg = insert_normal (cd, value, 0, 0, 16, 2, 32, total_length, buffer);
1149 break;
1150 case M32C_OPERAND_DST32RNUNPREFIXEDHI :
1152 long value = fields->f_dst32_rn_unprefixed_HI;
1153 value = ((((value) + (2))) % (4));
1154 errmsg = insert_normal (cd, value, 0, 0, 8, 2, 32, total_length, buffer);
1156 break;
1157 case M32C_OPERAND_DST32RNUNPREFIXEDQI :
1159 long value = fields->f_dst32_rn_unprefixed_QI;
1160 value = (((((((~ (value))) << (1))) & (2))) | (((((unsigned int) (value) >> (1))) & (1))));
1161 errmsg = insert_normal (cd, value, 0, 0, 8, 2, 32, total_length, buffer);
1163 break;
1164 case M32C_OPERAND_DST32RNUNPREFIXEDSI :
1166 long value = fields->f_dst32_rn_unprefixed_SI;
1167 value = ((value) + (2));
1168 errmsg = insert_normal (cd, value, 0, 0, 8, 2, 32, total_length, buffer);
1170 break;
1171 case M32C_OPERAND_G :
1172 break;
1173 case M32C_OPERAND_IMM_12_S4 :
1174 errmsg = insert_normal (cd, fields->f_imm_12_s4, 0|(1<<CGEN_IFLD_SIGNED), 0, 12, 4, 32, total_length, buffer);
1175 break;
1176 case M32C_OPERAND_IMM_12_S4N :
1177 errmsg = insert_normal (cd, fields->f_imm_12_s4, 0|(1<<CGEN_IFLD_SIGNED), 0, 12, 4, 32, total_length, buffer);
1178 break;
1179 case M32C_OPERAND_IMM_13_U3 :
1180 errmsg = insert_normal (cd, fields->f_imm_13_u3, 0, 0, 13, 3, 32, total_length, buffer);
1181 break;
1182 case M32C_OPERAND_IMM_16_HI :
1184 long value = fields->f_dsp_16_s16;
1185 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
1186 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED), 0, 16, 16, 32, total_length, buffer);
1188 break;
1189 case M32C_OPERAND_IMM_16_QI :
1190 errmsg = insert_normal (cd, fields->f_dsp_16_s8, 0|(1<<CGEN_IFLD_SIGNED), 0, 16, 8, 32, total_length, buffer);
1191 break;
1192 case M32C_OPERAND_IMM_16_SI :
1195 FLD (f_dsp_32_u16) = ((((unsigned int) (FLD (f_dsp_16_s32)) >> (16))) & (65535));
1196 FLD (f_dsp_16_u16) = ((FLD (f_dsp_16_s32)) & (65535));
1199 long value = fields->f_dsp_16_u16;
1200 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
1201 errmsg = insert_normal (cd, value, 0, 0, 16, 16, 32, total_length, buffer);
1203 if (errmsg)
1204 break;
1206 long value = fields->f_dsp_32_u16;
1207 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
1208 errmsg = insert_normal (cd, value, 0, 32, 0, 16, 32, total_length, buffer);
1210 if (errmsg)
1211 break;
1213 break;
1214 case M32C_OPERAND_IMM_20_S4 :
1215 errmsg = insert_normal (cd, fields->f_imm_20_s4, 0|(1<<CGEN_IFLD_SIGNED), 0, 20, 4, 32, total_length, buffer);
1216 break;
1217 case M32C_OPERAND_IMM_24_HI :
1220 FLD (f_dsp_24_u8) = ((FLD (f_dsp_24_s16)) & (255));
1221 FLD (f_dsp_32_u8) = ((((unsigned int) (FLD (f_dsp_24_s16)) >> (8))) & (255));
1223 errmsg = insert_normal (cd, fields->f_dsp_24_u8, 0, 0, 24, 8, 32, total_length, buffer);
1224 if (errmsg)
1225 break;
1226 errmsg = insert_normal (cd, fields->f_dsp_32_u8, 0, 32, 0, 8, 32, total_length, buffer);
1227 if (errmsg)
1228 break;
1230 break;
1231 case M32C_OPERAND_IMM_24_QI :
1232 errmsg = insert_normal (cd, fields->f_dsp_24_s8, 0|(1<<CGEN_IFLD_SIGNED), 0, 24, 8, 32, total_length, buffer);
1233 break;
1234 case M32C_OPERAND_IMM_24_SI :
1237 FLD (f_dsp_32_u24) = ((((unsigned int) (FLD (f_dsp_24_s32)) >> (8))) & (16777215));
1238 FLD (f_dsp_24_u8) = ((FLD (f_dsp_24_s32)) & (255));
1240 errmsg = insert_normal (cd, fields->f_dsp_24_u8, 0, 0, 24, 8, 32, total_length, buffer);
1241 if (errmsg)
1242 break;
1244 long value = fields->f_dsp_32_u24;
1245 value = ((((((((unsigned int) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((((value) << (16))) & (16711680))));
1246 errmsg = insert_normal (cd, value, 0, 32, 0, 24, 32, total_length, buffer);
1248 if (errmsg)
1249 break;
1251 break;
1252 case M32C_OPERAND_IMM_32_HI :
1254 long value = fields->f_dsp_32_s16;
1255 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
1256 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED), 32, 0, 16, 32, total_length, buffer);
1258 break;
1259 case M32C_OPERAND_IMM_32_QI :
1260 errmsg = insert_normal (cd, fields->f_dsp_32_s8, 0|(1<<CGEN_IFLD_SIGNED), 32, 0, 8, 32, total_length, buffer);
1261 break;
1262 case M32C_OPERAND_IMM_32_SI :
1264 long value = fields->f_dsp_32_s32;
1265 value = EXTSISI (((((((((unsigned int) (value) >> (24))) & (255))) | (((((unsigned int) (value) >> (8))) & (65280))))) | (((((((value) << (8))) & (16711680))) | (((((value) << (24))) & (0xff000000)))))));
1266 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED), 32, 0, 32, 32, total_length, buffer);
1268 break;
1269 case M32C_OPERAND_IMM_40_HI :
1271 long value = fields->f_dsp_40_s16;
1272 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
1273 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED), 32, 8, 16, 32, total_length, buffer);
1275 break;
1276 case M32C_OPERAND_IMM_40_QI :
1277 errmsg = insert_normal (cd, fields->f_dsp_40_s8, 0|(1<<CGEN_IFLD_SIGNED), 32, 8, 8, 32, total_length, buffer);
1278 break;
1279 case M32C_OPERAND_IMM_40_SI :
1282 FLD (f_dsp_64_u8) = ((((unsigned int) (FLD (f_dsp_40_s32)) >> (24))) & (255));
1283 FLD (f_dsp_40_u24) = ((FLD (f_dsp_40_s32)) & (16777215));
1286 long value = fields->f_dsp_40_u24;
1287 value = ((((((((unsigned int) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((((value) << (16))) & (16711680))));
1288 errmsg = insert_normal (cd, value, 0, 32, 8, 24, 32, total_length, buffer);
1290 if (errmsg)
1291 break;
1292 errmsg = insert_normal (cd, fields->f_dsp_64_u8, 0, 64, 0, 8, 32, total_length, buffer);
1293 if (errmsg)
1294 break;
1296 break;
1297 case M32C_OPERAND_IMM_48_HI :
1299 long value = fields->f_dsp_48_s16;
1300 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
1301 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED), 32, 16, 16, 32, total_length, buffer);
1303 break;
1304 case M32C_OPERAND_IMM_48_QI :
1305 errmsg = insert_normal (cd, fields->f_dsp_48_s8, 0|(1<<CGEN_IFLD_SIGNED), 32, 16, 8, 32, total_length, buffer);
1306 break;
1307 case M32C_OPERAND_IMM_48_SI :
1310 FLD (f_dsp_64_u16) = ((((unsigned int) (FLD (f_dsp_48_s32)) >> (16))) & (65535));
1311 FLD (f_dsp_48_u16) = ((FLD (f_dsp_48_s32)) & (65535));
1314 long value = fields->f_dsp_48_u16;
1315 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
1316 errmsg = insert_normal (cd, value, 0, 32, 16, 16, 32, total_length, buffer);
1318 if (errmsg)
1319 break;
1321 long value = fields->f_dsp_64_u16;
1322 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
1323 errmsg = insert_normal (cd, value, 0, 64, 0, 16, 32, total_length, buffer);
1325 if (errmsg)
1326 break;
1328 break;
1329 case M32C_OPERAND_IMM_56_HI :
1332 FLD (f_dsp_56_u8) = ((FLD (f_dsp_56_s16)) & (255));
1333 FLD (f_dsp_64_u8) = ((((unsigned int) (FLD (f_dsp_56_s16)) >> (8))) & (255));
1335 errmsg = insert_normal (cd, fields->f_dsp_56_u8, 0, 32, 24, 8, 32, total_length, buffer);
1336 if (errmsg)
1337 break;
1338 errmsg = insert_normal (cd, fields->f_dsp_64_u8, 0, 64, 0, 8, 32, total_length, buffer);
1339 if (errmsg)
1340 break;
1342 break;
1343 case M32C_OPERAND_IMM_56_QI :
1344 errmsg = insert_normal (cd, fields->f_dsp_56_s8, 0|(1<<CGEN_IFLD_SIGNED), 32, 24, 8, 32, total_length, buffer);
1345 break;
1346 case M32C_OPERAND_IMM_64_HI :
1348 long value = fields->f_dsp_64_s16;
1349 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
1350 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED), 64, 0, 16, 32, total_length, buffer);
1352 break;
1353 case M32C_OPERAND_IMM_8_HI :
1355 long value = fields->f_dsp_8_s16;
1356 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
1357 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 16, 32, total_length, buffer);
1359 break;
1360 case M32C_OPERAND_IMM_8_QI :
1361 errmsg = insert_normal (cd, fields->f_dsp_8_s8, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 8, 32, total_length, buffer);
1362 break;
1363 case M32C_OPERAND_IMM_8_S4 :
1364 errmsg = insert_normal (cd, fields->f_imm_8_s4, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 4, 32, total_length, buffer);
1365 break;
1366 case M32C_OPERAND_IMM_8_S4N :
1367 errmsg = insert_normal (cd, fields->f_imm_8_s4, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 4, 32, total_length, buffer);
1368 break;
1369 case M32C_OPERAND_IMM_SH_12_S4 :
1370 errmsg = insert_normal (cd, fields->f_imm_12_s4, 0|(1<<CGEN_IFLD_SIGNED), 0, 12, 4, 32, total_length, buffer);
1371 break;
1372 case M32C_OPERAND_IMM_SH_20_S4 :
1373 errmsg = insert_normal (cd, fields->f_imm_20_s4, 0|(1<<CGEN_IFLD_SIGNED), 0, 20, 4, 32, total_length, buffer);
1374 break;
1375 case M32C_OPERAND_IMM_SH_8_S4 :
1376 errmsg = insert_normal (cd, fields->f_imm_8_s4, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 4, 32, total_length, buffer);
1377 break;
1378 case M32C_OPERAND_IMM1_S :
1380 long value = fields->f_imm1_S;
1381 value = ((value) - (1));
1382 errmsg = insert_normal (cd, value, 0, 0, 2, 1, 32, total_length, buffer);
1384 break;
1385 case M32C_OPERAND_IMM3_S :
1388 FLD (f_7_1) = ((((FLD (f_imm3_S)) - (1))) & (1));
1389 FLD (f_2_2) = ((((unsigned int) (((FLD (f_imm3_S)) - (1))) >> (1))) & (3));
1391 errmsg = insert_normal (cd, fields->f_2_2, 0, 0, 2, 2, 32, total_length, buffer);
1392 if (errmsg)
1393 break;
1394 errmsg = insert_normal (cd, fields->f_7_1, 0, 0, 7, 1, 32, total_length, buffer);
1395 if (errmsg)
1396 break;
1398 break;
1399 case M32C_OPERAND_LAB_16_8 :
1401 long value = fields->f_lab_16_8;
1402 value = ((value) - (((pc) + (2))));
1403 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 16, 8, 32, total_length, buffer);
1405 break;
1406 case M32C_OPERAND_LAB_24_8 :
1408 long value = fields->f_lab_24_8;
1409 value = ((value) - (((pc) + (2))));
1410 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 24, 8, 32, total_length, buffer);
1412 break;
1413 case M32C_OPERAND_LAB_32_8 :
1415 long value = fields->f_lab_32_8;
1416 value = ((value) - (((pc) + (2))));
1417 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 32, 0, 8, 32, total_length, buffer);
1419 break;
1420 case M32C_OPERAND_LAB_40_8 :
1422 long value = fields->f_lab_40_8;
1423 value = ((value) - (((pc) + (2))));
1424 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 32, 8, 8, 32, total_length, buffer);
1426 break;
1427 case M32C_OPERAND_LAB_5_3 :
1429 long value = fields->f_lab_5_3;
1430 value = ((value) - (((pc) + (2))));
1431 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_PCREL_ADDR), 0, 5, 3, 32, total_length, buffer);
1433 break;
1434 case M32C_OPERAND_LAB_8_16 :
1436 long value = fields->f_lab_8_16;
1437 value = ((((((((value) - (((pc) + (1))))) & (255))) << (8))) | (((unsigned int) (((((value) - (((pc) + (1))))) & (65535))) >> (8))));
1438 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGN_OPT)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 8, 16, 32, total_length, buffer);
1440 break;
1441 case M32C_OPERAND_LAB_8_24 :
1443 long value = fields->f_lab_8_24;
1444 value = ((((((unsigned int) (value) >> (16))) | (((value) & (65280))))) | (((((value) & (255))) << (16))));
1445 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_ABS_ADDR), 0, 8, 24, 32, total_length, buffer);
1447 break;
1448 case M32C_OPERAND_LAB_8_8 :
1450 long value = fields->f_lab_8_8;
1451 value = ((value) - (((pc) + (1))));
1452 errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 8, 8, 32, total_length, buffer);
1454 break;
1455 case M32C_OPERAND_LAB32_JMP_S :
1458 SI tmp_val;
1459 tmp_val = ((((FLD (f_lab32_jmp_s)) - (pc))) - (2));
1460 FLD (f_7_1) = ((tmp_val) & (1));
1461 FLD (f_2_2) = ((unsigned int) (tmp_val) >> (1));
1463 errmsg = insert_normal (cd, fields->f_2_2, 0, 0, 2, 2, 32, total_length, buffer);
1464 if (errmsg)
1465 break;
1466 errmsg = insert_normal (cd, fields->f_7_1, 0, 0, 7, 1, 32, total_length, buffer);
1467 if (errmsg)
1468 break;
1470 break;
1471 case M32C_OPERAND_Q :
1472 break;
1473 case M32C_OPERAND_R0 :
1474 break;
1475 case M32C_OPERAND_R0H :
1476 break;
1477 case M32C_OPERAND_R0L :
1478 break;
1479 case M32C_OPERAND_R1 :
1480 break;
1481 case M32C_OPERAND_R1R2R0 :
1482 break;
1483 case M32C_OPERAND_R2 :
1484 break;
1485 case M32C_OPERAND_R2R0 :
1486 break;
1487 case M32C_OPERAND_R3 :
1488 break;
1489 case M32C_OPERAND_R3R1 :
1490 break;
1491 case M32C_OPERAND_REGSETPOP :
1492 errmsg = insert_normal (cd, fields->f_8_8, 0, 0, 8, 8, 32, total_length, buffer);
1493 break;
1494 case M32C_OPERAND_REGSETPUSH :
1495 errmsg = insert_normal (cd, fields->f_8_8, 0, 0, 8, 8, 32, total_length, buffer);
1496 break;
1497 case M32C_OPERAND_RN16_PUSH_S :
1498 errmsg = insert_normal (cd, fields->f_4_1, 0, 0, 4, 1, 32, total_length, buffer);
1499 break;
1500 case M32C_OPERAND_S :
1501 break;
1502 case M32C_OPERAND_SRC16AN :
1503 errmsg = insert_normal (cd, fields->f_src16_an, 0, 0, 11, 1, 32, total_length, buffer);
1504 break;
1505 case M32C_OPERAND_SRC16ANHI :
1506 errmsg = insert_normal (cd, fields->f_src16_an, 0, 0, 11, 1, 32, total_length, buffer);
1507 break;
1508 case M32C_OPERAND_SRC16ANQI :
1509 errmsg = insert_normal (cd, fields->f_src16_an, 0, 0, 11, 1, 32, total_length, buffer);
1510 break;
1511 case M32C_OPERAND_SRC16RNHI :
1512 errmsg = insert_normal (cd, fields->f_src16_rn, 0, 0, 10, 2, 32, total_length, buffer);
1513 break;
1514 case M32C_OPERAND_SRC16RNQI :
1515 errmsg = insert_normal (cd, fields->f_src16_rn, 0, 0, 10, 2, 32, total_length, buffer);
1516 break;
1517 case M32C_OPERAND_SRC32ANPREFIXED :
1518 errmsg = insert_normal (cd, fields->f_src32_an_prefixed, 0, 0, 19, 1, 32, total_length, buffer);
1519 break;
1520 case M32C_OPERAND_SRC32ANPREFIXEDHI :
1521 errmsg = insert_normal (cd, fields->f_src32_an_prefixed, 0, 0, 19, 1, 32, total_length, buffer);
1522 break;
1523 case M32C_OPERAND_SRC32ANPREFIXEDQI :
1524 errmsg = insert_normal (cd, fields->f_src32_an_prefixed, 0, 0, 19, 1, 32, total_length, buffer);
1525 break;
1526 case M32C_OPERAND_SRC32ANPREFIXEDSI :
1527 errmsg = insert_normal (cd, fields->f_src32_an_prefixed, 0, 0, 19, 1, 32, total_length, buffer);
1528 break;
1529 case M32C_OPERAND_SRC32ANUNPREFIXED :
1530 errmsg = insert_normal (cd, fields->f_src32_an_unprefixed, 0, 0, 11, 1, 32, total_length, buffer);
1531 break;
1532 case M32C_OPERAND_SRC32ANUNPREFIXEDHI :
1533 errmsg = insert_normal (cd, fields->f_src32_an_unprefixed, 0, 0, 11, 1, 32, total_length, buffer);
1534 break;
1535 case M32C_OPERAND_SRC32ANUNPREFIXEDQI :
1536 errmsg = insert_normal (cd, fields->f_src32_an_unprefixed, 0, 0, 11, 1, 32, total_length, buffer);
1537 break;
1538 case M32C_OPERAND_SRC32ANUNPREFIXEDSI :
1539 errmsg = insert_normal (cd, fields->f_src32_an_unprefixed, 0, 0, 11, 1, 32, total_length, buffer);
1540 break;
1541 case M32C_OPERAND_SRC32RNPREFIXEDHI :
1543 long value = fields->f_src32_rn_prefixed_HI;
1544 value = ((((value) + (2))) % (4));
1545 errmsg = insert_normal (cd, value, 0, 0, 18, 2, 32, total_length, buffer);
1547 break;
1548 case M32C_OPERAND_SRC32RNPREFIXEDQI :
1550 long value = fields->f_src32_rn_prefixed_QI;
1551 value = (((((((~ (value))) << (1))) & (2))) | (((((unsigned int) (value) >> (1))) & (1))));
1552 errmsg = insert_normal (cd, value, 0, 0, 18, 2, 32, total_length, buffer);
1554 break;
1555 case M32C_OPERAND_SRC32RNPREFIXEDSI :
1557 long value = fields->f_src32_rn_prefixed_SI;
1558 value = ((value) + (2));
1559 errmsg = insert_normal (cd, value, 0, 0, 18, 2, 32, total_length, buffer);
1561 break;
1562 case M32C_OPERAND_SRC32RNUNPREFIXEDHI :
1564 long value = fields->f_src32_rn_unprefixed_HI;
1565 value = ((((value) + (2))) % (4));
1566 errmsg = insert_normal (cd, value, 0, 0, 10, 2, 32, total_length, buffer);
1568 break;
1569 case M32C_OPERAND_SRC32RNUNPREFIXEDQI :
1571 long value = fields->f_src32_rn_unprefixed_QI;
1572 value = (((((((~ (value))) << (1))) & (2))) | (((((unsigned int) (value) >> (1))) & (1))));
1573 errmsg = insert_normal (cd, value, 0, 0, 10, 2, 32, total_length, buffer);
1575 break;
1576 case M32C_OPERAND_SRC32RNUNPREFIXEDSI :
1578 long value = fields->f_src32_rn_unprefixed_SI;
1579 value = ((value) + (2));
1580 errmsg = insert_normal (cd, value, 0, 0, 10, 2, 32, total_length, buffer);
1582 break;
1583 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL :
1584 errmsg = insert_normal (cd, fields->f_5_1, 0, 0, 5, 1, 32, total_length, buffer);
1585 break;
1586 case M32C_OPERAND_X :
1587 break;
1588 case M32C_OPERAND_Z :
1589 break;
1590 case M32C_OPERAND_COND16_16 :
1591 errmsg = insert_normal (cd, fields->f_dsp_16_u8, 0, 0, 16, 8, 32, total_length, buffer);
1592 break;
1593 case M32C_OPERAND_COND16_24 :
1594 errmsg = insert_normal (cd, fields->f_dsp_24_u8, 0, 0, 24, 8, 32, total_length, buffer);
1595 break;
1596 case M32C_OPERAND_COND16_32 :
1597 errmsg = insert_normal (cd, fields->f_dsp_32_u8, 0, 32, 0, 8, 32, total_length, buffer);
1598 break;
1599 case M32C_OPERAND_COND16C :
1600 errmsg = insert_normal (cd, fields->f_cond16, 0, 0, 12, 4, 32, total_length, buffer);
1601 break;
1602 case M32C_OPERAND_COND16J :
1603 errmsg = insert_normal (cd, fields->f_cond16, 0, 0, 12, 4, 32, total_length, buffer);
1604 break;
1605 case M32C_OPERAND_COND16J5 :
1606 errmsg = insert_normal (cd, fields->f_cond16j_5, 0, 0, 5, 3, 32, total_length, buffer);
1607 break;
1608 case M32C_OPERAND_COND32 :
1611 FLD (f_9_1) = ((((unsigned int) (FLD (f_cond32)) >> (3))) & (1));
1612 FLD (f_13_3) = ((FLD (f_cond32)) & (7));
1614 errmsg = insert_normal (cd, fields->f_9_1, 0, 0, 9, 1, 32, total_length, buffer);
1615 if (errmsg)
1616 break;
1617 errmsg = insert_normal (cd, fields->f_13_3, 0, 0, 13, 3, 32, total_length, buffer);
1618 if (errmsg)
1619 break;
1621 break;
1622 case M32C_OPERAND_COND32_16 :
1623 errmsg = insert_normal (cd, fields->f_dsp_16_u8, 0, 0, 16, 8, 32, total_length, buffer);
1624 break;
1625 case M32C_OPERAND_COND32_24 :
1626 errmsg = insert_normal (cd, fields->f_dsp_24_u8, 0, 0, 24, 8, 32, total_length, buffer);
1627 break;
1628 case M32C_OPERAND_COND32_32 :
1629 errmsg = insert_normal (cd, fields->f_dsp_32_u8, 0, 32, 0, 8, 32, total_length, buffer);
1630 break;
1631 case M32C_OPERAND_COND32_40 :
1632 errmsg = insert_normal (cd, fields->f_dsp_40_u8, 0, 32, 8, 8, 32, total_length, buffer);
1633 break;
1634 case M32C_OPERAND_COND32J :
1637 FLD (f_1_3) = ((((unsigned int) (FLD (f_cond32j)) >> (1))) & (7));
1638 FLD (f_7_1) = ((FLD (f_cond32j)) & (1));
1640 errmsg = insert_normal (cd, fields->f_1_3, 0, 0, 1, 3, 32, total_length, buffer);
1641 if (errmsg)
1642 break;
1643 errmsg = insert_normal (cd, fields->f_7_1, 0, 0, 7, 1, 32, total_length, buffer);
1644 if (errmsg)
1645 break;
1647 break;
1648 case M32C_OPERAND_CR1_PREFIXED_32 :
1649 errmsg = insert_normal (cd, fields->f_21_3, 0, 0, 21, 3, 32, total_length, buffer);
1650 break;
1651 case M32C_OPERAND_CR1_UNPREFIXED_32 :
1652 errmsg = insert_normal (cd, fields->f_13_3, 0, 0, 13, 3, 32, total_length, buffer);
1653 break;
1654 case M32C_OPERAND_CR16 :
1655 errmsg = insert_normal (cd, fields->f_9_3, 0, 0, 9, 3, 32, total_length, buffer);
1656 break;
1657 case M32C_OPERAND_CR2_32 :
1658 errmsg = insert_normal (cd, fields->f_13_3, 0, 0, 13, 3, 32, total_length, buffer);
1659 break;
1660 case M32C_OPERAND_CR3_PREFIXED_32 :
1661 errmsg = insert_normal (cd, fields->f_21_3, 0, 0, 21, 3, 32, total_length, buffer);
1662 break;
1663 case M32C_OPERAND_CR3_UNPREFIXED_32 :
1664 errmsg = insert_normal (cd, fields->f_13_3, 0, 0, 13, 3, 32, total_length, buffer);
1665 break;
1666 case M32C_OPERAND_FLAGS16 :
1667 errmsg = insert_normal (cd, fields->f_9_3, 0, 0, 9, 3, 32, total_length, buffer);
1668 break;
1669 case M32C_OPERAND_FLAGS32 :
1670 errmsg = insert_normal (cd, fields->f_13_3, 0, 0, 13, 3, 32, total_length, buffer);
1671 break;
1672 case M32C_OPERAND_SCCOND32 :
1673 errmsg = insert_normal (cd, fields->f_cond16, 0, 0, 12, 4, 32, total_length, buffer);
1674 break;
1675 case M32C_OPERAND_SIZE :
1676 break;
1678 default :
1679 /* xgettext:c-format */
1680 fprintf (stderr, _("Unrecognized field %d while building insn.\n"),
1681 opindex);
1682 abort ();
1685 return errmsg;
1688 int m32c_cgen_extract_operand
1689 (CGEN_CPU_DESC, int, CGEN_EXTRACT_INFO *, CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma);
1691 /* Main entry point for operand extraction.
1692 The result is <= 0 for error, >0 for success.
1693 ??? Actual values aren't well defined right now.
1695 This function is basically just a big switch statement. Earlier versions
1696 used tables to look up the function to use, but
1697 - if the table contains both assembler and disassembler functions then
1698 the disassembler contains much of the assembler and vice-versa,
1699 - there's a lot of inlining possibilities as things grow,
1700 - using a switch statement avoids the function call overhead.
1702 This function could be moved into `print_insn_normal', but keeping it
1703 separate makes clear the interface between `print_insn_normal' and each of
1704 the handlers. */
1707 m32c_cgen_extract_operand (CGEN_CPU_DESC cd,
1708 int opindex,
1709 CGEN_EXTRACT_INFO *ex_info,
1710 CGEN_INSN_INT insn_value,
1711 CGEN_FIELDS * fields,
1712 bfd_vma pc)
1714 /* Assume success (for those operands that are nops). */
1715 int length = 1;
1716 unsigned int total_length = CGEN_FIELDS_BITSIZE (fields);
1718 switch (opindex)
1720 case M32C_OPERAND_A0 :
1721 break;
1722 case M32C_OPERAND_A1 :
1723 break;
1724 case M32C_OPERAND_AN16_PUSH_S :
1725 length = extract_normal (cd, ex_info, insn_value, 0, 0, 4, 1, 32, total_length, pc, & fields->f_4_1);
1726 break;
1727 case M32C_OPERAND_BIT16AN :
1728 length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 1, 32, total_length, pc, & fields->f_dst16_an);
1729 break;
1730 case M32C_OPERAND_BIT16RN :
1731 length = extract_normal (cd, ex_info, insn_value, 0, 0, 14, 2, 32, total_length, pc, & fields->f_dst16_rn);
1732 break;
1733 case M32C_OPERAND_BIT32ANPREFIXED :
1734 length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 1, 32, total_length, pc, & fields->f_dst32_an_prefixed);
1735 break;
1736 case M32C_OPERAND_BIT32ANUNPREFIXED :
1737 length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 1, 32, total_length, pc, & fields->f_dst32_an_unprefixed);
1738 break;
1739 case M32C_OPERAND_BIT32RNPREFIXED :
1741 long value;
1742 length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 2, 32, total_length, pc, & value);
1743 value = (((((~ (((unsigned int) (value) >> (1))))) & (1))) | (((((value) << (1))) & (2))));
1744 fields->f_dst32_rn_prefixed_QI = value;
1746 break;
1747 case M32C_OPERAND_BIT32RNUNPREFIXED :
1749 long value;
1750 length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 2, 32, total_length, pc, & value);
1751 value = (((((~ (((unsigned int) (value) >> (1))))) & (1))) | (((((value) << (1))) & (2))));
1752 fields->f_dst32_rn_unprefixed_QI = value;
1754 break;
1755 case M32C_OPERAND_BITBASE16_16_S8 :
1756 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 16, 8, 32, total_length, pc, & fields->f_dsp_16_s8);
1757 break;
1758 case M32C_OPERAND_BITBASE16_16_U16 :
1760 long value;
1761 length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 16, 32, total_length, pc, & value);
1762 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
1763 fields->f_dsp_16_u16 = value;
1765 break;
1766 case M32C_OPERAND_BITBASE16_16_U8 :
1767 length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 8, 32, total_length, pc, & fields->f_dsp_16_u8);
1768 break;
1769 case M32C_OPERAND_BITBASE16_8_U11_S :
1771 length = extract_normal (cd, ex_info, insn_value, 0, 0, 5, 3, 32, total_length, pc, & fields->f_bitno16_S);
1772 if (length <= 0) break;
1773 length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 8, 32, total_length, pc, & fields->f_dsp_8_u8);
1774 if (length <= 0) break;
1776 FLD (f_bitbase16_u11_S) = ((((FLD (f_dsp_8_u8)) << (3))) | (FLD (f_bitno16_S)));
1779 break;
1780 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED :
1782 length = extract_normal (cd, ex_info, insn_value, 0, 0, 13, 3, 32, total_length, pc, & fields->f_bitno32_unprefixed);
1783 if (length <= 0) break;
1784 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 16, 8, 32, total_length, pc, & fields->f_dsp_16_s8);
1785 if (length <= 0) break;
1787 FLD (f_bitbase32_16_s11_unprefixed) = ((((FLD (f_dsp_16_s8)) << (3))) | (FLD (f_bitno32_unprefixed)));
1790 break;
1791 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED :
1793 length = extract_normal (cd, ex_info, insn_value, 0, 0, 13, 3, 32, total_length, pc, & fields->f_bitno32_unprefixed);
1794 if (length <= 0) break;
1796 long value;
1797 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 16, 16, 32, total_length, pc, & value);
1798 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
1799 fields->f_dsp_16_s16 = value;
1801 if (length <= 0) break;
1803 FLD (f_bitbase32_16_s19_unprefixed) = ((((FLD (f_dsp_16_s16)) << (3))) | (FLD (f_bitno32_unprefixed)));
1806 break;
1807 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED :
1809 length = extract_normal (cd, ex_info, insn_value, 0, 0, 13, 3, 32, total_length, pc, & fields->f_bitno32_unprefixed);
1810 if (length <= 0) break;
1811 length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 8, 32, total_length, pc, & fields->f_dsp_16_u8);
1812 if (length <= 0) break;
1814 FLD (f_bitbase32_16_u11_unprefixed) = ((((FLD (f_dsp_16_u8)) << (3))) | (FLD (f_bitno32_unprefixed)));
1817 break;
1818 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED :
1820 length = extract_normal (cd, ex_info, insn_value, 0, 0, 13, 3, 32, total_length, pc, & fields->f_bitno32_unprefixed);
1821 if (length <= 0) break;
1823 long value;
1824 length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 16, 32, total_length, pc, & value);
1825 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
1826 fields->f_dsp_16_u16 = value;
1828 if (length <= 0) break;
1830 FLD (f_bitbase32_16_u19_unprefixed) = ((((FLD (f_dsp_16_u16)) << (3))) | (FLD (f_bitno32_unprefixed)));
1833 break;
1834 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED :
1836 length = extract_normal (cd, ex_info, insn_value, 0, 0, 13, 3, 32, total_length, pc, & fields->f_bitno32_unprefixed);
1837 if (length <= 0) break;
1839 long value;
1840 length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 16, 32, total_length, pc, & value);
1841 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
1842 fields->f_dsp_16_u16 = value;
1844 if (length <= 0) break;
1845 length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 8, 32, total_length, pc, & fields->f_dsp_32_u8);
1846 if (length <= 0) break;
1848 FLD (f_bitbase32_16_u27_unprefixed) = ((((FLD (f_dsp_16_u16)) << (3))) | (((((FLD (f_dsp_32_u8)) << (19))) | (FLD (f_bitno32_unprefixed)))));
1851 break;
1852 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED :
1854 length = extract_normal (cd, ex_info, insn_value, 0, 0, 21, 3, 32, total_length, pc, & fields->f_bitno32_prefixed);
1855 if (length <= 0) break;
1856 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_s8);
1857 if (length <= 0) break;
1859 FLD (f_bitbase32_24_s11_prefixed) = ((((FLD (f_dsp_24_s8)) << (3))) | (FLD (f_bitno32_prefixed)));
1862 break;
1863 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED :
1865 length = extract_normal (cd, ex_info, insn_value, 0, 0, 21, 3, 32, total_length, pc, & fields->f_bitno32_prefixed);
1866 if (length <= 0) break;
1867 length = extract_normal (cd, ex_info, insn_value, 0, 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_u8);
1868 if (length <= 0) break;
1869 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 0, 8, 32, total_length, pc, & fields->f_dsp_32_s8);
1870 if (length <= 0) break;
1872 FLD (f_bitbase32_24_s19_prefixed) = ((((FLD (f_dsp_24_u8)) << (3))) | (((((FLD (f_dsp_32_s8)) << (11))) | (FLD (f_bitno32_prefixed)))));
1875 break;
1876 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED :
1878 length = extract_normal (cd, ex_info, insn_value, 0, 0, 21, 3, 32, total_length, pc, & fields->f_bitno32_prefixed);
1879 if (length <= 0) break;
1880 length = extract_normal (cd, ex_info, insn_value, 0, 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_u8);
1881 if (length <= 0) break;
1883 FLD (f_bitbase32_24_u11_prefixed) = ((((FLD (f_dsp_24_u8)) << (3))) | (FLD (f_bitno32_prefixed)));
1886 break;
1887 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED :
1889 length = extract_normal (cd, ex_info, insn_value, 0, 0, 21, 3, 32, total_length, pc, & fields->f_bitno32_prefixed);
1890 if (length <= 0) break;
1891 length = extract_normal (cd, ex_info, insn_value, 0, 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_u8);
1892 if (length <= 0) break;
1893 length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 8, 32, total_length, pc, & fields->f_dsp_32_u8);
1894 if (length <= 0) break;
1896 FLD (f_bitbase32_24_u19_prefixed) = ((((FLD (f_dsp_24_u8)) << (3))) | (((((FLD (f_dsp_32_u8)) << (11))) | (FLD (f_bitno32_prefixed)))));
1899 break;
1900 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED :
1902 length = extract_normal (cd, ex_info, insn_value, 0, 0, 21, 3, 32, total_length, pc, & fields->f_bitno32_prefixed);
1903 if (length <= 0) break;
1904 length = extract_normal (cd, ex_info, insn_value, 0, 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_u8);
1905 if (length <= 0) break;
1907 long value;
1908 length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 16, 32, total_length, pc, & value);
1909 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
1910 fields->f_dsp_32_u16 = value;
1912 if (length <= 0) break;
1914 FLD (f_bitbase32_24_u27_prefixed) = ((((FLD (f_dsp_24_u8)) << (3))) | (((((FLD (f_dsp_32_u16)) << (11))) | (FLD (f_bitno32_prefixed)))));
1917 break;
1918 case M32C_OPERAND_BITNO16R :
1919 length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 8, 32, total_length, pc, & fields->f_dsp_16_u8);
1920 break;
1921 case M32C_OPERAND_BITNO32PREFIXED :
1922 length = extract_normal (cd, ex_info, insn_value, 0, 0, 21, 3, 32, total_length, pc, & fields->f_bitno32_prefixed);
1923 break;
1924 case M32C_OPERAND_BITNO32UNPREFIXED :
1925 length = extract_normal (cd, ex_info, insn_value, 0, 0, 13, 3, 32, total_length, pc, & fields->f_bitno32_unprefixed);
1926 break;
1927 case M32C_OPERAND_DSP_10_U6 :
1928 length = extract_normal (cd, ex_info, insn_value, 0, 0, 10, 6, 32, total_length, pc, & fields->f_dsp_10_u6);
1929 break;
1930 case M32C_OPERAND_DSP_16_S16 :
1932 long value;
1933 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 16, 16, 32, total_length, pc, & value);
1934 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
1935 fields->f_dsp_16_s16 = value;
1937 break;
1938 case M32C_OPERAND_DSP_16_S8 :
1939 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 16, 8, 32, total_length, pc, & fields->f_dsp_16_s8);
1940 break;
1941 case M32C_OPERAND_DSP_16_U16 :
1943 long value;
1944 length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 16, 32, total_length, pc, & value);
1945 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
1946 fields->f_dsp_16_u16 = value;
1948 break;
1949 case M32C_OPERAND_DSP_16_U20 :
1952 long value;
1953 length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 16, 32, total_length, pc, & value);
1954 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
1955 fields->f_dsp_16_u16 = value;
1957 if (length <= 0) break;
1958 length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 8, 32, total_length, pc, & fields->f_dsp_32_u8);
1959 if (length <= 0) break;
1961 FLD (f_dsp_16_u24) = ((((FLD (f_dsp_32_u8)) << (16))) | (FLD (f_dsp_16_u16)));
1964 break;
1965 case M32C_OPERAND_DSP_16_U24 :
1968 long value;
1969 length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 16, 32, total_length, pc, & value);
1970 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
1971 fields->f_dsp_16_u16 = value;
1973 if (length <= 0) break;
1974 length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 8, 32, total_length, pc, & fields->f_dsp_32_u8);
1975 if (length <= 0) break;
1977 FLD (f_dsp_16_u24) = ((((FLD (f_dsp_32_u8)) << (16))) | (FLD (f_dsp_16_u16)));
1980 break;
1981 case M32C_OPERAND_DSP_16_U8 :
1982 length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 8, 32, total_length, pc, & fields->f_dsp_16_u8);
1983 break;
1984 case M32C_OPERAND_DSP_24_S16 :
1986 length = extract_normal (cd, ex_info, insn_value, 0, 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_u8);
1987 if (length <= 0) break;
1988 length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 8, 32, total_length, pc, & fields->f_dsp_32_u8);
1989 if (length <= 0) break;
1991 FLD (f_dsp_24_s16) = EXTHISI (((HI) (UINT) (((((FLD (f_dsp_32_u8)) << (8))) | (FLD (f_dsp_24_u8))))));
1994 break;
1995 case M32C_OPERAND_DSP_24_S8 :
1996 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_s8);
1997 break;
1998 case M32C_OPERAND_DSP_24_U16 :
2000 length = extract_normal (cd, ex_info, insn_value, 0, 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_u8);
2001 if (length <= 0) break;
2002 length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 8, 32, total_length, pc, & fields->f_dsp_32_u8);
2003 if (length <= 0) break;
2005 FLD (f_dsp_24_u16) = ((((FLD (f_dsp_32_u8)) << (8))) | (FLD (f_dsp_24_u8)));
2008 break;
2009 case M32C_OPERAND_DSP_24_U20 :
2011 length = extract_normal (cd, ex_info, insn_value, 0, 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_u8);
2012 if (length <= 0) break;
2014 long value;
2015 length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 16, 32, total_length, pc, & value);
2016 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
2017 fields->f_dsp_32_u16 = value;
2019 if (length <= 0) break;
2021 FLD (f_dsp_24_u24) = ((((FLD (f_dsp_32_u16)) << (8))) | (FLD (f_dsp_24_u8)));
2024 break;
2025 case M32C_OPERAND_DSP_24_U24 :
2027 length = extract_normal (cd, ex_info, insn_value, 0, 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_u8);
2028 if (length <= 0) break;
2030 long value;
2031 length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 16, 32, total_length, pc, & value);
2032 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
2033 fields->f_dsp_32_u16 = value;
2035 if (length <= 0) break;
2037 FLD (f_dsp_24_u24) = ((((FLD (f_dsp_32_u16)) << (8))) | (FLD (f_dsp_24_u8)));
2040 break;
2041 case M32C_OPERAND_DSP_24_U8 :
2042 length = extract_normal (cd, ex_info, insn_value, 0, 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_u8);
2043 break;
2044 case M32C_OPERAND_DSP_32_S16 :
2046 long value;
2047 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 0, 16, 32, total_length, pc, & value);
2048 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
2049 fields->f_dsp_32_s16 = value;
2051 break;
2052 case M32C_OPERAND_DSP_32_S8 :
2053 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 0, 8, 32, total_length, pc, & fields->f_dsp_32_s8);
2054 break;
2055 case M32C_OPERAND_DSP_32_U16 :
2057 long value;
2058 length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 16, 32, total_length, pc, & value);
2059 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
2060 fields->f_dsp_32_u16 = value;
2062 break;
2063 case M32C_OPERAND_DSP_32_U20 :
2065 long value;
2066 length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 24, 32, total_length, pc, & value);
2067 value = ((((((((unsigned int) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((((value) << (16))) & (16711680))));
2068 fields->f_dsp_32_u24 = value;
2070 break;
2071 case M32C_OPERAND_DSP_32_U24 :
2073 long value;
2074 length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 24, 32, total_length, pc, & value);
2075 value = ((((((((unsigned int) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((((value) << (16))) & (16711680))));
2076 fields->f_dsp_32_u24 = value;
2078 break;
2079 case M32C_OPERAND_DSP_32_U8 :
2080 length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 8, 32, total_length, pc, & fields->f_dsp_32_u8);
2081 break;
2082 case M32C_OPERAND_DSP_40_S16 :
2084 long value;
2085 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 8, 16, 32, total_length, pc, & value);
2086 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
2087 fields->f_dsp_40_s16 = value;
2089 break;
2090 case M32C_OPERAND_DSP_40_S8 :
2091 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 8, 8, 32, total_length, pc, & fields->f_dsp_40_s8);
2092 break;
2093 case M32C_OPERAND_DSP_40_U16 :
2095 long value;
2096 length = extract_normal (cd, ex_info, insn_value, 0, 32, 8, 16, 32, total_length, pc, & value);
2097 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
2098 fields->f_dsp_40_u16 = value;
2100 break;
2101 case M32C_OPERAND_DSP_40_U24 :
2103 long value;
2104 length = extract_normal (cd, ex_info, insn_value, 0, 32, 8, 24, 32, total_length, pc, & value);
2105 value = ((((((((unsigned int) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((((value) << (16))) & (16711680))));
2106 fields->f_dsp_40_u24 = value;
2108 break;
2109 case M32C_OPERAND_DSP_40_U8 :
2110 length = extract_normal (cd, ex_info, insn_value, 0, 32, 8, 8, 32, total_length, pc, & fields->f_dsp_40_u8);
2111 break;
2112 case M32C_OPERAND_DSP_48_S16 :
2114 long value;
2115 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 16, 16, 32, total_length, pc, & value);
2116 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
2117 fields->f_dsp_48_s16 = value;
2119 break;
2120 case M32C_OPERAND_DSP_48_S8 :
2121 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 16, 8, 32, total_length, pc, & fields->f_dsp_48_s8);
2122 break;
2123 case M32C_OPERAND_DSP_48_U16 :
2125 long value;
2126 length = extract_normal (cd, ex_info, insn_value, 0, 32, 16, 16, 32, total_length, pc, & value);
2127 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
2128 fields->f_dsp_48_u16 = value;
2130 break;
2131 case M32C_OPERAND_DSP_48_U24 :
2134 long value;
2135 length = extract_normal (cd, ex_info, insn_value, 0, 32, 16, 16, 32, total_length, pc, & value);
2136 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
2137 fields->f_dsp_48_u16 = value;
2139 if (length <= 0) break;
2140 length = extract_normal (cd, ex_info, insn_value, 0, 64, 0, 8, 32, total_length, pc, & fields->f_dsp_64_u8);
2141 if (length <= 0) break;
2143 FLD (f_dsp_48_u24) = ((((FLD (f_dsp_48_u16)) & (65535))) | (((((FLD (f_dsp_64_u8)) << (16))) & (16711680))));
2146 break;
2147 case M32C_OPERAND_DSP_48_U8 :
2148 length = extract_normal (cd, ex_info, insn_value, 0, 32, 16, 8, 32, total_length, pc, & fields->f_dsp_48_u8);
2149 break;
2150 case M32C_OPERAND_DSP_8_S24 :
2152 long value;
2153 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 24, 32, total_length, pc, & value);
2154 value = ((((((unsigned int) (value) >> (16))) | (((value) & (65280))))) | (((EXTQISI (TRUNCSIQI (((value) & (255))))) << (16))));
2155 fields->f_dsp_8_s24 = value;
2157 break;
2158 case M32C_OPERAND_DSP_8_S8 :
2159 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 8, 32, total_length, pc, & fields->f_dsp_8_s8);
2160 break;
2161 case M32C_OPERAND_DSP_8_U16 :
2163 long value;
2164 length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 16, 32, total_length, pc, & value);
2165 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
2166 fields->f_dsp_8_u16 = value;
2168 break;
2169 case M32C_OPERAND_DSP_8_U24 :
2171 long value;
2172 length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 24, 32, total_length, pc, & value);
2173 value = ((((((unsigned int) (value) >> (16))) | (((value) & (65280))))) | (((((value) & (255))) << (16))));
2174 fields->f_dsp_8_u24 = value;
2176 break;
2177 case M32C_OPERAND_DSP_8_U6 :
2178 length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 6, 32, total_length, pc, & fields->f_dsp_8_u6);
2179 break;
2180 case M32C_OPERAND_DSP_8_U8 :
2181 length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 8, 32, total_length, pc, & fields->f_dsp_8_u8);
2182 break;
2183 case M32C_OPERAND_DST16AN :
2184 length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 1, 32, total_length, pc, & fields->f_dst16_an);
2185 break;
2186 case M32C_OPERAND_DST16AN_S :
2187 length = extract_normal (cd, ex_info, insn_value, 0, 0, 4, 1, 32, total_length, pc, & fields->f_dst16_an_s);
2188 break;
2189 case M32C_OPERAND_DST16ANHI :
2190 length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 1, 32, total_length, pc, & fields->f_dst16_an);
2191 break;
2192 case M32C_OPERAND_DST16ANQI :
2193 length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 1, 32, total_length, pc, & fields->f_dst16_an);
2194 break;
2195 case M32C_OPERAND_DST16ANQI_S :
2196 length = extract_normal (cd, ex_info, insn_value, 0, 0, 5, 1, 32, total_length, pc, & fields->f_dst16_rn_QI_s);
2197 break;
2198 case M32C_OPERAND_DST16ANSI :
2199 length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 1, 32, total_length, pc, & fields->f_dst16_an);
2200 break;
2201 case M32C_OPERAND_DST16RNEXTQI :
2202 length = extract_normal (cd, ex_info, insn_value, 0, 0, 14, 1, 32, total_length, pc, & fields->f_dst16_rn_ext);
2203 break;
2204 case M32C_OPERAND_DST16RNHI :
2205 length = extract_normal (cd, ex_info, insn_value, 0, 0, 14, 2, 32, total_length, pc, & fields->f_dst16_rn);
2206 break;
2207 case M32C_OPERAND_DST16RNQI :
2208 length = extract_normal (cd, ex_info, insn_value, 0, 0, 14, 2, 32, total_length, pc, & fields->f_dst16_rn);
2209 break;
2210 case M32C_OPERAND_DST16RNQI_S :
2211 length = extract_normal (cd, ex_info, insn_value, 0, 0, 5, 1, 32, total_length, pc, & fields->f_dst16_rn_QI_s);
2212 break;
2213 case M32C_OPERAND_DST16RNSI :
2214 length = extract_normal (cd, ex_info, insn_value, 0, 0, 14, 2, 32, total_length, pc, & fields->f_dst16_rn);
2215 break;
2216 case M32C_OPERAND_DST32ANEXTUNPREFIXED :
2217 length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 1, 32, total_length, pc, & fields->f_dst32_an_unprefixed);
2218 break;
2219 case M32C_OPERAND_DST32ANPREFIXED :
2220 length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 1, 32, total_length, pc, & fields->f_dst32_an_prefixed);
2221 break;
2222 case M32C_OPERAND_DST32ANPREFIXEDHI :
2223 length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 1, 32, total_length, pc, & fields->f_dst32_an_prefixed);
2224 break;
2225 case M32C_OPERAND_DST32ANPREFIXEDQI :
2226 length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 1, 32, total_length, pc, & fields->f_dst32_an_prefixed);
2227 break;
2228 case M32C_OPERAND_DST32ANPREFIXEDSI :
2229 length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 1, 32, total_length, pc, & fields->f_dst32_an_prefixed);
2230 break;
2231 case M32C_OPERAND_DST32ANUNPREFIXED :
2232 length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 1, 32, total_length, pc, & fields->f_dst32_an_unprefixed);
2233 break;
2234 case M32C_OPERAND_DST32ANUNPREFIXEDHI :
2235 length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 1, 32, total_length, pc, & fields->f_dst32_an_unprefixed);
2236 break;
2237 case M32C_OPERAND_DST32ANUNPREFIXEDQI :
2238 length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 1, 32, total_length, pc, & fields->f_dst32_an_unprefixed);
2239 break;
2240 case M32C_OPERAND_DST32ANUNPREFIXEDSI :
2241 length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 1, 32, total_length, pc, & fields->f_dst32_an_unprefixed);
2242 break;
2243 case M32C_OPERAND_DST32R0HI_S :
2244 break;
2245 case M32C_OPERAND_DST32R0QI_S :
2246 break;
2247 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI :
2248 length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 1, 32, total_length, pc, & fields->f_dst32_rn_ext_unprefixed);
2249 break;
2250 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI :
2251 length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 1, 32, total_length, pc, & fields->f_dst32_rn_ext_unprefixed);
2252 break;
2253 case M32C_OPERAND_DST32RNPREFIXEDHI :
2255 long value;
2256 length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 2, 32, total_length, pc, & value);
2257 value = ((((value) + (2))) % (4));
2258 fields->f_dst32_rn_prefixed_HI = value;
2260 break;
2261 case M32C_OPERAND_DST32RNPREFIXEDQI :
2263 long value;
2264 length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 2, 32, total_length, pc, & value);
2265 value = (((((~ (((unsigned int) (value) >> (1))))) & (1))) | (((((value) << (1))) & (2))));
2266 fields->f_dst32_rn_prefixed_QI = value;
2268 break;
2269 case M32C_OPERAND_DST32RNPREFIXEDSI :
2271 long value;
2272 length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 2, 32, total_length, pc, & value);
2273 value = ((value) - (2));
2274 fields->f_dst32_rn_prefixed_SI = value;
2276 break;
2277 case M32C_OPERAND_DST32RNUNPREFIXEDHI :
2279 long value;
2280 length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 2, 32, total_length, pc, & value);
2281 value = ((((value) + (2))) % (4));
2282 fields->f_dst32_rn_unprefixed_HI = value;
2284 break;
2285 case M32C_OPERAND_DST32RNUNPREFIXEDQI :
2287 long value;
2288 length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 2, 32, total_length, pc, & value);
2289 value = (((((~ (((unsigned int) (value) >> (1))))) & (1))) | (((((value) << (1))) & (2))));
2290 fields->f_dst32_rn_unprefixed_QI = value;
2292 break;
2293 case M32C_OPERAND_DST32RNUNPREFIXEDSI :
2295 long value;
2296 length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 2, 32, total_length, pc, & value);
2297 value = ((value) - (2));
2298 fields->f_dst32_rn_unprefixed_SI = value;
2300 break;
2301 case M32C_OPERAND_G :
2302 break;
2303 case M32C_OPERAND_IMM_12_S4 :
2304 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 12, 4, 32, total_length, pc, & fields->f_imm_12_s4);
2305 break;
2306 case M32C_OPERAND_IMM_12_S4N :
2307 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 12, 4, 32, total_length, pc, & fields->f_imm_12_s4);
2308 break;
2309 case M32C_OPERAND_IMM_13_U3 :
2310 length = extract_normal (cd, ex_info, insn_value, 0, 0, 13, 3, 32, total_length, pc, & fields->f_imm_13_u3);
2311 break;
2312 case M32C_OPERAND_IMM_16_HI :
2314 long value;
2315 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 16, 16, 32, total_length, pc, & value);
2316 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
2317 fields->f_dsp_16_s16 = value;
2319 break;
2320 case M32C_OPERAND_IMM_16_QI :
2321 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 16, 8, 32, total_length, pc, & fields->f_dsp_16_s8);
2322 break;
2323 case M32C_OPERAND_IMM_16_SI :
2326 long value;
2327 length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 16, 32, total_length, pc, & value);
2328 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
2329 fields->f_dsp_16_u16 = value;
2331 if (length <= 0) break;
2333 long value;
2334 length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 16, 32, total_length, pc, & value);
2335 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
2336 fields->f_dsp_32_u16 = value;
2338 if (length <= 0) break;
2340 FLD (f_dsp_16_s32) = ((((FLD (f_dsp_16_u16)) & (65535))) | (((((FLD (f_dsp_32_u16)) << (16))) & (0xffff0000))));
2343 break;
2344 case M32C_OPERAND_IMM_20_S4 :
2345 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 20, 4, 32, total_length, pc, & fields->f_imm_20_s4);
2346 break;
2347 case M32C_OPERAND_IMM_24_HI :
2349 length = extract_normal (cd, ex_info, insn_value, 0, 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_u8);
2350 if (length <= 0) break;
2351 length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 8, 32, total_length, pc, & fields->f_dsp_32_u8);
2352 if (length <= 0) break;
2354 FLD (f_dsp_24_s16) = EXTHISI (((HI) (UINT) (((((FLD (f_dsp_32_u8)) << (8))) | (FLD (f_dsp_24_u8))))));
2357 break;
2358 case M32C_OPERAND_IMM_24_QI :
2359 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_s8);
2360 break;
2361 case M32C_OPERAND_IMM_24_SI :
2363 length = extract_normal (cd, ex_info, insn_value, 0, 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_u8);
2364 if (length <= 0) break;
2366 long value;
2367 length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 24, 32, total_length, pc, & value);
2368 value = ((((((((unsigned int) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((((value) << (16))) & (16711680))));
2369 fields->f_dsp_32_u24 = value;
2371 if (length <= 0) break;
2373 FLD (f_dsp_24_s32) = ((((FLD (f_dsp_24_u8)) & (255))) | (((((FLD (f_dsp_32_u24)) << (8))) & (0xffffff00))));
2376 break;
2377 case M32C_OPERAND_IMM_32_HI :
2379 long value;
2380 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 0, 16, 32, total_length, pc, & value);
2381 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
2382 fields->f_dsp_32_s16 = value;
2384 break;
2385 case M32C_OPERAND_IMM_32_QI :
2386 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 0, 8, 32, total_length, pc, & fields->f_dsp_32_s8);
2387 break;
2388 case M32C_OPERAND_IMM_32_SI :
2390 long value;
2391 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 0, 32, 32, total_length, pc, & value);
2392 value = EXTSISI (((((((((unsigned int) (value) >> (24))) & (255))) | (((((unsigned int) (value) >> (8))) & (65280))))) | (((((((value) << (8))) & (16711680))) | (((((value) << (24))) & (0xff000000)))))));
2393 fields->f_dsp_32_s32 = value;
2395 break;
2396 case M32C_OPERAND_IMM_40_HI :
2398 long value;
2399 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 8, 16, 32, total_length, pc, & value);
2400 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
2401 fields->f_dsp_40_s16 = value;
2403 break;
2404 case M32C_OPERAND_IMM_40_QI :
2405 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 8, 8, 32, total_length, pc, & fields->f_dsp_40_s8);
2406 break;
2407 case M32C_OPERAND_IMM_40_SI :
2410 long value;
2411 length = extract_normal (cd, ex_info, insn_value, 0, 32, 8, 24, 32, total_length, pc, & value);
2412 value = ((((((((unsigned int) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((((value) << (16))) & (16711680))));
2413 fields->f_dsp_40_u24 = value;
2415 if (length <= 0) break;
2416 length = extract_normal (cd, ex_info, insn_value, 0, 64, 0, 8, 32, total_length, pc, & fields->f_dsp_64_u8);
2417 if (length <= 0) break;
2419 FLD (f_dsp_40_s32) = ((((FLD (f_dsp_40_u24)) & (16777215))) | (((((FLD (f_dsp_64_u8)) << (24))) & (0xff000000))));
2422 break;
2423 case M32C_OPERAND_IMM_48_HI :
2425 long value;
2426 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 16, 16, 32, total_length, pc, & value);
2427 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
2428 fields->f_dsp_48_s16 = value;
2430 break;
2431 case M32C_OPERAND_IMM_48_QI :
2432 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 16, 8, 32, total_length, pc, & fields->f_dsp_48_s8);
2433 break;
2434 case M32C_OPERAND_IMM_48_SI :
2437 long value;
2438 length = extract_normal (cd, ex_info, insn_value, 0, 32, 16, 16, 32, total_length, pc, & value);
2439 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
2440 fields->f_dsp_48_u16 = value;
2442 if (length <= 0) break;
2444 long value;
2445 length = extract_normal (cd, ex_info, insn_value, 0, 64, 0, 16, 32, total_length, pc, & value);
2446 value = ((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280))));
2447 fields->f_dsp_64_u16 = value;
2449 if (length <= 0) break;
2451 FLD (f_dsp_48_s32) = ((((FLD (f_dsp_48_u16)) & (65535))) | (((((FLD (f_dsp_64_u16)) << (16))) & (0xffff0000))));
2454 break;
2455 case M32C_OPERAND_IMM_56_HI :
2457 length = extract_normal (cd, ex_info, insn_value, 0, 32, 24, 8, 32, total_length, pc, & fields->f_dsp_56_u8);
2458 if (length <= 0) break;
2459 length = extract_normal (cd, ex_info, insn_value, 0, 64, 0, 8, 32, total_length, pc, & fields->f_dsp_64_u8);
2460 if (length <= 0) break;
2462 FLD (f_dsp_56_s16) = EXTHISI (((HI) (UINT) (((((FLD (f_dsp_64_u8)) << (8))) | (FLD (f_dsp_56_u8))))));
2465 break;
2466 case M32C_OPERAND_IMM_56_QI :
2467 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 24, 8, 32, total_length, pc, & fields->f_dsp_56_s8);
2468 break;
2469 case M32C_OPERAND_IMM_64_HI :
2471 long value;
2472 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 64, 0, 16, 32, total_length, pc, & value);
2473 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
2474 fields->f_dsp_64_s16 = value;
2476 break;
2477 case M32C_OPERAND_IMM_8_HI :
2479 long value;
2480 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 16, 32, total_length, pc, & value);
2481 value = EXTHISI (((HI) (INT) (((((((unsigned int) (value) >> (8))) & (255))) | (((((value) << (8))) & (65280)))))));
2482 fields->f_dsp_8_s16 = value;
2484 break;
2485 case M32C_OPERAND_IMM_8_QI :
2486 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 8, 32, total_length, pc, & fields->f_dsp_8_s8);
2487 break;
2488 case M32C_OPERAND_IMM_8_S4 :
2489 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 4, 32, total_length, pc, & fields->f_imm_8_s4);
2490 break;
2491 case M32C_OPERAND_IMM_8_S4N :
2492 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 4, 32, total_length, pc, & fields->f_imm_8_s4);
2493 break;
2494 case M32C_OPERAND_IMM_SH_12_S4 :
2495 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 12, 4, 32, total_length, pc, & fields->f_imm_12_s4);
2496 break;
2497 case M32C_OPERAND_IMM_SH_20_S4 :
2498 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 20, 4, 32, total_length, pc, & fields->f_imm_20_s4);
2499 break;
2500 case M32C_OPERAND_IMM_SH_8_S4 :
2501 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 4, 32, total_length, pc, & fields->f_imm_8_s4);
2502 break;
2503 case M32C_OPERAND_IMM1_S :
2505 long value;
2506 length = extract_normal (cd, ex_info, insn_value, 0, 0, 2, 1, 32, total_length, pc, & value);
2507 value = ((value) + (1));
2508 fields->f_imm1_S = value;
2510 break;
2511 case M32C_OPERAND_IMM3_S :
2513 length = extract_normal (cd, ex_info, insn_value, 0, 0, 2, 2, 32, total_length, pc, & fields->f_2_2);
2514 if (length <= 0) break;
2515 length = extract_normal (cd, ex_info, insn_value, 0, 0, 7, 1, 32, total_length, pc, & fields->f_7_1);
2516 if (length <= 0) break;
2518 FLD (f_imm3_S) = ((((((FLD (f_2_2)) << (1))) | (FLD (f_7_1)))) + (1));
2521 break;
2522 case M32C_OPERAND_LAB_16_8 :
2524 long value;
2525 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 16, 8, 32, total_length, pc, & value);
2526 value = ((value) + (((pc) + (2))));
2527 fields->f_lab_16_8 = value;
2529 break;
2530 case M32C_OPERAND_LAB_24_8 :
2532 long value;
2533 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 24, 8, 32, total_length, pc, & value);
2534 value = ((value) + (((pc) + (2))));
2535 fields->f_lab_24_8 = value;
2537 break;
2538 case M32C_OPERAND_LAB_32_8 :
2540 long value;
2541 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 32, 0, 8, 32, total_length, pc, & value);
2542 value = ((value) + (((pc) + (2))));
2543 fields->f_lab_32_8 = value;
2545 break;
2546 case M32C_OPERAND_LAB_40_8 :
2548 long value;
2549 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 32, 8, 8, 32, total_length, pc, & value);
2550 value = ((value) + (((pc) + (2))));
2551 fields->f_lab_40_8 = value;
2553 break;
2554 case M32C_OPERAND_LAB_5_3 :
2556 long value;
2557 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_PCREL_ADDR), 0, 5, 3, 32, total_length, pc, & value);
2558 value = ((value) + (((pc) + (2))));
2559 fields->f_lab_5_3 = value;
2561 break;
2562 case M32C_OPERAND_LAB_8_16 :
2564 long value;
2565 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGN_OPT)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 8, 16, 32, total_length, pc, & value);
2566 value = ((((((unsigned int) (((value) & (65535))) >> (8))) | (((int) (((((value) & (255))) << (24))) >> (16))))) + (((pc) + (1))));
2567 fields->f_lab_8_16 = value;
2569 break;
2570 case M32C_OPERAND_LAB_8_24 :
2572 long value;
2573 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_ABS_ADDR), 0, 8, 24, 32, total_length, pc, & value);
2574 value = ((((((unsigned int) (value) >> (16))) | (((value) & (65280))))) | (((((value) & (255))) << (16))));
2575 fields->f_lab_8_24 = value;
2577 break;
2578 case M32C_OPERAND_LAB_8_8 :
2580 long value;
2581 length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 8, 8, 32, total_length, pc, & value);
2582 value = ((value) + (((pc) + (1))));
2583 fields->f_lab_8_8 = value;
2585 break;
2586 case M32C_OPERAND_LAB32_JMP_S :
2588 length = extract_normal (cd, ex_info, insn_value, 0, 0, 2, 2, 32, total_length, pc, & fields->f_2_2);
2589 if (length <= 0) break;
2590 length = extract_normal (cd, ex_info, insn_value, 0, 0, 7, 1, 32, total_length, pc, & fields->f_7_1);
2591 if (length <= 0) break;
2593 FLD (f_lab32_jmp_s) = ((pc) + (((((((FLD (f_2_2)) << (1))) | (FLD (f_7_1)))) + (2))));
2596 break;
2597 case M32C_OPERAND_Q :
2598 break;
2599 case M32C_OPERAND_R0 :
2600 break;
2601 case M32C_OPERAND_R0H :
2602 break;
2603 case M32C_OPERAND_R0L :
2604 break;
2605 case M32C_OPERAND_R1 :
2606 break;
2607 case M32C_OPERAND_R1R2R0 :
2608 break;
2609 case M32C_OPERAND_R2 :
2610 break;
2611 case M32C_OPERAND_R2R0 :
2612 break;
2613 case M32C_OPERAND_R3 :
2614 break;
2615 case M32C_OPERAND_R3R1 :
2616 break;
2617 case M32C_OPERAND_REGSETPOP :
2618 length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 8, 32, total_length, pc, & fields->f_8_8);
2619 break;
2620 case M32C_OPERAND_REGSETPUSH :
2621 length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 8, 32, total_length, pc, & fields->f_8_8);
2622 break;
2623 case M32C_OPERAND_RN16_PUSH_S :
2624 length = extract_normal (cd, ex_info, insn_value, 0, 0, 4, 1, 32, total_length, pc, & fields->f_4_1);
2625 break;
2626 case M32C_OPERAND_S :
2627 break;
2628 case M32C_OPERAND_SRC16AN :
2629 length = extract_normal (cd, ex_info, insn_value, 0, 0, 11, 1, 32, total_length, pc, & fields->f_src16_an);
2630 break;
2631 case M32C_OPERAND_SRC16ANHI :
2632 length = extract_normal (cd, ex_info, insn_value, 0, 0, 11, 1, 32, total_length, pc, & fields->f_src16_an);
2633 break;
2634 case M32C_OPERAND_SRC16ANQI :
2635 length = extract_normal (cd, ex_info, insn_value, 0, 0, 11, 1, 32, total_length, pc, & fields->f_src16_an);
2636 break;
2637 case M32C_OPERAND_SRC16RNHI :
2638 length = extract_normal (cd, ex_info, insn_value, 0, 0, 10, 2, 32, total_length, pc, & fields->f_src16_rn);
2639 break;
2640 case M32C_OPERAND_SRC16RNQI :
2641 length = extract_normal (cd, ex_info, insn_value, 0, 0, 10, 2, 32, total_length, pc, & fields->f_src16_rn);
2642 break;
2643 case M32C_OPERAND_SRC32ANPREFIXED :
2644 length = extract_normal (cd, ex_info, insn_value, 0, 0, 19, 1, 32, total_length, pc, & fields->f_src32_an_prefixed);
2645 break;
2646 case M32C_OPERAND_SRC32ANPREFIXEDHI :
2647 length = extract_normal (cd, ex_info, insn_value, 0, 0, 19, 1, 32, total_length, pc, & fields->f_src32_an_prefixed);
2648 break;
2649 case M32C_OPERAND_SRC32ANPREFIXEDQI :
2650 length = extract_normal (cd, ex_info, insn_value, 0, 0, 19, 1, 32, total_length, pc, & fields->f_src32_an_prefixed);
2651 break;
2652 case M32C_OPERAND_SRC32ANPREFIXEDSI :
2653 length = extract_normal (cd, ex_info, insn_value, 0, 0, 19, 1, 32, total_length, pc, & fields->f_src32_an_prefixed);
2654 break;
2655 case M32C_OPERAND_SRC32ANUNPREFIXED :
2656 length = extract_normal (cd, ex_info, insn_value, 0, 0, 11, 1, 32, total_length, pc, & fields->f_src32_an_unprefixed);
2657 break;
2658 case M32C_OPERAND_SRC32ANUNPREFIXEDHI :
2659 length = extract_normal (cd, ex_info, insn_value, 0, 0, 11, 1, 32, total_length, pc, & fields->f_src32_an_unprefixed);
2660 break;
2661 case M32C_OPERAND_SRC32ANUNPREFIXEDQI :
2662 length = extract_normal (cd, ex_info, insn_value, 0, 0, 11, 1, 32, total_length, pc, & fields->f_src32_an_unprefixed);
2663 break;
2664 case M32C_OPERAND_SRC32ANUNPREFIXEDSI :
2665 length = extract_normal (cd, ex_info, insn_value, 0, 0, 11, 1, 32, total_length, pc, & fields->f_src32_an_unprefixed);
2666 break;
2667 case M32C_OPERAND_SRC32RNPREFIXEDHI :
2669 long value;
2670 length = extract_normal (cd, ex_info, insn_value, 0, 0, 18, 2, 32, total_length, pc, & value);
2671 value = ((((value) + (2))) % (4));
2672 fields->f_src32_rn_prefixed_HI = value;
2674 break;
2675 case M32C_OPERAND_SRC32RNPREFIXEDQI :
2677 long value;
2678 length = extract_normal (cd, ex_info, insn_value, 0, 0, 18, 2, 32, total_length, pc, & value);
2679 value = (((((~ (((unsigned int) (value) >> (1))))) & (1))) | (((((value) << (1))) & (2))));
2680 fields->f_src32_rn_prefixed_QI = value;
2682 break;
2683 case M32C_OPERAND_SRC32RNPREFIXEDSI :
2685 long value;
2686 length = extract_normal (cd, ex_info, insn_value, 0, 0, 18, 2, 32, total_length, pc, & value);
2687 value = ((value) - (2));
2688 fields->f_src32_rn_prefixed_SI = value;
2690 break;
2691 case M32C_OPERAND_SRC32RNUNPREFIXEDHI :
2693 long value;
2694 length = extract_normal (cd, ex_info, insn_value, 0, 0, 10, 2, 32, total_length, pc, & value);
2695 value = ((((value) + (2))) % (4));
2696 fields->f_src32_rn_unprefixed_HI = value;
2698 break;
2699 case M32C_OPERAND_SRC32RNUNPREFIXEDQI :
2701 long value;
2702 length = extract_normal (cd, ex_info, insn_value, 0, 0, 10, 2, 32, total_length, pc, & value);
2703 value = (((((~ (((unsigned int) (value) >> (1))))) & (1))) | (((((value) << (1))) & (2))));
2704 fields->f_src32_rn_unprefixed_QI = value;
2706 break;
2707 case M32C_OPERAND_SRC32RNUNPREFIXEDSI :
2709 long value;
2710 length = extract_normal (cd, ex_info, insn_value, 0, 0, 10, 2, 32, total_length, pc, & value);
2711 value = ((value) - (2));
2712 fields->f_src32_rn_unprefixed_SI = value;
2714 break;
2715 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL :
2716 length = extract_normal (cd, ex_info, insn_value, 0, 0, 5, 1, 32, total_length, pc, & fields->f_5_1);
2717 break;
2718 case M32C_OPERAND_X :
2719 break;
2720 case M32C_OPERAND_Z :
2721 break;
2722 case M32C_OPERAND_COND16_16 :
2723 length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 8, 32, total_length, pc, & fields->f_dsp_16_u8);
2724 break;
2725 case M32C_OPERAND_COND16_24 :
2726 length = extract_normal (cd, ex_info, insn_value, 0, 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_u8);
2727 break;
2728 case M32C_OPERAND_COND16_32 :
2729 length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 8, 32, total_length, pc, & fields->f_dsp_32_u8);
2730 break;
2731 case M32C_OPERAND_COND16C :
2732 length = extract_normal (cd, ex_info, insn_value, 0, 0, 12, 4, 32, total_length, pc, & fields->f_cond16);
2733 break;
2734 case M32C_OPERAND_COND16J :
2735 length = extract_normal (cd, ex_info, insn_value, 0, 0, 12, 4, 32, total_length, pc, & fields->f_cond16);
2736 break;
2737 case M32C_OPERAND_COND16J5 :
2738 length = extract_normal (cd, ex_info, insn_value, 0, 0, 5, 3, 32, total_length, pc, & fields->f_cond16j_5);
2739 break;
2740 case M32C_OPERAND_COND32 :
2742 length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 1, 32, total_length, pc, & fields->f_9_1);
2743 if (length <= 0) break;
2744 length = extract_normal (cd, ex_info, insn_value, 0, 0, 13, 3, 32, total_length, pc, & fields->f_13_3);
2745 if (length <= 0) break;
2747 FLD (f_cond32) = ((((FLD (f_9_1)) << (3))) | (FLD (f_13_3)));
2750 break;
2751 case M32C_OPERAND_COND32_16 :
2752 length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 8, 32, total_length, pc, & fields->f_dsp_16_u8);
2753 break;
2754 case M32C_OPERAND_COND32_24 :
2755 length = extract_normal (cd, ex_info, insn_value, 0, 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_u8);
2756 break;
2757 case M32C_OPERAND_COND32_32 :
2758 length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 8, 32, total_length, pc, & fields->f_dsp_32_u8);
2759 break;
2760 case M32C_OPERAND_COND32_40 :
2761 length = extract_normal (cd, ex_info, insn_value, 0, 32, 8, 8, 32, total_length, pc, & fields->f_dsp_40_u8);
2762 break;
2763 case M32C_OPERAND_COND32J :
2765 length = extract_normal (cd, ex_info, insn_value, 0, 0, 1, 3, 32, total_length, pc, & fields->f_1_3);
2766 if (length <= 0) break;
2767 length = extract_normal (cd, ex_info, insn_value, 0, 0, 7, 1, 32, total_length, pc, & fields->f_7_1);
2768 if (length <= 0) break;
2770 FLD (f_cond32j) = ((((FLD (f_1_3)) << (1))) | (FLD (f_7_1)));
2773 break;
2774 case M32C_OPERAND_CR1_PREFIXED_32 :
2775 length = extract_normal (cd, ex_info, insn_value, 0, 0, 21, 3, 32, total_length, pc, & fields->f_21_3);
2776 break;
2777 case M32C_OPERAND_CR1_UNPREFIXED_32 :
2778 length = extract_normal (cd, ex_info, insn_value, 0, 0, 13, 3, 32, total_length, pc, & fields->f_13_3);
2779 break;
2780 case M32C_OPERAND_CR16 :
2781 length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 3, 32, total_length, pc, & fields->f_9_3);
2782 break;
2783 case M32C_OPERAND_CR2_32 :
2784 length = extract_normal (cd, ex_info, insn_value, 0, 0, 13, 3, 32, total_length, pc, & fields->f_13_3);
2785 break;
2786 case M32C_OPERAND_CR3_PREFIXED_32 :
2787 length = extract_normal (cd, ex_info, insn_value, 0, 0, 21, 3, 32, total_length, pc, & fields->f_21_3);
2788 break;
2789 case M32C_OPERAND_CR3_UNPREFIXED_32 :
2790 length = extract_normal (cd, ex_info, insn_value, 0, 0, 13, 3, 32, total_length, pc, & fields->f_13_3);
2791 break;
2792 case M32C_OPERAND_FLAGS16 :
2793 length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 3, 32, total_length, pc, & fields->f_9_3);
2794 break;
2795 case M32C_OPERAND_FLAGS32 :
2796 length = extract_normal (cd, ex_info, insn_value, 0, 0, 13, 3, 32, total_length, pc, & fields->f_13_3);
2797 break;
2798 case M32C_OPERAND_SCCOND32 :
2799 length = extract_normal (cd, ex_info, insn_value, 0, 0, 12, 4, 32, total_length, pc, & fields->f_cond16);
2800 break;
2801 case M32C_OPERAND_SIZE :
2802 break;
2804 default :
2805 /* xgettext:c-format */
2806 fprintf (stderr, _("Unrecognized field %d while decoding insn.\n"),
2807 opindex);
2808 abort ();
2811 return length;
2814 cgen_insert_fn * const m32c_cgen_insert_handlers[] =
2816 insert_insn_normal,
2819 cgen_extract_fn * const m32c_cgen_extract_handlers[] =
2821 extract_insn_normal,
2824 int m32c_cgen_get_int_operand (CGEN_CPU_DESC, int, const CGEN_FIELDS *);
2825 bfd_vma m32c_cgen_get_vma_operand (CGEN_CPU_DESC, int, const CGEN_FIELDS *);
2827 /* Getting values from cgen_fields is handled by a collection of functions.
2828 They are distinguished by the type of the VALUE argument they return.
2829 TODO: floating point, inlining support, remove cases where result type
2830 not appropriate. */
2833 m32c_cgen_get_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
2834 int opindex,
2835 const CGEN_FIELDS * fields)
2837 int value;
2839 switch (opindex)
2841 case M32C_OPERAND_A0 :
2842 value = 0;
2843 break;
2844 case M32C_OPERAND_A1 :
2845 value = 0;
2846 break;
2847 case M32C_OPERAND_AN16_PUSH_S :
2848 value = fields->f_4_1;
2849 break;
2850 case M32C_OPERAND_BIT16AN :
2851 value = fields->f_dst16_an;
2852 break;
2853 case M32C_OPERAND_BIT16RN :
2854 value = fields->f_dst16_rn;
2855 break;
2856 case M32C_OPERAND_BIT32ANPREFIXED :
2857 value = fields->f_dst32_an_prefixed;
2858 break;
2859 case M32C_OPERAND_BIT32ANUNPREFIXED :
2860 value = fields->f_dst32_an_unprefixed;
2861 break;
2862 case M32C_OPERAND_BIT32RNPREFIXED :
2863 value = fields->f_dst32_rn_prefixed_QI;
2864 break;
2865 case M32C_OPERAND_BIT32RNUNPREFIXED :
2866 value = fields->f_dst32_rn_unprefixed_QI;
2867 break;
2868 case M32C_OPERAND_BITBASE16_16_S8 :
2869 value = fields->f_dsp_16_s8;
2870 break;
2871 case M32C_OPERAND_BITBASE16_16_U16 :
2872 value = fields->f_dsp_16_u16;
2873 break;
2874 case M32C_OPERAND_BITBASE16_16_U8 :
2875 value = fields->f_dsp_16_u8;
2876 break;
2877 case M32C_OPERAND_BITBASE16_8_U11_S :
2878 value = fields->f_bitbase16_u11_S;
2879 break;
2880 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED :
2881 value = fields->f_bitbase32_16_s11_unprefixed;
2882 break;
2883 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED :
2884 value = fields->f_bitbase32_16_s19_unprefixed;
2885 break;
2886 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED :
2887 value = fields->f_bitbase32_16_u11_unprefixed;
2888 break;
2889 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED :
2890 value = fields->f_bitbase32_16_u19_unprefixed;
2891 break;
2892 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED :
2893 value = fields->f_bitbase32_16_u27_unprefixed;
2894 break;
2895 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED :
2896 value = fields->f_bitbase32_24_s11_prefixed;
2897 break;
2898 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED :
2899 value = fields->f_bitbase32_24_s19_prefixed;
2900 break;
2901 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED :
2902 value = fields->f_bitbase32_24_u11_prefixed;
2903 break;
2904 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED :
2905 value = fields->f_bitbase32_24_u19_prefixed;
2906 break;
2907 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED :
2908 value = fields->f_bitbase32_24_u27_prefixed;
2909 break;
2910 case M32C_OPERAND_BITNO16R :
2911 value = fields->f_dsp_16_u8;
2912 break;
2913 case M32C_OPERAND_BITNO32PREFIXED :
2914 value = fields->f_bitno32_prefixed;
2915 break;
2916 case M32C_OPERAND_BITNO32UNPREFIXED :
2917 value = fields->f_bitno32_unprefixed;
2918 break;
2919 case M32C_OPERAND_DSP_10_U6 :
2920 value = fields->f_dsp_10_u6;
2921 break;
2922 case M32C_OPERAND_DSP_16_S16 :
2923 value = fields->f_dsp_16_s16;
2924 break;
2925 case M32C_OPERAND_DSP_16_S8 :
2926 value = fields->f_dsp_16_s8;
2927 break;
2928 case M32C_OPERAND_DSP_16_U16 :
2929 value = fields->f_dsp_16_u16;
2930 break;
2931 case M32C_OPERAND_DSP_16_U20 :
2932 value = fields->f_dsp_16_u24;
2933 break;
2934 case M32C_OPERAND_DSP_16_U24 :
2935 value = fields->f_dsp_16_u24;
2936 break;
2937 case M32C_OPERAND_DSP_16_U8 :
2938 value = fields->f_dsp_16_u8;
2939 break;
2940 case M32C_OPERAND_DSP_24_S16 :
2941 value = fields->f_dsp_24_s16;
2942 break;
2943 case M32C_OPERAND_DSP_24_S8 :
2944 value = fields->f_dsp_24_s8;
2945 break;
2946 case M32C_OPERAND_DSP_24_U16 :
2947 value = fields->f_dsp_24_u16;
2948 break;
2949 case M32C_OPERAND_DSP_24_U20 :
2950 value = fields->f_dsp_24_u24;
2951 break;
2952 case M32C_OPERAND_DSP_24_U24 :
2953 value = fields->f_dsp_24_u24;
2954 break;
2955 case M32C_OPERAND_DSP_24_U8 :
2956 value = fields->f_dsp_24_u8;
2957 break;
2958 case M32C_OPERAND_DSP_32_S16 :
2959 value = fields->f_dsp_32_s16;
2960 break;
2961 case M32C_OPERAND_DSP_32_S8 :
2962 value = fields->f_dsp_32_s8;
2963 break;
2964 case M32C_OPERAND_DSP_32_U16 :
2965 value = fields->f_dsp_32_u16;
2966 break;
2967 case M32C_OPERAND_DSP_32_U20 :
2968 value = fields->f_dsp_32_u24;
2969 break;
2970 case M32C_OPERAND_DSP_32_U24 :
2971 value = fields->f_dsp_32_u24;
2972 break;
2973 case M32C_OPERAND_DSP_32_U8 :
2974 value = fields->f_dsp_32_u8;
2975 break;
2976 case M32C_OPERAND_DSP_40_S16 :
2977 value = fields->f_dsp_40_s16;
2978 break;
2979 case M32C_OPERAND_DSP_40_S8 :
2980 value = fields->f_dsp_40_s8;
2981 break;
2982 case M32C_OPERAND_DSP_40_U16 :
2983 value = fields->f_dsp_40_u16;
2984 break;
2985 case M32C_OPERAND_DSP_40_U24 :
2986 value = fields->f_dsp_40_u24;
2987 break;
2988 case M32C_OPERAND_DSP_40_U8 :
2989 value = fields->f_dsp_40_u8;
2990 break;
2991 case M32C_OPERAND_DSP_48_S16 :
2992 value = fields->f_dsp_48_s16;
2993 break;
2994 case M32C_OPERAND_DSP_48_S8 :
2995 value = fields->f_dsp_48_s8;
2996 break;
2997 case M32C_OPERAND_DSP_48_U16 :
2998 value = fields->f_dsp_48_u16;
2999 break;
3000 case M32C_OPERAND_DSP_48_U24 :
3001 value = fields->f_dsp_48_u24;
3002 break;
3003 case M32C_OPERAND_DSP_48_U8 :
3004 value = fields->f_dsp_48_u8;
3005 break;
3006 case M32C_OPERAND_DSP_8_S24 :
3007 value = fields->f_dsp_8_s24;
3008 break;
3009 case M32C_OPERAND_DSP_8_S8 :
3010 value = fields->f_dsp_8_s8;
3011 break;
3012 case M32C_OPERAND_DSP_8_U16 :
3013 value = fields->f_dsp_8_u16;
3014 break;
3015 case M32C_OPERAND_DSP_8_U24 :
3016 value = fields->f_dsp_8_u24;
3017 break;
3018 case M32C_OPERAND_DSP_8_U6 :
3019 value = fields->f_dsp_8_u6;
3020 break;
3021 case M32C_OPERAND_DSP_8_U8 :
3022 value = fields->f_dsp_8_u8;
3023 break;
3024 case M32C_OPERAND_DST16AN :
3025 value = fields->f_dst16_an;
3026 break;
3027 case M32C_OPERAND_DST16AN_S :
3028 value = fields->f_dst16_an_s;
3029 break;
3030 case M32C_OPERAND_DST16ANHI :
3031 value = fields->f_dst16_an;
3032 break;
3033 case M32C_OPERAND_DST16ANQI :
3034 value = fields->f_dst16_an;
3035 break;
3036 case M32C_OPERAND_DST16ANQI_S :
3037 value = fields->f_dst16_rn_QI_s;
3038 break;
3039 case M32C_OPERAND_DST16ANSI :
3040 value = fields->f_dst16_an;
3041 break;
3042 case M32C_OPERAND_DST16RNEXTQI :
3043 value = fields->f_dst16_rn_ext;
3044 break;
3045 case M32C_OPERAND_DST16RNHI :
3046 value = fields->f_dst16_rn;
3047 break;
3048 case M32C_OPERAND_DST16RNQI :
3049 value = fields->f_dst16_rn;
3050 break;
3051 case M32C_OPERAND_DST16RNQI_S :
3052 value = fields->f_dst16_rn_QI_s;
3053 break;
3054 case M32C_OPERAND_DST16RNSI :
3055 value = fields->f_dst16_rn;
3056 break;
3057 case M32C_OPERAND_DST32ANEXTUNPREFIXED :
3058 value = fields->f_dst32_an_unprefixed;
3059 break;
3060 case M32C_OPERAND_DST32ANPREFIXED :
3061 value = fields->f_dst32_an_prefixed;
3062 break;
3063 case M32C_OPERAND_DST32ANPREFIXEDHI :
3064 value = fields->f_dst32_an_prefixed;
3065 break;
3066 case M32C_OPERAND_DST32ANPREFIXEDQI :
3067 value = fields->f_dst32_an_prefixed;
3068 break;
3069 case M32C_OPERAND_DST32ANPREFIXEDSI :
3070 value = fields->f_dst32_an_prefixed;
3071 break;
3072 case M32C_OPERAND_DST32ANUNPREFIXED :
3073 value = fields->f_dst32_an_unprefixed;
3074 break;
3075 case M32C_OPERAND_DST32ANUNPREFIXEDHI :
3076 value = fields->f_dst32_an_unprefixed;
3077 break;
3078 case M32C_OPERAND_DST32ANUNPREFIXEDQI :
3079 value = fields->f_dst32_an_unprefixed;
3080 break;
3081 case M32C_OPERAND_DST32ANUNPREFIXEDSI :
3082 value = fields->f_dst32_an_unprefixed;
3083 break;
3084 case M32C_OPERAND_DST32R0HI_S :
3085 value = 0;
3086 break;
3087 case M32C_OPERAND_DST32R0QI_S :
3088 value = 0;
3089 break;
3090 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI :
3091 value = fields->f_dst32_rn_ext_unprefixed;
3092 break;
3093 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI :
3094 value = fields->f_dst32_rn_ext_unprefixed;
3095 break;
3096 case M32C_OPERAND_DST32RNPREFIXEDHI :
3097 value = fields->f_dst32_rn_prefixed_HI;
3098 break;
3099 case M32C_OPERAND_DST32RNPREFIXEDQI :
3100 value = fields->f_dst32_rn_prefixed_QI;
3101 break;
3102 case M32C_OPERAND_DST32RNPREFIXEDSI :
3103 value = fields->f_dst32_rn_prefixed_SI;
3104 break;
3105 case M32C_OPERAND_DST32RNUNPREFIXEDHI :
3106 value = fields->f_dst32_rn_unprefixed_HI;
3107 break;
3108 case M32C_OPERAND_DST32RNUNPREFIXEDQI :
3109 value = fields->f_dst32_rn_unprefixed_QI;
3110 break;
3111 case M32C_OPERAND_DST32RNUNPREFIXEDSI :
3112 value = fields->f_dst32_rn_unprefixed_SI;
3113 break;
3114 case M32C_OPERAND_G :
3115 value = 0;
3116 break;
3117 case M32C_OPERAND_IMM_12_S4 :
3118 value = fields->f_imm_12_s4;
3119 break;
3120 case M32C_OPERAND_IMM_12_S4N :
3121 value = fields->f_imm_12_s4;
3122 break;
3123 case M32C_OPERAND_IMM_13_U3 :
3124 value = fields->f_imm_13_u3;
3125 break;
3126 case M32C_OPERAND_IMM_16_HI :
3127 value = fields->f_dsp_16_s16;
3128 break;
3129 case M32C_OPERAND_IMM_16_QI :
3130 value = fields->f_dsp_16_s8;
3131 break;
3132 case M32C_OPERAND_IMM_16_SI :
3133 value = fields->f_dsp_16_s32;
3134 break;
3135 case M32C_OPERAND_IMM_20_S4 :
3136 value = fields->f_imm_20_s4;
3137 break;
3138 case M32C_OPERAND_IMM_24_HI :
3139 value = fields->f_dsp_24_s16;
3140 break;
3141 case M32C_OPERAND_IMM_24_QI :
3142 value = fields->f_dsp_24_s8;
3143 break;
3144 case M32C_OPERAND_IMM_24_SI :
3145 value = fields->f_dsp_24_s32;
3146 break;
3147 case M32C_OPERAND_IMM_32_HI :
3148 value = fields->f_dsp_32_s16;
3149 break;
3150 case M32C_OPERAND_IMM_32_QI :
3151 value = fields->f_dsp_32_s8;
3152 break;
3153 case M32C_OPERAND_IMM_32_SI :
3154 value = fields->f_dsp_32_s32;
3155 break;
3156 case M32C_OPERAND_IMM_40_HI :
3157 value = fields->f_dsp_40_s16;
3158 break;
3159 case M32C_OPERAND_IMM_40_QI :
3160 value = fields->f_dsp_40_s8;
3161 break;
3162 case M32C_OPERAND_IMM_40_SI :
3163 value = fields->f_dsp_40_s32;
3164 break;
3165 case M32C_OPERAND_IMM_48_HI :
3166 value = fields->f_dsp_48_s16;
3167 break;
3168 case M32C_OPERAND_IMM_48_QI :
3169 value = fields->f_dsp_48_s8;
3170 break;
3171 case M32C_OPERAND_IMM_48_SI :
3172 value = fields->f_dsp_48_s32;
3173 break;
3174 case M32C_OPERAND_IMM_56_HI :
3175 value = fields->f_dsp_56_s16;
3176 break;
3177 case M32C_OPERAND_IMM_56_QI :
3178 value = fields->f_dsp_56_s8;
3179 break;
3180 case M32C_OPERAND_IMM_64_HI :
3181 value = fields->f_dsp_64_s16;
3182 break;
3183 case M32C_OPERAND_IMM_8_HI :
3184 value = fields->f_dsp_8_s16;
3185 break;
3186 case M32C_OPERAND_IMM_8_QI :
3187 value = fields->f_dsp_8_s8;
3188 break;
3189 case M32C_OPERAND_IMM_8_S4 :
3190 value = fields->f_imm_8_s4;
3191 break;
3192 case M32C_OPERAND_IMM_8_S4N :
3193 value = fields->f_imm_8_s4;
3194 break;
3195 case M32C_OPERAND_IMM_SH_12_S4 :
3196 value = fields->f_imm_12_s4;
3197 break;
3198 case M32C_OPERAND_IMM_SH_20_S4 :
3199 value = fields->f_imm_20_s4;
3200 break;
3201 case M32C_OPERAND_IMM_SH_8_S4 :
3202 value = fields->f_imm_8_s4;
3203 break;
3204 case M32C_OPERAND_IMM1_S :
3205 value = fields->f_imm1_S;
3206 break;
3207 case M32C_OPERAND_IMM3_S :
3208 value = fields->f_imm3_S;
3209 break;
3210 case M32C_OPERAND_LAB_16_8 :
3211 value = fields->f_lab_16_8;
3212 break;
3213 case M32C_OPERAND_LAB_24_8 :
3214 value = fields->f_lab_24_8;
3215 break;
3216 case M32C_OPERAND_LAB_32_8 :
3217 value = fields->f_lab_32_8;
3218 break;
3219 case M32C_OPERAND_LAB_40_8 :
3220 value = fields->f_lab_40_8;
3221 break;
3222 case M32C_OPERAND_LAB_5_3 :
3223 value = fields->f_lab_5_3;
3224 break;
3225 case M32C_OPERAND_LAB_8_16 :
3226 value = fields->f_lab_8_16;
3227 break;
3228 case M32C_OPERAND_LAB_8_24 :
3229 value = fields->f_lab_8_24;
3230 break;
3231 case M32C_OPERAND_LAB_8_8 :
3232 value = fields->f_lab_8_8;
3233 break;
3234 case M32C_OPERAND_LAB32_JMP_S :
3235 value = fields->f_lab32_jmp_s;
3236 break;
3237 case M32C_OPERAND_Q :
3238 value = 0;
3239 break;
3240 case M32C_OPERAND_R0 :
3241 value = 0;
3242 break;
3243 case M32C_OPERAND_R0H :
3244 value = 0;
3245 break;
3246 case M32C_OPERAND_R0L :
3247 value = 0;
3248 break;
3249 case M32C_OPERAND_R1 :
3250 value = 0;
3251 break;
3252 case M32C_OPERAND_R1R2R0 :
3253 value = 0;
3254 break;
3255 case M32C_OPERAND_R2 :
3256 value = 0;
3257 break;
3258 case M32C_OPERAND_R2R0 :
3259 value = 0;
3260 break;
3261 case M32C_OPERAND_R3 :
3262 value = 0;
3263 break;
3264 case M32C_OPERAND_R3R1 :
3265 value = 0;
3266 break;
3267 case M32C_OPERAND_REGSETPOP :
3268 value = fields->f_8_8;
3269 break;
3270 case M32C_OPERAND_REGSETPUSH :
3271 value = fields->f_8_8;
3272 break;
3273 case M32C_OPERAND_RN16_PUSH_S :
3274 value = fields->f_4_1;
3275 break;
3276 case M32C_OPERAND_S :
3277 value = 0;
3278 break;
3279 case M32C_OPERAND_SRC16AN :
3280 value = fields->f_src16_an;
3281 break;
3282 case M32C_OPERAND_SRC16ANHI :
3283 value = fields->f_src16_an;
3284 break;
3285 case M32C_OPERAND_SRC16ANQI :
3286 value = fields->f_src16_an;
3287 break;
3288 case M32C_OPERAND_SRC16RNHI :
3289 value = fields->f_src16_rn;
3290 break;
3291 case M32C_OPERAND_SRC16RNQI :
3292 value = fields->f_src16_rn;
3293 break;
3294 case M32C_OPERAND_SRC32ANPREFIXED :
3295 value = fields->f_src32_an_prefixed;
3296 break;
3297 case M32C_OPERAND_SRC32ANPREFIXEDHI :
3298 value = fields->f_src32_an_prefixed;
3299 break;
3300 case M32C_OPERAND_SRC32ANPREFIXEDQI :
3301 value = fields->f_src32_an_prefixed;
3302 break;
3303 case M32C_OPERAND_SRC32ANPREFIXEDSI :
3304 value = fields->f_src32_an_prefixed;
3305 break;
3306 case M32C_OPERAND_SRC32ANUNPREFIXED :
3307 value = fields->f_src32_an_unprefixed;
3308 break;
3309 case M32C_OPERAND_SRC32ANUNPREFIXEDHI :
3310 value = fields->f_src32_an_unprefixed;
3311 break;
3312 case M32C_OPERAND_SRC32ANUNPREFIXEDQI :
3313 value = fields->f_src32_an_unprefixed;
3314 break;
3315 case M32C_OPERAND_SRC32ANUNPREFIXEDSI :
3316 value = fields->f_src32_an_unprefixed;
3317 break;
3318 case M32C_OPERAND_SRC32RNPREFIXEDHI :
3319 value = fields->f_src32_rn_prefixed_HI;
3320 break;
3321 case M32C_OPERAND_SRC32RNPREFIXEDQI :
3322 value = fields->f_src32_rn_prefixed_QI;
3323 break;
3324 case M32C_OPERAND_SRC32RNPREFIXEDSI :
3325 value = fields->f_src32_rn_prefixed_SI;
3326 break;
3327 case M32C_OPERAND_SRC32RNUNPREFIXEDHI :
3328 value = fields->f_src32_rn_unprefixed_HI;
3329 break;
3330 case M32C_OPERAND_SRC32RNUNPREFIXEDQI :
3331 value = fields->f_src32_rn_unprefixed_QI;
3332 break;
3333 case M32C_OPERAND_SRC32RNUNPREFIXEDSI :
3334 value = fields->f_src32_rn_unprefixed_SI;
3335 break;
3336 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL :
3337 value = fields->f_5_1;
3338 break;
3339 case M32C_OPERAND_X :
3340 value = 0;
3341 break;
3342 case M32C_OPERAND_Z :
3343 value = 0;
3344 break;
3345 case M32C_OPERAND_COND16_16 :
3346 value = fields->f_dsp_16_u8;
3347 break;
3348 case M32C_OPERAND_COND16_24 :
3349 value = fields->f_dsp_24_u8;
3350 break;
3351 case M32C_OPERAND_COND16_32 :
3352 value = fields->f_dsp_32_u8;
3353 break;
3354 case M32C_OPERAND_COND16C :
3355 value = fields->f_cond16;
3356 break;
3357 case M32C_OPERAND_COND16J :
3358 value = fields->f_cond16;
3359 break;
3360 case M32C_OPERAND_COND16J5 :
3361 value = fields->f_cond16j_5;
3362 break;
3363 case M32C_OPERAND_COND32 :
3364 value = fields->f_cond32;
3365 break;
3366 case M32C_OPERAND_COND32_16 :
3367 value = fields->f_dsp_16_u8;
3368 break;
3369 case M32C_OPERAND_COND32_24 :
3370 value = fields->f_dsp_24_u8;
3371 break;
3372 case M32C_OPERAND_COND32_32 :
3373 value = fields->f_dsp_32_u8;
3374 break;
3375 case M32C_OPERAND_COND32_40 :
3376 value = fields->f_dsp_40_u8;
3377 break;
3378 case M32C_OPERAND_COND32J :
3379 value = fields->f_cond32j;
3380 break;
3381 case M32C_OPERAND_CR1_PREFIXED_32 :
3382 value = fields->f_21_3;
3383 break;
3384 case M32C_OPERAND_CR1_UNPREFIXED_32 :
3385 value = fields->f_13_3;
3386 break;
3387 case M32C_OPERAND_CR16 :
3388 value = fields->f_9_3;
3389 break;
3390 case M32C_OPERAND_CR2_32 :
3391 value = fields->f_13_3;
3392 break;
3393 case M32C_OPERAND_CR3_PREFIXED_32 :
3394 value = fields->f_21_3;
3395 break;
3396 case M32C_OPERAND_CR3_UNPREFIXED_32 :
3397 value = fields->f_13_3;
3398 break;
3399 case M32C_OPERAND_FLAGS16 :
3400 value = fields->f_9_3;
3401 break;
3402 case M32C_OPERAND_FLAGS32 :
3403 value = fields->f_13_3;
3404 break;
3405 case M32C_OPERAND_SCCOND32 :
3406 value = fields->f_cond16;
3407 break;
3408 case M32C_OPERAND_SIZE :
3409 value = 0;
3410 break;
3412 default :
3413 /* xgettext:c-format */
3414 fprintf (stderr, _("Unrecognized field %d while getting int operand.\n"),
3415 opindex);
3416 abort ();
3419 return value;
3422 bfd_vma
3423 m32c_cgen_get_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
3424 int opindex,
3425 const CGEN_FIELDS * fields)
3427 bfd_vma value;
3429 switch (opindex)
3431 case M32C_OPERAND_A0 :
3432 value = 0;
3433 break;
3434 case M32C_OPERAND_A1 :
3435 value = 0;
3436 break;
3437 case M32C_OPERAND_AN16_PUSH_S :
3438 value = fields->f_4_1;
3439 break;
3440 case M32C_OPERAND_BIT16AN :
3441 value = fields->f_dst16_an;
3442 break;
3443 case M32C_OPERAND_BIT16RN :
3444 value = fields->f_dst16_rn;
3445 break;
3446 case M32C_OPERAND_BIT32ANPREFIXED :
3447 value = fields->f_dst32_an_prefixed;
3448 break;
3449 case M32C_OPERAND_BIT32ANUNPREFIXED :
3450 value = fields->f_dst32_an_unprefixed;
3451 break;
3452 case M32C_OPERAND_BIT32RNPREFIXED :
3453 value = fields->f_dst32_rn_prefixed_QI;
3454 break;
3455 case M32C_OPERAND_BIT32RNUNPREFIXED :
3456 value = fields->f_dst32_rn_unprefixed_QI;
3457 break;
3458 case M32C_OPERAND_BITBASE16_16_S8 :
3459 value = fields->f_dsp_16_s8;
3460 break;
3461 case M32C_OPERAND_BITBASE16_16_U16 :
3462 value = fields->f_dsp_16_u16;
3463 break;
3464 case M32C_OPERAND_BITBASE16_16_U8 :
3465 value = fields->f_dsp_16_u8;
3466 break;
3467 case M32C_OPERAND_BITBASE16_8_U11_S :
3468 value = fields->f_bitbase16_u11_S;
3469 break;
3470 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED :
3471 value = fields->f_bitbase32_16_s11_unprefixed;
3472 break;
3473 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED :
3474 value = fields->f_bitbase32_16_s19_unprefixed;
3475 break;
3476 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED :
3477 value = fields->f_bitbase32_16_u11_unprefixed;
3478 break;
3479 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED :
3480 value = fields->f_bitbase32_16_u19_unprefixed;
3481 break;
3482 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED :
3483 value = fields->f_bitbase32_16_u27_unprefixed;
3484 break;
3485 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED :
3486 value = fields->f_bitbase32_24_s11_prefixed;
3487 break;
3488 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED :
3489 value = fields->f_bitbase32_24_s19_prefixed;
3490 break;
3491 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED :
3492 value = fields->f_bitbase32_24_u11_prefixed;
3493 break;
3494 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED :
3495 value = fields->f_bitbase32_24_u19_prefixed;
3496 break;
3497 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED :
3498 value = fields->f_bitbase32_24_u27_prefixed;
3499 break;
3500 case M32C_OPERAND_BITNO16R :
3501 value = fields->f_dsp_16_u8;
3502 break;
3503 case M32C_OPERAND_BITNO32PREFIXED :
3504 value = fields->f_bitno32_prefixed;
3505 break;
3506 case M32C_OPERAND_BITNO32UNPREFIXED :
3507 value = fields->f_bitno32_unprefixed;
3508 break;
3509 case M32C_OPERAND_DSP_10_U6 :
3510 value = fields->f_dsp_10_u6;
3511 break;
3512 case M32C_OPERAND_DSP_16_S16 :
3513 value = fields->f_dsp_16_s16;
3514 break;
3515 case M32C_OPERAND_DSP_16_S8 :
3516 value = fields->f_dsp_16_s8;
3517 break;
3518 case M32C_OPERAND_DSP_16_U16 :
3519 value = fields->f_dsp_16_u16;
3520 break;
3521 case M32C_OPERAND_DSP_16_U20 :
3522 value = fields->f_dsp_16_u24;
3523 break;
3524 case M32C_OPERAND_DSP_16_U24 :
3525 value = fields->f_dsp_16_u24;
3526 break;
3527 case M32C_OPERAND_DSP_16_U8 :
3528 value = fields->f_dsp_16_u8;
3529 break;
3530 case M32C_OPERAND_DSP_24_S16 :
3531 value = fields->f_dsp_24_s16;
3532 break;
3533 case M32C_OPERAND_DSP_24_S8 :
3534 value = fields->f_dsp_24_s8;
3535 break;
3536 case M32C_OPERAND_DSP_24_U16 :
3537 value = fields->f_dsp_24_u16;
3538 break;
3539 case M32C_OPERAND_DSP_24_U20 :
3540 value = fields->f_dsp_24_u24;
3541 break;
3542 case M32C_OPERAND_DSP_24_U24 :
3543 value = fields->f_dsp_24_u24;
3544 break;
3545 case M32C_OPERAND_DSP_24_U8 :
3546 value = fields->f_dsp_24_u8;
3547 break;
3548 case M32C_OPERAND_DSP_32_S16 :
3549 value = fields->f_dsp_32_s16;
3550 break;
3551 case M32C_OPERAND_DSP_32_S8 :
3552 value = fields->f_dsp_32_s8;
3553 break;
3554 case M32C_OPERAND_DSP_32_U16 :
3555 value = fields->f_dsp_32_u16;
3556 break;
3557 case M32C_OPERAND_DSP_32_U20 :
3558 value = fields->f_dsp_32_u24;
3559 break;
3560 case M32C_OPERAND_DSP_32_U24 :
3561 value = fields->f_dsp_32_u24;
3562 break;
3563 case M32C_OPERAND_DSP_32_U8 :
3564 value = fields->f_dsp_32_u8;
3565 break;
3566 case M32C_OPERAND_DSP_40_S16 :
3567 value = fields->f_dsp_40_s16;
3568 break;
3569 case M32C_OPERAND_DSP_40_S8 :
3570 value = fields->f_dsp_40_s8;
3571 break;
3572 case M32C_OPERAND_DSP_40_U16 :
3573 value = fields->f_dsp_40_u16;
3574 break;
3575 case M32C_OPERAND_DSP_40_U24 :
3576 value = fields->f_dsp_40_u24;
3577 break;
3578 case M32C_OPERAND_DSP_40_U8 :
3579 value = fields->f_dsp_40_u8;
3580 break;
3581 case M32C_OPERAND_DSP_48_S16 :
3582 value = fields->f_dsp_48_s16;
3583 break;
3584 case M32C_OPERAND_DSP_48_S8 :
3585 value = fields->f_dsp_48_s8;
3586 break;
3587 case M32C_OPERAND_DSP_48_U16 :
3588 value = fields->f_dsp_48_u16;
3589 break;
3590 case M32C_OPERAND_DSP_48_U24 :
3591 value = fields->f_dsp_48_u24;
3592 break;
3593 case M32C_OPERAND_DSP_48_U8 :
3594 value = fields->f_dsp_48_u8;
3595 break;
3596 case M32C_OPERAND_DSP_8_S24 :
3597 value = fields->f_dsp_8_s24;
3598 break;
3599 case M32C_OPERAND_DSP_8_S8 :
3600 value = fields->f_dsp_8_s8;
3601 break;
3602 case M32C_OPERAND_DSP_8_U16 :
3603 value = fields->f_dsp_8_u16;
3604 break;
3605 case M32C_OPERAND_DSP_8_U24 :
3606 value = fields->f_dsp_8_u24;
3607 break;
3608 case M32C_OPERAND_DSP_8_U6 :
3609 value = fields->f_dsp_8_u6;
3610 break;
3611 case M32C_OPERAND_DSP_8_U8 :
3612 value = fields->f_dsp_8_u8;
3613 break;
3614 case M32C_OPERAND_DST16AN :
3615 value = fields->f_dst16_an;
3616 break;
3617 case M32C_OPERAND_DST16AN_S :
3618 value = fields->f_dst16_an_s;
3619 break;
3620 case M32C_OPERAND_DST16ANHI :
3621 value = fields->f_dst16_an;
3622 break;
3623 case M32C_OPERAND_DST16ANQI :
3624 value = fields->f_dst16_an;
3625 break;
3626 case M32C_OPERAND_DST16ANQI_S :
3627 value = fields->f_dst16_rn_QI_s;
3628 break;
3629 case M32C_OPERAND_DST16ANSI :
3630 value = fields->f_dst16_an;
3631 break;
3632 case M32C_OPERAND_DST16RNEXTQI :
3633 value = fields->f_dst16_rn_ext;
3634 break;
3635 case M32C_OPERAND_DST16RNHI :
3636 value = fields->f_dst16_rn;
3637 break;
3638 case M32C_OPERAND_DST16RNQI :
3639 value = fields->f_dst16_rn;
3640 break;
3641 case M32C_OPERAND_DST16RNQI_S :
3642 value = fields->f_dst16_rn_QI_s;
3643 break;
3644 case M32C_OPERAND_DST16RNSI :
3645 value = fields->f_dst16_rn;
3646 break;
3647 case M32C_OPERAND_DST32ANEXTUNPREFIXED :
3648 value = fields->f_dst32_an_unprefixed;
3649 break;
3650 case M32C_OPERAND_DST32ANPREFIXED :
3651 value = fields->f_dst32_an_prefixed;
3652 break;
3653 case M32C_OPERAND_DST32ANPREFIXEDHI :
3654 value = fields->f_dst32_an_prefixed;
3655 break;
3656 case M32C_OPERAND_DST32ANPREFIXEDQI :
3657 value = fields->f_dst32_an_prefixed;
3658 break;
3659 case M32C_OPERAND_DST32ANPREFIXEDSI :
3660 value = fields->f_dst32_an_prefixed;
3661 break;
3662 case M32C_OPERAND_DST32ANUNPREFIXED :
3663 value = fields->f_dst32_an_unprefixed;
3664 break;
3665 case M32C_OPERAND_DST32ANUNPREFIXEDHI :
3666 value = fields->f_dst32_an_unprefixed;
3667 break;
3668 case M32C_OPERAND_DST32ANUNPREFIXEDQI :
3669 value = fields->f_dst32_an_unprefixed;
3670 break;
3671 case M32C_OPERAND_DST32ANUNPREFIXEDSI :
3672 value = fields->f_dst32_an_unprefixed;
3673 break;
3674 case M32C_OPERAND_DST32R0HI_S :
3675 value = 0;
3676 break;
3677 case M32C_OPERAND_DST32R0QI_S :
3678 value = 0;
3679 break;
3680 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI :
3681 value = fields->f_dst32_rn_ext_unprefixed;
3682 break;
3683 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI :
3684 value = fields->f_dst32_rn_ext_unprefixed;
3685 break;
3686 case M32C_OPERAND_DST32RNPREFIXEDHI :
3687 value = fields->f_dst32_rn_prefixed_HI;
3688 break;
3689 case M32C_OPERAND_DST32RNPREFIXEDQI :
3690 value = fields->f_dst32_rn_prefixed_QI;
3691 break;
3692 case M32C_OPERAND_DST32RNPREFIXEDSI :
3693 value = fields->f_dst32_rn_prefixed_SI;
3694 break;
3695 case M32C_OPERAND_DST32RNUNPREFIXEDHI :
3696 value = fields->f_dst32_rn_unprefixed_HI;
3697 break;
3698 case M32C_OPERAND_DST32RNUNPREFIXEDQI :
3699 value = fields->f_dst32_rn_unprefixed_QI;
3700 break;
3701 case M32C_OPERAND_DST32RNUNPREFIXEDSI :
3702 value = fields->f_dst32_rn_unprefixed_SI;
3703 break;
3704 case M32C_OPERAND_G :
3705 value = 0;
3706 break;
3707 case M32C_OPERAND_IMM_12_S4 :
3708 value = fields->f_imm_12_s4;
3709 break;
3710 case M32C_OPERAND_IMM_12_S4N :
3711 value = fields->f_imm_12_s4;
3712 break;
3713 case M32C_OPERAND_IMM_13_U3 :
3714 value = fields->f_imm_13_u3;
3715 break;
3716 case M32C_OPERAND_IMM_16_HI :
3717 value = fields->f_dsp_16_s16;
3718 break;
3719 case M32C_OPERAND_IMM_16_QI :
3720 value = fields->f_dsp_16_s8;
3721 break;
3722 case M32C_OPERAND_IMM_16_SI :
3723 value = fields->f_dsp_16_s32;
3724 break;
3725 case M32C_OPERAND_IMM_20_S4 :
3726 value = fields->f_imm_20_s4;
3727 break;
3728 case M32C_OPERAND_IMM_24_HI :
3729 value = fields->f_dsp_24_s16;
3730 break;
3731 case M32C_OPERAND_IMM_24_QI :
3732 value = fields->f_dsp_24_s8;
3733 break;
3734 case M32C_OPERAND_IMM_24_SI :
3735 value = fields->f_dsp_24_s32;
3736 break;
3737 case M32C_OPERAND_IMM_32_HI :
3738 value = fields->f_dsp_32_s16;
3739 break;
3740 case M32C_OPERAND_IMM_32_QI :
3741 value = fields->f_dsp_32_s8;
3742 break;
3743 case M32C_OPERAND_IMM_32_SI :
3744 value = fields->f_dsp_32_s32;
3745 break;
3746 case M32C_OPERAND_IMM_40_HI :
3747 value = fields->f_dsp_40_s16;
3748 break;
3749 case M32C_OPERAND_IMM_40_QI :
3750 value = fields->f_dsp_40_s8;
3751 break;
3752 case M32C_OPERAND_IMM_40_SI :
3753 value = fields->f_dsp_40_s32;
3754 break;
3755 case M32C_OPERAND_IMM_48_HI :
3756 value = fields->f_dsp_48_s16;
3757 break;
3758 case M32C_OPERAND_IMM_48_QI :
3759 value = fields->f_dsp_48_s8;
3760 break;
3761 case M32C_OPERAND_IMM_48_SI :
3762 value = fields->f_dsp_48_s32;
3763 break;
3764 case M32C_OPERAND_IMM_56_HI :
3765 value = fields->f_dsp_56_s16;
3766 break;
3767 case M32C_OPERAND_IMM_56_QI :
3768 value = fields->f_dsp_56_s8;
3769 break;
3770 case M32C_OPERAND_IMM_64_HI :
3771 value = fields->f_dsp_64_s16;
3772 break;
3773 case M32C_OPERAND_IMM_8_HI :
3774 value = fields->f_dsp_8_s16;
3775 break;
3776 case M32C_OPERAND_IMM_8_QI :
3777 value = fields->f_dsp_8_s8;
3778 break;
3779 case M32C_OPERAND_IMM_8_S4 :
3780 value = fields->f_imm_8_s4;
3781 break;
3782 case M32C_OPERAND_IMM_8_S4N :
3783 value = fields->f_imm_8_s4;
3784 break;
3785 case M32C_OPERAND_IMM_SH_12_S4 :
3786 value = fields->f_imm_12_s4;
3787 break;
3788 case M32C_OPERAND_IMM_SH_20_S4 :
3789 value = fields->f_imm_20_s4;
3790 break;
3791 case M32C_OPERAND_IMM_SH_8_S4 :
3792 value = fields->f_imm_8_s4;
3793 break;
3794 case M32C_OPERAND_IMM1_S :
3795 value = fields->f_imm1_S;
3796 break;
3797 case M32C_OPERAND_IMM3_S :
3798 value = fields->f_imm3_S;
3799 break;
3800 case M32C_OPERAND_LAB_16_8 :
3801 value = fields->f_lab_16_8;
3802 break;
3803 case M32C_OPERAND_LAB_24_8 :
3804 value = fields->f_lab_24_8;
3805 break;
3806 case M32C_OPERAND_LAB_32_8 :
3807 value = fields->f_lab_32_8;
3808 break;
3809 case M32C_OPERAND_LAB_40_8 :
3810 value = fields->f_lab_40_8;
3811 break;
3812 case M32C_OPERAND_LAB_5_3 :
3813 value = fields->f_lab_5_3;
3814 break;
3815 case M32C_OPERAND_LAB_8_16 :
3816 value = fields->f_lab_8_16;
3817 break;
3818 case M32C_OPERAND_LAB_8_24 :
3819 value = fields->f_lab_8_24;
3820 break;
3821 case M32C_OPERAND_LAB_8_8 :
3822 value = fields->f_lab_8_8;
3823 break;
3824 case M32C_OPERAND_LAB32_JMP_S :
3825 value = fields->f_lab32_jmp_s;
3826 break;
3827 case M32C_OPERAND_Q :
3828 value = 0;
3829 break;
3830 case M32C_OPERAND_R0 :
3831 value = 0;
3832 break;
3833 case M32C_OPERAND_R0H :
3834 value = 0;
3835 break;
3836 case M32C_OPERAND_R0L :
3837 value = 0;
3838 break;
3839 case M32C_OPERAND_R1 :
3840 value = 0;
3841 break;
3842 case M32C_OPERAND_R1R2R0 :
3843 value = 0;
3844 break;
3845 case M32C_OPERAND_R2 :
3846 value = 0;
3847 break;
3848 case M32C_OPERAND_R2R0 :
3849 value = 0;
3850 break;
3851 case M32C_OPERAND_R3 :
3852 value = 0;
3853 break;
3854 case M32C_OPERAND_R3R1 :
3855 value = 0;
3856 break;
3857 case M32C_OPERAND_REGSETPOP :
3858 value = fields->f_8_8;
3859 break;
3860 case M32C_OPERAND_REGSETPUSH :
3861 value = fields->f_8_8;
3862 break;
3863 case M32C_OPERAND_RN16_PUSH_S :
3864 value = fields->f_4_1;
3865 break;
3866 case M32C_OPERAND_S :
3867 value = 0;
3868 break;
3869 case M32C_OPERAND_SRC16AN :
3870 value = fields->f_src16_an;
3871 break;
3872 case M32C_OPERAND_SRC16ANHI :
3873 value = fields->f_src16_an;
3874 break;
3875 case M32C_OPERAND_SRC16ANQI :
3876 value = fields->f_src16_an;
3877 break;
3878 case M32C_OPERAND_SRC16RNHI :
3879 value = fields->f_src16_rn;
3880 break;
3881 case M32C_OPERAND_SRC16RNQI :
3882 value = fields->f_src16_rn;
3883 break;
3884 case M32C_OPERAND_SRC32ANPREFIXED :
3885 value = fields->f_src32_an_prefixed;
3886 break;
3887 case M32C_OPERAND_SRC32ANPREFIXEDHI :
3888 value = fields->f_src32_an_prefixed;
3889 break;
3890 case M32C_OPERAND_SRC32ANPREFIXEDQI :
3891 value = fields->f_src32_an_prefixed;
3892 break;
3893 case M32C_OPERAND_SRC32ANPREFIXEDSI :
3894 value = fields->f_src32_an_prefixed;
3895 break;
3896 case M32C_OPERAND_SRC32ANUNPREFIXED :
3897 value = fields->f_src32_an_unprefixed;
3898 break;
3899 case M32C_OPERAND_SRC32ANUNPREFIXEDHI :
3900 value = fields->f_src32_an_unprefixed;
3901 break;
3902 case M32C_OPERAND_SRC32ANUNPREFIXEDQI :
3903 value = fields->f_src32_an_unprefixed;
3904 break;
3905 case M32C_OPERAND_SRC32ANUNPREFIXEDSI :
3906 value = fields->f_src32_an_unprefixed;
3907 break;
3908 case M32C_OPERAND_SRC32RNPREFIXEDHI :
3909 value = fields->f_src32_rn_prefixed_HI;
3910 break;
3911 case M32C_OPERAND_SRC32RNPREFIXEDQI :
3912 value = fields->f_src32_rn_prefixed_QI;
3913 break;
3914 case M32C_OPERAND_SRC32RNPREFIXEDSI :
3915 value = fields->f_src32_rn_prefixed_SI;
3916 break;
3917 case M32C_OPERAND_SRC32RNUNPREFIXEDHI :
3918 value = fields->f_src32_rn_unprefixed_HI;
3919 break;
3920 case M32C_OPERAND_SRC32RNUNPREFIXEDQI :
3921 value = fields->f_src32_rn_unprefixed_QI;
3922 break;
3923 case M32C_OPERAND_SRC32RNUNPREFIXEDSI :
3924 value = fields->f_src32_rn_unprefixed_SI;
3925 break;
3926 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL :
3927 value = fields->f_5_1;
3928 break;
3929 case M32C_OPERAND_X :
3930 value = 0;
3931 break;
3932 case M32C_OPERAND_Z :
3933 value = 0;
3934 break;
3935 case M32C_OPERAND_COND16_16 :
3936 value = fields->f_dsp_16_u8;
3937 break;
3938 case M32C_OPERAND_COND16_24 :
3939 value = fields->f_dsp_24_u8;
3940 break;
3941 case M32C_OPERAND_COND16_32 :
3942 value = fields->f_dsp_32_u8;
3943 break;
3944 case M32C_OPERAND_COND16C :
3945 value = fields->f_cond16;
3946 break;
3947 case M32C_OPERAND_COND16J :
3948 value = fields->f_cond16;
3949 break;
3950 case M32C_OPERAND_COND16J5 :
3951 value = fields->f_cond16j_5;
3952 break;
3953 case M32C_OPERAND_COND32 :
3954 value = fields->f_cond32;
3955 break;
3956 case M32C_OPERAND_COND32_16 :
3957 value = fields->f_dsp_16_u8;
3958 break;
3959 case M32C_OPERAND_COND32_24 :
3960 value = fields->f_dsp_24_u8;
3961 break;
3962 case M32C_OPERAND_COND32_32 :
3963 value = fields->f_dsp_32_u8;
3964 break;
3965 case M32C_OPERAND_COND32_40 :
3966 value = fields->f_dsp_40_u8;
3967 break;
3968 case M32C_OPERAND_COND32J :
3969 value = fields->f_cond32j;
3970 break;
3971 case M32C_OPERAND_CR1_PREFIXED_32 :
3972 value = fields->f_21_3;
3973 break;
3974 case M32C_OPERAND_CR1_UNPREFIXED_32 :
3975 value = fields->f_13_3;
3976 break;
3977 case M32C_OPERAND_CR16 :
3978 value = fields->f_9_3;
3979 break;
3980 case M32C_OPERAND_CR2_32 :
3981 value = fields->f_13_3;
3982 break;
3983 case M32C_OPERAND_CR3_PREFIXED_32 :
3984 value = fields->f_21_3;
3985 break;
3986 case M32C_OPERAND_CR3_UNPREFIXED_32 :
3987 value = fields->f_13_3;
3988 break;
3989 case M32C_OPERAND_FLAGS16 :
3990 value = fields->f_9_3;
3991 break;
3992 case M32C_OPERAND_FLAGS32 :
3993 value = fields->f_13_3;
3994 break;
3995 case M32C_OPERAND_SCCOND32 :
3996 value = fields->f_cond16;
3997 break;
3998 case M32C_OPERAND_SIZE :
3999 value = 0;
4000 break;
4002 default :
4003 /* xgettext:c-format */
4004 fprintf (stderr, _("Unrecognized field %d while getting vma operand.\n"),
4005 opindex);
4006 abort ();
4009 return value;
4012 void m32c_cgen_set_int_operand (CGEN_CPU_DESC, int, CGEN_FIELDS *, int);
4013 void m32c_cgen_set_vma_operand (CGEN_CPU_DESC, int, CGEN_FIELDS *, bfd_vma);
4015 /* Stuffing values in cgen_fields is handled by a collection of functions.
4016 They are distinguished by the type of the VALUE argument they accept.
4017 TODO: floating point, inlining support, remove cases where argument type
4018 not appropriate. */
4020 void
4021 m32c_cgen_set_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
4022 int opindex,
4023 CGEN_FIELDS * fields,
4024 int value)
4026 switch (opindex)
4028 case M32C_OPERAND_A0 :
4029 break;
4030 case M32C_OPERAND_A1 :
4031 break;
4032 case M32C_OPERAND_AN16_PUSH_S :
4033 fields->f_4_1 = value;
4034 break;
4035 case M32C_OPERAND_BIT16AN :
4036 fields->f_dst16_an = value;
4037 break;
4038 case M32C_OPERAND_BIT16RN :
4039 fields->f_dst16_rn = value;
4040 break;
4041 case M32C_OPERAND_BIT32ANPREFIXED :
4042 fields->f_dst32_an_prefixed = value;
4043 break;
4044 case M32C_OPERAND_BIT32ANUNPREFIXED :
4045 fields->f_dst32_an_unprefixed = value;
4046 break;
4047 case M32C_OPERAND_BIT32RNPREFIXED :
4048 fields->f_dst32_rn_prefixed_QI = value;
4049 break;
4050 case M32C_OPERAND_BIT32RNUNPREFIXED :
4051 fields->f_dst32_rn_unprefixed_QI = value;
4052 break;
4053 case M32C_OPERAND_BITBASE16_16_S8 :
4054 fields->f_dsp_16_s8 = value;
4055 break;
4056 case M32C_OPERAND_BITBASE16_16_U16 :
4057 fields->f_dsp_16_u16 = value;
4058 break;
4059 case M32C_OPERAND_BITBASE16_16_U8 :
4060 fields->f_dsp_16_u8 = value;
4061 break;
4062 case M32C_OPERAND_BITBASE16_8_U11_S :
4063 fields->f_bitbase16_u11_S = value;
4064 break;
4065 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED :
4066 fields->f_bitbase32_16_s11_unprefixed = value;
4067 break;
4068 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED :
4069 fields->f_bitbase32_16_s19_unprefixed = value;
4070 break;
4071 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED :
4072 fields->f_bitbase32_16_u11_unprefixed = value;
4073 break;
4074 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED :
4075 fields->f_bitbase32_16_u19_unprefixed = value;
4076 break;
4077 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED :
4078 fields->f_bitbase32_16_u27_unprefixed = value;
4079 break;
4080 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED :
4081 fields->f_bitbase32_24_s11_prefixed = value;
4082 break;
4083 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED :
4084 fields->f_bitbase32_24_s19_prefixed = value;
4085 break;
4086 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED :
4087 fields->f_bitbase32_24_u11_prefixed = value;
4088 break;
4089 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED :
4090 fields->f_bitbase32_24_u19_prefixed = value;
4091 break;
4092 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED :
4093 fields->f_bitbase32_24_u27_prefixed = value;
4094 break;
4095 case M32C_OPERAND_BITNO16R :
4096 fields->f_dsp_16_u8 = value;
4097 break;
4098 case M32C_OPERAND_BITNO32PREFIXED :
4099 fields->f_bitno32_prefixed = value;
4100 break;
4101 case M32C_OPERAND_BITNO32UNPREFIXED :
4102 fields->f_bitno32_unprefixed = value;
4103 break;
4104 case M32C_OPERAND_DSP_10_U6 :
4105 fields->f_dsp_10_u6 = value;
4106 break;
4107 case M32C_OPERAND_DSP_16_S16 :
4108 fields->f_dsp_16_s16 = value;
4109 break;
4110 case M32C_OPERAND_DSP_16_S8 :
4111 fields->f_dsp_16_s8 = value;
4112 break;
4113 case M32C_OPERAND_DSP_16_U16 :
4114 fields->f_dsp_16_u16 = value;
4115 break;
4116 case M32C_OPERAND_DSP_16_U20 :
4117 fields->f_dsp_16_u24 = value;
4118 break;
4119 case M32C_OPERAND_DSP_16_U24 :
4120 fields->f_dsp_16_u24 = value;
4121 break;
4122 case M32C_OPERAND_DSP_16_U8 :
4123 fields->f_dsp_16_u8 = value;
4124 break;
4125 case M32C_OPERAND_DSP_24_S16 :
4126 fields->f_dsp_24_s16 = value;
4127 break;
4128 case M32C_OPERAND_DSP_24_S8 :
4129 fields->f_dsp_24_s8 = value;
4130 break;
4131 case M32C_OPERAND_DSP_24_U16 :
4132 fields->f_dsp_24_u16 = value;
4133 break;
4134 case M32C_OPERAND_DSP_24_U20 :
4135 fields->f_dsp_24_u24 = value;
4136 break;
4137 case M32C_OPERAND_DSP_24_U24 :
4138 fields->f_dsp_24_u24 = value;
4139 break;
4140 case M32C_OPERAND_DSP_24_U8 :
4141 fields->f_dsp_24_u8 = value;
4142 break;
4143 case M32C_OPERAND_DSP_32_S16 :
4144 fields->f_dsp_32_s16 = value;
4145 break;
4146 case M32C_OPERAND_DSP_32_S8 :
4147 fields->f_dsp_32_s8 = value;
4148 break;
4149 case M32C_OPERAND_DSP_32_U16 :
4150 fields->f_dsp_32_u16 = value;
4151 break;
4152 case M32C_OPERAND_DSP_32_U20 :
4153 fields->f_dsp_32_u24 = value;
4154 break;
4155 case M32C_OPERAND_DSP_32_U24 :
4156 fields->f_dsp_32_u24 = value;
4157 break;
4158 case M32C_OPERAND_DSP_32_U8 :
4159 fields->f_dsp_32_u8 = value;
4160 break;
4161 case M32C_OPERAND_DSP_40_S16 :
4162 fields->f_dsp_40_s16 = value;
4163 break;
4164 case M32C_OPERAND_DSP_40_S8 :
4165 fields->f_dsp_40_s8 = value;
4166 break;
4167 case M32C_OPERAND_DSP_40_U16 :
4168 fields->f_dsp_40_u16 = value;
4169 break;
4170 case M32C_OPERAND_DSP_40_U24 :
4171 fields->f_dsp_40_u24 = value;
4172 break;
4173 case M32C_OPERAND_DSP_40_U8 :
4174 fields->f_dsp_40_u8 = value;
4175 break;
4176 case M32C_OPERAND_DSP_48_S16 :
4177 fields->f_dsp_48_s16 = value;
4178 break;
4179 case M32C_OPERAND_DSP_48_S8 :
4180 fields->f_dsp_48_s8 = value;
4181 break;
4182 case M32C_OPERAND_DSP_48_U16 :
4183 fields->f_dsp_48_u16 = value;
4184 break;
4185 case M32C_OPERAND_DSP_48_U24 :
4186 fields->f_dsp_48_u24 = value;
4187 break;
4188 case M32C_OPERAND_DSP_48_U8 :
4189 fields->f_dsp_48_u8 = value;
4190 break;
4191 case M32C_OPERAND_DSP_8_S24 :
4192 fields->f_dsp_8_s24 = value;
4193 break;
4194 case M32C_OPERAND_DSP_8_S8 :
4195 fields->f_dsp_8_s8 = value;
4196 break;
4197 case M32C_OPERAND_DSP_8_U16 :
4198 fields->f_dsp_8_u16 = value;
4199 break;
4200 case M32C_OPERAND_DSP_8_U24 :
4201 fields->f_dsp_8_u24 = value;
4202 break;
4203 case M32C_OPERAND_DSP_8_U6 :
4204 fields->f_dsp_8_u6 = value;
4205 break;
4206 case M32C_OPERAND_DSP_8_U8 :
4207 fields->f_dsp_8_u8 = value;
4208 break;
4209 case M32C_OPERAND_DST16AN :
4210 fields->f_dst16_an = value;
4211 break;
4212 case M32C_OPERAND_DST16AN_S :
4213 fields->f_dst16_an_s = value;
4214 break;
4215 case M32C_OPERAND_DST16ANHI :
4216 fields->f_dst16_an = value;
4217 break;
4218 case M32C_OPERAND_DST16ANQI :
4219 fields->f_dst16_an = value;
4220 break;
4221 case M32C_OPERAND_DST16ANQI_S :
4222 fields->f_dst16_rn_QI_s = value;
4223 break;
4224 case M32C_OPERAND_DST16ANSI :
4225 fields->f_dst16_an = value;
4226 break;
4227 case M32C_OPERAND_DST16RNEXTQI :
4228 fields->f_dst16_rn_ext = value;
4229 break;
4230 case M32C_OPERAND_DST16RNHI :
4231 fields->f_dst16_rn = value;
4232 break;
4233 case M32C_OPERAND_DST16RNQI :
4234 fields->f_dst16_rn = value;
4235 break;
4236 case M32C_OPERAND_DST16RNQI_S :
4237 fields->f_dst16_rn_QI_s = value;
4238 break;
4239 case M32C_OPERAND_DST16RNSI :
4240 fields->f_dst16_rn = value;
4241 break;
4242 case M32C_OPERAND_DST32ANEXTUNPREFIXED :
4243 fields->f_dst32_an_unprefixed = value;
4244 break;
4245 case M32C_OPERAND_DST32ANPREFIXED :
4246 fields->f_dst32_an_prefixed = value;
4247 break;
4248 case M32C_OPERAND_DST32ANPREFIXEDHI :
4249 fields->f_dst32_an_prefixed = value;
4250 break;
4251 case M32C_OPERAND_DST32ANPREFIXEDQI :
4252 fields->f_dst32_an_prefixed = value;
4253 break;
4254 case M32C_OPERAND_DST32ANPREFIXEDSI :
4255 fields->f_dst32_an_prefixed = value;
4256 break;
4257 case M32C_OPERAND_DST32ANUNPREFIXED :
4258 fields->f_dst32_an_unprefixed = value;
4259 break;
4260 case M32C_OPERAND_DST32ANUNPREFIXEDHI :
4261 fields->f_dst32_an_unprefixed = value;
4262 break;
4263 case M32C_OPERAND_DST32ANUNPREFIXEDQI :
4264 fields->f_dst32_an_unprefixed = value;
4265 break;
4266 case M32C_OPERAND_DST32ANUNPREFIXEDSI :
4267 fields->f_dst32_an_unprefixed = value;
4268 break;
4269 case M32C_OPERAND_DST32R0HI_S :
4270 break;
4271 case M32C_OPERAND_DST32R0QI_S :
4272 break;
4273 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI :
4274 fields->f_dst32_rn_ext_unprefixed = value;
4275 break;
4276 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI :
4277 fields->f_dst32_rn_ext_unprefixed = value;
4278 break;
4279 case M32C_OPERAND_DST32RNPREFIXEDHI :
4280 fields->f_dst32_rn_prefixed_HI = value;
4281 break;
4282 case M32C_OPERAND_DST32RNPREFIXEDQI :
4283 fields->f_dst32_rn_prefixed_QI = value;
4284 break;
4285 case M32C_OPERAND_DST32RNPREFIXEDSI :
4286 fields->f_dst32_rn_prefixed_SI = value;
4287 break;
4288 case M32C_OPERAND_DST32RNUNPREFIXEDHI :
4289 fields->f_dst32_rn_unprefixed_HI = value;
4290 break;
4291 case M32C_OPERAND_DST32RNUNPREFIXEDQI :
4292 fields->f_dst32_rn_unprefixed_QI = value;
4293 break;
4294 case M32C_OPERAND_DST32RNUNPREFIXEDSI :
4295 fields->f_dst32_rn_unprefixed_SI = value;
4296 break;
4297 case M32C_OPERAND_G :
4298 break;
4299 case M32C_OPERAND_IMM_12_S4 :
4300 fields->f_imm_12_s4 = value;
4301 break;
4302 case M32C_OPERAND_IMM_12_S4N :
4303 fields->f_imm_12_s4 = value;
4304 break;
4305 case M32C_OPERAND_IMM_13_U3 :
4306 fields->f_imm_13_u3 = value;
4307 break;
4308 case M32C_OPERAND_IMM_16_HI :
4309 fields->f_dsp_16_s16 = value;
4310 break;
4311 case M32C_OPERAND_IMM_16_QI :
4312 fields->f_dsp_16_s8 = value;
4313 break;
4314 case M32C_OPERAND_IMM_16_SI :
4315 fields->f_dsp_16_s32 = value;
4316 break;
4317 case M32C_OPERAND_IMM_20_S4 :
4318 fields->f_imm_20_s4 = value;
4319 break;
4320 case M32C_OPERAND_IMM_24_HI :
4321 fields->f_dsp_24_s16 = value;
4322 break;
4323 case M32C_OPERAND_IMM_24_QI :
4324 fields->f_dsp_24_s8 = value;
4325 break;
4326 case M32C_OPERAND_IMM_24_SI :
4327 fields->f_dsp_24_s32 = value;
4328 break;
4329 case M32C_OPERAND_IMM_32_HI :
4330 fields->f_dsp_32_s16 = value;
4331 break;
4332 case M32C_OPERAND_IMM_32_QI :
4333 fields->f_dsp_32_s8 = value;
4334 break;
4335 case M32C_OPERAND_IMM_32_SI :
4336 fields->f_dsp_32_s32 = value;
4337 break;
4338 case M32C_OPERAND_IMM_40_HI :
4339 fields->f_dsp_40_s16 = value;
4340 break;
4341 case M32C_OPERAND_IMM_40_QI :
4342 fields->f_dsp_40_s8 = value;
4343 break;
4344 case M32C_OPERAND_IMM_40_SI :
4345 fields->f_dsp_40_s32 = value;
4346 break;
4347 case M32C_OPERAND_IMM_48_HI :
4348 fields->f_dsp_48_s16 = value;
4349 break;
4350 case M32C_OPERAND_IMM_48_QI :
4351 fields->f_dsp_48_s8 = value;
4352 break;
4353 case M32C_OPERAND_IMM_48_SI :
4354 fields->f_dsp_48_s32 = value;
4355 break;
4356 case M32C_OPERAND_IMM_56_HI :
4357 fields->f_dsp_56_s16 = value;
4358 break;
4359 case M32C_OPERAND_IMM_56_QI :
4360 fields->f_dsp_56_s8 = value;
4361 break;
4362 case M32C_OPERAND_IMM_64_HI :
4363 fields->f_dsp_64_s16 = value;
4364 break;
4365 case M32C_OPERAND_IMM_8_HI :
4366 fields->f_dsp_8_s16 = value;
4367 break;
4368 case M32C_OPERAND_IMM_8_QI :
4369 fields->f_dsp_8_s8 = value;
4370 break;
4371 case M32C_OPERAND_IMM_8_S4 :
4372 fields->f_imm_8_s4 = value;
4373 break;
4374 case M32C_OPERAND_IMM_8_S4N :
4375 fields->f_imm_8_s4 = value;
4376 break;
4377 case M32C_OPERAND_IMM_SH_12_S4 :
4378 fields->f_imm_12_s4 = value;
4379 break;
4380 case M32C_OPERAND_IMM_SH_20_S4 :
4381 fields->f_imm_20_s4 = value;
4382 break;
4383 case M32C_OPERAND_IMM_SH_8_S4 :
4384 fields->f_imm_8_s4 = value;
4385 break;
4386 case M32C_OPERAND_IMM1_S :
4387 fields->f_imm1_S = value;
4388 break;
4389 case M32C_OPERAND_IMM3_S :
4390 fields->f_imm3_S = value;
4391 break;
4392 case M32C_OPERAND_LAB_16_8 :
4393 fields->f_lab_16_8 = value;
4394 break;
4395 case M32C_OPERAND_LAB_24_8 :
4396 fields->f_lab_24_8 = value;
4397 break;
4398 case M32C_OPERAND_LAB_32_8 :
4399 fields->f_lab_32_8 = value;
4400 break;
4401 case M32C_OPERAND_LAB_40_8 :
4402 fields->f_lab_40_8 = value;
4403 break;
4404 case M32C_OPERAND_LAB_5_3 :
4405 fields->f_lab_5_3 = value;
4406 break;
4407 case M32C_OPERAND_LAB_8_16 :
4408 fields->f_lab_8_16 = value;
4409 break;
4410 case M32C_OPERAND_LAB_8_24 :
4411 fields->f_lab_8_24 = value;
4412 break;
4413 case M32C_OPERAND_LAB_8_8 :
4414 fields->f_lab_8_8 = value;
4415 break;
4416 case M32C_OPERAND_LAB32_JMP_S :
4417 fields->f_lab32_jmp_s = value;
4418 break;
4419 case M32C_OPERAND_Q :
4420 break;
4421 case M32C_OPERAND_R0 :
4422 break;
4423 case M32C_OPERAND_R0H :
4424 break;
4425 case M32C_OPERAND_R0L :
4426 break;
4427 case M32C_OPERAND_R1 :
4428 break;
4429 case M32C_OPERAND_R1R2R0 :
4430 break;
4431 case M32C_OPERAND_R2 :
4432 break;
4433 case M32C_OPERAND_R2R0 :
4434 break;
4435 case M32C_OPERAND_R3 :
4436 break;
4437 case M32C_OPERAND_R3R1 :
4438 break;
4439 case M32C_OPERAND_REGSETPOP :
4440 fields->f_8_8 = value;
4441 break;
4442 case M32C_OPERAND_REGSETPUSH :
4443 fields->f_8_8 = value;
4444 break;
4445 case M32C_OPERAND_RN16_PUSH_S :
4446 fields->f_4_1 = value;
4447 break;
4448 case M32C_OPERAND_S :
4449 break;
4450 case M32C_OPERAND_SRC16AN :
4451 fields->f_src16_an = value;
4452 break;
4453 case M32C_OPERAND_SRC16ANHI :
4454 fields->f_src16_an = value;
4455 break;
4456 case M32C_OPERAND_SRC16ANQI :
4457 fields->f_src16_an = value;
4458 break;
4459 case M32C_OPERAND_SRC16RNHI :
4460 fields->f_src16_rn = value;
4461 break;
4462 case M32C_OPERAND_SRC16RNQI :
4463 fields->f_src16_rn = value;
4464 break;
4465 case M32C_OPERAND_SRC32ANPREFIXED :
4466 fields->f_src32_an_prefixed = value;
4467 break;
4468 case M32C_OPERAND_SRC32ANPREFIXEDHI :
4469 fields->f_src32_an_prefixed = value;
4470 break;
4471 case M32C_OPERAND_SRC32ANPREFIXEDQI :
4472 fields->f_src32_an_prefixed = value;
4473 break;
4474 case M32C_OPERAND_SRC32ANPREFIXEDSI :
4475 fields->f_src32_an_prefixed = value;
4476 break;
4477 case M32C_OPERAND_SRC32ANUNPREFIXED :
4478 fields->f_src32_an_unprefixed = value;
4479 break;
4480 case M32C_OPERAND_SRC32ANUNPREFIXEDHI :
4481 fields->f_src32_an_unprefixed = value;
4482 break;
4483 case M32C_OPERAND_SRC32ANUNPREFIXEDQI :
4484 fields->f_src32_an_unprefixed = value;
4485 break;
4486 case M32C_OPERAND_SRC32ANUNPREFIXEDSI :
4487 fields->f_src32_an_unprefixed = value;
4488 break;
4489 case M32C_OPERAND_SRC32RNPREFIXEDHI :
4490 fields->f_src32_rn_prefixed_HI = value;
4491 break;
4492 case M32C_OPERAND_SRC32RNPREFIXEDQI :
4493 fields->f_src32_rn_prefixed_QI = value;
4494 break;
4495 case M32C_OPERAND_SRC32RNPREFIXEDSI :
4496 fields->f_src32_rn_prefixed_SI = value;
4497 break;
4498 case M32C_OPERAND_SRC32RNUNPREFIXEDHI :
4499 fields->f_src32_rn_unprefixed_HI = value;
4500 break;
4501 case M32C_OPERAND_SRC32RNUNPREFIXEDQI :
4502 fields->f_src32_rn_unprefixed_QI = value;
4503 break;
4504 case M32C_OPERAND_SRC32RNUNPREFIXEDSI :
4505 fields->f_src32_rn_unprefixed_SI = value;
4506 break;
4507 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL :
4508 fields->f_5_1 = value;
4509 break;
4510 case M32C_OPERAND_X :
4511 break;
4512 case M32C_OPERAND_Z :
4513 break;
4514 case M32C_OPERAND_COND16_16 :
4515 fields->f_dsp_16_u8 = value;
4516 break;
4517 case M32C_OPERAND_COND16_24 :
4518 fields->f_dsp_24_u8 = value;
4519 break;
4520 case M32C_OPERAND_COND16_32 :
4521 fields->f_dsp_32_u8 = value;
4522 break;
4523 case M32C_OPERAND_COND16C :
4524 fields->f_cond16 = value;
4525 break;
4526 case M32C_OPERAND_COND16J :
4527 fields->f_cond16 = value;
4528 break;
4529 case M32C_OPERAND_COND16J5 :
4530 fields->f_cond16j_5 = value;
4531 break;
4532 case M32C_OPERAND_COND32 :
4533 fields->f_cond32 = value;
4534 break;
4535 case M32C_OPERAND_COND32_16 :
4536 fields->f_dsp_16_u8 = value;
4537 break;
4538 case M32C_OPERAND_COND32_24 :
4539 fields->f_dsp_24_u8 = value;
4540 break;
4541 case M32C_OPERAND_COND32_32 :
4542 fields->f_dsp_32_u8 = value;
4543 break;
4544 case M32C_OPERAND_COND32_40 :
4545 fields->f_dsp_40_u8 = value;
4546 break;
4547 case M32C_OPERAND_COND32J :
4548 fields->f_cond32j = value;
4549 break;
4550 case M32C_OPERAND_CR1_PREFIXED_32 :
4551 fields->f_21_3 = value;
4552 break;
4553 case M32C_OPERAND_CR1_UNPREFIXED_32 :
4554 fields->f_13_3 = value;
4555 break;
4556 case M32C_OPERAND_CR16 :
4557 fields->f_9_3 = value;
4558 break;
4559 case M32C_OPERAND_CR2_32 :
4560 fields->f_13_3 = value;
4561 break;
4562 case M32C_OPERAND_CR3_PREFIXED_32 :
4563 fields->f_21_3 = value;
4564 break;
4565 case M32C_OPERAND_CR3_UNPREFIXED_32 :
4566 fields->f_13_3 = value;
4567 break;
4568 case M32C_OPERAND_FLAGS16 :
4569 fields->f_9_3 = value;
4570 break;
4571 case M32C_OPERAND_FLAGS32 :
4572 fields->f_13_3 = value;
4573 break;
4574 case M32C_OPERAND_SCCOND32 :
4575 fields->f_cond16 = value;
4576 break;
4577 case M32C_OPERAND_SIZE :
4578 break;
4580 default :
4581 /* xgettext:c-format */
4582 fprintf (stderr, _("Unrecognized field %d while setting int operand.\n"),
4583 opindex);
4584 abort ();
4588 void
4589 m32c_cgen_set_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
4590 int opindex,
4591 CGEN_FIELDS * fields,
4592 bfd_vma value)
4594 switch (opindex)
4596 case M32C_OPERAND_A0 :
4597 break;
4598 case M32C_OPERAND_A1 :
4599 break;
4600 case M32C_OPERAND_AN16_PUSH_S :
4601 fields->f_4_1 = value;
4602 break;
4603 case M32C_OPERAND_BIT16AN :
4604 fields->f_dst16_an = value;
4605 break;
4606 case M32C_OPERAND_BIT16RN :
4607 fields->f_dst16_rn = value;
4608 break;
4609 case M32C_OPERAND_BIT32ANPREFIXED :
4610 fields->f_dst32_an_prefixed = value;
4611 break;
4612 case M32C_OPERAND_BIT32ANUNPREFIXED :
4613 fields->f_dst32_an_unprefixed = value;
4614 break;
4615 case M32C_OPERAND_BIT32RNPREFIXED :
4616 fields->f_dst32_rn_prefixed_QI = value;
4617 break;
4618 case M32C_OPERAND_BIT32RNUNPREFIXED :
4619 fields->f_dst32_rn_unprefixed_QI = value;
4620 break;
4621 case M32C_OPERAND_BITBASE16_16_S8 :
4622 fields->f_dsp_16_s8 = value;
4623 break;
4624 case M32C_OPERAND_BITBASE16_16_U16 :
4625 fields->f_dsp_16_u16 = value;
4626 break;
4627 case M32C_OPERAND_BITBASE16_16_U8 :
4628 fields->f_dsp_16_u8 = value;
4629 break;
4630 case M32C_OPERAND_BITBASE16_8_U11_S :
4631 fields->f_bitbase16_u11_S = value;
4632 break;
4633 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED :
4634 fields->f_bitbase32_16_s11_unprefixed = value;
4635 break;
4636 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED :
4637 fields->f_bitbase32_16_s19_unprefixed = value;
4638 break;
4639 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED :
4640 fields->f_bitbase32_16_u11_unprefixed = value;
4641 break;
4642 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED :
4643 fields->f_bitbase32_16_u19_unprefixed = value;
4644 break;
4645 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED :
4646 fields->f_bitbase32_16_u27_unprefixed = value;
4647 break;
4648 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED :
4649 fields->f_bitbase32_24_s11_prefixed = value;
4650 break;
4651 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED :
4652 fields->f_bitbase32_24_s19_prefixed = value;
4653 break;
4654 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED :
4655 fields->f_bitbase32_24_u11_prefixed = value;
4656 break;
4657 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED :
4658 fields->f_bitbase32_24_u19_prefixed = value;
4659 break;
4660 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED :
4661 fields->f_bitbase32_24_u27_prefixed = value;
4662 break;
4663 case M32C_OPERAND_BITNO16R :
4664 fields->f_dsp_16_u8 = value;
4665 break;
4666 case M32C_OPERAND_BITNO32PREFIXED :
4667 fields->f_bitno32_prefixed = value;
4668 break;
4669 case M32C_OPERAND_BITNO32UNPREFIXED :
4670 fields->f_bitno32_unprefixed = value;
4671 break;
4672 case M32C_OPERAND_DSP_10_U6 :
4673 fields->f_dsp_10_u6 = value;
4674 break;
4675 case M32C_OPERAND_DSP_16_S16 :
4676 fields->f_dsp_16_s16 = value;
4677 break;
4678 case M32C_OPERAND_DSP_16_S8 :
4679 fields->f_dsp_16_s8 = value;
4680 break;
4681 case M32C_OPERAND_DSP_16_U16 :
4682 fields->f_dsp_16_u16 = value;
4683 break;
4684 case M32C_OPERAND_DSP_16_U20 :
4685 fields->f_dsp_16_u24 = value;
4686 break;
4687 case M32C_OPERAND_DSP_16_U24 :
4688 fields->f_dsp_16_u24 = value;
4689 break;
4690 case M32C_OPERAND_DSP_16_U8 :
4691 fields->f_dsp_16_u8 = value;
4692 break;
4693 case M32C_OPERAND_DSP_24_S16 :
4694 fields->f_dsp_24_s16 = value;
4695 break;
4696 case M32C_OPERAND_DSP_24_S8 :
4697 fields->f_dsp_24_s8 = value;
4698 break;
4699 case M32C_OPERAND_DSP_24_U16 :
4700 fields->f_dsp_24_u16 = value;
4701 break;
4702 case M32C_OPERAND_DSP_24_U20 :
4703 fields->f_dsp_24_u24 = value;
4704 break;
4705 case M32C_OPERAND_DSP_24_U24 :
4706 fields->f_dsp_24_u24 = value;
4707 break;
4708 case M32C_OPERAND_DSP_24_U8 :
4709 fields->f_dsp_24_u8 = value;
4710 break;
4711 case M32C_OPERAND_DSP_32_S16 :
4712 fields->f_dsp_32_s16 = value;
4713 break;
4714 case M32C_OPERAND_DSP_32_S8 :
4715 fields->f_dsp_32_s8 = value;
4716 break;
4717 case M32C_OPERAND_DSP_32_U16 :
4718 fields->f_dsp_32_u16 = value;
4719 break;
4720 case M32C_OPERAND_DSP_32_U20 :
4721 fields->f_dsp_32_u24 = value;
4722 break;
4723 case M32C_OPERAND_DSP_32_U24 :
4724 fields->f_dsp_32_u24 = value;
4725 break;
4726 case M32C_OPERAND_DSP_32_U8 :
4727 fields->f_dsp_32_u8 = value;
4728 break;
4729 case M32C_OPERAND_DSP_40_S16 :
4730 fields->f_dsp_40_s16 = value;
4731 break;
4732 case M32C_OPERAND_DSP_40_S8 :
4733 fields->f_dsp_40_s8 = value;
4734 break;
4735 case M32C_OPERAND_DSP_40_U16 :
4736 fields->f_dsp_40_u16 = value;
4737 break;
4738 case M32C_OPERAND_DSP_40_U24 :
4739 fields->f_dsp_40_u24 = value;
4740 break;
4741 case M32C_OPERAND_DSP_40_U8 :
4742 fields->f_dsp_40_u8 = value;
4743 break;
4744 case M32C_OPERAND_DSP_48_S16 :
4745 fields->f_dsp_48_s16 = value;
4746 break;
4747 case M32C_OPERAND_DSP_48_S8 :
4748 fields->f_dsp_48_s8 = value;
4749 break;
4750 case M32C_OPERAND_DSP_48_U16 :
4751 fields->f_dsp_48_u16 = value;
4752 break;
4753 case M32C_OPERAND_DSP_48_U24 :
4754 fields->f_dsp_48_u24 = value;
4755 break;
4756 case M32C_OPERAND_DSP_48_U8 :
4757 fields->f_dsp_48_u8 = value;
4758 break;
4759 case M32C_OPERAND_DSP_8_S24 :
4760 fields->f_dsp_8_s24 = value;
4761 break;
4762 case M32C_OPERAND_DSP_8_S8 :
4763 fields->f_dsp_8_s8 = value;
4764 break;
4765 case M32C_OPERAND_DSP_8_U16 :
4766 fields->f_dsp_8_u16 = value;
4767 break;
4768 case M32C_OPERAND_DSP_8_U24 :
4769 fields->f_dsp_8_u24 = value;
4770 break;
4771 case M32C_OPERAND_DSP_8_U6 :
4772 fields->f_dsp_8_u6 = value;
4773 break;
4774 case M32C_OPERAND_DSP_8_U8 :
4775 fields->f_dsp_8_u8 = value;
4776 break;
4777 case M32C_OPERAND_DST16AN :
4778 fields->f_dst16_an = value;
4779 break;
4780 case M32C_OPERAND_DST16AN_S :
4781 fields->f_dst16_an_s = value;
4782 break;
4783 case M32C_OPERAND_DST16ANHI :
4784 fields->f_dst16_an = value;
4785 break;
4786 case M32C_OPERAND_DST16ANQI :
4787 fields->f_dst16_an = value;
4788 break;
4789 case M32C_OPERAND_DST16ANQI_S :
4790 fields->f_dst16_rn_QI_s = value;
4791 break;
4792 case M32C_OPERAND_DST16ANSI :
4793 fields->f_dst16_an = value;
4794 break;
4795 case M32C_OPERAND_DST16RNEXTQI :
4796 fields->f_dst16_rn_ext = value;
4797 break;
4798 case M32C_OPERAND_DST16RNHI :
4799 fields->f_dst16_rn = value;
4800 break;
4801 case M32C_OPERAND_DST16RNQI :
4802 fields->f_dst16_rn = value;
4803 break;
4804 case M32C_OPERAND_DST16RNQI_S :
4805 fields->f_dst16_rn_QI_s = value;
4806 break;
4807 case M32C_OPERAND_DST16RNSI :
4808 fields->f_dst16_rn = value;
4809 break;
4810 case M32C_OPERAND_DST32ANEXTUNPREFIXED :
4811 fields->f_dst32_an_unprefixed = value;
4812 break;
4813 case M32C_OPERAND_DST32ANPREFIXED :
4814 fields->f_dst32_an_prefixed = value;
4815 break;
4816 case M32C_OPERAND_DST32ANPREFIXEDHI :
4817 fields->f_dst32_an_prefixed = value;
4818 break;
4819 case M32C_OPERAND_DST32ANPREFIXEDQI :
4820 fields->f_dst32_an_prefixed = value;
4821 break;
4822 case M32C_OPERAND_DST32ANPREFIXEDSI :
4823 fields->f_dst32_an_prefixed = value;
4824 break;
4825 case M32C_OPERAND_DST32ANUNPREFIXED :
4826 fields->f_dst32_an_unprefixed = value;
4827 break;
4828 case M32C_OPERAND_DST32ANUNPREFIXEDHI :
4829 fields->f_dst32_an_unprefixed = value;
4830 break;
4831 case M32C_OPERAND_DST32ANUNPREFIXEDQI :
4832 fields->f_dst32_an_unprefixed = value;
4833 break;
4834 case M32C_OPERAND_DST32ANUNPREFIXEDSI :
4835 fields->f_dst32_an_unprefixed = value;
4836 break;
4837 case M32C_OPERAND_DST32R0HI_S :
4838 break;
4839 case M32C_OPERAND_DST32R0QI_S :
4840 break;
4841 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI :
4842 fields->f_dst32_rn_ext_unprefixed = value;
4843 break;
4844 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI :
4845 fields->f_dst32_rn_ext_unprefixed = value;
4846 break;
4847 case M32C_OPERAND_DST32RNPREFIXEDHI :
4848 fields->f_dst32_rn_prefixed_HI = value;
4849 break;
4850 case M32C_OPERAND_DST32RNPREFIXEDQI :
4851 fields->f_dst32_rn_prefixed_QI = value;
4852 break;
4853 case M32C_OPERAND_DST32RNPREFIXEDSI :
4854 fields->f_dst32_rn_prefixed_SI = value;
4855 break;
4856 case M32C_OPERAND_DST32RNUNPREFIXEDHI :
4857 fields->f_dst32_rn_unprefixed_HI = value;
4858 break;
4859 case M32C_OPERAND_DST32RNUNPREFIXEDQI :
4860 fields->f_dst32_rn_unprefixed_QI = value;
4861 break;
4862 case M32C_OPERAND_DST32RNUNPREFIXEDSI :
4863 fields->f_dst32_rn_unprefixed_SI = value;
4864 break;
4865 case M32C_OPERAND_G :
4866 break;
4867 case M32C_OPERAND_IMM_12_S4 :
4868 fields->f_imm_12_s4 = value;
4869 break;
4870 case M32C_OPERAND_IMM_12_S4N :
4871 fields->f_imm_12_s4 = value;
4872 break;
4873 case M32C_OPERAND_IMM_13_U3 :
4874 fields->f_imm_13_u3 = value;
4875 break;
4876 case M32C_OPERAND_IMM_16_HI :
4877 fields->f_dsp_16_s16 = value;
4878 break;
4879 case M32C_OPERAND_IMM_16_QI :
4880 fields->f_dsp_16_s8 = value;
4881 break;
4882 case M32C_OPERAND_IMM_16_SI :
4883 fields->f_dsp_16_s32 = value;
4884 break;
4885 case M32C_OPERAND_IMM_20_S4 :
4886 fields->f_imm_20_s4 = value;
4887 break;
4888 case M32C_OPERAND_IMM_24_HI :
4889 fields->f_dsp_24_s16 = value;
4890 break;
4891 case M32C_OPERAND_IMM_24_QI :
4892 fields->f_dsp_24_s8 = value;
4893 break;
4894 case M32C_OPERAND_IMM_24_SI :
4895 fields->f_dsp_24_s32 = value;
4896 break;
4897 case M32C_OPERAND_IMM_32_HI :
4898 fields->f_dsp_32_s16 = value;
4899 break;
4900 case M32C_OPERAND_IMM_32_QI :
4901 fields->f_dsp_32_s8 = value;
4902 break;
4903 case M32C_OPERAND_IMM_32_SI :
4904 fields->f_dsp_32_s32 = value;
4905 break;
4906 case M32C_OPERAND_IMM_40_HI :
4907 fields->f_dsp_40_s16 = value;
4908 break;
4909 case M32C_OPERAND_IMM_40_QI :
4910 fields->f_dsp_40_s8 = value;
4911 break;
4912 case M32C_OPERAND_IMM_40_SI :
4913 fields->f_dsp_40_s32 = value;
4914 break;
4915 case M32C_OPERAND_IMM_48_HI :
4916 fields->f_dsp_48_s16 = value;
4917 break;
4918 case M32C_OPERAND_IMM_48_QI :
4919 fields->f_dsp_48_s8 = value;
4920 break;
4921 case M32C_OPERAND_IMM_48_SI :
4922 fields->f_dsp_48_s32 = value;
4923 break;
4924 case M32C_OPERAND_IMM_56_HI :
4925 fields->f_dsp_56_s16 = value;
4926 break;
4927 case M32C_OPERAND_IMM_56_QI :
4928 fields->f_dsp_56_s8 = value;
4929 break;
4930 case M32C_OPERAND_IMM_64_HI :
4931 fields->f_dsp_64_s16 = value;
4932 break;
4933 case M32C_OPERAND_IMM_8_HI :
4934 fields->f_dsp_8_s16 = value;
4935 break;
4936 case M32C_OPERAND_IMM_8_QI :
4937 fields->f_dsp_8_s8 = value;
4938 break;
4939 case M32C_OPERAND_IMM_8_S4 :
4940 fields->f_imm_8_s4 = value;
4941 break;
4942 case M32C_OPERAND_IMM_8_S4N :
4943 fields->f_imm_8_s4 = value;
4944 break;
4945 case M32C_OPERAND_IMM_SH_12_S4 :
4946 fields->f_imm_12_s4 = value;
4947 break;
4948 case M32C_OPERAND_IMM_SH_20_S4 :
4949 fields->f_imm_20_s4 = value;
4950 break;
4951 case M32C_OPERAND_IMM_SH_8_S4 :
4952 fields->f_imm_8_s4 = value;
4953 break;
4954 case M32C_OPERAND_IMM1_S :
4955 fields->f_imm1_S = value;
4956 break;
4957 case M32C_OPERAND_IMM3_S :
4958 fields->f_imm3_S = value;
4959 break;
4960 case M32C_OPERAND_LAB_16_8 :
4961 fields->f_lab_16_8 = value;
4962 break;
4963 case M32C_OPERAND_LAB_24_8 :
4964 fields->f_lab_24_8 = value;
4965 break;
4966 case M32C_OPERAND_LAB_32_8 :
4967 fields->f_lab_32_8 = value;
4968 break;
4969 case M32C_OPERAND_LAB_40_8 :
4970 fields->f_lab_40_8 = value;
4971 break;
4972 case M32C_OPERAND_LAB_5_3 :
4973 fields->f_lab_5_3 = value;
4974 break;
4975 case M32C_OPERAND_LAB_8_16 :
4976 fields->f_lab_8_16 = value;
4977 break;
4978 case M32C_OPERAND_LAB_8_24 :
4979 fields->f_lab_8_24 = value;
4980 break;
4981 case M32C_OPERAND_LAB_8_8 :
4982 fields->f_lab_8_8 = value;
4983 break;
4984 case M32C_OPERAND_LAB32_JMP_S :
4985 fields->f_lab32_jmp_s = value;
4986 break;
4987 case M32C_OPERAND_Q :
4988 break;
4989 case M32C_OPERAND_R0 :
4990 break;
4991 case M32C_OPERAND_R0H :
4992 break;
4993 case M32C_OPERAND_R0L :
4994 break;
4995 case M32C_OPERAND_R1 :
4996 break;
4997 case M32C_OPERAND_R1R2R0 :
4998 break;
4999 case M32C_OPERAND_R2 :
5000 break;
5001 case M32C_OPERAND_R2R0 :
5002 break;
5003 case M32C_OPERAND_R3 :
5004 break;
5005 case M32C_OPERAND_R3R1 :
5006 break;
5007 case M32C_OPERAND_REGSETPOP :
5008 fields->f_8_8 = value;
5009 break;
5010 case M32C_OPERAND_REGSETPUSH :
5011 fields->f_8_8 = value;
5012 break;
5013 case M32C_OPERAND_RN16_PUSH_S :
5014 fields->f_4_1 = value;
5015 break;
5016 case M32C_OPERAND_S :
5017 break;
5018 case M32C_OPERAND_SRC16AN :
5019 fields->f_src16_an = value;
5020 break;
5021 case M32C_OPERAND_SRC16ANHI :
5022 fields->f_src16_an = value;
5023 break;
5024 case M32C_OPERAND_SRC16ANQI :
5025 fields->f_src16_an = value;
5026 break;
5027 case M32C_OPERAND_SRC16RNHI :
5028 fields->f_src16_rn = value;
5029 break;
5030 case M32C_OPERAND_SRC16RNQI :
5031 fields->f_src16_rn = value;
5032 break;
5033 case M32C_OPERAND_SRC32ANPREFIXED :
5034 fields->f_src32_an_prefixed = value;
5035 break;
5036 case M32C_OPERAND_SRC32ANPREFIXEDHI :
5037 fields->f_src32_an_prefixed = value;
5038 break;
5039 case M32C_OPERAND_SRC32ANPREFIXEDQI :
5040 fields->f_src32_an_prefixed = value;
5041 break;
5042 case M32C_OPERAND_SRC32ANPREFIXEDSI :
5043 fields->f_src32_an_prefixed = value;
5044 break;
5045 case M32C_OPERAND_SRC32ANUNPREFIXED :
5046 fields->f_src32_an_unprefixed = value;
5047 break;
5048 case M32C_OPERAND_SRC32ANUNPREFIXEDHI :
5049 fields->f_src32_an_unprefixed = value;
5050 break;
5051 case M32C_OPERAND_SRC32ANUNPREFIXEDQI :
5052 fields->f_src32_an_unprefixed = value;
5053 break;
5054 case M32C_OPERAND_SRC32ANUNPREFIXEDSI :
5055 fields->f_src32_an_unprefixed = value;
5056 break;
5057 case M32C_OPERAND_SRC32RNPREFIXEDHI :
5058 fields->f_src32_rn_prefixed_HI = value;
5059 break;
5060 case M32C_OPERAND_SRC32RNPREFIXEDQI :
5061 fields->f_src32_rn_prefixed_QI = value;
5062 break;
5063 case M32C_OPERAND_SRC32RNPREFIXEDSI :
5064 fields->f_src32_rn_prefixed_SI = value;
5065 break;
5066 case M32C_OPERAND_SRC32RNUNPREFIXEDHI :
5067 fields->f_src32_rn_unprefixed_HI = value;
5068 break;
5069 case M32C_OPERAND_SRC32RNUNPREFIXEDQI :
5070 fields->f_src32_rn_unprefixed_QI = value;
5071 break;
5072 case M32C_OPERAND_SRC32RNUNPREFIXEDSI :
5073 fields->f_src32_rn_unprefixed_SI = value;
5074 break;
5075 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL :
5076 fields->f_5_1 = value;
5077 break;
5078 case M32C_OPERAND_X :
5079 break;
5080 case M32C_OPERAND_Z :
5081 break;
5082 case M32C_OPERAND_COND16_16 :
5083 fields->f_dsp_16_u8 = value;
5084 break;
5085 case M32C_OPERAND_COND16_24 :
5086 fields->f_dsp_24_u8 = value;
5087 break;
5088 case M32C_OPERAND_COND16_32 :
5089 fields->f_dsp_32_u8 = value;
5090 break;
5091 case M32C_OPERAND_COND16C :
5092 fields->f_cond16 = value;
5093 break;
5094 case M32C_OPERAND_COND16J :
5095 fields->f_cond16 = value;
5096 break;
5097 case M32C_OPERAND_COND16J5 :
5098 fields->f_cond16j_5 = value;
5099 break;
5100 case M32C_OPERAND_COND32 :
5101 fields->f_cond32 = value;
5102 break;
5103 case M32C_OPERAND_COND32_16 :
5104 fields->f_dsp_16_u8 = value;
5105 break;
5106 case M32C_OPERAND_COND32_24 :
5107 fields->f_dsp_24_u8 = value;
5108 break;
5109 case M32C_OPERAND_COND32_32 :
5110 fields->f_dsp_32_u8 = value;
5111 break;
5112 case M32C_OPERAND_COND32_40 :
5113 fields->f_dsp_40_u8 = value;
5114 break;
5115 case M32C_OPERAND_COND32J :
5116 fields->f_cond32j = value;
5117 break;
5118 case M32C_OPERAND_CR1_PREFIXED_32 :
5119 fields->f_21_3 = value;
5120 break;
5121 case M32C_OPERAND_CR1_UNPREFIXED_32 :
5122 fields->f_13_3 = value;
5123 break;
5124 case M32C_OPERAND_CR16 :
5125 fields->f_9_3 = value;
5126 break;
5127 case M32C_OPERAND_CR2_32 :
5128 fields->f_13_3 = value;
5129 break;
5130 case M32C_OPERAND_CR3_PREFIXED_32 :
5131 fields->f_21_3 = value;
5132 break;
5133 case M32C_OPERAND_CR3_UNPREFIXED_32 :
5134 fields->f_13_3 = value;
5135 break;
5136 case M32C_OPERAND_FLAGS16 :
5137 fields->f_9_3 = value;
5138 break;
5139 case M32C_OPERAND_FLAGS32 :
5140 fields->f_13_3 = value;
5141 break;
5142 case M32C_OPERAND_SCCOND32 :
5143 fields->f_cond16 = value;
5144 break;
5145 case M32C_OPERAND_SIZE :
5146 break;
5148 default :
5149 /* xgettext:c-format */
5150 fprintf (stderr, _("Unrecognized field %d while setting vma operand.\n"),
5151 opindex);
5152 abort ();
5156 /* Function to call before using the instruction builder tables. */
5158 void
5159 m32c_cgen_init_ibld_table (CGEN_CPU_DESC cd)
5161 cd->insert_handlers = & m32c_cgen_insert_handlers[0];
5162 cd->extract_handlers = & m32c_cgen_extract_handlers[0];
5164 cd->insert_operand = m32c_cgen_insert_operand;
5165 cd->extract_operand = m32c_cgen_extract_operand;
5167 cd->get_int_operand = m32c_cgen_get_int_operand;
5168 cd->set_int_operand = m32c_cgen_set_int_operand;
5169 cd->get_vma_operand = m32c_cgen_get_vma_operand;
5170 cd->set_vma_operand = m32c_cgen_set_vma_operand;