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