1 /* DO NOT EDIT! -*- buffer-read-only: t -*- vi:set ro: */
2 /* Instruction building/extraction support for m32c. -*- C -*-
4 THIS FILE IS MACHINE GENERATED WITH CGEN: Cpu tools GENerator.
5 - the resultant file is machine generated, cgen-ibld.in isn't
7 Copyright (C) 1996-2020 Free Software Foundation, Inc.
9 This file is part of libopcodes.
11 This library is free software; you can redistribute it and/or modify
12 it under the terms of the GNU General Public License as published by
13 the Free Software Foundation; either version 3, or (at your option)
16 It is distributed in the hope that it will be useful, but WITHOUT
17 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
18 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
19 License for more details.
21 You should have received a copy of the GNU General Public License
22 along with this program; if not, write to the Free Software Foundation, Inc.,
23 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
25 /* ??? Eventually more and more of this stuff can go to cpu-independent files.
34 #include "m32c-desc.h"
36 #include "cgen/basic-modes.h"
38 #include "safe-ctype.h"
41 #define min(a,b) ((a) < (b) ? (a) : (b))
43 #define max(a,b) ((a) > (b) ? (a) : (b))
45 /* Used by the ifield rtx function. */
46 #define FLD(f) (fields->f)
48 static const char * insert_normal
49 (CGEN_CPU_DESC
, long, unsigned int, unsigned int, unsigned int,
50 unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR
);
51 static const char * insert_insn_normal
52 (CGEN_CPU_DESC
, const CGEN_INSN
*,
53 CGEN_FIELDS
*, CGEN_INSN_BYTES_PTR
, bfd_vma
);
54 static int extract_normal
55 (CGEN_CPU_DESC
, CGEN_EXTRACT_INFO
*, CGEN_INSN_INT
,
56 unsigned int, unsigned int, unsigned int, unsigned int,
57 unsigned int, unsigned int, bfd_vma
, long *);
58 static int extract_insn_normal
59 (CGEN_CPU_DESC
, const CGEN_INSN
*, CGEN_EXTRACT_INFO
*,
60 CGEN_INSN_INT
, CGEN_FIELDS
*, bfd_vma
);
62 static void put_insn_int_value
63 (CGEN_CPU_DESC
, CGEN_INSN_BYTES_PTR
, int, int, CGEN_INSN_INT
);
66 static CGEN_INLINE
void insert_1
67 (CGEN_CPU_DESC
, unsigned long, int, int, int, unsigned char *);
68 static CGEN_INLINE
int fill_cache
69 (CGEN_CPU_DESC
, CGEN_EXTRACT_INFO
*, int, int, bfd_vma
);
70 static CGEN_INLINE
long extract_1
71 (CGEN_CPU_DESC
, CGEN_EXTRACT_INFO
*, int, int, int, unsigned char *, bfd_vma
);
74 /* Operand insertion. */
78 /* Subroutine of insert_normal. */
80 static CGEN_INLINE
void
81 insert_1 (CGEN_CPU_DESC cd
,
91 x
= cgen_get_insn_value (cd
, bufp
, word_length
, cd
->endian
);
93 /* Written this way to avoid undefined behaviour. */
94 mask
= (((1L << (length
- 1)) - 1) << 1) | 1;
96 shift
= (start
+ 1) - length
;
98 shift
= (word_length
- (start
+ length
));
99 x
= (x
& ~(mask
<< shift
)) | ((value
& mask
) << shift
);
101 cgen_put_insn_value (cd
, bufp
, word_length
, (bfd_vma
) x
, cd
->endian
);
104 #endif /* ! CGEN_INT_INSN_P */
106 /* Default insertion routine.
108 ATTRS is a mask of the boolean attributes.
109 WORD_OFFSET is the offset in bits from the start of the insn of the value.
110 WORD_LENGTH is the length of the word in bits in which the value resides.
111 START is the starting bit number in the word, architecture origin.
112 LENGTH is the length of VALUE in bits.
113 TOTAL_LENGTH is the total length of the insn in bits.
115 The result is an error message or NULL if success. */
117 /* ??? This duplicates functionality with bfd's howto table and
118 bfd_install_relocation. */
119 /* ??? This doesn't handle bfd_vma's. Create another function when
123 insert_normal (CGEN_CPU_DESC cd
,
126 unsigned int word_offset
,
129 unsigned int word_length
,
130 unsigned int total_length
,
131 CGEN_INSN_BYTES_PTR buffer
)
133 static char errbuf
[100];
134 /* Written this way to avoid undefined behaviour. */
135 unsigned long mask
= (((1L << (length
- 1)) - 1) << 1) | 1;
137 /* If LENGTH is zero, this operand doesn't contribute to the value. */
141 if (word_length
> 8 * sizeof (CGEN_INSN_INT
))
144 /* For architectures with insns smaller than the base-insn-bitsize,
145 word_length may be too big. */
146 if (cd
->min_insn_bitsize
< cd
->base_insn_bitsize
)
149 && word_length
> total_length
)
150 word_length
= total_length
;
153 /* Ensure VALUE will fit. */
154 if (CGEN_BOOL_ATTR (attrs
, CGEN_IFLD_SIGN_OPT
))
156 long minval
= - (1L << (length
- 1));
157 unsigned long maxval
= mask
;
159 if ((value
> 0 && (unsigned long) value
> maxval
)
162 /* xgettext:c-format */
164 _("operand out of range (%ld not between %ld and %lu)"),
165 value
, minval
, maxval
);
169 else if (! CGEN_BOOL_ATTR (attrs
, CGEN_IFLD_SIGNED
))
171 unsigned long maxval
= mask
;
172 unsigned long val
= (unsigned long) value
;
174 /* For hosts with a word size > 32 check to see if value has been sign
175 extended beyond 32 bits. If so then ignore these higher sign bits
176 as the user is attempting to store a 32-bit signed value into an
177 unsigned 32-bit field which is allowed. */
178 if (sizeof (unsigned long) > 4 && ((value
>> 32) == -1))
183 /* xgettext:c-format */
185 _("operand out of range (0x%lx not between 0 and 0x%lx)"),
192 if (! cgen_signed_overflow_ok_p (cd
))
194 long minval
= - (1L << (length
- 1));
195 long maxval
= (1L << (length
- 1)) - 1;
197 if (value
< minval
|| value
> maxval
)
200 /* xgettext:c-format */
201 (errbuf
, _("operand out of range (%ld not between %ld and %ld)"),
202 value
, minval
, maxval
);
211 int shift_within_word
, shift_to_word
, shift
;
213 /* How to shift the value to BIT0 of the word. */
214 shift_to_word
= total_length
- (word_offset
+ word_length
);
216 /* How to shift the value to the field within the word. */
217 if (CGEN_INSN_LSB0_P
)
218 shift_within_word
= start
+ 1 - length
;
220 shift_within_word
= word_length
- start
- length
;
222 /* The total SHIFT, then mask in the value. */
223 shift
= shift_to_word
+ shift_within_word
;
224 *buffer
= (*buffer
& ~(mask
<< shift
)) | ((value
& mask
) << shift
);
227 #else /* ! CGEN_INT_INSN_P */
230 unsigned char *bufp
= (unsigned char *) buffer
+ word_offset
/ 8;
232 insert_1 (cd
, value
, start
, length
, word_length
, bufp
);
235 #endif /* ! CGEN_INT_INSN_P */
240 /* Default insn builder (insert handler).
241 The instruction is recorded in CGEN_INT_INSN_P byte order (meaning
242 that if CGEN_INSN_BYTES_PTR is an int * and thus, the value is
243 recorded in host byte order, otherwise BUFFER is an array of bytes
244 and the value is recorded in target byte order).
245 The result is an error message or NULL if success. */
248 insert_insn_normal (CGEN_CPU_DESC cd
,
249 const CGEN_INSN
* insn
,
250 CGEN_FIELDS
* fields
,
251 CGEN_INSN_BYTES_PTR buffer
,
254 const CGEN_SYNTAX
*syntax
= CGEN_INSN_SYNTAX (insn
);
256 const CGEN_SYNTAX_CHAR_TYPE
* syn
;
258 CGEN_INIT_INSERT (cd
);
259 value
= CGEN_INSN_BASE_VALUE (insn
);
261 /* If we're recording insns as numbers (rather than a string of bytes),
262 target byte order handling is deferred until later. */
266 put_insn_int_value (cd
, buffer
, cd
->base_insn_bitsize
,
267 CGEN_FIELDS_BITSIZE (fields
), value
);
271 cgen_put_insn_value (cd
, buffer
, min ((unsigned) cd
->base_insn_bitsize
,
272 (unsigned) CGEN_FIELDS_BITSIZE (fields
)),
273 value
, cd
->insn_endian
);
275 #endif /* ! CGEN_INT_INSN_P */
277 /* ??? It would be better to scan the format's fields.
278 Still need to be able to insert a value based on the operand though;
279 e.g. storing a branch displacement that got resolved later.
280 Needs more thought first. */
282 for (syn
= CGEN_SYNTAX_STRING (syntax
); * syn
; ++ syn
)
286 if (CGEN_SYNTAX_CHAR_P (* syn
))
289 errmsg
= (* cd
->insert_operand
) (cd
, CGEN_SYNTAX_FIELD (*syn
),
299 /* Cover function to store an insn value into an integral insn. Must go here
300 because it needs <prefix>-desc.h for CGEN_INT_INSN_P. */
303 put_insn_int_value (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED
,
304 CGEN_INSN_BYTES_PTR buf
,
309 /* For architectures with insns smaller than the base-insn-bitsize,
310 length may be too big. */
311 if (length
> insn_length
)
315 int shift
= insn_length
- length
;
316 /* Written this way to avoid undefined behaviour. */
317 CGEN_INSN_INT mask
= (((1L << (length
- 1)) - 1) << 1) | 1;
319 *buf
= (*buf
& ~(mask
<< shift
)) | ((value
& mask
) << shift
);
324 /* Operand extraction. */
326 #if ! CGEN_INT_INSN_P
328 /* Subroutine of extract_normal.
329 Ensure sufficient bytes are cached in EX_INFO.
330 OFFSET is the offset in bytes from the start of the insn of the value.
331 BYTES is the length of the needed value.
332 Returns 1 for success, 0 for failure. */
334 static CGEN_INLINE
int
335 fill_cache (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED
,
336 CGEN_EXTRACT_INFO
*ex_info
,
341 /* It's doubtful that the middle part has already been fetched so
342 we don't optimize that case. kiss. */
344 disassemble_info
*info
= (disassemble_info
*) ex_info
->dis_info
;
346 /* First do a quick check. */
347 mask
= (1 << bytes
) - 1;
348 if (((ex_info
->valid
>> offset
) & mask
) == mask
)
351 /* Search for the first byte we need to read. */
352 for (mask
= 1 << offset
; bytes
> 0; --bytes
, ++offset
, mask
<<= 1)
353 if (! (mask
& ex_info
->valid
))
361 status
= (*info
->read_memory_func
)
362 (pc
, ex_info
->insn_bytes
+ offset
, bytes
, info
);
366 (*info
->memory_error_func
) (status
, pc
, info
);
370 ex_info
->valid
|= ((1 << bytes
) - 1) << offset
;
376 /* Subroutine of extract_normal. */
378 static CGEN_INLINE
long
379 extract_1 (CGEN_CPU_DESC cd
,
380 CGEN_EXTRACT_INFO
*ex_info ATTRIBUTE_UNUSED
,
385 bfd_vma pc ATTRIBUTE_UNUSED
)
390 x
= cgen_get_insn_value (cd
, bufp
, word_length
, cd
->endian
);
392 if (CGEN_INSN_LSB0_P
)
393 shift
= (start
+ 1) - length
;
395 shift
= (word_length
- (start
+ length
));
399 #endif /* ! CGEN_INT_INSN_P */
401 /* Default extraction routine.
403 INSN_VALUE is the first base_insn_bitsize bits of the insn in host order,
404 or sometimes less for cases like the m32r where the base insn size is 32
405 but some insns are 16 bits.
406 ATTRS is a mask of the boolean attributes. We only need `SIGNED',
407 but for generality we take a bitmask of all of them.
408 WORD_OFFSET is the offset in bits from the start of the insn of the value.
409 WORD_LENGTH is the length of the word in bits in which the value resides.
410 START is the starting bit number in the word, architecture origin.
411 LENGTH is the length of VALUE in bits.
412 TOTAL_LENGTH is the total length of the insn in bits.
414 Returns 1 for success, 0 for failure. */
416 /* ??? The return code isn't properly used. wip. */
418 /* ??? This doesn't handle bfd_vma's. Create another function when
422 extract_normal (CGEN_CPU_DESC cd
,
423 #if ! CGEN_INT_INSN_P
424 CGEN_EXTRACT_INFO
*ex_info
,
426 CGEN_EXTRACT_INFO
*ex_info ATTRIBUTE_UNUSED
,
428 CGEN_INSN_INT insn_value
,
430 unsigned int word_offset
,
433 unsigned int word_length
,
434 unsigned int total_length
,
435 #if ! CGEN_INT_INSN_P
438 bfd_vma pc ATTRIBUTE_UNUSED
,
444 /* If LENGTH is zero, this operand doesn't contribute to the value
445 so give it a standard value of zero. */
452 if (word_length
> 8 * sizeof (CGEN_INSN_INT
))
455 /* For architectures with insns smaller than the insn-base-bitsize,
456 word_length may be too big. */
457 if (cd
->min_insn_bitsize
< cd
->base_insn_bitsize
)
459 if (word_offset
+ word_length
> total_length
)
460 word_length
= total_length
- word_offset
;
463 /* Does the value reside in INSN_VALUE, and at the right alignment? */
465 if (CGEN_INT_INSN_P
|| (word_offset
== 0 && word_length
== total_length
))
467 if (CGEN_INSN_LSB0_P
)
468 value
= insn_value
>> ((word_offset
+ start
+ 1) - length
);
470 value
= insn_value
>> (total_length
- ( word_offset
+ start
+ length
));
473 #if ! CGEN_INT_INSN_P
477 unsigned char *bufp
= ex_info
->insn_bytes
+ word_offset
/ 8;
479 if (word_length
> 8 * sizeof (CGEN_INSN_INT
))
482 if (fill_cache (cd
, ex_info
, word_offset
/ 8, word_length
/ 8, pc
) == 0)
488 value
= extract_1 (cd
, ex_info
, start
, length
, word_length
, bufp
, pc
);
491 #endif /* ! CGEN_INT_INSN_P */
493 /* Written this way to avoid undefined behaviour. */
494 mask
= (((1L << (length
- 1)) - 1) << 1) | 1;
498 if (CGEN_BOOL_ATTR (attrs
, CGEN_IFLD_SIGNED
)
499 && (value
& (1L << (length
- 1))))
507 /* Default insn extractor.
509 INSN_VALUE is the first base_insn_bitsize bits, translated to host order.
510 The extracted fields are stored in FIELDS.
511 EX_INFO is used to handle reading variable length insns.
512 Return the length of the insn in bits, or 0 if no match,
513 or -1 if an error occurs fetching data (memory_error_func will have
517 extract_insn_normal (CGEN_CPU_DESC cd
,
518 const CGEN_INSN
*insn
,
519 CGEN_EXTRACT_INFO
*ex_info
,
520 CGEN_INSN_INT insn_value
,
524 const CGEN_SYNTAX
*syntax
= CGEN_INSN_SYNTAX (insn
);
525 const CGEN_SYNTAX_CHAR_TYPE
*syn
;
527 CGEN_FIELDS_BITSIZE (fields
) = CGEN_INSN_BITSIZE (insn
);
529 CGEN_INIT_EXTRACT (cd
);
531 for (syn
= CGEN_SYNTAX_STRING (syntax
); *syn
; ++syn
)
535 if (CGEN_SYNTAX_CHAR_P (*syn
))
538 length
= (* cd
->extract_operand
) (cd
, CGEN_SYNTAX_FIELD (*syn
),
539 ex_info
, insn_value
, fields
, pc
);
544 /* We recognized and successfully extracted this insn. */
545 return CGEN_INSN_BITSIZE (insn
);
548 /* Machine generated code added here. */
550 const char * m32c_cgen_insert_operand
551 (CGEN_CPU_DESC
, int, CGEN_FIELDS
*, CGEN_INSN_BYTES_PTR
, bfd_vma
);
553 /* Main entry point for operand insertion.
555 This function is basically just a big switch statement. Earlier versions
556 used tables to look up the function to use, but
557 - if the table contains both assembler and disassembler functions then
558 the disassembler contains much of the assembler and vice-versa,
559 - there's a lot of inlining possibilities as things grow,
560 - using a switch statement avoids the function call overhead.
562 This function could be moved into `parse_insn_normal', but keeping it
563 separate makes clear the interface between `parse_insn_normal' and each of
564 the handlers. It's also needed by GAS to insert operands that couldn't be
565 resolved during parsing. */
568 m32c_cgen_insert_operand (CGEN_CPU_DESC cd
,
570 CGEN_FIELDS
* fields
,
571 CGEN_INSN_BYTES_PTR buffer
,
572 bfd_vma pc ATTRIBUTE_UNUSED
)
574 const char * errmsg
= NULL
;
575 unsigned int total_length
= CGEN_FIELDS_BITSIZE (fields
);
579 case M32C_OPERAND_A0
:
581 case M32C_OPERAND_A1
:
583 case M32C_OPERAND_AN16_PUSH_S
:
584 errmsg
= insert_normal (cd
, fields
->f_4_1
, 0, 0, 4, 1, 32, total_length
, buffer
);
586 case M32C_OPERAND_BIT16AN
:
587 errmsg
= insert_normal (cd
, fields
->f_dst16_an
, 0, 0, 15, 1, 32, total_length
, buffer
);
589 case M32C_OPERAND_BIT16RN
:
590 errmsg
= insert_normal (cd
, fields
->f_dst16_rn
, 0, 0, 14, 2, 32, total_length
, buffer
);
592 case M32C_OPERAND_BIT3_S
:
595 FLD (f_7_1
) = ((((FLD (f_imm3_S
)) - (1))) & (1));
596 FLD (f_2_2
) = ((((UINT
) (((FLD (f_imm3_S
)) - (1))) >> (1))) & (3));
598 errmsg
= insert_normal (cd
, fields
->f_2_2
, 0, 0, 2, 2, 32, total_length
, buffer
);
601 errmsg
= insert_normal (cd
, fields
->f_7_1
, 0, 0, 7, 1, 32, total_length
, buffer
);
606 case M32C_OPERAND_BIT32ANPREFIXED
:
607 errmsg
= insert_normal (cd
, fields
->f_dst32_an_prefixed
, 0, 0, 17, 1, 32, total_length
, buffer
);
609 case M32C_OPERAND_BIT32ANUNPREFIXED
:
610 errmsg
= insert_normal (cd
, fields
->f_dst32_an_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
612 case M32C_OPERAND_BIT32RNPREFIXED
:
614 long value
= fields
->f_dst32_rn_prefixed_QI
;
615 value
= (((((~ (((value
) << (1))))) & (2))) | (((((USI
) (value
) >> (1))) & (1))));
616 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 2, 32, total_length
, buffer
);
619 case M32C_OPERAND_BIT32RNUNPREFIXED
:
621 long value
= fields
->f_dst32_rn_unprefixed_QI
;
622 value
= (((((~ (((value
) << (1))))) & (2))) | (((((USI
) (value
) >> (1))) & (1))));
623 errmsg
= insert_normal (cd
, value
, 0, 0, 8, 2, 32, total_length
, buffer
);
626 case M32C_OPERAND_BITBASE16_16_S8
:
627 errmsg
= insert_normal (cd
, fields
->f_dsp_16_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 8, 32, total_length
, buffer
);
629 case M32C_OPERAND_BITBASE16_16_U16
:
631 long value
= fields
->f_dsp_16_u16
;
632 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
633 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
636 case M32C_OPERAND_BITBASE16_16_U8
:
637 errmsg
= insert_normal (cd
, fields
->f_dsp_16_u8
, 0, 0, 16, 8, 32, total_length
, buffer
);
639 case M32C_OPERAND_BITBASE16_8_U11_S
:
642 FLD (f_bitno16_S
) = ((FLD (f_bitbase16_u11_S
)) & (7));
643 FLD (f_dsp_8_u8
) = ((((UINT
) (FLD (f_bitbase16_u11_S
)) >> (3))) & (255));
645 errmsg
= insert_normal (cd
, fields
->f_bitno16_S
, 0, 0, 5, 3, 32, total_length
, buffer
);
648 errmsg
= insert_normal (cd
, fields
->f_dsp_8_u8
, 0, 0, 8, 8, 32, total_length
, buffer
);
653 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED
:
656 FLD (f_bitno32_unprefixed
) = ((FLD (f_bitbase32_16_s11_unprefixed
)) & (7));
657 FLD (f_dsp_16_s8
) = ((INT
) (FLD (f_bitbase32_16_s11_unprefixed
)) >> (3));
659 errmsg
= insert_normal (cd
, fields
->f_bitno32_unprefixed
, 0, 0, 13, 3, 32, total_length
, buffer
);
662 errmsg
= insert_normal (cd
, fields
->f_dsp_16_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 8, 32, total_length
, buffer
);
667 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED
:
670 FLD (f_bitno32_unprefixed
) = ((FLD (f_bitbase32_16_s19_unprefixed
)) & (7));
671 FLD (f_dsp_16_s16
) = ((INT
) (FLD (f_bitbase32_16_s19_unprefixed
)) >> (3));
673 errmsg
= insert_normal (cd
, fields
->f_bitno32_unprefixed
, 0, 0, 13, 3, 32, total_length
, buffer
);
677 long value
= fields
->f_dsp_16_s16
;
678 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
679 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 16, 32, total_length
, buffer
);
685 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED
:
688 FLD (f_bitno32_unprefixed
) = ((FLD (f_bitbase32_16_u11_unprefixed
)) & (7));
689 FLD (f_dsp_16_u8
) = ((((UINT
) (FLD (f_bitbase32_16_u11_unprefixed
)) >> (3))) & (255));
691 errmsg
= insert_normal (cd
, fields
->f_bitno32_unprefixed
, 0, 0, 13, 3, 32, total_length
, buffer
);
694 errmsg
= insert_normal (cd
, fields
->f_dsp_16_u8
, 0, 0, 16, 8, 32, total_length
, buffer
);
699 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED
:
702 FLD (f_bitno32_unprefixed
) = ((FLD (f_bitbase32_16_u19_unprefixed
)) & (7));
703 FLD (f_dsp_16_u16
) = ((((UINT
) (FLD (f_bitbase32_16_u19_unprefixed
)) >> (3))) & (65535));
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
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
711 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
717 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED
:
720 FLD (f_bitno32_unprefixed
) = ((FLD (f_bitbase32_16_u27_unprefixed
)) & (7));
721 FLD (f_dsp_16_u16
) = ((((UINT
) (FLD (f_bitbase32_16_u27_unprefixed
)) >> (3))) & (65535));
722 FLD (f_dsp_32_u8
) = ((((UINT
) (FLD (f_bitbase32_16_u27_unprefixed
)) >> (19))) & (255));
724 errmsg
= insert_normal (cd
, fields
->f_bitno32_unprefixed
, 0, 0, 13, 3, 32, total_length
, buffer
);
728 long value
= fields
->f_dsp_16_u16
;
729 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
730 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
734 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
739 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED
:
742 FLD (f_bitno32_prefixed
) = ((FLD (f_bitbase32_24_s11_prefixed
)) & (7));
743 FLD (f_dsp_24_s8
) = ((INT
) (FLD (f_bitbase32_24_s11_prefixed
)) >> (3));
745 errmsg
= insert_normal (cd
, fields
->f_bitno32_prefixed
, 0, 0, 21, 3, 32, total_length
, buffer
);
748 errmsg
= insert_normal (cd
, fields
->f_dsp_24_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 24, 8, 32, total_length
, buffer
);
753 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED
:
756 FLD (f_bitno32_prefixed
) = ((FLD (f_bitbase32_24_s19_prefixed
)) & (7));
757 FLD (f_dsp_24_u8
) = ((((UINT
) (FLD (f_bitbase32_24_s19_prefixed
)) >> (3))) & (255));
758 FLD (f_dsp_32_s8
) = ((INT
) (FLD (f_bitbase32_24_s19_prefixed
)) >> (11));
760 errmsg
= insert_normal (cd
, fields
->f_bitno32_prefixed
, 0, 0, 21, 3, 32, total_length
, buffer
);
763 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
766 errmsg
= insert_normal (cd
, fields
->f_dsp_32_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 8, 32, total_length
, buffer
);
771 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED
:
774 FLD (f_bitno32_prefixed
) = ((FLD (f_bitbase32_24_u11_prefixed
)) & (7));
775 FLD (f_dsp_24_u8
) = ((((UINT
) (FLD (f_bitbase32_24_u11_prefixed
)) >> (3))) & (255));
777 errmsg
= insert_normal (cd
, fields
->f_bitno32_prefixed
, 0, 0, 21, 3, 32, total_length
, buffer
);
780 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
785 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED
:
788 FLD (f_bitno32_prefixed
) = ((FLD (f_bitbase32_24_u19_prefixed
)) & (7));
789 FLD (f_dsp_24_u8
) = ((((UINT
) (FLD (f_bitbase32_24_u19_prefixed
)) >> (3))) & (255));
790 FLD (f_dsp_32_u8
) = ((((UINT
) (FLD (f_bitbase32_24_u19_prefixed
)) >> (11))) & (255));
792 errmsg
= insert_normal (cd
, fields
->f_bitno32_prefixed
, 0, 0, 21, 3, 32, total_length
, buffer
);
795 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
798 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
803 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED
:
806 FLD (f_bitno32_prefixed
) = ((FLD (f_bitbase32_24_u27_prefixed
)) & (7));
807 FLD (f_dsp_24_u8
) = ((((UINT
) (FLD (f_bitbase32_24_u27_prefixed
)) >> (3))) & (255));
808 FLD (f_dsp_32_u16
) = ((((UINT
) (FLD (f_bitbase32_24_u27_prefixed
)) >> (11))) & (65535));
810 errmsg
= insert_normal (cd
, fields
->f_bitno32_prefixed
, 0, 0, 21, 3, 32, total_length
, buffer
);
813 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
817 long value
= fields
->f_dsp_32_u16
;
818 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
819 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 16, 32, total_length
, buffer
);
825 case M32C_OPERAND_BITNO16R
:
826 errmsg
= insert_normal (cd
, fields
->f_dsp_16_u8
, 0, 0, 16, 8, 32, total_length
, buffer
);
828 case M32C_OPERAND_BITNO32PREFIXED
:
829 errmsg
= insert_normal (cd
, fields
->f_bitno32_prefixed
, 0, 0, 21, 3, 32, total_length
, buffer
);
831 case M32C_OPERAND_BITNO32UNPREFIXED
:
832 errmsg
= insert_normal (cd
, fields
->f_bitno32_unprefixed
, 0, 0, 13, 3, 32, total_length
, buffer
);
834 case M32C_OPERAND_DSP_10_U6
:
835 errmsg
= insert_normal (cd
, fields
->f_dsp_10_u6
, 0, 0, 10, 6, 32, total_length
, buffer
);
837 case M32C_OPERAND_DSP_16_S16
:
839 long value
= fields
->f_dsp_16_s16
;
840 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
841 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 16, 32, total_length
, buffer
);
844 case M32C_OPERAND_DSP_16_S8
:
845 errmsg
= insert_normal (cd
, fields
->f_dsp_16_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 8, 32, total_length
, buffer
);
847 case M32C_OPERAND_DSP_16_U16
:
849 long value
= fields
->f_dsp_16_u16
;
850 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
851 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
854 case M32C_OPERAND_DSP_16_U20
:
857 FLD (f_dsp_16_u16
) = ((FLD (f_dsp_16_u24
)) & (65535));
858 FLD (f_dsp_32_u8
) = ((((UINT
) (FLD (f_dsp_16_u24
)) >> (16))) & (255));
861 long value
= fields
->f_dsp_16_u16
;
862 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
863 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
867 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
872 case M32C_OPERAND_DSP_16_U24
:
875 FLD (f_dsp_16_u16
) = ((FLD (f_dsp_16_u24
)) & (65535));
876 FLD (f_dsp_32_u8
) = ((((UINT
) (FLD (f_dsp_16_u24
)) >> (16))) & (255));
879 long value
= fields
->f_dsp_16_u16
;
880 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
881 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
885 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
890 case M32C_OPERAND_DSP_16_U8
:
891 errmsg
= insert_normal (cd
, fields
->f_dsp_16_u8
, 0, 0, 16, 8, 32, total_length
, buffer
);
893 case M32C_OPERAND_DSP_24_S16
:
896 FLD (f_dsp_24_u8
) = ((FLD (f_dsp_24_s16
)) & (255));
897 FLD (f_dsp_32_u8
) = ((((UINT
) (FLD (f_dsp_24_s16
)) >> (8))) & (255));
899 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
902 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
907 case M32C_OPERAND_DSP_24_S8
:
908 errmsg
= insert_normal (cd
, fields
->f_dsp_24_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 24, 8, 32, total_length
, buffer
);
910 case M32C_OPERAND_DSP_24_U16
:
913 FLD (f_dsp_24_u8
) = ((FLD (f_dsp_24_u16
)) & (255));
914 FLD (f_dsp_32_u8
) = ((((UINT
) (FLD (f_dsp_24_u16
)) >> (8))) & (255));
916 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
919 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
924 case M32C_OPERAND_DSP_24_U20
:
927 FLD (f_dsp_24_u8
) = ((FLD (f_dsp_24_u24
)) & (255));
928 FLD (f_dsp_32_u16
) = ((((UINT
) (FLD (f_dsp_24_u24
)) >> (8))) & (65535));
930 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
934 long value
= fields
->f_dsp_32_u16
;
935 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
936 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 16, 32, total_length
, buffer
);
942 case M32C_OPERAND_DSP_24_U24
:
945 FLD (f_dsp_24_u8
) = ((FLD (f_dsp_24_u24
)) & (255));
946 FLD (f_dsp_32_u16
) = ((((UINT
) (FLD (f_dsp_24_u24
)) >> (8))) & (65535));
948 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
952 long value
= fields
->f_dsp_32_u16
;
953 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
954 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 16, 32, total_length
, buffer
);
960 case M32C_OPERAND_DSP_24_U8
:
961 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
963 case M32C_OPERAND_DSP_32_S16
:
965 long value
= fields
->f_dsp_32_s16
;
966 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
967 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 16, 32, total_length
, buffer
);
970 case M32C_OPERAND_DSP_32_S8
:
971 errmsg
= insert_normal (cd
, fields
->f_dsp_32_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 8, 32, total_length
, buffer
);
973 case M32C_OPERAND_DSP_32_U16
:
975 long value
= fields
->f_dsp_32_u16
;
976 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
977 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 16, 32, total_length
, buffer
);
980 case M32C_OPERAND_DSP_32_U20
:
982 long value
= fields
->f_dsp_32_u24
;
983 value
= ((((((((USI
) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
984 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 24, 32, total_length
, buffer
);
987 case M32C_OPERAND_DSP_32_U24
:
989 long value
= fields
->f_dsp_32_u24
;
990 value
= ((((((((USI
) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
991 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 24, 32, total_length
, buffer
);
994 case M32C_OPERAND_DSP_32_U8
:
995 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
997 case M32C_OPERAND_DSP_40_S16
:
999 long value
= fields
->f_dsp_40_s16
;
1000 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
1001 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 8, 16, 32, total_length
, buffer
);
1004 case M32C_OPERAND_DSP_40_S8
:
1005 errmsg
= insert_normal (cd
, fields
->f_dsp_40_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 8, 8, 32, total_length
, buffer
);
1007 case M32C_OPERAND_DSP_40_U16
:
1009 long value
= fields
->f_dsp_40_u16
;
1010 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
1011 errmsg
= insert_normal (cd
, value
, 0, 32, 8, 16, 32, total_length
, buffer
);
1014 case M32C_OPERAND_DSP_40_U20
:
1016 long value
= fields
->f_dsp_40_u20
;
1017 value
= ((((((((USI
) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (983040))));
1018 errmsg
= insert_normal (cd
, value
, 0, 32, 8, 20, 32, total_length
, buffer
);
1021 case M32C_OPERAND_DSP_40_U24
:
1023 long value
= fields
->f_dsp_40_u24
;
1024 value
= ((((((((USI
) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
1025 errmsg
= insert_normal (cd
, value
, 0, 32, 8, 24, 32, total_length
, buffer
);
1028 case M32C_OPERAND_DSP_40_U8
:
1029 errmsg
= insert_normal (cd
, fields
->f_dsp_40_u8
, 0, 32, 8, 8, 32, total_length
, buffer
);
1031 case M32C_OPERAND_DSP_48_S16
:
1033 long value
= fields
->f_dsp_48_s16
;
1034 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
1035 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 16, 16, 32, total_length
, buffer
);
1038 case M32C_OPERAND_DSP_48_S8
:
1039 errmsg
= insert_normal (cd
, fields
->f_dsp_48_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 16, 8, 32, total_length
, buffer
);
1041 case M32C_OPERAND_DSP_48_U16
:
1043 long value
= fields
->f_dsp_48_u16
;
1044 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
1045 errmsg
= insert_normal (cd
, value
, 0, 32, 16, 16, 32, total_length
, buffer
);
1048 case M32C_OPERAND_DSP_48_U20
:
1051 FLD (f_dsp_64_u8
) = ((((UINT
) (FLD (f_dsp_48_u20
)) >> (16))) & (15));
1052 FLD (f_dsp_48_u16
) = ((FLD (f_dsp_48_u20
)) & (65535));
1055 long value
= fields
->f_dsp_48_u16
;
1056 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
1057 errmsg
= insert_normal (cd
, value
, 0, 32, 16, 16, 32, total_length
, buffer
);
1061 errmsg
= insert_normal (cd
, fields
->f_dsp_64_u8
, 0, 64, 0, 8, 32, total_length
, buffer
);
1066 case M32C_OPERAND_DSP_48_U24
:
1069 FLD (f_dsp_64_u8
) = ((((UINT
) (FLD (f_dsp_48_u24
)) >> (16))) & (255));
1070 FLD (f_dsp_48_u16
) = ((FLD (f_dsp_48_u24
)) & (65535));
1073 long value
= fields
->f_dsp_48_u16
;
1074 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
1075 errmsg
= insert_normal (cd
, value
, 0, 32, 16, 16, 32, total_length
, buffer
);
1079 errmsg
= insert_normal (cd
, fields
->f_dsp_64_u8
, 0, 64, 0, 8, 32, total_length
, buffer
);
1084 case M32C_OPERAND_DSP_48_U8
:
1085 errmsg
= insert_normal (cd
, fields
->f_dsp_48_u8
, 0, 32, 16, 8, 32, total_length
, buffer
);
1087 case M32C_OPERAND_DSP_8_S24
:
1089 long value
= fields
->f_dsp_8_s24
;
1090 value
= ((((((((((((USI
) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) & (255))) << (16))))) ^ (8388608))) - (8388608));
1091 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 24, 32, total_length
, buffer
);
1094 case M32C_OPERAND_DSP_8_S8
:
1095 errmsg
= insert_normal (cd
, fields
->f_dsp_8_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 8, 32, total_length
, buffer
);
1097 case M32C_OPERAND_DSP_8_U16
:
1099 long value
= fields
->f_dsp_8_u16
;
1100 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
1101 errmsg
= insert_normal (cd
, value
, 0, 0, 8, 16, 32, total_length
, buffer
);
1104 case M32C_OPERAND_DSP_8_U24
:
1106 long value
= fields
->f_dsp_8_u24
;
1107 value
= ((((((USI
) (value
) >> (16))) | (((value
) & (65280))))) | (((((value
) & (255))) << (16))));
1108 errmsg
= insert_normal (cd
, value
, 0, 0, 8, 24, 32, total_length
, buffer
);
1111 case M32C_OPERAND_DSP_8_U6
:
1112 errmsg
= insert_normal (cd
, fields
->f_dsp_8_u6
, 0, 0, 8, 6, 32, total_length
, buffer
);
1114 case M32C_OPERAND_DSP_8_U8
:
1115 errmsg
= insert_normal (cd
, fields
->f_dsp_8_u8
, 0, 0, 8, 8, 32, total_length
, buffer
);
1117 case M32C_OPERAND_DST16AN
:
1118 errmsg
= insert_normal (cd
, fields
->f_dst16_an
, 0, 0, 15, 1, 32, total_length
, buffer
);
1120 case M32C_OPERAND_DST16AN_S
:
1121 errmsg
= insert_normal (cd
, fields
->f_dst16_an_s
, 0, 0, 4, 1, 32, total_length
, buffer
);
1123 case M32C_OPERAND_DST16ANHI
:
1124 errmsg
= insert_normal (cd
, fields
->f_dst16_an
, 0, 0, 15, 1, 32, total_length
, buffer
);
1126 case M32C_OPERAND_DST16ANQI
:
1127 errmsg
= insert_normal (cd
, fields
->f_dst16_an
, 0, 0, 15, 1, 32, total_length
, buffer
);
1129 case M32C_OPERAND_DST16ANQI_S
:
1130 errmsg
= insert_normal (cd
, fields
->f_dst16_rn_QI_s
, 0, 0, 5, 1, 32, total_length
, buffer
);
1132 case M32C_OPERAND_DST16ANSI
:
1133 errmsg
= insert_normal (cd
, fields
->f_dst16_an
, 0, 0, 15, 1, 32, total_length
, buffer
);
1135 case M32C_OPERAND_DST16RNEXTQI
:
1136 errmsg
= insert_normal (cd
, fields
->f_dst16_rn_ext
, 0, 0, 14, 1, 32, total_length
, buffer
);
1138 case M32C_OPERAND_DST16RNHI
:
1139 errmsg
= insert_normal (cd
, fields
->f_dst16_rn
, 0, 0, 14, 2, 32, total_length
, buffer
);
1141 case M32C_OPERAND_DST16RNQI
:
1142 errmsg
= insert_normal (cd
, fields
->f_dst16_rn
, 0, 0, 14, 2, 32, total_length
, buffer
);
1144 case M32C_OPERAND_DST16RNQI_S
:
1145 errmsg
= insert_normal (cd
, fields
->f_dst16_rn_QI_s
, 0, 0, 5, 1, 32, total_length
, buffer
);
1147 case M32C_OPERAND_DST16RNSI
:
1148 errmsg
= insert_normal (cd
, fields
->f_dst16_rn
, 0, 0, 14, 2, 32, total_length
, buffer
);
1150 case M32C_OPERAND_DST32ANEXTUNPREFIXED
:
1151 errmsg
= insert_normal (cd
, fields
->f_dst32_an_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1153 case M32C_OPERAND_DST32ANPREFIXED
:
1154 errmsg
= insert_normal (cd
, fields
->f_dst32_an_prefixed
, 0, 0, 17, 1, 32, total_length
, buffer
);
1156 case M32C_OPERAND_DST32ANPREFIXEDHI
:
1157 errmsg
= insert_normal (cd
, fields
->f_dst32_an_prefixed
, 0, 0, 17, 1, 32, total_length
, buffer
);
1159 case M32C_OPERAND_DST32ANPREFIXEDQI
:
1160 errmsg
= insert_normal (cd
, fields
->f_dst32_an_prefixed
, 0, 0, 17, 1, 32, total_length
, buffer
);
1162 case M32C_OPERAND_DST32ANPREFIXEDSI
:
1163 errmsg
= insert_normal (cd
, fields
->f_dst32_an_prefixed
, 0, 0, 17, 1, 32, total_length
, buffer
);
1165 case M32C_OPERAND_DST32ANUNPREFIXED
:
1166 errmsg
= insert_normal (cd
, fields
->f_dst32_an_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1168 case M32C_OPERAND_DST32ANUNPREFIXEDHI
:
1169 errmsg
= insert_normal (cd
, fields
->f_dst32_an_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1171 case M32C_OPERAND_DST32ANUNPREFIXEDQI
:
1172 errmsg
= insert_normal (cd
, fields
->f_dst32_an_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1174 case M32C_OPERAND_DST32ANUNPREFIXEDSI
:
1175 errmsg
= insert_normal (cd
, fields
->f_dst32_an_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1177 case M32C_OPERAND_DST32R0HI_S
:
1179 case M32C_OPERAND_DST32R0QI_S
:
1181 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI
:
1182 errmsg
= insert_normal (cd
, fields
->f_dst32_rn_ext_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1184 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI
:
1185 errmsg
= insert_normal (cd
, fields
->f_dst32_rn_ext_unprefixed
, 0, 0, 9, 1, 32, total_length
, buffer
);
1187 case M32C_OPERAND_DST32RNPREFIXEDHI
:
1189 long value
= fields
->f_dst32_rn_prefixed_HI
;
1190 value
= ((((value
) + (2))) % (4));
1191 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 2, 32, total_length
, buffer
);
1194 case M32C_OPERAND_DST32RNPREFIXEDQI
:
1196 long value
= fields
->f_dst32_rn_prefixed_QI
;
1197 value
= (((((~ (((value
) << (1))))) & (2))) | (((((USI
) (value
) >> (1))) & (1))));
1198 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 2, 32, total_length
, buffer
);
1201 case M32C_OPERAND_DST32RNPREFIXEDSI
:
1203 long value
= fields
->f_dst32_rn_prefixed_SI
;
1204 value
= ((value
) + (2));
1205 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 2, 32, total_length
, buffer
);
1208 case M32C_OPERAND_DST32RNUNPREFIXEDHI
:
1210 long value
= fields
->f_dst32_rn_unprefixed_HI
;
1211 value
= ((((value
) + (2))) % (4));
1212 errmsg
= insert_normal (cd
, value
, 0, 0, 8, 2, 32, total_length
, buffer
);
1215 case M32C_OPERAND_DST32RNUNPREFIXEDQI
:
1217 long value
= fields
->f_dst32_rn_unprefixed_QI
;
1218 value
= (((((~ (((value
) << (1))))) & (2))) | (((((USI
) (value
) >> (1))) & (1))));
1219 errmsg
= insert_normal (cd
, value
, 0, 0, 8, 2, 32, total_length
, buffer
);
1222 case M32C_OPERAND_DST32RNUNPREFIXEDSI
:
1224 long value
= fields
->f_dst32_rn_unprefixed_SI
;
1225 value
= ((value
) + (2));
1226 errmsg
= insert_normal (cd
, value
, 0, 0, 8, 2, 32, total_length
, buffer
);
1229 case M32C_OPERAND_G
:
1231 case M32C_OPERAND_IMM_12_S4
:
1232 errmsg
= insert_normal (cd
, fields
->f_imm_12_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 12, 4, 32, total_length
, buffer
);
1234 case M32C_OPERAND_IMM_12_S4N
:
1235 errmsg
= insert_normal (cd
, fields
->f_imm_12_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 12, 4, 32, total_length
, buffer
);
1237 case M32C_OPERAND_IMM_13_U3
:
1238 errmsg
= insert_normal (cd
, fields
->f_imm_13_u3
, 0, 0, 13, 3, 32, total_length
, buffer
);
1240 case M32C_OPERAND_IMM_16_HI
:
1242 long value
= fields
->f_dsp_16_s16
;
1243 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
1244 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 16, 32, total_length
, buffer
);
1247 case M32C_OPERAND_IMM_16_QI
:
1248 errmsg
= insert_normal (cd
, fields
->f_dsp_16_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 8, 32, total_length
, buffer
);
1250 case M32C_OPERAND_IMM_16_SI
:
1253 FLD (f_dsp_32_u16
) = ((((UINT
) (FLD (f_dsp_16_s32
)) >> (16))) & (65535));
1254 FLD (f_dsp_16_u16
) = ((FLD (f_dsp_16_s32
)) & (65535));
1257 long value
= fields
->f_dsp_16_u16
;
1258 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
1259 errmsg
= insert_normal (cd
, value
, 0, 0, 16, 16, 32, total_length
, buffer
);
1264 long value
= fields
->f_dsp_32_u16
;
1265 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
1266 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 16, 32, total_length
, buffer
);
1272 case M32C_OPERAND_IMM_20_S4
:
1273 errmsg
= insert_normal (cd
, fields
->f_imm_20_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 20, 4, 32, total_length
, buffer
);
1275 case M32C_OPERAND_IMM_24_HI
:
1278 FLD (f_dsp_24_u8
) = ((FLD (f_dsp_24_s16
)) & (255));
1279 FLD (f_dsp_32_u8
) = ((((UINT
) (FLD (f_dsp_24_s16
)) >> (8))) & (255));
1281 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
1284 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
1289 case M32C_OPERAND_IMM_24_QI
:
1290 errmsg
= insert_normal (cd
, fields
->f_dsp_24_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 24, 8, 32, total_length
, buffer
);
1292 case M32C_OPERAND_IMM_24_SI
:
1295 FLD (f_dsp_32_u24
) = ((((UINT
) (FLD (f_dsp_24_s32
)) >> (8))) & (16777215));
1296 FLD (f_dsp_24_u8
) = ((FLD (f_dsp_24_s32
)) & (255));
1298 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
1302 long value
= fields
->f_dsp_32_u24
;
1303 value
= ((((((((USI
) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
1304 errmsg
= insert_normal (cd
, value
, 0, 32, 0, 24, 32, total_length
, buffer
);
1310 case M32C_OPERAND_IMM_32_HI
:
1312 long value
= fields
->f_dsp_32_s16
;
1313 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
1314 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 16, 32, total_length
, buffer
);
1317 case M32C_OPERAND_IMM_32_QI
:
1318 errmsg
= insert_normal (cd
, fields
->f_dsp_32_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 8, 32, total_length
, buffer
);
1320 case M32C_OPERAND_IMM_32_SI
:
1322 long value
= fields
->f_dsp_32_s32
;
1323 value
= EXTSISI (((((((((UINT
) (value
) >> (24))) & (255))) | (((((UINT
) (value
) >> (8))) & (65280))))) | (((((((value
) & (65280))) << (8))) | (((((value
) & (255))) << (24)))))));
1324 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 32, 32, total_length
, buffer
);
1327 case M32C_OPERAND_IMM_40_HI
:
1329 long value
= fields
->f_dsp_40_s16
;
1330 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
1331 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 8, 16, 32, total_length
, buffer
);
1334 case M32C_OPERAND_IMM_40_QI
:
1335 errmsg
= insert_normal (cd
, fields
->f_dsp_40_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 8, 8, 32, total_length
, buffer
);
1337 case M32C_OPERAND_IMM_40_SI
:
1340 FLD (f_dsp_64_u8
) = ((((UINT
) (FLD (f_dsp_40_s32
)) >> (24))) & (255));
1341 FLD (f_dsp_40_u24
) = ((FLD (f_dsp_40_s32
)) & (16777215));
1344 long value
= fields
->f_dsp_40_u24
;
1345 value
= ((((((((USI
) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
1346 errmsg
= insert_normal (cd
, value
, 0, 32, 8, 24, 32, total_length
, buffer
);
1350 errmsg
= insert_normal (cd
, fields
->f_dsp_64_u8
, 0, 64, 0, 8, 32, total_length
, buffer
);
1355 case M32C_OPERAND_IMM_48_HI
:
1357 long value
= fields
->f_dsp_48_s16
;
1358 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
1359 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 16, 16, 32, total_length
, buffer
);
1362 case M32C_OPERAND_IMM_48_QI
:
1363 errmsg
= insert_normal (cd
, fields
->f_dsp_48_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 16, 8, 32, total_length
, buffer
);
1365 case M32C_OPERAND_IMM_48_SI
:
1368 FLD (f_dsp_64_u16
) = ((((UINT
) (FLD (f_dsp_48_s32
)) >> (16))) & (65535));
1369 FLD (f_dsp_48_u16
) = ((FLD (f_dsp_48_s32
)) & (65535));
1372 long value
= fields
->f_dsp_48_u16
;
1373 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
1374 errmsg
= insert_normal (cd
, value
, 0, 32, 16, 16, 32, total_length
, buffer
);
1379 long value
= fields
->f_dsp_64_u16
;
1380 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
1381 errmsg
= insert_normal (cd
, value
, 0, 64, 0, 16, 32, total_length
, buffer
);
1387 case M32C_OPERAND_IMM_56_HI
:
1390 FLD (f_dsp_56_u8
) = ((FLD (f_dsp_56_s16
)) & (255));
1391 FLD (f_dsp_64_u8
) = ((((UINT
) (FLD (f_dsp_56_s16
)) >> (8))) & (255));
1393 errmsg
= insert_normal (cd
, fields
->f_dsp_56_u8
, 0, 32, 24, 8, 32, total_length
, buffer
);
1396 errmsg
= insert_normal (cd
, fields
->f_dsp_64_u8
, 0, 64, 0, 8, 32, total_length
, buffer
);
1401 case M32C_OPERAND_IMM_56_QI
:
1402 errmsg
= insert_normal (cd
, fields
->f_dsp_56_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 24, 8, 32, total_length
, buffer
);
1404 case M32C_OPERAND_IMM_64_HI
:
1406 long value
= fields
->f_dsp_64_s16
;
1407 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
1408 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 64, 0, 16, 32, total_length
, buffer
);
1411 case M32C_OPERAND_IMM_8_HI
:
1413 long value
= fields
->f_dsp_8_s16
;
1414 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
1415 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 16, 32, total_length
, buffer
);
1418 case M32C_OPERAND_IMM_8_QI
:
1419 errmsg
= insert_normal (cd
, fields
->f_dsp_8_s8
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 8, 32, total_length
, buffer
);
1421 case M32C_OPERAND_IMM_8_S4
:
1422 errmsg
= insert_normal (cd
, fields
->f_imm_8_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 4, 32, total_length
, buffer
);
1424 case M32C_OPERAND_IMM_8_S4N
:
1425 errmsg
= insert_normal (cd
, fields
->f_imm_8_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 4, 32, total_length
, buffer
);
1427 case M32C_OPERAND_IMM_SH_12_S4
:
1428 errmsg
= insert_normal (cd
, fields
->f_imm_12_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 12, 4, 32, total_length
, buffer
);
1430 case M32C_OPERAND_IMM_SH_20_S4
:
1431 errmsg
= insert_normal (cd
, fields
->f_imm_20_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 20, 4, 32, total_length
, buffer
);
1433 case M32C_OPERAND_IMM_SH_8_S4
:
1434 errmsg
= insert_normal (cd
, fields
->f_imm_8_s4
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 4, 32, total_length
, buffer
);
1436 case M32C_OPERAND_IMM1_S
:
1438 long value
= fields
->f_imm1_S
;
1439 value
= ((value
) - (1));
1440 errmsg
= insert_normal (cd
, value
, 0, 0, 2, 1, 32, total_length
, buffer
);
1443 case M32C_OPERAND_IMM3_S
:
1446 FLD (f_7_1
) = ((((FLD (f_imm3_S
)) - (1))) & (1));
1447 FLD (f_2_2
) = ((((UINT
) (((FLD (f_imm3_S
)) - (1))) >> (1))) & (3));
1449 errmsg
= insert_normal (cd
, fields
->f_2_2
, 0, 0, 2, 2, 32, total_length
, buffer
);
1452 errmsg
= insert_normal (cd
, fields
->f_7_1
, 0, 0, 7, 1, 32, total_length
, buffer
);
1457 case M32C_OPERAND_LAB_16_8
:
1459 long value
= fields
->f_lab_16_8
;
1460 value
= ((value
) - (((pc
) + (2))));
1461 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
)|(1<<CGEN_IFLD_PCREL_ADDR
), 0, 16, 8, 32, total_length
, buffer
);
1464 case M32C_OPERAND_LAB_24_8
:
1466 long value
= fields
->f_lab_24_8
;
1467 value
= ((value
) - (((pc
) + (2))));
1468 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
)|(1<<CGEN_IFLD_PCREL_ADDR
), 0, 24, 8, 32, total_length
, buffer
);
1471 case M32C_OPERAND_LAB_32_8
:
1473 long value
= fields
->f_lab_32_8
;
1474 value
= ((value
) - (((pc
) + (2))));
1475 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
)|(1<<CGEN_IFLD_PCREL_ADDR
), 32, 0, 8, 32, total_length
, buffer
);
1478 case M32C_OPERAND_LAB_40_8
:
1480 long value
= fields
->f_lab_40_8
;
1481 value
= ((value
) - (((pc
) + (2))));
1482 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
)|(1<<CGEN_IFLD_PCREL_ADDR
), 32, 8, 8, 32, total_length
, buffer
);
1485 case M32C_OPERAND_LAB_5_3
:
1487 long value
= fields
->f_lab_5_3
;
1488 value
= ((value
) - (((pc
) + (2))));
1489 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_PCREL_ADDR
), 0, 5, 3, 32, total_length
, buffer
);
1492 case M32C_OPERAND_LAB_8_16
:
1494 long value
= fields
->f_lab_8_16
;
1495 value
= ((((((((value
) - (((pc
) + (1))))) & (255))) << (8))) | (((USI
) (((((value
) - (((pc
) + (1))))) & (65280))) >> (8))));
1496 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGN_OPT
)|(1<<CGEN_IFLD_PCREL_ADDR
), 0, 8, 16, 32, total_length
, buffer
);
1499 case M32C_OPERAND_LAB_8_24
:
1501 long value
= fields
->f_lab_8_24
;
1502 value
= ((((((USI
) (value
) >> (16))) | (((value
) & (65280))))) | (((((value
) & (255))) << (16))));
1503 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_ABS_ADDR
), 0, 8, 24, 32, total_length
, buffer
);
1506 case M32C_OPERAND_LAB_8_8
:
1508 long value
= fields
->f_lab_8_8
;
1509 value
= ((value
) - (((pc
) + (1))));
1510 errmsg
= insert_normal (cd
, value
, 0|(1<<CGEN_IFLD_SIGNED
)|(1<<CGEN_IFLD_PCREL_ADDR
), 0, 8, 8, 32, total_length
, buffer
);
1513 case M32C_OPERAND_LAB32_JMP_S
:
1517 tmp_val
= ((((FLD (f_lab32_jmp_s
)) - (pc
))) - (2));
1518 FLD (f_7_1
) = ((tmp_val
) & (1));
1519 FLD (f_2_2
) = ((USI
) (tmp_val
) >> (1));
1521 errmsg
= insert_normal (cd
, fields
->f_2_2
, 0, 0, 2, 2, 32, total_length
, buffer
);
1524 errmsg
= insert_normal (cd
, fields
->f_7_1
, 0, 0, 7, 1, 32, total_length
, buffer
);
1529 case M32C_OPERAND_Q
:
1531 case M32C_OPERAND_R0
:
1533 case M32C_OPERAND_R0H
:
1535 case M32C_OPERAND_R0L
:
1537 case M32C_OPERAND_R1
:
1539 case M32C_OPERAND_R1R2R0
:
1541 case M32C_OPERAND_R2
:
1543 case M32C_OPERAND_R2R0
:
1545 case M32C_OPERAND_R3
:
1547 case M32C_OPERAND_R3R1
:
1549 case M32C_OPERAND_REGSETPOP
:
1550 errmsg
= insert_normal (cd
, fields
->f_8_8
, 0, 0, 8, 8, 32, total_length
, buffer
);
1552 case M32C_OPERAND_REGSETPUSH
:
1553 errmsg
= insert_normal (cd
, fields
->f_8_8
, 0, 0, 8, 8, 32, total_length
, buffer
);
1555 case M32C_OPERAND_RN16_PUSH_S
:
1556 errmsg
= insert_normal (cd
, fields
->f_4_1
, 0, 0, 4, 1, 32, total_length
, buffer
);
1558 case M32C_OPERAND_S
:
1560 case M32C_OPERAND_SRC16AN
:
1561 errmsg
= insert_normal (cd
, fields
->f_src16_an
, 0, 0, 11, 1, 32, total_length
, buffer
);
1563 case M32C_OPERAND_SRC16ANHI
:
1564 errmsg
= insert_normal (cd
, fields
->f_src16_an
, 0, 0, 11, 1, 32, total_length
, buffer
);
1566 case M32C_OPERAND_SRC16ANQI
:
1567 errmsg
= insert_normal (cd
, fields
->f_src16_an
, 0, 0, 11, 1, 32, total_length
, buffer
);
1569 case M32C_OPERAND_SRC16RNHI
:
1570 errmsg
= insert_normal (cd
, fields
->f_src16_rn
, 0, 0, 10, 2, 32, total_length
, buffer
);
1572 case M32C_OPERAND_SRC16RNQI
:
1573 errmsg
= insert_normal (cd
, fields
->f_src16_rn
, 0, 0, 10, 2, 32, total_length
, buffer
);
1575 case M32C_OPERAND_SRC32ANPREFIXED
:
1576 errmsg
= insert_normal (cd
, fields
->f_src32_an_prefixed
, 0, 0, 19, 1, 32, total_length
, buffer
);
1578 case M32C_OPERAND_SRC32ANPREFIXEDHI
:
1579 errmsg
= insert_normal (cd
, fields
->f_src32_an_prefixed
, 0, 0, 19, 1, 32, total_length
, buffer
);
1581 case M32C_OPERAND_SRC32ANPREFIXEDQI
:
1582 errmsg
= insert_normal (cd
, fields
->f_src32_an_prefixed
, 0, 0, 19, 1, 32, total_length
, buffer
);
1584 case M32C_OPERAND_SRC32ANPREFIXEDSI
:
1585 errmsg
= insert_normal (cd
, fields
->f_src32_an_prefixed
, 0, 0, 19, 1, 32, total_length
, buffer
);
1587 case M32C_OPERAND_SRC32ANUNPREFIXED
:
1588 errmsg
= insert_normal (cd
, fields
->f_src32_an_unprefixed
, 0, 0, 11, 1, 32, total_length
, buffer
);
1590 case M32C_OPERAND_SRC32ANUNPREFIXEDHI
:
1591 errmsg
= insert_normal (cd
, fields
->f_src32_an_unprefixed
, 0, 0, 11, 1, 32, total_length
, buffer
);
1593 case M32C_OPERAND_SRC32ANUNPREFIXEDQI
:
1594 errmsg
= insert_normal (cd
, fields
->f_src32_an_unprefixed
, 0, 0, 11, 1, 32, total_length
, buffer
);
1596 case M32C_OPERAND_SRC32ANUNPREFIXEDSI
:
1597 errmsg
= insert_normal (cd
, fields
->f_src32_an_unprefixed
, 0, 0, 11, 1, 32, total_length
, buffer
);
1599 case M32C_OPERAND_SRC32RNPREFIXEDHI
:
1601 long value
= fields
->f_src32_rn_prefixed_HI
;
1602 value
= ((((value
) + (2))) % (4));
1603 errmsg
= insert_normal (cd
, value
, 0, 0, 18, 2, 32, total_length
, buffer
);
1606 case M32C_OPERAND_SRC32RNPREFIXEDQI
:
1608 long value
= fields
->f_src32_rn_prefixed_QI
;
1609 value
= (((((~ (((value
) << (1))))) & (2))) | (((((USI
) (value
) >> (1))) & (1))));
1610 errmsg
= insert_normal (cd
, value
, 0, 0, 18, 2, 32, total_length
, buffer
);
1613 case M32C_OPERAND_SRC32RNPREFIXEDSI
:
1615 long value
= fields
->f_src32_rn_prefixed_SI
;
1616 value
= ((value
) + (2));
1617 errmsg
= insert_normal (cd
, value
, 0, 0, 18, 2, 32, total_length
, buffer
);
1620 case M32C_OPERAND_SRC32RNUNPREFIXEDHI
:
1622 long value
= fields
->f_src32_rn_unprefixed_HI
;
1623 value
= ((((value
) + (2))) % (4));
1624 errmsg
= insert_normal (cd
, value
, 0, 0, 10, 2, 32, total_length
, buffer
);
1627 case M32C_OPERAND_SRC32RNUNPREFIXEDQI
:
1629 long value
= fields
->f_src32_rn_unprefixed_QI
;
1630 value
= (((((~ (((value
) << (1))))) & (2))) | (((((USI
) (value
) >> (1))) & (1))));
1631 errmsg
= insert_normal (cd
, value
, 0, 0, 10, 2, 32, total_length
, buffer
);
1634 case M32C_OPERAND_SRC32RNUNPREFIXEDSI
:
1636 long value
= fields
->f_src32_rn_unprefixed_SI
;
1637 value
= ((value
) + (2));
1638 errmsg
= insert_normal (cd
, value
, 0, 0, 10, 2, 32, total_length
, buffer
);
1641 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL
:
1642 errmsg
= insert_normal (cd
, fields
->f_5_1
, 0, 0, 5, 1, 32, total_length
, buffer
);
1644 case M32C_OPERAND_X
:
1646 case M32C_OPERAND_Z
:
1648 case M32C_OPERAND_COND16_16
:
1649 errmsg
= insert_normal (cd
, fields
->f_dsp_16_u8
, 0, 0, 16, 8, 32, total_length
, buffer
);
1651 case M32C_OPERAND_COND16_24
:
1652 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
1654 case M32C_OPERAND_COND16_32
:
1655 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
1657 case M32C_OPERAND_COND16C
:
1658 errmsg
= insert_normal (cd
, fields
->f_cond16
, 0, 0, 12, 4, 32, total_length
, buffer
);
1660 case M32C_OPERAND_COND16J
:
1661 errmsg
= insert_normal (cd
, fields
->f_cond16
, 0, 0, 12, 4, 32, total_length
, buffer
);
1663 case M32C_OPERAND_COND16J5
:
1664 errmsg
= insert_normal (cd
, fields
->f_cond16j_5
, 0, 0, 5, 3, 32, total_length
, buffer
);
1666 case M32C_OPERAND_COND32
:
1669 FLD (f_9_1
) = ((((UINT
) (FLD (f_cond32
)) >> (3))) & (1));
1670 FLD (f_13_3
) = ((FLD (f_cond32
)) & (7));
1672 errmsg
= insert_normal (cd
, fields
->f_9_1
, 0, 0, 9, 1, 32, total_length
, buffer
);
1675 errmsg
= insert_normal (cd
, fields
->f_13_3
, 0, 0, 13, 3, 32, total_length
, buffer
);
1680 case M32C_OPERAND_COND32_16
:
1681 errmsg
= insert_normal (cd
, fields
->f_dsp_16_u8
, 0, 0, 16, 8, 32, total_length
, buffer
);
1683 case M32C_OPERAND_COND32_24
:
1684 errmsg
= insert_normal (cd
, fields
->f_dsp_24_u8
, 0, 0, 24, 8, 32, total_length
, buffer
);
1686 case M32C_OPERAND_COND32_32
:
1687 errmsg
= insert_normal (cd
, fields
->f_dsp_32_u8
, 0, 32, 0, 8, 32, total_length
, buffer
);
1689 case M32C_OPERAND_COND32_40
:
1690 errmsg
= insert_normal (cd
, fields
->f_dsp_40_u8
, 0, 32, 8, 8, 32, total_length
, buffer
);
1692 case M32C_OPERAND_COND32J
:
1695 FLD (f_1_3
) = ((((UINT
) (FLD (f_cond32j
)) >> (1))) & (7));
1696 FLD (f_7_1
) = ((FLD (f_cond32j
)) & (1));
1698 errmsg
= insert_normal (cd
, fields
->f_1_3
, 0, 0, 1, 3, 32, total_length
, buffer
);
1701 errmsg
= insert_normal (cd
, fields
->f_7_1
, 0, 0, 7, 1, 32, total_length
, buffer
);
1706 case M32C_OPERAND_CR1_PREFIXED_32
:
1707 errmsg
= insert_normal (cd
, fields
->f_21_3
, 0, 0, 21, 3, 32, total_length
, buffer
);
1709 case M32C_OPERAND_CR1_UNPREFIXED_32
:
1710 errmsg
= insert_normal (cd
, fields
->f_13_3
, 0, 0, 13, 3, 32, total_length
, buffer
);
1712 case M32C_OPERAND_CR16
:
1713 errmsg
= insert_normal (cd
, fields
->f_9_3
, 0, 0, 9, 3, 32, total_length
, buffer
);
1715 case M32C_OPERAND_CR2_32
:
1716 errmsg
= insert_normal (cd
, fields
->f_13_3
, 0, 0, 13, 3, 32, total_length
, buffer
);
1718 case M32C_OPERAND_CR3_PREFIXED_32
:
1719 errmsg
= insert_normal (cd
, fields
->f_21_3
, 0, 0, 21, 3, 32, total_length
, buffer
);
1721 case M32C_OPERAND_CR3_UNPREFIXED_32
:
1722 errmsg
= insert_normal (cd
, fields
->f_13_3
, 0, 0, 13, 3, 32, total_length
, buffer
);
1724 case M32C_OPERAND_FLAGS16
:
1725 errmsg
= insert_normal (cd
, fields
->f_9_3
, 0, 0, 9, 3, 32, total_length
, buffer
);
1727 case M32C_OPERAND_FLAGS32
:
1728 errmsg
= insert_normal (cd
, fields
->f_13_3
, 0, 0, 13, 3, 32, total_length
, buffer
);
1730 case M32C_OPERAND_SCCOND32
:
1731 errmsg
= insert_normal (cd
, fields
->f_cond16
, 0, 0, 12, 4, 32, total_length
, buffer
);
1733 case M32C_OPERAND_SIZE
:
1737 /* xgettext:c-format */
1738 opcodes_error_handler
1739 (_("internal error: unrecognized field %d while building insn"),
1747 int m32c_cgen_extract_operand
1748 (CGEN_CPU_DESC
, int, CGEN_EXTRACT_INFO
*, CGEN_INSN_INT
, CGEN_FIELDS
*, bfd_vma
);
1750 /* Main entry point for operand extraction.
1751 The result is <= 0 for error, >0 for success.
1752 ??? Actual values aren't well defined right now.
1754 This function is basically just a big switch statement. Earlier versions
1755 used tables to look up the function to use, but
1756 - if the table contains both assembler and disassembler functions then
1757 the disassembler contains much of the assembler and vice-versa,
1758 - there's a lot of inlining possibilities as things grow,
1759 - using a switch statement avoids the function call overhead.
1761 This function could be moved into `print_insn_normal', but keeping it
1762 separate makes clear the interface between `print_insn_normal' and each of
1766 m32c_cgen_extract_operand (CGEN_CPU_DESC cd
,
1768 CGEN_EXTRACT_INFO
*ex_info
,
1769 CGEN_INSN_INT insn_value
,
1770 CGEN_FIELDS
* fields
,
1773 /* Assume success (for those operands that are nops). */
1775 unsigned int total_length
= CGEN_FIELDS_BITSIZE (fields
);
1779 case M32C_OPERAND_A0
:
1781 case M32C_OPERAND_A1
:
1783 case M32C_OPERAND_AN16_PUSH_S
:
1784 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 4, 1, 32, total_length
, pc
, & fields
->f_4_1
);
1786 case M32C_OPERAND_BIT16AN
:
1787 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 15, 1, 32, total_length
, pc
, & fields
->f_dst16_an
);
1789 case M32C_OPERAND_BIT16RN
:
1790 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 14, 2, 32, total_length
, pc
, & fields
->f_dst16_rn
);
1792 case M32C_OPERAND_BIT3_S
:
1794 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 2, 2, 32, total_length
, pc
, & fields
->f_2_2
);
1795 if (length
<= 0) break;
1796 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 7, 1, 32, total_length
, pc
, & fields
->f_7_1
);
1797 if (length
<= 0) break;
1799 FLD (f_imm3_S
) = ((((((FLD (f_2_2
)) << (1))) | (FLD (f_7_1
)))) + (1));
1803 case M32C_OPERAND_BIT32ANPREFIXED
:
1804 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 17, 1, 32, total_length
, pc
, & fields
->f_dst32_an_prefixed
);
1806 case M32C_OPERAND_BIT32ANUNPREFIXED
:
1807 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_an_unprefixed
);
1809 case M32C_OPERAND_BIT32RNPREFIXED
:
1812 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 2, 32, total_length
, pc
, & value
);
1813 value
= (((((~ (((USI
) (value
) >> (1))))) & (1))) | (((((value
) << (1))) & (2))));
1814 fields
->f_dst32_rn_prefixed_QI
= value
;
1817 case M32C_OPERAND_BIT32RNUNPREFIXED
:
1820 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 2, 32, total_length
, pc
, & value
);
1821 value
= (((((~ (((USI
) (value
) >> (1))))) & (1))) | (((((value
) << (1))) & (2))));
1822 fields
->f_dst32_rn_unprefixed_QI
= value
;
1825 case M32C_OPERAND_BITBASE16_16_S8
:
1826 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
);
1828 case M32C_OPERAND_BITBASE16_16_U16
:
1831 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
1832 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
1833 fields
->f_dsp_16_u16
= value
;
1836 case M32C_OPERAND_BITBASE16_16_U8
:
1837 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_16_u8
);
1839 case M32C_OPERAND_BITBASE16_8_U11_S
:
1841 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 5, 3, 32, total_length
, pc
, & fields
->f_bitno16_S
);
1842 if (length
<= 0) break;
1843 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 8, 32, total_length
, pc
, & fields
->f_dsp_8_u8
);
1844 if (length
<= 0) break;
1846 FLD (f_bitbase16_u11_S
) = ((((FLD (f_dsp_8_u8
)) << (3))) | (FLD (f_bitno16_S
)));
1850 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED
:
1852 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_bitno32_unprefixed
);
1853 if (length
<= 0) break;
1854 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
);
1855 if (length
<= 0) break;
1857 FLD (f_bitbase32_16_s11_unprefixed
) = ((((FLD (f_dsp_16_s8
)) * (8))) | (FLD (f_bitno32_unprefixed
)));
1861 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED
:
1863 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_bitno32_unprefixed
);
1864 if (length
<= 0) break;
1867 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 16, 32, total_length
, pc
, & value
);
1868 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
1869 fields
->f_dsp_16_s16
= value
;
1871 if (length
<= 0) break;
1873 FLD (f_bitbase32_16_s19_unprefixed
) = ((((FLD (f_dsp_16_s16
)) * (8))) | (FLD (f_bitno32_unprefixed
)));
1877 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED
:
1879 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_bitno32_unprefixed
);
1880 if (length
<= 0) break;
1881 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_16_u8
);
1882 if (length
<= 0) break;
1884 FLD (f_bitbase32_16_u11_unprefixed
) = ((((FLD (f_dsp_16_u8
)) << (3))) | (FLD (f_bitno32_unprefixed
)));
1888 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED
:
1890 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_bitno32_unprefixed
);
1891 if (length
<= 0) break;
1894 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
1895 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
1896 fields
->f_dsp_16_u16
= value
;
1898 if (length
<= 0) break;
1900 FLD (f_bitbase32_16_u19_unprefixed
) = ((((FLD (f_dsp_16_u16
)) << (3))) | (FLD (f_bitno32_unprefixed
)));
1904 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED
:
1906 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_bitno32_unprefixed
);
1907 if (length
<= 0) break;
1910 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
1911 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
1912 fields
->f_dsp_16_u16
= value
;
1914 if (length
<= 0) break;
1915 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
1916 if (length
<= 0) break;
1918 FLD (f_bitbase32_16_u27_unprefixed
) = ((((FLD (f_dsp_16_u16
)) << (3))) | (((((FLD (f_dsp_32_u8
)) << (19))) | (FLD (f_bitno32_unprefixed
)))));
1922 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED
:
1924 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_bitno32_prefixed
);
1925 if (length
<= 0) break;
1926 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
);
1927 if (length
<= 0) break;
1929 FLD (f_bitbase32_24_s11_prefixed
) = ((((FLD (f_dsp_24_s8
)) * (8))) | (FLD (f_bitno32_prefixed
)));
1933 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED
:
1935 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_bitno32_prefixed
);
1936 if (length
<= 0) break;
1937 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
1938 if (length
<= 0) break;
1939 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
);
1940 if (length
<= 0) break;
1942 FLD (f_bitbase32_24_s19_prefixed
) = ((((FLD (f_dsp_24_u8
)) << (3))) | (((((FLD (f_dsp_32_s8
)) * (2048))) | (FLD (f_bitno32_prefixed
)))));
1946 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED
:
1948 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_bitno32_prefixed
);
1949 if (length
<= 0) break;
1950 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
1951 if (length
<= 0) break;
1953 FLD (f_bitbase32_24_u11_prefixed
) = ((((FLD (f_dsp_24_u8
)) << (3))) | (FLD (f_bitno32_prefixed
)));
1957 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED
:
1959 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_bitno32_prefixed
);
1960 if (length
<= 0) break;
1961 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
1962 if (length
<= 0) break;
1963 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
1964 if (length
<= 0) break;
1966 FLD (f_bitbase32_24_u19_prefixed
) = ((((FLD (f_dsp_24_u8
)) << (3))) | (((((FLD (f_dsp_32_u8
)) << (11))) | (FLD (f_bitno32_prefixed
)))));
1970 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED
:
1972 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_bitno32_prefixed
);
1973 if (length
<= 0) break;
1974 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
1975 if (length
<= 0) break;
1978 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 16, 32, total_length
, pc
, & value
);
1979 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
1980 fields
->f_dsp_32_u16
= value
;
1982 if (length
<= 0) break;
1984 FLD (f_bitbase32_24_u27_prefixed
) = ((((FLD (f_dsp_24_u8
)) << (3))) | (((((FLD (f_dsp_32_u16
)) << (11))) | (FLD (f_bitno32_prefixed
)))));
1988 case M32C_OPERAND_BITNO16R
:
1989 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_16_u8
);
1991 case M32C_OPERAND_BITNO32PREFIXED
:
1992 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_bitno32_prefixed
);
1994 case M32C_OPERAND_BITNO32UNPREFIXED
:
1995 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_bitno32_unprefixed
);
1997 case M32C_OPERAND_DSP_10_U6
:
1998 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 10, 6, 32, total_length
, pc
, & fields
->f_dsp_10_u6
);
2000 case M32C_OPERAND_DSP_16_S16
:
2003 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 16, 32, total_length
, pc
, & value
);
2004 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
2005 fields
->f_dsp_16_s16
= value
;
2008 case M32C_OPERAND_DSP_16_S8
:
2009 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
);
2011 case M32C_OPERAND_DSP_16_U16
:
2014 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
2015 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
2016 fields
->f_dsp_16_u16
= value
;
2019 case M32C_OPERAND_DSP_16_U20
:
2023 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
2024 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
2025 fields
->f_dsp_16_u16
= value
;
2027 if (length
<= 0) break;
2028 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
2029 if (length
<= 0) break;
2031 FLD (f_dsp_16_u24
) = ((((FLD (f_dsp_32_u8
)) << (16))) | (FLD (f_dsp_16_u16
)));
2035 case M32C_OPERAND_DSP_16_U24
:
2039 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
2040 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
2041 fields
->f_dsp_16_u16
= value
;
2043 if (length
<= 0) break;
2044 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
2045 if (length
<= 0) break;
2047 FLD (f_dsp_16_u24
) = ((((FLD (f_dsp_32_u8
)) << (16))) | (FLD (f_dsp_16_u16
)));
2051 case M32C_OPERAND_DSP_16_U8
:
2052 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_16_u8
);
2054 case M32C_OPERAND_DSP_24_S16
:
2056 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2057 if (length
<= 0) break;
2058 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
2059 if (length
<= 0) break;
2061 FLD (f_dsp_24_s16
) = EXTHISI (((HI
) (UINT
) (((((FLD (f_dsp_32_u8
)) << (8))) | (FLD (f_dsp_24_u8
))))));
2065 case M32C_OPERAND_DSP_24_S8
:
2066 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
);
2068 case M32C_OPERAND_DSP_24_U16
:
2070 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2071 if (length
<= 0) break;
2072 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
2073 if (length
<= 0) break;
2075 FLD (f_dsp_24_u16
) = ((((FLD (f_dsp_32_u8
)) << (8))) | (FLD (f_dsp_24_u8
)));
2079 case M32C_OPERAND_DSP_24_U20
:
2081 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2082 if (length
<= 0) break;
2085 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 16, 32, total_length
, pc
, & value
);
2086 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
2087 fields
->f_dsp_32_u16
= value
;
2089 if (length
<= 0) break;
2091 FLD (f_dsp_24_u24
) = ((((FLD (f_dsp_32_u16
)) << (8))) | (FLD (f_dsp_24_u8
)));
2095 case M32C_OPERAND_DSP_24_U24
:
2097 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2098 if (length
<= 0) break;
2101 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 16, 32, total_length
, pc
, & value
);
2102 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
2103 fields
->f_dsp_32_u16
= value
;
2105 if (length
<= 0) break;
2107 FLD (f_dsp_24_u24
) = ((((FLD (f_dsp_32_u16
)) << (8))) | (FLD (f_dsp_24_u8
)));
2111 case M32C_OPERAND_DSP_24_U8
:
2112 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2114 case M32C_OPERAND_DSP_32_S16
:
2117 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 16, 32, total_length
, pc
, & value
);
2118 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
2119 fields
->f_dsp_32_s16
= value
;
2122 case M32C_OPERAND_DSP_32_S8
:
2123 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
);
2125 case M32C_OPERAND_DSP_32_U16
:
2128 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 16, 32, total_length
, pc
, & value
);
2129 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
2130 fields
->f_dsp_32_u16
= value
;
2133 case M32C_OPERAND_DSP_32_U20
:
2136 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 24, 32, total_length
, pc
, & value
);
2137 value
= ((((((((USI
) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
2138 fields
->f_dsp_32_u24
= value
;
2141 case M32C_OPERAND_DSP_32_U24
:
2144 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 24, 32, total_length
, pc
, & value
);
2145 value
= ((((((((USI
) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
2146 fields
->f_dsp_32_u24
= value
;
2149 case M32C_OPERAND_DSP_32_U8
:
2150 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
2152 case M32C_OPERAND_DSP_40_S16
:
2155 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 8, 16, 32, total_length
, pc
, & value
);
2156 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
2157 fields
->f_dsp_40_s16
= value
;
2160 case M32C_OPERAND_DSP_40_S8
:
2161 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
);
2163 case M32C_OPERAND_DSP_40_U16
:
2166 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 8, 16, 32, total_length
, pc
, & value
);
2167 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
2168 fields
->f_dsp_40_u16
= value
;
2171 case M32C_OPERAND_DSP_40_U20
:
2174 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 8, 20, 32, total_length
, pc
, & value
);
2175 value
= ((((((((USI
) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (983040))));
2176 fields
->f_dsp_40_u20
= value
;
2179 case M32C_OPERAND_DSP_40_U24
:
2182 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 8, 24, 32, total_length
, pc
, & value
);
2183 value
= ((((((((USI
) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
2184 fields
->f_dsp_40_u24
= value
;
2187 case M32C_OPERAND_DSP_40_U8
:
2188 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 8, 8, 32, total_length
, pc
, & fields
->f_dsp_40_u8
);
2190 case M32C_OPERAND_DSP_48_S16
:
2193 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 16, 16, 32, total_length
, pc
, & value
);
2194 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
2195 fields
->f_dsp_48_s16
= value
;
2198 case M32C_OPERAND_DSP_48_S8
:
2199 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
);
2201 case M32C_OPERAND_DSP_48_U16
:
2204 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 16, 16, 32, total_length
, pc
, & value
);
2205 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
2206 fields
->f_dsp_48_u16
= value
;
2209 case M32C_OPERAND_DSP_48_U20
:
2213 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 16, 16, 32, total_length
, pc
, & value
);
2214 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
2215 fields
->f_dsp_48_u16
= value
;
2217 if (length
<= 0) break;
2218 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 64, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_64_u8
);
2219 if (length
<= 0) break;
2221 FLD (f_dsp_48_u20
) = ((((FLD (f_dsp_48_u16
)) & (65535))) | (((((FLD (f_dsp_64_u8
)) << (16))) & (983040))));
2225 case M32C_OPERAND_DSP_48_U24
:
2229 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 16, 16, 32, total_length
, pc
, & value
);
2230 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
2231 fields
->f_dsp_48_u16
= value
;
2233 if (length
<= 0) break;
2234 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 64, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_64_u8
);
2235 if (length
<= 0) break;
2237 FLD (f_dsp_48_u24
) = ((((FLD (f_dsp_48_u16
)) & (65535))) | (((((FLD (f_dsp_64_u8
)) << (16))) & (16711680))));
2241 case M32C_OPERAND_DSP_48_U8
:
2242 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_48_u8
);
2244 case M32C_OPERAND_DSP_8_S24
:
2247 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 24, 32, total_length
, pc
, & value
);
2248 value
= ((((((((((((USI
) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) & (255))) << (16))))) ^ (8388608))) - (8388608));
2249 fields
->f_dsp_8_s24
= value
;
2252 case M32C_OPERAND_DSP_8_S8
:
2253 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
);
2255 case M32C_OPERAND_DSP_8_U16
:
2258 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 16, 32, total_length
, pc
, & value
);
2259 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
2260 fields
->f_dsp_8_u16
= value
;
2263 case M32C_OPERAND_DSP_8_U24
:
2266 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 24, 32, total_length
, pc
, & value
);
2267 value
= ((((((USI
) (value
) >> (16))) | (((value
) & (65280))))) | (((((value
) & (255))) << (16))));
2268 fields
->f_dsp_8_u24
= value
;
2271 case M32C_OPERAND_DSP_8_U6
:
2272 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 6, 32, total_length
, pc
, & fields
->f_dsp_8_u6
);
2274 case M32C_OPERAND_DSP_8_U8
:
2275 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 8, 32, total_length
, pc
, & fields
->f_dsp_8_u8
);
2277 case M32C_OPERAND_DST16AN
:
2278 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 15, 1, 32, total_length
, pc
, & fields
->f_dst16_an
);
2280 case M32C_OPERAND_DST16AN_S
:
2281 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 4, 1, 32, total_length
, pc
, & fields
->f_dst16_an_s
);
2283 case M32C_OPERAND_DST16ANHI
:
2284 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 15, 1, 32, total_length
, pc
, & fields
->f_dst16_an
);
2286 case M32C_OPERAND_DST16ANQI
:
2287 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 15, 1, 32, total_length
, pc
, & fields
->f_dst16_an
);
2289 case M32C_OPERAND_DST16ANQI_S
:
2290 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 5, 1, 32, total_length
, pc
, & fields
->f_dst16_rn_QI_s
);
2292 case M32C_OPERAND_DST16ANSI
:
2293 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 15, 1, 32, total_length
, pc
, & fields
->f_dst16_an
);
2295 case M32C_OPERAND_DST16RNEXTQI
:
2296 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 14, 1, 32, total_length
, pc
, & fields
->f_dst16_rn_ext
);
2298 case M32C_OPERAND_DST16RNHI
:
2299 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 14, 2, 32, total_length
, pc
, & fields
->f_dst16_rn
);
2301 case M32C_OPERAND_DST16RNQI
:
2302 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 14, 2, 32, total_length
, pc
, & fields
->f_dst16_rn
);
2304 case M32C_OPERAND_DST16RNQI_S
:
2305 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 5, 1, 32, total_length
, pc
, & fields
->f_dst16_rn_QI_s
);
2307 case M32C_OPERAND_DST16RNSI
:
2308 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 14, 2, 32, total_length
, pc
, & fields
->f_dst16_rn
);
2310 case M32C_OPERAND_DST32ANEXTUNPREFIXED
:
2311 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_an_unprefixed
);
2313 case M32C_OPERAND_DST32ANPREFIXED
:
2314 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 17, 1, 32, total_length
, pc
, & fields
->f_dst32_an_prefixed
);
2316 case M32C_OPERAND_DST32ANPREFIXEDHI
:
2317 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 17, 1, 32, total_length
, pc
, & fields
->f_dst32_an_prefixed
);
2319 case M32C_OPERAND_DST32ANPREFIXEDQI
:
2320 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 17, 1, 32, total_length
, pc
, & fields
->f_dst32_an_prefixed
);
2322 case M32C_OPERAND_DST32ANPREFIXEDSI
:
2323 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 17, 1, 32, total_length
, pc
, & fields
->f_dst32_an_prefixed
);
2325 case M32C_OPERAND_DST32ANUNPREFIXED
:
2326 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_an_unprefixed
);
2328 case M32C_OPERAND_DST32ANUNPREFIXEDHI
:
2329 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_an_unprefixed
);
2331 case M32C_OPERAND_DST32ANUNPREFIXEDQI
:
2332 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_an_unprefixed
);
2334 case M32C_OPERAND_DST32ANUNPREFIXEDSI
:
2335 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_an_unprefixed
);
2337 case M32C_OPERAND_DST32R0HI_S
:
2339 case M32C_OPERAND_DST32R0QI_S
:
2341 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI
:
2342 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_rn_ext_unprefixed
);
2344 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI
:
2345 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_dst32_rn_ext_unprefixed
);
2347 case M32C_OPERAND_DST32RNPREFIXEDHI
:
2350 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 2, 32, total_length
, pc
, & value
);
2351 value
= ((((value
) + (2))) % (4));
2352 fields
->f_dst32_rn_prefixed_HI
= value
;
2355 case M32C_OPERAND_DST32RNPREFIXEDQI
:
2358 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 2, 32, total_length
, pc
, & value
);
2359 value
= (((((~ (((USI
) (value
) >> (1))))) & (1))) | (((((value
) << (1))) & (2))));
2360 fields
->f_dst32_rn_prefixed_QI
= value
;
2363 case M32C_OPERAND_DST32RNPREFIXEDSI
:
2366 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 2, 32, total_length
, pc
, & value
);
2367 value
= ((value
) - (2));
2368 fields
->f_dst32_rn_prefixed_SI
= value
;
2371 case M32C_OPERAND_DST32RNUNPREFIXEDHI
:
2374 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 2, 32, total_length
, pc
, & value
);
2375 value
= ((((value
) + (2))) % (4));
2376 fields
->f_dst32_rn_unprefixed_HI
= value
;
2379 case M32C_OPERAND_DST32RNUNPREFIXEDQI
:
2382 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 2, 32, total_length
, pc
, & value
);
2383 value
= (((((~ (((USI
) (value
) >> (1))))) & (1))) | (((((value
) << (1))) & (2))));
2384 fields
->f_dst32_rn_unprefixed_QI
= value
;
2387 case M32C_OPERAND_DST32RNUNPREFIXEDSI
:
2390 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 2, 32, total_length
, pc
, & value
);
2391 value
= ((value
) - (2));
2392 fields
->f_dst32_rn_unprefixed_SI
= value
;
2395 case M32C_OPERAND_G
:
2397 case M32C_OPERAND_IMM_12_S4
:
2398 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
);
2400 case M32C_OPERAND_IMM_12_S4N
:
2401 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
);
2403 case M32C_OPERAND_IMM_13_U3
:
2404 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_imm_13_u3
);
2406 case M32C_OPERAND_IMM_16_HI
:
2409 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 16, 16, 32, total_length
, pc
, & value
);
2410 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
2411 fields
->f_dsp_16_s16
= value
;
2414 case M32C_OPERAND_IMM_16_QI
:
2415 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
);
2417 case M32C_OPERAND_IMM_16_SI
:
2421 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 16, 32, total_length
, pc
, & value
);
2422 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
2423 fields
->f_dsp_16_u16
= value
;
2425 if (length
<= 0) break;
2428 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 16, 32, total_length
, pc
, & value
);
2429 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
2430 fields
->f_dsp_32_u16
= value
;
2432 if (length
<= 0) break;
2434 FLD (f_dsp_16_s32
) = ((((FLD (f_dsp_16_u16
)) & (65535))) | (((((FLD (f_dsp_32_u16
)) << (16))) & (0xffff0000))));
2438 case M32C_OPERAND_IMM_20_S4
:
2439 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
);
2441 case M32C_OPERAND_IMM_24_HI
:
2443 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2444 if (length
<= 0) break;
2445 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
2446 if (length
<= 0) break;
2448 FLD (f_dsp_24_s16
) = EXTHISI (((HI
) (UINT
) (((((FLD (f_dsp_32_u8
)) << (8))) | (FLD (f_dsp_24_u8
))))));
2452 case M32C_OPERAND_IMM_24_QI
:
2453 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
);
2455 case M32C_OPERAND_IMM_24_SI
:
2457 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2458 if (length
<= 0) break;
2461 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 24, 32, total_length
, pc
, & value
);
2462 value
= ((((((((USI
) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
2463 fields
->f_dsp_32_u24
= value
;
2465 if (length
<= 0) break;
2467 FLD (f_dsp_24_s32
) = ((((FLD (f_dsp_24_u8
)) & (255))) | (((((FLD (f_dsp_32_u24
)) << (8))) & (0xffffff00))));
2471 case M32C_OPERAND_IMM_32_HI
:
2474 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 16, 32, total_length
, pc
, & value
);
2475 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
2476 fields
->f_dsp_32_s16
= value
;
2479 case M32C_OPERAND_IMM_32_QI
:
2480 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
);
2482 case M32C_OPERAND_IMM_32_SI
:
2485 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 0, 32, 32, total_length
, pc
, & value
);
2486 value
= EXTSISI (((((((((UINT
) (value
) >> (24))) & (255))) | (((((UINT
) (value
) >> (8))) & (65280))))) | (((((((value
) & (65280))) << (8))) | (((((value
) & (255))) << (24)))))));
2487 fields
->f_dsp_32_s32
= value
;
2490 case M32C_OPERAND_IMM_40_HI
:
2493 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 8, 16, 32, total_length
, pc
, & value
);
2494 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
2495 fields
->f_dsp_40_s16
= value
;
2498 case M32C_OPERAND_IMM_40_QI
:
2499 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
);
2501 case M32C_OPERAND_IMM_40_SI
:
2505 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 8, 24, 32, total_length
, pc
, & value
);
2506 value
= ((((((((USI
) (value
) >> (16))) & (255))) | (((value
) & (65280))))) | (((((value
) << (16))) & (16711680))));
2507 fields
->f_dsp_40_u24
= value
;
2509 if (length
<= 0) break;
2510 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 64, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_64_u8
);
2511 if (length
<= 0) break;
2513 FLD (f_dsp_40_s32
) = ((((FLD (f_dsp_40_u24
)) & (16777215))) | (((((FLD (f_dsp_64_u8
)) << (24))) & (0xff000000))));
2517 case M32C_OPERAND_IMM_48_HI
:
2520 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 32, 16, 16, 32, total_length
, pc
, & value
);
2521 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
2522 fields
->f_dsp_48_s16
= value
;
2525 case M32C_OPERAND_IMM_48_QI
:
2526 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
);
2528 case M32C_OPERAND_IMM_48_SI
:
2532 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 16, 16, 32, total_length
, pc
, & value
);
2533 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
2534 fields
->f_dsp_48_u16
= value
;
2536 if (length
<= 0) break;
2539 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 64, 0, 16, 32, total_length
, pc
, & value
);
2540 value
= ((((((UHI
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8))));
2541 fields
->f_dsp_64_u16
= value
;
2543 if (length
<= 0) break;
2545 FLD (f_dsp_48_s32
) = ((((FLD (f_dsp_48_u16
)) & (65535))) | (((((FLD (f_dsp_64_u16
)) & (65535))) << (16))));
2549 case M32C_OPERAND_IMM_56_HI
:
2551 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_56_u8
);
2552 if (length
<= 0) break;
2553 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 64, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_64_u8
);
2554 if (length
<= 0) break;
2556 FLD (f_dsp_56_s16
) = EXTHISI (((HI
) (UINT
) (((((FLD (f_dsp_64_u8
)) << (8))) | (FLD (f_dsp_56_u8
))))));
2560 case M32C_OPERAND_IMM_56_QI
:
2561 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
);
2563 case M32C_OPERAND_IMM_64_HI
:
2566 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 64, 0, 16, 32, total_length
, pc
, & value
);
2567 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
2568 fields
->f_dsp_64_s16
= value
;
2571 case M32C_OPERAND_IMM_8_HI
:
2574 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_SIGNED
), 0, 8, 16, 32, total_length
, pc
, & value
);
2575 value
= EXTHISI (((HI
) (INT
) (((((((UINT
) (value
) >> (8))) & (255))) | (((((value
) & (255))) << (8)))))));
2576 fields
->f_dsp_8_s16
= value
;
2579 case M32C_OPERAND_IMM_8_QI
:
2580 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
);
2582 case M32C_OPERAND_IMM_8_S4
:
2583 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
);
2585 case M32C_OPERAND_IMM_8_S4N
:
2586 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
);
2588 case M32C_OPERAND_IMM_SH_12_S4
:
2589 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
);
2591 case M32C_OPERAND_IMM_SH_20_S4
:
2592 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
);
2594 case M32C_OPERAND_IMM_SH_8_S4
:
2595 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
);
2597 case M32C_OPERAND_IMM1_S
:
2600 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 2, 1, 32, total_length
, pc
, & value
);
2601 value
= ((value
) + (1));
2602 fields
->f_imm1_S
= value
;
2605 case M32C_OPERAND_IMM3_S
:
2607 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 2, 2, 32, total_length
, pc
, & fields
->f_2_2
);
2608 if (length
<= 0) break;
2609 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 7, 1, 32, total_length
, pc
, & fields
->f_7_1
);
2610 if (length
<= 0) break;
2612 FLD (f_imm3_S
) = ((((((FLD (f_2_2
)) << (1))) | (FLD (f_7_1
)))) + (1));
2616 case M32C_OPERAND_LAB_16_8
:
2619 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
);
2620 value
= ((value
) + (((pc
) + (2))));
2621 fields
->f_lab_16_8
= value
;
2624 case M32C_OPERAND_LAB_24_8
:
2627 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
);
2628 value
= ((value
) + (((pc
) + (2))));
2629 fields
->f_lab_24_8
= value
;
2632 case M32C_OPERAND_LAB_32_8
:
2635 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
);
2636 value
= ((value
) + (((pc
) + (2))));
2637 fields
->f_lab_32_8
= value
;
2640 case M32C_OPERAND_LAB_40_8
:
2643 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
);
2644 value
= ((value
) + (((pc
) + (2))));
2645 fields
->f_lab_40_8
= value
;
2648 case M32C_OPERAND_LAB_5_3
:
2651 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_PCREL_ADDR
), 0, 5, 3, 32, total_length
, pc
, & value
);
2652 value
= ((value
) + (((pc
) + (2))));
2653 fields
->f_lab_5_3
= value
;
2656 case M32C_OPERAND_LAB_8_16
:
2659 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
);
2660 value
= ((((((((((USI
) (((value
) & (65280))) >> (8))) | (((((value
) & (255))) << (8))))) ^ (32768))) - (32768))) + (((pc
) + (1))));
2661 fields
->f_lab_8_16
= value
;
2664 case M32C_OPERAND_LAB_8_24
:
2667 length
= extract_normal (cd
, ex_info
, insn_value
, 0|(1<<CGEN_IFLD_ABS_ADDR
), 0, 8, 24, 32, total_length
, pc
, & value
);
2668 value
= ((((((USI
) (value
) >> (16))) | (((value
) & (65280))))) | (((((value
) & (255))) << (16))));
2669 fields
->f_lab_8_24
= value
;
2672 case M32C_OPERAND_LAB_8_8
:
2675 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
);
2676 value
= ((value
) + (((pc
) + (1))));
2677 fields
->f_lab_8_8
= value
;
2680 case M32C_OPERAND_LAB32_JMP_S
:
2682 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 2, 2, 32, total_length
, pc
, & fields
->f_2_2
);
2683 if (length
<= 0) break;
2684 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 7, 1, 32, total_length
, pc
, & fields
->f_7_1
);
2685 if (length
<= 0) break;
2687 FLD (f_lab32_jmp_s
) = ((pc
) + (((((((FLD (f_2_2
)) << (1))) | (FLD (f_7_1
)))) + (2))));
2691 case M32C_OPERAND_Q
:
2693 case M32C_OPERAND_R0
:
2695 case M32C_OPERAND_R0H
:
2697 case M32C_OPERAND_R0L
:
2699 case M32C_OPERAND_R1
:
2701 case M32C_OPERAND_R1R2R0
:
2703 case M32C_OPERAND_R2
:
2705 case M32C_OPERAND_R2R0
:
2707 case M32C_OPERAND_R3
:
2709 case M32C_OPERAND_R3R1
:
2711 case M32C_OPERAND_REGSETPOP
:
2712 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 8, 32, total_length
, pc
, & fields
->f_8_8
);
2714 case M32C_OPERAND_REGSETPUSH
:
2715 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 8, 8, 32, total_length
, pc
, & fields
->f_8_8
);
2717 case M32C_OPERAND_RN16_PUSH_S
:
2718 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 4, 1, 32, total_length
, pc
, & fields
->f_4_1
);
2720 case M32C_OPERAND_S
:
2722 case M32C_OPERAND_SRC16AN
:
2723 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src16_an
);
2725 case M32C_OPERAND_SRC16ANHI
:
2726 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src16_an
);
2728 case M32C_OPERAND_SRC16ANQI
:
2729 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src16_an
);
2731 case M32C_OPERAND_SRC16RNHI
:
2732 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 10, 2, 32, total_length
, pc
, & fields
->f_src16_rn
);
2734 case M32C_OPERAND_SRC16RNQI
:
2735 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 10, 2, 32, total_length
, pc
, & fields
->f_src16_rn
);
2737 case M32C_OPERAND_SRC32ANPREFIXED
:
2738 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 19, 1, 32, total_length
, pc
, & fields
->f_src32_an_prefixed
);
2740 case M32C_OPERAND_SRC32ANPREFIXEDHI
:
2741 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 19, 1, 32, total_length
, pc
, & fields
->f_src32_an_prefixed
);
2743 case M32C_OPERAND_SRC32ANPREFIXEDQI
:
2744 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 19, 1, 32, total_length
, pc
, & fields
->f_src32_an_prefixed
);
2746 case M32C_OPERAND_SRC32ANPREFIXEDSI
:
2747 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 19, 1, 32, total_length
, pc
, & fields
->f_src32_an_prefixed
);
2749 case M32C_OPERAND_SRC32ANUNPREFIXED
:
2750 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src32_an_unprefixed
);
2752 case M32C_OPERAND_SRC32ANUNPREFIXEDHI
:
2753 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src32_an_unprefixed
);
2755 case M32C_OPERAND_SRC32ANUNPREFIXEDQI
:
2756 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src32_an_unprefixed
);
2758 case M32C_OPERAND_SRC32ANUNPREFIXEDSI
:
2759 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 11, 1, 32, total_length
, pc
, & fields
->f_src32_an_unprefixed
);
2761 case M32C_OPERAND_SRC32RNPREFIXEDHI
:
2764 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 18, 2, 32, total_length
, pc
, & value
);
2765 value
= ((((value
) + (2))) % (4));
2766 fields
->f_src32_rn_prefixed_HI
= value
;
2769 case M32C_OPERAND_SRC32RNPREFIXEDQI
:
2772 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 18, 2, 32, total_length
, pc
, & value
);
2773 value
= (((((~ (((USI
) (value
) >> (1))))) & (1))) | (((((value
) << (1))) & (2))));
2774 fields
->f_src32_rn_prefixed_QI
= value
;
2777 case M32C_OPERAND_SRC32RNPREFIXEDSI
:
2780 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 18, 2, 32, total_length
, pc
, & value
);
2781 value
= ((value
) - (2));
2782 fields
->f_src32_rn_prefixed_SI
= value
;
2785 case M32C_OPERAND_SRC32RNUNPREFIXEDHI
:
2788 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 10, 2, 32, total_length
, pc
, & value
);
2789 value
= ((((value
) + (2))) % (4));
2790 fields
->f_src32_rn_unprefixed_HI
= value
;
2793 case M32C_OPERAND_SRC32RNUNPREFIXEDQI
:
2796 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 10, 2, 32, total_length
, pc
, & value
);
2797 value
= (((((~ (((USI
) (value
) >> (1))))) & (1))) | (((((value
) << (1))) & (2))));
2798 fields
->f_src32_rn_unprefixed_QI
= value
;
2801 case M32C_OPERAND_SRC32RNUNPREFIXEDSI
:
2804 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 10, 2, 32, total_length
, pc
, & value
);
2805 value
= ((value
) - (2));
2806 fields
->f_src32_rn_unprefixed_SI
= value
;
2809 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL
:
2810 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 5, 1, 32, total_length
, pc
, & fields
->f_5_1
);
2812 case M32C_OPERAND_X
:
2814 case M32C_OPERAND_Z
:
2816 case M32C_OPERAND_COND16_16
:
2817 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_16_u8
);
2819 case M32C_OPERAND_COND16_24
:
2820 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2822 case M32C_OPERAND_COND16_32
:
2823 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
2825 case M32C_OPERAND_COND16C
:
2826 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 12, 4, 32, total_length
, pc
, & fields
->f_cond16
);
2828 case M32C_OPERAND_COND16J
:
2829 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 12, 4, 32, total_length
, pc
, & fields
->f_cond16
);
2831 case M32C_OPERAND_COND16J5
:
2832 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 5, 3, 32, total_length
, pc
, & fields
->f_cond16j_5
);
2834 case M32C_OPERAND_COND32
:
2836 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 1, 32, total_length
, pc
, & fields
->f_9_1
);
2837 if (length
<= 0) break;
2838 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_13_3
);
2839 if (length
<= 0) break;
2841 FLD (f_cond32
) = ((((FLD (f_9_1
)) << (3))) | (FLD (f_13_3
)));
2845 case M32C_OPERAND_COND32_16
:
2846 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 16, 8, 32, total_length
, pc
, & fields
->f_dsp_16_u8
);
2848 case M32C_OPERAND_COND32_24
:
2849 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 24, 8, 32, total_length
, pc
, & fields
->f_dsp_24_u8
);
2851 case M32C_OPERAND_COND32_32
:
2852 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 0, 8, 32, total_length
, pc
, & fields
->f_dsp_32_u8
);
2854 case M32C_OPERAND_COND32_40
:
2855 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 32, 8, 8, 32, total_length
, pc
, & fields
->f_dsp_40_u8
);
2857 case M32C_OPERAND_COND32J
:
2859 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 1, 3, 32, total_length
, pc
, & fields
->f_1_3
);
2860 if (length
<= 0) break;
2861 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 7, 1, 32, total_length
, pc
, & fields
->f_7_1
);
2862 if (length
<= 0) break;
2864 FLD (f_cond32j
) = ((((FLD (f_1_3
)) << (1))) | (FLD (f_7_1
)));
2868 case M32C_OPERAND_CR1_PREFIXED_32
:
2869 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_21_3
);
2871 case M32C_OPERAND_CR1_UNPREFIXED_32
:
2872 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_13_3
);
2874 case M32C_OPERAND_CR16
:
2875 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 3, 32, total_length
, pc
, & fields
->f_9_3
);
2877 case M32C_OPERAND_CR2_32
:
2878 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_13_3
);
2880 case M32C_OPERAND_CR3_PREFIXED_32
:
2881 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 21, 3, 32, total_length
, pc
, & fields
->f_21_3
);
2883 case M32C_OPERAND_CR3_UNPREFIXED_32
:
2884 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_13_3
);
2886 case M32C_OPERAND_FLAGS16
:
2887 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 9, 3, 32, total_length
, pc
, & fields
->f_9_3
);
2889 case M32C_OPERAND_FLAGS32
:
2890 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 13, 3, 32, total_length
, pc
, & fields
->f_13_3
);
2892 case M32C_OPERAND_SCCOND32
:
2893 length
= extract_normal (cd
, ex_info
, insn_value
, 0, 0, 12, 4, 32, total_length
, pc
, & fields
->f_cond16
);
2895 case M32C_OPERAND_SIZE
:
2899 /* xgettext:c-format */
2900 opcodes_error_handler
2901 (_("internal error: unrecognized field %d while decoding insn"),
2909 cgen_insert_fn
* const m32c_cgen_insert_handlers
[] =
2914 cgen_extract_fn
* const m32c_cgen_extract_handlers
[] =
2916 extract_insn_normal
,
2919 int m32c_cgen_get_int_operand (CGEN_CPU_DESC
, int, const CGEN_FIELDS
*);
2920 bfd_vma
m32c_cgen_get_vma_operand (CGEN_CPU_DESC
, int, const CGEN_FIELDS
*);
2922 /* Getting values from cgen_fields is handled by a collection of functions.
2923 They are distinguished by the type of the VALUE argument they return.
2924 TODO: floating point, inlining support, remove cases where result type
2928 m32c_cgen_get_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED
,
2930 const CGEN_FIELDS
* fields
)
2936 case M32C_OPERAND_A0
:
2939 case M32C_OPERAND_A1
:
2942 case M32C_OPERAND_AN16_PUSH_S
:
2943 value
= fields
->f_4_1
;
2945 case M32C_OPERAND_BIT16AN
:
2946 value
= fields
->f_dst16_an
;
2948 case M32C_OPERAND_BIT16RN
:
2949 value
= fields
->f_dst16_rn
;
2951 case M32C_OPERAND_BIT3_S
:
2952 value
= fields
->f_imm3_S
;
2954 case M32C_OPERAND_BIT32ANPREFIXED
:
2955 value
= fields
->f_dst32_an_prefixed
;
2957 case M32C_OPERAND_BIT32ANUNPREFIXED
:
2958 value
= fields
->f_dst32_an_unprefixed
;
2960 case M32C_OPERAND_BIT32RNPREFIXED
:
2961 value
= fields
->f_dst32_rn_prefixed_QI
;
2963 case M32C_OPERAND_BIT32RNUNPREFIXED
:
2964 value
= fields
->f_dst32_rn_unprefixed_QI
;
2966 case M32C_OPERAND_BITBASE16_16_S8
:
2967 value
= fields
->f_dsp_16_s8
;
2969 case M32C_OPERAND_BITBASE16_16_U16
:
2970 value
= fields
->f_dsp_16_u16
;
2972 case M32C_OPERAND_BITBASE16_16_U8
:
2973 value
= fields
->f_dsp_16_u8
;
2975 case M32C_OPERAND_BITBASE16_8_U11_S
:
2976 value
= fields
->f_bitbase16_u11_S
;
2978 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED
:
2979 value
= fields
->f_bitbase32_16_s11_unprefixed
;
2981 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED
:
2982 value
= fields
->f_bitbase32_16_s19_unprefixed
;
2984 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED
:
2985 value
= fields
->f_bitbase32_16_u11_unprefixed
;
2987 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED
:
2988 value
= fields
->f_bitbase32_16_u19_unprefixed
;
2990 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED
:
2991 value
= fields
->f_bitbase32_16_u27_unprefixed
;
2993 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED
:
2994 value
= fields
->f_bitbase32_24_s11_prefixed
;
2996 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED
:
2997 value
= fields
->f_bitbase32_24_s19_prefixed
;
2999 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED
:
3000 value
= fields
->f_bitbase32_24_u11_prefixed
;
3002 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED
:
3003 value
= fields
->f_bitbase32_24_u19_prefixed
;
3005 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED
:
3006 value
= fields
->f_bitbase32_24_u27_prefixed
;
3008 case M32C_OPERAND_BITNO16R
:
3009 value
= fields
->f_dsp_16_u8
;
3011 case M32C_OPERAND_BITNO32PREFIXED
:
3012 value
= fields
->f_bitno32_prefixed
;
3014 case M32C_OPERAND_BITNO32UNPREFIXED
:
3015 value
= fields
->f_bitno32_unprefixed
;
3017 case M32C_OPERAND_DSP_10_U6
:
3018 value
= fields
->f_dsp_10_u6
;
3020 case M32C_OPERAND_DSP_16_S16
:
3021 value
= fields
->f_dsp_16_s16
;
3023 case M32C_OPERAND_DSP_16_S8
:
3024 value
= fields
->f_dsp_16_s8
;
3026 case M32C_OPERAND_DSP_16_U16
:
3027 value
= fields
->f_dsp_16_u16
;
3029 case M32C_OPERAND_DSP_16_U20
:
3030 value
= fields
->f_dsp_16_u24
;
3032 case M32C_OPERAND_DSP_16_U24
:
3033 value
= fields
->f_dsp_16_u24
;
3035 case M32C_OPERAND_DSP_16_U8
:
3036 value
= fields
->f_dsp_16_u8
;
3038 case M32C_OPERAND_DSP_24_S16
:
3039 value
= fields
->f_dsp_24_s16
;
3041 case M32C_OPERAND_DSP_24_S8
:
3042 value
= fields
->f_dsp_24_s8
;
3044 case M32C_OPERAND_DSP_24_U16
:
3045 value
= fields
->f_dsp_24_u16
;
3047 case M32C_OPERAND_DSP_24_U20
:
3048 value
= fields
->f_dsp_24_u24
;
3050 case M32C_OPERAND_DSP_24_U24
:
3051 value
= fields
->f_dsp_24_u24
;
3053 case M32C_OPERAND_DSP_24_U8
:
3054 value
= fields
->f_dsp_24_u8
;
3056 case M32C_OPERAND_DSP_32_S16
:
3057 value
= fields
->f_dsp_32_s16
;
3059 case M32C_OPERAND_DSP_32_S8
:
3060 value
= fields
->f_dsp_32_s8
;
3062 case M32C_OPERAND_DSP_32_U16
:
3063 value
= fields
->f_dsp_32_u16
;
3065 case M32C_OPERAND_DSP_32_U20
:
3066 value
= fields
->f_dsp_32_u24
;
3068 case M32C_OPERAND_DSP_32_U24
:
3069 value
= fields
->f_dsp_32_u24
;
3071 case M32C_OPERAND_DSP_32_U8
:
3072 value
= fields
->f_dsp_32_u8
;
3074 case M32C_OPERAND_DSP_40_S16
:
3075 value
= fields
->f_dsp_40_s16
;
3077 case M32C_OPERAND_DSP_40_S8
:
3078 value
= fields
->f_dsp_40_s8
;
3080 case M32C_OPERAND_DSP_40_U16
:
3081 value
= fields
->f_dsp_40_u16
;
3083 case M32C_OPERAND_DSP_40_U20
:
3084 value
= fields
->f_dsp_40_u20
;
3086 case M32C_OPERAND_DSP_40_U24
:
3087 value
= fields
->f_dsp_40_u24
;
3089 case M32C_OPERAND_DSP_40_U8
:
3090 value
= fields
->f_dsp_40_u8
;
3092 case M32C_OPERAND_DSP_48_S16
:
3093 value
= fields
->f_dsp_48_s16
;
3095 case M32C_OPERAND_DSP_48_S8
:
3096 value
= fields
->f_dsp_48_s8
;
3098 case M32C_OPERAND_DSP_48_U16
:
3099 value
= fields
->f_dsp_48_u16
;
3101 case M32C_OPERAND_DSP_48_U20
:
3102 value
= fields
->f_dsp_48_u20
;
3104 case M32C_OPERAND_DSP_48_U24
:
3105 value
= fields
->f_dsp_48_u24
;
3107 case M32C_OPERAND_DSP_48_U8
:
3108 value
= fields
->f_dsp_48_u8
;
3110 case M32C_OPERAND_DSP_8_S24
:
3111 value
= fields
->f_dsp_8_s24
;
3113 case M32C_OPERAND_DSP_8_S8
:
3114 value
= fields
->f_dsp_8_s8
;
3116 case M32C_OPERAND_DSP_8_U16
:
3117 value
= fields
->f_dsp_8_u16
;
3119 case M32C_OPERAND_DSP_8_U24
:
3120 value
= fields
->f_dsp_8_u24
;
3122 case M32C_OPERAND_DSP_8_U6
:
3123 value
= fields
->f_dsp_8_u6
;
3125 case M32C_OPERAND_DSP_8_U8
:
3126 value
= fields
->f_dsp_8_u8
;
3128 case M32C_OPERAND_DST16AN
:
3129 value
= fields
->f_dst16_an
;
3131 case M32C_OPERAND_DST16AN_S
:
3132 value
= fields
->f_dst16_an_s
;
3134 case M32C_OPERAND_DST16ANHI
:
3135 value
= fields
->f_dst16_an
;
3137 case M32C_OPERAND_DST16ANQI
:
3138 value
= fields
->f_dst16_an
;
3140 case M32C_OPERAND_DST16ANQI_S
:
3141 value
= fields
->f_dst16_rn_QI_s
;
3143 case M32C_OPERAND_DST16ANSI
:
3144 value
= fields
->f_dst16_an
;
3146 case M32C_OPERAND_DST16RNEXTQI
:
3147 value
= fields
->f_dst16_rn_ext
;
3149 case M32C_OPERAND_DST16RNHI
:
3150 value
= fields
->f_dst16_rn
;
3152 case M32C_OPERAND_DST16RNQI
:
3153 value
= fields
->f_dst16_rn
;
3155 case M32C_OPERAND_DST16RNQI_S
:
3156 value
= fields
->f_dst16_rn_QI_s
;
3158 case M32C_OPERAND_DST16RNSI
:
3159 value
= fields
->f_dst16_rn
;
3161 case M32C_OPERAND_DST32ANEXTUNPREFIXED
:
3162 value
= fields
->f_dst32_an_unprefixed
;
3164 case M32C_OPERAND_DST32ANPREFIXED
:
3165 value
= fields
->f_dst32_an_prefixed
;
3167 case M32C_OPERAND_DST32ANPREFIXEDHI
:
3168 value
= fields
->f_dst32_an_prefixed
;
3170 case M32C_OPERAND_DST32ANPREFIXEDQI
:
3171 value
= fields
->f_dst32_an_prefixed
;
3173 case M32C_OPERAND_DST32ANPREFIXEDSI
:
3174 value
= fields
->f_dst32_an_prefixed
;
3176 case M32C_OPERAND_DST32ANUNPREFIXED
:
3177 value
= fields
->f_dst32_an_unprefixed
;
3179 case M32C_OPERAND_DST32ANUNPREFIXEDHI
:
3180 value
= fields
->f_dst32_an_unprefixed
;
3182 case M32C_OPERAND_DST32ANUNPREFIXEDQI
:
3183 value
= fields
->f_dst32_an_unprefixed
;
3185 case M32C_OPERAND_DST32ANUNPREFIXEDSI
:
3186 value
= fields
->f_dst32_an_unprefixed
;
3188 case M32C_OPERAND_DST32R0HI_S
:
3191 case M32C_OPERAND_DST32R0QI_S
:
3194 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI
:
3195 value
= fields
->f_dst32_rn_ext_unprefixed
;
3197 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI
:
3198 value
= fields
->f_dst32_rn_ext_unprefixed
;
3200 case M32C_OPERAND_DST32RNPREFIXEDHI
:
3201 value
= fields
->f_dst32_rn_prefixed_HI
;
3203 case M32C_OPERAND_DST32RNPREFIXEDQI
:
3204 value
= fields
->f_dst32_rn_prefixed_QI
;
3206 case M32C_OPERAND_DST32RNPREFIXEDSI
:
3207 value
= fields
->f_dst32_rn_prefixed_SI
;
3209 case M32C_OPERAND_DST32RNUNPREFIXEDHI
:
3210 value
= fields
->f_dst32_rn_unprefixed_HI
;
3212 case M32C_OPERAND_DST32RNUNPREFIXEDQI
:
3213 value
= fields
->f_dst32_rn_unprefixed_QI
;
3215 case M32C_OPERAND_DST32RNUNPREFIXEDSI
:
3216 value
= fields
->f_dst32_rn_unprefixed_SI
;
3218 case M32C_OPERAND_G
:
3221 case M32C_OPERAND_IMM_12_S4
:
3222 value
= fields
->f_imm_12_s4
;
3224 case M32C_OPERAND_IMM_12_S4N
:
3225 value
= fields
->f_imm_12_s4
;
3227 case M32C_OPERAND_IMM_13_U3
:
3228 value
= fields
->f_imm_13_u3
;
3230 case M32C_OPERAND_IMM_16_HI
:
3231 value
= fields
->f_dsp_16_s16
;
3233 case M32C_OPERAND_IMM_16_QI
:
3234 value
= fields
->f_dsp_16_s8
;
3236 case M32C_OPERAND_IMM_16_SI
:
3237 value
= fields
->f_dsp_16_s32
;
3239 case M32C_OPERAND_IMM_20_S4
:
3240 value
= fields
->f_imm_20_s4
;
3242 case M32C_OPERAND_IMM_24_HI
:
3243 value
= fields
->f_dsp_24_s16
;
3245 case M32C_OPERAND_IMM_24_QI
:
3246 value
= fields
->f_dsp_24_s8
;
3248 case M32C_OPERAND_IMM_24_SI
:
3249 value
= fields
->f_dsp_24_s32
;
3251 case M32C_OPERAND_IMM_32_HI
:
3252 value
= fields
->f_dsp_32_s16
;
3254 case M32C_OPERAND_IMM_32_QI
:
3255 value
= fields
->f_dsp_32_s8
;
3257 case M32C_OPERAND_IMM_32_SI
:
3258 value
= fields
->f_dsp_32_s32
;
3260 case M32C_OPERAND_IMM_40_HI
:
3261 value
= fields
->f_dsp_40_s16
;
3263 case M32C_OPERAND_IMM_40_QI
:
3264 value
= fields
->f_dsp_40_s8
;
3266 case M32C_OPERAND_IMM_40_SI
:
3267 value
= fields
->f_dsp_40_s32
;
3269 case M32C_OPERAND_IMM_48_HI
:
3270 value
= fields
->f_dsp_48_s16
;
3272 case M32C_OPERAND_IMM_48_QI
:
3273 value
= fields
->f_dsp_48_s8
;
3275 case M32C_OPERAND_IMM_48_SI
:
3276 value
= fields
->f_dsp_48_s32
;
3278 case M32C_OPERAND_IMM_56_HI
:
3279 value
= fields
->f_dsp_56_s16
;
3281 case M32C_OPERAND_IMM_56_QI
:
3282 value
= fields
->f_dsp_56_s8
;
3284 case M32C_OPERAND_IMM_64_HI
:
3285 value
= fields
->f_dsp_64_s16
;
3287 case M32C_OPERAND_IMM_8_HI
:
3288 value
= fields
->f_dsp_8_s16
;
3290 case M32C_OPERAND_IMM_8_QI
:
3291 value
= fields
->f_dsp_8_s8
;
3293 case M32C_OPERAND_IMM_8_S4
:
3294 value
= fields
->f_imm_8_s4
;
3296 case M32C_OPERAND_IMM_8_S4N
:
3297 value
= fields
->f_imm_8_s4
;
3299 case M32C_OPERAND_IMM_SH_12_S4
:
3300 value
= fields
->f_imm_12_s4
;
3302 case M32C_OPERAND_IMM_SH_20_S4
:
3303 value
= fields
->f_imm_20_s4
;
3305 case M32C_OPERAND_IMM_SH_8_S4
:
3306 value
= fields
->f_imm_8_s4
;
3308 case M32C_OPERAND_IMM1_S
:
3309 value
= fields
->f_imm1_S
;
3311 case M32C_OPERAND_IMM3_S
:
3312 value
= fields
->f_imm3_S
;
3314 case M32C_OPERAND_LAB_16_8
:
3315 value
= fields
->f_lab_16_8
;
3317 case M32C_OPERAND_LAB_24_8
:
3318 value
= fields
->f_lab_24_8
;
3320 case M32C_OPERAND_LAB_32_8
:
3321 value
= fields
->f_lab_32_8
;
3323 case M32C_OPERAND_LAB_40_8
:
3324 value
= fields
->f_lab_40_8
;
3326 case M32C_OPERAND_LAB_5_3
:
3327 value
= fields
->f_lab_5_3
;
3329 case M32C_OPERAND_LAB_8_16
:
3330 value
= fields
->f_lab_8_16
;
3332 case M32C_OPERAND_LAB_8_24
:
3333 value
= fields
->f_lab_8_24
;
3335 case M32C_OPERAND_LAB_8_8
:
3336 value
= fields
->f_lab_8_8
;
3338 case M32C_OPERAND_LAB32_JMP_S
:
3339 value
= fields
->f_lab32_jmp_s
;
3341 case M32C_OPERAND_Q
:
3344 case M32C_OPERAND_R0
:
3347 case M32C_OPERAND_R0H
:
3350 case M32C_OPERAND_R0L
:
3353 case M32C_OPERAND_R1
:
3356 case M32C_OPERAND_R1R2R0
:
3359 case M32C_OPERAND_R2
:
3362 case M32C_OPERAND_R2R0
:
3365 case M32C_OPERAND_R3
:
3368 case M32C_OPERAND_R3R1
:
3371 case M32C_OPERAND_REGSETPOP
:
3372 value
= fields
->f_8_8
;
3374 case M32C_OPERAND_REGSETPUSH
:
3375 value
= fields
->f_8_8
;
3377 case M32C_OPERAND_RN16_PUSH_S
:
3378 value
= fields
->f_4_1
;
3380 case M32C_OPERAND_S
:
3383 case M32C_OPERAND_SRC16AN
:
3384 value
= fields
->f_src16_an
;
3386 case M32C_OPERAND_SRC16ANHI
:
3387 value
= fields
->f_src16_an
;
3389 case M32C_OPERAND_SRC16ANQI
:
3390 value
= fields
->f_src16_an
;
3392 case M32C_OPERAND_SRC16RNHI
:
3393 value
= fields
->f_src16_rn
;
3395 case M32C_OPERAND_SRC16RNQI
:
3396 value
= fields
->f_src16_rn
;
3398 case M32C_OPERAND_SRC32ANPREFIXED
:
3399 value
= fields
->f_src32_an_prefixed
;
3401 case M32C_OPERAND_SRC32ANPREFIXEDHI
:
3402 value
= fields
->f_src32_an_prefixed
;
3404 case M32C_OPERAND_SRC32ANPREFIXEDQI
:
3405 value
= fields
->f_src32_an_prefixed
;
3407 case M32C_OPERAND_SRC32ANPREFIXEDSI
:
3408 value
= fields
->f_src32_an_prefixed
;
3410 case M32C_OPERAND_SRC32ANUNPREFIXED
:
3411 value
= fields
->f_src32_an_unprefixed
;
3413 case M32C_OPERAND_SRC32ANUNPREFIXEDHI
:
3414 value
= fields
->f_src32_an_unprefixed
;
3416 case M32C_OPERAND_SRC32ANUNPREFIXEDQI
:
3417 value
= fields
->f_src32_an_unprefixed
;
3419 case M32C_OPERAND_SRC32ANUNPREFIXEDSI
:
3420 value
= fields
->f_src32_an_unprefixed
;
3422 case M32C_OPERAND_SRC32RNPREFIXEDHI
:
3423 value
= fields
->f_src32_rn_prefixed_HI
;
3425 case M32C_OPERAND_SRC32RNPREFIXEDQI
:
3426 value
= fields
->f_src32_rn_prefixed_QI
;
3428 case M32C_OPERAND_SRC32RNPREFIXEDSI
:
3429 value
= fields
->f_src32_rn_prefixed_SI
;
3431 case M32C_OPERAND_SRC32RNUNPREFIXEDHI
:
3432 value
= fields
->f_src32_rn_unprefixed_HI
;
3434 case M32C_OPERAND_SRC32RNUNPREFIXEDQI
:
3435 value
= fields
->f_src32_rn_unprefixed_QI
;
3437 case M32C_OPERAND_SRC32RNUNPREFIXEDSI
:
3438 value
= fields
->f_src32_rn_unprefixed_SI
;
3440 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL
:
3441 value
= fields
->f_5_1
;
3443 case M32C_OPERAND_X
:
3446 case M32C_OPERAND_Z
:
3449 case M32C_OPERAND_COND16_16
:
3450 value
= fields
->f_dsp_16_u8
;
3452 case M32C_OPERAND_COND16_24
:
3453 value
= fields
->f_dsp_24_u8
;
3455 case M32C_OPERAND_COND16_32
:
3456 value
= fields
->f_dsp_32_u8
;
3458 case M32C_OPERAND_COND16C
:
3459 value
= fields
->f_cond16
;
3461 case M32C_OPERAND_COND16J
:
3462 value
= fields
->f_cond16
;
3464 case M32C_OPERAND_COND16J5
:
3465 value
= fields
->f_cond16j_5
;
3467 case M32C_OPERAND_COND32
:
3468 value
= fields
->f_cond32
;
3470 case M32C_OPERAND_COND32_16
:
3471 value
= fields
->f_dsp_16_u8
;
3473 case M32C_OPERAND_COND32_24
:
3474 value
= fields
->f_dsp_24_u8
;
3476 case M32C_OPERAND_COND32_32
:
3477 value
= fields
->f_dsp_32_u8
;
3479 case M32C_OPERAND_COND32_40
:
3480 value
= fields
->f_dsp_40_u8
;
3482 case M32C_OPERAND_COND32J
:
3483 value
= fields
->f_cond32j
;
3485 case M32C_OPERAND_CR1_PREFIXED_32
:
3486 value
= fields
->f_21_3
;
3488 case M32C_OPERAND_CR1_UNPREFIXED_32
:
3489 value
= fields
->f_13_3
;
3491 case M32C_OPERAND_CR16
:
3492 value
= fields
->f_9_3
;
3494 case M32C_OPERAND_CR2_32
:
3495 value
= fields
->f_13_3
;
3497 case M32C_OPERAND_CR3_PREFIXED_32
:
3498 value
= fields
->f_21_3
;
3500 case M32C_OPERAND_CR3_UNPREFIXED_32
:
3501 value
= fields
->f_13_3
;
3503 case M32C_OPERAND_FLAGS16
:
3504 value
= fields
->f_9_3
;
3506 case M32C_OPERAND_FLAGS32
:
3507 value
= fields
->f_13_3
;
3509 case M32C_OPERAND_SCCOND32
:
3510 value
= fields
->f_cond16
;
3512 case M32C_OPERAND_SIZE
:
3517 /* xgettext:c-format */
3518 opcodes_error_handler
3519 (_("internal error: unrecognized field %d while getting int operand"),
3528 m32c_cgen_get_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED
,
3530 const CGEN_FIELDS
* fields
)
3536 case M32C_OPERAND_A0
:
3539 case M32C_OPERAND_A1
:
3542 case M32C_OPERAND_AN16_PUSH_S
:
3543 value
= fields
->f_4_1
;
3545 case M32C_OPERAND_BIT16AN
:
3546 value
= fields
->f_dst16_an
;
3548 case M32C_OPERAND_BIT16RN
:
3549 value
= fields
->f_dst16_rn
;
3551 case M32C_OPERAND_BIT3_S
:
3552 value
= fields
->f_imm3_S
;
3554 case M32C_OPERAND_BIT32ANPREFIXED
:
3555 value
= fields
->f_dst32_an_prefixed
;
3557 case M32C_OPERAND_BIT32ANUNPREFIXED
:
3558 value
= fields
->f_dst32_an_unprefixed
;
3560 case M32C_OPERAND_BIT32RNPREFIXED
:
3561 value
= fields
->f_dst32_rn_prefixed_QI
;
3563 case M32C_OPERAND_BIT32RNUNPREFIXED
:
3564 value
= fields
->f_dst32_rn_unprefixed_QI
;
3566 case M32C_OPERAND_BITBASE16_16_S8
:
3567 value
= fields
->f_dsp_16_s8
;
3569 case M32C_OPERAND_BITBASE16_16_U16
:
3570 value
= fields
->f_dsp_16_u16
;
3572 case M32C_OPERAND_BITBASE16_16_U8
:
3573 value
= fields
->f_dsp_16_u8
;
3575 case M32C_OPERAND_BITBASE16_8_U11_S
:
3576 value
= fields
->f_bitbase16_u11_S
;
3578 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED
:
3579 value
= fields
->f_bitbase32_16_s11_unprefixed
;
3581 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED
:
3582 value
= fields
->f_bitbase32_16_s19_unprefixed
;
3584 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED
:
3585 value
= fields
->f_bitbase32_16_u11_unprefixed
;
3587 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED
:
3588 value
= fields
->f_bitbase32_16_u19_unprefixed
;
3590 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED
:
3591 value
= fields
->f_bitbase32_16_u27_unprefixed
;
3593 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED
:
3594 value
= fields
->f_bitbase32_24_s11_prefixed
;
3596 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED
:
3597 value
= fields
->f_bitbase32_24_s19_prefixed
;
3599 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED
:
3600 value
= fields
->f_bitbase32_24_u11_prefixed
;
3602 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED
:
3603 value
= fields
->f_bitbase32_24_u19_prefixed
;
3605 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED
:
3606 value
= fields
->f_bitbase32_24_u27_prefixed
;
3608 case M32C_OPERAND_BITNO16R
:
3609 value
= fields
->f_dsp_16_u8
;
3611 case M32C_OPERAND_BITNO32PREFIXED
:
3612 value
= fields
->f_bitno32_prefixed
;
3614 case M32C_OPERAND_BITNO32UNPREFIXED
:
3615 value
= fields
->f_bitno32_unprefixed
;
3617 case M32C_OPERAND_DSP_10_U6
:
3618 value
= fields
->f_dsp_10_u6
;
3620 case M32C_OPERAND_DSP_16_S16
:
3621 value
= fields
->f_dsp_16_s16
;
3623 case M32C_OPERAND_DSP_16_S8
:
3624 value
= fields
->f_dsp_16_s8
;
3626 case M32C_OPERAND_DSP_16_U16
:
3627 value
= fields
->f_dsp_16_u16
;
3629 case M32C_OPERAND_DSP_16_U20
:
3630 value
= fields
->f_dsp_16_u24
;
3632 case M32C_OPERAND_DSP_16_U24
:
3633 value
= fields
->f_dsp_16_u24
;
3635 case M32C_OPERAND_DSP_16_U8
:
3636 value
= fields
->f_dsp_16_u8
;
3638 case M32C_OPERAND_DSP_24_S16
:
3639 value
= fields
->f_dsp_24_s16
;
3641 case M32C_OPERAND_DSP_24_S8
:
3642 value
= fields
->f_dsp_24_s8
;
3644 case M32C_OPERAND_DSP_24_U16
:
3645 value
= fields
->f_dsp_24_u16
;
3647 case M32C_OPERAND_DSP_24_U20
:
3648 value
= fields
->f_dsp_24_u24
;
3650 case M32C_OPERAND_DSP_24_U24
:
3651 value
= fields
->f_dsp_24_u24
;
3653 case M32C_OPERAND_DSP_24_U8
:
3654 value
= fields
->f_dsp_24_u8
;
3656 case M32C_OPERAND_DSP_32_S16
:
3657 value
= fields
->f_dsp_32_s16
;
3659 case M32C_OPERAND_DSP_32_S8
:
3660 value
= fields
->f_dsp_32_s8
;
3662 case M32C_OPERAND_DSP_32_U16
:
3663 value
= fields
->f_dsp_32_u16
;
3665 case M32C_OPERAND_DSP_32_U20
:
3666 value
= fields
->f_dsp_32_u24
;
3668 case M32C_OPERAND_DSP_32_U24
:
3669 value
= fields
->f_dsp_32_u24
;
3671 case M32C_OPERAND_DSP_32_U8
:
3672 value
= fields
->f_dsp_32_u8
;
3674 case M32C_OPERAND_DSP_40_S16
:
3675 value
= fields
->f_dsp_40_s16
;
3677 case M32C_OPERAND_DSP_40_S8
:
3678 value
= fields
->f_dsp_40_s8
;
3680 case M32C_OPERAND_DSP_40_U16
:
3681 value
= fields
->f_dsp_40_u16
;
3683 case M32C_OPERAND_DSP_40_U20
:
3684 value
= fields
->f_dsp_40_u20
;
3686 case M32C_OPERAND_DSP_40_U24
:
3687 value
= fields
->f_dsp_40_u24
;
3689 case M32C_OPERAND_DSP_40_U8
:
3690 value
= fields
->f_dsp_40_u8
;
3692 case M32C_OPERAND_DSP_48_S16
:
3693 value
= fields
->f_dsp_48_s16
;
3695 case M32C_OPERAND_DSP_48_S8
:
3696 value
= fields
->f_dsp_48_s8
;
3698 case M32C_OPERAND_DSP_48_U16
:
3699 value
= fields
->f_dsp_48_u16
;
3701 case M32C_OPERAND_DSP_48_U20
:
3702 value
= fields
->f_dsp_48_u20
;
3704 case M32C_OPERAND_DSP_48_U24
:
3705 value
= fields
->f_dsp_48_u24
;
3707 case M32C_OPERAND_DSP_48_U8
:
3708 value
= fields
->f_dsp_48_u8
;
3710 case M32C_OPERAND_DSP_8_S24
:
3711 value
= fields
->f_dsp_8_s24
;
3713 case M32C_OPERAND_DSP_8_S8
:
3714 value
= fields
->f_dsp_8_s8
;
3716 case M32C_OPERAND_DSP_8_U16
:
3717 value
= fields
->f_dsp_8_u16
;
3719 case M32C_OPERAND_DSP_8_U24
:
3720 value
= fields
->f_dsp_8_u24
;
3722 case M32C_OPERAND_DSP_8_U6
:
3723 value
= fields
->f_dsp_8_u6
;
3725 case M32C_OPERAND_DSP_8_U8
:
3726 value
= fields
->f_dsp_8_u8
;
3728 case M32C_OPERAND_DST16AN
:
3729 value
= fields
->f_dst16_an
;
3731 case M32C_OPERAND_DST16AN_S
:
3732 value
= fields
->f_dst16_an_s
;
3734 case M32C_OPERAND_DST16ANHI
:
3735 value
= fields
->f_dst16_an
;
3737 case M32C_OPERAND_DST16ANQI
:
3738 value
= fields
->f_dst16_an
;
3740 case M32C_OPERAND_DST16ANQI_S
:
3741 value
= fields
->f_dst16_rn_QI_s
;
3743 case M32C_OPERAND_DST16ANSI
:
3744 value
= fields
->f_dst16_an
;
3746 case M32C_OPERAND_DST16RNEXTQI
:
3747 value
= fields
->f_dst16_rn_ext
;
3749 case M32C_OPERAND_DST16RNHI
:
3750 value
= fields
->f_dst16_rn
;
3752 case M32C_OPERAND_DST16RNQI
:
3753 value
= fields
->f_dst16_rn
;
3755 case M32C_OPERAND_DST16RNQI_S
:
3756 value
= fields
->f_dst16_rn_QI_s
;
3758 case M32C_OPERAND_DST16RNSI
:
3759 value
= fields
->f_dst16_rn
;
3761 case M32C_OPERAND_DST32ANEXTUNPREFIXED
:
3762 value
= fields
->f_dst32_an_unprefixed
;
3764 case M32C_OPERAND_DST32ANPREFIXED
:
3765 value
= fields
->f_dst32_an_prefixed
;
3767 case M32C_OPERAND_DST32ANPREFIXEDHI
:
3768 value
= fields
->f_dst32_an_prefixed
;
3770 case M32C_OPERAND_DST32ANPREFIXEDQI
:
3771 value
= fields
->f_dst32_an_prefixed
;
3773 case M32C_OPERAND_DST32ANPREFIXEDSI
:
3774 value
= fields
->f_dst32_an_prefixed
;
3776 case M32C_OPERAND_DST32ANUNPREFIXED
:
3777 value
= fields
->f_dst32_an_unprefixed
;
3779 case M32C_OPERAND_DST32ANUNPREFIXEDHI
:
3780 value
= fields
->f_dst32_an_unprefixed
;
3782 case M32C_OPERAND_DST32ANUNPREFIXEDQI
:
3783 value
= fields
->f_dst32_an_unprefixed
;
3785 case M32C_OPERAND_DST32ANUNPREFIXEDSI
:
3786 value
= fields
->f_dst32_an_unprefixed
;
3788 case M32C_OPERAND_DST32R0HI_S
:
3791 case M32C_OPERAND_DST32R0QI_S
:
3794 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI
:
3795 value
= fields
->f_dst32_rn_ext_unprefixed
;
3797 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI
:
3798 value
= fields
->f_dst32_rn_ext_unprefixed
;
3800 case M32C_OPERAND_DST32RNPREFIXEDHI
:
3801 value
= fields
->f_dst32_rn_prefixed_HI
;
3803 case M32C_OPERAND_DST32RNPREFIXEDQI
:
3804 value
= fields
->f_dst32_rn_prefixed_QI
;
3806 case M32C_OPERAND_DST32RNPREFIXEDSI
:
3807 value
= fields
->f_dst32_rn_prefixed_SI
;
3809 case M32C_OPERAND_DST32RNUNPREFIXEDHI
:
3810 value
= fields
->f_dst32_rn_unprefixed_HI
;
3812 case M32C_OPERAND_DST32RNUNPREFIXEDQI
:
3813 value
= fields
->f_dst32_rn_unprefixed_QI
;
3815 case M32C_OPERAND_DST32RNUNPREFIXEDSI
:
3816 value
= fields
->f_dst32_rn_unprefixed_SI
;
3818 case M32C_OPERAND_G
:
3821 case M32C_OPERAND_IMM_12_S4
:
3822 value
= fields
->f_imm_12_s4
;
3824 case M32C_OPERAND_IMM_12_S4N
:
3825 value
= fields
->f_imm_12_s4
;
3827 case M32C_OPERAND_IMM_13_U3
:
3828 value
= fields
->f_imm_13_u3
;
3830 case M32C_OPERAND_IMM_16_HI
:
3831 value
= fields
->f_dsp_16_s16
;
3833 case M32C_OPERAND_IMM_16_QI
:
3834 value
= fields
->f_dsp_16_s8
;
3836 case M32C_OPERAND_IMM_16_SI
:
3837 value
= fields
->f_dsp_16_s32
;
3839 case M32C_OPERAND_IMM_20_S4
:
3840 value
= fields
->f_imm_20_s4
;
3842 case M32C_OPERAND_IMM_24_HI
:
3843 value
= fields
->f_dsp_24_s16
;
3845 case M32C_OPERAND_IMM_24_QI
:
3846 value
= fields
->f_dsp_24_s8
;
3848 case M32C_OPERAND_IMM_24_SI
:
3849 value
= fields
->f_dsp_24_s32
;
3851 case M32C_OPERAND_IMM_32_HI
:
3852 value
= fields
->f_dsp_32_s16
;
3854 case M32C_OPERAND_IMM_32_QI
:
3855 value
= fields
->f_dsp_32_s8
;
3857 case M32C_OPERAND_IMM_32_SI
:
3858 value
= fields
->f_dsp_32_s32
;
3860 case M32C_OPERAND_IMM_40_HI
:
3861 value
= fields
->f_dsp_40_s16
;
3863 case M32C_OPERAND_IMM_40_QI
:
3864 value
= fields
->f_dsp_40_s8
;
3866 case M32C_OPERAND_IMM_40_SI
:
3867 value
= fields
->f_dsp_40_s32
;
3869 case M32C_OPERAND_IMM_48_HI
:
3870 value
= fields
->f_dsp_48_s16
;
3872 case M32C_OPERAND_IMM_48_QI
:
3873 value
= fields
->f_dsp_48_s8
;
3875 case M32C_OPERAND_IMM_48_SI
:
3876 value
= fields
->f_dsp_48_s32
;
3878 case M32C_OPERAND_IMM_56_HI
:
3879 value
= fields
->f_dsp_56_s16
;
3881 case M32C_OPERAND_IMM_56_QI
:
3882 value
= fields
->f_dsp_56_s8
;
3884 case M32C_OPERAND_IMM_64_HI
:
3885 value
= fields
->f_dsp_64_s16
;
3887 case M32C_OPERAND_IMM_8_HI
:
3888 value
= fields
->f_dsp_8_s16
;
3890 case M32C_OPERAND_IMM_8_QI
:
3891 value
= fields
->f_dsp_8_s8
;
3893 case M32C_OPERAND_IMM_8_S4
:
3894 value
= fields
->f_imm_8_s4
;
3896 case M32C_OPERAND_IMM_8_S4N
:
3897 value
= fields
->f_imm_8_s4
;
3899 case M32C_OPERAND_IMM_SH_12_S4
:
3900 value
= fields
->f_imm_12_s4
;
3902 case M32C_OPERAND_IMM_SH_20_S4
:
3903 value
= fields
->f_imm_20_s4
;
3905 case M32C_OPERAND_IMM_SH_8_S4
:
3906 value
= fields
->f_imm_8_s4
;
3908 case M32C_OPERAND_IMM1_S
:
3909 value
= fields
->f_imm1_S
;
3911 case M32C_OPERAND_IMM3_S
:
3912 value
= fields
->f_imm3_S
;
3914 case M32C_OPERAND_LAB_16_8
:
3915 value
= fields
->f_lab_16_8
;
3917 case M32C_OPERAND_LAB_24_8
:
3918 value
= fields
->f_lab_24_8
;
3920 case M32C_OPERAND_LAB_32_8
:
3921 value
= fields
->f_lab_32_8
;
3923 case M32C_OPERAND_LAB_40_8
:
3924 value
= fields
->f_lab_40_8
;
3926 case M32C_OPERAND_LAB_5_3
:
3927 value
= fields
->f_lab_5_3
;
3929 case M32C_OPERAND_LAB_8_16
:
3930 value
= fields
->f_lab_8_16
;
3932 case M32C_OPERAND_LAB_8_24
:
3933 value
= fields
->f_lab_8_24
;
3935 case M32C_OPERAND_LAB_8_8
:
3936 value
= fields
->f_lab_8_8
;
3938 case M32C_OPERAND_LAB32_JMP_S
:
3939 value
= fields
->f_lab32_jmp_s
;
3941 case M32C_OPERAND_Q
:
3944 case M32C_OPERAND_R0
:
3947 case M32C_OPERAND_R0H
:
3950 case M32C_OPERAND_R0L
:
3953 case M32C_OPERAND_R1
:
3956 case M32C_OPERAND_R1R2R0
:
3959 case M32C_OPERAND_R2
:
3962 case M32C_OPERAND_R2R0
:
3965 case M32C_OPERAND_R3
:
3968 case M32C_OPERAND_R3R1
:
3971 case M32C_OPERAND_REGSETPOP
:
3972 value
= fields
->f_8_8
;
3974 case M32C_OPERAND_REGSETPUSH
:
3975 value
= fields
->f_8_8
;
3977 case M32C_OPERAND_RN16_PUSH_S
:
3978 value
= fields
->f_4_1
;
3980 case M32C_OPERAND_S
:
3983 case M32C_OPERAND_SRC16AN
:
3984 value
= fields
->f_src16_an
;
3986 case M32C_OPERAND_SRC16ANHI
:
3987 value
= fields
->f_src16_an
;
3989 case M32C_OPERAND_SRC16ANQI
:
3990 value
= fields
->f_src16_an
;
3992 case M32C_OPERAND_SRC16RNHI
:
3993 value
= fields
->f_src16_rn
;
3995 case M32C_OPERAND_SRC16RNQI
:
3996 value
= fields
->f_src16_rn
;
3998 case M32C_OPERAND_SRC32ANPREFIXED
:
3999 value
= fields
->f_src32_an_prefixed
;
4001 case M32C_OPERAND_SRC32ANPREFIXEDHI
:
4002 value
= fields
->f_src32_an_prefixed
;
4004 case M32C_OPERAND_SRC32ANPREFIXEDQI
:
4005 value
= fields
->f_src32_an_prefixed
;
4007 case M32C_OPERAND_SRC32ANPREFIXEDSI
:
4008 value
= fields
->f_src32_an_prefixed
;
4010 case M32C_OPERAND_SRC32ANUNPREFIXED
:
4011 value
= fields
->f_src32_an_unprefixed
;
4013 case M32C_OPERAND_SRC32ANUNPREFIXEDHI
:
4014 value
= fields
->f_src32_an_unprefixed
;
4016 case M32C_OPERAND_SRC32ANUNPREFIXEDQI
:
4017 value
= fields
->f_src32_an_unprefixed
;
4019 case M32C_OPERAND_SRC32ANUNPREFIXEDSI
:
4020 value
= fields
->f_src32_an_unprefixed
;
4022 case M32C_OPERAND_SRC32RNPREFIXEDHI
:
4023 value
= fields
->f_src32_rn_prefixed_HI
;
4025 case M32C_OPERAND_SRC32RNPREFIXEDQI
:
4026 value
= fields
->f_src32_rn_prefixed_QI
;
4028 case M32C_OPERAND_SRC32RNPREFIXEDSI
:
4029 value
= fields
->f_src32_rn_prefixed_SI
;
4031 case M32C_OPERAND_SRC32RNUNPREFIXEDHI
:
4032 value
= fields
->f_src32_rn_unprefixed_HI
;
4034 case M32C_OPERAND_SRC32RNUNPREFIXEDQI
:
4035 value
= fields
->f_src32_rn_unprefixed_QI
;
4037 case M32C_OPERAND_SRC32RNUNPREFIXEDSI
:
4038 value
= fields
->f_src32_rn_unprefixed_SI
;
4040 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL
:
4041 value
= fields
->f_5_1
;
4043 case M32C_OPERAND_X
:
4046 case M32C_OPERAND_Z
:
4049 case M32C_OPERAND_COND16_16
:
4050 value
= fields
->f_dsp_16_u8
;
4052 case M32C_OPERAND_COND16_24
:
4053 value
= fields
->f_dsp_24_u8
;
4055 case M32C_OPERAND_COND16_32
:
4056 value
= fields
->f_dsp_32_u8
;
4058 case M32C_OPERAND_COND16C
:
4059 value
= fields
->f_cond16
;
4061 case M32C_OPERAND_COND16J
:
4062 value
= fields
->f_cond16
;
4064 case M32C_OPERAND_COND16J5
:
4065 value
= fields
->f_cond16j_5
;
4067 case M32C_OPERAND_COND32
:
4068 value
= fields
->f_cond32
;
4070 case M32C_OPERAND_COND32_16
:
4071 value
= fields
->f_dsp_16_u8
;
4073 case M32C_OPERAND_COND32_24
:
4074 value
= fields
->f_dsp_24_u8
;
4076 case M32C_OPERAND_COND32_32
:
4077 value
= fields
->f_dsp_32_u8
;
4079 case M32C_OPERAND_COND32_40
:
4080 value
= fields
->f_dsp_40_u8
;
4082 case M32C_OPERAND_COND32J
:
4083 value
= fields
->f_cond32j
;
4085 case M32C_OPERAND_CR1_PREFIXED_32
:
4086 value
= fields
->f_21_3
;
4088 case M32C_OPERAND_CR1_UNPREFIXED_32
:
4089 value
= fields
->f_13_3
;
4091 case M32C_OPERAND_CR16
:
4092 value
= fields
->f_9_3
;
4094 case M32C_OPERAND_CR2_32
:
4095 value
= fields
->f_13_3
;
4097 case M32C_OPERAND_CR3_PREFIXED_32
:
4098 value
= fields
->f_21_3
;
4100 case M32C_OPERAND_CR3_UNPREFIXED_32
:
4101 value
= fields
->f_13_3
;
4103 case M32C_OPERAND_FLAGS16
:
4104 value
= fields
->f_9_3
;
4106 case M32C_OPERAND_FLAGS32
:
4107 value
= fields
->f_13_3
;
4109 case M32C_OPERAND_SCCOND32
:
4110 value
= fields
->f_cond16
;
4112 case M32C_OPERAND_SIZE
:
4117 /* xgettext:c-format */
4118 opcodes_error_handler
4119 (_("internal error: unrecognized field %d while getting vma operand"),
4127 void m32c_cgen_set_int_operand (CGEN_CPU_DESC
, int, CGEN_FIELDS
*, int);
4128 void m32c_cgen_set_vma_operand (CGEN_CPU_DESC
, int, CGEN_FIELDS
*, bfd_vma
);
4130 /* Stuffing values in cgen_fields is handled by a collection of functions.
4131 They are distinguished by the type of the VALUE argument they accept.
4132 TODO: floating point, inlining support, remove cases where argument type
4136 m32c_cgen_set_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED
,
4138 CGEN_FIELDS
* fields
,
4143 case M32C_OPERAND_A0
:
4145 case M32C_OPERAND_A1
:
4147 case M32C_OPERAND_AN16_PUSH_S
:
4148 fields
->f_4_1
= value
;
4150 case M32C_OPERAND_BIT16AN
:
4151 fields
->f_dst16_an
= value
;
4153 case M32C_OPERAND_BIT16RN
:
4154 fields
->f_dst16_rn
= value
;
4156 case M32C_OPERAND_BIT3_S
:
4157 fields
->f_imm3_S
= value
;
4159 case M32C_OPERAND_BIT32ANPREFIXED
:
4160 fields
->f_dst32_an_prefixed
= value
;
4162 case M32C_OPERAND_BIT32ANUNPREFIXED
:
4163 fields
->f_dst32_an_unprefixed
= value
;
4165 case M32C_OPERAND_BIT32RNPREFIXED
:
4166 fields
->f_dst32_rn_prefixed_QI
= value
;
4168 case M32C_OPERAND_BIT32RNUNPREFIXED
:
4169 fields
->f_dst32_rn_unprefixed_QI
= value
;
4171 case M32C_OPERAND_BITBASE16_16_S8
:
4172 fields
->f_dsp_16_s8
= value
;
4174 case M32C_OPERAND_BITBASE16_16_U16
:
4175 fields
->f_dsp_16_u16
= value
;
4177 case M32C_OPERAND_BITBASE16_16_U8
:
4178 fields
->f_dsp_16_u8
= value
;
4180 case M32C_OPERAND_BITBASE16_8_U11_S
:
4181 fields
->f_bitbase16_u11_S
= value
;
4183 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED
:
4184 fields
->f_bitbase32_16_s11_unprefixed
= value
;
4186 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED
:
4187 fields
->f_bitbase32_16_s19_unprefixed
= value
;
4189 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED
:
4190 fields
->f_bitbase32_16_u11_unprefixed
= value
;
4192 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED
:
4193 fields
->f_bitbase32_16_u19_unprefixed
= value
;
4195 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED
:
4196 fields
->f_bitbase32_16_u27_unprefixed
= value
;
4198 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED
:
4199 fields
->f_bitbase32_24_s11_prefixed
= value
;
4201 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED
:
4202 fields
->f_bitbase32_24_s19_prefixed
= value
;
4204 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED
:
4205 fields
->f_bitbase32_24_u11_prefixed
= value
;
4207 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED
:
4208 fields
->f_bitbase32_24_u19_prefixed
= value
;
4210 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED
:
4211 fields
->f_bitbase32_24_u27_prefixed
= value
;
4213 case M32C_OPERAND_BITNO16R
:
4214 fields
->f_dsp_16_u8
= value
;
4216 case M32C_OPERAND_BITNO32PREFIXED
:
4217 fields
->f_bitno32_prefixed
= value
;
4219 case M32C_OPERAND_BITNO32UNPREFIXED
:
4220 fields
->f_bitno32_unprefixed
= value
;
4222 case M32C_OPERAND_DSP_10_U6
:
4223 fields
->f_dsp_10_u6
= value
;
4225 case M32C_OPERAND_DSP_16_S16
:
4226 fields
->f_dsp_16_s16
= value
;
4228 case M32C_OPERAND_DSP_16_S8
:
4229 fields
->f_dsp_16_s8
= value
;
4231 case M32C_OPERAND_DSP_16_U16
:
4232 fields
->f_dsp_16_u16
= value
;
4234 case M32C_OPERAND_DSP_16_U20
:
4235 fields
->f_dsp_16_u24
= value
;
4237 case M32C_OPERAND_DSP_16_U24
:
4238 fields
->f_dsp_16_u24
= value
;
4240 case M32C_OPERAND_DSP_16_U8
:
4241 fields
->f_dsp_16_u8
= value
;
4243 case M32C_OPERAND_DSP_24_S16
:
4244 fields
->f_dsp_24_s16
= value
;
4246 case M32C_OPERAND_DSP_24_S8
:
4247 fields
->f_dsp_24_s8
= value
;
4249 case M32C_OPERAND_DSP_24_U16
:
4250 fields
->f_dsp_24_u16
= value
;
4252 case M32C_OPERAND_DSP_24_U20
:
4253 fields
->f_dsp_24_u24
= value
;
4255 case M32C_OPERAND_DSP_24_U24
:
4256 fields
->f_dsp_24_u24
= value
;
4258 case M32C_OPERAND_DSP_24_U8
:
4259 fields
->f_dsp_24_u8
= value
;
4261 case M32C_OPERAND_DSP_32_S16
:
4262 fields
->f_dsp_32_s16
= value
;
4264 case M32C_OPERAND_DSP_32_S8
:
4265 fields
->f_dsp_32_s8
= value
;
4267 case M32C_OPERAND_DSP_32_U16
:
4268 fields
->f_dsp_32_u16
= value
;
4270 case M32C_OPERAND_DSP_32_U20
:
4271 fields
->f_dsp_32_u24
= value
;
4273 case M32C_OPERAND_DSP_32_U24
:
4274 fields
->f_dsp_32_u24
= value
;
4276 case M32C_OPERAND_DSP_32_U8
:
4277 fields
->f_dsp_32_u8
= value
;
4279 case M32C_OPERAND_DSP_40_S16
:
4280 fields
->f_dsp_40_s16
= value
;
4282 case M32C_OPERAND_DSP_40_S8
:
4283 fields
->f_dsp_40_s8
= value
;
4285 case M32C_OPERAND_DSP_40_U16
:
4286 fields
->f_dsp_40_u16
= value
;
4288 case M32C_OPERAND_DSP_40_U20
:
4289 fields
->f_dsp_40_u20
= value
;
4291 case M32C_OPERAND_DSP_40_U24
:
4292 fields
->f_dsp_40_u24
= value
;
4294 case M32C_OPERAND_DSP_40_U8
:
4295 fields
->f_dsp_40_u8
= value
;
4297 case M32C_OPERAND_DSP_48_S16
:
4298 fields
->f_dsp_48_s16
= value
;
4300 case M32C_OPERAND_DSP_48_S8
:
4301 fields
->f_dsp_48_s8
= value
;
4303 case M32C_OPERAND_DSP_48_U16
:
4304 fields
->f_dsp_48_u16
= value
;
4306 case M32C_OPERAND_DSP_48_U20
:
4307 fields
->f_dsp_48_u20
= value
;
4309 case M32C_OPERAND_DSP_48_U24
:
4310 fields
->f_dsp_48_u24
= value
;
4312 case M32C_OPERAND_DSP_48_U8
:
4313 fields
->f_dsp_48_u8
= value
;
4315 case M32C_OPERAND_DSP_8_S24
:
4316 fields
->f_dsp_8_s24
= value
;
4318 case M32C_OPERAND_DSP_8_S8
:
4319 fields
->f_dsp_8_s8
= value
;
4321 case M32C_OPERAND_DSP_8_U16
:
4322 fields
->f_dsp_8_u16
= value
;
4324 case M32C_OPERAND_DSP_8_U24
:
4325 fields
->f_dsp_8_u24
= value
;
4327 case M32C_OPERAND_DSP_8_U6
:
4328 fields
->f_dsp_8_u6
= value
;
4330 case M32C_OPERAND_DSP_8_U8
:
4331 fields
->f_dsp_8_u8
= value
;
4333 case M32C_OPERAND_DST16AN
:
4334 fields
->f_dst16_an
= value
;
4336 case M32C_OPERAND_DST16AN_S
:
4337 fields
->f_dst16_an_s
= value
;
4339 case M32C_OPERAND_DST16ANHI
:
4340 fields
->f_dst16_an
= value
;
4342 case M32C_OPERAND_DST16ANQI
:
4343 fields
->f_dst16_an
= value
;
4345 case M32C_OPERAND_DST16ANQI_S
:
4346 fields
->f_dst16_rn_QI_s
= value
;
4348 case M32C_OPERAND_DST16ANSI
:
4349 fields
->f_dst16_an
= value
;
4351 case M32C_OPERAND_DST16RNEXTQI
:
4352 fields
->f_dst16_rn_ext
= value
;
4354 case M32C_OPERAND_DST16RNHI
:
4355 fields
->f_dst16_rn
= value
;
4357 case M32C_OPERAND_DST16RNQI
:
4358 fields
->f_dst16_rn
= value
;
4360 case M32C_OPERAND_DST16RNQI_S
:
4361 fields
->f_dst16_rn_QI_s
= value
;
4363 case M32C_OPERAND_DST16RNSI
:
4364 fields
->f_dst16_rn
= value
;
4366 case M32C_OPERAND_DST32ANEXTUNPREFIXED
:
4367 fields
->f_dst32_an_unprefixed
= value
;
4369 case M32C_OPERAND_DST32ANPREFIXED
:
4370 fields
->f_dst32_an_prefixed
= value
;
4372 case M32C_OPERAND_DST32ANPREFIXEDHI
:
4373 fields
->f_dst32_an_prefixed
= value
;
4375 case M32C_OPERAND_DST32ANPREFIXEDQI
:
4376 fields
->f_dst32_an_prefixed
= value
;
4378 case M32C_OPERAND_DST32ANPREFIXEDSI
:
4379 fields
->f_dst32_an_prefixed
= value
;
4381 case M32C_OPERAND_DST32ANUNPREFIXED
:
4382 fields
->f_dst32_an_unprefixed
= value
;
4384 case M32C_OPERAND_DST32ANUNPREFIXEDHI
:
4385 fields
->f_dst32_an_unprefixed
= value
;
4387 case M32C_OPERAND_DST32ANUNPREFIXEDQI
:
4388 fields
->f_dst32_an_unprefixed
= value
;
4390 case M32C_OPERAND_DST32ANUNPREFIXEDSI
:
4391 fields
->f_dst32_an_unprefixed
= value
;
4393 case M32C_OPERAND_DST32R0HI_S
:
4395 case M32C_OPERAND_DST32R0QI_S
:
4397 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI
:
4398 fields
->f_dst32_rn_ext_unprefixed
= value
;
4400 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI
:
4401 fields
->f_dst32_rn_ext_unprefixed
= value
;
4403 case M32C_OPERAND_DST32RNPREFIXEDHI
:
4404 fields
->f_dst32_rn_prefixed_HI
= value
;
4406 case M32C_OPERAND_DST32RNPREFIXEDQI
:
4407 fields
->f_dst32_rn_prefixed_QI
= value
;
4409 case M32C_OPERAND_DST32RNPREFIXEDSI
:
4410 fields
->f_dst32_rn_prefixed_SI
= value
;
4412 case M32C_OPERAND_DST32RNUNPREFIXEDHI
:
4413 fields
->f_dst32_rn_unprefixed_HI
= value
;
4415 case M32C_OPERAND_DST32RNUNPREFIXEDQI
:
4416 fields
->f_dst32_rn_unprefixed_QI
= value
;
4418 case M32C_OPERAND_DST32RNUNPREFIXEDSI
:
4419 fields
->f_dst32_rn_unprefixed_SI
= value
;
4421 case M32C_OPERAND_G
:
4423 case M32C_OPERAND_IMM_12_S4
:
4424 fields
->f_imm_12_s4
= value
;
4426 case M32C_OPERAND_IMM_12_S4N
:
4427 fields
->f_imm_12_s4
= value
;
4429 case M32C_OPERAND_IMM_13_U3
:
4430 fields
->f_imm_13_u3
= value
;
4432 case M32C_OPERAND_IMM_16_HI
:
4433 fields
->f_dsp_16_s16
= value
;
4435 case M32C_OPERAND_IMM_16_QI
:
4436 fields
->f_dsp_16_s8
= value
;
4438 case M32C_OPERAND_IMM_16_SI
:
4439 fields
->f_dsp_16_s32
= value
;
4441 case M32C_OPERAND_IMM_20_S4
:
4442 fields
->f_imm_20_s4
= value
;
4444 case M32C_OPERAND_IMM_24_HI
:
4445 fields
->f_dsp_24_s16
= value
;
4447 case M32C_OPERAND_IMM_24_QI
:
4448 fields
->f_dsp_24_s8
= value
;
4450 case M32C_OPERAND_IMM_24_SI
:
4451 fields
->f_dsp_24_s32
= value
;
4453 case M32C_OPERAND_IMM_32_HI
:
4454 fields
->f_dsp_32_s16
= value
;
4456 case M32C_OPERAND_IMM_32_QI
:
4457 fields
->f_dsp_32_s8
= value
;
4459 case M32C_OPERAND_IMM_32_SI
:
4460 fields
->f_dsp_32_s32
= value
;
4462 case M32C_OPERAND_IMM_40_HI
:
4463 fields
->f_dsp_40_s16
= value
;
4465 case M32C_OPERAND_IMM_40_QI
:
4466 fields
->f_dsp_40_s8
= value
;
4468 case M32C_OPERAND_IMM_40_SI
:
4469 fields
->f_dsp_40_s32
= value
;
4471 case M32C_OPERAND_IMM_48_HI
:
4472 fields
->f_dsp_48_s16
= value
;
4474 case M32C_OPERAND_IMM_48_QI
:
4475 fields
->f_dsp_48_s8
= value
;
4477 case M32C_OPERAND_IMM_48_SI
:
4478 fields
->f_dsp_48_s32
= value
;
4480 case M32C_OPERAND_IMM_56_HI
:
4481 fields
->f_dsp_56_s16
= value
;
4483 case M32C_OPERAND_IMM_56_QI
:
4484 fields
->f_dsp_56_s8
= value
;
4486 case M32C_OPERAND_IMM_64_HI
:
4487 fields
->f_dsp_64_s16
= value
;
4489 case M32C_OPERAND_IMM_8_HI
:
4490 fields
->f_dsp_8_s16
= value
;
4492 case M32C_OPERAND_IMM_8_QI
:
4493 fields
->f_dsp_8_s8
= value
;
4495 case M32C_OPERAND_IMM_8_S4
:
4496 fields
->f_imm_8_s4
= value
;
4498 case M32C_OPERAND_IMM_8_S4N
:
4499 fields
->f_imm_8_s4
= value
;
4501 case M32C_OPERAND_IMM_SH_12_S4
:
4502 fields
->f_imm_12_s4
= value
;
4504 case M32C_OPERAND_IMM_SH_20_S4
:
4505 fields
->f_imm_20_s4
= value
;
4507 case M32C_OPERAND_IMM_SH_8_S4
:
4508 fields
->f_imm_8_s4
= value
;
4510 case M32C_OPERAND_IMM1_S
:
4511 fields
->f_imm1_S
= value
;
4513 case M32C_OPERAND_IMM3_S
:
4514 fields
->f_imm3_S
= value
;
4516 case M32C_OPERAND_LAB_16_8
:
4517 fields
->f_lab_16_8
= value
;
4519 case M32C_OPERAND_LAB_24_8
:
4520 fields
->f_lab_24_8
= value
;
4522 case M32C_OPERAND_LAB_32_8
:
4523 fields
->f_lab_32_8
= value
;
4525 case M32C_OPERAND_LAB_40_8
:
4526 fields
->f_lab_40_8
= value
;
4528 case M32C_OPERAND_LAB_5_3
:
4529 fields
->f_lab_5_3
= value
;
4531 case M32C_OPERAND_LAB_8_16
:
4532 fields
->f_lab_8_16
= value
;
4534 case M32C_OPERAND_LAB_8_24
:
4535 fields
->f_lab_8_24
= value
;
4537 case M32C_OPERAND_LAB_8_8
:
4538 fields
->f_lab_8_8
= value
;
4540 case M32C_OPERAND_LAB32_JMP_S
:
4541 fields
->f_lab32_jmp_s
= value
;
4543 case M32C_OPERAND_Q
:
4545 case M32C_OPERAND_R0
:
4547 case M32C_OPERAND_R0H
:
4549 case M32C_OPERAND_R0L
:
4551 case M32C_OPERAND_R1
:
4553 case M32C_OPERAND_R1R2R0
:
4555 case M32C_OPERAND_R2
:
4557 case M32C_OPERAND_R2R0
:
4559 case M32C_OPERAND_R3
:
4561 case M32C_OPERAND_R3R1
:
4563 case M32C_OPERAND_REGSETPOP
:
4564 fields
->f_8_8
= value
;
4566 case M32C_OPERAND_REGSETPUSH
:
4567 fields
->f_8_8
= value
;
4569 case M32C_OPERAND_RN16_PUSH_S
:
4570 fields
->f_4_1
= value
;
4572 case M32C_OPERAND_S
:
4574 case M32C_OPERAND_SRC16AN
:
4575 fields
->f_src16_an
= value
;
4577 case M32C_OPERAND_SRC16ANHI
:
4578 fields
->f_src16_an
= value
;
4580 case M32C_OPERAND_SRC16ANQI
:
4581 fields
->f_src16_an
= value
;
4583 case M32C_OPERAND_SRC16RNHI
:
4584 fields
->f_src16_rn
= value
;
4586 case M32C_OPERAND_SRC16RNQI
:
4587 fields
->f_src16_rn
= value
;
4589 case M32C_OPERAND_SRC32ANPREFIXED
:
4590 fields
->f_src32_an_prefixed
= value
;
4592 case M32C_OPERAND_SRC32ANPREFIXEDHI
:
4593 fields
->f_src32_an_prefixed
= value
;
4595 case M32C_OPERAND_SRC32ANPREFIXEDQI
:
4596 fields
->f_src32_an_prefixed
= value
;
4598 case M32C_OPERAND_SRC32ANPREFIXEDSI
:
4599 fields
->f_src32_an_prefixed
= value
;
4601 case M32C_OPERAND_SRC32ANUNPREFIXED
:
4602 fields
->f_src32_an_unprefixed
= value
;
4604 case M32C_OPERAND_SRC32ANUNPREFIXEDHI
:
4605 fields
->f_src32_an_unprefixed
= value
;
4607 case M32C_OPERAND_SRC32ANUNPREFIXEDQI
:
4608 fields
->f_src32_an_unprefixed
= value
;
4610 case M32C_OPERAND_SRC32ANUNPREFIXEDSI
:
4611 fields
->f_src32_an_unprefixed
= value
;
4613 case M32C_OPERAND_SRC32RNPREFIXEDHI
:
4614 fields
->f_src32_rn_prefixed_HI
= value
;
4616 case M32C_OPERAND_SRC32RNPREFIXEDQI
:
4617 fields
->f_src32_rn_prefixed_QI
= value
;
4619 case M32C_OPERAND_SRC32RNPREFIXEDSI
:
4620 fields
->f_src32_rn_prefixed_SI
= value
;
4622 case M32C_OPERAND_SRC32RNUNPREFIXEDHI
:
4623 fields
->f_src32_rn_unprefixed_HI
= value
;
4625 case M32C_OPERAND_SRC32RNUNPREFIXEDQI
:
4626 fields
->f_src32_rn_unprefixed_QI
= value
;
4628 case M32C_OPERAND_SRC32RNUNPREFIXEDSI
:
4629 fields
->f_src32_rn_unprefixed_SI
= value
;
4631 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL
:
4632 fields
->f_5_1
= value
;
4634 case M32C_OPERAND_X
:
4636 case M32C_OPERAND_Z
:
4638 case M32C_OPERAND_COND16_16
:
4639 fields
->f_dsp_16_u8
= value
;
4641 case M32C_OPERAND_COND16_24
:
4642 fields
->f_dsp_24_u8
= value
;
4644 case M32C_OPERAND_COND16_32
:
4645 fields
->f_dsp_32_u8
= value
;
4647 case M32C_OPERAND_COND16C
:
4648 fields
->f_cond16
= value
;
4650 case M32C_OPERAND_COND16J
:
4651 fields
->f_cond16
= value
;
4653 case M32C_OPERAND_COND16J5
:
4654 fields
->f_cond16j_5
= value
;
4656 case M32C_OPERAND_COND32
:
4657 fields
->f_cond32
= value
;
4659 case M32C_OPERAND_COND32_16
:
4660 fields
->f_dsp_16_u8
= value
;
4662 case M32C_OPERAND_COND32_24
:
4663 fields
->f_dsp_24_u8
= value
;
4665 case M32C_OPERAND_COND32_32
:
4666 fields
->f_dsp_32_u8
= value
;
4668 case M32C_OPERAND_COND32_40
:
4669 fields
->f_dsp_40_u8
= value
;
4671 case M32C_OPERAND_COND32J
:
4672 fields
->f_cond32j
= value
;
4674 case M32C_OPERAND_CR1_PREFIXED_32
:
4675 fields
->f_21_3
= value
;
4677 case M32C_OPERAND_CR1_UNPREFIXED_32
:
4678 fields
->f_13_3
= value
;
4680 case M32C_OPERAND_CR16
:
4681 fields
->f_9_3
= value
;
4683 case M32C_OPERAND_CR2_32
:
4684 fields
->f_13_3
= value
;
4686 case M32C_OPERAND_CR3_PREFIXED_32
:
4687 fields
->f_21_3
= value
;
4689 case M32C_OPERAND_CR3_UNPREFIXED_32
:
4690 fields
->f_13_3
= value
;
4692 case M32C_OPERAND_FLAGS16
:
4693 fields
->f_9_3
= value
;
4695 case M32C_OPERAND_FLAGS32
:
4696 fields
->f_13_3
= value
;
4698 case M32C_OPERAND_SCCOND32
:
4699 fields
->f_cond16
= value
;
4701 case M32C_OPERAND_SIZE
:
4705 /* xgettext:c-format */
4706 opcodes_error_handler
4707 (_("internal error: unrecognized field %d while setting int operand"),
4714 m32c_cgen_set_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED
,
4716 CGEN_FIELDS
* fields
,
4721 case M32C_OPERAND_A0
:
4723 case M32C_OPERAND_A1
:
4725 case M32C_OPERAND_AN16_PUSH_S
:
4726 fields
->f_4_1
= value
;
4728 case M32C_OPERAND_BIT16AN
:
4729 fields
->f_dst16_an
= value
;
4731 case M32C_OPERAND_BIT16RN
:
4732 fields
->f_dst16_rn
= value
;
4734 case M32C_OPERAND_BIT3_S
:
4735 fields
->f_imm3_S
= value
;
4737 case M32C_OPERAND_BIT32ANPREFIXED
:
4738 fields
->f_dst32_an_prefixed
= value
;
4740 case M32C_OPERAND_BIT32ANUNPREFIXED
:
4741 fields
->f_dst32_an_unprefixed
= value
;
4743 case M32C_OPERAND_BIT32RNPREFIXED
:
4744 fields
->f_dst32_rn_prefixed_QI
= value
;
4746 case M32C_OPERAND_BIT32RNUNPREFIXED
:
4747 fields
->f_dst32_rn_unprefixed_QI
= value
;
4749 case M32C_OPERAND_BITBASE16_16_S8
:
4750 fields
->f_dsp_16_s8
= value
;
4752 case M32C_OPERAND_BITBASE16_16_U16
:
4753 fields
->f_dsp_16_u16
= value
;
4755 case M32C_OPERAND_BITBASE16_16_U8
:
4756 fields
->f_dsp_16_u8
= value
;
4758 case M32C_OPERAND_BITBASE16_8_U11_S
:
4759 fields
->f_bitbase16_u11_S
= value
;
4761 case M32C_OPERAND_BITBASE32_16_S11_UNPREFIXED
:
4762 fields
->f_bitbase32_16_s11_unprefixed
= value
;
4764 case M32C_OPERAND_BITBASE32_16_S19_UNPREFIXED
:
4765 fields
->f_bitbase32_16_s19_unprefixed
= value
;
4767 case M32C_OPERAND_BITBASE32_16_U11_UNPREFIXED
:
4768 fields
->f_bitbase32_16_u11_unprefixed
= value
;
4770 case M32C_OPERAND_BITBASE32_16_U19_UNPREFIXED
:
4771 fields
->f_bitbase32_16_u19_unprefixed
= value
;
4773 case M32C_OPERAND_BITBASE32_16_U27_UNPREFIXED
:
4774 fields
->f_bitbase32_16_u27_unprefixed
= value
;
4776 case M32C_OPERAND_BITBASE32_24_S11_PREFIXED
:
4777 fields
->f_bitbase32_24_s11_prefixed
= value
;
4779 case M32C_OPERAND_BITBASE32_24_S19_PREFIXED
:
4780 fields
->f_bitbase32_24_s19_prefixed
= value
;
4782 case M32C_OPERAND_BITBASE32_24_U11_PREFIXED
:
4783 fields
->f_bitbase32_24_u11_prefixed
= value
;
4785 case M32C_OPERAND_BITBASE32_24_U19_PREFIXED
:
4786 fields
->f_bitbase32_24_u19_prefixed
= value
;
4788 case M32C_OPERAND_BITBASE32_24_U27_PREFIXED
:
4789 fields
->f_bitbase32_24_u27_prefixed
= value
;
4791 case M32C_OPERAND_BITNO16R
:
4792 fields
->f_dsp_16_u8
= value
;
4794 case M32C_OPERAND_BITNO32PREFIXED
:
4795 fields
->f_bitno32_prefixed
= value
;
4797 case M32C_OPERAND_BITNO32UNPREFIXED
:
4798 fields
->f_bitno32_unprefixed
= value
;
4800 case M32C_OPERAND_DSP_10_U6
:
4801 fields
->f_dsp_10_u6
= value
;
4803 case M32C_OPERAND_DSP_16_S16
:
4804 fields
->f_dsp_16_s16
= value
;
4806 case M32C_OPERAND_DSP_16_S8
:
4807 fields
->f_dsp_16_s8
= value
;
4809 case M32C_OPERAND_DSP_16_U16
:
4810 fields
->f_dsp_16_u16
= value
;
4812 case M32C_OPERAND_DSP_16_U20
:
4813 fields
->f_dsp_16_u24
= value
;
4815 case M32C_OPERAND_DSP_16_U24
:
4816 fields
->f_dsp_16_u24
= value
;
4818 case M32C_OPERAND_DSP_16_U8
:
4819 fields
->f_dsp_16_u8
= value
;
4821 case M32C_OPERAND_DSP_24_S16
:
4822 fields
->f_dsp_24_s16
= value
;
4824 case M32C_OPERAND_DSP_24_S8
:
4825 fields
->f_dsp_24_s8
= value
;
4827 case M32C_OPERAND_DSP_24_U16
:
4828 fields
->f_dsp_24_u16
= value
;
4830 case M32C_OPERAND_DSP_24_U20
:
4831 fields
->f_dsp_24_u24
= value
;
4833 case M32C_OPERAND_DSP_24_U24
:
4834 fields
->f_dsp_24_u24
= value
;
4836 case M32C_OPERAND_DSP_24_U8
:
4837 fields
->f_dsp_24_u8
= value
;
4839 case M32C_OPERAND_DSP_32_S16
:
4840 fields
->f_dsp_32_s16
= value
;
4842 case M32C_OPERAND_DSP_32_S8
:
4843 fields
->f_dsp_32_s8
= value
;
4845 case M32C_OPERAND_DSP_32_U16
:
4846 fields
->f_dsp_32_u16
= value
;
4848 case M32C_OPERAND_DSP_32_U20
:
4849 fields
->f_dsp_32_u24
= value
;
4851 case M32C_OPERAND_DSP_32_U24
:
4852 fields
->f_dsp_32_u24
= value
;
4854 case M32C_OPERAND_DSP_32_U8
:
4855 fields
->f_dsp_32_u8
= value
;
4857 case M32C_OPERAND_DSP_40_S16
:
4858 fields
->f_dsp_40_s16
= value
;
4860 case M32C_OPERAND_DSP_40_S8
:
4861 fields
->f_dsp_40_s8
= value
;
4863 case M32C_OPERAND_DSP_40_U16
:
4864 fields
->f_dsp_40_u16
= value
;
4866 case M32C_OPERAND_DSP_40_U20
:
4867 fields
->f_dsp_40_u20
= value
;
4869 case M32C_OPERAND_DSP_40_U24
:
4870 fields
->f_dsp_40_u24
= value
;
4872 case M32C_OPERAND_DSP_40_U8
:
4873 fields
->f_dsp_40_u8
= value
;
4875 case M32C_OPERAND_DSP_48_S16
:
4876 fields
->f_dsp_48_s16
= value
;
4878 case M32C_OPERAND_DSP_48_S8
:
4879 fields
->f_dsp_48_s8
= value
;
4881 case M32C_OPERAND_DSP_48_U16
:
4882 fields
->f_dsp_48_u16
= value
;
4884 case M32C_OPERAND_DSP_48_U20
:
4885 fields
->f_dsp_48_u20
= value
;
4887 case M32C_OPERAND_DSP_48_U24
:
4888 fields
->f_dsp_48_u24
= value
;
4890 case M32C_OPERAND_DSP_48_U8
:
4891 fields
->f_dsp_48_u8
= value
;
4893 case M32C_OPERAND_DSP_8_S24
:
4894 fields
->f_dsp_8_s24
= value
;
4896 case M32C_OPERAND_DSP_8_S8
:
4897 fields
->f_dsp_8_s8
= value
;
4899 case M32C_OPERAND_DSP_8_U16
:
4900 fields
->f_dsp_8_u16
= value
;
4902 case M32C_OPERAND_DSP_8_U24
:
4903 fields
->f_dsp_8_u24
= value
;
4905 case M32C_OPERAND_DSP_8_U6
:
4906 fields
->f_dsp_8_u6
= value
;
4908 case M32C_OPERAND_DSP_8_U8
:
4909 fields
->f_dsp_8_u8
= value
;
4911 case M32C_OPERAND_DST16AN
:
4912 fields
->f_dst16_an
= value
;
4914 case M32C_OPERAND_DST16AN_S
:
4915 fields
->f_dst16_an_s
= value
;
4917 case M32C_OPERAND_DST16ANHI
:
4918 fields
->f_dst16_an
= value
;
4920 case M32C_OPERAND_DST16ANQI
:
4921 fields
->f_dst16_an
= value
;
4923 case M32C_OPERAND_DST16ANQI_S
:
4924 fields
->f_dst16_rn_QI_s
= value
;
4926 case M32C_OPERAND_DST16ANSI
:
4927 fields
->f_dst16_an
= value
;
4929 case M32C_OPERAND_DST16RNEXTQI
:
4930 fields
->f_dst16_rn_ext
= value
;
4932 case M32C_OPERAND_DST16RNHI
:
4933 fields
->f_dst16_rn
= value
;
4935 case M32C_OPERAND_DST16RNQI
:
4936 fields
->f_dst16_rn
= value
;
4938 case M32C_OPERAND_DST16RNQI_S
:
4939 fields
->f_dst16_rn_QI_s
= value
;
4941 case M32C_OPERAND_DST16RNSI
:
4942 fields
->f_dst16_rn
= value
;
4944 case M32C_OPERAND_DST32ANEXTUNPREFIXED
:
4945 fields
->f_dst32_an_unprefixed
= value
;
4947 case M32C_OPERAND_DST32ANPREFIXED
:
4948 fields
->f_dst32_an_prefixed
= value
;
4950 case M32C_OPERAND_DST32ANPREFIXEDHI
:
4951 fields
->f_dst32_an_prefixed
= value
;
4953 case M32C_OPERAND_DST32ANPREFIXEDQI
:
4954 fields
->f_dst32_an_prefixed
= value
;
4956 case M32C_OPERAND_DST32ANPREFIXEDSI
:
4957 fields
->f_dst32_an_prefixed
= value
;
4959 case M32C_OPERAND_DST32ANUNPREFIXED
:
4960 fields
->f_dst32_an_unprefixed
= value
;
4962 case M32C_OPERAND_DST32ANUNPREFIXEDHI
:
4963 fields
->f_dst32_an_unprefixed
= value
;
4965 case M32C_OPERAND_DST32ANUNPREFIXEDQI
:
4966 fields
->f_dst32_an_unprefixed
= value
;
4968 case M32C_OPERAND_DST32ANUNPREFIXEDSI
:
4969 fields
->f_dst32_an_unprefixed
= value
;
4971 case M32C_OPERAND_DST32R0HI_S
:
4973 case M32C_OPERAND_DST32R0QI_S
:
4975 case M32C_OPERAND_DST32RNEXTUNPREFIXEDHI
:
4976 fields
->f_dst32_rn_ext_unprefixed
= value
;
4978 case M32C_OPERAND_DST32RNEXTUNPREFIXEDQI
:
4979 fields
->f_dst32_rn_ext_unprefixed
= value
;
4981 case M32C_OPERAND_DST32RNPREFIXEDHI
:
4982 fields
->f_dst32_rn_prefixed_HI
= value
;
4984 case M32C_OPERAND_DST32RNPREFIXEDQI
:
4985 fields
->f_dst32_rn_prefixed_QI
= value
;
4987 case M32C_OPERAND_DST32RNPREFIXEDSI
:
4988 fields
->f_dst32_rn_prefixed_SI
= value
;
4990 case M32C_OPERAND_DST32RNUNPREFIXEDHI
:
4991 fields
->f_dst32_rn_unprefixed_HI
= value
;
4993 case M32C_OPERAND_DST32RNUNPREFIXEDQI
:
4994 fields
->f_dst32_rn_unprefixed_QI
= value
;
4996 case M32C_OPERAND_DST32RNUNPREFIXEDSI
:
4997 fields
->f_dst32_rn_unprefixed_SI
= value
;
4999 case M32C_OPERAND_G
:
5001 case M32C_OPERAND_IMM_12_S4
:
5002 fields
->f_imm_12_s4
= value
;
5004 case M32C_OPERAND_IMM_12_S4N
:
5005 fields
->f_imm_12_s4
= value
;
5007 case M32C_OPERAND_IMM_13_U3
:
5008 fields
->f_imm_13_u3
= value
;
5010 case M32C_OPERAND_IMM_16_HI
:
5011 fields
->f_dsp_16_s16
= value
;
5013 case M32C_OPERAND_IMM_16_QI
:
5014 fields
->f_dsp_16_s8
= value
;
5016 case M32C_OPERAND_IMM_16_SI
:
5017 fields
->f_dsp_16_s32
= value
;
5019 case M32C_OPERAND_IMM_20_S4
:
5020 fields
->f_imm_20_s4
= value
;
5022 case M32C_OPERAND_IMM_24_HI
:
5023 fields
->f_dsp_24_s16
= value
;
5025 case M32C_OPERAND_IMM_24_QI
:
5026 fields
->f_dsp_24_s8
= value
;
5028 case M32C_OPERAND_IMM_24_SI
:
5029 fields
->f_dsp_24_s32
= value
;
5031 case M32C_OPERAND_IMM_32_HI
:
5032 fields
->f_dsp_32_s16
= value
;
5034 case M32C_OPERAND_IMM_32_QI
:
5035 fields
->f_dsp_32_s8
= value
;
5037 case M32C_OPERAND_IMM_32_SI
:
5038 fields
->f_dsp_32_s32
= value
;
5040 case M32C_OPERAND_IMM_40_HI
:
5041 fields
->f_dsp_40_s16
= value
;
5043 case M32C_OPERAND_IMM_40_QI
:
5044 fields
->f_dsp_40_s8
= value
;
5046 case M32C_OPERAND_IMM_40_SI
:
5047 fields
->f_dsp_40_s32
= value
;
5049 case M32C_OPERAND_IMM_48_HI
:
5050 fields
->f_dsp_48_s16
= value
;
5052 case M32C_OPERAND_IMM_48_QI
:
5053 fields
->f_dsp_48_s8
= value
;
5055 case M32C_OPERAND_IMM_48_SI
:
5056 fields
->f_dsp_48_s32
= value
;
5058 case M32C_OPERAND_IMM_56_HI
:
5059 fields
->f_dsp_56_s16
= value
;
5061 case M32C_OPERAND_IMM_56_QI
:
5062 fields
->f_dsp_56_s8
= value
;
5064 case M32C_OPERAND_IMM_64_HI
:
5065 fields
->f_dsp_64_s16
= value
;
5067 case M32C_OPERAND_IMM_8_HI
:
5068 fields
->f_dsp_8_s16
= value
;
5070 case M32C_OPERAND_IMM_8_QI
:
5071 fields
->f_dsp_8_s8
= value
;
5073 case M32C_OPERAND_IMM_8_S4
:
5074 fields
->f_imm_8_s4
= value
;
5076 case M32C_OPERAND_IMM_8_S4N
:
5077 fields
->f_imm_8_s4
= value
;
5079 case M32C_OPERAND_IMM_SH_12_S4
:
5080 fields
->f_imm_12_s4
= value
;
5082 case M32C_OPERAND_IMM_SH_20_S4
:
5083 fields
->f_imm_20_s4
= value
;
5085 case M32C_OPERAND_IMM_SH_8_S4
:
5086 fields
->f_imm_8_s4
= value
;
5088 case M32C_OPERAND_IMM1_S
:
5089 fields
->f_imm1_S
= value
;
5091 case M32C_OPERAND_IMM3_S
:
5092 fields
->f_imm3_S
= value
;
5094 case M32C_OPERAND_LAB_16_8
:
5095 fields
->f_lab_16_8
= value
;
5097 case M32C_OPERAND_LAB_24_8
:
5098 fields
->f_lab_24_8
= value
;
5100 case M32C_OPERAND_LAB_32_8
:
5101 fields
->f_lab_32_8
= value
;
5103 case M32C_OPERAND_LAB_40_8
:
5104 fields
->f_lab_40_8
= value
;
5106 case M32C_OPERAND_LAB_5_3
:
5107 fields
->f_lab_5_3
= value
;
5109 case M32C_OPERAND_LAB_8_16
:
5110 fields
->f_lab_8_16
= value
;
5112 case M32C_OPERAND_LAB_8_24
:
5113 fields
->f_lab_8_24
= value
;
5115 case M32C_OPERAND_LAB_8_8
:
5116 fields
->f_lab_8_8
= value
;
5118 case M32C_OPERAND_LAB32_JMP_S
:
5119 fields
->f_lab32_jmp_s
= value
;
5121 case M32C_OPERAND_Q
:
5123 case M32C_OPERAND_R0
:
5125 case M32C_OPERAND_R0H
:
5127 case M32C_OPERAND_R0L
:
5129 case M32C_OPERAND_R1
:
5131 case M32C_OPERAND_R1R2R0
:
5133 case M32C_OPERAND_R2
:
5135 case M32C_OPERAND_R2R0
:
5137 case M32C_OPERAND_R3
:
5139 case M32C_OPERAND_R3R1
:
5141 case M32C_OPERAND_REGSETPOP
:
5142 fields
->f_8_8
= value
;
5144 case M32C_OPERAND_REGSETPUSH
:
5145 fields
->f_8_8
= value
;
5147 case M32C_OPERAND_RN16_PUSH_S
:
5148 fields
->f_4_1
= value
;
5150 case M32C_OPERAND_S
:
5152 case M32C_OPERAND_SRC16AN
:
5153 fields
->f_src16_an
= value
;
5155 case M32C_OPERAND_SRC16ANHI
:
5156 fields
->f_src16_an
= value
;
5158 case M32C_OPERAND_SRC16ANQI
:
5159 fields
->f_src16_an
= value
;
5161 case M32C_OPERAND_SRC16RNHI
:
5162 fields
->f_src16_rn
= value
;
5164 case M32C_OPERAND_SRC16RNQI
:
5165 fields
->f_src16_rn
= value
;
5167 case M32C_OPERAND_SRC32ANPREFIXED
:
5168 fields
->f_src32_an_prefixed
= value
;
5170 case M32C_OPERAND_SRC32ANPREFIXEDHI
:
5171 fields
->f_src32_an_prefixed
= value
;
5173 case M32C_OPERAND_SRC32ANPREFIXEDQI
:
5174 fields
->f_src32_an_prefixed
= value
;
5176 case M32C_OPERAND_SRC32ANPREFIXEDSI
:
5177 fields
->f_src32_an_prefixed
= value
;
5179 case M32C_OPERAND_SRC32ANUNPREFIXED
:
5180 fields
->f_src32_an_unprefixed
= value
;
5182 case M32C_OPERAND_SRC32ANUNPREFIXEDHI
:
5183 fields
->f_src32_an_unprefixed
= value
;
5185 case M32C_OPERAND_SRC32ANUNPREFIXEDQI
:
5186 fields
->f_src32_an_unprefixed
= value
;
5188 case M32C_OPERAND_SRC32ANUNPREFIXEDSI
:
5189 fields
->f_src32_an_unprefixed
= value
;
5191 case M32C_OPERAND_SRC32RNPREFIXEDHI
:
5192 fields
->f_src32_rn_prefixed_HI
= value
;
5194 case M32C_OPERAND_SRC32RNPREFIXEDQI
:
5195 fields
->f_src32_rn_prefixed_QI
= value
;
5197 case M32C_OPERAND_SRC32RNPREFIXEDSI
:
5198 fields
->f_src32_rn_prefixed_SI
= value
;
5200 case M32C_OPERAND_SRC32RNUNPREFIXEDHI
:
5201 fields
->f_src32_rn_unprefixed_HI
= value
;
5203 case M32C_OPERAND_SRC32RNUNPREFIXEDQI
:
5204 fields
->f_src32_rn_unprefixed_QI
= value
;
5206 case M32C_OPERAND_SRC32RNUNPREFIXEDSI
:
5207 fields
->f_src32_rn_unprefixed_SI
= value
;
5209 case M32C_OPERAND_SRCDST16_R0L_R0H_S_NORMAL
:
5210 fields
->f_5_1
= value
;
5212 case M32C_OPERAND_X
:
5214 case M32C_OPERAND_Z
:
5216 case M32C_OPERAND_COND16_16
:
5217 fields
->f_dsp_16_u8
= value
;
5219 case M32C_OPERAND_COND16_24
:
5220 fields
->f_dsp_24_u8
= value
;
5222 case M32C_OPERAND_COND16_32
:
5223 fields
->f_dsp_32_u8
= value
;
5225 case M32C_OPERAND_COND16C
:
5226 fields
->f_cond16
= value
;
5228 case M32C_OPERAND_COND16J
:
5229 fields
->f_cond16
= value
;
5231 case M32C_OPERAND_COND16J5
:
5232 fields
->f_cond16j_5
= value
;
5234 case M32C_OPERAND_COND32
:
5235 fields
->f_cond32
= value
;
5237 case M32C_OPERAND_COND32_16
:
5238 fields
->f_dsp_16_u8
= value
;
5240 case M32C_OPERAND_COND32_24
:
5241 fields
->f_dsp_24_u8
= value
;
5243 case M32C_OPERAND_COND32_32
:
5244 fields
->f_dsp_32_u8
= value
;
5246 case M32C_OPERAND_COND32_40
:
5247 fields
->f_dsp_40_u8
= value
;
5249 case M32C_OPERAND_COND32J
:
5250 fields
->f_cond32j
= value
;
5252 case M32C_OPERAND_CR1_PREFIXED_32
:
5253 fields
->f_21_3
= value
;
5255 case M32C_OPERAND_CR1_UNPREFIXED_32
:
5256 fields
->f_13_3
= value
;
5258 case M32C_OPERAND_CR16
:
5259 fields
->f_9_3
= value
;
5261 case M32C_OPERAND_CR2_32
:
5262 fields
->f_13_3
= value
;
5264 case M32C_OPERAND_CR3_PREFIXED_32
:
5265 fields
->f_21_3
= value
;
5267 case M32C_OPERAND_CR3_UNPREFIXED_32
:
5268 fields
->f_13_3
= value
;
5270 case M32C_OPERAND_FLAGS16
:
5271 fields
->f_9_3
= value
;
5273 case M32C_OPERAND_FLAGS32
:
5274 fields
->f_13_3
= value
;
5276 case M32C_OPERAND_SCCOND32
:
5277 fields
->f_cond16
= value
;
5279 case M32C_OPERAND_SIZE
:
5283 /* xgettext:c-format */
5284 opcodes_error_handler
5285 (_("internal error: unrecognized field %d while setting vma operand"),
5291 /* Function to call before using the instruction builder tables. */
5294 m32c_cgen_init_ibld_table (CGEN_CPU_DESC cd
)
5296 cd
->insert_handlers
= & m32c_cgen_insert_handlers
[0];
5297 cd
->extract_handlers
= & m32c_cgen_extract_handlers
[0];
5299 cd
->insert_operand
= m32c_cgen_insert_operand
;
5300 cd
->extract_operand
= m32c_cgen_extract_operand
;
5302 cd
->get_int_operand
= m32c_cgen_get_int_operand
;
5303 cd
->set_int_operand
= m32c_cgen_set_int_operand
;
5304 cd
->get_vma_operand
= m32c_cgen_get_vma_operand
;
5305 cd
->set_vma_operand
= m32c_cgen_set_vma_operand
;