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