1 /* CPU family header for crisv32f.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright 1996-2005 Free Software Foundation, Inc.
7 This file is part of the GNU simulators.
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>.
24 #ifndef CPU_CRISV32F_H
25 #define CPU_CRISV32F_H
27 /* Maximum number of instructions that are fetched at a time.
28 This is for LIW type instructions sets (e.g. m32r). */
29 #define MAX_LIW_INSNS 1
31 /* Maximum number of instructions that can be executed in parallel. */
32 #define MAX_PARALLEL_INSNS 1
34 /* CPU state information. */
36 /* Hardware elements. */
40 #define GET_H_PC() CPU (h_pc)
43 CPU (h_pc) = ANDSI ((x), (~ (1)));\
45 /* General purpose registers */
47 #define GET_H_GR_ACR(a1) CPU (h_gr_acr)[a1]
48 #define SET_H_GR_ACR(a1, x) (CPU (h_gr_acr)[a1] = (x))
49 /* Special registers for v32 */
51 #define GET_H_SR_V32(index) (ORIF (ORIF (((index) == (((UINT) 0))), ((index) == (((UINT) 4)))), ((index) == (((UINT) 8))))) ? (0) : (((index) == (((UINT) 1)))) ? (32) : (((index) == (((UINT) 13)))) ? (ORSI (ANDSI (CPU (h_sr_v32[((UINT) 13)]), 1073740800), ORSI (ZEXTBISI (CPU (h_cbit)), ORSI (SLLSI (ZEXTBISI (CPU (h_vbit)), 1), ORSI (SLLSI (ZEXTBISI (CPU (h_zbit)), 2), ORSI (SLLSI (ZEXTBISI (CPU (h_nbit)), 3), ORSI (SLLSI (ZEXTBISI (CPU (h_xbit)), 4), ORSI (SLLSI (ZEXTBISI (GET_H_IBIT ()), 5), ORSI (SLLSI (ZEXTBISI (GET_H_UBIT ()), 6), ORSI (SLLSI (ZEXTBISI (CPU (h_pbit)), 7), ORSI (SLLSI (ZEXTBISI (CPU (h_rbit)), 8), ORSI (SLLSI (ZEXTBISI (CPU (h_sbit)), 9), ORSI (SLLSI (ZEXTBISI (CPU (h_mbit)), 30), ORSI (SLLSI (ZEXTBISI (CPU (h_qbit)), 31), 0)))))))))))))) : (((index) == (((UINT) 14)))) ? (((GET_H_UBIT ()) ? (CPU (h_gr_acr[((UINT) 14)])) : (CPU (h_sr_v32[((UINT) 14)])))) : (CPU (h_sr_v32[index]))
52 #define SET_H_SR_V32(index, x) \
54 if (ORIF (ORIF ((((index)) == (((UINT) 0))), (((index)) == (((UINT) 4)))), ORIF ((((index)) == (((UINT) 8))), (((index)) == (((UINT) 1)))))) {\
57 else if ((((index)) == (((UINT) 13)))) {\
59 CPU (h_cbit) = ((NESI (ANDSI ((x), ((1) << (0))), 0)) ? (1) : (0));\
60 CPU (h_vbit) = ((NESI (ANDSI ((x), ((1) << (1))), 0)) ? (1) : (0));\
61 CPU (h_zbit) = ((NESI (ANDSI ((x), ((1) << (2))), 0)) ? (1) : (0));\
62 CPU (h_nbit) = ((NESI (ANDSI ((x), ((1) << (3))), 0)) ? (1) : (0));\
63 CPU (h_xbit) = ((NESI (ANDSI ((x), ((1) << (4))), 0)) ? (1) : (0));\
64 SET_H_IBIT (((NESI (ANDSI ((x), ((1) << (5))), 0)) ? (1) : (0)));\
65 SET_H_SBIT (((NESI (ANDSI ((x), ((1) << (9))), 0)) ? (1) : (0)));\
66 SET_H_MBIT (((NESI (ANDSI ((x), ((1) << (30))), 0)) ? (1) : (0)));\
67 CPU (h_pbit) = ((NESI (ANDSI ((x), ((1) << (7))), 0)) ? (1) : (0));\
68 CPU (h_rbit) = ((NESI (ANDSI ((x), ((1) << (8))), 0)) ? (1) : (0));\
69 SET_H_QBIT (((NESI (ANDSI ((x), ((1) << (31))), 0)) ? (1) : (0)));\
70 SET_H_UBIT (((NESI (ANDSI ((x), ((1) << (6))), 0)) ? (1) : (0)));\
71 CPU (h_sr_v32[(index)]) = (x);\
74 else if ((((index)) == (((UINT) 14)))) {\
77 CPU (h_gr_acr[((UINT) 14)]) = (x);\
79 CPU (h_sr_v32[((UINT) 14)]) = (x);\
82 else if ((((index)) == (((UINT) 3)))) {\
83 if (NOTBI (GET_H_UBIT ())) {\
84 CPU (h_sr_v32[((UINT) 3)]) = (x);\
87 else if ((((index)) == (((UINT) 9)))) {\
88 if (NOTBI (GET_H_UBIT ())) {\
89 CPU (h_sr_v32[((UINT) 9)]) = (x);\
92 else if ((((index)) == (((UINT) 2)))) {\
93 if (NOTBI (GET_H_UBIT ())) {\
95 crisv32f_write_pid_handler (current_cpu, (x));\
96 CPU (h_sr_v32[((UINT) 2)]) = (x);\
100 else if ((((index)) == (((UINT) 15)))) {\
101 if (NOTBI (GET_H_UBIT ())) {\
102 CPU (h_sr_v32[((UINT) 15)]) = (x);\
106 CPU (h_sr_v32[(index)]) = (x);\
111 #define GET_H_CBIT() CPU (h_cbit)
112 #define SET_H_CBIT(x) (CPU (h_cbit) = (x))
115 #define GET_H_VBIT() CPU (h_vbit)
116 #define SET_H_VBIT(x) (CPU (h_vbit) = (x))
119 #define GET_H_ZBIT() CPU (h_zbit)
120 #define SET_H_ZBIT(x) (CPU (h_zbit) = (x))
123 #define GET_H_NBIT() CPU (h_nbit)
124 #define SET_H_NBIT(x) (CPU (h_nbit) = (x))
125 /* extended-arithmetic bit */
127 #define GET_H_XBIT() CPU (h_xbit)
128 #define SET_H_XBIT(x) (CPU (h_xbit) = (x))
129 /* sequence-broken bit */
131 #define GET_H_PBIT() CPU (h_pbit)
132 #define SET_H_PBIT(x) (CPU (h_pbit) = (x))
133 /* carry bit for MCP+restore-p bit */
135 #define GET_H_RBIT() CPU (h_rbit)
136 #define SET_H_RBIT(x) (CPU (h_rbit) = (x))
139 #define GET_H_GBIT() CPU (h_gbit)
140 #define SET_H_GBIT(x) (CPU (h_gbit) = (x))
141 /* Kernel stack pointer during user mode */
143 #define GET_H_KERNEL_SP() CPU (h_kernel_sp)
144 #define SET_H_KERNEL_SP(x) (CPU (h_kernel_sp) = (x))
147 #define GET_H_UBIT_V32() CPU (h_ubit_v32)
148 #define SET_H_UBIT_V32(x) \
151 if (ANDIF ((x), NOTBI (CPU (h_ubit_v32)))) {\
153 CPU (h_kernel_sp) = CPU (h_gr_acr[((UINT) 14)]);\
154 CPU (h_gr_acr[((UINT) 14)]) = CPU (h_sr_v32[((UINT) 14)]);\
155 CPU (h_ubit_v32) = (x);\
156 crisv32f_usermode_enabled (current_cpu);\
161 /* Interrupt-enable bit */
163 #define GET_H_IBIT_V32() CPU (h_ibit_v32)
164 #define SET_H_IBIT_V32(x) \
167 if (NOTBI (GET_H_UBIT ())) {\
170 tmp_enabled = ANDIF ((x), NOTBI (CPU (h_ibit_v32)));\
171 CPU (h_ibit_v32) = (x);\
173 crisv32f_interrupts_enabled (current_cpu);\
181 #define GET_H_MBIT() CPU (h_mbit)
182 #define SET_H_MBIT(x) \
185 if (ANDIF ((x), ANDIF (NOTBI (CPU (h_mbit)), NOTBI (GET_H_UBIT ())))) {\
188 crisv32f_nmi_enabled (current_cpu);\
193 /* Pending single-step bit */
195 #define GET_H_QBIT() CPU (h_qbit)
196 #define SET_H_QBIT(x) \
199 if (NOTBI (GET_H_UBIT ())) {\
204 /* Cause single step exception on ... [see CRISv32 ref] bit */
206 #define GET_H_SBIT() CPU (h_sbit)
207 #define SET_H_SBIT(x) \
210 if (NOTBI (GET_H_UBIT ())) {\
213 tmp_enabled = ANDIF ((x), NOTBI (CPU (h_sbit)));\
216 crisv32f_single_step_enabled (current_cpu);\
223 #define CPU_CGEN_HW(cpu) (& (cpu)->cpu_data.hardware)
228 #define GET_H_V32_V32() 1
229 #define SET_H_V32_V32(x) \
231 cgen_rtx_error (current_cpu, "Can't set h-v32");\
233 #define GET_H_GR(index) CPU (h_gr_acr[index])
234 #define SET_H_GR(index, x) \
236 CPU (h_gr_acr[(index)]) = (x);\
238 #define GET_H_RAW_GR_ACR(index) CPU (h_gr_acr[index])
239 #define SET_H_RAW_GR_ACR(index, x) \
241 CPU (h_gr_acr[(index)]) = (x);\
243 #define GET_H_SR(index) GET_H_SR_V32 (index)
244 #define SET_H_SR(index, x) \
246 SET_H_SR_V32 ((index), (x));\
248 #define GET_H_SUPR(index) crisv32f_read_supr (current_cpu, index)
249 #define SET_H_SUPR(index, x) \
251 crisv32f_write_supr (current_cpu, (index), (x));\
253 #define GET_H_CBIT_MOVE() GET_H_CBIT_MOVE_V32 ()
254 #define SET_H_CBIT_MOVE(x) \
256 SET_H_CBIT_MOVE_V32 ((x));\
258 #define GET_H_CBIT_MOVE_V32() (cgen_rtx_error (current_cpu, "Can't get h-cbit-move on CRISv32"), 0)
259 #define SET_H_CBIT_MOVE_V32(x) \
263 #define GET_H_VBIT_MOVE() GET_H_VBIT_MOVE_V32 ()
264 #define SET_H_VBIT_MOVE(x) \
266 SET_H_VBIT_MOVE_V32 ((x));\
268 #define GET_H_VBIT_MOVE_V32() (cgen_rtx_error (current_cpu, "Can't get h-vbit-move on CRISv32"), 0)
269 #define SET_H_VBIT_MOVE_V32(x) \
273 #define GET_H_ZBIT_MOVE() GET_H_ZBIT_MOVE_V32 ()
274 #define SET_H_ZBIT_MOVE(x) \
276 SET_H_ZBIT_MOVE_V32 ((x));\
278 #define GET_H_ZBIT_MOVE_V32() (cgen_rtx_error (current_cpu, "Can't get h-zbit-move on CRISv32"), 0)
279 #define SET_H_ZBIT_MOVE_V32(x) \
283 #define GET_H_NBIT_MOVE() GET_H_NBIT_MOVE_V32 ()
284 #define SET_H_NBIT_MOVE(x) \
286 SET_H_NBIT_MOVE_V32 ((x));\
288 #define GET_H_NBIT_MOVE_V32() (cgen_rtx_error (current_cpu, "Can't get h-nbit-move on CRISv32"), 0)
289 #define SET_H_NBIT_MOVE_V32(x) \
293 #define GET_H_IBIT() CPU (h_ibit_v32)
294 #define SET_H_IBIT(x) \
296 SET_H_IBIT_V32 ((x));\
298 #define GET_H_UBIT() CPU (h_ubit_v32)
299 #define SET_H_UBIT(x) \
301 SET_H_UBIT_V32 ((x));\
303 #define GET_H_INSN_PREFIXED_P() GET_H_INSN_PREFIXED_P_V32 ()
304 #define SET_H_INSN_PREFIXED_P(x) \
306 SET_H_INSN_PREFIXED_P_V32 ((x));\
308 #define GET_H_INSN_PREFIXED_P_V32() 0
309 #define SET_H_INSN_PREFIXED_P_V32(x) \
313 #define GET_H_PREFIXREG_V32() GET_H_GR (((UINT) 15))
314 #define SET_H_PREFIXREG_V32(x) \
316 SET_H_GR (((UINT) 15), (x));\
319 /* Cover fns for register access. */
320 BI
crisv32f_h_v32_v32_get (SIM_CPU
*);
321 void crisv32f_h_v32_v32_set (SIM_CPU
*, BI
);
322 USI
crisv32f_h_pc_get (SIM_CPU
*);
323 void crisv32f_h_pc_set (SIM_CPU
*, USI
);
324 SI
crisv32f_h_gr_get (SIM_CPU
*, UINT
);
325 void crisv32f_h_gr_set (SIM_CPU
*, UINT
, SI
);
326 SI
crisv32f_h_gr_acr_get (SIM_CPU
*, UINT
);
327 void crisv32f_h_gr_acr_set (SIM_CPU
*, UINT
, SI
);
328 SI
crisv32f_h_raw_gr_acr_get (SIM_CPU
*, UINT
);
329 void crisv32f_h_raw_gr_acr_set (SIM_CPU
*, UINT
, SI
);
330 SI
crisv32f_h_sr_get (SIM_CPU
*, UINT
);
331 void crisv32f_h_sr_set (SIM_CPU
*, UINT
, SI
);
332 SI
crisv32f_h_sr_v32_get (SIM_CPU
*, UINT
);
333 void crisv32f_h_sr_v32_set (SIM_CPU
*, UINT
, SI
);
334 SI
crisv32f_h_supr_get (SIM_CPU
*, UINT
);
335 void crisv32f_h_supr_set (SIM_CPU
*, UINT
, SI
);
336 BI
crisv32f_h_cbit_get (SIM_CPU
*);
337 void crisv32f_h_cbit_set (SIM_CPU
*, BI
);
338 BI
crisv32f_h_cbit_move_get (SIM_CPU
*);
339 void crisv32f_h_cbit_move_set (SIM_CPU
*, BI
);
340 BI
crisv32f_h_cbit_move_v32_get (SIM_CPU
*);
341 void crisv32f_h_cbit_move_v32_set (SIM_CPU
*, BI
);
342 BI
crisv32f_h_vbit_get (SIM_CPU
*);
343 void crisv32f_h_vbit_set (SIM_CPU
*, BI
);
344 BI
crisv32f_h_vbit_move_get (SIM_CPU
*);
345 void crisv32f_h_vbit_move_set (SIM_CPU
*, BI
);
346 BI
crisv32f_h_vbit_move_v32_get (SIM_CPU
*);
347 void crisv32f_h_vbit_move_v32_set (SIM_CPU
*, BI
);
348 BI
crisv32f_h_zbit_get (SIM_CPU
*);
349 void crisv32f_h_zbit_set (SIM_CPU
*, BI
);
350 BI
crisv32f_h_zbit_move_get (SIM_CPU
*);
351 void crisv32f_h_zbit_move_set (SIM_CPU
*, BI
);
352 BI
crisv32f_h_zbit_move_v32_get (SIM_CPU
*);
353 void crisv32f_h_zbit_move_v32_set (SIM_CPU
*, BI
);
354 BI
crisv32f_h_nbit_get (SIM_CPU
*);
355 void crisv32f_h_nbit_set (SIM_CPU
*, BI
);
356 BI
crisv32f_h_nbit_move_get (SIM_CPU
*);
357 void crisv32f_h_nbit_move_set (SIM_CPU
*, BI
);
358 BI
crisv32f_h_nbit_move_v32_get (SIM_CPU
*);
359 void crisv32f_h_nbit_move_v32_set (SIM_CPU
*, BI
);
360 BI
crisv32f_h_xbit_get (SIM_CPU
*);
361 void crisv32f_h_xbit_set (SIM_CPU
*, BI
);
362 BI
crisv32f_h_ibit_get (SIM_CPU
*);
363 void crisv32f_h_ibit_set (SIM_CPU
*, BI
);
364 BI
crisv32f_h_pbit_get (SIM_CPU
*);
365 void crisv32f_h_pbit_set (SIM_CPU
*, BI
);
366 BI
crisv32f_h_rbit_get (SIM_CPU
*);
367 void crisv32f_h_rbit_set (SIM_CPU
*, BI
);
368 BI
crisv32f_h_ubit_get (SIM_CPU
*);
369 void crisv32f_h_ubit_set (SIM_CPU
*, BI
);
370 BI
crisv32f_h_gbit_get (SIM_CPU
*);
371 void crisv32f_h_gbit_set (SIM_CPU
*, BI
);
372 SI
crisv32f_h_kernel_sp_get (SIM_CPU
*);
373 void crisv32f_h_kernel_sp_set (SIM_CPU
*, SI
);
374 BI
crisv32f_h_ubit_v32_get (SIM_CPU
*);
375 void crisv32f_h_ubit_v32_set (SIM_CPU
*, BI
);
376 BI
crisv32f_h_ibit_v32_get (SIM_CPU
*);
377 void crisv32f_h_ibit_v32_set (SIM_CPU
*, BI
);
378 BI
crisv32f_h_mbit_get (SIM_CPU
*);
379 void crisv32f_h_mbit_set (SIM_CPU
*, BI
);
380 BI
crisv32f_h_qbit_get (SIM_CPU
*);
381 void crisv32f_h_qbit_set (SIM_CPU
*, BI
);
382 BI
crisv32f_h_sbit_get (SIM_CPU
*);
383 void crisv32f_h_sbit_set (SIM_CPU
*, BI
);
384 BI
crisv32f_h_insn_prefixed_p_get (SIM_CPU
*);
385 void crisv32f_h_insn_prefixed_p_set (SIM_CPU
*, BI
);
386 BI
crisv32f_h_insn_prefixed_p_v32_get (SIM_CPU
*);
387 void crisv32f_h_insn_prefixed_p_v32_set (SIM_CPU
*, BI
);
388 SI
crisv32f_h_prefixreg_v32_get (SIM_CPU
*);
389 void crisv32f_h_prefixreg_v32_set (SIM_CPU
*, SI
);
391 /* These must be hand-written. */
392 extern CPUREG_FETCH_FN crisv32f_fetch_register
;
393 extern CPUREG_STORE_FN crisv32f_store_register
;
396 UINT prev_prev_prev_modf_regs
;
397 UINT prev_prev_modf_regs
;
400 UINT prev_prev_prev_movem_dest_regs
;
401 UINT prev_prev_movem_dest_regs
;
402 UINT prev_movem_dest_regs
;
403 UINT movem_dest_regs
;
404 } MODEL_CRISV32_DATA
;
406 /* Instruction argument buffer. */
409 struct { /* no operands */
419 IADDR i_o_word_pcrel
;
427 unsigned char in_h_sr_SI_13
;
428 unsigned char out_h_sr_SI_13
;
436 ADDR i_const32_pcrel
;
438 unsigned char out_Pd
;
443 unsigned char out_Rd
;
446 ADDR i_const32_pcrel
;
448 unsigned char out_Rd
;
451 INT f_indir_pc__dword
;
453 unsigned char out_Pd
;
454 } sfmt_move_c_sprv32_p2
;
458 unsigned char out_Rd
;
461 INT f_indir_pc__dword
;
464 unsigned char out_Rd
;
467 INT f_indir_pc__word
;
470 unsigned char out_Rd
;
473 INT f_indir_pc__byte
;
476 unsigned char out_Rd
;
482 unsigned char out_Rd
;
488 unsigned char out_h_gr_SI_index_of__DFLT_Rd
;
491 INT f_indir_pc__dword
;
494 unsigned char out_h_gr_SI_index_of__DFLT_Rd
;
497 INT f_indir_pc__word
;
500 unsigned char out_h_gr_SI_index_of__DFLT_Rd
;
503 INT f_indir_pc__byte
;
506 unsigned char out_h_gr_SI_index_of__DFLT_Rd
;
512 unsigned char out_h_gr_SI_index_of__DFLT_Rd
;
519 unsigned char out_h_gr_SI_index_of__DFLT_Rs
;
526 unsigned char out_Rd
;
527 unsigned char out_h_sr_SI_7
;
535 unsigned char out_Rs
;
536 } sfmt_move_spr_mv32
;
542 unsigned char out_Pd
;
543 unsigned char out_Rs
;
544 } sfmt_move_m_sprv32
;
550 unsigned char out_Rd
;
551 unsigned char out_Rs
;
559 unsigned char out_Rs
;
560 unsigned char out_h_gr_SI_index_of__DFLT_Rd
;
568 unsigned char out_Rs
;
569 unsigned char out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__DFLT_inc_index_of__DFLT_Rs_index_of__DFLT_Rd
;
577 unsigned char out_Rs
;
578 unsigned char out_h_gr_SI_0
;
579 unsigned char out_h_gr_SI_1
;
580 unsigned char out_h_gr_SI_10
;
581 unsigned char out_h_gr_SI_11
;
582 unsigned char out_h_gr_SI_12
;
583 unsigned char out_h_gr_SI_13
;
584 unsigned char out_h_gr_SI_14
;
585 unsigned char out_h_gr_SI_15
;
586 unsigned char out_h_gr_SI_2
;
587 unsigned char out_h_gr_SI_3
;
588 unsigned char out_h_gr_SI_4
;
589 unsigned char out_h_gr_SI_5
;
590 unsigned char out_h_gr_SI_6
;
591 unsigned char out_h_gr_SI_7
;
592 unsigned char out_h_gr_SI_8
;
593 unsigned char out_h_gr_SI_9
;
594 } sfmt_movem_m_r_v32
;
601 unsigned char in_h_gr_SI_0
;
602 unsigned char in_h_gr_SI_1
;
603 unsigned char in_h_gr_SI_10
;
604 unsigned char in_h_gr_SI_11
;
605 unsigned char in_h_gr_SI_12
;
606 unsigned char in_h_gr_SI_13
;
607 unsigned char in_h_gr_SI_14
;
608 unsigned char in_h_gr_SI_15
;
609 unsigned char in_h_gr_SI_2
;
610 unsigned char in_h_gr_SI_3
;
611 unsigned char in_h_gr_SI_4
;
612 unsigned char in_h_gr_SI_5
;
613 unsigned char in_h_gr_SI_6
;
614 unsigned char in_h_gr_SI_7
;
615 unsigned char in_h_gr_SI_8
;
616 unsigned char in_h_gr_SI_9
;
617 unsigned char out_Rs
;
618 } sfmt_movem_r_m_v32
;
620 /* Writeback handler. */
622 /* Pointer to argbuf entry for insn whose results need writing back. */
623 const struct argbuf
*abuf
;
625 /* x-before handler */
627 /*const SCACHE *insns[MAX_PARALLEL_INSNS];*/
630 /* x-after handler */
634 /* This entry is used to terminate each pbb. */
636 /* Number of insns in pbb. */
638 /* Next pbb to execute. */
640 SCACHE
*branch_target
;
645 /* The ARGBUF struct. */
647 /* These are the baseclass definitions. */
652 /* ??? Temporary hack for skip insns. */
655 /* cpu specific data follows */
658 union sem_fields fields
;
663 ??? SCACHE used to contain more than just argbuf. We could delete the
664 type entirely and always just use ARGBUF, but for future concerns and as
665 a level of abstraction it is left in. */
668 struct argbuf argbuf
;
671 /* Macros to simplify extraction, reading and semantic code.
672 These define and assign the local vars that contain the insn's fields. */
674 #define EXTRACT_IFMT_EMPTY_VARS \
676 #define EXTRACT_IFMT_EMPTY_CODE \
679 #define EXTRACT_IFMT_MOVE_B_R_VARS \
686 #define EXTRACT_IFMT_MOVE_B_R_CODE \
688 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
689 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
690 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
691 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
692 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
694 #define EXTRACT_IFMT_MOVEQ_VARS \
700 #define EXTRACT_IFMT_MOVEQ_CODE \
702 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
703 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
704 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
705 f_s6 = EXTRACT_LSB0_INT (insn, 16, 5, 6); \
707 #define EXTRACT_IFMT_MOVECBR_VARS \
709 INT f_indir_pc__byte; \
714 /* Contents of trailing part of insn. */ \
717 #define EXTRACT_IFMT_MOVECBR_CODE \
719 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
720 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
721 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0)); \
722 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
723 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
724 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
725 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
727 #define EXTRACT_IFMT_MOVECWR_VARS \
729 INT f_indir_pc__word; \
734 /* Contents of trailing part of insn. */ \
737 #define EXTRACT_IFMT_MOVECWR_CODE \
739 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
740 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
741 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0)); \
742 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
743 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
744 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
745 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
747 #define EXTRACT_IFMT_MOVECDR_VARS \
748 INT f_indir_pc__dword; \
754 /* Contents of trailing part of insn. */ \
757 #define EXTRACT_IFMT_MOVECDR_CODE \
759 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
760 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0)); \
761 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
762 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
763 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
764 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
765 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
767 #define EXTRACT_IFMT_MOVUCBR_VARS \
769 INT f_indir_pc__byte; \
774 /* Contents of trailing part of insn. */ \
777 #define EXTRACT_IFMT_MOVUCBR_CODE \
779 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
780 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
781 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0)); \
782 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
783 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
784 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
785 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
787 #define EXTRACT_IFMT_MOVUCWR_VARS \
789 INT f_indir_pc__word; \
794 /* Contents of trailing part of insn. */ \
797 #define EXTRACT_IFMT_MOVUCWR_CODE \
799 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
800 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
801 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0)); \
802 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
803 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
804 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
805 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
807 #define EXTRACT_IFMT_ADDQ_VARS \
813 #define EXTRACT_IFMT_ADDQ_CODE \
815 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
816 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
817 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
818 f_u6 = EXTRACT_LSB0_UINT (insn, 16, 5, 6); \
820 #define EXTRACT_IFMT_CMP_M_B_M_VARS \
828 #define EXTRACT_IFMT_CMP_M_B_M_CODE \
830 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
831 f_membit = EXTRACT_LSB0_UINT (insn, 16, 11, 1); \
832 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1); \
833 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
834 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
835 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
837 #define EXTRACT_IFMT_MOVE_R_SPRV32_VARS \
844 #define EXTRACT_IFMT_MOVE_R_SPRV32_CODE \
846 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
847 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
848 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
849 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
850 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
852 #define EXTRACT_IFMT_MOVE_SPR_RV32_VARS \
859 #define EXTRACT_IFMT_MOVE_SPR_RV32_CODE \
861 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
862 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
863 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
864 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
865 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
867 #define EXTRACT_IFMT_MOVE_M_SPRV32_VARS \
875 #define EXTRACT_IFMT_MOVE_M_SPRV32_CODE \
877 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
878 f_membit = EXTRACT_LSB0_UINT (insn, 16, 11, 1); \
879 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1); \
880 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
881 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
882 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
884 #define EXTRACT_IFMT_MOVE_C_SPRV32_P2_VARS \
885 INT f_indir_pc__dword; \
891 /* Contents of trailing part of insn. */ \
894 #define EXTRACT_IFMT_MOVE_C_SPRV32_P2_CODE \
896 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
897 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0)); \
898 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
899 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
900 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
901 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
902 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
904 #define EXTRACT_IFMT_MOVE_SPR_MV32_VARS \
912 #define EXTRACT_IFMT_MOVE_SPR_MV32_CODE \
914 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
915 f_membit = EXTRACT_LSB0_UINT (insn, 16, 11, 1); \
916 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1); \
917 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
918 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
919 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
921 #define EXTRACT_IFMT_MOVE_SS_R_VARS \
928 #define EXTRACT_IFMT_MOVE_SS_R_CODE \
930 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
931 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
932 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
933 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
934 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
936 #define EXTRACT_IFMT_MOVE_R_SS_VARS \
943 #define EXTRACT_IFMT_MOVE_R_SS_CODE \
945 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
946 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
947 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
948 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
949 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
951 #define EXTRACT_IFMT_LAPC_D_VARS \
952 SI f_indir_pc__dword_pcrel; \
958 /* Contents of trailing part of insn. */ \
961 #define EXTRACT_IFMT_LAPC_D_CODE \
963 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
964 f_indir_pc__dword_pcrel = ((pc) + ((0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0)))); \
965 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
966 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
967 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
968 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
969 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
971 #define EXTRACT_IFMT_LAPCQ_VARS \
978 #define EXTRACT_IFMT_LAPCQ_CODE \
980 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
981 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
982 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
983 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
984 f_qo = ((pc) + (((EXTRACT_LSB0_UINT (insn, 16, 3, 4)) << (1)))); \
986 #define EXTRACT_IFMT_TEST_M_B_M_VARS \
994 #define EXTRACT_IFMT_TEST_M_B_M_CODE \
996 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
997 f_membit = EXTRACT_LSB0_UINT (insn, 16, 11, 1); \
998 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1); \
999 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1000 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1001 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1003 #define EXTRACT_IFMT_SWAP_VARS \
1009 unsigned int length;
1010 #define EXTRACT_IFMT_SWAP_CODE \
1012 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1013 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1014 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1015 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1016 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1018 #define EXTRACT_IFMT_ASRQ_VARS \
1024 unsigned int length;
1025 #define EXTRACT_IFMT_ASRQ_CODE \
1027 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1028 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1029 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1030 f_b5 = EXTRACT_LSB0_UINT (insn, 16, 5, 1); \
1031 f_u5 = EXTRACT_LSB0_UINT (insn, 16, 4, 5); \
1033 #define EXTRACT_IFMT_SETF_VARS \
1040 unsigned int length;
1041 #define EXTRACT_IFMT_SETF_CODE \
1043 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1044 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1045 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1046 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1047 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1048 f_dstsrc = ((((f_operand1) | (((f_operand2) << (4))))) & (255));\
1050 #define EXTRACT_IFMT_RFE_VARS \
1056 unsigned int length;
1057 #define EXTRACT_IFMT_RFE_CODE \
1059 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1060 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1061 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1062 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1063 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1065 #define EXTRACT_IFMT_BCC_B_VARS \
1072 unsigned int length;
1073 #define EXTRACT_IFMT_BCC_B_CODE \
1075 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1076 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1077 f_opcode_hi = EXTRACT_LSB0_UINT (insn, 16, 9, 2); \
1078 f_disp9_hi = EXTRACT_LSB0_INT (insn, 16, 0, 1); \
1079 f_disp9_lo = EXTRACT_LSB0_UINT (insn, 16, 7, 7); \
1083 tmp_abslo = ((f_disp9_lo) << (1));\
1084 tmp_absval = ((((((f_disp9_hi) != (0))) ? ((~ (255))) : (0))) | (tmp_abslo));\
1085 f_disp9 = ((((pc) + (tmp_absval))) + (((GET_H_V32_V32 ()) ? (0) : (2))));\
1088 #define EXTRACT_IFMT_BA_B_VARS \
1095 unsigned int length;
1096 #define EXTRACT_IFMT_BA_B_CODE \
1098 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1099 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1100 f_opcode_hi = EXTRACT_LSB0_UINT (insn, 16, 9, 2); \
1101 f_disp9_hi = EXTRACT_LSB0_INT (insn, 16, 0, 1); \
1102 f_disp9_lo = EXTRACT_LSB0_UINT (insn, 16, 7, 7); \
1106 tmp_abslo = ((f_disp9_lo) << (1));\
1107 tmp_absval = ((((((f_disp9_hi) != (0))) ? ((~ (255))) : (0))) | (tmp_abslo));\
1108 f_disp9 = ((((pc) + (tmp_absval))) + (((GET_H_V32_V32 ()) ? (0) : (2))));\
1111 #define EXTRACT_IFMT_BCC_W_VARS \
1113 SI f_indir_pc__word_pcrel; \
1118 /* Contents of trailing part of insn. */ \
1120 unsigned int length;
1121 #define EXTRACT_IFMT_BCC_W_CODE \
1123 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
1124 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1125 f_indir_pc__word_pcrel = ((EXTHISI (((HI) (UINT) ((0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0)))))) + (((pc) + (((GET_H_V32_V32 ()) ? (0) : (4)))))); \
1126 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1127 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1128 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1129 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1131 #define EXTRACT_IFMT_BA_W_VARS \
1133 SI f_indir_pc__word_pcrel; \
1138 /* Contents of trailing part of insn. */ \
1140 unsigned int length;
1141 #define EXTRACT_IFMT_BA_W_CODE \
1143 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
1144 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1145 f_indir_pc__word_pcrel = ((EXTHISI (((HI) (UINT) ((0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0)))))) + (((pc) + (((GET_H_V32_V32 ()) ? (0) : (4)))))); \
1146 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1147 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1148 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1149 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1151 #define EXTRACT_IFMT_JAS_C_VARS \
1152 INT f_indir_pc__dword; \
1158 /* Contents of trailing part of insn. */ \
1160 unsigned int length;
1161 #define EXTRACT_IFMT_JAS_C_CODE \
1163 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
1164 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0)); \
1165 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1166 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1167 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1168 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1169 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1171 #define EXTRACT_IFMT_JUMP_P_VARS \
1177 unsigned int length;
1178 #define EXTRACT_IFMT_JUMP_P_CODE \
1180 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1181 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1182 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1183 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1184 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1186 #define EXTRACT_IFMT_BAS_C_VARS \
1187 SI f_indir_pc__dword_pcrel; \
1193 /* Contents of trailing part of insn. */ \
1195 unsigned int length;
1196 #define EXTRACT_IFMT_BAS_C_CODE \
1198 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
1199 f_indir_pc__dword_pcrel = ((pc) + ((0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0)))); \
1200 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1201 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1202 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1203 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1204 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1206 #define EXTRACT_IFMT_BREAK_VARS \
1212 unsigned int length;
1213 #define EXTRACT_IFMT_BREAK_CODE \
1215 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1216 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1217 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1218 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1219 f_u4 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1221 #define EXTRACT_IFMT_SCC_VARS \
1227 unsigned int length;
1228 #define EXTRACT_IFMT_SCC_CODE \
1230 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1231 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1232 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1233 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1234 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1236 #define EXTRACT_IFMT_ADDOQ_VARS \
1241 unsigned int length;
1242 #define EXTRACT_IFMT_ADDOQ_CODE \
1244 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1245 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1246 f_opcode_hi = EXTRACT_LSB0_UINT (insn, 16, 9, 2); \
1247 f_s8 = EXTRACT_LSB0_INT (insn, 16, 7, 8); \
1249 #define EXTRACT_IFMT_FIDXI_VARS \
1255 unsigned int length;
1256 #define EXTRACT_IFMT_FIDXI_CODE \
1258 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1259 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1260 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1261 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1262 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1264 /* Collection of various things for the trace handler to use. */
1266 typedef struct trace_record
{
1271 #endif /* CPU_CRISV32F_H */