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