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 Free Software Foundation, Inc.
8 This file is part of the GNU Binutils and GDB, the GNU debugger.
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 2, or (at your option)
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software Foundation, Inc.,
22 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
24 /* ??? Eventually more and more of this stuff can go to cpu-independent files.
33 #include "m32c-desc.h"
36 #include "safe-ctype.h"
39 #define min(a,b) ((a) < (b) ? (a) : (b))
41 #define max(a,b) ((a) > (b) ? (a) : (b))
43 /* Used by the ifield rtx function. */
44 #define FLD(f) (fields->f)
46 static const char * insert_normal
47 (CGEN_CPU_DESC
, long, unsigned int, unsigned int, unsigned int,
48 unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR
);
49 static const char * insert_insn_normal
50 (CGEN_CPU_DESC
, const CGEN_INSN
*,
51 CGEN_FIELDS
*, CGEN_INSN_BYTES_PTR
, bfd_vma
);
52 static int extract_normal
53 (CGEN_CPU_DESC
, CGEN_EXTRACT_INFO
*, CGEN_INSN_INT
,
54 unsigned int, unsigned int, unsigned int, unsigned int,
55 unsigned int, unsigned int, bfd_vma
, long *);
56 static int extract_insn_normal
57 (CGEN_CPU_DESC
, const CGEN_INSN
*, CGEN_EXTRACT_INFO
*,
58 CGEN_INSN_INT
, CGEN_FIELDS
*, bfd_vma
);
60 static void put_insn_int_value
61 (CGEN_CPU_DESC
, CGEN_INSN_BYTES_PTR
, int, int, CGEN_INSN_INT
);
64 static CGEN_INLINE
void insert_1
65 (CGEN_CPU_DESC
, unsigned long, int, int, int, unsigned char *);
66 static CGEN_INLINE
int fill_cache
67 (CGEN_CPU_DESC
, CGEN_EXTRACT_INFO
*, int, int, bfd_vma
);
68 static CGEN_INLINE
long extract_1
69 (CGEN_CPU_DESC
, CGEN_EXTRACT_INFO
*, int, int, int, unsigned char *, bfd_vma
);
72 /* Operand insertion. */
76 /* Subroutine of insert_normal. */
78 static CGEN_INLINE
void
79 insert_1 (CGEN_CPU_DESC cd
,
89 x
= cgen_get_insn_value (cd
, bufp
, word_length
);
91 /* Written this way to avoid undefined behaviour. */
92 mask
= (((1L << (length
- 1)) - 1) << 1) | 1;
94 shift
= (start
+ 1) - length
;
96 shift
= (word_length
- (start
+ length
));
97 x
= (x
& ~(mask
<< shift
)) | ((value
& mask
) << shift
);
99 cgen_put_insn_value (cd
, bufp
, word_length
, (bfd_vma
) x
);
102 #endif /* ! CGEN_INT_INSN_P */
104 /* Default insertion routine.
106 ATTRS is a mask of the boolean attributes.
107 WORD_OFFSET is the offset in bits from the start of the insn of the value.
108 WORD_LENGTH is the length of the word in bits in which the value resides.
109 START is the starting bit number in the word, architecture origin.
110 LENGTH is the length of VALUE in bits.
111 TOTAL_LENGTH is the total length of the insn in bits.
113 The result is an error message or NULL if success. */
115 /* ??? This duplicates functionality with bfd's howto table and
116 bfd_install_relocation. */
117 /* ??? This doesn't handle bfd_vma's. Create another function when
121 insert_normal (CGEN_CPU_DESC cd
,
124 unsigned int word_offset
,
127 unsigned int word_length
,
128 unsigned int total_length
,
129 CGEN_INSN_BYTES_PTR buffer
)
131 static char errbuf
[100];
132 /* Written this way to avoid undefined behaviour. */
133 unsigned long mask
= (((1L << (length
- 1)) - 1) << 1) | 1;
135 /* If LENGTH is zero, this operand doesn't contribute to the value. */
145 if (word_length
> 32)
148 /* For architectures with insns smaller than the base-insn-bitsize,
149 word_length may be too big. */
150 if (cd
->min_insn_bitsize
< cd
->base_insn_bitsize
)
153 && word_length
> total_length
)
154 word_length
= total_length
;
157 /* Ensure VALUE will fit. */
158 if (CGEN_BOOL_ATTR (attrs
, CGEN_IFLD_SIGN_OPT
))
160 long minval
= - (1L << (length
- 1));
161 unsigned long maxval
= mask
;
163 if ((value
> 0 && (unsigned long) value
> maxval
)
166 /* xgettext:c-format */
168 _("operand out of range (%ld not between %ld and %lu)"),
169 value
, minval
, maxval
);
173 else if (! CGEN_BOOL_ATTR (attrs
, CGEN_IFLD_SIGNED
))
175 unsigned long maxval
= mask
;
177 if ((unsigned long) value
> maxval
)
179 /* xgettext:c-format */
181 _("operand out of range (%lu not between 0 and %lu)"),
188 if (! cgen_signed_overflow_ok_p (cd
))
190 long minval
= - (1L << (length
- 1));
191 long maxval
= (1L << (length
- 1)) - 1;
193 if (value
< minval
|| value
> maxval
)
196 /* xgettext:c-format */
197 (errbuf
, _("operand out of range (%ld not between %ld and %ld)"),
198 value
, minval
, maxval
);
209 if (CGEN_INSN_LSB0_P
)
210 shift
= (word_offset
+ start
+ 1) - length
;
212 shift
= total_length
- (word_offset
+ start
+ length
);
213 *buffer
= (*buffer
& ~(mask
<< shift
)) | ((value
& mask
) << shift
);
216 #else /* ! CGEN_INT_INSN_P */
219 unsigned char *bufp
= (unsigned char *) buffer
+ word_offset
/ 8;
221 insert_1 (cd
, value
, start
, length
, word_length
, bufp
);
224 #endif /* ! CGEN_INT_INSN_P */
229 /* Default insn builder (insert handler).
230 The instruction is recorded in CGEN_INT_INSN_P byte order (meaning
231 that if CGEN_INSN_BYTES_PTR is an int * and thus, the value is
232 recorded in host byte order, otherwise BUFFER is an array of bytes
233 and the value is recorded in target byte order).
234 The result is an error message or NULL if success. */
237 insert_insn_normal (CGEN_CPU_DESC cd
,
238 const CGEN_INSN
* insn
,
239 CGEN_FIELDS
* fields
,
240 CGEN_INSN_BYTES_PTR buffer
,
243 const CGEN_SYNTAX
*syntax
= CGEN_INSN_SYNTAX (insn
);
245 const CGEN_SYNTAX_CHAR_TYPE
* syn
;
247 CGEN_INIT_INSERT (cd
);
248 value
= CGEN_INSN_BASE_VALUE (insn
);
250 /* If we're recording insns as numbers (rather than a string of bytes),
251 target byte order handling is deferred until later. */
255 put_insn_int_value (cd
, buffer
, cd
->base_insn_bitsize
,
256 CGEN_FIELDS_BITSIZE (fields
), value
);
260 cgen_put_insn_value (cd
, buffer
, min ((unsigned) cd
->base_insn_bitsize
,
261 (unsigned) CGEN_FIELDS_BITSIZE (fields
)),
264 #endif /* ! CGEN_INT_INSN_P */
266 /* ??? It would be better to scan the format's fields.
267 Still need to be able to insert a value based on the operand though;
268 e.g. storing a branch displacement that got resolved later.
269 Needs more thought first. */
271 for (syn
= CGEN_SYNTAX_STRING (syntax
); * syn
; ++ syn
)
275 if (CGEN_SYNTAX_CHAR_P (* syn
))
278 errmsg
= (* cd
->insert_operand
) (cd
, CGEN_SYNTAX_FIELD (*syn
),
288 /* Cover function to store an insn value into an integral insn. Must go here
289 because it needs <prefix>-desc.h for CGEN_INT_INSN_P. */
292 put_insn_int_value (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED
,
293 CGEN_INSN_BYTES_PTR buf
,
298 /* For architectures with insns smaller than the base-insn-bitsize,
299 length may be too big. */
300 if (length
> insn_length
)
304 int shift
= insn_length
- length
;
305 /* Written this way to avoid undefined behaviour. */
306 CGEN_INSN_INT mask
= (((1L << (length
- 1)) - 1) << 1) | 1;
307 *buf
= (*buf
& ~(mask
<< shift
)) | ((value
& mask
) << shift
);
312 /* Operand extraction. */
314 #if ! CGEN_INT_INSN_P
316 /* Subroutine of extract_normal.
317 Ensure sufficient bytes are cached in EX_INFO.
318 OFFSET is the offset in bytes from the start of the insn of the value.
319 BYTES is the length of the needed value.
320 Returns 1 for success, 0 for failure. */
322 static CGEN_INLINE
int
323 fill_cache (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED
,
324 CGEN_EXTRACT_INFO
*ex_info
,
329 /* It's doubtful that the middle part has already been fetched so
330 we don't optimize that case. kiss. */
332 disassemble_info
*info
= (disassemble_info
*) ex_info
->dis_info
;
334 /* First do a quick check. */
335 mask
= (1 << bytes
) - 1;
336 if (((ex_info
->valid
>> offset
) & mask
) == mask
)
339 /* Search for the first byte we need to read. */
340 for (mask
= 1 << offset
; bytes
> 0; --bytes
, ++offset
, mask
<<= 1)
341 if (! (mask
& ex_info
->valid
))
349 status
= (*info
->read_memory_func
)
350 (pc
, ex_info
->insn_bytes
+ offset
, bytes
, info
);
354 (*info
->memory_error_func
) (status
, pc
, info
);
358 ex_info
->valid
|= ((1 << bytes
) - 1) << offset
;
364 /* Subroutine of extract_normal. */
366 static CGEN_INLINE
long
367 extract_1 (CGEN_CPU_DESC cd
,
368 CGEN_EXTRACT_INFO
*ex_info ATTRIBUTE_UNUSED
,
373 bfd_vma pc ATTRIBUTE_UNUSED
)
378 int big_p
= CGEN_CPU_INSN_ENDIAN (cd
) == CGEN_ENDIAN_BIG
;
380 x
= cgen_get_insn_value (cd
, bufp
, word_length
);
382 if (CGEN_INSN_LSB0_P
)
383 shift
= (start
+ 1) - length
;
385 shift
= (word_length
- (start
+ length
));
389 #endif /* ! CGEN_INT_INSN_P */
391 /* Default extraction routine.
393 INSN_VALUE is the first base_insn_bitsize bits of the insn in host order,
394 or sometimes less for cases like the m32r where the base insn size is 32
395 but some insns are 16 bits.
396 ATTRS is a mask of the boolean attributes. We only need `SIGNED',
397 but for generality we take a bitmask of all of them.
398 WORD_OFFSET is the offset in bits from the start of the insn of the value.
399 WORD_LENGTH is the length of the word in bits in which the value resides.
400 START is the starting bit number in the word, architecture origin.
401 LENGTH is the length of VALUE in bits.
402 TOTAL_LENGTH is the total length of the insn in bits.
404 Returns 1 for success, 0 for failure. */
406 /* ??? The return code isn't properly used. wip. */
408 /* ??? This doesn't handle bfd_vma's. Create another function when
412 extract_normal (CGEN_CPU_DESC cd
,
413 #if ! CGEN_INT_INSN_P
414 CGEN_EXTRACT_INFO
*ex_info
,
416 CGEN_EXTRACT_INFO
*ex_info ATTRIBUTE_UNUSED
,
418 CGEN_INSN_INT insn_value
,
420 unsigned int word_offset
,
423 unsigned int word_length
,
424 unsigned int total_length
,
425 #if ! CGEN_INT_INSN_P
428 bfd_vma pc ATTRIBUTE_UNUSED
,
434 /* If LENGTH is zero, this operand doesn't contribute to the value
435 so give it a standard value of zero. */
448 if (word_length
> 32)
451 /* For architectures with insns smaller than the insn-base-bitsize,
452 word_length may be too big. */
453 if (cd
->min_insn_bitsize
< cd
->base_insn_bitsize
)
456 && word_length
> total_length
)
457 word_length
= total_length
;
460 /* Does the value reside in INSN_VALUE, and at the right alignment? */
462 if (CGEN_INT_INSN_P
|| (word_offset
== 0 && word_length
== total_length
))
464 if (CGEN_INSN_LSB0_P
)
465 value
= insn_value
>> ((word_offset
+ start
+ 1) - length
);
467 value
= insn_value
>> (total_length
- ( word_offset
+ start
+ length
));
470 #if ! CGEN_INT_INSN_P
474 unsigned char *bufp
= ex_info
->insn_bytes
+ word_offset
/ 8;
476 if (word_length
> 32)
479 if (fill_cache (cd
, ex_info
, word_offset
/ 8, word_length
/ 8, pc
) == 0)
482 value
= extract_1 (cd
, ex_info
, start
, length
, word_length
, bufp
, pc
);
485 #endif /* ! CGEN_INT_INSN_P */
487 /* Written this way to avoid undefined behaviour. */
488 mask
= (((1L << (length
- 1)) - 1) << 1) | 1;
492 if (CGEN_BOOL_ATTR (attrs
, CGEN_IFLD_SIGNED
)
493 && (value
& (1L << (length
- 1))))
501 /* Default insn extractor.
503 INSN_VALUE is the first base_insn_bitsize bits, translated to host order.
504 The extracted fields are stored in FIELDS.
505 EX_INFO is used to handle reading variable length insns.
506 Return the length of the insn in bits, or 0 if no match,
507 or -1 if an error occurs fetching data (memory_error_func will have
511 extract_insn_normal (CGEN_CPU_DESC cd
,
512 const CGEN_INSN
*insn
,
513 CGEN_EXTRACT_INFO
*ex_info
,
514 CGEN_INSN_INT insn_value
,
518 const CGEN_SYNTAX
*syntax
= CGEN_INSN_SYNTAX (insn
);
519 const CGEN_SYNTAX_CHAR_TYPE
*syn
;
521 CGEN_FIELDS_BITSIZE (fields
) = CGEN_INSN_BITSIZE (insn
);
523 CGEN_INIT_EXTRACT (cd
);
525 for (syn
= CGEN_SYNTAX_STRING (syntax
); *syn
; ++syn
)
529 if (CGEN_SYNTAX_CHAR_P (*syn
))
532 length
= (* cd
->extract_operand
) (cd
, CGEN_SYNTAX_FIELD (*syn
),
533 ex_info
, insn_value
, fields
, pc
);
538 /* We recognized and successfully extracted this insn. */
539 return CGEN_INSN_BITSIZE (insn
);
542 /* machine generated code added here */
544 const char * m32c_cgen_insert_operand
545 PARAMS ((CGEN_CPU_DESC
, int, CGEN_FIELDS
*, CGEN_INSN_BYTES_PTR
, bfd_vma
));
547 /* Main entry point for operand insertion.
549 This function is basically just a big switch statement. Earlier versions
550 used tables to look up the function to use, but
551 - if the table contains both assembler and disassembler functions then
552 the disassembler contains much of the assembler and vice-versa,
553 - there's a lot of inlining possibilities as things grow,
554 - using a switch statement avoids the function call overhead.
556 This function could be moved into `parse_insn_normal', but keeping it
557 separate makes clear the interface between `parse_insn_normal' and each of
558 the handlers. It's also needed by GAS to insert operands that couldn't be
559 resolved during parsing. */
562 m32c_cgen_insert_operand (cd
, opindex
, fields
, buffer
, pc
)
565 CGEN_FIELDS
* fields
;
566 CGEN_INSN_BYTES_PTR buffer
;
567 bfd_vma pc ATTRIBUTE_UNUSED
;
569 const char * errmsg
= NULL
;
570 unsigned int total_length
= CGEN_FIELDS_BITSIZE (fields
);
574 case M32C_OPERAND_A0
:
576 case M32C_OPERAND_A1
:
578 case M32C_OPERAND_AN16_PUSH_S
:
579 errmsg
= insert_normal (cd
, fields
->f_4_1
, 0, 0, 4, 1, 32, total_length
, buffer
);
581 case M32C_OPERAND_BIT16AN
:
582 errmsg
= insert_normal (cd
, fields
->f_dst16_an
, 0, 0, 15, 1, 32, total_length
, buffer
);
584 case M32C_OPERAND_BIT16RN
:
585 errmsg
= insert_normal (cd
, fields
->f_dst16_rn
, 0, 0, 14, 2, 32, total_length
, buffer
);
587 case M32C_OPERAND_BIT32ANPREFIXED
:
588 errmsg
= insert_normal (cd
, fields
->f_dst32_an_prefixed
, 0, 0, 17, 1, 32, total_length
, buffer
);
590 case M32C_OPERAND_BIT32ANUNPREFIXED
:
591 errmsg
= insert_normal (cd
, fields
->f_dst32_an_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
593 case M32C_OPERAND_BIT32RNPREFIXED
:
595 long value
= fields
->f_dst32_rn_prefixed_QI
;
596 value
= (((((((~ (value
))) << (1))) & (2))) | (((((unsigned int) (value
) >> (1))) & (1))));
597 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 2, 32, total_length
, buffer
);
600 case M32C_OPERAND_BIT32RNUNPREFIXED
:
602 long value
= fields
->f_dst32_rn_unprefixed_QI
;
603 value
= (((((((~ (value
))) << (1))) & (2))) | (((((unsigned int) (value
) >> (1))) & (1))));
604 errmsg
= insert_normal (cd
, value
, 0, 0, 8, 2, 32, total_length
, buffer
);
607 case M32C_OPERAND_BITBASE16_16_S8
:
608 errmsg
= insert_normal (cd
, fields
->f_dsp_16_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 8, 32, total_length
, buffer
);
610 case M32C_OPERAND_BITBASE16_16_U16
:
612 long value
= fields
->f_dsp_16_u16
;
613 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
614 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
617 case M32C_OPERAND_BITBASE16_16_U8
:
618 errmsg
= insert_normal (cd
, fields
->f_dsp_16_u8
, 0, 0, 16, 8, 32, total_length
, buffer
);
620 case M32C_OPERAND_BITBASE16_8_U11_S
:
623 FLD (f_bitno16_S
) = ((FLD (f_bitbase16_u11_S
)) & (7));
624 FLD (f_dsp_8_u8
) = ((((unsigned int) (FLD (f_bitbase16_u11_S
)) >> (3))) & (255));
626 errmsg
= insert_normal (cd
, fields
->f_bitno16_S
, 0, 0, 5, 3, 32, total_length
, buffer
);
629 errmsg
= insert_normal (cd
, fields
->f_dsp_8_u8
, 0, 0, 8, 8, 32, total_length
, buffer
);
634 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED
:
637 FLD (f_bitno32_unprefixed
) = ((FLD (f_bitbase32_16_s11_unprefixed
)) & (7));
638 FLD (f_dsp_16_s8
) = ((int) (FLD (f_bitbase32_16_s11_unprefixed
)) >> (3));
640 errmsg
= insert_normal (cd
, fields
->f_bitno32_unprefixed
, 0, 0, 13, 3, 32, total_length
, buffer
);
643 errmsg
= insert_normal (cd
, fields
->f_dsp_16_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 8, 32, total_length
, buffer
);
648 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED
:
651 FLD (f_bitno32_unprefixed
) = ((FLD (f_bitbase32_16_s19_unprefixed
)) & (7));
652 FLD (f_dsp_16_s16
) = ((int) (FLD (f_bitbase32_16_s19_unprefixed
)) >> (3));
654 errmsg
= insert_normal (cd
, fields
->f_bitno32_unprefixed
, 0, 0, 13, 3, 32, total_length
, buffer
);
658 long value
= fields
->f_dsp_16_s16
;
659 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
660 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 16, 32, total_length
, buffer
);
666 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED
:
669 FLD (f_bitno32_unprefixed
) = ((FLD (f_bitbase32_16_u11_unprefixed
)) & (7));
670 FLD (f_dsp_16_u8
) = ((((unsigned int) (FLD (f_bitbase32_16_u11_unprefixed
)) >> (3))) & (255));
672 errmsg
= insert_normal (cd
, fields
->f_bitno32_unprefixed
, 0, 0, 13, 3, 32, total_length
, buffer
);
675 errmsg
= insert_normal (cd
, fields
->f_dsp_16_u8
, 0, 0, 16, 8, 32, total_length
, buffer
);
680 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED
:
683 FLD (f_bitno32_unprefixed
) = ((FLD (f_bitbase32_16_u19_unprefixed
)) & (7));
684 FLD (f_dsp_16_u16
) = ((((unsigned int) (FLD (f_bitbase32_16_u19_unprefixed
)) >> (3))) & (65535));
686 errmsg
= insert_normal (cd
, fields
->f_bitno32_unprefixed
, 0, 0, 13, 3, 32, total_length
, buffer
);
690 long value
= fields
->f_dsp_16_u16
;
691 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
692 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
698 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED
:
701 FLD (f_bitno32_unprefixed
) = ((FLD (f_bitbase32_16_u27_unprefixed
)) & (7));
702 FLD (f_dsp_16_u16
) = ((((unsigned int) (FLD (f_bitbase32_16_u27_unprefixed
)) >> (3))) & (65535));
703 FLD (f_dsp_32_u8
) = ((((unsigned int) (FLD (f_bitbase32_16_u27_unprefixed
)) >> (19))) & (255));
705 errmsg
= insert_normal (cd
, fields
->f_bitno32_unprefixed
, 0, 0, 13, 3, 32, total_length
, buffer
);
709 long value
= fields
->f_dsp_16_u16
;
710 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
711 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
715 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
720 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED
:
723 FLD (f_bitno32_prefixed
) = ((FLD (f_bitbase32_24_s11_prefixed
)) & (7));
724 FLD (f_dsp_24_s8
) = ((int) (FLD (f_bitbase32_24_s11_prefixed
)) >> (3));
726 errmsg
= insert_normal (cd
, fields
->f_bitno32_prefixed
, 0, 0, 21, 3, 32, total_length
, buffer
);
729 errmsg
= insert_normal (cd
, fields
->f_dsp_24_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 24, 8, 32, total_length
, buffer
);
734 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED
:
737 FLD (f_bitno32_prefixed
) = ((FLD (f_bitbase32_24_s19_prefixed
)) & (7));
738 FLD (f_dsp_24_u8
) = ((((unsigned int) (FLD (f_bitbase32_24_s19_prefixed
)) >> (3))) & (255));
739 FLD (f_dsp_32_s8
) = ((int) (FLD (f_bitbase32_24_s19_prefixed
)) >> (11));
741 errmsg
= insert_normal (cd
, fields
->f_bitno32_prefixed
, 0, 0, 21, 3, 32, total_length
, buffer
);
744 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
747 errmsg
= insert_normal (cd
, fields
->f_dsp_32_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 8, 32, total_length
, buffer
);
752 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED
:
755 FLD (f_bitno32_prefixed
) = ((FLD (f_bitbase32_24_u11_prefixed
)) & (7));
756 FLD (f_dsp_24_u8
) = ((((unsigned int) (FLD (f_bitbase32_24_u11_prefixed
)) >> (3))) & (255));
758 errmsg
= insert_normal (cd
, fields
->f_bitno32_prefixed
, 0, 0, 21, 3, 32, total_length
, buffer
);
761 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
766 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED
:
769 FLD (f_bitno32_prefixed
) = ((FLD (f_bitbase32_24_u19_prefixed
)) & (7));
770 FLD (f_dsp_24_u8
) = ((((unsigned int) (FLD (f_bitbase32_24_u19_prefixed
)) >> (3))) & (255));
771 FLD (f_dsp_32_u8
) = ((((unsigned int) (FLD (f_bitbase32_24_u19_prefixed
)) >> (11))) & (255));
773 errmsg
= insert_normal (cd
, fields
->f_bitno32_prefixed
, 0, 0, 21, 3, 32, total_length
, buffer
);
776 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
779 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
784 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED
:
787 FLD (f_bitno32_prefixed
) = ((FLD (f_bitbase32_24_u27_prefixed
)) & (7));
788 FLD (f_dsp_24_u8
) = ((((unsigned int) (FLD (f_bitbase32_24_u27_prefixed
)) >> (3))) & (255));
789 FLD (f_dsp_32_u16
) = ((((unsigned int) (FLD (f_bitbase32_24_u27_prefixed
)) >> (11))) & (65535));
791 errmsg
= insert_normal (cd
, fields
->f_bitno32_prefixed
, 0, 0, 21, 3, 32, total_length
, buffer
);
794 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
798 long value
= fields
->f_dsp_32_u16
;
799 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
800 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 16, 32, total_length
, buffer
);
806 case M32C_OPERAND_BITNO16R
:
807 errmsg
= insert_normal (cd
, fields
->f_dsp_16_u8
, 0, 0, 16, 8, 32, total_length
, buffer
);
809 case M32C_OPERAND_BITNO32PREFIXED
:
810 errmsg
= insert_normal (cd
, fields
->f_bitno32_prefixed
, 0, 0, 21, 3, 32, total_length
, buffer
);
812 case M32C_OPERAND_BITNO32UNPREFIXED
:
813 errmsg
= insert_normal (cd
, fields
->f_bitno32_unprefixed
, 0, 0, 13, 3, 32, total_length
, buffer
);
815 case M32C_OPERAND_DSP_10_U6
:
816 errmsg
= insert_normal (cd
, fields
->f_dsp_10_u6
, 0, 0, 10, 6, 32, total_length
, buffer
);
818 case M32C_OPERAND_DSP_16_S16
:
820 long value
= fields
->f_dsp_16_s16
;
821 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
822 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 16, 32, total_length
, buffer
);
825 case M32C_OPERAND_DSP_16_S8
:
826 errmsg
= insert_normal (cd
, fields
->f_dsp_16_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 8, 32, total_length
, buffer
);
828 case M32C_OPERAND_DSP_16_U16
:
830 long value
= fields
->f_dsp_16_u16
;
831 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
832 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
835 case M32C_OPERAND_DSP_16_U20
:
838 FLD (f_dsp_16_u16
) = ((FLD (f_dsp_16_u24
)) & (65535));
839 FLD (f_dsp_32_u8
) = ((((unsigned int) (FLD (f_dsp_16_u24
)) >> (16))) & (255));
842 long value
= fields
->f_dsp_16_u16
;
843 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
844 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
848 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
853 case M32C_OPERAND_DSP_16_U24
:
856 FLD (f_dsp_16_u16
) = ((FLD (f_dsp_16_u24
)) & (65535));
857 FLD (f_dsp_32_u8
) = ((((unsigned int) (FLD (f_dsp_16_u24
)) >> (16))) & (255));
860 long value
= fields
->f_dsp_16_u16
;
861 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
862 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
866 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
871 case M32C_OPERAND_DSP_16_U8
:
872 errmsg
= insert_normal (cd
, fields
->f_dsp_16_u8
, 0, 0, 16, 8, 32, total_length
, buffer
);
874 case M32C_OPERAND_DSP_24_S16
:
877 FLD (f_dsp_24_u8
) = ((FLD (f_dsp_24_s16
)) & (255));
878 FLD (f_dsp_32_u8
) = ((((unsigned int) (FLD (f_dsp_24_s16
)) >> (8))) & (255));
880 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
883 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
888 case M32C_OPERAND_DSP_24_S8
:
889 errmsg
= insert_normal (cd
, fields
->f_dsp_24_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 24, 8, 32, total_length
, buffer
);
891 case M32C_OPERAND_DSP_24_U16
:
894 FLD (f_dsp_24_u8
) = ((FLD (f_dsp_24_u16
)) & (255));
895 FLD (f_dsp_32_u8
) = ((((unsigned int) (FLD (f_dsp_24_u16
)) >> (8))) & (255));
897 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
900 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
905 case M32C_OPERAND_DSP_24_U20
:
908 FLD (f_dsp_24_u8
) = ((FLD (f_dsp_24_u24
)) & (255));
909 FLD (f_dsp_32_u16
) = ((((unsigned int) (FLD (f_dsp_24_u24
)) >> (8))) & (65535));
911 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
915 long value
= fields
->f_dsp_32_u16
;
916 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
917 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 16, 32, total_length
, buffer
);
923 case M32C_OPERAND_DSP_24_U24
:
926 FLD (f_dsp_24_u8
) = ((FLD (f_dsp_24_u24
)) & (255));
927 FLD (f_dsp_32_u16
) = ((((unsigned int) (FLD (f_dsp_24_u24
)) >> (8))) & (65535));
929 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
933 long value
= fields
->f_dsp_32_u16
;
934 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
935 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 16, 32, total_length
, buffer
);
941 case M32C_OPERAND_DSP_24_U8
:
942 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
944 case M32C_OPERAND_DSP_32_S16
:
946 long value
= fields
->f_dsp_32_s16
;
947 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
948 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 16, 32, total_length
, buffer
);
951 case M32C_OPERAND_DSP_32_S8
:
952 errmsg
= insert_normal (cd
, fields
->f_dsp_32_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 8, 32, total_length
, buffer
);
954 case M32C_OPERAND_DSP_32_U16
:
956 long value
= fields
->f_dsp_32_u16
;
957 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
958 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 16, 32, total_length
, buffer
);
961 case M32C_OPERAND_DSP_32_U20
:
963 long value
= fields
->f_dsp_32_u24
;
964 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
965 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 24, 32, total_length
, buffer
);
968 case M32C_OPERAND_DSP_32_U24
:
970 long value
= fields
->f_dsp_32_u24
;
971 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
972 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 24, 32, total_length
, buffer
);
975 case M32C_OPERAND_DSP_32_U8
:
976 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
978 case M32C_OPERAND_DSP_40_S16
:
980 long value
= fields
->f_dsp_40_s16
;
981 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
982 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 8, 16, 32, total_length
, buffer
);
985 case M32C_OPERAND_DSP_40_S8
:
986 errmsg
= insert_normal (cd
, fields
->f_dsp_40_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 8, 8, 32, total_length
, buffer
);
988 case M32C_OPERAND_DSP_40_U16
:
990 long value
= fields
->f_dsp_40_u16
;
991 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
992 errmsg
= insert_normal (cd
, value
, 0, 32, 8, 16, 32, total_length
, buffer
);
995 case M32C_OPERAND_DSP_40_U24
:
997 long value
= fields
->f_dsp_40_u24
;
998 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
999 errmsg
= insert_normal (cd
, value
, 0, 32, 8, 24, 32, total_length
, buffer
);
1002 case M32C_OPERAND_DSP_40_U8
:
1003 errmsg
= insert_normal (cd
, fields
->f_dsp_40_u8
, 0, 32, 8, 8, 32, total_length
, buffer
);
1005 case M32C_OPERAND_DSP_48_S16
:
1007 long value
= fields
->f_dsp_48_s16
;
1008 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
1009 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 16, 16, 32, total_length
, buffer
);
1012 case M32C_OPERAND_DSP_48_S8
:
1013 errmsg
= insert_normal (cd
, fields
->f_dsp_48_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 16, 8, 32, total_length
, buffer
);
1015 case M32C_OPERAND_DSP_48_U16
:
1017 long value
= fields
->f_dsp_48_u16
;
1018 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1019 errmsg
= insert_normal (cd
, value
, 0, 32, 16, 16, 32, total_length
, buffer
);
1022 case M32C_OPERAND_DSP_48_U24
:
1025 FLD (f_dsp_64_u8
) = ((((unsigned int) (FLD (f_dsp_48_u24
)) >> (16))) & (255));
1026 FLD (f_dsp_48_u16
) = ((FLD (f_dsp_48_u24
)) & (65535));
1029 long value
= fields
->f_dsp_48_u16
;
1030 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1031 errmsg
= insert_normal (cd
, value
, 0, 32, 16, 16, 32, total_length
, buffer
);
1035 errmsg
= insert_normal (cd
, fields
->f_dsp_64_u8
, 0, 64, 0, 8, 32, total_length
, buffer
);
1040 case M32C_OPERAND_DSP_48_U8
:
1041 errmsg
= insert_normal (cd
, fields
->f_dsp_48_u8
, 0, 32, 16, 8, 32, total_length
, buffer
);
1043 case M32C_OPERAND_DSP_8_S8
:
1044 errmsg
= insert_normal (cd
, fields
->f_dsp_8_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 8, 32, total_length
, buffer
);
1046 case M32C_OPERAND_DSP_8_U16
:
1048 long value
= fields
->f_dsp_8_u16
;
1049 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1050 errmsg
= insert_normal (cd
, value
, 0, 0, 8, 16, 32, total_length
, buffer
);
1053 case M32C_OPERAND_DSP_8_U6
:
1054 errmsg
= insert_normal (cd
, fields
->f_dsp_8_u6
, 0, 0, 8, 6, 32, total_length
, buffer
);
1056 case M32C_OPERAND_DSP_8_U8
:
1057 errmsg
= insert_normal (cd
, fields
->f_dsp_8_u8
, 0, 0, 8, 8, 32, total_length
, buffer
);
1059 case M32C_OPERAND_DST16AN
:
1060 errmsg
= insert_normal (cd
, fields
->f_dst16_an
, 0, 0, 15, 1, 32, total_length
, buffer
);
1062 case M32C_OPERAND_DST16AN_S
:
1063 errmsg
= insert_normal (cd
, fields
->f_dst16_an_s
, 0, 0, 4, 1, 32, total_length
, buffer
);
1065 case M32C_OPERAND_DST16ANHI
:
1066 errmsg
= insert_normal (cd
, fields
->f_dst16_an
, 0, 0, 15, 1, 32, total_length
, buffer
);
1068 case M32C_OPERAND_DST16ANQI
:
1069 errmsg
= insert_normal (cd
, fields
->f_dst16_an
, 0, 0, 15, 1, 32, total_length
, buffer
);
1071 case M32C_OPERAND_DST16ANQI_S
:
1072 errmsg
= insert_normal (cd
, fields
->f_dst16_rn_QI_s
, 0, 0, 5, 1, 32, total_length
, buffer
);
1074 case M32C_OPERAND_DST16ANSI
:
1075 errmsg
= insert_normal (cd
, fields
->f_dst16_an
, 0, 0, 15, 1, 32, total_length
, buffer
);
1077 case M32C_OPERAND_DST16RNEXTQI
:
1078 errmsg
= insert_normal (cd
, fields
->f_dst16_rn_ext
, 0, 0, 14, 1, 32, total_length
, buffer
);
1080 case M32C_OPERAND_DST16RNHI
:
1081 errmsg
= insert_normal (cd
, fields
->f_dst16_rn
, 0, 0, 14, 2, 32, total_length
, buffer
);
1083 case M32C_OPERAND_DST16RNQI
:
1084 errmsg
= insert_normal (cd
, fields
->f_dst16_rn
, 0, 0, 14, 2, 32, total_length
, buffer
);
1086 case M32C_OPERAND_DST16RNQI_S
:
1087 errmsg
= insert_normal (cd
, fields
->f_dst16_rn_QI_s
, 0, 0, 5, 1, 32, total_length
, buffer
);
1089 case M32C_OPERAND_DST16RNSI
:
1090 errmsg
= insert_normal (cd
, fields
->f_dst16_rn
, 0, 0, 14, 2, 32, total_length
, buffer
);
1092 case M32C_OPERAND_DST32ANEXTUNPREFIXED
:
1093 errmsg
= insert_normal (cd
, fields
->f_dst32_an_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1095 case M32C_OPERAND_DST32ANPREFIXED
:
1096 errmsg
= insert_normal (cd
, fields
->f_dst32_an_prefixed
, 0, 0, 17, 1, 32, total_length
, buffer
);
1098 case M32C_OPERAND_DST32ANPREFIXEDHI
:
1099 errmsg
= insert_normal (cd
, fields
->f_dst32_an_prefixed
, 0, 0, 17, 1, 32, total_length
, buffer
);
1101 case M32C_OPERAND_DST32ANPREFIXEDQI
:
1102 errmsg
= insert_normal (cd
, fields
->f_dst32_an_prefixed
, 0, 0, 17, 1, 32, total_length
, buffer
);
1104 case M32C_OPERAND_DST32ANPREFIXEDSI
:
1105 errmsg
= insert_normal (cd
, fields
->f_dst32_an_prefixed
, 0, 0, 17, 1, 32, total_length
, buffer
);
1107 case M32C_OPERAND_DST32ANUNPREFIXED
:
1108 errmsg
= insert_normal (cd
, fields
->f_dst32_an_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1110 case M32C_OPERAND_DST32ANUNPREFIXEDHI
:
1111 errmsg
= insert_normal (cd
, fields
->f_dst32_an_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1113 case M32C_OPERAND_DST32ANUNPREFIXEDQI
:
1114 errmsg
= insert_normal (cd
, fields
->f_dst32_an_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1116 case M32C_OPERAND_DST32ANUNPREFIXEDSI
:
1117 errmsg
= insert_normal (cd
, fields
->f_dst32_an_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1119 case M32C_OPERAND_DST32R0HI_S
:
1121 case M32C_OPERAND_DST32R0QI_S
:
1123 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI
:
1124 errmsg
= insert_normal (cd
, fields
->f_dst32_rn_ext_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1126 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI
:
1127 errmsg
= insert_normal (cd
, fields
->f_dst32_rn_ext_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1129 case M32C_OPERAND_DST32RNPREFIXEDHI
:
1131 long value
= fields
->f_dst32_rn_prefixed_HI
;
1132 value
= ((((value
) + (2))) % (4));
1133 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 2, 32, total_length
, buffer
);
1136 case M32C_OPERAND_DST32RNPREFIXEDQI
:
1138 long value
= fields
->f_dst32_rn_prefixed_QI
;
1139 value
= (((((((~ (value
))) << (1))) & (2))) | (((((unsigned int) (value
) >> (1))) & (1))));
1140 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 2, 32, total_length
, buffer
);
1143 case M32C_OPERAND_DST32RNPREFIXEDSI
:
1145 long value
= fields
->f_dst32_rn_prefixed_SI
;
1146 value
= ((value
) + (2));
1147 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 2, 32, total_length
, buffer
);
1150 case M32C_OPERAND_DST32RNUNPREFIXEDHI
:
1152 long value
= fields
->f_dst32_rn_unprefixed_HI
;
1153 value
= ((((value
) + (2))) % (4));
1154 errmsg
= insert_normal (cd
, value
, 0, 0, 8, 2, 32, total_length
, buffer
);
1157 case M32C_OPERAND_DST32RNUNPREFIXEDQI
:
1159 long value
= fields
->f_dst32_rn_unprefixed_QI
;
1160 value
= (((((((~ (value
))) << (1))) & (2))) | (((((unsigned int) (value
) >> (1))) & (1))));
1161 errmsg
= insert_normal (cd
, value
, 0, 0, 8, 2, 32, total_length
, buffer
);
1164 case M32C_OPERAND_DST32RNUNPREFIXEDSI
:
1166 long value
= fields
->f_dst32_rn_unprefixed_SI
;
1167 value
= ((value
) + (2));
1168 errmsg
= insert_normal (cd
, value
, 0, 0, 8, 2, 32, total_length
, buffer
);
1171 case M32C_OPERAND_G
:
1173 case M32C_OPERAND_IMM_12_S4
:
1174 errmsg
= insert_normal (cd
, fields
->f_imm_12_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 12, 4, 32, total_length
, buffer
);
1176 case M32C_OPERAND_IMM_13_U3
:
1177 errmsg
= insert_normal (cd
, fields
->f_imm_13_u3
, 0, 0, 13, 3, 32, total_length
, buffer
);
1179 case M32C_OPERAND_IMM_16_HI
:
1181 long value
= fields
->f_dsp_16_s16
;
1182 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
1183 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 16, 32, total_length
, buffer
);
1186 case M32C_OPERAND_IMM_16_QI
:
1187 errmsg
= insert_normal (cd
, fields
->f_dsp_16_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 8, 32, total_length
, buffer
);
1189 case M32C_OPERAND_IMM_16_SI
:
1192 FLD (f_dsp_32_u16
) = ((((unsigned int) (FLD (f_dsp_16_s32
)) >> (16))) & (65535));
1193 FLD (f_dsp_16_u16
) = ((FLD (f_dsp_16_s32
)) & (65535));
1196 long value
= fields
->f_dsp_16_u16
;
1197 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1198 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
1203 long value
= fields
->f_dsp_32_u16
;
1204 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1205 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 16, 32, total_length
, buffer
);
1211 case M32C_OPERAND_IMM_20_S4
:
1212 errmsg
= insert_normal (cd
, fields
->f_imm_20_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 20, 4, 32, total_length
, buffer
);
1214 case M32C_OPERAND_IMM_24_HI
:
1217 FLD (f_dsp_24_u8
) = ((FLD (f_dsp_24_s16
)) & (255));
1218 FLD (f_dsp_32_u8
) = ((((unsigned int) (FLD (f_dsp_24_s16
)) >> (8))) & (255));
1220 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
1223 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
1228 case M32C_OPERAND_IMM_24_QI
:
1229 errmsg
= insert_normal (cd
, fields
->f_dsp_24_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 24, 8, 32, total_length
, buffer
);
1231 case M32C_OPERAND_IMM_24_SI
:
1234 FLD (f_dsp_32_u24
) = ((((unsigned int) (FLD (f_dsp_24_s32
)) >> (8))) & (16777215));
1235 FLD (f_dsp_24_u8
) = ((FLD (f_dsp_24_s32
)) & (255));
1237 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
1241 long value
= fields
->f_dsp_32_u24
;
1242 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
1243 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 24, 32, total_length
, buffer
);
1249 case M32C_OPERAND_IMM_32_HI
:
1251 long value
= fields
->f_dsp_32_s16
;
1252 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
1253 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 16, 32, total_length
, buffer
);
1256 case M32C_OPERAND_IMM_32_QI
:
1257 errmsg
= insert_normal (cd
, fields
->f_dsp_32_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 8, 32, total_length
, buffer
);
1259 case M32C_OPERAND_IMM_32_SI
:
1261 long value
= fields
->f_dsp_32_s32
;
1262 value
= EXTSISI (((((((((unsigned int) (value
) >> (24))) & (255))) | (((((unsigned int) (value
) >> (8))) & (65280))))) | (((((((value
) << (8))) & (16711680))) | (((((value
) << (24))) & (0xff000000)))))));
1263 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 32, 32, total_length
, buffer
);
1266 case M32C_OPERAND_IMM_40_HI
:
1268 long value
= fields
->f_dsp_40_s16
;
1269 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
1270 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 8, 16, 32, total_length
, buffer
);
1273 case M32C_OPERAND_IMM_40_QI
:
1274 errmsg
= insert_normal (cd
, fields
->f_dsp_40_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 8, 8, 32, total_length
, buffer
);
1276 case M32C_OPERAND_IMM_40_SI
:
1279 FLD (f_dsp_64_u8
) = ((((unsigned int) (FLD (f_dsp_40_s32
)) >> (24))) & (255));
1280 FLD (f_dsp_40_u24
) = ((FLD (f_dsp_40_s32
)) & (16777215));
1283 long value
= fields
->f_dsp_40_u24
;
1284 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
1285 errmsg
= insert_normal (cd
, value
, 0, 32, 8, 24, 32, total_length
, buffer
);
1289 errmsg
= insert_normal (cd
, fields
->f_dsp_64_u8
, 0, 64, 0, 8, 32, total_length
, buffer
);
1294 case M32C_OPERAND_IMM_48_HI
:
1296 long value
= fields
->f_dsp_48_s16
;
1297 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
1298 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 16, 16, 32, total_length
, buffer
);
1301 case M32C_OPERAND_IMM_48_QI
:
1302 errmsg
= insert_normal (cd
, fields
->f_dsp_48_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 16, 8, 32, total_length
, buffer
);
1304 case M32C_OPERAND_IMM_48_SI
:
1307 FLD (f_dsp_64_u16
) = ((((unsigned int) (FLD (f_dsp_48_s32
)) >> (16))) & (65535));
1308 FLD (f_dsp_48_u16
) = ((FLD (f_dsp_48_s32
)) & (65535));
1311 long value
= fields
->f_dsp_48_u16
;
1312 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1313 errmsg
= insert_normal (cd
, value
, 0, 32, 16, 16, 32, total_length
, buffer
);
1318 long value
= fields
->f_dsp_64_u16
;
1319 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1320 errmsg
= insert_normal (cd
, value
, 0, 64, 0, 16, 32, total_length
, buffer
);
1326 case M32C_OPERAND_IMM_56_HI
:
1329 FLD (f_dsp_56_u8
) = ((FLD (f_dsp_56_s16
)) & (255));
1330 FLD (f_dsp_64_u8
) = ((((unsigned int) (FLD (f_dsp_56_s16
)) >> (8))) & (255));
1332 errmsg
= insert_normal (cd
, fields
->f_dsp_56_u8
, 0, 32, 24, 8, 32, total_length
, buffer
);
1335 errmsg
= insert_normal (cd
, fields
->f_dsp_64_u8
, 0, 64, 0, 8, 32, total_length
, buffer
);
1340 case M32C_OPERAND_IMM_56_QI
:
1341 errmsg
= insert_normal (cd
, fields
->f_dsp_56_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 24, 8, 32, total_length
, buffer
);
1343 case M32C_OPERAND_IMM_64_HI
:
1345 long value
= fields
->f_dsp_64_s16
;
1346 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
1347 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 64, 0, 16, 32, total_length
, buffer
);
1350 case M32C_OPERAND_IMM_8_HI
:
1352 long value
= fields
->f_dsp_8_s16
;
1353 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
1354 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 16, 32, total_length
, buffer
);
1357 case M32C_OPERAND_IMM_8_QI
:
1358 errmsg
= insert_normal (cd
, fields
->f_dsp_8_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 8, 32, total_length
, buffer
);
1360 case M32C_OPERAND_IMM_8_S4
:
1361 errmsg
= insert_normal (cd
, fields
->f_imm_8_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 4, 32, total_length
, buffer
);
1363 case M32C_OPERAND_IMM_SH_12_S4
:
1364 errmsg
= insert_normal (cd
, fields
->f_imm_12_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 12, 4, 32, total_length
, buffer
);
1366 case M32C_OPERAND_IMM_SH_20_S4
:
1367 errmsg
= insert_normal (cd
, fields
->f_imm_20_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 20, 4, 32, total_length
, buffer
);
1369 case M32C_OPERAND_IMM_SH_8_S4
:
1370 errmsg
= insert_normal (cd
, fields
->f_imm_8_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 4, 32, total_length
, buffer
);
1372 case M32C_OPERAND_IMM1_S
:
1374 long value
= fields
->f_imm1_S
;
1375 value
= ((value
) - (1));
1376 errmsg
= insert_normal (cd
, value
, 0, 0, 2, 1, 32, total_length
, buffer
);
1379 case M32C_OPERAND_IMM3_S
:
1382 FLD (f_7_1
) = ((((FLD (f_imm3_S
)) - (1))) & (1));
1383 FLD (f_2_2
) = ((((unsigned int) (((FLD (f_imm3_S
)) - (1))) >> (1))) & (3));
1385 errmsg
= insert_normal (cd
, fields
->f_2_2
, 0, 0, 2, 2, 32, total_length
, buffer
);
1388 errmsg
= insert_normal (cd
, fields
->f_7_1
, 0, 0, 7, 1, 32, total_length
, buffer
);
1393 case M32C_OPERAND_LAB_16_8
:
1395 long value
= fields
->f_lab_16_8
;
1396 value
= ((value
) - (((pc
) + (2))));
1397 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
)|(1<<CGEN_IFLD_PCREL_ADDR
), 0, 16, 8, 32, total_length
, buffer
);
1400 case M32C_OPERAND_LAB_24_8
:
1402 long value
= fields
->f_lab_24_8
;
1403 value
= ((value
) - (((pc
) + (2))));
1404 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
)|(1<<CGEN_IFLD_PCREL_ADDR
), 0, 24, 8, 32, total_length
, buffer
);
1407 case M32C_OPERAND_LAB_32_8
:
1409 long value
= fields
->f_lab_32_8
;
1410 value
= ((value
) - (((pc
) + (2))));
1411 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
)|(1<<CGEN_IFLD_PCREL_ADDR
), 32, 0, 8, 32, total_length
, buffer
);
1414 case M32C_OPERAND_LAB_40_8
:
1416 long value
= fields
->f_lab_40_8
;
1417 value
= ((value
) - (((pc
) + (2))));
1418 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
)|(1<<CGEN_IFLD_PCREL_ADDR
), 32, 8, 8, 32, total_length
, buffer
);
1421 case M32C_OPERAND_LAB_5_3
:
1423 long value
= fields
->f_lab_5_3
;
1424 value
= ((value
) - (((pc
) + (2))));
1425 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
)|(1<<CGEN_IFLD_PCREL_ADDR
), 0, 5, 3, 32, total_length
, buffer
);
1428 case M32C_OPERAND_LAB_8_16
:
1430 long value
= fields
->f_lab_8_16
;
1431 value
= ((((((((value
) - (((pc
) + (1))))) & (255))) << (8))) | (((unsigned int) (((((value
) - (((pc
) + (1))))) & (65535))) >> (8))));
1432 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGN_OPT
)|(1<<CGEN_IFLD_PCREL_ADDR
), 0, 8, 16, 32, total_length
, buffer
);
1435 case M32C_OPERAND_LAB_8_24
:
1437 long value
= fields
->f_lab_8_24
;
1438 value
= ((((((unsigned int) (value
) >> (16))) | (((value
) & (65280))))) | (((((value
) & (255))) << (16))));
1439 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_ABS_ADDR
), 0, 8, 24, 32, total_length
, buffer
);
1442 case M32C_OPERAND_LAB_8_8
:
1444 long value
= fields
->f_lab_8_8
;
1445 value
= ((value
) - (((pc
) + (1))));
1446 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
)|(1<<CGEN_IFLD_PCREL_ADDR
), 0, 8, 8, 32, total_length
, buffer
);
1449 case M32C_OPERAND_LAB32_JMP_S
:
1452 FLD (f_7_1
) = ((((FLD (f_lab32_jmp_s
)) - (pc
))) & (1));
1453 FLD (f_2_2
) = ((unsigned int) (((FLD (f_lab32_jmp_s
)) - (pc
))) >> (1));
1455 errmsg
= insert_normal (cd
, fields
->f_2_2
, 0, 0, 2, 2, 32, total_length
, buffer
);
1458 errmsg
= insert_normal (cd
, fields
->f_7_1
, 0, 0, 7, 1, 32, total_length
, buffer
);
1463 case M32C_OPERAND_Q
:
1465 case M32C_OPERAND_R0
:
1467 case M32C_OPERAND_R0H
:
1469 case M32C_OPERAND_R0L
:
1471 case M32C_OPERAND_R1
:
1473 case M32C_OPERAND_R1R2R0
:
1475 case M32C_OPERAND_R2
:
1477 case M32C_OPERAND_R2R0
:
1479 case M32C_OPERAND_R3
:
1481 case M32C_OPERAND_R3R1
:
1483 case M32C_OPERAND_REGSETPOP
:
1484 errmsg
= insert_normal (cd
, fields
->f_8_8
, 0, 0, 8, 8, 32, total_length
, buffer
);
1486 case M32C_OPERAND_REGSETPUSH
:
1487 errmsg
= insert_normal (cd
, fields
->f_8_8
, 0, 0, 8, 8, 32, total_length
, buffer
);
1489 case M32C_OPERAND_RN16_PUSH_S
:
1490 errmsg
= insert_normal (cd
, fields
->f_4_1
, 0, 0, 4, 1, 32, total_length
, buffer
);
1492 case M32C_OPERAND_S
:
1494 case M32C_OPERAND_SRC16AN
:
1495 errmsg
= insert_normal (cd
, fields
->f_src16_an
, 0, 0, 11, 1, 32, total_length
, buffer
);
1497 case M32C_OPERAND_SRC16ANHI
:
1498 errmsg
= insert_normal (cd
, fields
->f_src16_an
, 0, 0, 11, 1, 32, total_length
, buffer
);
1500 case M32C_OPERAND_SRC16ANQI
:
1501 errmsg
= insert_normal (cd
, fields
->f_src16_an
, 0, 0, 11, 1, 32, total_length
, buffer
);
1503 case M32C_OPERAND_SRC16RNHI
:
1504 errmsg
= insert_normal (cd
, fields
->f_src16_rn
, 0, 0, 10, 2, 32, total_length
, buffer
);
1506 case M32C_OPERAND_SRC16RNQI
:
1507 errmsg
= insert_normal (cd
, fields
->f_src16_rn
, 0, 0, 10, 2, 32, total_length
, buffer
);
1509 case M32C_OPERAND_SRC32ANPREFIXED
:
1510 errmsg
= insert_normal (cd
, fields
->f_src32_an_prefixed
, 0, 0, 19, 1, 32, total_length
, buffer
);
1512 case M32C_OPERAND_SRC32ANPREFIXEDHI
:
1513 errmsg
= insert_normal (cd
, fields
->f_src32_an_prefixed
, 0, 0, 19, 1, 32, total_length
, buffer
);
1515 case M32C_OPERAND_SRC32ANPREFIXEDQI
:
1516 errmsg
= insert_normal (cd
, fields
->f_src32_an_prefixed
, 0, 0, 19, 1, 32, total_length
, buffer
);
1518 case M32C_OPERAND_SRC32ANPREFIXEDSI
:
1519 errmsg
= insert_normal (cd
, fields
->f_src32_an_prefixed
, 0, 0, 19, 1, 32, total_length
, buffer
);
1521 case M32C_OPERAND_SRC32ANUNPREFIXED
:
1522 errmsg
= insert_normal (cd
, fields
->f_src32_an_unprefixed
, 0, 0, 11, 1, 32, total_length
, buffer
);
1524 case M32C_OPERAND_SRC32ANUNPREFIXEDHI
:
1525 errmsg
= insert_normal (cd
, fields
->f_src32_an_unprefixed
, 0, 0, 11, 1, 32, total_length
, buffer
);
1527 case M32C_OPERAND_SRC32ANUNPREFIXEDQI
:
1528 errmsg
= insert_normal (cd
, fields
->f_src32_an_unprefixed
, 0, 0, 11, 1, 32, total_length
, buffer
);
1530 case M32C_OPERAND_SRC32ANUNPREFIXEDSI
:
1531 errmsg
= insert_normal (cd
, fields
->f_src32_an_unprefixed
, 0, 0, 11, 1, 32, total_length
, buffer
);
1533 case M32C_OPERAND_SRC32RNPREFIXEDHI
:
1535 long value
= fields
->f_src32_rn_prefixed_HI
;
1536 value
= ((((value
) + (2))) % (4));
1537 errmsg
= insert_normal (cd
, value
, 0, 0, 18, 2, 32, total_length
, buffer
);
1540 case M32C_OPERAND_SRC32RNPREFIXEDQI
:
1542 long value
= fields
->f_src32_rn_prefixed_QI
;
1543 value
= (((((((~ (value
))) << (1))) & (2))) | (((((unsigned int) (value
) >> (1))) & (1))));
1544 errmsg
= insert_normal (cd
, value
, 0, 0, 18, 2, 32, total_length
, buffer
);
1547 case M32C_OPERAND_SRC32RNPREFIXEDSI
:
1549 long value
= fields
->f_src32_rn_prefixed_SI
;
1550 value
= ((value
) + (2));
1551 errmsg
= insert_normal (cd
, value
, 0, 0, 18, 2, 32, total_length
, buffer
);
1554 case M32C_OPERAND_SRC32RNUNPREFIXEDHI
:
1556 long value
= fields
->f_src32_rn_unprefixed_HI
;
1557 value
= ((((value
) + (2))) % (4));
1558 errmsg
= insert_normal (cd
, value
, 0, 0, 10, 2, 32, total_length
, buffer
);
1561 case M32C_OPERAND_SRC32RNUNPREFIXEDQI
:
1563 long value
= fields
->f_src32_rn_unprefixed_QI
;
1564 value
= (((((((~ (value
))) << (1))) & (2))) | (((((unsigned int) (value
) >> (1))) & (1))));
1565 errmsg
= insert_normal (cd
, value
, 0, 0, 10, 2, 32, total_length
, buffer
);
1568 case M32C_OPERAND_SRC32RNUNPREFIXEDSI
:
1570 long value
= fields
->f_src32_rn_unprefixed_SI
;
1571 value
= ((value
) + (2));
1572 errmsg
= insert_normal (cd
, value
, 0, 0, 10, 2, 32, total_length
, buffer
);
1575 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL
:
1576 errmsg
= insert_normal (cd
, fields
->f_5_1
, 0, 0, 5, 1, 32, total_length
, buffer
);
1578 case M32C_OPERAND_X
:
1580 case M32C_OPERAND_Z
:
1582 case M32C_OPERAND_COND16_16
:
1583 errmsg
= insert_normal (cd
, fields
->f_dsp_16_u8
, 0, 0, 16, 8, 32, total_length
, buffer
);
1585 case M32C_OPERAND_COND16_24
:
1586 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
1588 case M32C_OPERAND_COND16_32
:
1589 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
1591 case M32C_OPERAND_COND16C
:
1592 errmsg
= insert_normal (cd
, fields
->f_cond16
, 0, 0, 12, 4, 32, total_length
, buffer
);
1594 case M32C_OPERAND_COND16J
:
1595 errmsg
= insert_normal (cd
, fields
->f_cond16
, 0, 0, 12, 4, 32, total_length
, buffer
);
1597 case M32C_OPERAND_COND16J5
:
1598 errmsg
= insert_normal (cd
, fields
->f_cond16j_5
, 0, 0, 5, 3, 32, total_length
, buffer
);
1600 case M32C_OPERAND_COND32
:
1603 FLD (f_9_1
) = ((((unsigned int) (FLD (f_cond32
)) >> (3))) & (1));
1604 FLD (f_13_3
) = ((FLD (f_cond32
)) & (7));
1606 errmsg
= insert_normal (cd
, fields
->f_9_1
, 0, 0, 9, 1, 32, total_length
, buffer
);
1609 errmsg
= insert_normal (cd
, fields
->f_13_3
, 0, 0, 13, 3, 32, total_length
, buffer
);
1614 case M32C_OPERAND_COND32_16
:
1615 errmsg
= insert_normal (cd
, fields
->f_dsp_16_u8
, 0, 0, 16, 8, 32, total_length
, buffer
);
1617 case M32C_OPERAND_COND32_24
:
1618 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
1620 case M32C_OPERAND_COND32_32
:
1621 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
1623 case M32C_OPERAND_COND32_40
:
1624 errmsg
= insert_normal (cd
, fields
->f_dsp_40_u8
, 0, 32, 8, 8, 32, total_length
, buffer
);
1626 case M32C_OPERAND_COND32J
:
1629 FLD (f_1_3
) = ((((unsigned int) (FLD (f_cond32j
)) >> (1))) & (7));
1630 FLD (f_7_1
) = ((FLD (f_cond32j
)) & (1));
1632 errmsg
= insert_normal (cd
, fields
->f_1_3
, 0, 0, 1, 3, 32, total_length
, buffer
);
1635 errmsg
= insert_normal (cd
, fields
->f_7_1
, 0, 0, 7, 1, 32, total_length
, buffer
);
1640 case M32C_OPERAND_CR1_PREFIXED_32
:
1641 errmsg
= insert_normal (cd
, fields
->f_21_3
, 0, 0, 21, 3, 32, total_length
, buffer
);
1643 case M32C_OPERAND_CR1_UNPREFIXED_32
:
1644 errmsg
= insert_normal (cd
, fields
->f_13_3
, 0, 0, 13, 3, 32, total_length
, buffer
);
1646 case M32C_OPERAND_CR16
:
1647 errmsg
= insert_normal (cd
, fields
->f_9_3
, 0, 0, 9, 3, 32, total_length
, buffer
);
1649 case M32C_OPERAND_CR2_32
:
1650 errmsg
= insert_normal (cd
, fields
->f_13_3
, 0, 0, 13, 3, 32, total_length
, buffer
);
1652 case M32C_OPERAND_CR3_PREFIXED_32
:
1653 errmsg
= insert_normal (cd
, fields
->f_21_3
, 0, 0, 21, 3, 32, total_length
, buffer
);
1655 case M32C_OPERAND_CR3_UNPREFIXED_32
:
1656 errmsg
= insert_normal (cd
, fields
->f_13_3
, 0, 0, 13, 3, 32, total_length
, buffer
);
1658 case M32C_OPERAND_FLAGS16
:
1659 errmsg
= insert_normal (cd
, fields
->f_9_3
, 0, 0, 9, 3, 32, total_length
, buffer
);
1661 case M32C_OPERAND_FLAGS32
:
1662 errmsg
= insert_normal (cd
, fields
->f_13_3
, 0, 0, 13, 3, 32, total_length
, buffer
);
1664 case M32C_OPERAND_SCCOND32
:
1665 errmsg
= insert_normal (cd
, fields
->f_cond16
, 0, 0, 12, 4, 32, total_length
, buffer
);
1667 case M32C_OPERAND_SIZE
:
1671 /* xgettext:c-format */
1672 fprintf (stderr
, _("Unrecognized field %d while building insn.\n"),
1680 int m32c_cgen_extract_operand
1681 PARAMS ((CGEN_CPU_DESC
, int, CGEN_EXTRACT_INFO
*, CGEN_INSN_INT
,
1682 CGEN_FIELDS
*, bfd_vma
));
1684 /* Main entry point for operand extraction.
1685 The result is <= 0 for error, >0 for success.
1686 ??? Actual values aren't well defined right now.
1688 This function is basically just a big switch statement. Earlier versions
1689 used tables to look up the function to use, but
1690 - if the table contains both assembler and disassembler functions then
1691 the disassembler contains much of the assembler and vice-versa,
1692 - there's a lot of inlining possibilities as things grow,
1693 - using a switch statement avoids the function call overhead.
1695 This function could be moved into `print_insn_normal', but keeping it
1696 separate makes clear the interface between `print_insn_normal' and each of
1700 m32c_cgen_extract_operand (cd
, opindex
, ex_info
, insn_value
, fields
, pc
)
1703 CGEN_EXTRACT_INFO
*ex_info
;
1704 CGEN_INSN_INT insn_value
;
1705 CGEN_FIELDS
* fields
;
1708 /* Assume success (for those operands that are nops). */
1710 unsigned int total_length
= CGEN_FIELDS_BITSIZE (fields
);
1714 case M32C_OPERAND_A0
:
1716 case M32C_OPERAND_A1
:
1718 case M32C_OPERAND_AN16_PUSH_S
:
1719 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 4, 1, 32, total_length
, pc
, & fields
->f_4_1
);
1721 case M32C_OPERAND_BIT16AN
:
1722 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 15, 1, 32, total_length
, pc
, & fields
->f_dst16_an
);
1724 case M32C_OPERAND_BIT16RN
:
1725 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 14, 2, 32, total_length
, pc
, & fields
->f_dst16_rn
);
1727 case M32C_OPERAND_BIT32ANPREFIXED
:
1728 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 17, 1, 32, total_length
, pc
, & fields
->f_dst32_an_prefixed
);
1730 case M32C_OPERAND_BIT32ANUNPREFIXED
:
1731 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_an_unprefixed
);
1733 case M32C_OPERAND_BIT32RNPREFIXED
:
1736 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 2, 32, total_length
, pc
, & value
);
1737 value
= (((((~ (((unsigned int) (value
) >> (1))))) & (1))) | (((((value
) << (1))) & (2))));
1738 fields
->f_dst32_rn_prefixed_QI
= value
;
1741 case M32C_OPERAND_BIT32RNUNPREFIXED
:
1744 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 2, 32, total_length
, pc
, & value
);
1745 value
= (((((~ (((unsigned int) (value
) >> (1))))) & (1))) | (((((value
) << (1))) & (2))));
1746 fields
->f_dst32_rn_unprefixed_QI
= value
;
1749 case M32C_OPERAND_BITBASE16_16_S8
:
1750 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
);
1752 case M32C_OPERAND_BITBASE16_16_U16
:
1755 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
1756 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1757 fields
->f_dsp_16_u16
= value
;
1760 case M32C_OPERAND_BITBASE16_16_U8
:
1761 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_16_u8
);
1763 case M32C_OPERAND_BITBASE16_8_U11_S
:
1765 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 5, 3, 32, total_length
, pc
, & fields
->f_bitno16_S
);
1766 if (length
<= 0) break;
1767 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 8, 32, total_length
, pc
, & fields
->f_dsp_8_u8
);
1768 if (length
<= 0) break;
1770 FLD (f_bitbase16_u11_S
) = ((((FLD (f_dsp_8_u8
)) << (3))) | (FLD (f_bitno16_S
)));
1774 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED
:
1776 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_bitno32_unprefixed
);
1777 if (length
<= 0) break;
1778 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
);
1779 if (length
<= 0) break;
1781 FLD (f_bitbase32_16_s11_unprefixed
) = ((((FLD (f_dsp_16_s8
)) << (3))) | (FLD (f_bitno32_unprefixed
)));
1785 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED
:
1787 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_bitno32_unprefixed
);
1788 if (length
<= 0) break;
1791 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 16, 32, total_length
, pc
, & value
);
1792 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
1793 fields
->f_dsp_16_s16
= value
;
1795 if (length
<= 0) break;
1797 FLD (f_bitbase32_16_s19_unprefixed
) = ((((FLD (f_dsp_16_s16
)) << (3))) | (FLD (f_bitno32_unprefixed
)));
1801 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED
:
1803 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_bitno32_unprefixed
);
1804 if (length
<= 0) break;
1805 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_16_u8
);
1806 if (length
<= 0) break;
1808 FLD (f_bitbase32_16_u11_unprefixed
) = ((((FLD (f_dsp_16_u8
)) << (3))) | (FLD (f_bitno32_unprefixed
)));
1812 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED
:
1814 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_bitno32_unprefixed
);
1815 if (length
<= 0) break;
1818 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
1819 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1820 fields
->f_dsp_16_u16
= value
;
1822 if (length
<= 0) break;
1824 FLD (f_bitbase32_16_u19_unprefixed
) = ((((FLD (f_dsp_16_u16
)) << (3))) | (FLD (f_bitno32_unprefixed
)));
1828 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED
:
1830 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_bitno32_unprefixed
);
1831 if (length
<= 0) break;
1834 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
1835 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1836 fields
->f_dsp_16_u16
= value
;
1838 if (length
<= 0) break;
1839 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
1840 if (length
<= 0) break;
1842 FLD (f_bitbase32_16_u27_unprefixed
) = ((((FLD (f_dsp_16_u16
)) << (3))) | (((((FLD (f_dsp_32_u8
)) << (19))) | (FLD (f_bitno32_unprefixed
)))));
1846 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED
:
1848 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_bitno32_prefixed
);
1849 if (length
<= 0) break;
1850 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
);
1851 if (length
<= 0) break;
1853 FLD (f_bitbase32_24_s11_prefixed
) = ((((FLD (f_dsp_24_s8
)) << (3))) | (FLD (f_bitno32_prefixed
)));
1857 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED
:
1859 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_bitno32_prefixed
);
1860 if (length
<= 0) break;
1861 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
1862 if (length
<= 0) break;
1863 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
);
1864 if (length
<= 0) break;
1866 FLD (f_bitbase32_24_s19_prefixed
) = ((((FLD (f_dsp_24_u8
)) << (3))) | (((((FLD (f_dsp_32_s8
)) << (11))) | (FLD (f_bitno32_prefixed
)))));
1870 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED
:
1872 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_bitno32_prefixed
);
1873 if (length
<= 0) break;
1874 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
1875 if (length
<= 0) break;
1877 FLD (f_bitbase32_24_u11_prefixed
) = ((((FLD (f_dsp_24_u8
)) << (3))) | (FLD (f_bitno32_prefixed
)));
1881 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED
:
1883 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_bitno32_prefixed
);
1884 if (length
<= 0) break;
1885 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
1886 if (length
<= 0) break;
1887 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
1888 if (length
<= 0) break;
1890 FLD (f_bitbase32_24_u19_prefixed
) = ((((FLD (f_dsp_24_u8
)) << (3))) | (((((FLD (f_dsp_32_u8
)) << (11))) | (FLD (f_bitno32_prefixed
)))));
1894 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED
:
1896 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_bitno32_prefixed
);
1897 if (length
<= 0) break;
1898 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
1899 if (length
<= 0) break;
1902 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 16, 32, total_length
, pc
, & value
);
1903 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1904 fields
->f_dsp_32_u16
= value
;
1906 if (length
<= 0) break;
1908 FLD (f_bitbase32_24_u27_prefixed
) = ((((FLD (f_dsp_24_u8
)) << (3))) | (((((FLD (f_dsp_32_u16
)) << (11))) | (FLD (f_bitno32_prefixed
)))));
1912 case M32C_OPERAND_BITNO16R
:
1913 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_16_u8
);
1915 case M32C_OPERAND_BITNO32PREFIXED
:
1916 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_bitno32_prefixed
);
1918 case M32C_OPERAND_BITNO32UNPREFIXED
:
1919 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_bitno32_unprefixed
);
1921 case M32C_OPERAND_DSP_10_U6
:
1922 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 10, 6, 32, total_length
, pc
, & fields
->f_dsp_10_u6
);
1924 case M32C_OPERAND_DSP_16_S16
:
1927 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 16, 32, total_length
, pc
, & value
);
1928 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
1929 fields
->f_dsp_16_s16
= value
;
1932 case M32C_OPERAND_DSP_16_S8
:
1933 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
);
1935 case M32C_OPERAND_DSP_16_U16
:
1938 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
1939 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1940 fields
->f_dsp_16_u16
= value
;
1943 case M32C_OPERAND_DSP_16_U20
:
1947 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
1948 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1949 fields
->f_dsp_16_u16
= value
;
1951 if (length
<= 0) break;
1952 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
1953 if (length
<= 0) break;
1955 FLD (f_dsp_16_u24
) = ((((FLD (f_dsp_32_u8
)) << (16))) | (FLD (f_dsp_16_u16
)));
1959 case M32C_OPERAND_DSP_16_U24
:
1963 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
1964 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
1965 fields
->f_dsp_16_u16
= value
;
1967 if (length
<= 0) break;
1968 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
1969 if (length
<= 0) break;
1971 FLD (f_dsp_16_u24
) = ((((FLD (f_dsp_32_u8
)) << (16))) | (FLD (f_dsp_16_u16
)));
1975 case M32C_OPERAND_DSP_16_U8
:
1976 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_16_u8
);
1978 case M32C_OPERAND_DSP_24_S16
:
1980 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
1981 if (length
<= 0) break;
1982 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
1983 if (length
<= 0) break;
1985 FLD (f_dsp_24_s16
) = EXTHISI (((HI
) (UINT
) (((((FLD (f_dsp_32_u8
)) << (8))) | (FLD (f_dsp_24_u8
))))));
1989 case M32C_OPERAND_DSP_24_S8
:
1990 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
);
1992 case M32C_OPERAND_DSP_24_U16
:
1994 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
1995 if (length
<= 0) break;
1996 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
1997 if (length
<= 0) break;
1999 FLD (f_dsp_24_u16
) = ((((FLD (f_dsp_32_u8
)) << (8))) | (FLD (f_dsp_24_u8
)));
2003 case M32C_OPERAND_DSP_24_U20
:
2005 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2006 if (length
<= 0) break;
2009 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 16, 32, total_length
, pc
, & value
);
2010 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2011 fields
->f_dsp_32_u16
= value
;
2013 if (length
<= 0) break;
2015 FLD (f_dsp_24_u24
) = ((((FLD (f_dsp_32_u16
)) << (8))) | (FLD (f_dsp_24_u8
)));
2019 case M32C_OPERAND_DSP_24_U24
:
2021 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2022 if (length
<= 0) break;
2025 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 16, 32, total_length
, pc
, & value
);
2026 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2027 fields
->f_dsp_32_u16
= value
;
2029 if (length
<= 0) break;
2031 FLD (f_dsp_24_u24
) = ((((FLD (f_dsp_32_u16
)) << (8))) | (FLD (f_dsp_24_u8
)));
2035 case M32C_OPERAND_DSP_24_U8
:
2036 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2038 case M32C_OPERAND_DSP_32_S16
:
2041 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 16, 32, total_length
, pc
, & value
);
2042 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
2043 fields
->f_dsp_32_s16
= value
;
2046 case M32C_OPERAND_DSP_32_S8
:
2047 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
);
2049 case M32C_OPERAND_DSP_32_U16
:
2052 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 16, 32, total_length
, pc
, & value
);
2053 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2054 fields
->f_dsp_32_u16
= value
;
2057 case M32C_OPERAND_DSP_32_U20
:
2060 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 24, 32, total_length
, pc
, & value
);
2061 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
2062 fields
->f_dsp_32_u24
= value
;
2065 case M32C_OPERAND_DSP_32_U24
:
2068 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 24, 32, total_length
, pc
, & value
);
2069 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
2070 fields
->f_dsp_32_u24
= value
;
2073 case M32C_OPERAND_DSP_32_U8
:
2074 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
2076 case M32C_OPERAND_DSP_40_S16
:
2079 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 8, 16, 32, total_length
, pc
, & value
);
2080 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
2081 fields
->f_dsp_40_s16
= value
;
2084 case M32C_OPERAND_DSP_40_S8
:
2085 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
);
2087 case M32C_OPERAND_DSP_40_U16
:
2090 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 8, 16, 32, total_length
, pc
, & value
);
2091 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2092 fields
->f_dsp_40_u16
= value
;
2095 case M32C_OPERAND_DSP_40_U24
:
2098 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 8, 24, 32, total_length
, pc
, & value
);
2099 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
2100 fields
->f_dsp_40_u24
= value
;
2103 case M32C_OPERAND_DSP_40_U8
:
2104 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 8, 8, 32, total_length
, pc
, & fields
->f_dsp_40_u8
);
2106 case M32C_OPERAND_DSP_48_S16
:
2109 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 16, 16, 32, total_length
, pc
, & value
);
2110 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
2111 fields
->f_dsp_48_s16
= value
;
2114 case M32C_OPERAND_DSP_48_S8
:
2115 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
);
2117 case M32C_OPERAND_DSP_48_U16
:
2120 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 16, 16, 32, total_length
, pc
, & value
);
2121 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2122 fields
->f_dsp_48_u16
= value
;
2125 case M32C_OPERAND_DSP_48_U24
:
2129 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 16, 16, 32, total_length
, pc
, & value
);
2130 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2131 fields
->f_dsp_48_u16
= value
;
2133 if (length
<= 0) break;
2134 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 64, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_64_u8
);
2135 if (length
<= 0) break;
2137 FLD (f_dsp_48_u24
) = ((((FLD (f_dsp_48_u16
)) & (65535))) | (((((FLD (f_dsp_64_u8
)) << (16))) & (16711680))));
2141 case M32C_OPERAND_DSP_48_U8
:
2142 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_48_u8
);
2144 case M32C_OPERAND_DSP_8_S8
:
2145 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
);
2147 case M32C_OPERAND_DSP_8_U16
:
2150 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 16, 32, total_length
, pc
, & value
);
2151 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2152 fields
->f_dsp_8_u16
= value
;
2155 case M32C_OPERAND_DSP_8_U6
:
2156 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 6, 32, total_length
, pc
, & fields
->f_dsp_8_u6
);
2158 case M32C_OPERAND_DSP_8_U8
:
2159 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 8, 32, total_length
, pc
, & fields
->f_dsp_8_u8
);
2161 case M32C_OPERAND_DST16AN
:
2162 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 15, 1, 32, total_length
, pc
, & fields
->f_dst16_an
);
2164 case M32C_OPERAND_DST16AN_S
:
2165 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 4, 1, 32, total_length
, pc
, & fields
->f_dst16_an_s
);
2167 case M32C_OPERAND_DST16ANHI
:
2168 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 15, 1, 32, total_length
, pc
, & fields
->f_dst16_an
);
2170 case M32C_OPERAND_DST16ANQI
:
2171 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 15, 1, 32, total_length
, pc
, & fields
->f_dst16_an
);
2173 case M32C_OPERAND_DST16ANQI_S
:
2174 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 5, 1, 32, total_length
, pc
, & fields
->f_dst16_rn_QI_s
);
2176 case M32C_OPERAND_DST16ANSI
:
2177 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 15, 1, 32, total_length
, pc
, & fields
->f_dst16_an
);
2179 case M32C_OPERAND_DST16RNEXTQI
:
2180 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 14, 1, 32, total_length
, pc
, & fields
->f_dst16_rn_ext
);
2182 case M32C_OPERAND_DST16RNHI
:
2183 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 14, 2, 32, total_length
, pc
, & fields
->f_dst16_rn
);
2185 case M32C_OPERAND_DST16RNQI
:
2186 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 14, 2, 32, total_length
, pc
, & fields
->f_dst16_rn
);
2188 case M32C_OPERAND_DST16RNQI_S
:
2189 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 5, 1, 32, total_length
, pc
, & fields
->f_dst16_rn_QI_s
);
2191 case M32C_OPERAND_DST16RNSI
:
2192 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 14, 2, 32, total_length
, pc
, & fields
->f_dst16_rn
);
2194 case M32C_OPERAND_DST32ANEXTUNPREFIXED
:
2195 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_an_unprefixed
);
2197 case M32C_OPERAND_DST32ANPREFIXED
:
2198 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 17, 1, 32, total_length
, pc
, & fields
->f_dst32_an_prefixed
);
2200 case M32C_OPERAND_DST32ANPREFIXEDHI
:
2201 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 17, 1, 32, total_length
, pc
, & fields
->f_dst32_an_prefixed
);
2203 case M32C_OPERAND_DST32ANPREFIXEDQI
:
2204 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 17, 1, 32, total_length
, pc
, & fields
->f_dst32_an_prefixed
);
2206 case M32C_OPERAND_DST32ANPREFIXEDSI
:
2207 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 17, 1, 32, total_length
, pc
, & fields
->f_dst32_an_prefixed
);
2209 case M32C_OPERAND_DST32ANUNPREFIXED
:
2210 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_an_unprefixed
);
2212 case M32C_OPERAND_DST32ANUNPREFIXEDHI
:
2213 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_an_unprefixed
);
2215 case M32C_OPERAND_DST32ANUNPREFIXEDQI
:
2216 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_an_unprefixed
);
2218 case M32C_OPERAND_DST32ANUNPREFIXEDSI
:
2219 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_an_unprefixed
);
2221 case M32C_OPERAND_DST32R0HI_S
:
2223 case M32C_OPERAND_DST32R0QI_S
:
2225 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI
:
2226 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_rn_ext_unprefixed
);
2228 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI
:
2229 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_rn_ext_unprefixed
);
2231 case M32C_OPERAND_DST32RNPREFIXEDHI
:
2234 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 2, 32, total_length
, pc
, & value
);
2235 value
= ((((value
) + (2))) % (4));
2236 fields
->f_dst32_rn_prefixed_HI
= value
;
2239 case M32C_OPERAND_DST32RNPREFIXEDQI
:
2242 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 2, 32, total_length
, pc
, & value
);
2243 value
= (((((~ (((unsigned int) (value
) >> (1))))) & (1))) | (((((value
) << (1))) & (2))));
2244 fields
->f_dst32_rn_prefixed_QI
= value
;
2247 case M32C_OPERAND_DST32RNPREFIXEDSI
:
2250 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 2, 32, total_length
, pc
, & value
);
2251 value
= ((value
) - (2));
2252 fields
->f_dst32_rn_prefixed_SI
= value
;
2255 case M32C_OPERAND_DST32RNUNPREFIXEDHI
:
2258 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 2, 32, total_length
, pc
, & value
);
2259 value
= ((((value
) + (2))) % (4));
2260 fields
->f_dst32_rn_unprefixed_HI
= value
;
2263 case M32C_OPERAND_DST32RNUNPREFIXEDQI
:
2266 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 2, 32, total_length
, pc
, & value
);
2267 value
= (((((~ (((unsigned int) (value
) >> (1))))) & (1))) | (((((value
) << (1))) & (2))));
2268 fields
->f_dst32_rn_unprefixed_QI
= value
;
2271 case M32C_OPERAND_DST32RNUNPREFIXEDSI
:
2274 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 2, 32, total_length
, pc
, & value
);
2275 value
= ((value
) - (2));
2276 fields
->f_dst32_rn_unprefixed_SI
= value
;
2279 case M32C_OPERAND_G
:
2281 case M32C_OPERAND_IMM_12_S4
:
2282 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
);
2284 case M32C_OPERAND_IMM_13_U3
:
2285 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_imm_13_u3
);
2287 case M32C_OPERAND_IMM_16_HI
:
2290 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 16, 32, total_length
, pc
, & value
);
2291 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
2292 fields
->f_dsp_16_s16
= value
;
2295 case M32C_OPERAND_IMM_16_QI
:
2296 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
);
2298 case M32C_OPERAND_IMM_16_SI
:
2302 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
2303 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2304 fields
->f_dsp_16_u16
= value
;
2306 if (length
<= 0) break;
2309 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 16, 32, total_length
, pc
, & value
);
2310 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2311 fields
->f_dsp_32_u16
= value
;
2313 if (length
<= 0) break;
2315 FLD (f_dsp_16_s32
) = ((((FLD (f_dsp_16_u16
)) & (65535))) | (((((FLD (f_dsp_32_u16
)) << (16))) & (0xffff0000))));
2319 case M32C_OPERAND_IMM_20_S4
:
2320 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
);
2322 case M32C_OPERAND_IMM_24_HI
:
2324 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2325 if (length
<= 0) break;
2326 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
2327 if (length
<= 0) break;
2329 FLD (f_dsp_24_s16
) = EXTHISI (((HI
) (UINT
) (((((FLD (f_dsp_32_u8
)) << (8))) | (FLD (f_dsp_24_u8
))))));
2333 case M32C_OPERAND_IMM_24_QI
:
2334 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
);
2336 case M32C_OPERAND_IMM_24_SI
:
2338 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2339 if (length
<= 0) break;
2342 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 24, 32, total_length
, pc
, & value
);
2343 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
2344 fields
->f_dsp_32_u24
= value
;
2346 if (length
<= 0) break;
2348 FLD (f_dsp_24_s32
) = ((((FLD (f_dsp_24_u8
)) & (255))) | (((((FLD (f_dsp_32_u24
)) << (8))) & (0xffffff00))));
2352 case M32C_OPERAND_IMM_32_HI
:
2355 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 16, 32, total_length
, pc
, & value
);
2356 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
2357 fields
->f_dsp_32_s16
= value
;
2360 case M32C_OPERAND_IMM_32_QI
:
2361 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
);
2363 case M32C_OPERAND_IMM_32_SI
:
2366 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 32, 32, total_length
, pc
, & value
);
2367 value
= EXTSISI (((((((((unsigned int) (value
) >> (24))) & (255))) | (((((unsigned int) (value
) >> (8))) & (65280))))) | (((((((value
) << (8))) & (16711680))) | (((((value
) << (24))) & (0xff000000)))))));
2368 fields
->f_dsp_32_s32
= value
;
2371 case M32C_OPERAND_IMM_40_HI
:
2374 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 8, 16, 32, total_length
, pc
, & value
);
2375 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
2376 fields
->f_dsp_40_s16
= value
;
2379 case M32C_OPERAND_IMM_40_QI
:
2380 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
);
2382 case M32C_OPERAND_IMM_40_SI
:
2386 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 8, 24, 32, total_length
, pc
, & value
);
2387 value
= ((((((((unsigned int) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
2388 fields
->f_dsp_40_u24
= value
;
2390 if (length
<= 0) break;
2391 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 64, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_64_u8
);
2392 if (length
<= 0) break;
2394 FLD (f_dsp_40_s32
) = ((((FLD (f_dsp_40_u24
)) & (16777215))) | (((((FLD (f_dsp_64_u8
)) << (24))) & (0xff000000))));
2398 case M32C_OPERAND_IMM_48_HI
:
2401 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 16, 16, 32, total_length
, pc
, & value
);
2402 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
2403 fields
->f_dsp_48_s16
= value
;
2406 case M32C_OPERAND_IMM_48_QI
:
2407 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
);
2409 case M32C_OPERAND_IMM_48_SI
:
2413 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 16, 16, 32, total_length
, pc
, & value
);
2414 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2415 fields
->f_dsp_48_u16
= value
;
2417 if (length
<= 0) break;
2420 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 64, 0, 16, 32, total_length
, pc
, & value
);
2421 value
= ((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280))));
2422 fields
->f_dsp_64_u16
= value
;
2424 if (length
<= 0) break;
2426 FLD (f_dsp_48_s32
) = ((((FLD (f_dsp_48_u16
)) & (65535))) | (((((FLD (f_dsp_64_u16
)) << (16))) & (0xffff0000))));
2430 case M32C_OPERAND_IMM_56_HI
:
2432 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_56_u8
);
2433 if (length
<= 0) break;
2434 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 64, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_64_u8
);
2435 if (length
<= 0) break;
2437 FLD (f_dsp_56_s16
) = EXTHISI (((HI
) (UINT
) (((((FLD (f_dsp_64_u8
)) << (8))) | (FLD (f_dsp_56_u8
))))));
2441 case M32C_OPERAND_IMM_56_QI
:
2442 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
);
2444 case M32C_OPERAND_IMM_64_HI
:
2447 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 64, 0, 16, 32, total_length
, pc
, & value
);
2448 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
2449 fields
->f_dsp_64_s16
= value
;
2452 case M32C_OPERAND_IMM_8_HI
:
2455 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 16, 32, total_length
, pc
, & value
);
2456 value
= EXTHISI (((HI
) (INT
) (((((((unsigned int) (value
) >> (8))) & (255))) | (((((value
) << (8))) & (65280)))))));
2457 fields
->f_dsp_8_s16
= value
;
2460 case M32C_OPERAND_IMM_8_QI
:
2461 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
);
2463 case M32C_OPERAND_IMM_8_S4
:
2464 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
);
2466 case M32C_OPERAND_IMM_SH_12_S4
:
2467 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
);
2469 case M32C_OPERAND_IMM_SH_20_S4
:
2470 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
);
2472 case M32C_OPERAND_IMM_SH_8_S4
:
2473 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
);
2475 case M32C_OPERAND_IMM1_S
:
2478 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 2, 1, 32, total_length
, pc
, & value
);
2479 value
= ((value
) + (1));
2480 fields
->f_imm1_S
= value
;
2483 case M32C_OPERAND_IMM3_S
:
2485 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 2, 2, 32, total_length
, pc
, & fields
->f_2_2
);
2486 if (length
<= 0) break;
2487 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 7, 1, 32, total_length
, pc
, & fields
->f_7_1
);
2488 if (length
<= 0) break;
2490 FLD (f_imm3_S
) = ((((((FLD (f_2_2
)) << (1))) | (FLD (f_7_1
)))) + (1));
2494 case M32C_OPERAND_LAB_16_8
:
2497 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
);
2498 value
= ((value
) + (((pc
) + (2))));
2499 fields
->f_lab_16_8
= value
;
2502 case M32C_OPERAND_LAB_24_8
:
2505 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
);
2506 value
= ((value
) + (((pc
) + (2))));
2507 fields
->f_lab_24_8
= value
;
2510 case M32C_OPERAND_LAB_32_8
:
2513 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
);
2514 value
= ((value
) + (((pc
) + (2))));
2515 fields
->f_lab_32_8
= value
;
2518 case M32C_OPERAND_LAB_40_8
:
2521 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
);
2522 value
= ((value
) + (((pc
) + (2))));
2523 fields
->f_lab_40_8
= value
;
2526 case M32C_OPERAND_LAB_5_3
:
2529 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
)|(1<<CGEN_IFLD_PCREL_ADDR
), 0, 5, 3, 32, total_length
, pc
, & value
);
2530 value
= ((value
) + (((pc
) + (2))));
2531 fields
->f_lab_5_3
= value
;
2534 case M32C_OPERAND_LAB_8_16
:
2537 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
);
2538 value
= ((((((unsigned int) (((value
) & (65535))) >> (8))) | (((int) (((((value
) & (255))) << (24))) >> (16))))) + (((pc
) + (1))));
2539 fields
->f_lab_8_16
= value
;
2542 case M32C_OPERAND_LAB_8_24
:
2545 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_ABS_ADDR
), 0, 8, 24, 32, total_length
, pc
, & value
);
2546 value
= ((((((unsigned int) (value
) >> (16))) | (((value
) & (65280))))) | (((((value
) & (255))) << (16))));
2547 fields
->f_lab_8_24
= value
;
2550 case M32C_OPERAND_LAB_8_8
:
2553 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
);
2554 value
= ((value
) + (((pc
) + (1))));
2555 fields
->f_lab_8_8
= value
;
2558 case M32C_OPERAND_LAB32_JMP_S
:
2560 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 2, 2, 32, total_length
, pc
, & fields
->f_2_2
);
2561 if (length
<= 0) break;
2562 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 7, 1, 32, total_length
, pc
, & fields
->f_7_1
);
2563 if (length
<= 0) break;
2565 FLD (f_lab32_jmp_s
) = ((pc
) + (((((((FLD (f_2_2
)) << (1))) | (FLD (f_7_1
)))) + (2))));
2569 case M32C_OPERAND_Q
:
2571 case M32C_OPERAND_R0
:
2573 case M32C_OPERAND_R0H
:
2575 case M32C_OPERAND_R0L
:
2577 case M32C_OPERAND_R1
:
2579 case M32C_OPERAND_R1R2R0
:
2581 case M32C_OPERAND_R2
:
2583 case M32C_OPERAND_R2R0
:
2585 case M32C_OPERAND_R3
:
2587 case M32C_OPERAND_R3R1
:
2589 case M32C_OPERAND_REGSETPOP
:
2590 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 8, 32, total_length
, pc
, & fields
->f_8_8
);
2592 case M32C_OPERAND_REGSETPUSH
:
2593 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 8, 32, total_length
, pc
, & fields
->f_8_8
);
2595 case M32C_OPERAND_RN16_PUSH_S
:
2596 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 4, 1, 32, total_length
, pc
, & fields
->f_4_1
);
2598 case M32C_OPERAND_S
:
2600 case M32C_OPERAND_SRC16AN
:
2601 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src16_an
);
2603 case M32C_OPERAND_SRC16ANHI
:
2604 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src16_an
);
2606 case M32C_OPERAND_SRC16ANQI
:
2607 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src16_an
);
2609 case M32C_OPERAND_SRC16RNHI
:
2610 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 10, 2, 32, total_length
, pc
, & fields
->f_src16_rn
);
2612 case M32C_OPERAND_SRC16RNQI
:
2613 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 10, 2, 32, total_length
, pc
, & fields
->f_src16_rn
);
2615 case M32C_OPERAND_SRC32ANPREFIXED
:
2616 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 19, 1, 32, total_length
, pc
, & fields
->f_src32_an_prefixed
);
2618 case M32C_OPERAND_SRC32ANPREFIXEDHI
:
2619 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 19, 1, 32, total_length
, pc
, & fields
->f_src32_an_prefixed
);
2621 case M32C_OPERAND_SRC32ANPREFIXEDQI
:
2622 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 19, 1, 32, total_length
, pc
, & fields
->f_src32_an_prefixed
);
2624 case M32C_OPERAND_SRC32ANPREFIXEDSI
:
2625 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 19, 1, 32, total_length
, pc
, & fields
->f_src32_an_prefixed
);
2627 case M32C_OPERAND_SRC32ANUNPREFIXED
:
2628 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src32_an_unprefixed
);
2630 case M32C_OPERAND_SRC32ANUNPREFIXEDHI
:
2631 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src32_an_unprefixed
);
2633 case M32C_OPERAND_SRC32ANUNPREFIXEDQI
:
2634 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src32_an_unprefixed
);
2636 case M32C_OPERAND_SRC32ANUNPREFIXEDSI
:
2637 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src32_an_unprefixed
);
2639 case M32C_OPERAND_SRC32RNPREFIXEDHI
:
2642 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 18, 2, 32, total_length
, pc
, & value
);
2643 value
= ((((value
) + (2))) % (4));
2644 fields
->f_src32_rn_prefixed_HI
= value
;
2647 case M32C_OPERAND_SRC32RNPREFIXEDQI
:
2650 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 18, 2, 32, total_length
, pc
, & value
);
2651 value
= (((((~ (((unsigned int) (value
) >> (1))))) & (1))) | (((((value
) << (1))) & (2))));
2652 fields
->f_src32_rn_prefixed_QI
= value
;
2655 case M32C_OPERAND_SRC32RNPREFIXEDSI
:
2658 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 18, 2, 32, total_length
, pc
, & value
);
2659 value
= ((value
) - (2));
2660 fields
->f_src32_rn_prefixed_SI
= value
;
2663 case M32C_OPERAND_SRC32RNUNPREFIXEDHI
:
2666 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 10, 2, 32, total_length
, pc
, & value
);
2667 value
= ((((value
) + (2))) % (4));
2668 fields
->f_src32_rn_unprefixed_HI
= value
;
2671 case M32C_OPERAND_SRC32RNUNPREFIXEDQI
:
2674 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 10, 2, 32, total_length
, pc
, & value
);
2675 value
= (((((~ (((unsigned int) (value
) >> (1))))) & (1))) | (((((value
) << (1))) & (2))));
2676 fields
->f_src32_rn_unprefixed_QI
= value
;
2679 case M32C_OPERAND_SRC32RNUNPREFIXEDSI
:
2682 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 10, 2, 32, total_length
, pc
, & value
);
2683 value
= ((value
) - (2));
2684 fields
->f_src32_rn_unprefixed_SI
= value
;
2687 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL
:
2688 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 5, 1, 32, total_length
, pc
, & fields
->f_5_1
);
2690 case M32C_OPERAND_X
:
2692 case M32C_OPERAND_Z
:
2694 case M32C_OPERAND_COND16_16
:
2695 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_16_u8
);
2697 case M32C_OPERAND_COND16_24
:
2698 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2700 case M32C_OPERAND_COND16_32
:
2701 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
2703 case M32C_OPERAND_COND16C
:
2704 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 12, 4, 32, total_length
, pc
, & fields
->f_cond16
);
2706 case M32C_OPERAND_COND16J
:
2707 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 12, 4, 32, total_length
, pc
, & fields
->f_cond16
);
2709 case M32C_OPERAND_COND16J5
:
2710 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 5, 3, 32, total_length
, pc
, & fields
->f_cond16j_5
);
2712 case M32C_OPERAND_COND32
:
2714 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_9_1
);
2715 if (length
<= 0) break;
2716 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_13_3
);
2717 if (length
<= 0) break;
2719 FLD (f_cond32
) = ((((FLD (f_9_1
)) << (3))) | (FLD (f_13_3
)));
2723 case M32C_OPERAND_COND32_16
:
2724 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_16_u8
);
2726 case M32C_OPERAND_COND32_24
:
2727 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2729 case M32C_OPERAND_COND32_32
:
2730 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
2732 case M32C_OPERAND_COND32_40
:
2733 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 8, 8, 32, total_length
, pc
, & fields
->f_dsp_40_u8
);
2735 case M32C_OPERAND_COND32J
:
2737 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 1, 3, 32, total_length
, pc
, & fields
->f_1_3
);
2738 if (length
<= 0) break;
2739 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 7, 1, 32, total_length
, pc
, & fields
->f_7_1
);
2740 if (length
<= 0) break;
2742 FLD (f_cond32j
) = ((((FLD (f_1_3
)) << (1))) | (FLD (f_7_1
)));
2746 case M32C_OPERAND_CR1_PREFIXED_32
:
2747 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_21_3
);
2749 case M32C_OPERAND_CR1_UNPREFIXED_32
:
2750 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_13_3
);
2752 case M32C_OPERAND_CR16
:
2753 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 3, 32, total_length
, pc
, & fields
->f_9_3
);
2755 case M32C_OPERAND_CR2_32
:
2756 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_13_3
);
2758 case M32C_OPERAND_CR3_PREFIXED_32
:
2759 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_21_3
);
2761 case M32C_OPERAND_CR3_UNPREFIXED_32
:
2762 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_13_3
);
2764 case M32C_OPERAND_FLAGS16
:
2765 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 3, 32, total_length
, pc
, & fields
->f_9_3
);
2767 case M32C_OPERAND_FLAGS32
:
2768 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_13_3
);
2770 case M32C_OPERAND_SCCOND32
:
2771 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 12, 4, 32, total_length
, pc
, & fields
->f_cond16
);
2773 case M32C_OPERAND_SIZE
:
2777 /* xgettext:c-format */
2778 fprintf (stderr
, _("Unrecognized field %d while decoding insn.\n"),
2786 cgen_insert_fn
* const m32c_cgen_insert_handlers
[] =
2791 cgen_extract_fn
* const m32c_cgen_extract_handlers
[] =
2793 extract_insn_normal
,
2796 int m32c_cgen_get_int_operand
2797 PARAMS ((CGEN_CPU_DESC
, int, const CGEN_FIELDS
*));
2798 bfd_vma m32c_cgen_get_vma_operand
2799 PARAMS ((CGEN_CPU_DESC
, int, const CGEN_FIELDS
*));
2801 /* Getting values from cgen_fields is handled by a collection of functions.
2802 They are distinguished by the type of the VALUE argument they return.
2803 TODO: floating point, inlining support, remove cases where result type
2807 m32c_cgen_get_int_operand (cd
, opindex
, fields
)
2808 CGEN_CPU_DESC cd ATTRIBUTE_UNUSED
;
2810 const CGEN_FIELDS
* fields
;
2816 case M32C_OPERAND_A0
:
2819 case M32C_OPERAND_A1
:
2822 case M32C_OPERAND_AN16_PUSH_S
:
2823 value
= fields
->f_4_1
;
2825 case M32C_OPERAND_BIT16AN
:
2826 value
= fields
->f_dst16_an
;
2828 case M32C_OPERAND_BIT16RN
:
2829 value
= fields
->f_dst16_rn
;
2831 case M32C_OPERAND_BIT32ANPREFIXED
:
2832 value
= fields
->f_dst32_an_prefixed
;
2834 case M32C_OPERAND_BIT32ANUNPREFIXED
:
2835 value
= fields
->f_dst32_an_unprefixed
;
2837 case M32C_OPERAND_BIT32RNPREFIXED
:
2838 value
= fields
->f_dst32_rn_prefixed_QI
;
2840 case M32C_OPERAND_BIT32RNUNPREFIXED
:
2841 value
= fields
->f_dst32_rn_unprefixed_QI
;
2843 case M32C_OPERAND_BITBASE16_16_S8
:
2844 value
= fields
->f_dsp_16_s8
;
2846 case M32C_OPERAND_BITBASE16_16_U16
:
2847 value
= fields
->f_dsp_16_u16
;
2849 case M32C_OPERAND_BITBASE16_16_U8
:
2850 value
= fields
->f_dsp_16_u8
;
2852 case M32C_OPERAND_BITBASE16_8_U11_S
:
2853 value
= fields
->f_bitbase16_u11_S
;
2855 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED
:
2856 value
= fields
->f_bitbase32_16_s11_unprefixed
;
2858 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED
:
2859 value
= fields
->f_bitbase32_16_s19_unprefixed
;
2861 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED
:
2862 value
= fields
->f_bitbase32_16_u11_unprefixed
;
2864 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED
:
2865 value
= fields
->f_bitbase32_16_u19_unprefixed
;
2867 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED
:
2868 value
= fields
->f_bitbase32_16_u27_unprefixed
;
2870 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED
:
2871 value
= fields
->f_bitbase32_24_s11_prefixed
;
2873 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED
:
2874 value
= fields
->f_bitbase32_24_s19_prefixed
;
2876 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED
:
2877 value
= fields
->f_bitbase32_24_u11_prefixed
;
2879 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED
:
2880 value
= fields
->f_bitbase32_24_u19_prefixed
;
2882 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED
:
2883 value
= fields
->f_bitbase32_24_u27_prefixed
;
2885 case M32C_OPERAND_BITNO16R
:
2886 value
= fields
->f_dsp_16_u8
;
2888 case M32C_OPERAND_BITNO32PREFIXED
:
2889 value
= fields
->f_bitno32_prefixed
;
2891 case M32C_OPERAND_BITNO32UNPREFIXED
:
2892 value
= fields
->f_bitno32_unprefixed
;
2894 case M32C_OPERAND_DSP_10_U6
:
2895 value
= fields
->f_dsp_10_u6
;
2897 case M32C_OPERAND_DSP_16_S16
:
2898 value
= fields
->f_dsp_16_s16
;
2900 case M32C_OPERAND_DSP_16_S8
:
2901 value
= fields
->f_dsp_16_s8
;
2903 case M32C_OPERAND_DSP_16_U16
:
2904 value
= fields
->f_dsp_16_u16
;
2906 case M32C_OPERAND_DSP_16_U20
:
2907 value
= fields
->f_dsp_16_u24
;
2909 case M32C_OPERAND_DSP_16_U24
:
2910 value
= fields
->f_dsp_16_u24
;
2912 case M32C_OPERAND_DSP_16_U8
:
2913 value
= fields
->f_dsp_16_u8
;
2915 case M32C_OPERAND_DSP_24_S16
:
2916 value
= fields
->f_dsp_24_s16
;
2918 case M32C_OPERAND_DSP_24_S8
:
2919 value
= fields
->f_dsp_24_s8
;
2921 case M32C_OPERAND_DSP_24_U16
:
2922 value
= fields
->f_dsp_24_u16
;
2924 case M32C_OPERAND_DSP_24_U20
:
2925 value
= fields
->f_dsp_24_u24
;
2927 case M32C_OPERAND_DSP_24_U24
:
2928 value
= fields
->f_dsp_24_u24
;
2930 case M32C_OPERAND_DSP_24_U8
:
2931 value
= fields
->f_dsp_24_u8
;
2933 case M32C_OPERAND_DSP_32_S16
:
2934 value
= fields
->f_dsp_32_s16
;
2936 case M32C_OPERAND_DSP_32_S8
:
2937 value
= fields
->f_dsp_32_s8
;
2939 case M32C_OPERAND_DSP_32_U16
:
2940 value
= fields
->f_dsp_32_u16
;
2942 case M32C_OPERAND_DSP_32_U20
:
2943 value
= fields
->f_dsp_32_u24
;
2945 case M32C_OPERAND_DSP_32_U24
:
2946 value
= fields
->f_dsp_32_u24
;
2948 case M32C_OPERAND_DSP_32_U8
:
2949 value
= fields
->f_dsp_32_u8
;
2951 case M32C_OPERAND_DSP_40_S16
:
2952 value
= fields
->f_dsp_40_s16
;
2954 case M32C_OPERAND_DSP_40_S8
:
2955 value
= fields
->f_dsp_40_s8
;
2957 case M32C_OPERAND_DSP_40_U16
:
2958 value
= fields
->f_dsp_40_u16
;
2960 case M32C_OPERAND_DSP_40_U24
:
2961 value
= fields
->f_dsp_40_u24
;
2963 case M32C_OPERAND_DSP_40_U8
:
2964 value
= fields
->f_dsp_40_u8
;
2966 case M32C_OPERAND_DSP_48_S16
:
2967 value
= fields
->f_dsp_48_s16
;
2969 case M32C_OPERAND_DSP_48_S8
:
2970 value
= fields
->f_dsp_48_s8
;
2972 case M32C_OPERAND_DSP_48_U16
:
2973 value
= fields
->f_dsp_48_u16
;
2975 case M32C_OPERAND_DSP_48_U24
:
2976 value
= fields
->f_dsp_48_u24
;
2978 case M32C_OPERAND_DSP_48_U8
:
2979 value
= fields
->f_dsp_48_u8
;
2981 case M32C_OPERAND_DSP_8_S8
:
2982 value
= fields
->f_dsp_8_s8
;
2984 case M32C_OPERAND_DSP_8_U16
:
2985 value
= fields
->f_dsp_8_u16
;
2987 case M32C_OPERAND_DSP_8_U6
:
2988 value
= fields
->f_dsp_8_u6
;
2990 case M32C_OPERAND_DSP_8_U8
:
2991 value
= fields
->f_dsp_8_u8
;
2993 case M32C_OPERAND_DST16AN
:
2994 value
= fields
->f_dst16_an
;
2996 case M32C_OPERAND_DST16AN_S
:
2997 value
= fields
->f_dst16_an_s
;
2999 case M32C_OPERAND_DST16ANHI
:
3000 value
= fields
->f_dst16_an
;
3002 case M32C_OPERAND_DST16ANQI
:
3003 value
= fields
->f_dst16_an
;
3005 case M32C_OPERAND_DST16ANQI_S
:
3006 value
= fields
->f_dst16_rn_QI_s
;
3008 case M32C_OPERAND_DST16ANSI
:
3009 value
= fields
->f_dst16_an
;
3011 case M32C_OPERAND_DST16RNEXTQI
:
3012 value
= fields
->f_dst16_rn_ext
;
3014 case M32C_OPERAND_DST16RNHI
:
3015 value
= fields
->f_dst16_rn
;
3017 case M32C_OPERAND_DST16RNQI
:
3018 value
= fields
->f_dst16_rn
;
3020 case M32C_OPERAND_DST16RNQI_S
:
3021 value
= fields
->f_dst16_rn_QI_s
;
3023 case M32C_OPERAND_DST16RNSI
:
3024 value
= fields
->f_dst16_rn
;
3026 case M32C_OPERAND_DST32ANEXTUNPREFIXED
:
3027 value
= fields
->f_dst32_an_unprefixed
;
3029 case M32C_OPERAND_DST32ANPREFIXED
:
3030 value
= fields
->f_dst32_an_prefixed
;
3032 case M32C_OPERAND_DST32ANPREFIXEDHI
:
3033 value
= fields
->f_dst32_an_prefixed
;
3035 case M32C_OPERAND_DST32ANPREFIXEDQI
:
3036 value
= fields
->f_dst32_an_prefixed
;
3038 case M32C_OPERAND_DST32ANPREFIXEDSI
:
3039 value
= fields
->f_dst32_an_prefixed
;
3041 case M32C_OPERAND_DST32ANUNPREFIXED
:
3042 value
= fields
->f_dst32_an_unprefixed
;
3044 case M32C_OPERAND_DST32ANUNPREFIXEDHI
:
3045 value
= fields
->f_dst32_an_unprefixed
;
3047 case M32C_OPERAND_DST32ANUNPREFIXEDQI
:
3048 value
= fields
->f_dst32_an_unprefixed
;
3050 case M32C_OPERAND_DST32ANUNPREFIXEDSI
:
3051 value
= fields
->f_dst32_an_unprefixed
;
3053 case M32C_OPERAND_DST32R0HI_S
:
3056 case M32C_OPERAND_DST32R0QI_S
:
3059 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI
:
3060 value
= fields
->f_dst32_rn_ext_unprefixed
;
3062 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI
:
3063 value
= fields
->f_dst32_rn_ext_unprefixed
;
3065 case M32C_OPERAND_DST32RNPREFIXEDHI
:
3066 value
= fields
->f_dst32_rn_prefixed_HI
;
3068 case M32C_OPERAND_DST32RNPREFIXEDQI
:
3069 value
= fields
->f_dst32_rn_prefixed_QI
;
3071 case M32C_OPERAND_DST32RNPREFIXEDSI
:
3072 value
= fields
->f_dst32_rn_prefixed_SI
;
3074 case M32C_OPERAND_DST32RNUNPREFIXEDHI
:
3075 value
= fields
->f_dst32_rn_unprefixed_HI
;
3077 case M32C_OPERAND_DST32RNUNPREFIXEDQI
:
3078 value
= fields
->f_dst32_rn_unprefixed_QI
;
3080 case M32C_OPERAND_DST32RNUNPREFIXEDSI
:
3081 value
= fields
->f_dst32_rn_unprefixed_SI
;
3083 case M32C_OPERAND_G
:
3086 case M32C_OPERAND_IMM_12_S4
:
3087 value
= fields
->f_imm_12_s4
;
3089 case M32C_OPERAND_IMM_13_U3
:
3090 value
= fields
->f_imm_13_u3
;
3092 case M32C_OPERAND_IMM_16_HI
:
3093 value
= fields
->f_dsp_16_s16
;
3095 case M32C_OPERAND_IMM_16_QI
:
3096 value
= fields
->f_dsp_16_s8
;
3098 case M32C_OPERAND_IMM_16_SI
:
3099 value
= fields
->f_dsp_16_s32
;
3101 case M32C_OPERAND_IMM_20_S4
:
3102 value
= fields
->f_imm_20_s4
;
3104 case M32C_OPERAND_IMM_24_HI
:
3105 value
= fields
->f_dsp_24_s16
;
3107 case M32C_OPERAND_IMM_24_QI
:
3108 value
= fields
->f_dsp_24_s8
;
3110 case M32C_OPERAND_IMM_24_SI
:
3111 value
= fields
->f_dsp_24_s32
;
3113 case M32C_OPERAND_IMM_32_HI
:
3114 value
= fields
->f_dsp_32_s16
;
3116 case M32C_OPERAND_IMM_32_QI
:
3117 value
= fields
->f_dsp_32_s8
;
3119 case M32C_OPERAND_IMM_32_SI
:
3120 value
= fields
->f_dsp_32_s32
;
3122 case M32C_OPERAND_IMM_40_HI
:
3123 value
= fields
->f_dsp_40_s16
;
3125 case M32C_OPERAND_IMM_40_QI
:
3126 value
= fields
->f_dsp_40_s8
;
3128 case M32C_OPERAND_IMM_40_SI
:
3129 value
= fields
->f_dsp_40_s32
;
3131 case M32C_OPERAND_IMM_48_HI
:
3132 value
= fields
->f_dsp_48_s16
;
3134 case M32C_OPERAND_IMM_48_QI
:
3135 value
= fields
->f_dsp_48_s8
;
3137 case M32C_OPERAND_IMM_48_SI
:
3138 value
= fields
->f_dsp_48_s32
;
3140 case M32C_OPERAND_IMM_56_HI
:
3141 value
= fields
->f_dsp_56_s16
;
3143 case M32C_OPERAND_IMM_56_QI
:
3144 value
= fields
->f_dsp_56_s8
;
3146 case M32C_OPERAND_IMM_64_HI
:
3147 value
= fields
->f_dsp_64_s16
;
3149 case M32C_OPERAND_IMM_8_HI
:
3150 value
= fields
->f_dsp_8_s16
;
3152 case M32C_OPERAND_IMM_8_QI
:
3153 value
= fields
->f_dsp_8_s8
;
3155 case M32C_OPERAND_IMM_8_S4
:
3156 value
= fields
->f_imm_8_s4
;
3158 case M32C_OPERAND_IMM_SH_12_S4
:
3159 value
= fields
->f_imm_12_s4
;
3161 case M32C_OPERAND_IMM_SH_20_S4
:
3162 value
= fields
->f_imm_20_s4
;
3164 case M32C_OPERAND_IMM_SH_8_S4
:
3165 value
= fields
->f_imm_8_s4
;
3167 case M32C_OPERAND_IMM1_S
:
3168 value
= fields
->f_imm1_S
;
3170 case M32C_OPERAND_IMM3_S
:
3171 value
= fields
->f_imm3_S
;
3173 case M32C_OPERAND_LAB_16_8
:
3174 value
= fields
->f_lab_16_8
;
3176 case M32C_OPERAND_LAB_24_8
:
3177 value
= fields
->f_lab_24_8
;
3179 case M32C_OPERAND_LAB_32_8
:
3180 value
= fields
->f_lab_32_8
;
3182 case M32C_OPERAND_LAB_40_8
:
3183 value
= fields
->f_lab_40_8
;
3185 case M32C_OPERAND_LAB_5_3
:
3186 value
= fields
->f_lab_5_3
;
3188 case M32C_OPERAND_LAB_8_16
:
3189 value
= fields
->f_lab_8_16
;
3191 case M32C_OPERAND_LAB_8_24
:
3192 value
= fields
->f_lab_8_24
;
3194 case M32C_OPERAND_LAB_8_8
:
3195 value
= fields
->f_lab_8_8
;
3197 case M32C_OPERAND_LAB32_JMP_S
:
3198 value
= fields
->f_lab32_jmp_s
;
3200 case M32C_OPERAND_Q
:
3203 case M32C_OPERAND_R0
:
3206 case M32C_OPERAND_R0H
:
3209 case M32C_OPERAND_R0L
:
3212 case M32C_OPERAND_R1
:
3215 case M32C_OPERAND_R1R2R0
:
3218 case M32C_OPERAND_R2
:
3221 case M32C_OPERAND_R2R0
:
3224 case M32C_OPERAND_R3
:
3227 case M32C_OPERAND_R3R1
:
3230 case M32C_OPERAND_REGSETPOP
:
3231 value
= fields
->f_8_8
;
3233 case M32C_OPERAND_REGSETPUSH
:
3234 value
= fields
->f_8_8
;
3236 case M32C_OPERAND_RN16_PUSH_S
:
3237 value
= fields
->f_4_1
;
3239 case M32C_OPERAND_S
:
3242 case M32C_OPERAND_SRC16AN
:
3243 value
= fields
->f_src16_an
;
3245 case M32C_OPERAND_SRC16ANHI
:
3246 value
= fields
->f_src16_an
;
3248 case M32C_OPERAND_SRC16ANQI
:
3249 value
= fields
->f_src16_an
;
3251 case M32C_OPERAND_SRC16RNHI
:
3252 value
= fields
->f_src16_rn
;
3254 case M32C_OPERAND_SRC16RNQI
:
3255 value
= fields
->f_src16_rn
;
3257 case M32C_OPERAND_SRC32ANPREFIXED
:
3258 value
= fields
->f_src32_an_prefixed
;
3260 case M32C_OPERAND_SRC32ANPREFIXEDHI
:
3261 value
= fields
->f_src32_an_prefixed
;
3263 case M32C_OPERAND_SRC32ANPREFIXEDQI
:
3264 value
= fields
->f_src32_an_prefixed
;
3266 case M32C_OPERAND_SRC32ANPREFIXEDSI
:
3267 value
= fields
->f_src32_an_prefixed
;
3269 case M32C_OPERAND_SRC32ANUNPREFIXED
:
3270 value
= fields
->f_src32_an_unprefixed
;
3272 case M32C_OPERAND_SRC32ANUNPREFIXEDHI
:
3273 value
= fields
->f_src32_an_unprefixed
;
3275 case M32C_OPERAND_SRC32ANUNPREFIXEDQI
:
3276 value
= fields
->f_src32_an_unprefixed
;
3278 case M32C_OPERAND_SRC32ANUNPREFIXEDSI
:
3279 value
= fields
->f_src32_an_unprefixed
;
3281 case M32C_OPERAND_SRC32RNPREFIXEDHI
:
3282 value
= fields
->f_src32_rn_prefixed_HI
;
3284 case M32C_OPERAND_SRC32RNPREFIXEDQI
:
3285 value
= fields
->f_src32_rn_prefixed_QI
;
3287 case M32C_OPERAND_SRC32RNPREFIXEDSI
:
3288 value
= fields
->f_src32_rn_prefixed_SI
;
3290 case M32C_OPERAND_SRC32RNUNPREFIXEDHI
:
3291 value
= fields
->f_src32_rn_unprefixed_HI
;
3293 case M32C_OPERAND_SRC32RNUNPREFIXEDQI
:
3294 value
= fields
->f_src32_rn_unprefixed_QI
;
3296 case M32C_OPERAND_SRC32RNUNPREFIXEDSI
:
3297 value
= fields
->f_src32_rn_unprefixed_SI
;
3299 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL
:
3300 value
= fields
->f_5_1
;
3302 case M32C_OPERAND_X
:
3305 case M32C_OPERAND_Z
:
3308 case M32C_OPERAND_COND16_16
:
3309 value
= fields
->f_dsp_16_u8
;
3311 case M32C_OPERAND_COND16_24
:
3312 value
= fields
->f_dsp_24_u8
;
3314 case M32C_OPERAND_COND16_32
:
3315 value
= fields
->f_dsp_32_u8
;
3317 case M32C_OPERAND_COND16C
:
3318 value
= fields
->f_cond16
;
3320 case M32C_OPERAND_COND16J
:
3321 value
= fields
->f_cond16
;
3323 case M32C_OPERAND_COND16J5
:
3324 value
= fields
->f_cond16j_5
;
3326 case M32C_OPERAND_COND32
:
3327 value
= fields
->f_cond32
;
3329 case M32C_OPERAND_COND32_16
:
3330 value
= fields
->f_dsp_16_u8
;
3332 case M32C_OPERAND_COND32_24
:
3333 value
= fields
->f_dsp_24_u8
;
3335 case M32C_OPERAND_COND32_32
:
3336 value
= fields
->f_dsp_32_u8
;
3338 case M32C_OPERAND_COND32_40
:
3339 value
= fields
->f_dsp_40_u8
;
3341 case M32C_OPERAND_COND32J
:
3342 value
= fields
->f_cond32j
;
3344 case M32C_OPERAND_CR1_PREFIXED_32
:
3345 value
= fields
->f_21_3
;
3347 case M32C_OPERAND_CR1_UNPREFIXED_32
:
3348 value
= fields
->f_13_3
;
3350 case M32C_OPERAND_CR16
:
3351 value
= fields
->f_9_3
;
3353 case M32C_OPERAND_CR2_32
:
3354 value
= fields
->f_13_3
;
3356 case M32C_OPERAND_CR3_PREFIXED_32
:
3357 value
= fields
->f_21_3
;
3359 case M32C_OPERAND_CR3_UNPREFIXED_32
:
3360 value
= fields
->f_13_3
;
3362 case M32C_OPERAND_FLAGS16
:
3363 value
= fields
->f_9_3
;
3365 case M32C_OPERAND_FLAGS32
:
3366 value
= fields
->f_13_3
;
3368 case M32C_OPERAND_SCCOND32
:
3369 value
= fields
->f_cond16
;
3371 case M32C_OPERAND_SIZE
:
3376 /* xgettext:c-format */
3377 fprintf (stderr
, _("Unrecognized field %d while getting int operand.\n"),
3386 m32c_cgen_get_vma_operand (cd
, opindex
, fields
)
3387 CGEN_CPU_DESC cd ATTRIBUTE_UNUSED
;
3389 const CGEN_FIELDS
* fields
;
3395 case M32C_OPERAND_A0
:
3398 case M32C_OPERAND_A1
:
3401 case M32C_OPERAND_AN16_PUSH_S
:
3402 value
= fields
->f_4_1
;
3404 case M32C_OPERAND_BIT16AN
:
3405 value
= fields
->f_dst16_an
;
3407 case M32C_OPERAND_BIT16RN
:
3408 value
= fields
->f_dst16_rn
;
3410 case M32C_OPERAND_BIT32ANPREFIXED
:
3411 value
= fields
->f_dst32_an_prefixed
;
3413 case M32C_OPERAND_BIT32ANUNPREFIXED
:
3414 value
= fields
->f_dst32_an_unprefixed
;
3416 case M32C_OPERAND_BIT32RNPREFIXED
:
3417 value
= fields
->f_dst32_rn_prefixed_QI
;
3419 case M32C_OPERAND_BIT32RNUNPREFIXED
:
3420 value
= fields
->f_dst32_rn_unprefixed_QI
;
3422 case M32C_OPERAND_BITBASE16_16_S8
:
3423 value
= fields
->f_dsp_16_s8
;
3425 case M32C_OPERAND_BITBASE16_16_U16
:
3426 value
= fields
->f_dsp_16_u16
;
3428 case M32C_OPERAND_BITBASE16_16_U8
:
3429 value
= fields
->f_dsp_16_u8
;
3431 case M32C_OPERAND_BITBASE16_8_U11_S
:
3432 value
= fields
->f_bitbase16_u11_S
;
3434 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED
:
3435 value
= fields
->f_bitbase32_16_s11_unprefixed
;
3437 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED
:
3438 value
= fields
->f_bitbase32_16_s19_unprefixed
;
3440 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED
:
3441 value
= fields
->f_bitbase32_16_u11_unprefixed
;
3443 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED
:
3444 value
= fields
->f_bitbase32_16_u19_unprefixed
;
3446 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED
:
3447 value
= fields
->f_bitbase32_16_u27_unprefixed
;
3449 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED
:
3450 value
= fields
->f_bitbase32_24_s11_prefixed
;
3452 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED
:
3453 value
= fields
->f_bitbase32_24_s19_prefixed
;
3455 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED
:
3456 value
= fields
->f_bitbase32_24_u11_prefixed
;
3458 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED
:
3459 value
= fields
->f_bitbase32_24_u19_prefixed
;
3461 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED
:
3462 value
= fields
->f_bitbase32_24_u27_prefixed
;
3464 case M32C_OPERAND_BITNO16R
:
3465 value
= fields
->f_dsp_16_u8
;
3467 case M32C_OPERAND_BITNO32PREFIXED
:
3468 value
= fields
->f_bitno32_prefixed
;
3470 case M32C_OPERAND_BITNO32UNPREFIXED
:
3471 value
= fields
->f_bitno32_unprefixed
;
3473 case M32C_OPERAND_DSP_10_U6
:
3474 value
= fields
->f_dsp_10_u6
;
3476 case M32C_OPERAND_DSP_16_S16
:
3477 value
= fields
->f_dsp_16_s16
;
3479 case M32C_OPERAND_DSP_16_S8
:
3480 value
= fields
->f_dsp_16_s8
;
3482 case M32C_OPERAND_DSP_16_U16
:
3483 value
= fields
->f_dsp_16_u16
;
3485 case M32C_OPERAND_DSP_16_U20
:
3486 value
= fields
->f_dsp_16_u24
;
3488 case M32C_OPERAND_DSP_16_U24
:
3489 value
= fields
->f_dsp_16_u24
;
3491 case M32C_OPERAND_DSP_16_U8
:
3492 value
= fields
->f_dsp_16_u8
;
3494 case M32C_OPERAND_DSP_24_S16
:
3495 value
= fields
->f_dsp_24_s16
;
3497 case M32C_OPERAND_DSP_24_S8
:
3498 value
= fields
->f_dsp_24_s8
;
3500 case M32C_OPERAND_DSP_24_U16
:
3501 value
= fields
->f_dsp_24_u16
;
3503 case M32C_OPERAND_DSP_24_U20
:
3504 value
= fields
->f_dsp_24_u24
;
3506 case M32C_OPERAND_DSP_24_U24
:
3507 value
= fields
->f_dsp_24_u24
;
3509 case M32C_OPERAND_DSP_24_U8
:
3510 value
= fields
->f_dsp_24_u8
;
3512 case M32C_OPERAND_DSP_32_S16
:
3513 value
= fields
->f_dsp_32_s16
;
3515 case M32C_OPERAND_DSP_32_S8
:
3516 value
= fields
->f_dsp_32_s8
;
3518 case M32C_OPERAND_DSP_32_U16
:
3519 value
= fields
->f_dsp_32_u16
;
3521 case M32C_OPERAND_DSP_32_U20
:
3522 value
= fields
->f_dsp_32_u24
;
3524 case M32C_OPERAND_DSP_32_U24
:
3525 value
= fields
->f_dsp_32_u24
;
3527 case M32C_OPERAND_DSP_32_U8
:
3528 value
= fields
->f_dsp_32_u8
;
3530 case M32C_OPERAND_DSP_40_S16
:
3531 value
= fields
->f_dsp_40_s16
;
3533 case M32C_OPERAND_DSP_40_S8
:
3534 value
= fields
->f_dsp_40_s8
;
3536 case M32C_OPERAND_DSP_40_U16
:
3537 value
= fields
->f_dsp_40_u16
;
3539 case M32C_OPERAND_DSP_40_U24
:
3540 value
= fields
->f_dsp_40_u24
;
3542 case M32C_OPERAND_DSP_40_U8
:
3543 value
= fields
->f_dsp_40_u8
;
3545 case M32C_OPERAND_DSP_48_S16
:
3546 value
= fields
->f_dsp_48_s16
;
3548 case M32C_OPERAND_DSP_48_S8
:
3549 value
= fields
->f_dsp_48_s8
;
3551 case M32C_OPERAND_DSP_48_U16
:
3552 value
= fields
->f_dsp_48_u16
;
3554 case M32C_OPERAND_DSP_48_U24
:
3555 value
= fields
->f_dsp_48_u24
;
3557 case M32C_OPERAND_DSP_48_U8
:
3558 value
= fields
->f_dsp_48_u8
;
3560 case M32C_OPERAND_DSP_8_S8
:
3561 value
= fields
->f_dsp_8_s8
;
3563 case M32C_OPERAND_DSP_8_U16
:
3564 value
= fields
->f_dsp_8_u16
;
3566 case M32C_OPERAND_DSP_8_U6
:
3567 value
= fields
->f_dsp_8_u6
;
3569 case M32C_OPERAND_DSP_8_U8
:
3570 value
= fields
->f_dsp_8_u8
;
3572 case M32C_OPERAND_DST16AN
:
3573 value
= fields
->f_dst16_an
;
3575 case M32C_OPERAND_DST16AN_S
:
3576 value
= fields
->f_dst16_an_s
;
3578 case M32C_OPERAND_DST16ANHI
:
3579 value
= fields
->f_dst16_an
;
3581 case M32C_OPERAND_DST16ANQI
:
3582 value
= fields
->f_dst16_an
;
3584 case M32C_OPERAND_DST16ANQI_S
:
3585 value
= fields
->f_dst16_rn_QI_s
;
3587 case M32C_OPERAND_DST16ANSI
:
3588 value
= fields
->f_dst16_an
;
3590 case M32C_OPERAND_DST16RNEXTQI
:
3591 value
= fields
->f_dst16_rn_ext
;
3593 case M32C_OPERAND_DST16RNHI
:
3594 value
= fields
->f_dst16_rn
;
3596 case M32C_OPERAND_DST16RNQI
:
3597 value
= fields
->f_dst16_rn
;
3599 case M32C_OPERAND_DST16RNQI_S
:
3600 value
= fields
->f_dst16_rn_QI_s
;
3602 case M32C_OPERAND_DST16RNSI
:
3603 value
= fields
->f_dst16_rn
;
3605 case M32C_OPERAND_DST32ANEXTUNPREFIXED
:
3606 value
= fields
->f_dst32_an_unprefixed
;
3608 case M32C_OPERAND_DST32ANPREFIXED
:
3609 value
= fields
->f_dst32_an_prefixed
;
3611 case M32C_OPERAND_DST32ANPREFIXEDHI
:
3612 value
= fields
->f_dst32_an_prefixed
;
3614 case M32C_OPERAND_DST32ANPREFIXEDQI
:
3615 value
= fields
->f_dst32_an_prefixed
;
3617 case M32C_OPERAND_DST32ANPREFIXEDSI
:
3618 value
= fields
->f_dst32_an_prefixed
;
3620 case M32C_OPERAND_DST32ANUNPREFIXED
:
3621 value
= fields
->f_dst32_an_unprefixed
;
3623 case M32C_OPERAND_DST32ANUNPREFIXEDHI
:
3624 value
= fields
->f_dst32_an_unprefixed
;
3626 case M32C_OPERAND_DST32ANUNPREFIXEDQI
:
3627 value
= fields
->f_dst32_an_unprefixed
;
3629 case M32C_OPERAND_DST32ANUNPREFIXEDSI
:
3630 value
= fields
->f_dst32_an_unprefixed
;
3632 case M32C_OPERAND_DST32R0HI_S
:
3635 case M32C_OPERAND_DST32R0QI_S
:
3638 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI
:
3639 value
= fields
->f_dst32_rn_ext_unprefixed
;
3641 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI
:
3642 value
= fields
->f_dst32_rn_ext_unprefixed
;
3644 case M32C_OPERAND_DST32RNPREFIXEDHI
:
3645 value
= fields
->f_dst32_rn_prefixed_HI
;
3647 case M32C_OPERAND_DST32RNPREFIXEDQI
:
3648 value
= fields
->f_dst32_rn_prefixed_QI
;
3650 case M32C_OPERAND_DST32RNPREFIXEDSI
:
3651 value
= fields
->f_dst32_rn_prefixed_SI
;
3653 case M32C_OPERAND_DST32RNUNPREFIXEDHI
:
3654 value
= fields
->f_dst32_rn_unprefixed_HI
;
3656 case M32C_OPERAND_DST32RNUNPREFIXEDQI
:
3657 value
= fields
->f_dst32_rn_unprefixed_QI
;
3659 case M32C_OPERAND_DST32RNUNPREFIXEDSI
:
3660 value
= fields
->f_dst32_rn_unprefixed_SI
;
3662 case M32C_OPERAND_G
:
3665 case M32C_OPERAND_IMM_12_S4
:
3666 value
= fields
->f_imm_12_s4
;
3668 case M32C_OPERAND_IMM_13_U3
:
3669 value
= fields
->f_imm_13_u3
;
3671 case M32C_OPERAND_IMM_16_HI
:
3672 value
= fields
->f_dsp_16_s16
;
3674 case M32C_OPERAND_IMM_16_QI
:
3675 value
= fields
->f_dsp_16_s8
;
3677 case M32C_OPERAND_IMM_16_SI
:
3678 value
= fields
->f_dsp_16_s32
;
3680 case M32C_OPERAND_IMM_20_S4
:
3681 value
= fields
->f_imm_20_s4
;
3683 case M32C_OPERAND_IMM_24_HI
:
3684 value
= fields
->f_dsp_24_s16
;
3686 case M32C_OPERAND_IMM_24_QI
:
3687 value
= fields
->f_dsp_24_s8
;
3689 case M32C_OPERAND_IMM_24_SI
:
3690 value
= fields
->f_dsp_24_s32
;
3692 case M32C_OPERAND_IMM_32_HI
:
3693 value
= fields
->f_dsp_32_s16
;
3695 case M32C_OPERAND_IMM_32_QI
:
3696 value
= fields
->f_dsp_32_s8
;
3698 case M32C_OPERAND_IMM_32_SI
:
3699 value
= fields
->f_dsp_32_s32
;
3701 case M32C_OPERAND_IMM_40_HI
:
3702 value
= fields
->f_dsp_40_s16
;
3704 case M32C_OPERAND_IMM_40_QI
:
3705 value
= fields
->f_dsp_40_s8
;
3707 case M32C_OPERAND_IMM_40_SI
:
3708 value
= fields
->f_dsp_40_s32
;
3710 case M32C_OPERAND_IMM_48_HI
:
3711 value
= fields
->f_dsp_48_s16
;
3713 case M32C_OPERAND_IMM_48_QI
:
3714 value
= fields
->f_dsp_48_s8
;
3716 case M32C_OPERAND_IMM_48_SI
:
3717 value
= fields
->f_dsp_48_s32
;
3719 case M32C_OPERAND_IMM_56_HI
:
3720 value
= fields
->f_dsp_56_s16
;
3722 case M32C_OPERAND_IMM_56_QI
:
3723 value
= fields
->f_dsp_56_s8
;
3725 case M32C_OPERAND_IMM_64_HI
:
3726 value
= fields
->f_dsp_64_s16
;
3728 case M32C_OPERAND_IMM_8_HI
:
3729 value
= fields
->f_dsp_8_s16
;
3731 case M32C_OPERAND_IMM_8_QI
:
3732 value
= fields
->f_dsp_8_s8
;
3734 case M32C_OPERAND_IMM_8_S4
:
3735 value
= fields
->f_imm_8_s4
;
3737 case M32C_OPERAND_IMM_SH_12_S4
:
3738 value
= fields
->f_imm_12_s4
;
3740 case M32C_OPERAND_IMM_SH_20_S4
:
3741 value
= fields
->f_imm_20_s4
;
3743 case M32C_OPERAND_IMM_SH_8_S4
:
3744 value
= fields
->f_imm_8_s4
;
3746 case M32C_OPERAND_IMM1_S
:
3747 value
= fields
->f_imm1_S
;
3749 case M32C_OPERAND_IMM3_S
:
3750 value
= fields
->f_imm3_S
;
3752 case M32C_OPERAND_LAB_16_8
:
3753 value
= fields
->f_lab_16_8
;
3755 case M32C_OPERAND_LAB_24_8
:
3756 value
= fields
->f_lab_24_8
;
3758 case M32C_OPERAND_LAB_32_8
:
3759 value
= fields
->f_lab_32_8
;
3761 case M32C_OPERAND_LAB_40_8
:
3762 value
= fields
->f_lab_40_8
;
3764 case M32C_OPERAND_LAB_5_3
:
3765 value
= fields
->f_lab_5_3
;
3767 case M32C_OPERAND_LAB_8_16
:
3768 value
= fields
->f_lab_8_16
;
3770 case M32C_OPERAND_LAB_8_24
:
3771 value
= fields
->f_lab_8_24
;
3773 case M32C_OPERAND_LAB_8_8
:
3774 value
= fields
->f_lab_8_8
;
3776 case M32C_OPERAND_LAB32_JMP_S
:
3777 value
= fields
->f_lab32_jmp_s
;
3779 case M32C_OPERAND_Q
:
3782 case M32C_OPERAND_R0
:
3785 case M32C_OPERAND_R0H
:
3788 case M32C_OPERAND_R0L
:
3791 case M32C_OPERAND_R1
:
3794 case M32C_OPERAND_R1R2R0
:
3797 case M32C_OPERAND_R2
:
3800 case M32C_OPERAND_R2R0
:
3803 case M32C_OPERAND_R3
:
3806 case M32C_OPERAND_R3R1
:
3809 case M32C_OPERAND_REGSETPOP
:
3810 value
= fields
->f_8_8
;
3812 case M32C_OPERAND_REGSETPUSH
:
3813 value
= fields
->f_8_8
;
3815 case M32C_OPERAND_RN16_PUSH_S
:
3816 value
= fields
->f_4_1
;
3818 case M32C_OPERAND_S
:
3821 case M32C_OPERAND_SRC16AN
:
3822 value
= fields
->f_src16_an
;
3824 case M32C_OPERAND_SRC16ANHI
:
3825 value
= fields
->f_src16_an
;
3827 case M32C_OPERAND_SRC16ANQI
:
3828 value
= fields
->f_src16_an
;
3830 case M32C_OPERAND_SRC16RNHI
:
3831 value
= fields
->f_src16_rn
;
3833 case M32C_OPERAND_SRC16RNQI
:
3834 value
= fields
->f_src16_rn
;
3836 case M32C_OPERAND_SRC32ANPREFIXED
:
3837 value
= fields
->f_src32_an_prefixed
;
3839 case M32C_OPERAND_SRC32ANPREFIXEDHI
:
3840 value
= fields
->f_src32_an_prefixed
;
3842 case M32C_OPERAND_SRC32ANPREFIXEDQI
:
3843 value
= fields
->f_src32_an_prefixed
;
3845 case M32C_OPERAND_SRC32ANPREFIXEDSI
:
3846 value
= fields
->f_src32_an_prefixed
;
3848 case M32C_OPERAND_SRC32ANUNPREFIXED
:
3849 value
= fields
->f_src32_an_unprefixed
;
3851 case M32C_OPERAND_SRC32ANUNPREFIXEDHI
:
3852 value
= fields
->f_src32_an_unprefixed
;
3854 case M32C_OPERAND_SRC32ANUNPREFIXEDQI
:
3855 value
= fields
->f_src32_an_unprefixed
;
3857 case M32C_OPERAND_SRC32ANUNPREFIXEDSI
:
3858 value
= fields
->f_src32_an_unprefixed
;
3860 case M32C_OPERAND_SRC32RNPREFIXEDHI
:
3861 value
= fields
->f_src32_rn_prefixed_HI
;
3863 case M32C_OPERAND_SRC32RNPREFIXEDQI
:
3864 value
= fields
->f_src32_rn_prefixed_QI
;
3866 case M32C_OPERAND_SRC32RNPREFIXEDSI
:
3867 value
= fields
->f_src32_rn_prefixed_SI
;
3869 case M32C_OPERAND_SRC32RNUNPREFIXEDHI
:
3870 value
= fields
->f_src32_rn_unprefixed_HI
;
3872 case M32C_OPERAND_SRC32RNUNPREFIXEDQI
:
3873 value
= fields
->f_src32_rn_unprefixed_QI
;
3875 case M32C_OPERAND_SRC32RNUNPREFIXEDSI
:
3876 value
= fields
->f_src32_rn_unprefixed_SI
;
3878 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL
:
3879 value
= fields
->f_5_1
;
3881 case M32C_OPERAND_X
:
3884 case M32C_OPERAND_Z
:
3887 case M32C_OPERAND_COND16_16
:
3888 value
= fields
->f_dsp_16_u8
;
3890 case M32C_OPERAND_COND16_24
:
3891 value
= fields
->f_dsp_24_u8
;
3893 case M32C_OPERAND_COND16_32
:
3894 value
= fields
->f_dsp_32_u8
;
3896 case M32C_OPERAND_COND16C
:
3897 value
= fields
->f_cond16
;
3899 case M32C_OPERAND_COND16J
:
3900 value
= fields
->f_cond16
;
3902 case M32C_OPERAND_COND16J5
:
3903 value
= fields
->f_cond16j_5
;
3905 case M32C_OPERAND_COND32
:
3906 value
= fields
->f_cond32
;
3908 case M32C_OPERAND_COND32_16
:
3909 value
= fields
->f_dsp_16_u8
;
3911 case M32C_OPERAND_COND32_24
:
3912 value
= fields
->f_dsp_24_u8
;
3914 case M32C_OPERAND_COND32_32
:
3915 value
= fields
->f_dsp_32_u8
;
3917 case M32C_OPERAND_COND32_40
:
3918 value
= fields
->f_dsp_40_u8
;
3920 case M32C_OPERAND_COND32J
:
3921 value
= fields
->f_cond32j
;
3923 case M32C_OPERAND_CR1_PREFIXED_32
:
3924 value
= fields
->f_21_3
;
3926 case M32C_OPERAND_CR1_UNPREFIXED_32
:
3927 value
= fields
->f_13_3
;
3929 case M32C_OPERAND_CR16
:
3930 value
= fields
->f_9_3
;
3932 case M32C_OPERAND_CR2_32
:
3933 value
= fields
->f_13_3
;
3935 case M32C_OPERAND_CR3_PREFIXED_32
:
3936 value
= fields
->f_21_3
;
3938 case M32C_OPERAND_CR3_UNPREFIXED_32
:
3939 value
= fields
->f_13_3
;
3941 case M32C_OPERAND_FLAGS16
:
3942 value
= fields
->f_9_3
;
3944 case M32C_OPERAND_FLAGS32
:
3945 value
= fields
->f_13_3
;
3947 case M32C_OPERAND_SCCOND32
:
3948 value
= fields
->f_cond16
;
3950 case M32C_OPERAND_SIZE
:
3955 /* xgettext:c-format */
3956 fprintf (stderr
, _("Unrecognized field %d while getting vma operand.\n"),
3964 void m32c_cgen_set_int_operand
3965 PARAMS ((CGEN_CPU_DESC
, int, CGEN_FIELDS
*, int));
3966 void m32c_cgen_set_vma_operand
3967 PARAMS ((CGEN_CPU_DESC
, int, CGEN_FIELDS
*, bfd_vma
));
3969 /* Stuffing values in cgen_fields is handled by a collection of functions.
3970 They are distinguished by the type of the VALUE argument they accept.
3971 TODO: floating point, inlining support, remove cases where argument type
3975 m32c_cgen_set_int_operand (cd
, opindex
, fields
, value
)
3976 CGEN_CPU_DESC cd ATTRIBUTE_UNUSED
;
3978 CGEN_FIELDS
* fields
;
3983 case M32C_OPERAND_A0
:
3985 case M32C_OPERAND_A1
:
3987 case M32C_OPERAND_AN16_PUSH_S
:
3988 fields
->f_4_1
= value
;
3990 case M32C_OPERAND_BIT16AN
:
3991 fields
->f_dst16_an
= value
;
3993 case M32C_OPERAND_BIT16RN
:
3994 fields
->f_dst16_rn
= value
;
3996 case M32C_OPERAND_BIT32ANPREFIXED
:
3997 fields
->f_dst32_an_prefixed
= value
;
3999 case M32C_OPERAND_BIT32ANUNPREFIXED
:
4000 fields
->f_dst32_an_unprefixed
= value
;
4002 case M32C_OPERAND_BIT32RNPREFIXED
:
4003 fields
->f_dst32_rn_prefixed_QI
= value
;
4005 case M32C_OPERAND_BIT32RNUNPREFIXED
:
4006 fields
->f_dst32_rn_unprefixed_QI
= value
;
4008 case M32C_OPERAND_BITBASE16_16_S8
:
4009 fields
->f_dsp_16_s8
= value
;
4011 case M32C_OPERAND_BITBASE16_16_U16
:
4012 fields
->f_dsp_16_u16
= value
;
4014 case M32C_OPERAND_BITBASE16_16_U8
:
4015 fields
->f_dsp_16_u8
= value
;
4017 case M32C_OPERAND_BITBASE16_8_U11_S
:
4018 fields
->f_bitbase16_u11_S
= value
;
4020 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED
:
4021 fields
->f_bitbase32_16_s11_unprefixed
= value
;
4023 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED
:
4024 fields
->f_bitbase32_16_s19_unprefixed
= value
;
4026 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED
:
4027 fields
->f_bitbase32_16_u11_unprefixed
= value
;
4029 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED
:
4030 fields
->f_bitbase32_16_u19_unprefixed
= value
;
4032 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED
:
4033 fields
->f_bitbase32_16_u27_unprefixed
= value
;
4035 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED
:
4036 fields
->f_bitbase32_24_s11_prefixed
= value
;
4038 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED
:
4039 fields
->f_bitbase32_24_s19_prefixed
= value
;
4041 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED
:
4042 fields
->f_bitbase32_24_u11_prefixed
= value
;
4044 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED
:
4045 fields
->f_bitbase32_24_u19_prefixed
= value
;
4047 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED
:
4048 fields
->f_bitbase32_24_u27_prefixed
= value
;
4050 case M32C_OPERAND_BITNO16R
:
4051 fields
->f_dsp_16_u8
= value
;
4053 case M32C_OPERAND_BITNO32PREFIXED
:
4054 fields
->f_bitno32_prefixed
= value
;
4056 case M32C_OPERAND_BITNO32UNPREFIXED
:
4057 fields
->f_bitno32_unprefixed
= value
;
4059 case M32C_OPERAND_DSP_10_U6
:
4060 fields
->f_dsp_10_u6
= value
;
4062 case M32C_OPERAND_DSP_16_S16
:
4063 fields
->f_dsp_16_s16
= value
;
4065 case M32C_OPERAND_DSP_16_S8
:
4066 fields
->f_dsp_16_s8
= value
;
4068 case M32C_OPERAND_DSP_16_U16
:
4069 fields
->f_dsp_16_u16
= value
;
4071 case M32C_OPERAND_DSP_16_U20
:
4072 fields
->f_dsp_16_u24
= value
;
4074 case M32C_OPERAND_DSP_16_U24
:
4075 fields
->f_dsp_16_u24
= value
;
4077 case M32C_OPERAND_DSP_16_U8
:
4078 fields
->f_dsp_16_u8
= value
;
4080 case M32C_OPERAND_DSP_24_S16
:
4081 fields
->f_dsp_24_s16
= value
;
4083 case M32C_OPERAND_DSP_24_S8
:
4084 fields
->f_dsp_24_s8
= value
;
4086 case M32C_OPERAND_DSP_24_U16
:
4087 fields
->f_dsp_24_u16
= value
;
4089 case M32C_OPERAND_DSP_24_U20
:
4090 fields
->f_dsp_24_u24
= value
;
4092 case M32C_OPERAND_DSP_24_U24
:
4093 fields
->f_dsp_24_u24
= value
;
4095 case M32C_OPERAND_DSP_24_U8
:
4096 fields
->f_dsp_24_u8
= value
;
4098 case M32C_OPERAND_DSP_32_S16
:
4099 fields
->f_dsp_32_s16
= value
;
4101 case M32C_OPERAND_DSP_32_S8
:
4102 fields
->f_dsp_32_s8
= value
;
4104 case M32C_OPERAND_DSP_32_U16
:
4105 fields
->f_dsp_32_u16
= value
;
4107 case M32C_OPERAND_DSP_32_U20
:
4108 fields
->f_dsp_32_u24
= value
;
4110 case M32C_OPERAND_DSP_32_U24
:
4111 fields
->f_dsp_32_u24
= value
;
4113 case M32C_OPERAND_DSP_32_U8
:
4114 fields
->f_dsp_32_u8
= value
;
4116 case M32C_OPERAND_DSP_40_S16
:
4117 fields
->f_dsp_40_s16
= value
;
4119 case M32C_OPERAND_DSP_40_S8
:
4120 fields
->f_dsp_40_s8
= value
;
4122 case M32C_OPERAND_DSP_40_U16
:
4123 fields
->f_dsp_40_u16
= value
;
4125 case M32C_OPERAND_DSP_40_U24
:
4126 fields
->f_dsp_40_u24
= value
;
4128 case M32C_OPERAND_DSP_40_U8
:
4129 fields
->f_dsp_40_u8
= value
;
4131 case M32C_OPERAND_DSP_48_S16
:
4132 fields
->f_dsp_48_s16
= value
;
4134 case M32C_OPERAND_DSP_48_S8
:
4135 fields
->f_dsp_48_s8
= value
;
4137 case M32C_OPERAND_DSP_48_U16
:
4138 fields
->f_dsp_48_u16
= value
;
4140 case M32C_OPERAND_DSP_48_U24
:
4141 fields
->f_dsp_48_u24
= value
;
4143 case M32C_OPERAND_DSP_48_U8
:
4144 fields
->f_dsp_48_u8
= value
;
4146 case M32C_OPERAND_DSP_8_S8
:
4147 fields
->f_dsp_8_s8
= value
;
4149 case M32C_OPERAND_DSP_8_U16
:
4150 fields
->f_dsp_8_u16
= value
;
4152 case M32C_OPERAND_DSP_8_U6
:
4153 fields
->f_dsp_8_u6
= value
;
4155 case M32C_OPERAND_DSP_8_U8
:
4156 fields
->f_dsp_8_u8
= value
;
4158 case M32C_OPERAND_DST16AN
:
4159 fields
->f_dst16_an
= value
;
4161 case M32C_OPERAND_DST16AN_S
:
4162 fields
->f_dst16_an_s
= value
;
4164 case M32C_OPERAND_DST16ANHI
:
4165 fields
->f_dst16_an
= value
;
4167 case M32C_OPERAND_DST16ANQI
:
4168 fields
->f_dst16_an
= value
;
4170 case M32C_OPERAND_DST16ANQI_S
:
4171 fields
->f_dst16_rn_QI_s
= value
;
4173 case M32C_OPERAND_DST16ANSI
:
4174 fields
->f_dst16_an
= value
;
4176 case M32C_OPERAND_DST16RNEXTQI
:
4177 fields
->f_dst16_rn_ext
= value
;
4179 case M32C_OPERAND_DST16RNHI
:
4180 fields
->f_dst16_rn
= value
;
4182 case M32C_OPERAND_DST16RNQI
:
4183 fields
->f_dst16_rn
= value
;
4185 case M32C_OPERAND_DST16RNQI_S
:
4186 fields
->f_dst16_rn_QI_s
= value
;
4188 case M32C_OPERAND_DST16RNSI
:
4189 fields
->f_dst16_rn
= value
;
4191 case M32C_OPERAND_DST32ANEXTUNPREFIXED
:
4192 fields
->f_dst32_an_unprefixed
= value
;
4194 case M32C_OPERAND_DST32ANPREFIXED
:
4195 fields
->f_dst32_an_prefixed
= value
;
4197 case M32C_OPERAND_DST32ANPREFIXEDHI
:
4198 fields
->f_dst32_an_prefixed
= value
;
4200 case M32C_OPERAND_DST32ANPREFIXEDQI
:
4201 fields
->f_dst32_an_prefixed
= value
;
4203 case M32C_OPERAND_DST32ANPREFIXEDSI
:
4204 fields
->f_dst32_an_prefixed
= value
;
4206 case M32C_OPERAND_DST32ANUNPREFIXED
:
4207 fields
->f_dst32_an_unprefixed
= value
;
4209 case M32C_OPERAND_DST32ANUNPREFIXEDHI
:
4210 fields
->f_dst32_an_unprefixed
= value
;
4212 case M32C_OPERAND_DST32ANUNPREFIXEDQI
:
4213 fields
->f_dst32_an_unprefixed
= value
;
4215 case M32C_OPERAND_DST32ANUNPREFIXEDSI
:
4216 fields
->f_dst32_an_unprefixed
= value
;
4218 case M32C_OPERAND_DST32R0HI_S
:
4220 case M32C_OPERAND_DST32R0QI_S
:
4222 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI
:
4223 fields
->f_dst32_rn_ext_unprefixed
= value
;
4225 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI
:
4226 fields
->f_dst32_rn_ext_unprefixed
= value
;
4228 case M32C_OPERAND_DST32RNPREFIXEDHI
:
4229 fields
->f_dst32_rn_prefixed_HI
= value
;
4231 case M32C_OPERAND_DST32RNPREFIXEDQI
:
4232 fields
->f_dst32_rn_prefixed_QI
= value
;
4234 case M32C_OPERAND_DST32RNPREFIXEDSI
:
4235 fields
->f_dst32_rn_prefixed_SI
= value
;
4237 case M32C_OPERAND_DST32RNUNPREFIXEDHI
:
4238 fields
->f_dst32_rn_unprefixed_HI
= value
;
4240 case M32C_OPERAND_DST32RNUNPREFIXEDQI
:
4241 fields
->f_dst32_rn_unprefixed_QI
= value
;
4243 case M32C_OPERAND_DST32RNUNPREFIXEDSI
:
4244 fields
->f_dst32_rn_unprefixed_SI
= value
;
4246 case M32C_OPERAND_G
:
4248 case M32C_OPERAND_IMM_12_S4
:
4249 fields
->f_imm_12_s4
= value
;
4251 case M32C_OPERAND_IMM_13_U3
:
4252 fields
->f_imm_13_u3
= value
;
4254 case M32C_OPERAND_IMM_16_HI
:
4255 fields
->f_dsp_16_s16
= value
;
4257 case M32C_OPERAND_IMM_16_QI
:
4258 fields
->f_dsp_16_s8
= value
;
4260 case M32C_OPERAND_IMM_16_SI
:
4261 fields
->f_dsp_16_s32
= value
;
4263 case M32C_OPERAND_IMM_20_S4
:
4264 fields
->f_imm_20_s4
= value
;
4266 case M32C_OPERAND_IMM_24_HI
:
4267 fields
->f_dsp_24_s16
= value
;
4269 case M32C_OPERAND_IMM_24_QI
:
4270 fields
->f_dsp_24_s8
= value
;
4272 case M32C_OPERAND_IMM_24_SI
:
4273 fields
->f_dsp_24_s32
= value
;
4275 case M32C_OPERAND_IMM_32_HI
:
4276 fields
->f_dsp_32_s16
= value
;
4278 case M32C_OPERAND_IMM_32_QI
:
4279 fields
->f_dsp_32_s8
= value
;
4281 case M32C_OPERAND_IMM_32_SI
:
4282 fields
->f_dsp_32_s32
= value
;
4284 case M32C_OPERAND_IMM_40_HI
:
4285 fields
->f_dsp_40_s16
= value
;
4287 case M32C_OPERAND_IMM_40_QI
:
4288 fields
->f_dsp_40_s8
= value
;
4290 case M32C_OPERAND_IMM_40_SI
:
4291 fields
->f_dsp_40_s32
= value
;
4293 case M32C_OPERAND_IMM_48_HI
:
4294 fields
->f_dsp_48_s16
= value
;
4296 case M32C_OPERAND_IMM_48_QI
:
4297 fields
->f_dsp_48_s8
= value
;
4299 case M32C_OPERAND_IMM_48_SI
:
4300 fields
->f_dsp_48_s32
= value
;
4302 case M32C_OPERAND_IMM_56_HI
:
4303 fields
->f_dsp_56_s16
= value
;
4305 case M32C_OPERAND_IMM_56_QI
:
4306 fields
->f_dsp_56_s8
= value
;
4308 case M32C_OPERAND_IMM_64_HI
:
4309 fields
->f_dsp_64_s16
= value
;
4311 case M32C_OPERAND_IMM_8_HI
:
4312 fields
->f_dsp_8_s16
= value
;
4314 case M32C_OPERAND_IMM_8_QI
:
4315 fields
->f_dsp_8_s8
= value
;
4317 case M32C_OPERAND_IMM_8_S4
:
4318 fields
->f_imm_8_s4
= value
;
4320 case M32C_OPERAND_IMM_SH_12_S4
:
4321 fields
->f_imm_12_s4
= value
;
4323 case M32C_OPERAND_IMM_SH_20_S4
:
4324 fields
->f_imm_20_s4
= value
;
4326 case M32C_OPERAND_IMM_SH_8_S4
:
4327 fields
->f_imm_8_s4
= value
;
4329 case M32C_OPERAND_IMM1_S
:
4330 fields
->f_imm1_S
= value
;
4332 case M32C_OPERAND_IMM3_S
:
4333 fields
->f_imm3_S
= value
;
4335 case M32C_OPERAND_LAB_16_8
:
4336 fields
->f_lab_16_8
= value
;
4338 case M32C_OPERAND_LAB_24_8
:
4339 fields
->f_lab_24_8
= value
;
4341 case M32C_OPERAND_LAB_32_8
:
4342 fields
->f_lab_32_8
= value
;
4344 case M32C_OPERAND_LAB_40_8
:
4345 fields
->f_lab_40_8
= value
;
4347 case M32C_OPERAND_LAB_5_3
:
4348 fields
->f_lab_5_3
= value
;
4350 case M32C_OPERAND_LAB_8_16
:
4351 fields
->f_lab_8_16
= value
;
4353 case M32C_OPERAND_LAB_8_24
:
4354 fields
->f_lab_8_24
= value
;
4356 case M32C_OPERAND_LAB_8_8
:
4357 fields
->f_lab_8_8
= value
;
4359 case M32C_OPERAND_LAB32_JMP_S
:
4360 fields
->f_lab32_jmp_s
= value
;
4362 case M32C_OPERAND_Q
:
4364 case M32C_OPERAND_R0
:
4366 case M32C_OPERAND_R0H
:
4368 case M32C_OPERAND_R0L
:
4370 case M32C_OPERAND_R1
:
4372 case M32C_OPERAND_R1R2R0
:
4374 case M32C_OPERAND_R2
:
4376 case M32C_OPERAND_R2R0
:
4378 case M32C_OPERAND_R3
:
4380 case M32C_OPERAND_R3R1
:
4382 case M32C_OPERAND_REGSETPOP
:
4383 fields
->f_8_8
= value
;
4385 case M32C_OPERAND_REGSETPUSH
:
4386 fields
->f_8_8
= value
;
4388 case M32C_OPERAND_RN16_PUSH_S
:
4389 fields
->f_4_1
= value
;
4391 case M32C_OPERAND_S
:
4393 case M32C_OPERAND_SRC16AN
:
4394 fields
->f_src16_an
= value
;
4396 case M32C_OPERAND_SRC16ANHI
:
4397 fields
->f_src16_an
= value
;
4399 case M32C_OPERAND_SRC16ANQI
:
4400 fields
->f_src16_an
= value
;
4402 case M32C_OPERAND_SRC16RNHI
:
4403 fields
->f_src16_rn
= value
;
4405 case M32C_OPERAND_SRC16RNQI
:
4406 fields
->f_src16_rn
= value
;
4408 case M32C_OPERAND_SRC32ANPREFIXED
:
4409 fields
->f_src32_an_prefixed
= value
;
4411 case M32C_OPERAND_SRC32ANPREFIXEDHI
:
4412 fields
->f_src32_an_prefixed
= value
;
4414 case M32C_OPERAND_SRC32ANPREFIXEDQI
:
4415 fields
->f_src32_an_prefixed
= value
;
4417 case M32C_OPERAND_SRC32ANPREFIXEDSI
:
4418 fields
->f_src32_an_prefixed
= value
;
4420 case M32C_OPERAND_SRC32ANUNPREFIXED
:
4421 fields
->f_src32_an_unprefixed
= value
;
4423 case M32C_OPERAND_SRC32ANUNPREFIXEDHI
:
4424 fields
->f_src32_an_unprefixed
= value
;
4426 case M32C_OPERAND_SRC32ANUNPREFIXEDQI
:
4427 fields
->f_src32_an_unprefixed
= value
;
4429 case M32C_OPERAND_SRC32ANUNPREFIXEDSI
:
4430 fields
->f_src32_an_unprefixed
= value
;
4432 case M32C_OPERAND_SRC32RNPREFIXEDHI
:
4433 fields
->f_src32_rn_prefixed_HI
= value
;
4435 case M32C_OPERAND_SRC32RNPREFIXEDQI
:
4436 fields
->f_src32_rn_prefixed_QI
= value
;
4438 case M32C_OPERAND_SRC32RNPREFIXEDSI
:
4439 fields
->f_src32_rn_prefixed_SI
= value
;
4441 case M32C_OPERAND_SRC32RNUNPREFIXEDHI
:
4442 fields
->f_src32_rn_unprefixed_HI
= value
;
4444 case M32C_OPERAND_SRC32RNUNPREFIXEDQI
:
4445 fields
->f_src32_rn_unprefixed_QI
= value
;
4447 case M32C_OPERAND_SRC32RNUNPREFIXEDSI
:
4448 fields
->f_src32_rn_unprefixed_SI
= value
;
4450 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL
:
4451 fields
->f_5_1
= value
;
4453 case M32C_OPERAND_X
:
4455 case M32C_OPERAND_Z
:
4457 case M32C_OPERAND_COND16_16
:
4458 fields
->f_dsp_16_u8
= value
;
4460 case M32C_OPERAND_COND16_24
:
4461 fields
->f_dsp_24_u8
= value
;
4463 case M32C_OPERAND_COND16_32
:
4464 fields
->f_dsp_32_u8
= value
;
4466 case M32C_OPERAND_COND16C
:
4467 fields
->f_cond16
= value
;
4469 case M32C_OPERAND_COND16J
:
4470 fields
->f_cond16
= value
;
4472 case M32C_OPERAND_COND16J5
:
4473 fields
->f_cond16j_5
= value
;
4475 case M32C_OPERAND_COND32
:
4476 fields
->f_cond32
= value
;
4478 case M32C_OPERAND_COND32_16
:
4479 fields
->f_dsp_16_u8
= value
;
4481 case M32C_OPERAND_COND32_24
:
4482 fields
->f_dsp_24_u8
= value
;
4484 case M32C_OPERAND_COND32_32
:
4485 fields
->f_dsp_32_u8
= value
;
4487 case M32C_OPERAND_COND32_40
:
4488 fields
->f_dsp_40_u8
= value
;
4490 case M32C_OPERAND_COND32J
:
4491 fields
->f_cond32j
= value
;
4493 case M32C_OPERAND_CR1_PREFIXED_32
:
4494 fields
->f_21_3
= value
;
4496 case M32C_OPERAND_CR1_UNPREFIXED_32
:
4497 fields
->f_13_3
= value
;
4499 case M32C_OPERAND_CR16
:
4500 fields
->f_9_3
= value
;
4502 case M32C_OPERAND_CR2_32
:
4503 fields
->f_13_3
= value
;
4505 case M32C_OPERAND_CR3_PREFIXED_32
:
4506 fields
->f_21_3
= value
;
4508 case M32C_OPERAND_CR3_UNPREFIXED_32
:
4509 fields
->f_13_3
= value
;
4511 case M32C_OPERAND_FLAGS16
:
4512 fields
->f_9_3
= value
;
4514 case M32C_OPERAND_FLAGS32
:
4515 fields
->f_13_3
= value
;
4517 case M32C_OPERAND_SCCOND32
:
4518 fields
->f_cond16
= value
;
4520 case M32C_OPERAND_SIZE
:
4524 /* xgettext:c-format */
4525 fprintf (stderr
, _("Unrecognized field %d while setting int operand.\n"),
4532 m32c_cgen_set_vma_operand (cd
, opindex
, fields
, value
)
4533 CGEN_CPU_DESC cd ATTRIBUTE_UNUSED
;
4535 CGEN_FIELDS
* fields
;
4540 case M32C_OPERAND_A0
:
4542 case M32C_OPERAND_A1
:
4544 case M32C_OPERAND_AN16_PUSH_S
:
4545 fields
->f_4_1
= value
;
4547 case M32C_OPERAND_BIT16AN
:
4548 fields
->f_dst16_an
= value
;
4550 case M32C_OPERAND_BIT16RN
:
4551 fields
->f_dst16_rn
= value
;
4553 case M32C_OPERAND_BIT32ANPREFIXED
:
4554 fields
->f_dst32_an_prefixed
= value
;
4556 case M32C_OPERAND_BIT32ANUNPREFIXED
:
4557 fields
->f_dst32_an_unprefixed
= value
;
4559 case M32C_OPERAND_BIT32RNPREFIXED
:
4560 fields
->f_dst32_rn_prefixed_QI
= value
;
4562 case M32C_OPERAND_BIT32RNUNPREFIXED
:
4563 fields
->f_dst32_rn_unprefixed_QI
= value
;
4565 case M32C_OPERAND_BITBASE16_16_S8
:
4566 fields
->f_dsp_16_s8
= value
;
4568 case M32C_OPERAND_BITBASE16_16_U16
:
4569 fields
->f_dsp_16_u16
= value
;
4571 case M32C_OPERAND_BITBASE16_16_U8
:
4572 fields
->f_dsp_16_u8
= value
;
4574 case M32C_OPERAND_BITBASE16_8_U11_S
:
4575 fields
->f_bitbase16_u11_S
= value
;
4577 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED
:
4578 fields
->f_bitbase32_16_s11_unprefixed
= value
;
4580 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED
:
4581 fields
->f_bitbase32_16_s19_unprefixed
= value
;
4583 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED
:
4584 fields
->f_bitbase32_16_u11_unprefixed
= value
;
4586 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED
:
4587 fields
->f_bitbase32_16_u19_unprefixed
= value
;
4589 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED
:
4590 fields
->f_bitbase32_16_u27_unprefixed
= value
;
4592 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED
:
4593 fields
->f_bitbase32_24_s11_prefixed
= value
;
4595 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED
:
4596 fields
->f_bitbase32_24_s19_prefixed
= value
;
4598 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED
:
4599 fields
->f_bitbase32_24_u11_prefixed
= value
;
4601 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED
:
4602 fields
->f_bitbase32_24_u19_prefixed
= value
;
4604 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED
:
4605 fields
->f_bitbase32_24_u27_prefixed
= value
;
4607 case M32C_OPERAND_BITNO16R
:
4608 fields
->f_dsp_16_u8
= value
;
4610 case M32C_OPERAND_BITNO32PREFIXED
:
4611 fields
->f_bitno32_prefixed
= value
;
4613 case M32C_OPERAND_BITNO32UNPREFIXED
:
4614 fields
->f_bitno32_unprefixed
= value
;
4616 case M32C_OPERAND_DSP_10_U6
:
4617 fields
->f_dsp_10_u6
= value
;
4619 case M32C_OPERAND_DSP_16_S16
:
4620 fields
->f_dsp_16_s16
= value
;
4622 case M32C_OPERAND_DSP_16_S8
:
4623 fields
->f_dsp_16_s8
= value
;
4625 case M32C_OPERAND_DSP_16_U16
:
4626 fields
->f_dsp_16_u16
= value
;
4628 case M32C_OPERAND_DSP_16_U20
:
4629 fields
->f_dsp_16_u24
= value
;
4631 case M32C_OPERAND_DSP_16_U24
:
4632 fields
->f_dsp_16_u24
= value
;
4634 case M32C_OPERAND_DSP_16_U8
:
4635 fields
->f_dsp_16_u8
= value
;
4637 case M32C_OPERAND_DSP_24_S16
:
4638 fields
->f_dsp_24_s16
= value
;
4640 case M32C_OPERAND_DSP_24_S8
:
4641 fields
->f_dsp_24_s8
= value
;
4643 case M32C_OPERAND_DSP_24_U16
:
4644 fields
->f_dsp_24_u16
= value
;
4646 case M32C_OPERAND_DSP_24_U20
:
4647 fields
->f_dsp_24_u24
= value
;
4649 case M32C_OPERAND_DSP_24_U24
:
4650 fields
->f_dsp_24_u24
= value
;
4652 case M32C_OPERAND_DSP_24_U8
:
4653 fields
->f_dsp_24_u8
= value
;
4655 case M32C_OPERAND_DSP_32_S16
:
4656 fields
->f_dsp_32_s16
= value
;
4658 case M32C_OPERAND_DSP_32_S8
:
4659 fields
->f_dsp_32_s8
= value
;
4661 case M32C_OPERAND_DSP_32_U16
:
4662 fields
->f_dsp_32_u16
= value
;
4664 case M32C_OPERAND_DSP_32_U20
:
4665 fields
->f_dsp_32_u24
= value
;
4667 case M32C_OPERAND_DSP_32_U24
:
4668 fields
->f_dsp_32_u24
= value
;
4670 case M32C_OPERAND_DSP_32_U8
:
4671 fields
->f_dsp_32_u8
= value
;
4673 case M32C_OPERAND_DSP_40_S16
:
4674 fields
->f_dsp_40_s16
= value
;
4676 case M32C_OPERAND_DSP_40_S8
:
4677 fields
->f_dsp_40_s8
= value
;
4679 case M32C_OPERAND_DSP_40_U16
:
4680 fields
->f_dsp_40_u16
= value
;
4682 case M32C_OPERAND_DSP_40_U24
:
4683 fields
->f_dsp_40_u24
= value
;
4685 case M32C_OPERAND_DSP_40_U8
:
4686 fields
->f_dsp_40_u8
= value
;
4688 case M32C_OPERAND_DSP_48_S16
:
4689 fields
->f_dsp_48_s16
= value
;
4691 case M32C_OPERAND_DSP_48_S8
:
4692 fields
->f_dsp_48_s8
= value
;
4694 case M32C_OPERAND_DSP_48_U16
:
4695 fields
->f_dsp_48_u16
= value
;
4697 case M32C_OPERAND_DSP_48_U24
:
4698 fields
->f_dsp_48_u24
= value
;
4700 case M32C_OPERAND_DSP_48_U8
:
4701 fields
->f_dsp_48_u8
= value
;
4703 case M32C_OPERAND_DSP_8_S8
:
4704 fields
->f_dsp_8_s8
= value
;
4706 case M32C_OPERAND_DSP_8_U16
:
4707 fields
->f_dsp_8_u16
= value
;
4709 case M32C_OPERAND_DSP_8_U6
:
4710 fields
->f_dsp_8_u6
= value
;
4712 case M32C_OPERAND_DSP_8_U8
:
4713 fields
->f_dsp_8_u8
= value
;
4715 case M32C_OPERAND_DST16AN
:
4716 fields
->f_dst16_an
= value
;
4718 case M32C_OPERAND_DST16AN_S
:
4719 fields
->f_dst16_an_s
= value
;
4721 case M32C_OPERAND_DST16ANHI
:
4722 fields
->f_dst16_an
= value
;
4724 case M32C_OPERAND_DST16ANQI
:
4725 fields
->f_dst16_an
= value
;
4727 case M32C_OPERAND_DST16ANQI_S
:
4728 fields
->f_dst16_rn_QI_s
= value
;
4730 case M32C_OPERAND_DST16ANSI
:
4731 fields
->f_dst16_an
= value
;
4733 case M32C_OPERAND_DST16RNEXTQI
:
4734 fields
->f_dst16_rn_ext
= value
;
4736 case M32C_OPERAND_DST16RNHI
:
4737 fields
->f_dst16_rn
= value
;
4739 case M32C_OPERAND_DST16RNQI
:
4740 fields
->f_dst16_rn
= value
;
4742 case M32C_OPERAND_DST16RNQI_S
:
4743 fields
->f_dst16_rn_QI_s
= value
;
4745 case M32C_OPERAND_DST16RNSI
:
4746 fields
->f_dst16_rn
= value
;
4748 case M32C_OPERAND_DST32ANEXTUNPREFIXED
:
4749 fields
->f_dst32_an_unprefixed
= value
;
4751 case M32C_OPERAND_DST32ANPREFIXED
:
4752 fields
->f_dst32_an_prefixed
= value
;
4754 case M32C_OPERAND_DST32ANPREFIXEDHI
:
4755 fields
->f_dst32_an_prefixed
= value
;
4757 case M32C_OPERAND_DST32ANPREFIXEDQI
:
4758 fields
->f_dst32_an_prefixed
= value
;
4760 case M32C_OPERAND_DST32ANPREFIXEDSI
:
4761 fields
->f_dst32_an_prefixed
= value
;
4763 case M32C_OPERAND_DST32ANUNPREFIXED
:
4764 fields
->f_dst32_an_unprefixed
= value
;
4766 case M32C_OPERAND_DST32ANUNPREFIXEDHI
:
4767 fields
->f_dst32_an_unprefixed
= value
;
4769 case M32C_OPERAND_DST32ANUNPREFIXEDQI
:
4770 fields
->f_dst32_an_unprefixed
= value
;
4772 case M32C_OPERAND_DST32ANUNPREFIXEDSI
:
4773 fields
->f_dst32_an_unprefixed
= value
;
4775 case M32C_OPERAND_DST32R0HI_S
:
4777 case M32C_OPERAND_DST32R0QI_S
:
4779 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI
:
4780 fields
->f_dst32_rn_ext_unprefixed
= value
;
4782 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI
:
4783 fields
->f_dst32_rn_ext_unprefixed
= value
;
4785 case M32C_OPERAND_DST32RNPREFIXEDHI
:
4786 fields
->f_dst32_rn_prefixed_HI
= value
;
4788 case M32C_OPERAND_DST32RNPREFIXEDQI
:
4789 fields
->f_dst32_rn_prefixed_QI
= value
;
4791 case M32C_OPERAND_DST32RNPREFIXEDSI
:
4792 fields
->f_dst32_rn_prefixed_SI
= value
;
4794 case M32C_OPERAND_DST32RNUNPREFIXEDHI
:
4795 fields
->f_dst32_rn_unprefixed_HI
= value
;
4797 case M32C_OPERAND_DST32RNUNPREFIXEDQI
:
4798 fields
->f_dst32_rn_unprefixed_QI
= value
;
4800 case M32C_OPERAND_DST32RNUNPREFIXEDSI
:
4801 fields
->f_dst32_rn_unprefixed_SI
= value
;
4803 case M32C_OPERAND_G
:
4805 case M32C_OPERAND_IMM_12_S4
:
4806 fields
->f_imm_12_s4
= value
;
4808 case M32C_OPERAND_IMM_13_U3
:
4809 fields
->f_imm_13_u3
= value
;
4811 case M32C_OPERAND_IMM_16_HI
:
4812 fields
->f_dsp_16_s16
= value
;
4814 case M32C_OPERAND_IMM_16_QI
:
4815 fields
->f_dsp_16_s8
= value
;
4817 case M32C_OPERAND_IMM_16_SI
:
4818 fields
->f_dsp_16_s32
= value
;
4820 case M32C_OPERAND_IMM_20_S4
:
4821 fields
->f_imm_20_s4
= value
;
4823 case M32C_OPERAND_IMM_24_HI
:
4824 fields
->f_dsp_24_s16
= value
;
4826 case M32C_OPERAND_IMM_24_QI
:
4827 fields
->f_dsp_24_s8
= value
;
4829 case M32C_OPERAND_IMM_24_SI
:
4830 fields
->f_dsp_24_s32
= value
;
4832 case M32C_OPERAND_IMM_32_HI
:
4833 fields
->f_dsp_32_s16
= value
;
4835 case M32C_OPERAND_IMM_32_QI
:
4836 fields
->f_dsp_32_s8
= value
;
4838 case M32C_OPERAND_IMM_32_SI
:
4839 fields
->f_dsp_32_s32
= value
;
4841 case M32C_OPERAND_IMM_40_HI
:
4842 fields
->f_dsp_40_s16
= value
;
4844 case M32C_OPERAND_IMM_40_QI
:
4845 fields
->f_dsp_40_s8
= value
;
4847 case M32C_OPERAND_IMM_40_SI
:
4848 fields
->f_dsp_40_s32
= value
;
4850 case M32C_OPERAND_IMM_48_HI
:
4851 fields
->f_dsp_48_s16
= value
;
4853 case M32C_OPERAND_IMM_48_QI
:
4854 fields
->f_dsp_48_s8
= value
;
4856 case M32C_OPERAND_IMM_48_SI
:
4857 fields
->f_dsp_48_s32
= value
;
4859 case M32C_OPERAND_IMM_56_HI
:
4860 fields
->f_dsp_56_s16
= value
;
4862 case M32C_OPERAND_IMM_56_QI
:
4863 fields
->f_dsp_56_s8
= value
;
4865 case M32C_OPERAND_IMM_64_HI
:
4866 fields
->f_dsp_64_s16
= value
;
4868 case M32C_OPERAND_IMM_8_HI
:
4869 fields
->f_dsp_8_s16
= value
;
4871 case M32C_OPERAND_IMM_8_QI
:
4872 fields
->f_dsp_8_s8
= value
;
4874 case M32C_OPERAND_IMM_8_S4
:
4875 fields
->f_imm_8_s4
= value
;
4877 case M32C_OPERAND_IMM_SH_12_S4
:
4878 fields
->f_imm_12_s4
= value
;
4880 case M32C_OPERAND_IMM_SH_20_S4
:
4881 fields
->f_imm_20_s4
= value
;
4883 case M32C_OPERAND_IMM_SH_8_S4
:
4884 fields
->f_imm_8_s4
= value
;
4886 case M32C_OPERAND_IMM1_S
:
4887 fields
->f_imm1_S
= value
;
4889 case M32C_OPERAND_IMM3_S
:
4890 fields
->f_imm3_S
= value
;
4892 case M32C_OPERAND_LAB_16_8
:
4893 fields
->f_lab_16_8
= value
;
4895 case M32C_OPERAND_LAB_24_8
:
4896 fields
->f_lab_24_8
= value
;
4898 case M32C_OPERAND_LAB_32_8
:
4899 fields
->f_lab_32_8
= value
;
4901 case M32C_OPERAND_LAB_40_8
:
4902 fields
->f_lab_40_8
= value
;
4904 case M32C_OPERAND_LAB_5_3
:
4905 fields
->f_lab_5_3
= value
;
4907 case M32C_OPERAND_LAB_8_16
:
4908 fields
->f_lab_8_16
= value
;
4910 case M32C_OPERAND_LAB_8_24
:
4911 fields
->f_lab_8_24
= value
;
4913 case M32C_OPERAND_LAB_8_8
:
4914 fields
->f_lab_8_8
= value
;
4916 case M32C_OPERAND_LAB32_JMP_S
:
4917 fields
->f_lab32_jmp_s
= value
;
4919 case M32C_OPERAND_Q
:
4921 case M32C_OPERAND_R0
:
4923 case M32C_OPERAND_R0H
:
4925 case M32C_OPERAND_R0L
:
4927 case M32C_OPERAND_R1
:
4929 case M32C_OPERAND_R1R2R0
:
4931 case M32C_OPERAND_R2
:
4933 case M32C_OPERAND_R2R0
:
4935 case M32C_OPERAND_R3
:
4937 case M32C_OPERAND_R3R1
:
4939 case M32C_OPERAND_REGSETPOP
:
4940 fields
->f_8_8
= value
;
4942 case M32C_OPERAND_REGSETPUSH
:
4943 fields
->f_8_8
= value
;
4945 case M32C_OPERAND_RN16_PUSH_S
:
4946 fields
->f_4_1
= value
;
4948 case M32C_OPERAND_S
:
4950 case M32C_OPERAND_SRC16AN
:
4951 fields
->f_src16_an
= value
;
4953 case M32C_OPERAND_SRC16ANHI
:
4954 fields
->f_src16_an
= value
;
4956 case M32C_OPERAND_SRC16ANQI
:
4957 fields
->f_src16_an
= value
;
4959 case M32C_OPERAND_SRC16RNHI
:
4960 fields
->f_src16_rn
= value
;
4962 case M32C_OPERAND_SRC16RNQI
:
4963 fields
->f_src16_rn
= value
;
4965 case M32C_OPERAND_SRC32ANPREFIXED
:
4966 fields
->f_src32_an_prefixed
= value
;
4968 case M32C_OPERAND_SRC32ANPREFIXEDHI
:
4969 fields
->f_src32_an_prefixed
= value
;
4971 case M32C_OPERAND_SRC32ANPREFIXEDQI
:
4972 fields
->f_src32_an_prefixed
= value
;
4974 case M32C_OPERAND_SRC32ANPREFIXEDSI
:
4975 fields
->f_src32_an_prefixed
= value
;
4977 case M32C_OPERAND_SRC32ANUNPREFIXED
:
4978 fields
->f_src32_an_unprefixed
= value
;
4980 case M32C_OPERAND_SRC32ANUNPREFIXEDHI
:
4981 fields
->f_src32_an_unprefixed
= value
;
4983 case M32C_OPERAND_SRC32ANUNPREFIXEDQI
:
4984 fields
->f_src32_an_unprefixed
= value
;
4986 case M32C_OPERAND_SRC32ANUNPREFIXEDSI
:
4987 fields
->f_src32_an_unprefixed
= value
;
4989 case M32C_OPERAND_SRC32RNPREFIXEDHI
:
4990 fields
->f_src32_rn_prefixed_HI
= value
;
4992 case M32C_OPERAND_SRC32RNPREFIXEDQI
:
4993 fields
->f_src32_rn_prefixed_QI
= value
;
4995 case M32C_OPERAND_SRC32RNPREFIXEDSI
:
4996 fields
->f_src32_rn_prefixed_SI
= value
;
4998 case M32C_OPERAND_SRC32RNUNPREFIXEDHI
:
4999 fields
->f_src32_rn_unprefixed_HI
= value
;
5001 case M32C_OPERAND_SRC32RNUNPREFIXEDQI
:
5002 fields
->f_src32_rn_unprefixed_QI
= value
;
5004 case M32C_OPERAND_SRC32RNUNPREFIXEDSI
:
5005 fields
->f_src32_rn_unprefixed_SI
= value
;
5007 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL
:
5008 fields
->f_5_1
= value
;
5010 case M32C_OPERAND_X
:
5012 case M32C_OPERAND_Z
:
5014 case M32C_OPERAND_COND16_16
:
5015 fields
->f_dsp_16_u8
= value
;
5017 case M32C_OPERAND_COND16_24
:
5018 fields
->f_dsp_24_u8
= value
;
5020 case M32C_OPERAND_COND16_32
:
5021 fields
->f_dsp_32_u8
= value
;
5023 case M32C_OPERAND_COND16C
:
5024 fields
->f_cond16
= value
;
5026 case M32C_OPERAND_COND16J
:
5027 fields
->f_cond16
= value
;
5029 case M32C_OPERAND_COND16J5
:
5030 fields
->f_cond16j_5
= value
;
5032 case M32C_OPERAND_COND32
:
5033 fields
->f_cond32
= value
;
5035 case M32C_OPERAND_COND32_16
:
5036 fields
->f_dsp_16_u8
= value
;
5038 case M32C_OPERAND_COND32_24
:
5039 fields
->f_dsp_24_u8
= value
;
5041 case M32C_OPERAND_COND32_32
:
5042 fields
->f_dsp_32_u8
= value
;
5044 case M32C_OPERAND_COND32_40
:
5045 fields
->f_dsp_40_u8
= value
;
5047 case M32C_OPERAND_COND32J
:
5048 fields
->f_cond32j
= value
;
5050 case M32C_OPERAND_CR1_PREFIXED_32
:
5051 fields
->f_21_3
= value
;
5053 case M32C_OPERAND_CR1_UNPREFIXED_32
:
5054 fields
->f_13_3
= value
;
5056 case M32C_OPERAND_CR16
:
5057 fields
->f_9_3
= value
;
5059 case M32C_OPERAND_CR2_32
:
5060 fields
->f_13_3
= value
;
5062 case M32C_OPERAND_CR3_PREFIXED_32
:
5063 fields
->f_21_3
= value
;
5065 case M32C_OPERAND_CR3_UNPREFIXED_32
:
5066 fields
->f_13_3
= value
;
5068 case M32C_OPERAND_FLAGS16
:
5069 fields
->f_9_3
= value
;
5071 case M32C_OPERAND_FLAGS32
:
5072 fields
->f_13_3
= value
;
5074 case M32C_OPERAND_SCCOND32
:
5075 fields
->f_cond16
= value
;
5077 case M32C_OPERAND_SIZE
:
5081 /* xgettext:c-format */
5082 fprintf (stderr
, _("Unrecognized field %d while setting vma operand.\n"),
5088 /* Function to call before using the instruction builder tables. */
5091 m32c_cgen_init_ibld_table (cd
)
5094 cd
->insert_handlers
= & m32c_cgen_insert_handlers
[0];
5095 cd
->extract_handlers
= & m32c_cgen_extract_handlers
[0];
5097 cd
->insert_operand
= m32c_cgen_insert_operand
;
5098 cd
->extract_operand
= m32c_cgen_extract_operand
;
5100 cd
->get_int_operand
= m32c_cgen_get_int_operand
;
5101 cd
->set_int_operand
= m32c_cgen_set_int_operand
;
5102 cd
->get_vma_operand
= m32c_cgen_get_vma_operand
;
5103 cd
->set_vma_operand
= m32c_cgen_set_vma_operand
;