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