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