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