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
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)
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.
34 #include "m32c-desc.h"
37 #include "safe-ctype.h"
40 #define min(a,b) ((a) < (b) ? (a) : (b))
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
);
61 static void put_insn_int_value
62 (CGEN_CPU_DESC
, CGEN_INSN_BYTES_PTR
, int, int, CGEN_INSN_INT
);
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
);
73 /* Operand insertion. */
77 /* Subroutine of insert_normal. */
79 static CGEN_INLINE
void
80 insert_1 (CGEN_CPU_DESC cd
,
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;
95 shift
= (start
+ 1) - length
;
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
122 insert_normal (CGEN_CPU_DESC cd
,
125 unsigned int word_offset
,
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. */
140 if (word_length
> 32)
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
)
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
)
161 /* xgettext:c-format */
163 _("operand out of range (%ld not between %ld and %lu)"),
164 value
, minval
, maxval
);
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 */
176 _("operand out of range (%lu not between 0 and %lu)"),
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
)
191 /* xgettext:c-format */
192 (errbuf
, _("operand out of range (%ld not between %ld and %ld)"),
193 value
, minval
, maxval
);
204 if (CGEN_INSN_LSB0_P
)
205 shift
= (word_offset
+ start
+ 1) - length
;
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 */
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. */
232 insert_insn_normal (CGEN_CPU_DESC cd
,
233 const CGEN_INSN
* insn
,
234 CGEN_FIELDS
* fields
,
235 CGEN_INSN_BYTES_PTR buffer
,
238 const CGEN_SYNTAX
*syntax
= CGEN_INSN_SYNTAX (insn
);
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. */
250 put_insn_int_value (cd
, buffer
, cd
->base_insn_bitsize
,
251 CGEN_FIELDS_BITSIZE (fields
), value
);
255 cgen_put_insn_value (cd
, buffer
, min ((unsigned) cd
->base_insn_bitsize
,
256 (unsigned) CGEN_FIELDS_BITSIZE (fields
)),
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
)
270 if (CGEN_SYNTAX_CHAR_P (* syn
))
273 errmsg
= (* cd
->insert_operand
) (cd
, CGEN_SYNTAX_FIELD (*syn
),
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. */
287 put_insn_int_value (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED
,
288 CGEN_INSN_BYTES_PTR buf
,
293 /* For architectures with insns smaller than the base-insn-bitsize,
294 length may be too big. */
295 if (length
> insn_length
)
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
);
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
,
325 /* It's doubtful that the middle part has already been fetched so
326 we don't optimize that case. kiss. */
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
)
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
))
345 status
= (*info
->read_memory_func
)
346 (pc
, ex_info
->insn_bytes
+ offset
, bytes
, info
);
350 (*info
->memory_error_func
) (status
, pc
, info
);
354 ex_info
->valid
|= ((1 << bytes
) - 1) << offset
;
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
,
369 bfd_vma pc ATTRIBUTE_UNUSED
)
374 x
= cgen_get_insn_value (cd
, bufp
, word_length
);
376 if (CGEN_INSN_LSB0_P
)
377 shift
= (start
+ 1) - length
;
379 shift
= (word_length
- (start
+ length
));
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
406 extract_normal (CGEN_CPU_DESC cd
,
407 #if ! CGEN_INT_INSN_P
408 CGEN_EXTRACT_INFO
*ex_info
,
410 CGEN_EXTRACT_INFO
*ex_info ATTRIBUTE_UNUSED
,
412 CGEN_INSN_INT insn_value
,
414 unsigned int word_offset
,
417 unsigned int word_length
,
418 unsigned int total_length
,
419 #if ! CGEN_INT_INSN_P
422 bfd_vma pc ATTRIBUTE_UNUSED
,
428 /* If LENGTH is zero, this operand doesn't contribute to the value
429 so give it a standard value of zero. */
436 if (word_length
> 32)
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
)
444 && word_length
> total_length
)
445 word_length
= total_length
;
448 /* Does the value reside in INSN_VALUE, and at the right alignment? */
450 if (CGEN_INT_INSN_P
|| (word_offset
== 0 && word_length
== total_length
))
452 if (CGEN_INSN_LSB0_P
)
453 value
= insn_value
>> ((word_offset
+ start
+ 1) - length
);
455 value
= insn_value
>> (total_length
- ( word_offset
+ start
+ length
));
458 #if ! CGEN_INT_INSN_P
462 unsigned char *bufp
= ex_info
->insn_bytes
+ word_offset
/ 8;
464 if (word_length
> 32)
467 if (fill_cache (cd
, ex_info
, word_offset
/ 8, word_length
/ 8, pc
) == 0)
470 value
= extract_1 (cd
, ex_info
, start
, length
, word_length
, bufp
, pc
);
473 #endif /* ! CGEN_INT_INSN_P */
475 /* Written this way to avoid undefined behaviour. */
476 mask
= (((1L << (length
- 1)) - 1) << 1) | 1;
480 if (CGEN_BOOL_ATTR (attrs
, CGEN_IFLD_SIGNED
)
481 && (value
& (1L << (length
- 1))))
489 /* Default insn extractor.
491 INSN_VALUE is the first base_insn_bitsize bits, translated to host order.
492 The extracted fields are stored in FIELDS.
493 EX_INFO is used to handle reading variable length insns.
494 Return the length of the insn in bits, or 0 if no match,
495 or -1 if an error occurs fetching data (memory_error_func will have
499 extract_insn_normal (CGEN_CPU_DESC cd
,
500 const CGEN_INSN
*insn
,
501 CGEN_EXTRACT_INFO
*ex_info
,
502 CGEN_INSN_INT insn_value
,
506 const CGEN_SYNTAX
*syntax
= CGEN_INSN_SYNTAX (insn
);
507 const CGEN_SYNTAX_CHAR_TYPE
*syn
;
509 CGEN_FIELDS_BITSIZE (fields
) = CGEN_INSN_BITSIZE (insn
);
511 CGEN_INIT_EXTRACT (cd
);
513 for (syn
= CGEN_SYNTAX_STRING (syntax
); *syn
; ++syn
)
517 if (CGEN_SYNTAX_CHAR_P (*syn
))
520 length
= (* cd
->extract_operand
) (cd
, CGEN_SYNTAX_FIELD (*syn
),
521 ex_info
, insn_value
, fields
, pc
);
526 /* We recognized and successfully extracted this insn. */
527 return CGEN_INSN_BITSIZE (insn
);
530 /* Machine generated code added here. */
532 const char * m32c_cgen_insert_operand
533 (CGEN_CPU_DESC
, int, CGEN_FIELDS
*, CGEN_INSN_BYTES_PTR
, bfd_vma
);
535 /* Main entry point for operand insertion.
537 This function is basically just a big switch statement. Earlier versions
538 used tables to look up the function to use, but
539 - if the table contains both assembler and disassembler functions then
540 the disassembler contains much of the assembler and vice-versa,
541 - there's a lot of inlining possibilities as things grow,
542 - using a switch statement avoids the function call overhead.
544 This function could be moved into `parse_insn_normal', but keeping it
545 separate makes clear the interface between `parse_insn_normal' and each of
546 the handlers. It's also needed by GAS to insert operands that couldn't be
547 resolved during parsing. */
550 m32c_cgen_insert_operand (CGEN_CPU_DESC cd
,
552 CGEN_FIELDS
* fields
,
553 CGEN_INSN_BYTES_PTR buffer
,
554 bfd_vma pc ATTRIBUTE_UNUSED
)
556 const char * errmsg
= NULL
;
557 unsigned int total_length
= CGEN_FIELDS_BITSIZE (fields
);
561 case M32C_OPERAND_A0
:
563 case M32C_OPERAND_A1
:
565 case M32C_OPERAND_AN16_PUSH_S
:
566 errmsg
= insert_normal (cd
, fields
->f_4_1
, 0, 0, 4, 1, 32, total_length
, buffer
);
568 case M32C_OPERAND_BIT16AN
:
569 errmsg
= insert_normal (cd
, fields
->f_dst16_an
, 0, 0, 15, 1, 32, total_length
, buffer
);
571 case M32C_OPERAND_BIT16RN
:
572 errmsg
= insert_normal (cd
, fields
->f_dst16_rn
, 0, 0, 14, 2, 32, total_length
, buffer
);
574 case M32C_OPERAND_BIT32ANPREFIXED
:
575 errmsg
= insert_normal (cd
, fields
->f_dst32_an_prefixed
, 0, 0, 17, 1, 32, total_length
, buffer
);
577 case M32C_OPERAND_BIT32ANUNPREFIXED
:
578 errmsg
= insert_normal (cd
, fields
->f_dst32_an_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
580 case M32C_OPERAND_BIT32RNPREFIXED
:
582 long value
= fields
->f_dst32_rn_prefixed_QI
;
583 value
= (((((((~ (value
))) << (1))) & (2))) | (((((unsigned int) (value
) >> (1))) & (1))));
584 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 2, 32, total_length
, buffer
);
587 case M32C_OPERAND_BIT32RNUNPREFIXED
:
589 long value
= fields
->f_dst32_rn_unprefixed_QI
;
590 value
= (((((((~ (value
))) << (1))) & (2))) | (((((unsigned int) (value
) >> (1))) & (1))));
591 errmsg
= insert_normal (cd
, value
, 0, 0, 8, 2, 32, total_length
, buffer
);
594 case M32C_OPERAND_BITBASE16_16_S8
:
595 errmsg
= insert_normal (cd
, fields
->f_dsp_16_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 8, 32, total_length
, buffer
);
597 case M32C_OPERAND_BITBASE16_16_U16
:
599 long value
= fields
->f_dsp_16_u16
;
600 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
601 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
604 case M32C_OPERAND_BITBASE16_16_U8
:
605 errmsg
= insert_normal (cd
, fields
->f_dsp_16_u8
, 0, 0, 16, 8, 32, total_length
, buffer
);
607 case M32C_OPERAND_BITBASE16_8_U11_S
:
610 FLD (f_bitno16_S
) = ((FLD (f_bitbase16_u11_S
)) & (7));
611 FLD (f_dsp_8_u8
) = ((((unsigned int) (FLD (f_bitbase16_u11_S
)) >> (3))) & (255));
613 errmsg
= insert_normal (cd
, fields
->f_bitno16_S
, 0, 0, 5, 3, 32, total_length
, buffer
);
616 errmsg
= insert_normal (cd
, fields
->f_dsp_8_u8
, 0, 0, 8, 8, 32, total_length
, buffer
);
621 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED
:
624 FLD (f_bitno32_unprefixed
) = ((FLD (f_bitbase32_16_s11_unprefixed
)) & (7));
625 FLD (f_dsp_16_s8
) = ((int) (FLD (f_bitbase32_16_s11_unprefixed
)) >> (3));
627 errmsg
= insert_normal (cd
, fields
->f_bitno32_unprefixed
, 0, 0, 13, 3, 32, total_length
, buffer
);
630 errmsg
= insert_normal (cd
, fields
->f_dsp_16_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 8, 32, total_length
, buffer
);
635 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED
:
638 FLD (f_bitno32_unprefixed
) = ((FLD (f_bitbase32_16_s19_unprefixed
)) & (7));
639 FLD (f_dsp_16_s16
) = ((int) (FLD (f_bitbase32_16_s19_unprefixed
)) >> (3));
641 errmsg
= insert_normal (cd
, fields
->f_bitno32_unprefixed
, 0, 0, 13, 3, 32, total_length
, buffer
);
645 long value
= fields
->f_dsp_16_s16
;
646 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
647 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 16, 32, total_length
, buffer
);
653 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED
:
656 FLD (f_bitno32_unprefixed
) = ((FLD (f_bitbase32_16_u11_unprefixed
)) & (7));
657 FLD (f_dsp_16_u8
) = ((((unsigned int) (FLD (f_bitbase32_16_u11_unprefixed
)) >> (3))) & (255));
659 errmsg
= insert_normal (cd
, fields
->f_bitno32_unprefixed
, 0, 0, 13, 3, 32, total_length
, buffer
);
662 errmsg
= insert_normal (cd
, fields
->f_dsp_16_u8
, 0, 0, 16, 8, 32, total_length
, buffer
);
667 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED
:
670 FLD (f_bitno32_unprefixed
) = ((FLD (f_bitbase32_16_u19_unprefixed
)) & (7));
671 FLD (f_dsp_16_u16
) = ((((unsigned int) (FLD (f_bitbase32_16_u19_unprefixed
)) >> (3))) & (65535));
673 errmsg
= insert_normal (cd
, fields
->f_bitno32_unprefixed
, 0, 0, 13, 3, 32, total_length
, buffer
);
677 long value
= fields
->f_dsp_16_u16
;
678 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
679 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
685 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED
:
688 FLD (f_bitno32_unprefixed
) = ((FLD (f_bitbase32_16_u27_unprefixed
)) & (7));
689 FLD (f_dsp_16_u16
) = ((((unsigned int) (FLD (f_bitbase32_16_u27_unprefixed
)) >> (3))) & (65535));
690 FLD (f_dsp_32_u8
) = ((((unsigned int) (FLD (f_bitbase32_16_u27_unprefixed
)) >> (19))) & (255));
692 errmsg
= insert_normal (cd
, fields
->f_bitno32_unprefixed
, 0, 0, 13, 3, 32, total_length
, buffer
);
696 long value
= fields
->f_dsp_16_u16
;
697 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
698 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
702 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
707 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED
:
710 FLD (f_bitno32_prefixed
) = ((FLD (f_bitbase32_24_s11_prefixed
)) & (7));
711 FLD (f_dsp_24_s8
) = ((int) (FLD (f_bitbase32_24_s11_prefixed
)) >> (3));
713 errmsg
= insert_normal (cd
, fields
->f_bitno32_prefixed
, 0, 0, 21, 3, 32, total_length
, buffer
);
716 errmsg
= insert_normal (cd
, fields
->f_dsp_24_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 24, 8, 32, total_length
, buffer
);
721 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED
:
724 FLD (f_bitno32_prefixed
) = ((FLD (f_bitbase32_24_s19_prefixed
)) & (7));
725 FLD (f_dsp_24_u8
) = ((((unsigned int) (FLD (f_bitbase32_24_s19_prefixed
)) >> (3))) & (255));
726 FLD (f_dsp_32_s8
) = ((int) (FLD (f_bitbase32_24_s19_prefixed
)) >> (11));
728 errmsg
= insert_normal (cd
, fields
->f_bitno32_prefixed
, 0, 0, 21, 3, 32, total_length
, buffer
);
731 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
734 errmsg
= insert_normal (cd
, fields
->f_dsp_32_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 8, 32, total_length
, buffer
);
739 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED
:
742 FLD (f_bitno32_prefixed
) = ((FLD (f_bitbase32_24_u11_prefixed
)) & (7));
743 FLD (f_dsp_24_u8
) = ((((unsigned int) (FLD (f_bitbase32_24_u11_prefixed
)) >> (3))) & (255));
745 errmsg
= insert_normal (cd
, fields
->f_bitno32_prefixed
, 0, 0, 21, 3, 32, total_length
, buffer
);
748 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
753 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED
:
756 FLD (f_bitno32_prefixed
) = ((FLD (f_bitbase32_24_u19_prefixed
)) & (7));
757 FLD (f_dsp_24_u8
) = ((((unsigned int) (FLD (f_bitbase32_24_u19_prefixed
)) >> (3))) & (255));
758 FLD (f_dsp_32_u8
) = ((((unsigned int) (FLD (f_bitbase32_24_u19_prefixed
)) >> (11))) & (255));
760 errmsg
= insert_normal (cd
, fields
->f_bitno32_prefixed
, 0, 0, 21, 3, 32, total_length
, buffer
);
763 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
766 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
771 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED
:
774 FLD (f_bitno32_prefixed
) = ((FLD (f_bitbase32_24_u27_prefixed
)) & (7));
775 FLD (f_dsp_24_u8
) = ((((unsigned int) (FLD (f_bitbase32_24_u27_prefixed
)) >> (3))) & (255));
776 FLD (f_dsp_32_u16
) = ((((unsigned int) (FLD (f_bitbase32_24_u27_prefixed
)) >> (11))) & (65535));
778 errmsg
= insert_normal (cd
, fields
->f_bitno32_prefixed
, 0, 0, 21, 3, 32, total_length
, buffer
);
781 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
785 long value
= fields
->f_dsp_32_u16
;
786 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
787 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 16, 32, total_length
, buffer
);
793 case M32C_OPERAND_BITNO16R
:
794 errmsg
= insert_normal (cd
, fields
->f_dsp_16_u8
, 0, 0, 16, 8, 32, total_length
, buffer
);
796 case M32C_OPERAND_BITNO32PREFIXED
:
797 errmsg
= insert_normal (cd
, fields
->f_bitno32_prefixed
, 0, 0, 21, 3, 32, total_length
, buffer
);
799 case M32C_OPERAND_BITNO32UNPREFIXED
:
800 errmsg
= insert_normal (cd
, fields
->f_bitno32_unprefixed
, 0, 0, 13, 3, 32, total_length
, buffer
);
802 case M32C_OPERAND_DSP_10_U6
:
803 errmsg
= insert_normal (cd
, fields
->f_dsp_10_u6
, 0, 0, 10, 6, 32, total_length
, buffer
);
805 case M32C_OPERAND_DSP_16_S16
:
807 long value
= fields
->f_dsp_16_s16
;
808 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
809 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 16, 32, total_length
, buffer
);
812 case M32C_OPERAND_DSP_16_S8
:
813 errmsg
= insert_normal (cd
, fields
->f_dsp_16_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 8, 32, total_length
, buffer
);
815 case M32C_OPERAND_DSP_16_U16
:
817 long value
= fields
->f_dsp_16_u16
;
818 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
819 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
822 case M32C_OPERAND_DSP_16_U20
:
825 FLD (f_dsp_16_u16
) = ((FLD (f_dsp_16_u24
)) & (65535));
826 FLD (f_dsp_32_u8
) = ((((unsigned int) (FLD (f_dsp_16_u24
)) >> (16))) & (255));
829 long value
= fields
->f_dsp_16_u16
;
830 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
831 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
835 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
840 case M32C_OPERAND_DSP_16_U24
:
843 FLD (f_dsp_16_u16
) = ((FLD (f_dsp_16_u24
)) & (65535));
844 FLD (f_dsp_32_u8
) = ((((unsigned int) (FLD (f_dsp_16_u24
)) >> (16))) & (255));
847 long value
= fields
->f_dsp_16_u16
;
848 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
849 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
853 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
858 case M32C_OPERAND_DSP_16_U8
:
859 errmsg
= insert_normal (cd
, fields
->f_dsp_16_u8
, 0, 0, 16, 8, 32, total_length
, buffer
);
861 case M32C_OPERAND_DSP_24_S16
:
864 FLD (f_dsp_24_u8
) = ((FLD (f_dsp_24_s16
)) & (255));
865 FLD (f_dsp_32_u8
) = ((((unsigned int) (FLD (f_dsp_24_s16
)) >> (8))) & (255));
867 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
870 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
875 case M32C_OPERAND_DSP_24_S8
:
876 errmsg
= insert_normal (cd
, fields
->f_dsp_24_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 24, 8, 32, total_length
, buffer
);
878 case M32C_OPERAND_DSP_24_U16
:
881 FLD (f_dsp_24_u8
) = ((FLD (f_dsp_24_u16
)) & (255));
882 FLD (f_dsp_32_u8
) = ((((unsigned int) (FLD (f_dsp_24_u16
)) >> (8))) & (255));
884 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
887 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
892 case M32C_OPERAND_DSP_24_U20
:
895 FLD (f_dsp_24_u8
) = ((FLD (f_dsp_24_u24
)) & (255));
896 FLD (f_dsp_32_u16
) = ((((unsigned int) (FLD (f_dsp_24_u24
)) >> (8))) & (65535));
898 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
902 long value
= fields
->f_dsp_32_u16
;
903 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
904 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 16, 32, total_length
, buffer
);
910 case M32C_OPERAND_DSP_24_U24
:
913 FLD (f_dsp_24_u8
) = ((FLD (f_dsp_24_u24
)) & (255));
914 FLD (f_dsp_32_u16
) = ((((unsigned int) (FLD (f_dsp_24_u24
)) >> (8))) & (65535));
916 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
920 long value
= fields
->f_dsp_32_u16
;
921 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
922 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 16, 32, total_length
, buffer
);
928 case M32C_OPERAND_DSP_24_U8
:
929 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
931 case M32C_OPERAND_DSP_32_S16
:
933 long value
= fields
->f_dsp_32_s16
;
934 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
935 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 16, 32, total_length
, buffer
);
938 case M32C_OPERAND_DSP_32_S8
:
939 errmsg
= insert_normal (cd
, fields
->f_dsp_32_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 8, 32, total_length
, buffer
);
941 case M32C_OPERAND_DSP_32_U16
:
943 long value
= fields
->f_dsp_32_u16
;
944 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
945 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 16, 32, total_length
, buffer
);
948 case M32C_OPERAND_DSP_32_U20
:
950 long value
= fields
->f_dsp_32_u24
;
951 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
952 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 24, 32, total_length
, buffer
);
955 case M32C_OPERAND_DSP_32_U24
:
957 long value
= fields
->f_dsp_32_u24
;
958 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
959 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 24, 32, total_length
, buffer
);
962 case M32C_OPERAND_DSP_32_U8
:
963 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
965 case M32C_OPERAND_DSP_40_S16
:
967 long value
= fields
->f_dsp_40_s16
;
968 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
969 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 8, 16, 32, total_length
, buffer
);
972 case M32C_OPERAND_DSP_40_S8
:
973 errmsg
= insert_normal (cd
, fields
->f_dsp_40_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 8, 8, 32, total_length
, buffer
);
975 case M32C_OPERAND_DSP_40_U16
:
977 long value
= fields
->f_dsp_40_u16
;
978 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
979 errmsg
= insert_normal (cd
, value
, 0, 32, 8, 16, 32, total_length
, buffer
);
982 case M32C_OPERAND_DSP_40_U24
:
984 long value
= fields
->f_dsp_40_u24
;
985 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
986 errmsg
= insert_normal (cd
, value
, 0, 32, 8, 24, 32, total_length
, buffer
);
989 case M32C_OPERAND_DSP_40_U8
:
990 errmsg
= insert_normal (cd
, fields
->f_dsp_40_u8
, 0, 32, 8, 8, 32, total_length
, buffer
);
992 case M32C_OPERAND_DSP_48_S16
:
994 long value
= fields
->f_dsp_48_s16
;
995 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
996 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 16, 16, 32, total_length
, buffer
);
999 case M32C_OPERAND_DSP_48_S8
:
1000 errmsg
= insert_normal (cd
, fields
->f_dsp_48_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 16, 8, 32, total_length
, buffer
);
1002 case M32C_OPERAND_DSP_48_U16
:
1004 long value
= fields
->f_dsp_48_u16
;
1005 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1006 errmsg
= insert_normal (cd
, value
, 0, 32, 16, 16, 32, total_length
, buffer
);
1009 case M32C_OPERAND_DSP_48_U24
:
1012 FLD (f_dsp_64_u8
) = ((((unsigned int) (FLD (f_dsp_48_u24
)) >> (16))) & (255));
1013 FLD (f_dsp_48_u16
) = ((FLD (f_dsp_48_u24
)) & (65535));
1016 long value
= fields
->f_dsp_48_u16
;
1017 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1018 errmsg
= insert_normal (cd
, value
, 0, 32, 16, 16, 32, total_length
, buffer
);
1022 errmsg
= insert_normal (cd
, fields
->f_dsp_64_u8
, 0, 64, 0, 8, 32, total_length
, buffer
);
1027 case M32C_OPERAND_DSP_48_U8
:
1028 errmsg
= insert_normal (cd
, fields
->f_dsp_48_u8
, 0, 32, 16, 8, 32, total_length
, buffer
);
1030 case M32C_OPERAND_DSP_8_S24
:
1032 long value
= fields
->f_dsp_8_s24
;
1033 value
= ((((((unsigned int) (value
) >> (16))) | (((value
) & (65280))))) | (((EXTQISI (TRUNCSIQI (((value
) & (255))))) << (16))));
1034 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 24, 32, total_length
, buffer
);
1037 case M32C_OPERAND_DSP_8_S8
:
1038 errmsg
= insert_normal (cd
, fields
->f_dsp_8_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 8, 32, total_length
, buffer
);
1040 case M32C_OPERAND_DSP_8_U16
:
1042 long value
= fields
->f_dsp_8_u16
;
1043 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1044 errmsg
= insert_normal (cd
, value
, 0, 0, 8, 16, 32, total_length
, buffer
);
1047 case M32C_OPERAND_DSP_8_U24
:
1049 long value
= fields
->f_dsp_8_u24
;
1050 value
= ((((((unsigned int) (value
) >> (16))) | (((value
) & (65280))))) | (((((value
) & (255))) << (16))));
1051 errmsg
= insert_normal (cd
, value
, 0, 0, 8, 24, 32, total_length
, buffer
);
1054 case M32C_OPERAND_DSP_8_U6
:
1055 errmsg
= insert_normal (cd
, fields
->f_dsp_8_u6
, 0, 0, 8, 6, 32, total_length
, buffer
);
1057 case M32C_OPERAND_DSP_8_U8
:
1058 errmsg
= insert_normal (cd
, fields
->f_dsp_8_u8
, 0, 0, 8, 8, 32, total_length
, buffer
);
1060 case M32C_OPERAND_DST16AN
:
1061 errmsg
= insert_normal (cd
, fields
->f_dst16_an
, 0, 0, 15, 1, 32, total_length
, buffer
);
1063 case M32C_OPERAND_DST16AN_S
:
1064 errmsg
= insert_normal (cd
, fields
->f_dst16_an_s
, 0, 0, 4, 1, 32, total_length
, buffer
);
1066 case M32C_OPERAND_DST16ANHI
:
1067 errmsg
= insert_normal (cd
, fields
->f_dst16_an
, 0, 0, 15, 1, 32, total_length
, buffer
);
1069 case M32C_OPERAND_DST16ANQI
:
1070 errmsg
= insert_normal (cd
, fields
->f_dst16_an
, 0, 0, 15, 1, 32, total_length
, buffer
);
1072 case M32C_OPERAND_DST16ANQI_S
:
1073 errmsg
= insert_normal (cd
, fields
->f_dst16_rn_QI_s
, 0, 0, 5, 1, 32, total_length
, buffer
);
1075 case M32C_OPERAND_DST16ANSI
:
1076 errmsg
= insert_normal (cd
, fields
->f_dst16_an
, 0, 0, 15, 1, 32, total_length
, buffer
);
1078 case M32C_OPERAND_DST16RNEXTQI
:
1079 errmsg
= insert_normal (cd
, fields
->f_dst16_rn_ext
, 0, 0, 14, 1, 32, total_length
, buffer
);
1081 case M32C_OPERAND_DST16RNHI
:
1082 errmsg
= insert_normal (cd
, fields
->f_dst16_rn
, 0, 0, 14, 2, 32, total_length
, buffer
);
1084 case M32C_OPERAND_DST16RNQI
:
1085 errmsg
= insert_normal (cd
, fields
->f_dst16_rn
, 0, 0, 14, 2, 32, total_length
, buffer
);
1087 case M32C_OPERAND_DST16RNQI_S
:
1088 errmsg
= insert_normal (cd
, fields
->f_dst16_rn_QI_s
, 0, 0, 5, 1, 32, total_length
, buffer
);
1090 case M32C_OPERAND_DST16RNSI
:
1091 errmsg
= insert_normal (cd
, fields
->f_dst16_rn
, 0, 0, 14, 2, 32, total_length
, buffer
);
1093 case M32C_OPERAND_DST32ANEXTUNPREFIXED
:
1094 errmsg
= insert_normal (cd
, fields
->f_dst32_an_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1096 case M32C_OPERAND_DST32ANPREFIXED
:
1097 errmsg
= insert_normal (cd
, fields
->f_dst32_an_prefixed
, 0, 0, 17, 1, 32, total_length
, buffer
);
1099 case M32C_OPERAND_DST32ANPREFIXEDHI
:
1100 errmsg
= insert_normal (cd
, fields
->f_dst32_an_prefixed
, 0, 0, 17, 1, 32, total_length
, buffer
);
1102 case M32C_OPERAND_DST32ANPREFIXEDQI
:
1103 errmsg
= insert_normal (cd
, fields
->f_dst32_an_prefixed
, 0, 0, 17, 1, 32, total_length
, buffer
);
1105 case M32C_OPERAND_DST32ANPREFIXEDSI
:
1106 errmsg
= insert_normal (cd
, fields
->f_dst32_an_prefixed
, 0, 0, 17, 1, 32, total_length
, buffer
);
1108 case M32C_OPERAND_DST32ANUNPREFIXED
:
1109 errmsg
= insert_normal (cd
, fields
->f_dst32_an_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1111 case M32C_OPERAND_DST32ANUNPREFIXEDHI
:
1112 errmsg
= insert_normal (cd
, fields
->f_dst32_an_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1114 case M32C_OPERAND_DST32ANUNPREFIXEDQI
:
1115 errmsg
= insert_normal (cd
, fields
->f_dst32_an_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1117 case M32C_OPERAND_DST32ANUNPREFIXEDSI
:
1118 errmsg
= insert_normal (cd
, fields
->f_dst32_an_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1120 case M32C_OPERAND_DST32R0HI_S
:
1122 case M32C_OPERAND_DST32R0QI_S
:
1124 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI
:
1125 errmsg
= insert_normal (cd
, fields
->f_dst32_rn_ext_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1127 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI
:
1128 errmsg
= insert_normal (cd
, fields
->f_dst32_rn_ext_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1130 case M32C_OPERAND_DST32RNPREFIXEDHI
:
1132 long value
= fields
->f_dst32_rn_prefixed_HI
;
1133 value
= ((((value
) + (2))) % (4));
1134 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 2, 32, total_length
, buffer
);
1137 case M32C_OPERAND_DST32RNPREFIXEDQI
:
1139 long value
= fields
->f_dst32_rn_prefixed_QI
;
1140 value
= (((((((~ (value
))) << (1))) & (2))) | (((((unsigned int) (value
) >> (1))) & (1))));
1141 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 2, 32, total_length
, buffer
);
1144 case M32C_OPERAND_DST32RNPREFIXEDSI
:
1146 long value
= fields
->f_dst32_rn_prefixed_SI
;
1147 value
= ((value
) + (2));
1148 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 2, 32, total_length
, buffer
);
1151 case M32C_OPERAND_DST32RNUNPREFIXEDHI
:
1153 long value
= fields
->f_dst32_rn_unprefixed_HI
;
1154 value
= ((((value
) + (2))) % (4));
1155 errmsg
= insert_normal (cd
, value
, 0, 0, 8, 2, 32, total_length
, buffer
);
1158 case M32C_OPERAND_DST32RNUNPREFIXEDQI
:
1160 long value
= fields
->f_dst32_rn_unprefixed_QI
;
1161 value
= (((((((~ (value
))) << (1))) & (2))) | (((((unsigned int) (value
) >> (1))) & (1))));
1162 errmsg
= insert_normal (cd
, value
, 0, 0, 8, 2, 32, total_length
, buffer
);
1165 case M32C_OPERAND_DST32RNUNPREFIXEDSI
:
1167 long value
= fields
->f_dst32_rn_unprefixed_SI
;
1168 value
= ((value
) + (2));
1169 errmsg
= insert_normal (cd
, value
, 0, 0, 8, 2, 32, total_length
, buffer
);
1172 case M32C_OPERAND_G
:
1174 case M32C_OPERAND_IMM_12_S4
:
1175 errmsg
= insert_normal (cd
, fields
->f_imm_12_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 12, 4, 32, total_length
, buffer
);
1177 case M32C_OPERAND_IMM_13_U3
:
1178 errmsg
= insert_normal (cd
, fields
->f_imm_13_u3
, 0, 0, 13, 3, 32, total_length
, buffer
);
1180 case M32C_OPERAND_IMM_16_HI
:
1182 long value
= fields
->f_dsp_16_s16
;
1183 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
1184 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 16, 32, total_length
, buffer
);
1187 case M32C_OPERAND_IMM_16_QI
:
1188 errmsg
= insert_normal (cd
, fields
->f_dsp_16_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 8, 32, total_length
, buffer
);
1190 case M32C_OPERAND_IMM_16_SI
:
1193 FLD (f_dsp_32_u16
) = ((((unsigned int) (FLD (f_dsp_16_s32
)) >> (16))) & (65535));
1194 FLD (f_dsp_16_u16
) = ((FLD (f_dsp_16_s32
)) & (65535));
1197 long value
= fields
->f_dsp_16_u16
;
1198 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1199 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
1204 long value
= fields
->f_dsp_32_u16
;
1205 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1206 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 16, 32, total_length
, buffer
);
1212 case M32C_OPERAND_IMM_20_S4
:
1213 errmsg
= insert_normal (cd
, fields
->f_imm_20_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 20, 4, 32, total_length
, buffer
);
1215 case M32C_OPERAND_IMM_24_HI
:
1218 FLD (f_dsp_24_u8
) = ((FLD (f_dsp_24_s16
)) & (255));
1219 FLD (f_dsp_32_u8
) = ((((unsigned int) (FLD (f_dsp_24_s16
)) >> (8))) & (255));
1221 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
1224 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
1229 case M32C_OPERAND_IMM_24_QI
:
1230 errmsg
= insert_normal (cd
, fields
->f_dsp_24_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 24, 8, 32, total_length
, buffer
);
1232 case M32C_OPERAND_IMM_24_SI
:
1235 FLD (f_dsp_32_u24
) = ((((unsigned int) (FLD (f_dsp_24_s32
)) >> (8))) & (16777215));
1236 FLD (f_dsp_24_u8
) = ((FLD (f_dsp_24_s32
)) & (255));
1238 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
1242 long value
= fields
->f_dsp_32_u24
;
1243 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
1244 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 24, 32, total_length
, buffer
);
1250 case M32C_OPERAND_IMM_32_HI
:
1252 long value
= fields
->f_dsp_32_s16
;
1253 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
1254 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 16, 32, total_length
, buffer
);
1257 case M32C_OPERAND_IMM_32_QI
:
1258 errmsg
= insert_normal (cd
, fields
->f_dsp_32_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 8, 32, total_length
, buffer
);
1260 case M32C_OPERAND_IMM_32_SI
:
1262 long value
= fields
->f_dsp_32_s32
;
1263 value
= EXTSISI (((((((((unsigned int) (value
) >> (24))) & (255))) | (((((unsigned int) (value
) >> (8))) & (65280))))) | (((((((value
) << (8))) & (16711680))) | (((((value
) << (24))) & (0xff000000)))))));
1264 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 32, 32, total_length
, buffer
);
1267 case M32C_OPERAND_IMM_40_HI
:
1269 long value
= fields
->f_dsp_40_s16
;
1270 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
1271 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 8, 16, 32, total_length
, buffer
);
1274 case M32C_OPERAND_IMM_40_QI
:
1275 errmsg
= insert_normal (cd
, fields
->f_dsp_40_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 8, 8, 32, total_length
, buffer
);
1277 case M32C_OPERAND_IMM_40_SI
:
1280 FLD (f_dsp_64_u8
) = ((((unsigned int) (FLD (f_dsp_40_s32
)) >> (24))) & (255));
1281 FLD (f_dsp_40_u24
) = ((FLD (f_dsp_40_s32
)) & (16777215));
1284 long value
= fields
->f_dsp_40_u24
;
1285 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
1286 errmsg
= insert_normal (cd
, value
, 0, 32, 8, 24, 32, total_length
, buffer
);
1290 errmsg
= insert_normal (cd
, fields
->f_dsp_64_u8
, 0, 64, 0, 8, 32, total_length
, buffer
);
1295 case M32C_OPERAND_IMM_48_HI
:
1297 long value
= fields
->f_dsp_48_s16
;
1298 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
1299 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 16, 16, 32, total_length
, buffer
);
1302 case M32C_OPERAND_IMM_48_QI
:
1303 errmsg
= insert_normal (cd
, fields
->f_dsp_48_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 16, 8, 32, total_length
, buffer
);
1305 case M32C_OPERAND_IMM_48_SI
:
1308 FLD (f_dsp_64_u16
) = ((((unsigned int) (FLD (f_dsp_48_s32
)) >> (16))) & (65535));
1309 FLD (f_dsp_48_u16
) = ((FLD (f_dsp_48_s32
)) & (65535));
1312 long value
= fields
->f_dsp_48_u16
;
1313 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1314 errmsg
= insert_normal (cd
, value
, 0, 32, 16, 16, 32, total_length
, buffer
);
1319 long value
= fields
->f_dsp_64_u16
;
1320 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1321 errmsg
= insert_normal (cd
, value
, 0, 64, 0, 16, 32, total_length
, buffer
);
1327 case M32C_OPERAND_IMM_56_HI
:
1330 FLD (f_dsp_56_u8
) = ((FLD (f_dsp_56_s16
)) & (255));
1331 FLD (f_dsp_64_u8
) = ((((unsigned int) (FLD (f_dsp_56_s16
)) >> (8))) & (255));
1333 errmsg
= insert_normal (cd
, fields
->f_dsp_56_u8
, 0, 32, 24, 8, 32, total_length
, buffer
);
1336 errmsg
= insert_normal (cd
, fields
->f_dsp_64_u8
, 0, 64, 0, 8, 32, total_length
, buffer
);
1341 case M32C_OPERAND_IMM_56_QI
:
1342 errmsg
= insert_normal (cd
, fields
->f_dsp_56_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 24, 8, 32, total_length
, buffer
);
1344 case M32C_OPERAND_IMM_64_HI
:
1346 long value
= fields
->f_dsp_64_s16
;
1347 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
1348 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 64, 0, 16, 32, total_length
, buffer
);
1351 case M32C_OPERAND_IMM_8_HI
:
1353 long value
= fields
->f_dsp_8_s16
;
1354 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
1355 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 16, 32, total_length
, buffer
);
1358 case M32C_OPERAND_IMM_8_QI
:
1359 errmsg
= insert_normal (cd
, fields
->f_dsp_8_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 8, 32, total_length
, buffer
);
1361 case M32C_OPERAND_IMM_8_S4
:
1362 errmsg
= insert_normal (cd
, fields
->f_imm_8_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 4, 32, total_length
, buffer
);
1364 case M32C_OPERAND_IMM_SH_12_S4
:
1365 errmsg
= insert_normal (cd
, fields
->f_imm_12_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 12, 4, 32, total_length
, buffer
);
1367 case M32C_OPERAND_IMM_SH_20_S4
:
1368 errmsg
= insert_normal (cd
, fields
->f_imm_20_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 20, 4, 32, total_length
, buffer
);
1370 case M32C_OPERAND_IMM_SH_8_S4
:
1371 errmsg
= insert_normal (cd
, fields
->f_imm_8_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 4, 32, total_length
, buffer
);
1373 case M32C_OPERAND_IMM1_S
:
1375 long value
= fields
->f_imm1_S
;
1376 value
= ((value
) - (1));
1377 errmsg
= insert_normal (cd
, value
, 0, 0, 2, 1, 32, total_length
, buffer
);
1380 case M32C_OPERAND_IMM3_S
:
1383 FLD (f_7_1
) = ((((FLD (f_imm3_S
)) - (1))) & (1));
1384 FLD (f_2_2
) = ((((unsigned int) (((FLD (f_imm3_S
)) - (1))) >> (1))) & (3));
1386 errmsg
= insert_normal (cd
, fields
->f_2_2
, 0, 0, 2, 2, 32, total_length
, buffer
);
1389 errmsg
= insert_normal (cd
, fields
->f_7_1
, 0, 0, 7, 1, 32, total_length
, buffer
);
1394 case M32C_OPERAND_LAB_16_8
:
1396 long value
= fields
->f_lab_16_8
;
1397 value
= ((value
) - (((pc
) + (2))));
1398 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
)|(1<<CGEN_IFLD_PCREL_ADDR
), 0, 16, 8, 32, total_length
, buffer
);
1401 case M32C_OPERAND_LAB_24_8
:
1403 long value
= fields
->f_lab_24_8
;
1404 value
= ((value
) - (((pc
) + (2))));
1405 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
)|(1<<CGEN_IFLD_PCREL_ADDR
), 0, 24, 8, 32, total_length
, buffer
);
1408 case M32C_OPERAND_LAB_32_8
:
1410 long value
= fields
->f_lab_32_8
;
1411 value
= ((value
) - (((pc
) + (2))));
1412 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
)|(1<<CGEN_IFLD_PCREL_ADDR
), 32, 0, 8, 32, total_length
, buffer
);
1415 case M32C_OPERAND_LAB_40_8
:
1417 long value
= fields
->f_lab_40_8
;
1418 value
= ((value
) - (((pc
) + (2))));
1419 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
)|(1<<CGEN_IFLD_PCREL_ADDR
), 32, 8, 8, 32, total_length
, buffer
);
1422 case M32C_OPERAND_LAB_5_3
:
1424 long value
= fields
->f_lab_5_3
;
1425 value
= ((value
) - (((pc
) + (2))));
1426 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_PCREL_ADDR
), 0, 5, 3, 32, total_length
, buffer
);
1429 case M32C_OPERAND_LAB_8_16
:
1431 long value
= fields
->f_lab_8_16
;
1432 value
= ((((((((value
) - (((pc
) + (1))))) & (255))) << (8))) | (((unsigned int) (((((value
) - (((pc
) + (1))))) & (65535))) >> (8))));
1433 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGN_OPT
)|(1<<CGEN_IFLD_PCREL_ADDR
), 0, 8, 16, 32, total_length
, buffer
);
1436 case M32C_OPERAND_LAB_8_24
:
1438 long value
= fields
->f_lab_8_24
;
1439 value
= ((((((unsigned int) (value
) >> (16))) | (((value
) & (65280))))) | (((((value
) & (255))) << (16))));
1440 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_ABS_ADDR
), 0, 8, 24, 32, total_length
, buffer
);
1443 case M32C_OPERAND_LAB_8_8
:
1445 long value
= fields
->f_lab_8_8
;
1446 value
= ((value
) - (((pc
) + (1))));
1447 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
)|(1<<CGEN_IFLD_PCREL_ADDR
), 0, 8, 8, 32, total_length
, buffer
);
1450 case M32C_OPERAND_LAB32_JMP_S
:
1454 tmp_val
= ((((FLD (f_lab32_jmp_s
)) - (pc
))) - (2));
1455 FLD (f_7_1
) = ((tmp_val
) & (1));
1456 FLD (f_2_2
) = ((unsigned int) (tmp_val
) >> (1));
1458 errmsg
= insert_normal (cd
, fields
->f_2_2
, 0, 0, 2, 2, 32, total_length
, buffer
);
1461 errmsg
= insert_normal (cd
, fields
->f_7_1
, 0, 0, 7, 1, 32, total_length
, buffer
);
1466 case M32C_OPERAND_Q
:
1468 case M32C_OPERAND_R0
:
1470 case M32C_OPERAND_R0H
:
1472 case M32C_OPERAND_R0L
:
1474 case M32C_OPERAND_R1
:
1476 case M32C_OPERAND_R1R2R0
:
1478 case M32C_OPERAND_R2
:
1480 case M32C_OPERAND_R2R0
:
1482 case M32C_OPERAND_R3
:
1484 case M32C_OPERAND_R3R1
:
1486 case M32C_OPERAND_REGSETPOP
:
1487 errmsg
= insert_normal (cd
, fields
->f_8_8
, 0, 0, 8, 8, 32, total_length
, buffer
);
1489 case M32C_OPERAND_REGSETPUSH
:
1490 errmsg
= insert_normal (cd
, fields
->f_8_8
, 0, 0, 8, 8, 32, total_length
, buffer
);
1492 case M32C_OPERAND_RN16_PUSH_S
:
1493 errmsg
= insert_normal (cd
, fields
->f_4_1
, 0, 0, 4, 1, 32, total_length
, buffer
);
1495 case M32C_OPERAND_S
:
1497 case M32C_OPERAND_SRC16AN
:
1498 errmsg
= insert_normal (cd
, fields
->f_src16_an
, 0, 0, 11, 1, 32, total_length
, buffer
);
1500 case M32C_OPERAND_SRC16ANHI
:
1501 errmsg
= insert_normal (cd
, fields
->f_src16_an
, 0, 0, 11, 1, 32, total_length
, buffer
);
1503 case M32C_OPERAND_SRC16ANQI
:
1504 errmsg
= insert_normal (cd
, fields
->f_src16_an
, 0, 0, 11, 1, 32, total_length
, buffer
);
1506 case M32C_OPERAND_SRC16RNHI
:
1507 errmsg
= insert_normal (cd
, fields
->f_src16_rn
, 0, 0, 10, 2, 32, total_length
, buffer
);
1509 case M32C_OPERAND_SRC16RNQI
:
1510 errmsg
= insert_normal (cd
, fields
->f_src16_rn
, 0, 0, 10, 2, 32, total_length
, buffer
);
1512 case M32C_OPERAND_SRC32ANPREFIXED
:
1513 errmsg
= insert_normal (cd
, fields
->f_src32_an_prefixed
, 0, 0, 19, 1, 32, total_length
, buffer
);
1515 case M32C_OPERAND_SRC32ANPREFIXEDHI
:
1516 errmsg
= insert_normal (cd
, fields
->f_src32_an_prefixed
, 0, 0, 19, 1, 32, total_length
, buffer
);
1518 case M32C_OPERAND_SRC32ANPREFIXEDQI
:
1519 errmsg
= insert_normal (cd
, fields
->f_src32_an_prefixed
, 0, 0, 19, 1, 32, total_length
, buffer
);
1521 case M32C_OPERAND_SRC32ANPREFIXEDSI
:
1522 errmsg
= insert_normal (cd
, fields
->f_src32_an_prefixed
, 0, 0, 19, 1, 32, total_length
, buffer
);
1524 case M32C_OPERAND_SRC32ANUNPREFIXED
:
1525 errmsg
= insert_normal (cd
, fields
->f_src32_an_unprefixed
, 0, 0, 11, 1, 32, total_length
, buffer
);
1527 case M32C_OPERAND_SRC32ANUNPREFIXEDHI
:
1528 errmsg
= insert_normal (cd
, fields
->f_src32_an_unprefixed
, 0, 0, 11, 1, 32, total_length
, buffer
);
1530 case M32C_OPERAND_SRC32ANUNPREFIXEDQI
:
1531 errmsg
= insert_normal (cd
, fields
->f_src32_an_unprefixed
, 0, 0, 11, 1, 32, total_length
, buffer
);
1533 case M32C_OPERAND_SRC32ANUNPREFIXEDSI
:
1534 errmsg
= insert_normal (cd
, fields
->f_src32_an_unprefixed
, 0, 0, 11, 1, 32, total_length
, buffer
);
1536 case M32C_OPERAND_SRC32RNPREFIXEDHI
:
1538 long value
= fields
->f_src32_rn_prefixed_HI
;
1539 value
= ((((value
) + (2))) % (4));
1540 errmsg
= insert_normal (cd
, value
, 0, 0, 18, 2, 32, total_length
, buffer
);
1543 case M32C_OPERAND_SRC32RNPREFIXEDQI
:
1545 long value
= fields
->f_src32_rn_prefixed_QI
;
1546 value
= (((((((~ (value
))) << (1))) & (2))) | (((((unsigned int) (value
) >> (1))) & (1))));
1547 errmsg
= insert_normal (cd
, value
, 0, 0, 18, 2, 32, total_length
, buffer
);
1550 case M32C_OPERAND_SRC32RNPREFIXEDSI
:
1552 long value
= fields
->f_src32_rn_prefixed_SI
;
1553 value
= ((value
) + (2));
1554 errmsg
= insert_normal (cd
, value
, 0, 0, 18, 2, 32, total_length
, buffer
);
1557 case M32C_OPERAND_SRC32RNUNPREFIXEDHI
:
1559 long value
= fields
->f_src32_rn_unprefixed_HI
;
1560 value
= ((((value
) + (2))) % (4));
1561 errmsg
= insert_normal (cd
, value
, 0, 0, 10, 2, 32, total_length
, buffer
);
1564 case M32C_OPERAND_SRC32RNUNPREFIXEDQI
:
1566 long value
= fields
->f_src32_rn_unprefixed_QI
;
1567 value
= (((((((~ (value
))) << (1))) & (2))) | (((((unsigned int) (value
) >> (1))) & (1))));
1568 errmsg
= insert_normal (cd
, value
, 0, 0, 10, 2, 32, total_length
, buffer
);
1571 case M32C_OPERAND_SRC32RNUNPREFIXEDSI
:
1573 long value
= fields
->f_src32_rn_unprefixed_SI
;
1574 value
= ((value
) + (2));
1575 errmsg
= insert_normal (cd
, value
, 0, 0, 10, 2, 32, total_length
, buffer
);
1578 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL
:
1579 errmsg
= insert_normal (cd
, fields
->f_5_1
, 0, 0, 5, 1, 32, total_length
, buffer
);
1581 case M32C_OPERAND_X
:
1583 case M32C_OPERAND_Z
:
1585 case M32C_OPERAND_COND16_16
:
1586 errmsg
= insert_normal (cd
, fields
->f_dsp_16_u8
, 0, 0, 16, 8, 32, total_length
, buffer
);
1588 case M32C_OPERAND_COND16_24
:
1589 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
1591 case M32C_OPERAND_COND16_32
:
1592 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
1594 case M32C_OPERAND_COND16C
:
1595 errmsg
= insert_normal (cd
, fields
->f_cond16
, 0, 0, 12, 4, 32, total_length
, buffer
);
1597 case M32C_OPERAND_COND16J
:
1598 errmsg
= insert_normal (cd
, fields
->f_cond16
, 0, 0, 12, 4, 32, total_length
, buffer
);
1600 case M32C_OPERAND_COND16J5
:
1601 errmsg
= insert_normal (cd
, fields
->f_cond16j_5
, 0, 0, 5, 3, 32, total_length
, buffer
);
1603 case M32C_OPERAND_COND32
:
1606 FLD (f_9_1
) = ((((unsigned int) (FLD (f_cond32
)) >> (3))) & (1));
1607 FLD (f_13_3
) = ((FLD (f_cond32
)) & (7));
1609 errmsg
= insert_normal (cd
, fields
->f_9_1
, 0, 0, 9, 1, 32, total_length
, buffer
);
1612 errmsg
= insert_normal (cd
, fields
->f_13_3
, 0, 0, 13, 3, 32, total_length
, buffer
);
1617 case M32C_OPERAND_COND32_16
:
1618 errmsg
= insert_normal (cd
, fields
->f_dsp_16_u8
, 0, 0, 16, 8, 32, total_length
, buffer
);
1620 case M32C_OPERAND_COND32_24
:
1621 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
1623 case M32C_OPERAND_COND32_32
:
1624 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
1626 case M32C_OPERAND_COND32_40
:
1627 errmsg
= insert_normal (cd
, fields
->f_dsp_40_u8
, 0, 32, 8, 8, 32, total_length
, buffer
);
1629 case M32C_OPERAND_COND32J
:
1632 FLD (f_1_3
) = ((((unsigned int) (FLD (f_cond32j
)) >> (1))) & (7));
1633 FLD (f_7_1
) = ((FLD (f_cond32j
)) & (1));
1635 errmsg
= insert_normal (cd
, fields
->f_1_3
, 0, 0, 1, 3, 32, total_length
, buffer
);
1638 errmsg
= insert_normal (cd
, fields
->f_7_1
, 0, 0, 7, 1, 32, total_length
, buffer
);
1643 case M32C_OPERAND_CR1_PREFIXED_32
:
1644 errmsg
= insert_normal (cd
, fields
->f_21_3
, 0, 0, 21, 3, 32, total_length
, buffer
);
1646 case M32C_OPERAND_CR1_UNPREFIXED_32
:
1647 errmsg
= insert_normal (cd
, fields
->f_13_3
, 0, 0, 13, 3, 32, total_length
, buffer
);
1649 case M32C_OPERAND_CR16
:
1650 errmsg
= insert_normal (cd
, fields
->f_9_3
, 0, 0, 9, 3, 32, total_length
, buffer
);
1652 case M32C_OPERAND_CR2_32
:
1653 errmsg
= insert_normal (cd
, fields
->f_13_3
, 0, 0, 13, 3, 32, total_length
, buffer
);
1655 case M32C_OPERAND_CR3_PREFIXED_32
:
1656 errmsg
= insert_normal (cd
, fields
->f_21_3
, 0, 0, 21, 3, 32, total_length
, buffer
);
1658 case M32C_OPERAND_CR3_UNPREFIXED_32
:
1659 errmsg
= insert_normal (cd
, fields
->f_13_3
, 0, 0, 13, 3, 32, total_length
, buffer
);
1661 case M32C_OPERAND_FLAGS16
:
1662 errmsg
= insert_normal (cd
, fields
->f_9_3
, 0, 0, 9, 3, 32, total_length
, buffer
);
1664 case M32C_OPERAND_FLAGS32
:
1665 errmsg
= insert_normal (cd
, fields
->f_13_3
, 0, 0, 13, 3, 32, total_length
, buffer
);
1667 case M32C_OPERAND_SCCOND32
:
1668 errmsg
= insert_normal (cd
, fields
->f_cond16
, 0, 0, 12, 4, 32, total_length
, buffer
);
1670 case M32C_OPERAND_SIZE
:
1674 /* xgettext:c-format */
1675 fprintf (stderr
, _("Unrecognized field %d while building insn.\n"),
1683 int m32c_cgen_extract_operand
1684 (CGEN_CPU_DESC
, int, CGEN_EXTRACT_INFO
*, CGEN_INSN_INT
, CGEN_FIELDS
*, bfd_vma
);
1686 /* Main entry point for operand extraction.
1687 The result is <= 0 for error, >0 for success.
1688 ??? Actual values aren't well defined right now.
1690 This function is basically just a big switch statement. Earlier versions
1691 used tables to look up the function to use, but
1692 - if the table contains both assembler and disassembler functions then
1693 the disassembler contains much of the assembler and vice-versa,
1694 - there's a lot of inlining possibilities as things grow,
1695 - using a switch statement avoids the function call overhead.
1697 This function could be moved into `print_insn_normal', but keeping it
1698 separate makes clear the interface between `print_insn_normal' and each of
1702 m32c_cgen_extract_operand (CGEN_CPU_DESC cd
,
1704 CGEN_EXTRACT_INFO
*ex_info
,
1705 CGEN_INSN_INT insn_value
,
1706 CGEN_FIELDS
* fields
,
1709 /* Assume success (for those operands that are nops). */
1711 unsigned int total_length
= CGEN_FIELDS_BITSIZE (fields
);
1715 case M32C_OPERAND_A0
:
1717 case M32C_OPERAND_A1
:
1719 case M32C_OPERAND_AN16_PUSH_S
:
1720 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 4, 1, 32, total_length
, pc
, & fields
->f_4_1
);
1722 case M32C_OPERAND_BIT16AN
:
1723 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 15, 1, 32, total_length
, pc
, & fields
->f_dst16_an
);
1725 case M32C_OPERAND_BIT16RN
:
1726 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 14, 2, 32, total_length
, pc
, & fields
->f_dst16_rn
);
1728 case M32C_OPERAND_BIT32ANPREFIXED
:
1729 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 17, 1, 32, total_length
, pc
, & fields
->f_dst32_an_prefixed
);
1731 case M32C_OPERAND_BIT32ANUNPREFIXED
:
1732 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_an_unprefixed
);
1734 case M32C_OPERAND_BIT32RNPREFIXED
:
1737 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 2, 32, total_length
, pc
, & value
);
1738 value
= (((((~ (((unsigned int) (value
) >> (1))))) & (1))) | (((((value
) << (1))) & (2))));
1739 fields
->f_dst32_rn_prefixed_QI
= value
;
1742 case M32C_OPERAND_BIT32RNUNPREFIXED
:
1745 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 2, 32, total_length
, pc
, & value
);
1746 value
= (((((~ (((unsigned int) (value
) >> (1))))) & (1))) | (((((value
) << (1))) & (2))));
1747 fields
->f_dst32_rn_unprefixed_QI
= value
;
1750 case M32C_OPERAND_BITBASE16_16_S8
:
1751 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
);
1753 case M32C_OPERAND_BITBASE16_16_U16
:
1756 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
1757 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1758 fields
->f_dsp_16_u16
= value
;
1761 case M32C_OPERAND_BITBASE16_16_U8
:
1762 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_16_u8
);
1764 case M32C_OPERAND_BITBASE16_8_U11_S
:
1766 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 5, 3, 32, total_length
, pc
, & fields
->f_bitno16_S
);
1767 if (length
<= 0) break;
1768 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 8, 32, total_length
, pc
, & fields
->f_dsp_8_u8
);
1769 if (length
<= 0) break;
1771 FLD (f_bitbase16_u11_S
) = ((((FLD (f_dsp_8_u8
)) << (3))) | (FLD (f_bitno16_S
)));
1775 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED
:
1777 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_bitno32_unprefixed
);
1778 if (length
<= 0) break;
1779 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
);
1780 if (length
<= 0) break;
1782 FLD (f_bitbase32_16_s11_unprefixed
) = ((((FLD (f_dsp_16_s8
)) << (3))) | (FLD (f_bitno32_unprefixed
)));
1786 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED
:
1788 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_bitno32_unprefixed
);
1789 if (length
<= 0) break;
1792 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 16, 32, total_length
, pc
, & value
);
1793 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
1794 fields
->f_dsp_16_s16
= value
;
1796 if (length
<= 0) break;
1798 FLD (f_bitbase32_16_s19_unprefixed
) = ((((FLD (f_dsp_16_s16
)) << (3))) | (FLD (f_bitno32_unprefixed
)));
1802 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED
:
1804 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_bitno32_unprefixed
);
1805 if (length
<= 0) break;
1806 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_16_u8
);
1807 if (length
<= 0) break;
1809 FLD (f_bitbase32_16_u11_unprefixed
) = ((((FLD (f_dsp_16_u8
)) << (3))) | (FLD (f_bitno32_unprefixed
)));
1813 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED
:
1815 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_bitno32_unprefixed
);
1816 if (length
<= 0) break;
1819 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
1820 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1821 fields
->f_dsp_16_u16
= value
;
1823 if (length
<= 0) break;
1825 FLD (f_bitbase32_16_u19_unprefixed
) = ((((FLD (f_dsp_16_u16
)) << (3))) | (FLD (f_bitno32_unprefixed
)));
1829 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED
:
1831 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_bitno32_unprefixed
);
1832 if (length
<= 0) break;
1835 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
1836 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1837 fields
->f_dsp_16_u16
= value
;
1839 if (length
<= 0) break;
1840 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
1841 if (length
<= 0) break;
1843 FLD (f_bitbase32_16_u27_unprefixed
) = ((((FLD (f_dsp_16_u16
)) << (3))) | (((((FLD (f_dsp_32_u8
)) << (19))) | (FLD (f_bitno32_unprefixed
)))));
1847 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED
:
1849 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_bitno32_prefixed
);
1850 if (length
<= 0) break;
1851 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
);
1852 if (length
<= 0) break;
1854 FLD (f_bitbase32_24_s11_prefixed
) = ((((FLD (f_dsp_24_s8
)) << (3))) | (FLD (f_bitno32_prefixed
)));
1858 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED
:
1860 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_bitno32_prefixed
);
1861 if (length
<= 0) break;
1862 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
1863 if (length
<= 0) break;
1864 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
);
1865 if (length
<= 0) break;
1867 FLD (f_bitbase32_24_s19_prefixed
) = ((((FLD (f_dsp_24_u8
)) << (3))) | (((((FLD (f_dsp_32_s8
)) << (11))) | (FLD (f_bitno32_prefixed
)))));
1871 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED
:
1873 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_bitno32_prefixed
);
1874 if (length
<= 0) break;
1875 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
1876 if (length
<= 0) break;
1878 FLD (f_bitbase32_24_u11_prefixed
) = ((((FLD (f_dsp_24_u8
)) << (3))) | (FLD (f_bitno32_prefixed
)));
1882 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED
:
1884 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_bitno32_prefixed
);
1885 if (length
<= 0) break;
1886 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
1887 if (length
<= 0) break;
1888 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
1889 if (length
<= 0) break;
1891 FLD (f_bitbase32_24_u19_prefixed
) = ((((FLD (f_dsp_24_u8
)) << (3))) | (((((FLD (f_dsp_32_u8
)) << (11))) | (FLD (f_bitno32_prefixed
)))));
1895 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED
:
1897 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_bitno32_prefixed
);
1898 if (length
<= 0) break;
1899 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
1900 if (length
<= 0) break;
1903 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 16, 32, total_length
, pc
, & value
);
1904 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1905 fields
->f_dsp_32_u16
= value
;
1907 if (length
<= 0) break;
1909 FLD (f_bitbase32_24_u27_prefixed
) = ((((FLD (f_dsp_24_u8
)) << (3))) | (((((FLD (f_dsp_32_u16
)) << (11))) | (FLD (f_bitno32_prefixed
)))));
1913 case M32C_OPERAND_BITNO16R
:
1914 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_16_u8
);
1916 case M32C_OPERAND_BITNO32PREFIXED
:
1917 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_bitno32_prefixed
);
1919 case M32C_OPERAND_BITNO32UNPREFIXED
:
1920 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_bitno32_unprefixed
);
1922 case M32C_OPERAND_DSP_10_U6
:
1923 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 10, 6, 32, total_length
, pc
, & fields
->f_dsp_10_u6
);
1925 case M32C_OPERAND_DSP_16_S16
:
1928 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 16, 32, total_length
, pc
, & value
);
1929 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
1930 fields
->f_dsp_16_s16
= value
;
1933 case M32C_OPERAND_DSP_16_S8
:
1934 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
);
1936 case M32C_OPERAND_DSP_16_U16
:
1939 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
1940 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1941 fields
->f_dsp_16_u16
= value
;
1944 case M32C_OPERAND_DSP_16_U20
:
1948 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
1949 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1950 fields
->f_dsp_16_u16
= value
;
1952 if (length
<= 0) break;
1953 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
1954 if (length
<= 0) break;
1956 FLD (f_dsp_16_u24
) = ((((FLD (f_dsp_32_u8
)) << (16))) | (FLD (f_dsp_16_u16
)));
1960 case M32C_OPERAND_DSP_16_U24
:
1964 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
1965 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1966 fields
->f_dsp_16_u16
= value
;
1968 if (length
<= 0) break;
1969 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
1970 if (length
<= 0) break;
1972 FLD (f_dsp_16_u24
) = ((((FLD (f_dsp_32_u8
)) << (16))) | (FLD (f_dsp_16_u16
)));
1976 case M32C_OPERAND_DSP_16_U8
:
1977 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_16_u8
);
1979 case M32C_OPERAND_DSP_24_S16
:
1981 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
1982 if (length
<= 0) break;
1983 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
1984 if (length
<= 0) break;
1986 FLD (f_dsp_24_s16
) = EXTHISI (((HI
) (UINT
) (((((FLD (f_dsp_32_u8
)) << (8))) | (FLD (f_dsp_24_u8
))))));
1990 case M32C_OPERAND_DSP_24_S8
:
1991 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
);
1993 case M32C_OPERAND_DSP_24_U16
:
1995 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
1996 if (length
<= 0) break;
1997 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
1998 if (length
<= 0) break;
2000 FLD (f_dsp_24_u16
) = ((((FLD (f_dsp_32_u8
)) << (8))) | (FLD (f_dsp_24_u8
)));
2004 case M32C_OPERAND_DSP_24_U20
:
2006 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2007 if (length
<= 0) break;
2010 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 16, 32, total_length
, pc
, & value
);
2011 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2012 fields
->f_dsp_32_u16
= value
;
2014 if (length
<= 0) break;
2016 FLD (f_dsp_24_u24
) = ((((FLD (f_dsp_32_u16
)) << (8))) | (FLD (f_dsp_24_u8
)));
2020 case M32C_OPERAND_DSP_24_U24
:
2022 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2023 if (length
<= 0) break;
2026 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 16, 32, total_length
, pc
, & value
);
2027 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2028 fields
->f_dsp_32_u16
= value
;
2030 if (length
<= 0) break;
2032 FLD (f_dsp_24_u24
) = ((((FLD (f_dsp_32_u16
)) << (8))) | (FLD (f_dsp_24_u8
)));
2036 case M32C_OPERAND_DSP_24_U8
:
2037 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2039 case M32C_OPERAND_DSP_32_S16
:
2042 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 16, 32, total_length
, pc
, & value
);
2043 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
2044 fields
->f_dsp_32_s16
= value
;
2047 case M32C_OPERAND_DSP_32_S8
:
2048 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
);
2050 case M32C_OPERAND_DSP_32_U16
:
2053 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 16, 32, total_length
, pc
, & value
);
2054 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2055 fields
->f_dsp_32_u16
= value
;
2058 case M32C_OPERAND_DSP_32_U20
:
2061 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 24, 32, total_length
, pc
, & value
);
2062 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
2063 fields
->f_dsp_32_u24
= value
;
2066 case M32C_OPERAND_DSP_32_U24
:
2069 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 24, 32, total_length
, pc
, & value
);
2070 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
2071 fields
->f_dsp_32_u24
= value
;
2074 case M32C_OPERAND_DSP_32_U8
:
2075 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
2077 case M32C_OPERAND_DSP_40_S16
:
2080 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 8, 16, 32, total_length
, pc
, & value
);
2081 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
2082 fields
->f_dsp_40_s16
= value
;
2085 case M32C_OPERAND_DSP_40_S8
:
2086 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
);
2088 case M32C_OPERAND_DSP_40_U16
:
2091 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 8, 16, 32, total_length
, pc
, & value
);
2092 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2093 fields
->f_dsp_40_u16
= value
;
2096 case M32C_OPERAND_DSP_40_U24
:
2099 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 8, 24, 32, total_length
, pc
, & value
);
2100 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
2101 fields
->f_dsp_40_u24
= value
;
2104 case M32C_OPERAND_DSP_40_U8
:
2105 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 8, 8, 32, total_length
, pc
, & fields
->f_dsp_40_u8
);
2107 case M32C_OPERAND_DSP_48_S16
:
2110 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 16, 16, 32, total_length
, pc
, & value
);
2111 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
2112 fields
->f_dsp_48_s16
= value
;
2115 case M32C_OPERAND_DSP_48_S8
:
2116 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
);
2118 case M32C_OPERAND_DSP_48_U16
:
2121 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 16, 16, 32, total_length
, pc
, & value
);
2122 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2123 fields
->f_dsp_48_u16
= value
;
2126 case M32C_OPERAND_DSP_48_U24
:
2130 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 16, 16, 32, total_length
, pc
, & value
);
2131 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2132 fields
->f_dsp_48_u16
= value
;
2134 if (length
<= 0) break;
2135 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 64, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_64_u8
);
2136 if (length
<= 0) break;
2138 FLD (f_dsp_48_u24
) = ((((FLD (f_dsp_48_u16
)) & (65535))) | (((((FLD (f_dsp_64_u8
)) << (16))) & (16711680))));
2142 case M32C_OPERAND_DSP_48_U8
:
2143 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_48_u8
);
2145 case M32C_OPERAND_DSP_8_S24
:
2148 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 24, 32, total_length
, pc
, & value
);
2149 value
= ((((((unsigned int) (value
) >> (16))) | (((value
) & (65280))))) | (((EXTQISI (TRUNCSIQI (((value
) & (255))))) << (16))));
2150 fields
->f_dsp_8_s24
= value
;
2153 case M32C_OPERAND_DSP_8_S8
:
2154 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
);
2156 case M32C_OPERAND_DSP_8_U16
:
2159 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 16, 32, total_length
, pc
, & value
);
2160 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2161 fields
->f_dsp_8_u16
= value
;
2164 case M32C_OPERAND_DSP_8_U24
:
2167 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 24, 32, total_length
, pc
, & value
);
2168 value
= ((((((unsigned int) (value
) >> (16))) | (((value
) & (65280))))) | (((((value
) & (255))) << (16))));
2169 fields
->f_dsp_8_u24
= value
;
2172 case M32C_OPERAND_DSP_8_U6
:
2173 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 6, 32, total_length
, pc
, & fields
->f_dsp_8_u6
);
2175 case M32C_OPERAND_DSP_8_U8
:
2176 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 8, 32, total_length
, pc
, & fields
->f_dsp_8_u8
);
2178 case M32C_OPERAND_DST16AN
:
2179 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 15, 1, 32, total_length
, pc
, & fields
->f_dst16_an
);
2181 case M32C_OPERAND_DST16AN_S
:
2182 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 4, 1, 32, total_length
, pc
, & fields
->f_dst16_an_s
);
2184 case M32C_OPERAND_DST16ANHI
:
2185 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 15, 1, 32, total_length
, pc
, & fields
->f_dst16_an
);
2187 case M32C_OPERAND_DST16ANQI
:
2188 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 15, 1, 32, total_length
, pc
, & fields
->f_dst16_an
);
2190 case M32C_OPERAND_DST16ANQI_S
:
2191 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 5, 1, 32, total_length
, pc
, & fields
->f_dst16_rn_QI_s
);
2193 case M32C_OPERAND_DST16ANSI
:
2194 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 15, 1, 32, total_length
, pc
, & fields
->f_dst16_an
);
2196 case M32C_OPERAND_DST16RNEXTQI
:
2197 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 14, 1, 32, total_length
, pc
, & fields
->f_dst16_rn_ext
);
2199 case M32C_OPERAND_DST16RNHI
:
2200 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 14, 2, 32, total_length
, pc
, & fields
->f_dst16_rn
);
2202 case M32C_OPERAND_DST16RNQI
:
2203 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 14, 2, 32, total_length
, pc
, & fields
->f_dst16_rn
);
2205 case M32C_OPERAND_DST16RNQI_S
:
2206 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 5, 1, 32, total_length
, pc
, & fields
->f_dst16_rn_QI_s
);
2208 case M32C_OPERAND_DST16RNSI
:
2209 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 14, 2, 32, total_length
, pc
, & fields
->f_dst16_rn
);
2211 case M32C_OPERAND_DST32ANEXTUNPREFIXED
:
2212 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_an_unprefixed
);
2214 case M32C_OPERAND_DST32ANPREFIXED
:
2215 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 17, 1, 32, total_length
, pc
, & fields
->f_dst32_an_prefixed
);
2217 case M32C_OPERAND_DST32ANPREFIXEDHI
:
2218 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 17, 1, 32, total_length
, pc
, & fields
->f_dst32_an_prefixed
);
2220 case M32C_OPERAND_DST32ANPREFIXEDQI
:
2221 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 17, 1, 32, total_length
, pc
, & fields
->f_dst32_an_prefixed
);
2223 case M32C_OPERAND_DST32ANPREFIXEDSI
:
2224 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 17, 1, 32, total_length
, pc
, & fields
->f_dst32_an_prefixed
);
2226 case M32C_OPERAND_DST32ANUNPREFIXED
:
2227 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_an_unprefixed
);
2229 case M32C_OPERAND_DST32ANUNPREFIXEDHI
:
2230 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_an_unprefixed
);
2232 case M32C_OPERAND_DST32ANUNPREFIXEDQI
:
2233 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_an_unprefixed
);
2235 case M32C_OPERAND_DST32ANUNPREFIXEDSI
:
2236 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_an_unprefixed
);
2238 case M32C_OPERAND_DST32R0HI_S
:
2240 case M32C_OPERAND_DST32R0QI_S
:
2242 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI
:
2243 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_rn_ext_unprefixed
);
2245 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI
:
2246 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_rn_ext_unprefixed
);
2248 case M32C_OPERAND_DST32RNPREFIXEDHI
:
2251 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 2, 32, total_length
, pc
, & value
);
2252 value
= ((((value
) + (2))) % (4));
2253 fields
->f_dst32_rn_prefixed_HI
= value
;
2256 case M32C_OPERAND_DST32RNPREFIXEDQI
:
2259 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 2, 32, total_length
, pc
, & value
);
2260 value
= (((((~ (((unsigned int) (value
) >> (1))))) & (1))) | (((((value
) << (1))) & (2))));
2261 fields
->f_dst32_rn_prefixed_QI
= value
;
2264 case M32C_OPERAND_DST32RNPREFIXEDSI
:
2267 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 2, 32, total_length
, pc
, & value
);
2268 value
= ((value
) - (2));
2269 fields
->f_dst32_rn_prefixed_SI
= value
;
2272 case M32C_OPERAND_DST32RNUNPREFIXEDHI
:
2275 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 2, 32, total_length
, pc
, & value
);
2276 value
= ((((value
) + (2))) % (4));
2277 fields
->f_dst32_rn_unprefixed_HI
= value
;
2280 case M32C_OPERAND_DST32RNUNPREFIXEDQI
:
2283 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 2, 32, total_length
, pc
, & value
);
2284 value
= (((((~ (((unsigned int) (value
) >> (1))))) & (1))) | (((((value
) << (1))) & (2))));
2285 fields
->f_dst32_rn_unprefixed_QI
= value
;
2288 case M32C_OPERAND_DST32RNUNPREFIXEDSI
:
2291 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 2, 32, total_length
, pc
, & value
);
2292 value
= ((value
) - (2));
2293 fields
->f_dst32_rn_unprefixed_SI
= value
;
2296 case M32C_OPERAND_G
:
2298 case M32C_OPERAND_IMM_12_S4
:
2299 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
);
2301 case M32C_OPERAND_IMM_13_U3
:
2302 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_imm_13_u3
);
2304 case M32C_OPERAND_IMM_16_HI
:
2307 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 16, 32, total_length
, pc
, & value
);
2308 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
2309 fields
->f_dsp_16_s16
= value
;
2312 case M32C_OPERAND_IMM_16_QI
:
2313 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
);
2315 case M32C_OPERAND_IMM_16_SI
:
2319 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
2320 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2321 fields
->f_dsp_16_u16
= value
;
2323 if (length
<= 0) break;
2326 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 16, 32, total_length
, pc
, & value
);
2327 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2328 fields
->f_dsp_32_u16
= value
;
2330 if (length
<= 0) break;
2332 FLD (f_dsp_16_s32
) = ((((FLD (f_dsp_16_u16
)) & (65535))) | (((((FLD (f_dsp_32_u16
)) << (16))) & (0xffff0000))));
2336 case M32C_OPERAND_IMM_20_S4
:
2337 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
);
2339 case M32C_OPERAND_IMM_24_HI
:
2341 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2342 if (length
<= 0) break;
2343 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
2344 if (length
<= 0) break;
2346 FLD (f_dsp_24_s16
) = EXTHISI (((HI
) (UINT
) (((((FLD (f_dsp_32_u8
)) << (8))) | (FLD (f_dsp_24_u8
))))));
2350 case M32C_OPERAND_IMM_24_QI
:
2351 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
);
2353 case M32C_OPERAND_IMM_24_SI
:
2355 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2356 if (length
<= 0) break;
2359 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 24, 32, total_length
, pc
, & value
);
2360 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
2361 fields
->f_dsp_32_u24
= value
;
2363 if (length
<= 0) break;
2365 FLD (f_dsp_24_s32
) = ((((FLD (f_dsp_24_u8
)) & (255))) | (((((FLD (f_dsp_32_u24
)) << (8))) & (0xffffff00))));
2369 case M32C_OPERAND_IMM_32_HI
:
2372 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 16, 32, total_length
, pc
, & value
);
2373 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
2374 fields
->f_dsp_32_s16
= value
;
2377 case M32C_OPERAND_IMM_32_QI
:
2378 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
);
2380 case M32C_OPERAND_IMM_32_SI
:
2383 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 32, 32, total_length
, pc
, & value
);
2384 value
= EXTSISI (((((((((unsigned int) (value
) >> (24))) & (255))) | (((((unsigned int) (value
) >> (8))) & (65280))))) | (((((((value
) << (8))) & (16711680))) | (((((value
) << (24))) & (0xff000000)))))));
2385 fields
->f_dsp_32_s32
= value
;
2388 case M32C_OPERAND_IMM_40_HI
:
2391 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 8, 16, 32, total_length
, pc
, & value
);
2392 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
2393 fields
->f_dsp_40_s16
= value
;
2396 case M32C_OPERAND_IMM_40_QI
:
2397 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
);
2399 case M32C_OPERAND_IMM_40_SI
:
2403 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 8, 24, 32, total_length
, pc
, & value
);
2404 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
2405 fields
->f_dsp_40_u24
= value
;
2407 if (length
<= 0) break;
2408 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 64, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_64_u8
);
2409 if (length
<= 0) break;
2411 FLD (f_dsp_40_s32
) = ((((FLD (f_dsp_40_u24
)) & (16777215))) | (((((FLD (f_dsp_64_u8
)) << (24))) & (0xff000000))));
2415 case M32C_OPERAND_IMM_48_HI
:
2418 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 16, 16, 32, total_length
, pc
, & value
);
2419 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
2420 fields
->f_dsp_48_s16
= value
;
2423 case M32C_OPERAND_IMM_48_QI
:
2424 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
);
2426 case M32C_OPERAND_IMM_48_SI
:
2430 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 16, 16, 32, total_length
, pc
, & value
);
2431 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2432 fields
->f_dsp_48_u16
= value
;
2434 if (length
<= 0) break;
2437 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 64, 0, 16, 32, total_length
, pc
, & value
);
2438 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2439 fields
->f_dsp_64_u16
= value
;
2441 if (length
<= 0) break;
2443 FLD (f_dsp_48_s32
) = ((((FLD (f_dsp_48_u16
)) & (65535))) | (((((FLD (f_dsp_64_u16
)) << (16))) & (0xffff0000))));
2447 case M32C_OPERAND_IMM_56_HI
:
2449 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_56_u8
);
2450 if (length
<= 0) break;
2451 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 64, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_64_u8
);
2452 if (length
<= 0) break;
2454 FLD (f_dsp_56_s16
) = EXTHISI (((HI
) (UINT
) (((((FLD (f_dsp_64_u8
)) << (8))) | (FLD (f_dsp_56_u8
))))));
2458 case M32C_OPERAND_IMM_56_QI
:
2459 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
);
2461 case M32C_OPERAND_IMM_64_HI
:
2464 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 64, 0, 16, 32, total_length
, pc
, & value
);
2465 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
2466 fields
->f_dsp_64_s16
= value
;
2469 case M32C_OPERAND_IMM_8_HI
:
2472 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 16, 32, total_length
, pc
, & value
);
2473 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
2474 fields
->f_dsp_8_s16
= value
;
2477 case M32C_OPERAND_IMM_8_QI
:
2478 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
);
2480 case M32C_OPERAND_IMM_8_S4
:
2481 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
);
2483 case M32C_OPERAND_IMM_SH_12_S4
:
2484 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
);
2486 case M32C_OPERAND_IMM_SH_20_S4
:
2487 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
);
2489 case M32C_OPERAND_IMM_SH_8_S4
:
2490 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
);
2492 case M32C_OPERAND_IMM1_S
:
2495 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 2, 1, 32, total_length
, pc
, & value
);
2496 value
= ((value
) + (1));
2497 fields
->f_imm1_S
= value
;
2500 case M32C_OPERAND_IMM3_S
:
2502 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 2, 2, 32, total_length
, pc
, & fields
->f_2_2
);
2503 if (length
<= 0) break;
2504 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 7, 1, 32, total_length
, pc
, & fields
->f_7_1
);
2505 if (length
<= 0) break;
2507 FLD (f_imm3_S
) = ((((((FLD (f_2_2
)) << (1))) | (FLD (f_7_1
)))) + (1));
2511 case M32C_OPERAND_LAB_16_8
:
2514 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
);
2515 value
= ((value
) + (((pc
) + (2))));
2516 fields
->f_lab_16_8
= value
;
2519 case M32C_OPERAND_LAB_24_8
:
2522 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
);
2523 value
= ((value
) + (((pc
) + (2))));
2524 fields
->f_lab_24_8
= value
;
2527 case M32C_OPERAND_LAB_32_8
:
2530 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
);
2531 value
= ((value
) + (((pc
) + (2))));
2532 fields
->f_lab_32_8
= value
;
2535 case M32C_OPERAND_LAB_40_8
:
2538 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
);
2539 value
= ((value
) + (((pc
) + (2))));
2540 fields
->f_lab_40_8
= value
;
2543 case M32C_OPERAND_LAB_5_3
:
2546 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_PCREL_ADDR
), 0, 5, 3, 32, total_length
, pc
, & value
);
2547 value
= ((value
) + (((pc
) + (2))));
2548 fields
->f_lab_5_3
= value
;
2551 case M32C_OPERAND_LAB_8_16
:
2554 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
);
2555 value
= ((((((unsigned int) (((value
) & (65535))) >> (8))) | (((int) (((((value
) & (255))) << (24))) >> (16))))) + (((pc
) + (1))));
2556 fields
->f_lab_8_16
= value
;
2559 case M32C_OPERAND_LAB_8_24
:
2562 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_ABS_ADDR
), 0, 8, 24, 32, total_length
, pc
, & value
);
2563 value
= ((((((unsigned int) (value
) >> (16))) | (((value
) & (65280))))) | (((((value
) & (255))) << (16))));
2564 fields
->f_lab_8_24
= value
;
2567 case M32C_OPERAND_LAB_8_8
:
2570 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
);
2571 value
= ((value
) + (((pc
) + (1))));
2572 fields
->f_lab_8_8
= value
;
2575 case M32C_OPERAND_LAB32_JMP_S
:
2577 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 2, 2, 32, total_length
, pc
, & fields
->f_2_2
);
2578 if (length
<= 0) break;
2579 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 7, 1, 32, total_length
, pc
, & fields
->f_7_1
);
2580 if (length
<= 0) break;
2582 FLD (f_lab32_jmp_s
) = ((pc
) + (((((((FLD (f_2_2
)) << (1))) | (FLD (f_7_1
)))) + (2))));
2586 case M32C_OPERAND_Q
:
2588 case M32C_OPERAND_R0
:
2590 case M32C_OPERAND_R0H
:
2592 case M32C_OPERAND_R0L
:
2594 case M32C_OPERAND_R1
:
2596 case M32C_OPERAND_R1R2R0
:
2598 case M32C_OPERAND_R2
:
2600 case M32C_OPERAND_R2R0
:
2602 case M32C_OPERAND_R3
:
2604 case M32C_OPERAND_R3R1
:
2606 case M32C_OPERAND_REGSETPOP
:
2607 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 8, 32, total_length
, pc
, & fields
->f_8_8
);
2609 case M32C_OPERAND_REGSETPUSH
:
2610 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 8, 32, total_length
, pc
, & fields
->f_8_8
);
2612 case M32C_OPERAND_RN16_PUSH_S
:
2613 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 4, 1, 32, total_length
, pc
, & fields
->f_4_1
);
2615 case M32C_OPERAND_S
:
2617 case M32C_OPERAND_SRC16AN
:
2618 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src16_an
);
2620 case M32C_OPERAND_SRC16ANHI
:
2621 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src16_an
);
2623 case M32C_OPERAND_SRC16ANQI
:
2624 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src16_an
);
2626 case M32C_OPERAND_SRC16RNHI
:
2627 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 10, 2, 32, total_length
, pc
, & fields
->f_src16_rn
);
2629 case M32C_OPERAND_SRC16RNQI
:
2630 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 10, 2, 32, total_length
, pc
, & fields
->f_src16_rn
);
2632 case M32C_OPERAND_SRC32ANPREFIXED
:
2633 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 19, 1, 32, total_length
, pc
, & fields
->f_src32_an_prefixed
);
2635 case M32C_OPERAND_SRC32ANPREFIXEDHI
:
2636 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 19, 1, 32, total_length
, pc
, & fields
->f_src32_an_prefixed
);
2638 case M32C_OPERAND_SRC32ANPREFIXEDQI
:
2639 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 19, 1, 32, total_length
, pc
, & fields
->f_src32_an_prefixed
);
2641 case M32C_OPERAND_SRC32ANPREFIXEDSI
:
2642 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 19, 1, 32, total_length
, pc
, & fields
->f_src32_an_prefixed
);
2644 case M32C_OPERAND_SRC32ANUNPREFIXED
:
2645 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src32_an_unprefixed
);
2647 case M32C_OPERAND_SRC32ANUNPREFIXEDHI
:
2648 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src32_an_unprefixed
);
2650 case M32C_OPERAND_SRC32ANUNPREFIXEDQI
:
2651 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src32_an_unprefixed
);
2653 case M32C_OPERAND_SRC32ANUNPREFIXEDSI
:
2654 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src32_an_unprefixed
);
2656 case M32C_OPERAND_SRC32RNPREFIXEDHI
:
2659 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 18, 2, 32, total_length
, pc
, & value
);
2660 value
= ((((value
) + (2))) % (4));
2661 fields
->f_src32_rn_prefixed_HI
= value
;
2664 case M32C_OPERAND_SRC32RNPREFIXEDQI
:
2667 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 18, 2, 32, total_length
, pc
, & value
);
2668 value
= (((((~ (((unsigned int) (value
) >> (1))))) & (1))) | (((((value
) << (1))) & (2))));
2669 fields
->f_src32_rn_prefixed_QI
= value
;
2672 case M32C_OPERAND_SRC32RNPREFIXEDSI
:
2675 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 18, 2, 32, total_length
, pc
, & value
);
2676 value
= ((value
) - (2));
2677 fields
->f_src32_rn_prefixed_SI
= value
;
2680 case M32C_OPERAND_SRC32RNUNPREFIXEDHI
:
2683 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 10, 2, 32, total_length
, pc
, & value
);
2684 value
= ((((value
) + (2))) % (4));
2685 fields
->f_src32_rn_unprefixed_HI
= value
;
2688 case M32C_OPERAND_SRC32RNUNPREFIXEDQI
:
2691 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 10, 2, 32, total_length
, pc
, & value
);
2692 value
= (((((~ (((unsigned int) (value
) >> (1))))) & (1))) | (((((value
) << (1))) & (2))));
2693 fields
->f_src32_rn_unprefixed_QI
= value
;
2696 case M32C_OPERAND_SRC32RNUNPREFIXEDSI
:
2699 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 10, 2, 32, total_length
, pc
, & value
);
2700 value
= ((value
) - (2));
2701 fields
->f_src32_rn_unprefixed_SI
= value
;
2704 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL
:
2705 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 5, 1, 32, total_length
, pc
, & fields
->f_5_1
);
2707 case M32C_OPERAND_X
:
2709 case M32C_OPERAND_Z
:
2711 case M32C_OPERAND_COND16_16
:
2712 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_16_u8
);
2714 case M32C_OPERAND_COND16_24
:
2715 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2717 case M32C_OPERAND_COND16_32
:
2718 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
2720 case M32C_OPERAND_COND16C
:
2721 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 12, 4, 32, total_length
, pc
, & fields
->f_cond16
);
2723 case M32C_OPERAND_COND16J
:
2724 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 12, 4, 32, total_length
, pc
, & fields
->f_cond16
);
2726 case M32C_OPERAND_COND16J5
:
2727 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 5, 3, 32, total_length
, pc
, & fields
->f_cond16j_5
);
2729 case M32C_OPERAND_COND32
:
2731 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_9_1
);
2732 if (length
<= 0) break;
2733 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_13_3
);
2734 if (length
<= 0) break;
2736 FLD (f_cond32
) = ((((FLD (f_9_1
)) << (3))) | (FLD (f_13_3
)));
2740 case M32C_OPERAND_COND32_16
:
2741 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_16_u8
);
2743 case M32C_OPERAND_COND32_24
:
2744 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2746 case M32C_OPERAND_COND32_32
:
2747 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
2749 case M32C_OPERAND_COND32_40
:
2750 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 8, 8, 32, total_length
, pc
, & fields
->f_dsp_40_u8
);
2752 case M32C_OPERAND_COND32J
:
2754 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 1, 3, 32, total_length
, pc
, & fields
->f_1_3
);
2755 if (length
<= 0) break;
2756 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 7, 1, 32, total_length
, pc
, & fields
->f_7_1
);
2757 if (length
<= 0) break;
2759 FLD (f_cond32j
) = ((((FLD (f_1_3
)) << (1))) | (FLD (f_7_1
)));
2763 case M32C_OPERAND_CR1_PREFIXED_32
:
2764 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_21_3
);
2766 case M32C_OPERAND_CR1_UNPREFIXED_32
:
2767 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_13_3
);
2769 case M32C_OPERAND_CR16
:
2770 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 3, 32, total_length
, pc
, & fields
->f_9_3
);
2772 case M32C_OPERAND_CR2_32
:
2773 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_13_3
);
2775 case M32C_OPERAND_CR3_PREFIXED_32
:
2776 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_21_3
);
2778 case M32C_OPERAND_CR3_UNPREFIXED_32
:
2779 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_13_3
);
2781 case M32C_OPERAND_FLAGS16
:
2782 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 3, 32, total_length
, pc
, & fields
->f_9_3
);
2784 case M32C_OPERAND_FLAGS32
:
2785 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_13_3
);
2787 case M32C_OPERAND_SCCOND32
:
2788 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 12, 4, 32, total_length
, pc
, & fields
->f_cond16
);
2790 case M32C_OPERAND_SIZE
:
2794 /* xgettext:c-format */
2795 fprintf (stderr
, _("Unrecognized field %d while decoding insn.\n"),
2803 cgen_insert_fn
* const m32c_cgen_insert_handlers
[] =
2808 cgen_extract_fn
* const m32c_cgen_extract_handlers
[] =
2810 extract_insn_normal
,
2813 int m32c_cgen_get_int_operand (CGEN_CPU_DESC
, int, const CGEN_FIELDS
*);
2814 bfd_vma
m32c_cgen_get_vma_operand (CGEN_CPU_DESC
, int, const CGEN_FIELDS
*);
2816 /* Getting values from cgen_fields is handled by a collection of functions.
2817 They are distinguished by the type of the VALUE argument they return.
2818 TODO: floating point, inlining support, remove cases where result type
2822 m32c_cgen_get_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED
,
2824 const CGEN_FIELDS
* fields
)
2830 case M32C_OPERAND_A0
:
2833 case M32C_OPERAND_A1
:
2836 case M32C_OPERAND_AN16_PUSH_S
:
2837 value
= fields
->f_4_1
;
2839 case M32C_OPERAND_BIT16AN
:
2840 value
= fields
->f_dst16_an
;
2842 case M32C_OPERAND_BIT16RN
:
2843 value
= fields
->f_dst16_rn
;
2845 case M32C_OPERAND_BIT32ANPREFIXED
:
2846 value
= fields
->f_dst32_an_prefixed
;
2848 case M32C_OPERAND_BIT32ANUNPREFIXED
:
2849 value
= fields
->f_dst32_an_unprefixed
;
2851 case M32C_OPERAND_BIT32RNPREFIXED
:
2852 value
= fields
->f_dst32_rn_prefixed_QI
;
2854 case M32C_OPERAND_BIT32RNUNPREFIXED
:
2855 value
= fields
->f_dst32_rn_unprefixed_QI
;
2857 case M32C_OPERAND_BITBASE16_16_S8
:
2858 value
= fields
->f_dsp_16_s8
;
2860 case M32C_OPERAND_BITBASE16_16_U16
:
2861 value
= fields
->f_dsp_16_u16
;
2863 case M32C_OPERAND_BITBASE16_16_U8
:
2864 value
= fields
->f_dsp_16_u8
;
2866 case M32C_OPERAND_BITBASE16_8_U11_S
:
2867 value
= fields
->f_bitbase16_u11_S
;
2869 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED
:
2870 value
= fields
->f_bitbase32_16_s11_unprefixed
;
2872 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED
:
2873 value
= fields
->f_bitbase32_16_s19_unprefixed
;
2875 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED
:
2876 value
= fields
->f_bitbase32_16_u11_unprefixed
;
2878 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED
:
2879 value
= fields
->f_bitbase32_16_u19_unprefixed
;
2881 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED
:
2882 value
= fields
->f_bitbase32_16_u27_unprefixed
;
2884 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED
:
2885 value
= fields
->f_bitbase32_24_s11_prefixed
;
2887 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED
:
2888 value
= fields
->f_bitbase32_24_s19_prefixed
;
2890 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED
:
2891 value
= fields
->f_bitbase32_24_u11_prefixed
;
2893 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED
:
2894 value
= fields
->f_bitbase32_24_u19_prefixed
;
2896 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED
:
2897 value
= fields
->f_bitbase32_24_u27_prefixed
;
2899 case M32C_OPERAND_BITNO16R
:
2900 value
= fields
->f_dsp_16_u8
;
2902 case M32C_OPERAND_BITNO32PREFIXED
:
2903 value
= fields
->f_bitno32_prefixed
;
2905 case M32C_OPERAND_BITNO32UNPREFIXED
:
2906 value
= fields
->f_bitno32_unprefixed
;
2908 case M32C_OPERAND_DSP_10_U6
:
2909 value
= fields
->f_dsp_10_u6
;
2911 case M32C_OPERAND_DSP_16_S16
:
2912 value
= fields
->f_dsp_16_s16
;
2914 case M32C_OPERAND_DSP_16_S8
:
2915 value
= fields
->f_dsp_16_s8
;
2917 case M32C_OPERAND_DSP_16_U16
:
2918 value
= fields
->f_dsp_16_u16
;
2920 case M32C_OPERAND_DSP_16_U20
:
2921 value
= fields
->f_dsp_16_u24
;
2923 case M32C_OPERAND_DSP_16_U24
:
2924 value
= fields
->f_dsp_16_u24
;
2926 case M32C_OPERAND_DSP_16_U8
:
2927 value
= fields
->f_dsp_16_u8
;
2929 case M32C_OPERAND_DSP_24_S16
:
2930 value
= fields
->f_dsp_24_s16
;
2932 case M32C_OPERAND_DSP_24_S8
:
2933 value
= fields
->f_dsp_24_s8
;
2935 case M32C_OPERAND_DSP_24_U16
:
2936 value
= fields
->f_dsp_24_u16
;
2938 case M32C_OPERAND_DSP_24_U20
:
2939 value
= fields
->f_dsp_24_u24
;
2941 case M32C_OPERAND_DSP_24_U24
:
2942 value
= fields
->f_dsp_24_u24
;
2944 case M32C_OPERAND_DSP_24_U8
:
2945 value
= fields
->f_dsp_24_u8
;
2947 case M32C_OPERAND_DSP_32_S16
:
2948 value
= fields
->f_dsp_32_s16
;
2950 case M32C_OPERAND_DSP_32_S8
:
2951 value
= fields
->f_dsp_32_s8
;
2953 case M32C_OPERAND_DSP_32_U16
:
2954 value
= fields
->f_dsp_32_u16
;
2956 case M32C_OPERAND_DSP_32_U20
:
2957 value
= fields
->f_dsp_32_u24
;
2959 case M32C_OPERAND_DSP_32_U24
:
2960 value
= fields
->f_dsp_32_u24
;
2962 case M32C_OPERAND_DSP_32_U8
:
2963 value
= fields
->f_dsp_32_u8
;
2965 case M32C_OPERAND_DSP_40_S16
:
2966 value
= fields
->f_dsp_40_s16
;
2968 case M32C_OPERAND_DSP_40_S8
:
2969 value
= fields
->f_dsp_40_s8
;
2971 case M32C_OPERAND_DSP_40_U16
:
2972 value
= fields
->f_dsp_40_u16
;
2974 case M32C_OPERAND_DSP_40_U24
:
2975 value
= fields
->f_dsp_40_u24
;
2977 case M32C_OPERAND_DSP_40_U8
:
2978 value
= fields
->f_dsp_40_u8
;
2980 case M32C_OPERAND_DSP_48_S16
:
2981 value
= fields
->f_dsp_48_s16
;
2983 case M32C_OPERAND_DSP_48_S8
:
2984 value
= fields
->f_dsp_48_s8
;
2986 case M32C_OPERAND_DSP_48_U16
:
2987 value
= fields
->f_dsp_48_u16
;
2989 case M32C_OPERAND_DSP_48_U24
:
2990 value
= fields
->f_dsp_48_u24
;
2992 case M32C_OPERAND_DSP_48_U8
:
2993 value
= fields
->f_dsp_48_u8
;
2995 case M32C_OPERAND_DSP_8_S24
:
2996 value
= fields
->f_dsp_8_s24
;
2998 case M32C_OPERAND_DSP_8_S8
:
2999 value
= fields
->f_dsp_8_s8
;
3001 case M32C_OPERAND_DSP_8_U16
:
3002 value
= fields
->f_dsp_8_u16
;
3004 case M32C_OPERAND_DSP_8_U24
:
3005 value
= fields
->f_dsp_8_u24
;
3007 case M32C_OPERAND_DSP_8_U6
:
3008 value
= fields
->f_dsp_8_u6
;
3010 case M32C_OPERAND_DSP_8_U8
:
3011 value
= fields
->f_dsp_8_u8
;
3013 case M32C_OPERAND_DST16AN
:
3014 value
= fields
->f_dst16_an
;
3016 case M32C_OPERAND_DST16AN_S
:
3017 value
= fields
->f_dst16_an_s
;
3019 case M32C_OPERAND_DST16ANHI
:
3020 value
= fields
->f_dst16_an
;
3022 case M32C_OPERAND_DST16ANQI
:
3023 value
= fields
->f_dst16_an
;
3025 case M32C_OPERAND_DST16ANQI_S
:
3026 value
= fields
->f_dst16_rn_QI_s
;
3028 case M32C_OPERAND_DST16ANSI
:
3029 value
= fields
->f_dst16_an
;
3031 case M32C_OPERAND_DST16RNEXTQI
:
3032 value
= fields
->f_dst16_rn_ext
;
3034 case M32C_OPERAND_DST16RNHI
:
3035 value
= fields
->f_dst16_rn
;
3037 case M32C_OPERAND_DST16RNQI
:
3038 value
= fields
->f_dst16_rn
;
3040 case M32C_OPERAND_DST16RNQI_S
:
3041 value
= fields
->f_dst16_rn_QI_s
;
3043 case M32C_OPERAND_DST16RNSI
:
3044 value
= fields
->f_dst16_rn
;
3046 case M32C_OPERAND_DST32ANEXTUNPREFIXED
:
3047 value
= fields
->f_dst32_an_unprefixed
;
3049 case M32C_OPERAND_DST32ANPREFIXED
:
3050 value
= fields
->f_dst32_an_prefixed
;
3052 case M32C_OPERAND_DST32ANPREFIXEDHI
:
3053 value
= fields
->f_dst32_an_prefixed
;
3055 case M32C_OPERAND_DST32ANPREFIXEDQI
:
3056 value
= fields
->f_dst32_an_prefixed
;
3058 case M32C_OPERAND_DST32ANPREFIXEDSI
:
3059 value
= fields
->f_dst32_an_prefixed
;
3061 case M32C_OPERAND_DST32ANUNPREFIXED
:
3062 value
= fields
->f_dst32_an_unprefixed
;
3064 case M32C_OPERAND_DST32ANUNPREFIXEDHI
:
3065 value
= fields
->f_dst32_an_unprefixed
;
3067 case M32C_OPERAND_DST32ANUNPREFIXEDQI
:
3068 value
= fields
->f_dst32_an_unprefixed
;
3070 case M32C_OPERAND_DST32ANUNPREFIXEDSI
:
3071 value
= fields
->f_dst32_an_unprefixed
;
3073 case M32C_OPERAND_DST32R0HI_S
:
3076 case M32C_OPERAND_DST32R0QI_S
:
3079 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI
:
3080 value
= fields
->f_dst32_rn_ext_unprefixed
;
3082 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI
:
3083 value
= fields
->f_dst32_rn_ext_unprefixed
;
3085 case M32C_OPERAND_DST32RNPREFIXEDHI
:
3086 value
= fields
->f_dst32_rn_prefixed_HI
;
3088 case M32C_OPERAND_DST32RNPREFIXEDQI
:
3089 value
= fields
->f_dst32_rn_prefixed_QI
;
3091 case M32C_OPERAND_DST32RNPREFIXEDSI
:
3092 value
= fields
->f_dst32_rn_prefixed_SI
;
3094 case M32C_OPERAND_DST32RNUNPREFIXEDHI
:
3095 value
= fields
->f_dst32_rn_unprefixed_HI
;
3097 case M32C_OPERAND_DST32RNUNPREFIXEDQI
:
3098 value
= fields
->f_dst32_rn_unprefixed_QI
;
3100 case M32C_OPERAND_DST32RNUNPREFIXEDSI
:
3101 value
= fields
->f_dst32_rn_unprefixed_SI
;
3103 case M32C_OPERAND_G
:
3106 case M32C_OPERAND_IMM_12_S4
:
3107 value
= fields
->f_imm_12_s4
;
3109 case M32C_OPERAND_IMM_13_U3
:
3110 value
= fields
->f_imm_13_u3
;
3112 case M32C_OPERAND_IMM_16_HI
:
3113 value
= fields
->f_dsp_16_s16
;
3115 case M32C_OPERAND_IMM_16_QI
:
3116 value
= fields
->f_dsp_16_s8
;
3118 case M32C_OPERAND_IMM_16_SI
:
3119 value
= fields
->f_dsp_16_s32
;
3121 case M32C_OPERAND_IMM_20_S4
:
3122 value
= fields
->f_imm_20_s4
;
3124 case M32C_OPERAND_IMM_24_HI
:
3125 value
= fields
->f_dsp_24_s16
;
3127 case M32C_OPERAND_IMM_24_QI
:
3128 value
= fields
->f_dsp_24_s8
;
3130 case M32C_OPERAND_IMM_24_SI
:
3131 value
= fields
->f_dsp_24_s32
;
3133 case M32C_OPERAND_IMM_32_HI
:
3134 value
= fields
->f_dsp_32_s16
;
3136 case M32C_OPERAND_IMM_32_QI
:
3137 value
= fields
->f_dsp_32_s8
;
3139 case M32C_OPERAND_IMM_32_SI
:
3140 value
= fields
->f_dsp_32_s32
;
3142 case M32C_OPERAND_IMM_40_HI
:
3143 value
= fields
->f_dsp_40_s16
;
3145 case M32C_OPERAND_IMM_40_QI
:
3146 value
= fields
->f_dsp_40_s8
;
3148 case M32C_OPERAND_IMM_40_SI
:
3149 value
= fields
->f_dsp_40_s32
;
3151 case M32C_OPERAND_IMM_48_HI
:
3152 value
= fields
->f_dsp_48_s16
;
3154 case M32C_OPERAND_IMM_48_QI
:
3155 value
= fields
->f_dsp_48_s8
;
3157 case M32C_OPERAND_IMM_48_SI
:
3158 value
= fields
->f_dsp_48_s32
;
3160 case M32C_OPERAND_IMM_56_HI
:
3161 value
= fields
->f_dsp_56_s16
;
3163 case M32C_OPERAND_IMM_56_QI
:
3164 value
= fields
->f_dsp_56_s8
;
3166 case M32C_OPERAND_IMM_64_HI
:
3167 value
= fields
->f_dsp_64_s16
;
3169 case M32C_OPERAND_IMM_8_HI
:
3170 value
= fields
->f_dsp_8_s16
;
3172 case M32C_OPERAND_IMM_8_QI
:
3173 value
= fields
->f_dsp_8_s8
;
3175 case M32C_OPERAND_IMM_8_S4
:
3176 value
= fields
->f_imm_8_s4
;
3178 case M32C_OPERAND_IMM_SH_12_S4
:
3179 value
= fields
->f_imm_12_s4
;
3181 case M32C_OPERAND_IMM_SH_20_S4
:
3182 value
= fields
->f_imm_20_s4
;
3184 case M32C_OPERAND_IMM_SH_8_S4
:
3185 value
= fields
->f_imm_8_s4
;
3187 case M32C_OPERAND_IMM1_S
:
3188 value
= fields
->f_imm1_S
;
3190 case M32C_OPERAND_IMM3_S
:
3191 value
= fields
->f_imm3_S
;
3193 case M32C_OPERAND_LAB_16_8
:
3194 value
= fields
->f_lab_16_8
;
3196 case M32C_OPERAND_LAB_24_8
:
3197 value
= fields
->f_lab_24_8
;
3199 case M32C_OPERAND_LAB_32_8
:
3200 value
= fields
->f_lab_32_8
;
3202 case M32C_OPERAND_LAB_40_8
:
3203 value
= fields
->f_lab_40_8
;
3205 case M32C_OPERAND_LAB_5_3
:
3206 value
= fields
->f_lab_5_3
;
3208 case M32C_OPERAND_LAB_8_16
:
3209 value
= fields
->f_lab_8_16
;
3211 case M32C_OPERAND_LAB_8_24
:
3212 value
= fields
->f_lab_8_24
;
3214 case M32C_OPERAND_LAB_8_8
:
3215 value
= fields
->f_lab_8_8
;
3217 case M32C_OPERAND_LAB32_JMP_S
:
3218 value
= fields
->f_lab32_jmp_s
;
3220 case M32C_OPERAND_Q
:
3223 case M32C_OPERAND_R0
:
3226 case M32C_OPERAND_R0H
:
3229 case M32C_OPERAND_R0L
:
3232 case M32C_OPERAND_R1
:
3235 case M32C_OPERAND_R1R2R0
:
3238 case M32C_OPERAND_R2
:
3241 case M32C_OPERAND_R2R0
:
3244 case M32C_OPERAND_R3
:
3247 case M32C_OPERAND_R3R1
:
3250 case M32C_OPERAND_REGSETPOP
:
3251 value
= fields
->f_8_8
;
3253 case M32C_OPERAND_REGSETPUSH
:
3254 value
= fields
->f_8_8
;
3256 case M32C_OPERAND_RN16_PUSH_S
:
3257 value
= fields
->f_4_1
;
3259 case M32C_OPERAND_S
:
3262 case M32C_OPERAND_SRC16AN
:
3263 value
= fields
->f_src16_an
;
3265 case M32C_OPERAND_SRC16ANHI
:
3266 value
= fields
->f_src16_an
;
3268 case M32C_OPERAND_SRC16ANQI
:
3269 value
= fields
->f_src16_an
;
3271 case M32C_OPERAND_SRC16RNHI
:
3272 value
= fields
->f_src16_rn
;
3274 case M32C_OPERAND_SRC16RNQI
:
3275 value
= fields
->f_src16_rn
;
3277 case M32C_OPERAND_SRC32ANPREFIXED
:
3278 value
= fields
->f_src32_an_prefixed
;
3280 case M32C_OPERAND_SRC32ANPREFIXEDHI
:
3281 value
= fields
->f_src32_an_prefixed
;
3283 case M32C_OPERAND_SRC32ANPREFIXEDQI
:
3284 value
= fields
->f_src32_an_prefixed
;
3286 case M32C_OPERAND_SRC32ANPREFIXEDSI
:
3287 value
= fields
->f_src32_an_prefixed
;
3289 case M32C_OPERAND_SRC32ANUNPREFIXED
:
3290 value
= fields
->f_src32_an_unprefixed
;
3292 case M32C_OPERAND_SRC32ANUNPREFIXEDHI
:
3293 value
= fields
->f_src32_an_unprefixed
;
3295 case M32C_OPERAND_SRC32ANUNPREFIXEDQI
:
3296 value
= fields
->f_src32_an_unprefixed
;
3298 case M32C_OPERAND_SRC32ANUNPREFIXEDSI
:
3299 value
= fields
->f_src32_an_unprefixed
;
3301 case M32C_OPERAND_SRC32RNPREFIXEDHI
:
3302 value
= fields
->f_src32_rn_prefixed_HI
;
3304 case M32C_OPERAND_SRC32RNPREFIXEDQI
:
3305 value
= fields
->f_src32_rn_prefixed_QI
;
3307 case M32C_OPERAND_SRC32RNPREFIXEDSI
:
3308 value
= fields
->f_src32_rn_prefixed_SI
;
3310 case M32C_OPERAND_SRC32RNUNPREFIXEDHI
:
3311 value
= fields
->f_src32_rn_unprefixed_HI
;
3313 case M32C_OPERAND_SRC32RNUNPREFIXEDQI
:
3314 value
= fields
->f_src32_rn_unprefixed_QI
;
3316 case M32C_OPERAND_SRC32RNUNPREFIXEDSI
:
3317 value
= fields
->f_src32_rn_unprefixed_SI
;
3319 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL
:
3320 value
= fields
->f_5_1
;
3322 case M32C_OPERAND_X
:
3325 case M32C_OPERAND_Z
:
3328 case M32C_OPERAND_COND16_16
:
3329 value
= fields
->f_dsp_16_u8
;
3331 case M32C_OPERAND_COND16_24
:
3332 value
= fields
->f_dsp_24_u8
;
3334 case M32C_OPERAND_COND16_32
:
3335 value
= fields
->f_dsp_32_u8
;
3337 case M32C_OPERAND_COND16C
:
3338 value
= fields
->f_cond16
;
3340 case M32C_OPERAND_COND16J
:
3341 value
= fields
->f_cond16
;
3343 case M32C_OPERAND_COND16J5
:
3344 value
= fields
->f_cond16j_5
;
3346 case M32C_OPERAND_COND32
:
3347 value
= fields
->f_cond32
;
3349 case M32C_OPERAND_COND32_16
:
3350 value
= fields
->f_dsp_16_u8
;
3352 case M32C_OPERAND_COND32_24
:
3353 value
= fields
->f_dsp_24_u8
;
3355 case M32C_OPERAND_COND32_32
:
3356 value
= fields
->f_dsp_32_u8
;
3358 case M32C_OPERAND_COND32_40
:
3359 value
= fields
->f_dsp_40_u8
;
3361 case M32C_OPERAND_COND32J
:
3362 value
= fields
->f_cond32j
;
3364 case M32C_OPERAND_CR1_PREFIXED_32
:
3365 value
= fields
->f_21_3
;
3367 case M32C_OPERAND_CR1_UNPREFIXED_32
:
3368 value
= fields
->f_13_3
;
3370 case M32C_OPERAND_CR16
:
3371 value
= fields
->f_9_3
;
3373 case M32C_OPERAND_CR2_32
:
3374 value
= fields
->f_13_3
;
3376 case M32C_OPERAND_CR3_PREFIXED_32
:
3377 value
= fields
->f_21_3
;
3379 case M32C_OPERAND_CR3_UNPREFIXED_32
:
3380 value
= fields
->f_13_3
;
3382 case M32C_OPERAND_FLAGS16
:
3383 value
= fields
->f_9_3
;
3385 case M32C_OPERAND_FLAGS32
:
3386 value
= fields
->f_13_3
;
3388 case M32C_OPERAND_SCCOND32
:
3389 value
= fields
->f_cond16
;
3391 case M32C_OPERAND_SIZE
:
3396 /* xgettext:c-format */
3397 fprintf (stderr
, _("Unrecognized field %d while getting int operand.\n"),
3406 m32c_cgen_get_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED
,
3408 const CGEN_FIELDS
* fields
)
3414 case M32C_OPERAND_A0
:
3417 case M32C_OPERAND_A1
:
3420 case M32C_OPERAND_AN16_PUSH_S
:
3421 value
= fields
->f_4_1
;
3423 case M32C_OPERAND_BIT16AN
:
3424 value
= fields
->f_dst16_an
;
3426 case M32C_OPERAND_BIT16RN
:
3427 value
= fields
->f_dst16_rn
;
3429 case M32C_OPERAND_BIT32ANPREFIXED
:
3430 value
= fields
->f_dst32_an_prefixed
;
3432 case M32C_OPERAND_BIT32ANUNPREFIXED
:
3433 value
= fields
->f_dst32_an_unprefixed
;
3435 case M32C_OPERAND_BIT32RNPREFIXED
:
3436 value
= fields
->f_dst32_rn_prefixed_QI
;
3438 case M32C_OPERAND_BIT32RNUNPREFIXED
:
3439 value
= fields
->f_dst32_rn_unprefixed_QI
;
3441 case M32C_OPERAND_BITBASE16_16_S8
:
3442 value
= fields
->f_dsp_16_s8
;
3444 case M32C_OPERAND_BITBASE16_16_U16
:
3445 value
= fields
->f_dsp_16_u16
;
3447 case M32C_OPERAND_BITBASE16_16_U8
:
3448 value
= fields
->f_dsp_16_u8
;
3450 case M32C_OPERAND_BITBASE16_8_U11_S
:
3451 value
= fields
->f_bitbase16_u11_S
;
3453 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED
:
3454 value
= fields
->f_bitbase32_16_s11_unprefixed
;
3456 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED
:
3457 value
= fields
->f_bitbase32_16_s19_unprefixed
;
3459 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED
:
3460 value
= fields
->f_bitbase32_16_u11_unprefixed
;
3462 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED
:
3463 value
= fields
->f_bitbase32_16_u19_unprefixed
;
3465 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED
:
3466 value
= fields
->f_bitbase32_16_u27_unprefixed
;
3468 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED
:
3469 value
= fields
->f_bitbase32_24_s11_prefixed
;
3471 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED
:
3472 value
= fields
->f_bitbase32_24_s19_prefixed
;
3474 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED
:
3475 value
= fields
->f_bitbase32_24_u11_prefixed
;
3477 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED
:
3478 value
= fields
->f_bitbase32_24_u19_prefixed
;
3480 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED
:
3481 value
= fields
->f_bitbase32_24_u27_prefixed
;
3483 case M32C_OPERAND_BITNO16R
:
3484 value
= fields
->f_dsp_16_u8
;
3486 case M32C_OPERAND_BITNO32PREFIXED
:
3487 value
= fields
->f_bitno32_prefixed
;
3489 case M32C_OPERAND_BITNO32UNPREFIXED
:
3490 value
= fields
->f_bitno32_unprefixed
;
3492 case M32C_OPERAND_DSP_10_U6
:
3493 value
= fields
->f_dsp_10_u6
;
3495 case M32C_OPERAND_DSP_16_S16
:
3496 value
= fields
->f_dsp_16_s16
;
3498 case M32C_OPERAND_DSP_16_S8
:
3499 value
= fields
->f_dsp_16_s8
;
3501 case M32C_OPERAND_DSP_16_U16
:
3502 value
= fields
->f_dsp_16_u16
;
3504 case M32C_OPERAND_DSP_16_U20
:
3505 value
= fields
->f_dsp_16_u24
;
3507 case M32C_OPERAND_DSP_16_U24
:
3508 value
= fields
->f_dsp_16_u24
;
3510 case M32C_OPERAND_DSP_16_U8
:
3511 value
= fields
->f_dsp_16_u8
;
3513 case M32C_OPERAND_DSP_24_S16
:
3514 value
= fields
->f_dsp_24_s16
;
3516 case M32C_OPERAND_DSP_24_S8
:
3517 value
= fields
->f_dsp_24_s8
;
3519 case M32C_OPERAND_DSP_24_U16
:
3520 value
= fields
->f_dsp_24_u16
;
3522 case M32C_OPERAND_DSP_24_U20
:
3523 value
= fields
->f_dsp_24_u24
;
3525 case M32C_OPERAND_DSP_24_U24
:
3526 value
= fields
->f_dsp_24_u24
;
3528 case M32C_OPERAND_DSP_24_U8
:
3529 value
= fields
->f_dsp_24_u8
;
3531 case M32C_OPERAND_DSP_32_S16
:
3532 value
= fields
->f_dsp_32_s16
;
3534 case M32C_OPERAND_DSP_32_S8
:
3535 value
= fields
->f_dsp_32_s8
;
3537 case M32C_OPERAND_DSP_32_U16
:
3538 value
= fields
->f_dsp_32_u16
;
3540 case M32C_OPERAND_DSP_32_U20
:
3541 value
= fields
->f_dsp_32_u24
;
3543 case M32C_OPERAND_DSP_32_U24
:
3544 value
= fields
->f_dsp_32_u24
;
3546 case M32C_OPERAND_DSP_32_U8
:
3547 value
= fields
->f_dsp_32_u8
;
3549 case M32C_OPERAND_DSP_40_S16
:
3550 value
= fields
->f_dsp_40_s16
;
3552 case M32C_OPERAND_DSP_40_S8
:
3553 value
= fields
->f_dsp_40_s8
;
3555 case M32C_OPERAND_DSP_40_U16
:
3556 value
= fields
->f_dsp_40_u16
;
3558 case M32C_OPERAND_DSP_40_U24
:
3559 value
= fields
->f_dsp_40_u24
;
3561 case M32C_OPERAND_DSP_40_U8
:
3562 value
= fields
->f_dsp_40_u8
;
3564 case M32C_OPERAND_DSP_48_S16
:
3565 value
= fields
->f_dsp_48_s16
;
3567 case M32C_OPERAND_DSP_48_S8
:
3568 value
= fields
->f_dsp_48_s8
;
3570 case M32C_OPERAND_DSP_48_U16
:
3571 value
= fields
->f_dsp_48_u16
;
3573 case M32C_OPERAND_DSP_48_U24
:
3574 value
= fields
->f_dsp_48_u24
;
3576 case M32C_OPERAND_DSP_48_U8
:
3577 value
= fields
->f_dsp_48_u8
;
3579 case M32C_OPERAND_DSP_8_S24
:
3580 value
= fields
->f_dsp_8_s24
;
3582 case M32C_OPERAND_DSP_8_S8
:
3583 value
= fields
->f_dsp_8_s8
;
3585 case M32C_OPERAND_DSP_8_U16
:
3586 value
= fields
->f_dsp_8_u16
;
3588 case M32C_OPERAND_DSP_8_U24
:
3589 value
= fields
->f_dsp_8_u24
;
3591 case M32C_OPERAND_DSP_8_U6
:
3592 value
= fields
->f_dsp_8_u6
;
3594 case M32C_OPERAND_DSP_8_U8
:
3595 value
= fields
->f_dsp_8_u8
;
3597 case M32C_OPERAND_DST16AN
:
3598 value
= fields
->f_dst16_an
;
3600 case M32C_OPERAND_DST16AN_S
:
3601 value
= fields
->f_dst16_an_s
;
3603 case M32C_OPERAND_DST16ANHI
:
3604 value
= fields
->f_dst16_an
;
3606 case M32C_OPERAND_DST16ANQI
:
3607 value
= fields
->f_dst16_an
;
3609 case M32C_OPERAND_DST16ANQI_S
:
3610 value
= fields
->f_dst16_rn_QI_s
;
3612 case M32C_OPERAND_DST16ANSI
:
3613 value
= fields
->f_dst16_an
;
3615 case M32C_OPERAND_DST16RNEXTQI
:
3616 value
= fields
->f_dst16_rn_ext
;
3618 case M32C_OPERAND_DST16RNHI
:
3619 value
= fields
->f_dst16_rn
;
3621 case M32C_OPERAND_DST16RNQI
:
3622 value
= fields
->f_dst16_rn
;
3624 case M32C_OPERAND_DST16RNQI_S
:
3625 value
= fields
->f_dst16_rn_QI_s
;
3627 case M32C_OPERAND_DST16RNSI
:
3628 value
= fields
->f_dst16_rn
;
3630 case M32C_OPERAND_DST32ANEXTUNPREFIXED
:
3631 value
= fields
->f_dst32_an_unprefixed
;
3633 case M32C_OPERAND_DST32ANPREFIXED
:
3634 value
= fields
->f_dst32_an_prefixed
;
3636 case M32C_OPERAND_DST32ANPREFIXEDHI
:
3637 value
= fields
->f_dst32_an_prefixed
;
3639 case M32C_OPERAND_DST32ANPREFIXEDQI
:
3640 value
= fields
->f_dst32_an_prefixed
;
3642 case M32C_OPERAND_DST32ANPREFIXEDSI
:
3643 value
= fields
->f_dst32_an_prefixed
;
3645 case M32C_OPERAND_DST32ANUNPREFIXED
:
3646 value
= fields
->f_dst32_an_unprefixed
;
3648 case M32C_OPERAND_DST32ANUNPREFIXEDHI
:
3649 value
= fields
->f_dst32_an_unprefixed
;
3651 case M32C_OPERAND_DST32ANUNPREFIXEDQI
:
3652 value
= fields
->f_dst32_an_unprefixed
;
3654 case M32C_OPERAND_DST32ANUNPREFIXEDSI
:
3655 value
= fields
->f_dst32_an_unprefixed
;
3657 case M32C_OPERAND_DST32R0HI_S
:
3660 case M32C_OPERAND_DST32R0QI_S
:
3663 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI
:
3664 value
= fields
->f_dst32_rn_ext_unprefixed
;
3666 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI
:
3667 value
= fields
->f_dst32_rn_ext_unprefixed
;
3669 case M32C_OPERAND_DST32RNPREFIXEDHI
:
3670 value
= fields
->f_dst32_rn_prefixed_HI
;
3672 case M32C_OPERAND_DST32RNPREFIXEDQI
:
3673 value
= fields
->f_dst32_rn_prefixed_QI
;
3675 case M32C_OPERAND_DST32RNPREFIXEDSI
:
3676 value
= fields
->f_dst32_rn_prefixed_SI
;
3678 case M32C_OPERAND_DST32RNUNPREFIXEDHI
:
3679 value
= fields
->f_dst32_rn_unprefixed_HI
;
3681 case M32C_OPERAND_DST32RNUNPREFIXEDQI
:
3682 value
= fields
->f_dst32_rn_unprefixed_QI
;
3684 case M32C_OPERAND_DST32RNUNPREFIXEDSI
:
3685 value
= fields
->f_dst32_rn_unprefixed_SI
;
3687 case M32C_OPERAND_G
:
3690 case M32C_OPERAND_IMM_12_S4
:
3691 value
= fields
->f_imm_12_s4
;
3693 case M32C_OPERAND_IMM_13_U3
:
3694 value
= fields
->f_imm_13_u3
;
3696 case M32C_OPERAND_IMM_16_HI
:
3697 value
= fields
->f_dsp_16_s16
;
3699 case M32C_OPERAND_IMM_16_QI
:
3700 value
= fields
->f_dsp_16_s8
;
3702 case M32C_OPERAND_IMM_16_SI
:
3703 value
= fields
->f_dsp_16_s32
;
3705 case M32C_OPERAND_IMM_20_S4
:
3706 value
= fields
->f_imm_20_s4
;
3708 case M32C_OPERAND_IMM_24_HI
:
3709 value
= fields
->f_dsp_24_s16
;
3711 case M32C_OPERAND_IMM_24_QI
:
3712 value
= fields
->f_dsp_24_s8
;
3714 case M32C_OPERAND_IMM_24_SI
:
3715 value
= fields
->f_dsp_24_s32
;
3717 case M32C_OPERAND_IMM_32_HI
:
3718 value
= fields
->f_dsp_32_s16
;
3720 case M32C_OPERAND_IMM_32_QI
:
3721 value
= fields
->f_dsp_32_s8
;
3723 case M32C_OPERAND_IMM_32_SI
:
3724 value
= fields
->f_dsp_32_s32
;
3726 case M32C_OPERAND_IMM_40_HI
:
3727 value
= fields
->f_dsp_40_s16
;
3729 case M32C_OPERAND_IMM_40_QI
:
3730 value
= fields
->f_dsp_40_s8
;
3732 case M32C_OPERAND_IMM_40_SI
:
3733 value
= fields
->f_dsp_40_s32
;
3735 case M32C_OPERAND_IMM_48_HI
:
3736 value
= fields
->f_dsp_48_s16
;
3738 case M32C_OPERAND_IMM_48_QI
:
3739 value
= fields
->f_dsp_48_s8
;
3741 case M32C_OPERAND_IMM_48_SI
:
3742 value
= fields
->f_dsp_48_s32
;
3744 case M32C_OPERAND_IMM_56_HI
:
3745 value
= fields
->f_dsp_56_s16
;
3747 case M32C_OPERAND_IMM_56_QI
:
3748 value
= fields
->f_dsp_56_s8
;
3750 case M32C_OPERAND_IMM_64_HI
:
3751 value
= fields
->f_dsp_64_s16
;
3753 case M32C_OPERAND_IMM_8_HI
:
3754 value
= fields
->f_dsp_8_s16
;
3756 case M32C_OPERAND_IMM_8_QI
:
3757 value
= fields
->f_dsp_8_s8
;
3759 case M32C_OPERAND_IMM_8_S4
:
3760 value
= fields
->f_imm_8_s4
;
3762 case M32C_OPERAND_IMM_SH_12_S4
:
3763 value
= fields
->f_imm_12_s4
;
3765 case M32C_OPERAND_IMM_SH_20_S4
:
3766 value
= fields
->f_imm_20_s4
;
3768 case M32C_OPERAND_IMM_SH_8_S4
:
3769 value
= fields
->f_imm_8_s4
;
3771 case M32C_OPERAND_IMM1_S
:
3772 value
= fields
->f_imm1_S
;
3774 case M32C_OPERAND_IMM3_S
:
3775 value
= fields
->f_imm3_S
;
3777 case M32C_OPERAND_LAB_16_8
:
3778 value
= fields
->f_lab_16_8
;
3780 case M32C_OPERAND_LAB_24_8
:
3781 value
= fields
->f_lab_24_8
;
3783 case M32C_OPERAND_LAB_32_8
:
3784 value
= fields
->f_lab_32_8
;
3786 case M32C_OPERAND_LAB_40_8
:
3787 value
= fields
->f_lab_40_8
;
3789 case M32C_OPERAND_LAB_5_3
:
3790 value
= fields
->f_lab_5_3
;
3792 case M32C_OPERAND_LAB_8_16
:
3793 value
= fields
->f_lab_8_16
;
3795 case M32C_OPERAND_LAB_8_24
:
3796 value
= fields
->f_lab_8_24
;
3798 case M32C_OPERAND_LAB_8_8
:
3799 value
= fields
->f_lab_8_8
;
3801 case M32C_OPERAND_LAB32_JMP_S
:
3802 value
= fields
->f_lab32_jmp_s
;
3804 case M32C_OPERAND_Q
:
3807 case M32C_OPERAND_R0
:
3810 case M32C_OPERAND_R0H
:
3813 case M32C_OPERAND_R0L
:
3816 case M32C_OPERAND_R1
:
3819 case M32C_OPERAND_R1R2R0
:
3822 case M32C_OPERAND_R2
:
3825 case M32C_OPERAND_R2R0
:
3828 case M32C_OPERAND_R3
:
3831 case M32C_OPERAND_R3R1
:
3834 case M32C_OPERAND_REGSETPOP
:
3835 value
= fields
->f_8_8
;
3837 case M32C_OPERAND_REGSETPUSH
:
3838 value
= fields
->f_8_8
;
3840 case M32C_OPERAND_RN16_PUSH_S
:
3841 value
= fields
->f_4_1
;
3843 case M32C_OPERAND_S
:
3846 case M32C_OPERAND_SRC16AN
:
3847 value
= fields
->f_src16_an
;
3849 case M32C_OPERAND_SRC16ANHI
:
3850 value
= fields
->f_src16_an
;
3852 case M32C_OPERAND_SRC16ANQI
:
3853 value
= fields
->f_src16_an
;
3855 case M32C_OPERAND_SRC16RNHI
:
3856 value
= fields
->f_src16_rn
;
3858 case M32C_OPERAND_SRC16RNQI
:
3859 value
= fields
->f_src16_rn
;
3861 case M32C_OPERAND_SRC32ANPREFIXED
:
3862 value
= fields
->f_src32_an_prefixed
;
3864 case M32C_OPERAND_SRC32ANPREFIXEDHI
:
3865 value
= fields
->f_src32_an_prefixed
;
3867 case M32C_OPERAND_SRC32ANPREFIXEDQI
:
3868 value
= fields
->f_src32_an_prefixed
;
3870 case M32C_OPERAND_SRC32ANPREFIXEDSI
:
3871 value
= fields
->f_src32_an_prefixed
;
3873 case M32C_OPERAND_SRC32ANUNPREFIXED
:
3874 value
= fields
->f_src32_an_unprefixed
;
3876 case M32C_OPERAND_SRC32ANUNPREFIXEDHI
:
3877 value
= fields
->f_src32_an_unprefixed
;
3879 case M32C_OPERAND_SRC32ANUNPREFIXEDQI
:
3880 value
= fields
->f_src32_an_unprefixed
;
3882 case M32C_OPERAND_SRC32ANUNPREFIXEDSI
:
3883 value
= fields
->f_src32_an_unprefixed
;
3885 case M32C_OPERAND_SRC32RNPREFIXEDHI
:
3886 value
= fields
->f_src32_rn_prefixed_HI
;
3888 case M32C_OPERAND_SRC32RNPREFIXEDQI
:
3889 value
= fields
->f_src32_rn_prefixed_QI
;
3891 case M32C_OPERAND_SRC32RNPREFIXEDSI
:
3892 value
= fields
->f_src32_rn_prefixed_SI
;
3894 case M32C_OPERAND_SRC32RNUNPREFIXEDHI
:
3895 value
= fields
->f_src32_rn_unprefixed_HI
;
3897 case M32C_OPERAND_SRC32RNUNPREFIXEDQI
:
3898 value
= fields
->f_src32_rn_unprefixed_QI
;
3900 case M32C_OPERAND_SRC32RNUNPREFIXEDSI
:
3901 value
= fields
->f_src32_rn_unprefixed_SI
;
3903 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL
:
3904 value
= fields
->f_5_1
;
3906 case M32C_OPERAND_X
:
3909 case M32C_OPERAND_Z
:
3912 case M32C_OPERAND_COND16_16
:
3913 value
= fields
->f_dsp_16_u8
;
3915 case M32C_OPERAND_COND16_24
:
3916 value
= fields
->f_dsp_24_u8
;
3918 case M32C_OPERAND_COND16_32
:
3919 value
= fields
->f_dsp_32_u8
;
3921 case M32C_OPERAND_COND16C
:
3922 value
= fields
->f_cond16
;
3924 case M32C_OPERAND_COND16J
:
3925 value
= fields
->f_cond16
;
3927 case M32C_OPERAND_COND16J5
:
3928 value
= fields
->f_cond16j_5
;
3930 case M32C_OPERAND_COND32
:
3931 value
= fields
->f_cond32
;
3933 case M32C_OPERAND_COND32_16
:
3934 value
= fields
->f_dsp_16_u8
;
3936 case M32C_OPERAND_COND32_24
:
3937 value
= fields
->f_dsp_24_u8
;
3939 case M32C_OPERAND_COND32_32
:
3940 value
= fields
->f_dsp_32_u8
;
3942 case M32C_OPERAND_COND32_40
:
3943 value
= fields
->f_dsp_40_u8
;
3945 case M32C_OPERAND_COND32J
:
3946 value
= fields
->f_cond32j
;
3948 case M32C_OPERAND_CR1_PREFIXED_32
:
3949 value
= fields
->f_21_3
;
3951 case M32C_OPERAND_CR1_UNPREFIXED_32
:
3952 value
= fields
->f_13_3
;
3954 case M32C_OPERAND_CR16
:
3955 value
= fields
->f_9_3
;
3957 case M32C_OPERAND_CR2_32
:
3958 value
= fields
->f_13_3
;
3960 case M32C_OPERAND_CR3_PREFIXED_32
:
3961 value
= fields
->f_21_3
;
3963 case M32C_OPERAND_CR3_UNPREFIXED_32
:
3964 value
= fields
->f_13_3
;
3966 case M32C_OPERAND_FLAGS16
:
3967 value
= fields
->f_9_3
;
3969 case M32C_OPERAND_FLAGS32
:
3970 value
= fields
->f_13_3
;
3972 case M32C_OPERAND_SCCOND32
:
3973 value
= fields
->f_cond16
;
3975 case M32C_OPERAND_SIZE
:
3980 /* xgettext:c-format */
3981 fprintf (stderr
, _("Unrecognized field %d while getting vma operand.\n"),
3989 void m32c_cgen_set_int_operand (CGEN_CPU_DESC
, int, CGEN_FIELDS
*, int);
3990 void m32c_cgen_set_vma_operand (CGEN_CPU_DESC
, int, CGEN_FIELDS
*, bfd_vma
);
3992 /* Stuffing values in cgen_fields is handled by a collection of functions.
3993 They are distinguished by the type of the VALUE argument they accept.
3994 TODO: floating point, inlining support, remove cases where argument type
3998 m32c_cgen_set_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED
,
4000 CGEN_FIELDS
* fields
,
4005 case M32C_OPERAND_A0
:
4007 case M32C_OPERAND_A1
:
4009 case M32C_OPERAND_AN16_PUSH_S
:
4010 fields
->f_4_1
= value
;
4012 case M32C_OPERAND_BIT16AN
:
4013 fields
->f_dst16_an
= value
;
4015 case M32C_OPERAND_BIT16RN
:
4016 fields
->f_dst16_rn
= value
;
4018 case M32C_OPERAND_BIT32ANPREFIXED
:
4019 fields
->f_dst32_an_prefixed
= value
;
4021 case M32C_OPERAND_BIT32ANUNPREFIXED
:
4022 fields
->f_dst32_an_unprefixed
= value
;
4024 case M32C_OPERAND_BIT32RNPREFIXED
:
4025 fields
->f_dst32_rn_prefixed_QI
= value
;
4027 case M32C_OPERAND_BIT32RNUNPREFIXED
:
4028 fields
->f_dst32_rn_unprefixed_QI
= value
;
4030 case M32C_OPERAND_BITBASE16_16_S8
:
4031 fields
->f_dsp_16_s8
= value
;
4033 case M32C_OPERAND_BITBASE16_16_U16
:
4034 fields
->f_dsp_16_u16
= value
;
4036 case M32C_OPERAND_BITBASE16_16_U8
:
4037 fields
->f_dsp_16_u8
= value
;
4039 case M32C_OPERAND_BITBASE16_8_U11_S
:
4040 fields
->f_bitbase16_u11_S
= value
;
4042 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED
:
4043 fields
->f_bitbase32_16_s11_unprefixed
= value
;
4045 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED
:
4046 fields
->f_bitbase32_16_s19_unprefixed
= value
;
4048 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED
:
4049 fields
->f_bitbase32_16_u11_unprefixed
= value
;
4051 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED
:
4052 fields
->f_bitbase32_16_u19_unprefixed
= value
;
4054 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED
:
4055 fields
->f_bitbase32_16_u27_unprefixed
= value
;
4057 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED
:
4058 fields
->f_bitbase32_24_s11_prefixed
= value
;
4060 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED
:
4061 fields
->f_bitbase32_24_s19_prefixed
= value
;
4063 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED
:
4064 fields
->f_bitbase32_24_u11_prefixed
= value
;
4066 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED
:
4067 fields
->f_bitbase32_24_u19_prefixed
= value
;
4069 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED
:
4070 fields
->f_bitbase32_24_u27_prefixed
= value
;
4072 case M32C_OPERAND_BITNO16R
:
4073 fields
->f_dsp_16_u8
= value
;
4075 case M32C_OPERAND_BITNO32PREFIXED
:
4076 fields
->f_bitno32_prefixed
= value
;
4078 case M32C_OPERAND_BITNO32UNPREFIXED
:
4079 fields
->f_bitno32_unprefixed
= value
;
4081 case M32C_OPERAND_DSP_10_U6
:
4082 fields
->f_dsp_10_u6
= value
;
4084 case M32C_OPERAND_DSP_16_S16
:
4085 fields
->f_dsp_16_s16
= value
;
4087 case M32C_OPERAND_DSP_16_S8
:
4088 fields
->f_dsp_16_s8
= value
;
4090 case M32C_OPERAND_DSP_16_U16
:
4091 fields
->f_dsp_16_u16
= value
;
4093 case M32C_OPERAND_DSP_16_U20
:
4094 fields
->f_dsp_16_u24
= value
;
4096 case M32C_OPERAND_DSP_16_U24
:
4097 fields
->f_dsp_16_u24
= value
;
4099 case M32C_OPERAND_DSP_16_U8
:
4100 fields
->f_dsp_16_u8
= value
;
4102 case M32C_OPERAND_DSP_24_S16
:
4103 fields
->f_dsp_24_s16
= value
;
4105 case M32C_OPERAND_DSP_24_S8
:
4106 fields
->f_dsp_24_s8
= value
;
4108 case M32C_OPERAND_DSP_24_U16
:
4109 fields
->f_dsp_24_u16
= value
;
4111 case M32C_OPERAND_DSP_24_U20
:
4112 fields
->f_dsp_24_u24
= value
;
4114 case M32C_OPERAND_DSP_24_U24
:
4115 fields
->f_dsp_24_u24
= value
;
4117 case M32C_OPERAND_DSP_24_U8
:
4118 fields
->f_dsp_24_u8
= value
;
4120 case M32C_OPERAND_DSP_32_S16
:
4121 fields
->f_dsp_32_s16
= value
;
4123 case M32C_OPERAND_DSP_32_S8
:
4124 fields
->f_dsp_32_s8
= value
;
4126 case M32C_OPERAND_DSP_32_U16
:
4127 fields
->f_dsp_32_u16
= value
;
4129 case M32C_OPERAND_DSP_32_U20
:
4130 fields
->f_dsp_32_u24
= value
;
4132 case M32C_OPERAND_DSP_32_U24
:
4133 fields
->f_dsp_32_u24
= value
;
4135 case M32C_OPERAND_DSP_32_U8
:
4136 fields
->f_dsp_32_u8
= value
;
4138 case M32C_OPERAND_DSP_40_S16
:
4139 fields
->f_dsp_40_s16
= value
;
4141 case M32C_OPERAND_DSP_40_S8
:
4142 fields
->f_dsp_40_s8
= value
;
4144 case M32C_OPERAND_DSP_40_U16
:
4145 fields
->f_dsp_40_u16
= value
;
4147 case M32C_OPERAND_DSP_40_U24
:
4148 fields
->f_dsp_40_u24
= value
;
4150 case M32C_OPERAND_DSP_40_U8
:
4151 fields
->f_dsp_40_u8
= value
;
4153 case M32C_OPERAND_DSP_48_S16
:
4154 fields
->f_dsp_48_s16
= value
;
4156 case M32C_OPERAND_DSP_48_S8
:
4157 fields
->f_dsp_48_s8
= value
;
4159 case M32C_OPERAND_DSP_48_U16
:
4160 fields
->f_dsp_48_u16
= value
;
4162 case M32C_OPERAND_DSP_48_U24
:
4163 fields
->f_dsp_48_u24
= value
;
4165 case M32C_OPERAND_DSP_48_U8
:
4166 fields
->f_dsp_48_u8
= value
;
4168 case M32C_OPERAND_DSP_8_S24
:
4169 fields
->f_dsp_8_s24
= value
;
4171 case M32C_OPERAND_DSP_8_S8
:
4172 fields
->f_dsp_8_s8
= value
;
4174 case M32C_OPERAND_DSP_8_U16
:
4175 fields
->f_dsp_8_u16
= value
;
4177 case M32C_OPERAND_DSP_8_U24
:
4178 fields
->f_dsp_8_u24
= value
;
4180 case M32C_OPERAND_DSP_8_U6
:
4181 fields
->f_dsp_8_u6
= value
;
4183 case M32C_OPERAND_DSP_8_U8
:
4184 fields
->f_dsp_8_u8
= value
;
4186 case M32C_OPERAND_DST16AN
:
4187 fields
->f_dst16_an
= value
;
4189 case M32C_OPERAND_DST16AN_S
:
4190 fields
->f_dst16_an_s
= value
;
4192 case M32C_OPERAND_DST16ANHI
:
4193 fields
->f_dst16_an
= value
;
4195 case M32C_OPERAND_DST16ANQI
:
4196 fields
->f_dst16_an
= value
;
4198 case M32C_OPERAND_DST16ANQI_S
:
4199 fields
->f_dst16_rn_QI_s
= value
;
4201 case M32C_OPERAND_DST16ANSI
:
4202 fields
->f_dst16_an
= value
;
4204 case M32C_OPERAND_DST16RNEXTQI
:
4205 fields
->f_dst16_rn_ext
= value
;
4207 case M32C_OPERAND_DST16RNHI
:
4208 fields
->f_dst16_rn
= value
;
4210 case M32C_OPERAND_DST16RNQI
:
4211 fields
->f_dst16_rn
= value
;
4213 case M32C_OPERAND_DST16RNQI_S
:
4214 fields
->f_dst16_rn_QI_s
= value
;
4216 case M32C_OPERAND_DST16RNSI
:
4217 fields
->f_dst16_rn
= value
;
4219 case M32C_OPERAND_DST32ANEXTUNPREFIXED
:
4220 fields
->f_dst32_an_unprefixed
= value
;
4222 case M32C_OPERAND_DST32ANPREFIXED
:
4223 fields
->f_dst32_an_prefixed
= value
;
4225 case M32C_OPERAND_DST32ANPREFIXEDHI
:
4226 fields
->f_dst32_an_prefixed
= value
;
4228 case M32C_OPERAND_DST32ANPREFIXEDQI
:
4229 fields
->f_dst32_an_prefixed
= value
;
4231 case M32C_OPERAND_DST32ANPREFIXEDSI
:
4232 fields
->f_dst32_an_prefixed
= value
;
4234 case M32C_OPERAND_DST32ANUNPREFIXED
:
4235 fields
->f_dst32_an_unprefixed
= value
;
4237 case M32C_OPERAND_DST32ANUNPREFIXEDHI
:
4238 fields
->f_dst32_an_unprefixed
= value
;
4240 case M32C_OPERAND_DST32ANUNPREFIXEDQI
:
4241 fields
->f_dst32_an_unprefixed
= value
;
4243 case M32C_OPERAND_DST32ANUNPREFIXEDSI
:
4244 fields
->f_dst32_an_unprefixed
= value
;
4246 case M32C_OPERAND_DST32R0HI_S
:
4248 case M32C_OPERAND_DST32R0QI_S
:
4250 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI
:
4251 fields
->f_dst32_rn_ext_unprefixed
= value
;
4253 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI
:
4254 fields
->f_dst32_rn_ext_unprefixed
= value
;
4256 case M32C_OPERAND_DST32RNPREFIXEDHI
:
4257 fields
->f_dst32_rn_prefixed_HI
= value
;
4259 case M32C_OPERAND_DST32RNPREFIXEDQI
:
4260 fields
->f_dst32_rn_prefixed_QI
= value
;
4262 case M32C_OPERAND_DST32RNPREFIXEDSI
:
4263 fields
->f_dst32_rn_prefixed_SI
= value
;
4265 case M32C_OPERAND_DST32RNUNPREFIXEDHI
:
4266 fields
->f_dst32_rn_unprefixed_HI
= value
;
4268 case M32C_OPERAND_DST32RNUNPREFIXEDQI
:
4269 fields
->f_dst32_rn_unprefixed_QI
= value
;
4271 case M32C_OPERAND_DST32RNUNPREFIXEDSI
:
4272 fields
->f_dst32_rn_unprefixed_SI
= value
;
4274 case M32C_OPERAND_G
:
4276 case M32C_OPERAND_IMM_12_S4
:
4277 fields
->f_imm_12_s4
= value
;
4279 case M32C_OPERAND_IMM_13_U3
:
4280 fields
->f_imm_13_u3
= value
;
4282 case M32C_OPERAND_IMM_16_HI
:
4283 fields
->f_dsp_16_s16
= value
;
4285 case M32C_OPERAND_IMM_16_QI
:
4286 fields
->f_dsp_16_s8
= value
;
4288 case M32C_OPERAND_IMM_16_SI
:
4289 fields
->f_dsp_16_s32
= value
;
4291 case M32C_OPERAND_IMM_20_S4
:
4292 fields
->f_imm_20_s4
= value
;
4294 case M32C_OPERAND_IMM_24_HI
:
4295 fields
->f_dsp_24_s16
= value
;
4297 case M32C_OPERAND_IMM_24_QI
:
4298 fields
->f_dsp_24_s8
= value
;
4300 case M32C_OPERAND_IMM_24_SI
:
4301 fields
->f_dsp_24_s32
= value
;
4303 case M32C_OPERAND_IMM_32_HI
:
4304 fields
->f_dsp_32_s16
= value
;
4306 case M32C_OPERAND_IMM_32_QI
:
4307 fields
->f_dsp_32_s8
= value
;
4309 case M32C_OPERAND_IMM_32_SI
:
4310 fields
->f_dsp_32_s32
= value
;
4312 case M32C_OPERAND_IMM_40_HI
:
4313 fields
->f_dsp_40_s16
= value
;
4315 case M32C_OPERAND_IMM_40_QI
:
4316 fields
->f_dsp_40_s8
= value
;
4318 case M32C_OPERAND_IMM_40_SI
:
4319 fields
->f_dsp_40_s32
= value
;
4321 case M32C_OPERAND_IMM_48_HI
:
4322 fields
->f_dsp_48_s16
= value
;
4324 case M32C_OPERAND_IMM_48_QI
:
4325 fields
->f_dsp_48_s8
= value
;
4327 case M32C_OPERAND_IMM_48_SI
:
4328 fields
->f_dsp_48_s32
= value
;
4330 case M32C_OPERAND_IMM_56_HI
:
4331 fields
->f_dsp_56_s16
= value
;
4333 case M32C_OPERAND_IMM_56_QI
:
4334 fields
->f_dsp_56_s8
= value
;
4336 case M32C_OPERAND_IMM_64_HI
:
4337 fields
->f_dsp_64_s16
= value
;
4339 case M32C_OPERAND_IMM_8_HI
:
4340 fields
->f_dsp_8_s16
= value
;
4342 case M32C_OPERAND_IMM_8_QI
:
4343 fields
->f_dsp_8_s8
= value
;
4345 case M32C_OPERAND_IMM_8_S4
:
4346 fields
->f_imm_8_s4
= value
;
4348 case M32C_OPERAND_IMM_SH_12_S4
:
4349 fields
->f_imm_12_s4
= value
;
4351 case M32C_OPERAND_IMM_SH_20_S4
:
4352 fields
->f_imm_20_s4
= value
;
4354 case M32C_OPERAND_IMM_SH_8_S4
:
4355 fields
->f_imm_8_s4
= value
;
4357 case M32C_OPERAND_IMM1_S
:
4358 fields
->f_imm1_S
= value
;
4360 case M32C_OPERAND_IMM3_S
:
4361 fields
->f_imm3_S
= value
;
4363 case M32C_OPERAND_LAB_16_8
:
4364 fields
->f_lab_16_8
= value
;
4366 case M32C_OPERAND_LAB_24_8
:
4367 fields
->f_lab_24_8
= value
;
4369 case M32C_OPERAND_LAB_32_8
:
4370 fields
->f_lab_32_8
= value
;
4372 case M32C_OPERAND_LAB_40_8
:
4373 fields
->f_lab_40_8
= value
;
4375 case M32C_OPERAND_LAB_5_3
:
4376 fields
->f_lab_5_3
= value
;
4378 case M32C_OPERAND_LAB_8_16
:
4379 fields
->f_lab_8_16
= value
;
4381 case M32C_OPERAND_LAB_8_24
:
4382 fields
->f_lab_8_24
= value
;
4384 case M32C_OPERAND_LAB_8_8
:
4385 fields
->f_lab_8_8
= value
;
4387 case M32C_OPERAND_LAB32_JMP_S
:
4388 fields
->f_lab32_jmp_s
= value
;
4390 case M32C_OPERAND_Q
:
4392 case M32C_OPERAND_R0
:
4394 case M32C_OPERAND_R0H
:
4396 case M32C_OPERAND_R0L
:
4398 case M32C_OPERAND_R1
:
4400 case M32C_OPERAND_R1R2R0
:
4402 case M32C_OPERAND_R2
:
4404 case M32C_OPERAND_R2R0
:
4406 case M32C_OPERAND_R3
:
4408 case M32C_OPERAND_R3R1
:
4410 case M32C_OPERAND_REGSETPOP
:
4411 fields
->f_8_8
= value
;
4413 case M32C_OPERAND_REGSETPUSH
:
4414 fields
->f_8_8
= value
;
4416 case M32C_OPERAND_RN16_PUSH_S
:
4417 fields
->f_4_1
= value
;
4419 case M32C_OPERAND_S
:
4421 case M32C_OPERAND_SRC16AN
:
4422 fields
->f_src16_an
= value
;
4424 case M32C_OPERAND_SRC16ANHI
:
4425 fields
->f_src16_an
= value
;
4427 case M32C_OPERAND_SRC16ANQI
:
4428 fields
->f_src16_an
= value
;
4430 case M32C_OPERAND_SRC16RNHI
:
4431 fields
->f_src16_rn
= value
;
4433 case M32C_OPERAND_SRC16RNQI
:
4434 fields
->f_src16_rn
= value
;
4436 case M32C_OPERAND_SRC32ANPREFIXED
:
4437 fields
->f_src32_an_prefixed
= value
;
4439 case M32C_OPERAND_SRC32ANPREFIXEDHI
:
4440 fields
->f_src32_an_prefixed
= value
;
4442 case M32C_OPERAND_SRC32ANPREFIXEDQI
:
4443 fields
->f_src32_an_prefixed
= value
;
4445 case M32C_OPERAND_SRC32ANPREFIXEDSI
:
4446 fields
->f_src32_an_prefixed
= value
;
4448 case M32C_OPERAND_SRC32ANUNPREFIXED
:
4449 fields
->f_src32_an_unprefixed
= value
;
4451 case M32C_OPERAND_SRC32ANUNPREFIXEDHI
:
4452 fields
->f_src32_an_unprefixed
= value
;
4454 case M32C_OPERAND_SRC32ANUNPREFIXEDQI
:
4455 fields
->f_src32_an_unprefixed
= value
;
4457 case M32C_OPERAND_SRC32ANUNPREFIXEDSI
:
4458 fields
->f_src32_an_unprefixed
= value
;
4460 case M32C_OPERAND_SRC32RNPREFIXEDHI
:
4461 fields
->f_src32_rn_prefixed_HI
= value
;
4463 case M32C_OPERAND_SRC32RNPREFIXEDQI
:
4464 fields
->f_src32_rn_prefixed_QI
= value
;
4466 case M32C_OPERAND_SRC32RNPREFIXEDSI
:
4467 fields
->f_src32_rn_prefixed_SI
= value
;
4469 case M32C_OPERAND_SRC32RNUNPREFIXEDHI
:
4470 fields
->f_src32_rn_unprefixed_HI
= value
;
4472 case M32C_OPERAND_SRC32RNUNPREFIXEDQI
:
4473 fields
->f_src32_rn_unprefixed_QI
= value
;
4475 case M32C_OPERAND_SRC32RNUNPREFIXEDSI
:
4476 fields
->f_src32_rn_unprefixed_SI
= value
;
4478 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL
:
4479 fields
->f_5_1
= value
;
4481 case M32C_OPERAND_X
:
4483 case M32C_OPERAND_Z
:
4485 case M32C_OPERAND_COND16_16
:
4486 fields
->f_dsp_16_u8
= value
;
4488 case M32C_OPERAND_COND16_24
:
4489 fields
->f_dsp_24_u8
= value
;
4491 case M32C_OPERAND_COND16_32
:
4492 fields
->f_dsp_32_u8
= value
;
4494 case M32C_OPERAND_COND16C
:
4495 fields
->f_cond16
= value
;
4497 case M32C_OPERAND_COND16J
:
4498 fields
->f_cond16
= value
;
4500 case M32C_OPERAND_COND16J5
:
4501 fields
->f_cond16j_5
= value
;
4503 case M32C_OPERAND_COND32
:
4504 fields
->f_cond32
= value
;
4506 case M32C_OPERAND_COND32_16
:
4507 fields
->f_dsp_16_u8
= value
;
4509 case M32C_OPERAND_COND32_24
:
4510 fields
->f_dsp_24_u8
= value
;
4512 case M32C_OPERAND_COND32_32
:
4513 fields
->f_dsp_32_u8
= value
;
4515 case M32C_OPERAND_COND32_40
:
4516 fields
->f_dsp_40_u8
= value
;
4518 case M32C_OPERAND_COND32J
:
4519 fields
->f_cond32j
= value
;
4521 case M32C_OPERAND_CR1_PREFIXED_32
:
4522 fields
->f_21_3
= value
;
4524 case M32C_OPERAND_CR1_UNPREFIXED_32
:
4525 fields
->f_13_3
= value
;
4527 case M32C_OPERAND_CR16
:
4528 fields
->f_9_3
= value
;
4530 case M32C_OPERAND_CR2_32
:
4531 fields
->f_13_3
= value
;
4533 case M32C_OPERAND_CR3_PREFIXED_32
:
4534 fields
->f_21_3
= value
;
4536 case M32C_OPERAND_CR3_UNPREFIXED_32
:
4537 fields
->f_13_3
= value
;
4539 case M32C_OPERAND_FLAGS16
:
4540 fields
->f_9_3
= value
;
4542 case M32C_OPERAND_FLAGS32
:
4543 fields
->f_13_3
= value
;
4545 case M32C_OPERAND_SCCOND32
:
4546 fields
->f_cond16
= value
;
4548 case M32C_OPERAND_SIZE
:
4552 /* xgettext:c-format */
4553 fprintf (stderr
, _("Unrecognized field %d while setting int operand.\n"),
4560 m32c_cgen_set_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED
,
4562 CGEN_FIELDS
* fields
,
4567 case M32C_OPERAND_A0
:
4569 case M32C_OPERAND_A1
:
4571 case M32C_OPERAND_AN16_PUSH_S
:
4572 fields
->f_4_1
= value
;
4574 case M32C_OPERAND_BIT16AN
:
4575 fields
->f_dst16_an
= value
;
4577 case M32C_OPERAND_BIT16RN
:
4578 fields
->f_dst16_rn
= value
;
4580 case M32C_OPERAND_BIT32ANPREFIXED
:
4581 fields
->f_dst32_an_prefixed
= value
;
4583 case M32C_OPERAND_BIT32ANUNPREFIXED
:
4584 fields
->f_dst32_an_unprefixed
= value
;
4586 case M32C_OPERAND_BIT32RNPREFIXED
:
4587 fields
->f_dst32_rn_prefixed_QI
= value
;
4589 case M32C_OPERAND_BIT32RNUNPREFIXED
:
4590 fields
->f_dst32_rn_unprefixed_QI
= value
;
4592 case M32C_OPERAND_BITBASE16_16_S8
:
4593 fields
->f_dsp_16_s8
= value
;
4595 case M32C_OPERAND_BITBASE16_16_U16
:
4596 fields
->f_dsp_16_u16
= value
;
4598 case M32C_OPERAND_BITBASE16_16_U8
:
4599 fields
->f_dsp_16_u8
= value
;
4601 case M32C_OPERAND_BITBASE16_8_U11_S
:
4602 fields
->f_bitbase16_u11_S
= value
;
4604 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED
:
4605 fields
->f_bitbase32_16_s11_unprefixed
= value
;
4607 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED
:
4608 fields
->f_bitbase32_16_s19_unprefixed
= value
;
4610 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED
:
4611 fields
->f_bitbase32_16_u11_unprefixed
= value
;
4613 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED
:
4614 fields
->f_bitbase32_16_u19_unprefixed
= value
;
4616 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED
:
4617 fields
->f_bitbase32_16_u27_unprefixed
= value
;
4619 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED
:
4620 fields
->f_bitbase32_24_s11_prefixed
= value
;
4622 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED
:
4623 fields
->f_bitbase32_24_s19_prefixed
= value
;
4625 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED
:
4626 fields
->f_bitbase32_24_u11_prefixed
= value
;
4628 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED
:
4629 fields
->f_bitbase32_24_u19_prefixed
= value
;
4631 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED
:
4632 fields
->f_bitbase32_24_u27_prefixed
= value
;
4634 case M32C_OPERAND_BITNO16R
:
4635 fields
->f_dsp_16_u8
= value
;
4637 case M32C_OPERAND_BITNO32PREFIXED
:
4638 fields
->f_bitno32_prefixed
= value
;
4640 case M32C_OPERAND_BITNO32UNPREFIXED
:
4641 fields
->f_bitno32_unprefixed
= value
;
4643 case M32C_OPERAND_DSP_10_U6
:
4644 fields
->f_dsp_10_u6
= value
;
4646 case M32C_OPERAND_DSP_16_S16
:
4647 fields
->f_dsp_16_s16
= value
;
4649 case M32C_OPERAND_DSP_16_S8
:
4650 fields
->f_dsp_16_s8
= value
;
4652 case M32C_OPERAND_DSP_16_U16
:
4653 fields
->f_dsp_16_u16
= value
;
4655 case M32C_OPERAND_DSP_16_U20
:
4656 fields
->f_dsp_16_u24
= value
;
4658 case M32C_OPERAND_DSP_16_U24
:
4659 fields
->f_dsp_16_u24
= value
;
4661 case M32C_OPERAND_DSP_16_U8
:
4662 fields
->f_dsp_16_u8
= value
;
4664 case M32C_OPERAND_DSP_24_S16
:
4665 fields
->f_dsp_24_s16
= value
;
4667 case M32C_OPERAND_DSP_24_S8
:
4668 fields
->f_dsp_24_s8
= value
;
4670 case M32C_OPERAND_DSP_24_U16
:
4671 fields
->f_dsp_24_u16
= value
;
4673 case M32C_OPERAND_DSP_24_U20
:
4674 fields
->f_dsp_24_u24
= value
;
4676 case M32C_OPERAND_DSP_24_U24
:
4677 fields
->f_dsp_24_u24
= value
;
4679 case M32C_OPERAND_DSP_24_U8
:
4680 fields
->f_dsp_24_u8
= value
;
4682 case M32C_OPERAND_DSP_32_S16
:
4683 fields
->f_dsp_32_s16
= value
;
4685 case M32C_OPERAND_DSP_32_S8
:
4686 fields
->f_dsp_32_s8
= value
;
4688 case M32C_OPERAND_DSP_32_U16
:
4689 fields
->f_dsp_32_u16
= value
;
4691 case M32C_OPERAND_DSP_32_U20
:
4692 fields
->f_dsp_32_u24
= value
;
4694 case M32C_OPERAND_DSP_32_U24
:
4695 fields
->f_dsp_32_u24
= value
;
4697 case M32C_OPERAND_DSP_32_U8
:
4698 fields
->f_dsp_32_u8
= value
;
4700 case M32C_OPERAND_DSP_40_S16
:
4701 fields
->f_dsp_40_s16
= value
;
4703 case M32C_OPERAND_DSP_40_S8
:
4704 fields
->f_dsp_40_s8
= value
;
4706 case M32C_OPERAND_DSP_40_U16
:
4707 fields
->f_dsp_40_u16
= value
;
4709 case M32C_OPERAND_DSP_40_U24
:
4710 fields
->f_dsp_40_u24
= value
;
4712 case M32C_OPERAND_DSP_40_U8
:
4713 fields
->f_dsp_40_u8
= value
;
4715 case M32C_OPERAND_DSP_48_S16
:
4716 fields
->f_dsp_48_s16
= value
;
4718 case M32C_OPERAND_DSP_48_S8
:
4719 fields
->f_dsp_48_s8
= value
;
4721 case M32C_OPERAND_DSP_48_U16
:
4722 fields
->f_dsp_48_u16
= value
;
4724 case M32C_OPERAND_DSP_48_U24
:
4725 fields
->f_dsp_48_u24
= value
;
4727 case M32C_OPERAND_DSP_48_U8
:
4728 fields
->f_dsp_48_u8
= value
;
4730 case M32C_OPERAND_DSP_8_S24
:
4731 fields
->f_dsp_8_s24
= value
;
4733 case M32C_OPERAND_DSP_8_S8
:
4734 fields
->f_dsp_8_s8
= value
;
4736 case M32C_OPERAND_DSP_8_U16
:
4737 fields
->f_dsp_8_u16
= value
;
4739 case M32C_OPERAND_DSP_8_U24
:
4740 fields
->f_dsp_8_u24
= value
;
4742 case M32C_OPERAND_DSP_8_U6
:
4743 fields
->f_dsp_8_u6
= value
;
4745 case M32C_OPERAND_DSP_8_U8
:
4746 fields
->f_dsp_8_u8
= value
;
4748 case M32C_OPERAND_DST16AN
:
4749 fields
->f_dst16_an
= value
;
4751 case M32C_OPERAND_DST16AN_S
:
4752 fields
->f_dst16_an_s
= value
;
4754 case M32C_OPERAND_DST16ANHI
:
4755 fields
->f_dst16_an
= value
;
4757 case M32C_OPERAND_DST16ANQI
:
4758 fields
->f_dst16_an
= value
;
4760 case M32C_OPERAND_DST16ANQI_S
:
4761 fields
->f_dst16_rn_QI_s
= value
;
4763 case M32C_OPERAND_DST16ANSI
:
4764 fields
->f_dst16_an
= value
;
4766 case M32C_OPERAND_DST16RNEXTQI
:
4767 fields
->f_dst16_rn_ext
= value
;
4769 case M32C_OPERAND_DST16RNHI
:
4770 fields
->f_dst16_rn
= value
;
4772 case M32C_OPERAND_DST16RNQI
:
4773 fields
->f_dst16_rn
= value
;
4775 case M32C_OPERAND_DST16RNQI_S
:
4776 fields
->f_dst16_rn_QI_s
= value
;
4778 case M32C_OPERAND_DST16RNSI
:
4779 fields
->f_dst16_rn
= value
;
4781 case M32C_OPERAND_DST32ANEXTUNPREFIXED
:
4782 fields
->f_dst32_an_unprefixed
= value
;
4784 case M32C_OPERAND_DST32ANPREFIXED
:
4785 fields
->f_dst32_an_prefixed
= value
;
4787 case M32C_OPERAND_DST32ANPREFIXEDHI
:
4788 fields
->f_dst32_an_prefixed
= value
;
4790 case M32C_OPERAND_DST32ANPREFIXEDQI
:
4791 fields
->f_dst32_an_prefixed
= value
;
4793 case M32C_OPERAND_DST32ANPREFIXEDSI
:
4794 fields
->f_dst32_an_prefixed
= value
;
4796 case M32C_OPERAND_DST32ANUNPREFIXED
:
4797 fields
->f_dst32_an_unprefixed
= value
;
4799 case M32C_OPERAND_DST32ANUNPREFIXEDHI
:
4800 fields
->f_dst32_an_unprefixed
= value
;
4802 case M32C_OPERAND_DST32ANUNPREFIXEDQI
:
4803 fields
->f_dst32_an_unprefixed
= value
;
4805 case M32C_OPERAND_DST32ANUNPREFIXEDSI
:
4806 fields
->f_dst32_an_unprefixed
= value
;
4808 case M32C_OPERAND_DST32R0HI_S
:
4810 case M32C_OPERAND_DST32R0QI_S
:
4812 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI
:
4813 fields
->f_dst32_rn_ext_unprefixed
= value
;
4815 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI
:
4816 fields
->f_dst32_rn_ext_unprefixed
= value
;
4818 case M32C_OPERAND_DST32RNPREFIXEDHI
:
4819 fields
->f_dst32_rn_prefixed_HI
= value
;
4821 case M32C_OPERAND_DST32RNPREFIXEDQI
:
4822 fields
->f_dst32_rn_prefixed_QI
= value
;
4824 case M32C_OPERAND_DST32RNPREFIXEDSI
:
4825 fields
->f_dst32_rn_prefixed_SI
= value
;
4827 case M32C_OPERAND_DST32RNUNPREFIXEDHI
:
4828 fields
->f_dst32_rn_unprefixed_HI
= value
;
4830 case M32C_OPERAND_DST32RNUNPREFIXEDQI
:
4831 fields
->f_dst32_rn_unprefixed_QI
= value
;
4833 case M32C_OPERAND_DST32RNUNPREFIXEDSI
:
4834 fields
->f_dst32_rn_unprefixed_SI
= value
;
4836 case M32C_OPERAND_G
:
4838 case M32C_OPERAND_IMM_12_S4
:
4839 fields
->f_imm_12_s4
= value
;
4841 case M32C_OPERAND_IMM_13_U3
:
4842 fields
->f_imm_13_u3
= value
;
4844 case M32C_OPERAND_IMM_16_HI
:
4845 fields
->f_dsp_16_s16
= value
;
4847 case M32C_OPERAND_IMM_16_QI
:
4848 fields
->f_dsp_16_s8
= value
;
4850 case M32C_OPERAND_IMM_16_SI
:
4851 fields
->f_dsp_16_s32
= value
;
4853 case M32C_OPERAND_IMM_20_S4
:
4854 fields
->f_imm_20_s4
= value
;
4856 case M32C_OPERAND_IMM_24_HI
:
4857 fields
->f_dsp_24_s16
= value
;
4859 case M32C_OPERAND_IMM_24_QI
:
4860 fields
->f_dsp_24_s8
= value
;
4862 case M32C_OPERAND_IMM_24_SI
:
4863 fields
->f_dsp_24_s32
= value
;
4865 case M32C_OPERAND_IMM_32_HI
:
4866 fields
->f_dsp_32_s16
= value
;
4868 case M32C_OPERAND_IMM_32_QI
:
4869 fields
->f_dsp_32_s8
= value
;
4871 case M32C_OPERAND_IMM_32_SI
:
4872 fields
->f_dsp_32_s32
= value
;
4874 case M32C_OPERAND_IMM_40_HI
:
4875 fields
->f_dsp_40_s16
= value
;
4877 case M32C_OPERAND_IMM_40_QI
:
4878 fields
->f_dsp_40_s8
= value
;
4880 case M32C_OPERAND_IMM_40_SI
:
4881 fields
->f_dsp_40_s32
= value
;
4883 case M32C_OPERAND_IMM_48_HI
:
4884 fields
->f_dsp_48_s16
= value
;
4886 case M32C_OPERAND_IMM_48_QI
:
4887 fields
->f_dsp_48_s8
= value
;
4889 case M32C_OPERAND_IMM_48_SI
:
4890 fields
->f_dsp_48_s32
= value
;
4892 case M32C_OPERAND_IMM_56_HI
:
4893 fields
->f_dsp_56_s16
= value
;
4895 case M32C_OPERAND_IMM_56_QI
:
4896 fields
->f_dsp_56_s8
= value
;
4898 case M32C_OPERAND_IMM_64_HI
:
4899 fields
->f_dsp_64_s16
= value
;
4901 case M32C_OPERAND_IMM_8_HI
:
4902 fields
->f_dsp_8_s16
= value
;
4904 case M32C_OPERAND_IMM_8_QI
:
4905 fields
->f_dsp_8_s8
= value
;
4907 case M32C_OPERAND_IMM_8_S4
:
4908 fields
->f_imm_8_s4
= value
;
4910 case M32C_OPERAND_IMM_SH_12_S4
:
4911 fields
->f_imm_12_s4
= value
;
4913 case M32C_OPERAND_IMM_SH_20_S4
:
4914 fields
->f_imm_20_s4
= value
;
4916 case M32C_OPERAND_IMM_SH_8_S4
:
4917 fields
->f_imm_8_s4
= value
;
4919 case M32C_OPERAND_IMM1_S
:
4920 fields
->f_imm1_S
= value
;
4922 case M32C_OPERAND_IMM3_S
:
4923 fields
->f_imm3_S
= value
;
4925 case M32C_OPERAND_LAB_16_8
:
4926 fields
->f_lab_16_8
= value
;
4928 case M32C_OPERAND_LAB_24_8
:
4929 fields
->f_lab_24_8
= value
;
4931 case M32C_OPERAND_LAB_32_8
:
4932 fields
->f_lab_32_8
= value
;
4934 case M32C_OPERAND_LAB_40_8
:
4935 fields
->f_lab_40_8
= value
;
4937 case M32C_OPERAND_LAB_5_3
:
4938 fields
->f_lab_5_3
= value
;
4940 case M32C_OPERAND_LAB_8_16
:
4941 fields
->f_lab_8_16
= value
;
4943 case M32C_OPERAND_LAB_8_24
:
4944 fields
->f_lab_8_24
= value
;
4946 case M32C_OPERAND_LAB_8_8
:
4947 fields
->f_lab_8_8
= value
;
4949 case M32C_OPERAND_LAB32_JMP_S
:
4950 fields
->f_lab32_jmp_s
= value
;
4952 case M32C_OPERAND_Q
:
4954 case M32C_OPERAND_R0
:
4956 case M32C_OPERAND_R0H
:
4958 case M32C_OPERAND_R0L
:
4960 case M32C_OPERAND_R1
:
4962 case M32C_OPERAND_R1R2R0
:
4964 case M32C_OPERAND_R2
:
4966 case M32C_OPERAND_R2R0
:
4968 case M32C_OPERAND_R3
:
4970 case M32C_OPERAND_R3R1
:
4972 case M32C_OPERAND_REGSETPOP
:
4973 fields
->f_8_8
= value
;
4975 case M32C_OPERAND_REGSETPUSH
:
4976 fields
->f_8_8
= value
;
4978 case M32C_OPERAND_RN16_PUSH_S
:
4979 fields
->f_4_1
= value
;
4981 case M32C_OPERAND_S
:
4983 case M32C_OPERAND_SRC16AN
:
4984 fields
->f_src16_an
= value
;
4986 case M32C_OPERAND_SRC16ANHI
:
4987 fields
->f_src16_an
= value
;
4989 case M32C_OPERAND_SRC16ANQI
:
4990 fields
->f_src16_an
= value
;
4992 case M32C_OPERAND_SRC16RNHI
:
4993 fields
->f_src16_rn
= value
;
4995 case M32C_OPERAND_SRC16RNQI
:
4996 fields
->f_src16_rn
= value
;
4998 case M32C_OPERAND_SRC32ANPREFIXED
:
4999 fields
->f_src32_an_prefixed
= value
;
5001 case M32C_OPERAND_SRC32ANPREFIXEDHI
:
5002 fields
->f_src32_an_prefixed
= value
;
5004 case M32C_OPERAND_SRC32ANPREFIXEDQI
:
5005 fields
->f_src32_an_prefixed
= value
;
5007 case M32C_OPERAND_SRC32ANPREFIXEDSI
:
5008 fields
->f_src32_an_prefixed
= value
;
5010 case M32C_OPERAND_SRC32ANUNPREFIXED
:
5011 fields
->f_src32_an_unprefixed
= value
;
5013 case M32C_OPERAND_SRC32ANUNPREFIXEDHI
:
5014 fields
->f_src32_an_unprefixed
= value
;
5016 case M32C_OPERAND_SRC32ANUNPREFIXEDQI
:
5017 fields
->f_src32_an_unprefixed
= value
;
5019 case M32C_OPERAND_SRC32ANUNPREFIXEDSI
:
5020 fields
->f_src32_an_unprefixed
= value
;
5022 case M32C_OPERAND_SRC32RNPREFIXEDHI
:
5023 fields
->f_src32_rn_prefixed_HI
= value
;
5025 case M32C_OPERAND_SRC32RNPREFIXEDQI
:
5026 fields
->f_src32_rn_prefixed_QI
= value
;
5028 case M32C_OPERAND_SRC32RNPREFIXEDSI
:
5029 fields
->f_src32_rn_prefixed_SI
= value
;
5031 case M32C_OPERAND_SRC32RNUNPREFIXEDHI
:
5032 fields
->f_src32_rn_unprefixed_HI
= value
;
5034 case M32C_OPERAND_SRC32RNUNPREFIXEDQI
:
5035 fields
->f_src32_rn_unprefixed_QI
= value
;
5037 case M32C_OPERAND_SRC32RNUNPREFIXEDSI
:
5038 fields
->f_src32_rn_unprefixed_SI
= value
;
5040 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL
:
5041 fields
->f_5_1
= value
;
5043 case M32C_OPERAND_X
:
5045 case M32C_OPERAND_Z
:
5047 case M32C_OPERAND_COND16_16
:
5048 fields
->f_dsp_16_u8
= value
;
5050 case M32C_OPERAND_COND16_24
:
5051 fields
->f_dsp_24_u8
= value
;
5053 case M32C_OPERAND_COND16_32
:
5054 fields
->f_dsp_32_u8
= value
;
5056 case M32C_OPERAND_COND16C
:
5057 fields
->f_cond16
= value
;
5059 case M32C_OPERAND_COND16J
:
5060 fields
->f_cond16
= value
;
5062 case M32C_OPERAND_COND16J5
:
5063 fields
->f_cond16j_5
= value
;
5065 case M32C_OPERAND_COND32
:
5066 fields
->f_cond32
= value
;
5068 case M32C_OPERAND_COND32_16
:
5069 fields
->f_dsp_16_u8
= value
;
5071 case M32C_OPERAND_COND32_24
:
5072 fields
->f_dsp_24_u8
= value
;
5074 case M32C_OPERAND_COND32_32
:
5075 fields
->f_dsp_32_u8
= value
;
5077 case M32C_OPERAND_COND32_40
:
5078 fields
->f_dsp_40_u8
= value
;
5080 case M32C_OPERAND_COND32J
:
5081 fields
->f_cond32j
= value
;
5083 case M32C_OPERAND_CR1_PREFIXED_32
:
5084 fields
->f_21_3
= value
;
5086 case M32C_OPERAND_CR1_UNPREFIXED_32
:
5087 fields
->f_13_3
= value
;
5089 case M32C_OPERAND_CR16
:
5090 fields
->f_9_3
= value
;
5092 case M32C_OPERAND_CR2_32
:
5093 fields
->f_13_3
= value
;
5095 case M32C_OPERAND_CR3_PREFIXED_32
:
5096 fields
->f_21_3
= value
;
5098 case M32C_OPERAND_CR3_UNPREFIXED_32
:
5099 fields
->f_13_3
= value
;
5101 case M32C_OPERAND_FLAGS16
:
5102 fields
->f_9_3
= value
;
5104 case M32C_OPERAND_FLAGS32
:
5105 fields
->f_13_3
= value
;
5107 case M32C_OPERAND_SCCOND32
:
5108 fields
->f_cond16
= value
;
5110 case M32C_OPERAND_SIZE
:
5114 /* xgettext:c-format */
5115 fprintf (stderr
, _("Unrecognized field %d while setting vma operand.\n"),
5121 /* Function to call before using the instruction builder tables. */
5124 m32c_cgen_init_ibld_table (CGEN_CPU_DESC cd
)
5126 cd
->insert_handlers
= & m32c_cgen_insert_handlers
[0];
5127 cd
->extract_handlers
= & m32c_cgen_extract_handlers
[0];
5129 cd
->insert_operand
= m32c_cgen_insert_operand
;
5130 cd
->extract_operand
= m32c_cgen_extract_operand
;
5132 cd
->get_int_operand
= m32c_cgen_get_int_operand
;
5133 cd
->set_int_operand
= m32c_cgen_set_int_operand
;
5134 cd
->get_vma_operand
= m32c_cgen_get_vma_operand
;
5135 cd
->set_vma_operand
= m32c_cgen_set_vma_operand
;