OSDN Git Service

Regenerate cgen files, update copyright year.
[pf3gnuchains/pf3gnuchains3x.git] / sid / component / cgen-cpu / mep / mep-core1-decode.cxx
1 /* Simulator instruction decoder for mepcore1.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright (C) 2000-2010 Red Hat, Inc.
6
7 This file is part of the Red Hat simulators.
8
9
10 */
11
12
13 #if HAVE_CONFIG_H
14 #include "config.h"
15 #endif
16 #include "mep_ext1.h"
17
18 using namespace mep_ext1; // FIXME: namespace organization still wip
19
20
21 // The instruction descriptor array. 
22
23 mepcore1_idesc mepcore1_idesc::idesc_table[MEPCORE1_INSN_RI_26 + 1] =
24 {
25   { mepcore1_sem_x_invalid, "X_INVALID", MEPCORE1_INSN_X_INVALID, { 0|(1<<CGEN_INSN_VIRTUAL), (1<<MACH_BASE), { 1, "\x40" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
26   { mepcore1_sem_stcb_r, "STCB_R", MEPCORE1_INSN_STCB_R, { 0|(1<<CGEN_INSN_VOLATILE), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
27   { mepcore1_sem_ldcb_r, "LDCB_R", MEPCORE1_INSN_LDCB_R, { 0|(1<<CGEN_INSN_VOLATILE), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 3, CONFIG_NONE, (1<<SLOTS_CORE) } },
28   { mepcore1_sem_pref, "PREF", MEPCORE1_INSN_PREF, { 0|(1<<CGEN_INSN_VOLATILE), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
29   { mepcore1_sem_prefd, "PREFD", MEPCORE1_INSN_PREFD, { 0|(1<<CGEN_INSN_VOLATILE), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
30   { mepcore1_sem_casb3, "CASB3", MEPCORE1_INSN_CASB3, { 0|(1<<CGEN_INSN_OPTIONAL_BIT_INSN)|(1<<CGEN_INSN_VOLATILE), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
31   { mepcore1_sem_cash3, "CASH3", MEPCORE1_INSN_CASH3, { 0|(1<<CGEN_INSN_OPTIONAL_BIT_INSN)|(1<<CGEN_INSN_VOLATILE), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
32   { mepcore1_sem_casw3, "CASW3", MEPCORE1_INSN_CASW3, { 0|(1<<CGEN_INSN_OPTIONAL_BIT_INSN)|(1<<CGEN_INSN_VOLATILE), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
33   { mepcore1_sem_sbcp, "SBCP", MEPCORE1_INSN_SBCP, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
34   { mepcore1_sem_lbcp, "LBCP", MEPCORE1_INSN_LBCP, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
35   { mepcore1_sem_lbucp, "LBUCP", MEPCORE1_INSN_LBUCP, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
36   { mepcore1_sem_shcp, "SHCP", MEPCORE1_INSN_SHCP, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
37   { mepcore1_sem_lhcp, "LHCP", MEPCORE1_INSN_LHCP, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
38   { mepcore1_sem_lhucp, "LHUCP", MEPCORE1_INSN_LHUCP, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
39   { mepcore1_sem_lbucpa, "LBUCPA", MEPCORE1_INSN_LBUCPA, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
40   { mepcore1_sem_lhucpa, "LHUCPA", MEPCORE1_INSN_LHUCPA, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
41   { mepcore1_sem_lbucpm0, "LBUCPM0", MEPCORE1_INSN_LBUCPM0, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
42   { mepcore1_sem_lhucpm0, "LHUCPM0", MEPCORE1_INSN_LHUCPM0, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
43   { mepcore1_sem_lbucpm1, "LBUCPM1", MEPCORE1_INSN_LBUCPM1, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
44   { mepcore1_sem_lhucpm1, "LHUCPM1", MEPCORE1_INSN_LHUCPM1, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
45   { mepcore1_sem_uci, "UCI", MEPCORE1_INSN_UCI, { 0|(1<<CGEN_INSN_VOLATILE), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
46   { mepcore1_sem_dsp, "DSP", MEPCORE1_INSN_DSP, { 0|(1<<CGEN_INSN_VOLATILE), (1<<MACH_C5), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
47   { mepcore1_sem_sb, "SB", MEPCORE1_INSN_SB, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
48   { mepcore1_sem_sh, "SH", MEPCORE1_INSN_SH, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
49   { mepcore1_sem_sw, "SW", MEPCORE1_INSN_SW, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
50   { mepcore1_sem_lb, "LB", MEPCORE1_INSN_LB, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 2, CONFIG_NONE, (1<<SLOTS_CORE) } },
51   { mepcore1_sem_lh, "LH", MEPCORE1_INSN_LH, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 2, CONFIG_NONE, (1<<SLOTS_CORE) } },
52   { mepcore1_sem_lw, "LW", MEPCORE1_INSN_LW, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 2, CONFIG_NONE, (1<<SLOTS_CORE) } },
53   { mepcore1_sem_lbu, "LBU", MEPCORE1_INSN_LBU, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 2, CONFIG_NONE, (1<<SLOTS_CORE) } },
54   { mepcore1_sem_lhu, "LHU", MEPCORE1_INSN_LHU, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 2, CONFIG_NONE, (1<<SLOTS_CORE) } },
55   { mepcore1_sem_sw_sp, "SW_SP", MEPCORE1_INSN_SW_SP, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
56   { mepcore1_sem_lw_sp, "LW_SP", MEPCORE1_INSN_LW_SP, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 2, CONFIG_NONE, (1<<SLOTS_CORE) } },
57   { mepcore1_sem_sb_tp, "SB_TP", MEPCORE1_INSN_SB_TP, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
58   { mepcore1_sem_sh_tp, "SH_TP", MEPCORE1_INSN_SH_TP, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
59   { mepcore1_sem_sw_tp, "SW_TP", MEPCORE1_INSN_SW_TP, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
60   { mepcore1_sem_lb_tp, "LB_TP", MEPCORE1_INSN_LB_TP, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 2, CONFIG_NONE, (1<<SLOTS_CORE) } },
61   { mepcore1_sem_lh_tp, "LH_TP", MEPCORE1_INSN_LH_TP, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 2, CONFIG_NONE, (1<<SLOTS_CORE) } },
62   { mepcore1_sem_lw_tp, "LW_TP", MEPCORE1_INSN_LW_TP, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 2, CONFIG_NONE, (1<<SLOTS_CORE) } },
63   { mepcore1_sem_lbu_tp, "LBU_TP", MEPCORE1_INSN_LBU_TP, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 2, CONFIG_NONE, (1<<SLOTS_CORE) } },
64   { mepcore1_sem_lhu_tp, "LHU_TP", MEPCORE1_INSN_LHU_TP, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 2, CONFIG_NONE, (1<<SLOTS_CORE) } },
65   { mepcore1_sem_sb16, "SB16", MEPCORE1_INSN_SB16, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
66   { mepcore1_sem_sh16, "SH16", MEPCORE1_INSN_SH16, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
67   { mepcore1_sem_sw16, "SW16", MEPCORE1_INSN_SW16, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
68   { mepcore1_sem_lb16, "LB16", MEPCORE1_INSN_LB16, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 2, CONFIG_NONE, (1<<SLOTS_CORE) } },
69   { mepcore1_sem_lh16, "LH16", MEPCORE1_INSN_LH16, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 2, CONFIG_NONE, (1<<SLOTS_CORE) } },
70   { mepcore1_sem_lw16, "LW16", MEPCORE1_INSN_LW16, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 2, CONFIG_NONE, (1<<SLOTS_CORE) } },
71   { mepcore1_sem_lbu16, "LBU16", MEPCORE1_INSN_LBU16, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 2, CONFIG_NONE, (1<<SLOTS_CORE) } },
72   { mepcore1_sem_lhu16, "LHU16", MEPCORE1_INSN_LHU16, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 2, CONFIG_NONE, (1<<SLOTS_CORE) } },
73   { mepcore1_sem_sw24, "SW24", MEPCORE1_INSN_SW24, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
74   { mepcore1_sem_lw24, "LW24", MEPCORE1_INSN_LW24, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 2, CONFIG_NONE, (1<<SLOTS_CORE) } },
75   { mepcore1_sem_extb, "EXTB", MEPCORE1_INSN_EXTB, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
76   { mepcore1_sem_exth, "EXTH", MEPCORE1_INSN_EXTH, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
77   { mepcore1_sem_extub, "EXTUB", MEPCORE1_INSN_EXTUB, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
78   { mepcore1_sem_extuh, "EXTUH", MEPCORE1_INSN_EXTUH, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
79   { mepcore1_sem_ssarb, "SSARB", MEPCORE1_INSN_SSARB, { 0|(1<<CGEN_INSN_VOLATILE), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
80   { mepcore1_sem_mov, "MOV", MEPCORE1_INSN_MOV, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
81   { mepcore1_sem_movi8, "MOVI8", MEPCORE1_INSN_MOVI8, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
82   { mepcore1_sem_movi16, "MOVI16", MEPCORE1_INSN_MOVI16, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
83   { mepcore1_sem_movu24, "MOVU24", MEPCORE1_INSN_MOVU24, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
84   { mepcore1_sem_movu16, "MOVU16", MEPCORE1_INSN_MOVU16, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
85   { mepcore1_sem_movh, "MOVH", MEPCORE1_INSN_MOVH, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
86   { mepcore1_sem_add3, "ADD3", MEPCORE1_INSN_ADD3, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
87   { mepcore1_sem_add, "ADD", MEPCORE1_INSN_ADD, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
88   { mepcore1_sem_add3i, "ADD3I", MEPCORE1_INSN_ADD3I, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
89   { mepcore1_sem_advck3, "ADVCK3", MEPCORE1_INSN_ADVCK3, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
90   { mepcore1_sem_sub, "SUB", MEPCORE1_INSN_SUB, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
91   { mepcore1_sem_sbvck3, "SBVCK3", MEPCORE1_INSN_SBVCK3, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
92   { mepcore1_sem_neg, "NEG", MEPCORE1_INSN_NEG, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
93   { mepcore1_sem_slt3, "SLT3", MEPCORE1_INSN_SLT3, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
94   { mepcore1_sem_sltu3, "SLTU3", MEPCORE1_INSN_SLTU3, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
95   { mepcore1_sem_slt3i, "SLT3I", MEPCORE1_INSN_SLT3I, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
96   { mepcore1_sem_sltu3i, "SLTU3I", MEPCORE1_INSN_SLTU3I, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
97   { mepcore1_sem_sl1ad3, "SL1AD3", MEPCORE1_INSN_SL1AD3, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
98   { mepcore1_sem_sl2ad3, "SL2AD3", MEPCORE1_INSN_SL2AD3, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
99   { mepcore1_sem_add3x, "ADD3X", MEPCORE1_INSN_ADD3X, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
100   { mepcore1_sem_slt3x, "SLT3X", MEPCORE1_INSN_SLT3X, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
101   { mepcore1_sem_sltu3x, "SLTU3X", MEPCORE1_INSN_SLTU3X, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
102   { mepcore1_sem_or, "OR", MEPCORE1_INSN_OR, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
103   { mepcore1_sem_and, "AND", MEPCORE1_INSN_AND, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
104   { mepcore1_sem_xor, "XOR", MEPCORE1_INSN_XOR, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
105   { mepcore1_sem_nor, "NOR", MEPCORE1_INSN_NOR, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
106   { mepcore1_sem_or3, "OR3", MEPCORE1_INSN_OR3, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
107   { mepcore1_sem_and3, "AND3", MEPCORE1_INSN_AND3, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
108   { mepcore1_sem_xor3, "XOR3", MEPCORE1_INSN_XOR3, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
109   { mepcore1_sem_sra, "SRA", MEPCORE1_INSN_SRA, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
110   { mepcore1_sem_srl, "SRL", MEPCORE1_INSN_SRL, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
111   { mepcore1_sem_sll, "SLL", MEPCORE1_INSN_SLL, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
112   { mepcore1_sem_srai, "SRAI", MEPCORE1_INSN_SRAI, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
113   { mepcore1_sem_srli, "SRLI", MEPCORE1_INSN_SRLI, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
114   { mepcore1_sem_slli, "SLLI", MEPCORE1_INSN_SLLI, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
115   { mepcore1_sem_sll3, "SLL3", MEPCORE1_INSN_SLL3, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
116   { mepcore1_sem_fsft, "FSFT", MEPCORE1_INSN_FSFT, { 0|(1<<CGEN_INSN_VOLATILE), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
117   { mepcore1_sem_bra, "BRA", MEPCORE1_INSN_BRA, { 0|(1<<CGEN_INSN_RELAXABLE)|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
118   { mepcore1_sem_beqz, "BEQZ", MEPCORE1_INSN_BEQZ, { 0|(1<<CGEN_INSN_RELAXABLE)|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
119   { mepcore1_sem_bnez, "BNEZ", MEPCORE1_INSN_BNEZ, { 0|(1<<CGEN_INSN_RELAXABLE)|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
120   { mepcore1_sem_beqi, "BEQI", MEPCORE1_INSN_BEQI, { 0|(1<<CGEN_INSN_RELAXABLE)|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
121   { mepcore1_sem_bnei, "BNEI", MEPCORE1_INSN_BNEI, { 0|(1<<CGEN_INSN_RELAXABLE)|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
122   { mepcore1_sem_blti, "BLTI", MEPCORE1_INSN_BLTI, { 0|(1<<CGEN_INSN_RELAXABLE)|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
123   { mepcore1_sem_bgei, "BGEI", MEPCORE1_INSN_BGEI, { 0|(1<<CGEN_INSN_RELAXABLE)|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
124   { mepcore1_sem_beq, "BEQ", MEPCORE1_INSN_BEQ, { 0|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
125   { mepcore1_sem_bne, "BNE", MEPCORE1_INSN_BNE, { 0|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
126   { mepcore1_sem_bsr12, "BSR12", MEPCORE1_INSN_BSR12, { 0|(1<<CGEN_INSN_RELAXABLE)|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
127   { mepcore1_sem_bsr24, "BSR24", MEPCORE1_INSN_BSR24, { 0|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
128   { mepcore1_sem_jmp, "JMP", MEPCORE1_INSN_JMP, { 0|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
129   { mepcore1_sem_jmp24, "JMP24", MEPCORE1_INSN_JMP24, { 0|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
130   { mepcore1_sem_jsr, "JSR", MEPCORE1_INSN_JSR, { 0|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
131   { mepcore1_sem_ret, "RET", MEPCORE1_INSN_RET, { 0|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
132   { mepcore1_sem_repeat, "REPEAT", MEPCORE1_INSN_REPEAT, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
133   { mepcore1_sem_erepeat, "EREPEAT", MEPCORE1_INSN_EREPEAT, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
134   { mepcore1_sem_stc_lp, "STC_LP", MEPCORE1_INSN_STC_LP, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
135   { mepcore1_sem_stc_hi, "STC_HI", MEPCORE1_INSN_STC_HI, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
136   { mepcore1_sem_stc_lo, "STC_LO", MEPCORE1_INSN_STC_LO, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
137   { mepcore1_sem_stc, "STC", MEPCORE1_INSN_STC, { 0|(1<<CGEN_INSN_VOLATILE), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
138   { mepcore1_sem_ldc_lp, "LDC_LP", MEPCORE1_INSN_LDC_LP, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
139   { mepcore1_sem_ldc_hi, "LDC_HI", MEPCORE1_INSN_LDC_HI, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
140   { mepcore1_sem_ldc_lo, "LDC_LO", MEPCORE1_INSN_LDC_LO, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
141   { mepcore1_sem_ldc, "LDC", MEPCORE1_INSN_LDC, { 0|(1<<CGEN_INSN_VOLATILE), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 2, CONFIG_NONE, (1<<SLOTS_CORE) } },
142   { mepcore1_sem_di, "DI", MEPCORE1_INSN_DI, { 0|(1<<CGEN_INSN_VOLATILE), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
143   { mepcore1_sem_ei, "EI", MEPCORE1_INSN_EI, { 0|(1<<CGEN_INSN_VOLATILE), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
144   { mepcore1_sem_reti, "RETI", MEPCORE1_INSN_RETI, { 0|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
145   { mepcore1_sem_halt, "HALT", MEPCORE1_INSN_HALT, { 0|(1<<CGEN_INSN_VOLATILE), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
146   { mepcore1_sem_sleep, "SLEEP", MEPCORE1_INSN_SLEEP, { 0|(1<<CGEN_INSN_VOLATILE), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
147   { mepcore1_sem_swi, "SWI", MEPCORE1_INSN_SWI, { 0|(1<<CGEN_INSN_VOLATILE)|(1<<CGEN_INSN_MAY_TRAP), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
148   { mepcore1_sem_break, "BREAK", MEPCORE1_INSN_BREAK, { 0|(1<<CGEN_INSN_VOLATILE)|(1<<CGEN_INSN_MAY_TRAP)|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
149   { mepcore1_sem_syncm, "SYNCM", MEPCORE1_INSN_SYNCM, { 0|(1<<CGEN_INSN_VOLATILE), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
150   { mepcore1_sem_stcb, "STCB", MEPCORE1_INSN_STCB, { 0|(1<<CGEN_INSN_VOLATILE), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
151   { mepcore1_sem_ldcb, "LDCB", MEPCORE1_INSN_LDCB, { 0|(1<<CGEN_INSN_VOLATILE), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 3, CONFIG_NONE, (1<<SLOTS_CORE) } },
152   { mepcore1_sem_bsetm, "BSETM", MEPCORE1_INSN_BSETM, { 0|(1<<CGEN_INSN_OPTIONAL_BIT_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
153   { mepcore1_sem_bclrm, "BCLRM", MEPCORE1_INSN_BCLRM, { 0|(1<<CGEN_INSN_OPTIONAL_BIT_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
154   { mepcore1_sem_bnotm, "BNOTM", MEPCORE1_INSN_BNOTM, { 0|(1<<CGEN_INSN_OPTIONAL_BIT_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
155   { mepcore1_sem_btstm, "BTSTM", MEPCORE1_INSN_BTSTM, { 0|(1<<CGEN_INSN_OPTIONAL_BIT_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
156   { mepcore1_sem_tas, "TAS", MEPCORE1_INSN_TAS, { 0|(1<<CGEN_INSN_OPTIONAL_BIT_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
157   { mepcore1_sem_cache, "CACHE", MEPCORE1_INSN_CACHE, { 0|(1<<CGEN_INSN_VOLATILE), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
158   { mepcore1_sem_mul, "MUL", MEPCORE1_INSN_MUL, { 0|(1<<CGEN_INSN_OPTIONAL_MUL_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
159   { mepcore1_sem_mulu, "MULU", MEPCORE1_INSN_MULU, { 0|(1<<CGEN_INSN_OPTIONAL_MUL_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
160   { mepcore1_sem_mulr, "MULR", MEPCORE1_INSN_MULR, { 0|(1<<CGEN_INSN_OPTIONAL_MUL_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 3, CONFIG_NONE, (1<<SLOTS_CORE) } },
161   { mepcore1_sem_mulru, "MULRU", MEPCORE1_INSN_MULRU, { 0|(1<<CGEN_INSN_OPTIONAL_MUL_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 3, CONFIG_NONE, (1<<SLOTS_CORE) } },
162   { mepcore1_sem_madd, "MADD", MEPCORE1_INSN_MADD, { 0|(1<<CGEN_INSN_OPTIONAL_MUL_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
163   { mepcore1_sem_maddu, "MADDU", MEPCORE1_INSN_MADDU, { 0|(1<<CGEN_INSN_OPTIONAL_MUL_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
164   { mepcore1_sem_maddr, "MADDR", MEPCORE1_INSN_MADDR, { 0|(1<<CGEN_INSN_OPTIONAL_MUL_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 3, CONFIG_NONE, (1<<SLOTS_CORE) } },
165   { mepcore1_sem_maddru, "MADDRU", MEPCORE1_INSN_MADDRU, { 0|(1<<CGEN_INSN_OPTIONAL_MUL_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 3, CONFIG_NONE, (1<<SLOTS_CORE) } },
166   { mepcore1_sem_div, "DIV", MEPCORE1_INSN_DIV, { 0|(1<<CGEN_INSN_MAY_TRAP)|(1<<CGEN_INSN_OPTIONAL_DIV_INSN)|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 34, CONFIG_NONE, (1<<SLOTS_CORE) } },
167   { mepcore1_sem_divu, "DIVU", MEPCORE1_INSN_DIVU, { 0|(1<<CGEN_INSN_MAY_TRAP)|(1<<CGEN_INSN_OPTIONAL_DIV_INSN)|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 34, CONFIG_NONE, (1<<SLOTS_CORE) } },
168   { mepcore1_sem_dret, "DRET", MEPCORE1_INSN_DRET, { 0|(1<<CGEN_INSN_OPTIONAL_DEBUG_INSN)|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
169   { mepcore1_sem_dbreak, "DBREAK", MEPCORE1_INSN_DBREAK, { 0|(1<<CGEN_INSN_VOLATILE)|(1<<CGEN_INSN_MAY_TRAP)|(1<<CGEN_INSN_OPTIONAL_DEBUG_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
170   { mepcore1_sem_ldz, "LDZ", MEPCORE1_INSN_LDZ, { 0|(1<<CGEN_INSN_OPTIONAL_LDZ_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
171   { mepcore1_sem_abs, "ABS", MEPCORE1_INSN_ABS, { 0|(1<<CGEN_INSN_OPTIONAL_ABS_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
172   { mepcore1_sem_ave, "AVE", MEPCORE1_INSN_AVE, { 0|(1<<CGEN_INSN_OPTIONAL_AVE_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
173   { mepcore1_sem_min, "MIN", MEPCORE1_INSN_MIN, { 0|(1<<CGEN_INSN_OPTIONAL_MINMAX_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
174   { mepcore1_sem_max, "MAX", MEPCORE1_INSN_MAX, { 0|(1<<CGEN_INSN_OPTIONAL_MINMAX_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
175   { mepcore1_sem_minu, "MINU", MEPCORE1_INSN_MINU, { 0|(1<<CGEN_INSN_OPTIONAL_MINMAX_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
176   { mepcore1_sem_maxu, "MAXU", MEPCORE1_INSN_MAXU, { 0|(1<<CGEN_INSN_OPTIONAL_MINMAX_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
177   { mepcore1_sem_clip, "CLIP", MEPCORE1_INSN_CLIP, { 0|(1<<CGEN_INSN_OPTIONAL_CLIP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
178   { mepcore1_sem_clipu, "CLIPU", MEPCORE1_INSN_CLIPU, { 0|(1<<CGEN_INSN_OPTIONAL_CLIP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
179   { mepcore1_sem_sadd, "SADD", MEPCORE1_INSN_SADD, { 0|(1<<CGEN_INSN_OPTIONAL_SAT_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
180   { mepcore1_sem_ssub, "SSUB", MEPCORE1_INSN_SSUB, { 0|(1<<CGEN_INSN_OPTIONAL_SAT_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
181   { mepcore1_sem_saddu, "SADDU", MEPCORE1_INSN_SADDU, { 0|(1<<CGEN_INSN_OPTIONAL_SAT_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
182   { mepcore1_sem_ssubu, "SSUBU", MEPCORE1_INSN_SSUBU, { 0|(1<<CGEN_INSN_OPTIONAL_SAT_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
183   { mepcore1_sem_swcp, "SWCP", MEPCORE1_INSN_SWCP, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
184   { mepcore1_sem_lwcp, "LWCP", MEPCORE1_INSN_LWCP, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
185   { mepcore1_sem_smcp, "SMCP", MEPCORE1_INSN_SMCP, { 0|(1<<CGEN_INSN_OPTIONAL_CP64_INSN)|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
186   { mepcore1_sem_lmcp, "LMCP", MEPCORE1_INSN_LMCP, { 0|(1<<CGEN_INSN_OPTIONAL_CP64_INSN)|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
187   { mepcore1_sem_swcpi, "SWCPI", MEPCORE1_INSN_SWCPI, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
188   { mepcore1_sem_lwcpi, "LWCPI", MEPCORE1_INSN_LWCPI, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
189   { mepcore1_sem_smcpi, "SMCPI", MEPCORE1_INSN_SMCPI, { 0|(1<<CGEN_INSN_OPTIONAL_CP64_INSN)|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
190   { mepcore1_sem_lmcpi, "LMCPI", MEPCORE1_INSN_LMCPI, { 0|(1<<CGEN_INSN_OPTIONAL_CP64_INSN)|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
191   { mepcore1_sem_swcp16, "SWCP16", MEPCORE1_INSN_SWCP16, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
192   { mepcore1_sem_lwcp16, "LWCP16", MEPCORE1_INSN_LWCP16, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
193   { mepcore1_sem_smcp16, "SMCP16", MEPCORE1_INSN_SMCP16, { 0|(1<<CGEN_INSN_OPTIONAL_CP64_INSN)|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
194   { mepcore1_sem_lmcp16, "LMCP16", MEPCORE1_INSN_LMCP16, { 0|(1<<CGEN_INSN_OPTIONAL_CP64_INSN)|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
195   { mepcore1_sem_sbcpa, "SBCPA", MEPCORE1_INSN_SBCPA, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
196   { mepcore1_sem_lbcpa, "LBCPA", MEPCORE1_INSN_LBCPA, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
197   { mepcore1_sem_shcpa, "SHCPA", MEPCORE1_INSN_SHCPA, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
198   { mepcore1_sem_lhcpa, "LHCPA", MEPCORE1_INSN_LHCPA, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
199   { mepcore1_sem_swcpa, "SWCPA", MEPCORE1_INSN_SWCPA, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
200   { mepcore1_sem_lwcpa, "LWCPA", MEPCORE1_INSN_LWCPA, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
201   { mepcore1_sem_smcpa, "SMCPA", MEPCORE1_INSN_SMCPA, { 0|(1<<CGEN_INSN_OPTIONAL_CP64_INSN)|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
202   { mepcore1_sem_lmcpa, "LMCPA", MEPCORE1_INSN_LMCPA, { 0|(1<<CGEN_INSN_OPTIONAL_CP64_INSN)|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
203   { mepcore1_sem_sbcpm0, "SBCPM0", MEPCORE1_INSN_SBCPM0, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
204   { mepcore1_sem_lbcpm0, "LBCPM0", MEPCORE1_INSN_LBCPM0, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
205   { mepcore1_sem_shcpm0, "SHCPM0", MEPCORE1_INSN_SHCPM0, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
206   { mepcore1_sem_lhcpm0, "LHCPM0", MEPCORE1_INSN_LHCPM0, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
207   { mepcore1_sem_swcpm0, "SWCPM0", MEPCORE1_INSN_SWCPM0, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
208   { mepcore1_sem_lwcpm0, "LWCPM0", MEPCORE1_INSN_LWCPM0, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
209   { mepcore1_sem_smcpm0, "SMCPM0", MEPCORE1_INSN_SMCPM0, { 0|(1<<CGEN_INSN_OPTIONAL_CP64_INSN)|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
210   { mepcore1_sem_lmcpm0, "LMCPM0", MEPCORE1_INSN_LMCPM0, { 0|(1<<CGEN_INSN_OPTIONAL_CP64_INSN)|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
211   { mepcore1_sem_sbcpm1, "SBCPM1", MEPCORE1_INSN_SBCPM1, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
212   { mepcore1_sem_lbcpm1, "LBCPM1", MEPCORE1_INSN_LBCPM1, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
213   { mepcore1_sem_shcpm1, "SHCPM1", MEPCORE1_INSN_SHCPM1, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
214   { mepcore1_sem_lhcpm1, "LHCPM1", MEPCORE1_INSN_LHCPM1, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
215   { mepcore1_sem_swcpm1, "SWCPM1", MEPCORE1_INSN_SWCPM1, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
216   { mepcore1_sem_lwcpm1, "LWCPM1", MEPCORE1_INSN_LWCPM1, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
217   { mepcore1_sem_smcpm1, "SMCPM1", MEPCORE1_INSN_SMCPM1, { 0|(1<<CGEN_INSN_OPTIONAL_CP64_INSN)|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
218   { mepcore1_sem_lmcpm1, "LMCPM1", MEPCORE1_INSN_LMCPM1, { 0|(1<<CGEN_INSN_OPTIONAL_CP64_INSN)|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
219   { mepcore1_sem_bcpeq, "BCPEQ", MEPCORE1_INSN_BCPEQ, { 0|(1<<CGEN_INSN_RELAXABLE)|(1<<CGEN_INSN_OPTIONAL_CP_INSN)|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
220   { mepcore1_sem_bcpne, "BCPNE", MEPCORE1_INSN_BCPNE, { 0|(1<<CGEN_INSN_RELAXABLE)|(1<<CGEN_INSN_OPTIONAL_CP_INSN)|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
221   { mepcore1_sem_bcpat, "BCPAT", MEPCORE1_INSN_BCPAT, { 0|(1<<CGEN_INSN_RELAXABLE)|(1<<CGEN_INSN_OPTIONAL_CP_INSN)|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
222   { mepcore1_sem_bcpaf, "BCPAF", MEPCORE1_INSN_BCPAF, { 0|(1<<CGEN_INSN_RELAXABLE)|(1<<CGEN_INSN_OPTIONAL_CP_INSN)|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
223   { mepcore1_sem_synccp, "SYNCCP", MEPCORE1_INSN_SYNCCP, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
224   { mepcore1_sem_jsrv, "JSRV", MEPCORE1_INSN_JSRV, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN)|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
225   { mepcore1_sem_bsrv, "BSRV", MEPCORE1_INSN_BSRV, { 0|(1<<CGEN_INSN_OPTIONAL_CP_INSN)|(1<<CGEN_INSN_COND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
226   { mepcore1_sem_sim_syscall, "SIM_SYSCALL", MEPCORE1_INSN_SIM_SYSCALL, { 0, (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
227   { mepcore1_sem_ri_0, "RI_0", MEPCORE1_INSN_RI_0, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
228   { mepcore1_sem_ri_1, "RI_1", MEPCORE1_INSN_RI_1, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
229   { mepcore1_sem_ri_2, "RI_2", MEPCORE1_INSN_RI_2, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
230   { mepcore1_sem_ri_3, "RI_3", MEPCORE1_INSN_RI_3, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
231   { mepcore1_sem_ri_4, "RI_4", MEPCORE1_INSN_RI_4, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
232   { mepcore1_sem_ri_5, "RI_5", MEPCORE1_INSN_RI_5, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
233   { mepcore1_sem_ri_6, "RI_6", MEPCORE1_INSN_RI_6, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
234   { mepcore1_sem_ri_7, "RI_7", MEPCORE1_INSN_RI_7, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
235   { mepcore1_sem_ri_8, "RI_8", MEPCORE1_INSN_RI_8, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
236   { mepcore1_sem_ri_9, "RI_9", MEPCORE1_INSN_RI_9, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
237   { mepcore1_sem_ri_10, "RI_10", MEPCORE1_INSN_RI_10, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
238   { mepcore1_sem_ri_11, "RI_11", MEPCORE1_INSN_RI_11, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
239   { mepcore1_sem_ri_12, "RI_12", MEPCORE1_INSN_RI_12, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
240   { mepcore1_sem_ri_13, "RI_13", MEPCORE1_INSN_RI_13, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
241   { mepcore1_sem_ri_14, "RI_14", MEPCORE1_INSN_RI_14, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
242   { mepcore1_sem_ri_15, "RI_15", MEPCORE1_INSN_RI_15, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
243   { mepcore1_sem_ri_17, "RI_17", MEPCORE1_INSN_RI_17, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
244   { mepcore1_sem_ri_20, "RI_20", MEPCORE1_INSN_RI_20, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
245   { mepcore1_sem_ri_21, "RI_21", MEPCORE1_INSN_RI_21, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
246   { mepcore1_sem_ri_22, "RI_22", MEPCORE1_INSN_RI_22, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
247   { mepcore1_sem_ri_23, "RI_23", MEPCORE1_INSN_RI_23, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
248   { mepcore1_sem_ri_26, "RI_26", MEPCORE1_INSN_RI_26, { 0|(1<<CGEN_INSN_UNCOND_CTI), (1<<MACH_BASE), { 1, "\xc0" }, CPTYPE_CP_DATA_BUS_INT, CRET_VOID, 0, CONFIG_NONE, (1<<SLOTS_CORE) } },
249
250 };
251
252 // Given a canonical virtual insn id, return the target specific one.
253
254 mepcore1_insn_type
255 mepcore1_idesc::lookup_virtual (virtual_insn_type vit)
256 {
257   switch (vit)
258     {
259       case VIRTUAL_INSN_INVALID: return MEPCORE1_INSN_X_INVALID;
260       case VIRTUAL_INSN_COND: return MEPCORE1_INSN_X_INVALID;
261     }
262   abort ();
263 }
264
265
266 // Declare extractor functions
267
268 static void
269 mepcore1_extract_sfmt_empty (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
270 static void
271 mepcore1_extract_sfmt_stcb_r (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
272 static void
273 mepcore1_extract_sfmt_ldcb_r (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
274 static void
275 mepcore1_extract_sfmt_pref (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
276 static void
277 mepcore1_extract_sfmt_prefd (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
278 static void
279 mepcore1_extract_sfmt_casb3 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
280 static void
281 mepcore1_extract_sfmt_sbcp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
282 static void
283 mepcore1_extract_sfmt_lbcp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
284 static void
285 mepcore1_extract_sfmt_shcp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
286 static void
287 mepcore1_extract_sfmt_lhcp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
288 static void
289 mepcore1_extract_sfmt_lbucpa (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
290 static void
291 mepcore1_extract_sfmt_lhucpa (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
292 static void
293 mepcore1_extract_sfmt_lbucpm0 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
294 static void
295 mepcore1_extract_sfmt_lhucpm0 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
296 static void
297 mepcore1_extract_sfmt_lbucpm1 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
298 static void
299 mepcore1_extract_sfmt_lhucpm1 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
300 static void
301 mepcore1_extract_sfmt_uci (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
302 static void
303 mepcore1_extract_sfmt_sb (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
304 static void
305 mepcore1_extract_sfmt_sh (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
306 static void
307 mepcore1_extract_sfmt_sw (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
308 static void
309 mepcore1_extract_sfmt_lb (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
310 static void
311 mepcore1_extract_sfmt_lh (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
312 static void
313 mepcore1_extract_sfmt_lw (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
314 static void
315 mepcore1_extract_sfmt_lbu (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
316 static void
317 mepcore1_extract_sfmt_lhu (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
318 static void
319 mepcore1_extract_sfmt_sw_sp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
320 static void
321 mepcore1_extract_sfmt_lw_sp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
322 static void
323 mepcore1_extract_sfmt_sb_tp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
324 static void
325 mepcore1_extract_sfmt_sh_tp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
326 static void
327 mepcore1_extract_sfmt_sw_tp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
328 static void
329 mepcore1_extract_sfmt_lb_tp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
330 static void
331 mepcore1_extract_sfmt_lh_tp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
332 static void
333 mepcore1_extract_sfmt_lw_tp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
334 static void
335 mepcore1_extract_sfmt_lbu_tp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
336 static void
337 mepcore1_extract_sfmt_lhu_tp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
338 static void
339 mepcore1_extract_sfmt_sb16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
340 static void
341 mepcore1_extract_sfmt_sh16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
342 static void
343 mepcore1_extract_sfmt_sw16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
344 static void
345 mepcore1_extract_sfmt_lb16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
346 static void
347 mepcore1_extract_sfmt_lh16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
348 static void
349 mepcore1_extract_sfmt_lw16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
350 static void
351 mepcore1_extract_sfmt_lbu16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
352 static void
353 mepcore1_extract_sfmt_lhu16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
354 static void
355 mepcore1_extract_sfmt_sw24 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
356 static void
357 mepcore1_extract_sfmt_lw24 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
358 static void
359 mepcore1_extract_sfmt_extb (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
360 static void
361 mepcore1_extract_sfmt_ssarb (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
362 static void
363 mepcore1_extract_sfmt_mov (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
364 static void
365 mepcore1_extract_sfmt_movi8 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
366 static void
367 mepcore1_extract_sfmt_movi16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
368 static void
369 mepcore1_extract_sfmt_movu24 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
370 static void
371 mepcore1_extract_sfmt_movu16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
372 static void
373 mepcore1_extract_sfmt_add3 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
374 static void
375 mepcore1_extract_sfmt_add (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
376 static void
377 mepcore1_extract_sfmt_add3i (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
378 static void
379 mepcore1_extract_sfmt_advck3 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
380 static void
381 mepcore1_extract_sfmt_sub (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
382 static void
383 mepcore1_extract_sfmt_slt3i (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
384 static void
385 mepcore1_extract_sfmt_sl1ad3 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
386 static void
387 mepcore1_extract_sfmt_add3x (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
388 static void
389 mepcore1_extract_sfmt_slt3x (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
390 static void
391 mepcore1_extract_sfmt_sltu3x (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
392 static void
393 mepcore1_extract_sfmt_or3 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
394 static void
395 mepcore1_extract_sfmt_srai (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
396 static void
397 mepcore1_extract_sfmt_sll3 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
398 static void
399 mepcore1_extract_sfmt_fsft (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
400 static void
401 mepcore1_extract_sfmt_bra (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
402 static void
403 mepcore1_extract_sfmt_beqz (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
404 static void
405 mepcore1_extract_sfmt_beqi (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
406 static void
407 mepcore1_extract_sfmt_beq (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
408 static void
409 mepcore1_extract_sfmt_bsr12 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
410 static void
411 mepcore1_extract_sfmt_bsr24 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
412 static void
413 mepcore1_extract_sfmt_jmp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
414 static void
415 mepcore1_extract_sfmt_jmp24 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
416 static void
417 mepcore1_extract_sfmt_jsr (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
418 static void
419 mepcore1_extract_sfmt_ret (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
420 static void
421 mepcore1_extract_sfmt_repeat (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
422 static void
423 mepcore1_extract_sfmt_erepeat (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
424 static void
425 mepcore1_extract_sfmt_stc_lp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
426 static void
427 mepcore1_extract_sfmt_stc_hi (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
428 static void
429 mepcore1_extract_sfmt_stc_lo (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
430 static void
431 mepcore1_extract_sfmt_stc (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
432 static void
433 mepcore1_extract_sfmt_ldc_lp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
434 static void
435 mepcore1_extract_sfmt_ldc_hi (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
436 static void
437 mepcore1_extract_sfmt_ldc_lo (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
438 static void
439 mepcore1_extract_sfmt_ldc (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
440 static void
441 mepcore1_extract_sfmt_di (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
442 static void
443 mepcore1_extract_sfmt_reti (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
444 static void
445 mepcore1_extract_sfmt_halt (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
446 static void
447 mepcore1_extract_sfmt_sleep (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
448 static void
449 mepcore1_extract_sfmt_swi (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
450 static void
451 mepcore1_extract_sfmt_break (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
452 static void
453 mepcore1_extract_sfmt_stcb (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
454 static void
455 mepcore1_extract_sfmt_bsetm (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
456 static void
457 mepcore1_extract_sfmt_btstm (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
458 static void
459 mepcore1_extract_sfmt_tas (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
460 static void
461 mepcore1_extract_sfmt_mul (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
462 static void
463 mepcore1_extract_sfmt_mulr (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
464 static void
465 mepcore1_extract_sfmt_madd (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
466 static void
467 mepcore1_extract_sfmt_maddr (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
468 static void
469 mepcore1_extract_sfmt_div (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
470 static void
471 mepcore1_extract_sfmt_dret (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
472 static void
473 mepcore1_extract_sfmt_dbreak (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
474 static void
475 mepcore1_extract_sfmt_ldz (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
476 static void
477 mepcore1_extract_sfmt_abs (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
478 static void
479 mepcore1_extract_sfmt_min (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
480 static void
481 mepcore1_extract_sfmt_clip (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
482 static void
483 mepcore1_extract_sfmt_swcp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
484 static void
485 mepcore1_extract_sfmt_lwcp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
486 static void
487 mepcore1_extract_sfmt_smcp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
488 static void
489 mepcore1_extract_sfmt_lmcp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
490 static void
491 mepcore1_extract_sfmt_swcpi (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
492 static void
493 mepcore1_extract_sfmt_lwcpi (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
494 static void
495 mepcore1_extract_sfmt_smcpi (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
496 static void
497 mepcore1_extract_sfmt_lmcpi (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
498 static void
499 mepcore1_extract_sfmt_swcp16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
500 static void
501 mepcore1_extract_sfmt_lwcp16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
502 static void
503 mepcore1_extract_sfmt_smcp16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
504 static void
505 mepcore1_extract_sfmt_lmcp16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
506 static void
507 mepcore1_extract_sfmt_sbcpa (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
508 static void
509 mepcore1_extract_sfmt_shcpa (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
510 static void
511 mepcore1_extract_sfmt_swcpa (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
512 static void
513 mepcore1_extract_sfmt_lwcpa (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
514 static void
515 mepcore1_extract_sfmt_smcpa (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
516 static void
517 mepcore1_extract_sfmt_lmcpa (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
518 static void
519 mepcore1_extract_sfmt_sbcpm0 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
520 static void
521 mepcore1_extract_sfmt_shcpm0 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
522 static void
523 mepcore1_extract_sfmt_swcpm0 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
524 static void
525 mepcore1_extract_sfmt_lwcpm0 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
526 static void
527 mepcore1_extract_sfmt_smcpm0 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
528 static void
529 mepcore1_extract_sfmt_lmcpm0 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
530 static void
531 mepcore1_extract_sfmt_sbcpm1 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
532 static void
533 mepcore1_extract_sfmt_shcpm1 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
534 static void
535 mepcore1_extract_sfmt_swcpm1 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
536 static void
537 mepcore1_extract_sfmt_lwcpm1 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
538 static void
539 mepcore1_extract_sfmt_smcpm1 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
540 static void
541 mepcore1_extract_sfmt_lmcpm1 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
542 static void
543 mepcore1_extract_sfmt_bcpeq (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
544 static void
545 mepcore1_extract_sfmt_synccp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
546 static void
547 mepcore1_extract_sfmt_sim_syscall (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn);
548
549 // Fetch & decode instruction
550 void
551 mepcore1_scache::decode (mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn)
552 {
553   /* Result of decoder.  */
554   MEPCORE1_INSN_TYPE itype;
555
556   {
557     mepcore1_insn_word insn = base_insn;
558
559     {
560       unsigned int val = (((insn >> 24) & (15 << 4)) | ((insn >> 16) & (15 << 0)));
561       switch (val)
562       {
563       case 0 :
564         entire_insn = entire_insn >> 16;
565         itype = MEPCORE1_INSN_MOV; mepcore1_extract_sfmt_mov (this, current_cpu, pc, base_insn, entire_insn); goto done;
566       case 1 :
567         entire_insn = entire_insn >> 16;
568         itype = MEPCORE1_INSN_NEG; mepcore1_extract_sfmt_mov (this, current_cpu, pc, base_insn, entire_insn); goto done;
569       case 2 :
570         entire_insn = entire_insn >> 16;
571         itype = MEPCORE1_INSN_SLT3; mepcore1_extract_sfmt_advck3 (this, current_cpu, pc, base_insn, entire_insn); goto done;
572       case 3 :
573         entire_insn = entire_insn >> 16;
574         itype = MEPCORE1_INSN_SLTU3; mepcore1_extract_sfmt_advck3 (this, current_cpu, pc, base_insn, entire_insn); goto done;
575       case 4 :
576         entire_insn = entire_insn >> 16;
577         itype = MEPCORE1_INSN_SUB; mepcore1_extract_sfmt_sub (this, current_cpu, pc, base_insn, entire_insn); goto done;
578       case 5 :
579         entire_insn = entire_insn >> 16;
580         itype = MEPCORE1_INSN_SBVCK3; mepcore1_extract_sfmt_advck3 (this, current_cpu, pc, base_insn, entire_insn); goto done;
581       case 6 :
582         entire_insn = entire_insn >> 16;
583         itype = MEPCORE1_INSN_RI_0; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
584       case 7 :
585         entire_insn = entire_insn >> 16;
586         itype = MEPCORE1_INSN_ADVCK3; mepcore1_extract_sfmt_advck3 (this, current_cpu, pc, base_insn, entire_insn); goto done;
587       case 8 :
588         entire_insn = entire_insn >> 16;
589         itype = MEPCORE1_INSN_SB; mepcore1_extract_sfmt_sb (this, current_cpu, pc, base_insn, entire_insn); goto done;
590       case 9 :
591         entire_insn = entire_insn >> 16;
592         itype = MEPCORE1_INSN_SH; mepcore1_extract_sfmt_sh (this, current_cpu, pc, base_insn, entire_insn); goto done;
593       case 10 :
594         entire_insn = entire_insn >> 16;
595         itype = MEPCORE1_INSN_SW; mepcore1_extract_sfmt_sw (this, current_cpu, pc, base_insn, entire_insn); goto done;
596       case 11 :
597         entire_insn = entire_insn >> 16;
598         itype = MEPCORE1_INSN_LBU; mepcore1_extract_sfmt_lbu (this, current_cpu, pc, base_insn, entire_insn); goto done;
599       case 12 :
600         entire_insn = entire_insn >> 16;
601         itype = MEPCORE1_INSN_LB; mepcore1_extract_sfmt_lb (this, current_cpu, pc, base_insn, entire_insn); goto done;
602       case 13 :
603         entire_insn = entire_insn >> 16;
604         itype = MEPCORE1_INSN_LH; mepcore1_extract_sfmt_lh (this, current_cpu, pc, base_insn, entire_insn); goto done;
605       case 14 :
606         entire_insn = entire_insn >> 16;
607         itype = MEPCORE1_INSN_LW; mepcore1_extract_sfmt_lw (this, current_cpu, pc, base_insn, entire_insn); goto done;
608       case 15 :
609         entire_insn = entire_insn >> 16;
610         itype = MEPCORE1_INSN_LHU; mepcore1_extract_sfmt_lhu (this, current_cpu, pc, base_insn, entire_insn); goto done;
611       case 16 :
612         entire_insn = entire_insn >> 16;
613         itype = MEPCORE1_INSN_OR; mepcore1_extract_sfmt_sub (this, current_cpu, pc, base_insn, entire_insn); goto done;
614       case 17 :
615         entire_insn = entire_insn >> 16;
616         itype = MEPCORE1_INSN_AND; mepcore1_extract_sfmt_sub (this, current_cpu, pc, base_insn, entire_insn); goto done;
617       case 18 :
618         entire_insn = entire_insn >> 16;
619         itype = MEPCORE1_INSN_XOR; mepcore1_extract_sfmt_sub (this, current_cpu, pc, base_insn, entire_insn); goto done;
620       case 19 :
621         entire_insn = entire_insn >> 16;
622         itype = MEPCORE1_INSN_NOR; mepcore1_extract_sfmt_sub (this, current_cpu, pc, base_insn, entire_insn); goto done;
623       case 20 :
624         entire_insn = entire_insn >> 16;
625         itype = MEPCORE1_INSN_MUL; mepcore1_extract_sfmt_mul (this, current_cpu, pc, base_insn, entire_insn); goto done;
626       case 21 :
627         entire_insn = entire_insn >> 16;
628         itype = MEPCORE1_INSN_MULU; mepcore1_extract_sfmt_mul (this, current_cpu, pc, base_insn, entire_insn); goto done;
629       case 22 :
630         entire_insn = entire_insn >> 16;
631         itype = MEPCORE1_INSN_MULR; mepcore1_extract_sfmt_mulr (this, current_cpu, pc, base_insn, entire_insn); goto done;
632       case 23 :
633         entire_insn = entire_insn >> 16;
634         itype = MEPCORE1_INSN_MULRU; mepcore1_extract_sfmt_mulr (this, current_cpu, pc, base_insn, entire_insn); goto done;
635       case 24 :
636         entire_insn = entire_insn >> 16;
637         itype = MEPCORE1_INSN_DIV; mepcore1_extract_sfmt_div (this, current_cpu, pc, base_insn, entire_insn); goto done;
638       case 25 :
639         entire_insn = entire_insn >> 16;
640         itype = MEPCORE1_INSN_DIVU; mepcore1_extract_sfmt_div (this, current_cpu, pc, base_insn, entire_insn); goto done;
641       case 26 :
642         entire_insn = entire_insn >> 16;
643         itype = MEPCORE1_INSN_RI_1; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
644       case 27 :
645         entire_insn = entire_insn >> 16;
646         itype = MEPCORE1_INSN_RI_2; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
647       case 28 :
648         entire_insn = entire_insn >> 16;
649         if ((entire_insn & 0xfc0f) == 0x100c)
650           { itype = MEPCORE1_INSN_SSARB; mepcore1_extract_sfmt_ssarb (this, current_cpu, pc, base_insn, entire_insn); goto done; }
651         itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
652       case 29 :
653         {
654           unsigned int val = (((insn >> 22) & (1 << 1)) | ((insn >> 21) & (1 << 0)));
655           switch (val)
656           {
657           case 0 :
658             entire_insn = entire_insn >> 16;
659             if ((entire_insn & 0xf0ff) == 0x100d)
660               { itype = MEPCORE1_INSN_EXTB; mepcore1_extract_sfmt_extb (this, current_cpu, pc, base_insn, entire_insn); goto done; }
661             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
662           case 1 :
663             entire_insn = entire_insn >> 16;
664             if ((entire_insn & 0xf0ff) == 0x102d)
665               { itype = MEPCORE1_INSN_EXTH; mepcore1_extract_sfmt_extb (this, current_cpu, pc, base_insn, entire_insn); goto done; }
666             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
667           case 2 :
668             entire_insn = entire_insn >> 16;
669             if ((entire_insn & 0xf0ff) == 0x108d)
670               { itype = MEPCORE1_INSN_EXTUB; mepcore1_extract_sfmt_extb (this, current_cpu, pc, base_insn, entire_insn); goto done; }
671             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
672           case 3 :
673             entire_insn = entire_insn >> 16;
674             if ((entire_insn & 0xf0ff) == 0x10ad)
675               { itype = MEPCORE1_INSN_EXTUH; mepcore1_extract_sfmt_extb (this, current_cpu, pc, base_insn, entire_insn); goto done; }
676             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
677           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
678           }
679         }
680       case 30 :
681         entire_insn = entire_insn >> 16;
682         if ((entire_insn & 0xff0f) == 0x100e)
683           { itype = MEPCORE1_INSN_JMP; mepcore1_extract_sfmt_jmp (this, current_cpu, pc, base_insn, entire_insn); goto done; }
684         itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
685       case 31 :
686         {
687           unsigned int val = (((insn >> 27) & (1 << 0)));
688           switch (val)
689           {
690           case 0 :
691             entire_insn = entire_insn >> 16;
692             if ((entire_insn & 0xff0f) == 0x100f)
693               { itype = MEPCORE1_INSN_JSR; mepcore1_extract_sfmt_jsr (this, current_cpu, pc, base_insn, entire_insn); goto done; }
694             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
695           case 1 :
696             entire_insn = entire_insn >> 16;
697             if ((entire_insn & 0xff0f) == 0x180f)
698               { itype = MEPCORE1_INSN_JSRV; mepcore1_extract_sfmt_jsr (this, current_cpu, pc, base_insn, entire_insn); goto done; }
699             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
700           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
701           }
702         }
703       case 32 :
704         entire_insn = entire_insn >> 16;
705         if ((entire_insn & 0xf80f) == 0x2000)
706           { itype = MEPCORE1_INSN_BSETM; mepcore1_extract_sfmt_bsetm (this, current_cpu, pc, base_insn, entire_insn); goto done; }
707         itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
708       case 33 :
709         entire_insn = entire_insn >> 16;
710         if ((entire_insn & 0xf80f) == 0x2001)
711           { itype = MEPCORE1_INSN_BCLRM; mepcore1_extract_sfmt_bsetm (this, current_cpu, pc, base_insn, entire_insn); goto done; }
712         itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
713       case 34 :
714         entire_insn = entire_insn >> 16;
715         if ((entire_insn & 0xf80f) == 0x2002)
716           { itype = MEPCORE1_INSN_BNOTM; mepcore1_extract_sfmt_bsetm (this, current_cpu, pc, base_insn, entire_insn); goto done; }
717         itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
718       case 35 :
719         entire_insn = entire_insn >> 16;
720         if ((entire_insn & 0xf80f) == 0x2003)
721           { itype = MEPCORE1_INSN_BTSTM; mepcore1_extract_sfmt_btstm (this, current_cpu, pc, base_insn, entire_insn); goto done; }
722         itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
723       case 36 :
724         entire_insn = entire_insn >> 16;
725         itype = MEPCORE1_INSN_TAS; mepcore1_extract_sfmt_tas (this, current_cpu, pc, base_insn, entire_insn); goto done;
726       case 37 :
727         entire_insn = entire_insn >> 16;
728         itype = MEPCORE1_INSN_RI_3; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
729       case 38 :
730         entire_insn = entire_insn >> 16;
731         itype = MEPCORE1_INSN_SL1AD3; mepcore1_extract_sfmt_sl1ad3 (this, current_cpu, pc, base_insn, entire_insn); goto done;
732       case 39 :
733         entire_insn = entire_insn >> 16;
734         itype = MEPCORE1_INSN_SL2AD3; mepcore1_extract_sfmt_sl1ad3 (this, current_cpu, pc, base_insn, entire_insn); goto done;
735       case 40 :
736         entire_insn = entire_insn >> 16;
737         itype = MEPCORE1_INSN_RI_4; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
738       case 41 :
739         entire_insn = entire_insn >> 16;
740         itype = MEPCORE1_INSN_RI_5; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
741       case 42 :
742         entire_insn = entire_insn >> 16;
743         itype = MEPCORE1_INSN_RI_6; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
744       case 43 :
745         entire_insn = entire_insn >> 16;
746         itype = MEPCORE1_INSN_RI_7; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
747       case 44 :
748         entire_insn = entire_insn >> 16;
749         itype = MEPCORE1_INSN_SRL; mepcore1_extract_sfmt_sub (this, current_cpu, pc, base_insn, entire_insn); goto done;
750       case 45 :
751         entire_insn = entire_insn >> 16;
752         itype = MEPCORE1_INSN_SRA; mepcore1_extract_sfmt_sub (this, current_cpu, pc, base_insn, entire_insn); goto done;
753       case 46 :
754         entire_insn = entire_insn >> 16;
755         itype = MEPCORE1_INSN_SLL; mepcore1_extract_sfmt_sub (this, current_cpu, pc, base_insn, entire_insn); goto done;
756       case 47 :
757         entire_insn = entire_insn >> 16;
758         itype = MEPCORE1_INSN_FSFT; mepcore1_extract_sfmt_fsft (this, current_cpu, pc, base_insn, entire_insn); goto done;
759       case 48 :
760         entire_insn = entire_insn >> 16;
761         itype = MEPCORE1_INSN_SWCPI; mepcore1_extract_sfmt_swcpi (this, current_cpu, pc, base_insn, entire_insn); goto done;
762       case 49 :
763         entire_insn = entire_insn >> 16;
764         itype = MEPCORE1_INSN_LWCPI; mepcore1_extract_sfmt_lwcpi (this, current_cpu, pc, base_insn, entire_insn); goto done;
765       case 50 :
766         entire_insn = entire_insn >> 16;
767         itype = MEPCORE1_INSN_SMCPI; mepcore1_extract_sfmt_smcpi (this, current_cpu, pc, base_insn, entire_insn); goto done;
768       case 51 :
769         entire_insn = entire_insn >> 16;
770         itype = MEPCORE1_INSN_LMCPI; mepcore1_extract_sfmt_lmcpi (this, current_cpu, pc, base_insn, entire_insn); goto done;
771       case 52 :
772         entire_insn = entire_insn >> 16;
773         itype = MEPCORE1_INSN_RI_8; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
774       case 53 :
775         entire_insn = entire_insn >> 16;
776         itype = MEPCORE1_INSN_RI_9; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
777       case 54 :
778         entire_insn = entire_insn >> 16;
779         itype = MEPCORE1_INSN_RI_10; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
780       case 55 :
781         entire_insn = entire_insn >> 16;
782         itype = MEPCORE1_INSN_RI_11; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
783       case 56 :
784         entire_insn = entire_insn >> 16;
785         itype = MEPCORE1_INSN_SWCP; mepcore1_extract_sfmt_swcp (this, current_cpu, pc, base_insn, entire_insn); goto done;
786       case 57 :
787         entire_insn = entire_insn >> 16;
788         itype = MEPCORE1_INSN_LWCP; mepcore1_extract_sfmt_lwcp (this, current_cpu, pc, base_insn, entire_insn); goto done;
789       case 58 :
790         entire_insn = entire_insn >> 16;
791         itype = MEPCORE1_INSN_SMCP; mepcore1_extract_sfmt_smcp (this, current_cpu, pc, base_insn, entire_insn); goto done;
792       case 59 :
793         entire_insn = entire_insn >> 16;
794         itype = MEPCORE1_INSN_LMCP; mepcore1_extract_sfmt_lmcp (this, current_cpu, pc, base_insn, entire_insn); goto done;
795       case 60 :
796         entire_insn = entire_insn >> 16;
797         itype = MEPCORE1_INSN_RI_12; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
798       case 61 :
799         entire_insn = entire_insn >> 16;
800         itype = MEPCORE1_INSN_RI_13; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
801       case 62 :
802         entire_insn = entire_insn >> 16;
803         itype = MEPCORE1_INSN_RI_14; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
804       case 63 :
805         entire_insn = entire_insn >> 16;
806         itype = MEPCORE1_INSN_RI_15; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
807       case 64 : /* fall through */
808       case 68 : /* fall through */
809       case 72 : /* fall through */
810       case 76 :
811         {
812           unsigned int val = (((insn >> 23) & (1 << 0)));
813           switch (val)
814           {
815           case 0 :
816             entire_insn = entire_insn >> 16;
817             itype = MEPCORE1_INSN_ADD3I; mepcore1_extract_sfmt_add3i (this, current_cpu, pc, base_insn, entire_insn); goto done;
818           case 1 :
819             entire_insn = entire_insn >> 16;
820             if ((entire_insn & 0xf880) == 0x4880)
821               { itype = MEPCORE1_INSN_LBU_TP; mepcore1_extract_sfmt_lbu_tp (this, current_cpu, pc, base_insn, entire_insn); goto done; }
822             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
823           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
824           }
825         }
826       case 65 : /* fall through */
827       case 69 : /* fall through */
828       case 73 : /* fall through */
829       case 77 :
830         entire_insn = entire_insn >> 16;
831         if ((entire_insn & 0xf880) == 0x4880)
832           { itype = MEPCORE1_INSN_LBU_TP; mepcore1_extract_sfmt_lbu_tp (this, current_cpu, pc, base_insn, entire_insn); goto done; }
833         itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
834       case 66 : /* fall through */
835       case 70 : /* fall through */
836       case 74 : /* fall through */
837       case 78 :
838         {
839           unsigned int val = (((insn >> 26) & (1 << 1)) | ((insn >> 23) & (1 << 0)));
840           switch (val)
841           {
842           case 0 : /* fall through */
843           case 2 :
844             entire_insn = entire_insn >> 16;
845             itype = MEPCORE1_INSN_SW_SP; mepcore1_extract_sfmt_sw_sp (this, current_cpu, pc, base_insn, entire_insn); goto done;
846           case 1 :
847             entire_insn = entire_insn >> 16;
848             itype = MEPCORE1_INSN_SW_TP; mepcore1_extract_sfmt_sw_tp (this, current_cpu, pc, base_insn, entire_insn); goto done;
849           case 3 :
850             entire_insn = entire_insn >> 16;
851             itype = MEPCORE1_INSN_LBU_TP; mepcore1_extract_sfmt_lbu_tp (this, current_cpu, pc, base_insn, entire_insn); goto done;
852           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
853           }
854         }
855       case 67 : /* fall through */
856       case 71 : /* fall through */
857       case 75 : /* fall through */
858       case 79 :
859         {
860           unsigned int val = (((insn >> 26) & (1 << 1)) | ((insn >> 23) & (1 << 0)));
861           switch (val)
862           {
863           case 0 : /* fall through */
864           case 2 :
865             entire_insn = entire_insn >> 16;
866             itype = MEPCORE1_INSN_LW_SP; mepcore1_extract_sfmt_lw_sp (this, current_cpu, pc, base_insn, entire_insn); goto done;
867           case 1 :
868             entire_insn = entire_insn >> 16;
869             itype = MEPCORE1_INSN_LW_TP; mepcore1_extract_sfmt_lw_tp (this, current_cpu, pc, base_insn, entire_insn); goto done;
870           case 3 :
871             entire_insn = entire_insn >> 16;
872             itype = MEPCORE1_INSN_LBU_TP; mepcore1_extract_sfmt_lbu_tp (this, current_cpu, pc, base_insn, entire_insn); goto done;
873           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
874           }
875         }
876       case 80 : /* fall through */
877       case 81 : /* fall through */
878       case 82 : /* fall through */
879       case 83 : /* fall through */
880       case 84 : /* fall through */
881       case 85 : /* fall through */
882       case 86 : /* fall through */
883       case 87 : /* fall through */
884       case 88 : /* fall through */
885       case 89 : /* fall through */
886       case 90 : /* fall through */
887       case 91 : /* fall through */
888       case 92 : /* fall through */
889       case 93 : /* fall through */
890       case 94 : /* fall through */
891       case 95 :
892         entire_insn = entire_insn >> 16;
893         itype = MEPCORE1_INSN_MOVI8; mepcore1_extract_sfmt_movi8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
894       case 96 : /* fall through */
895       case 100 : /* fall through */
896       case 104 : /* fall through */
897       case 108 :
898         entire_insn = entire_insn >> 16;
899         itype = MEPCORE1_INSN_ADD; mepcore1_extract_sfmt_add (this, current_cpu, pc, base_insn, entire_insn); goto done;
900       case 97 : /* fall through */
901       case 105 :
902         entire_insn = entire_insn >> 16;
903         itype = MEPCORE1_INSN_SLT3I; mepcore1_extract_sfmt_slt3i (this, current_cpu, pc, base_insn, entire_insn); goto done;
904       case 98 : /* fall through */
905       case 106 :
906         entire_insn = entire_insn >> 16;
907         itype = MEPCORE1_INSN_SRLI; mepcore1_extract_sfmt_srai (this, current_cpu, pc, base_insn, entire_insn); goto done;
908       case 99 : /* fall through */
909       case 107 :
910         entire_insn = entire_insn >> 16;
911         itype = MEPCORE1_INSN_SRAI; mepcore1_extract_sfmt_srai (this, current_cpu, pc, base_insn, entire_insn); goto done;
912       case 101 : /* fall through */
913       case 109 :
914         entire_insn = entire_insn >> 16;
915         itype = MEPCORE1_INSN_SLTU3I; mepcore1_extract_sfmt_slt3i (this, current_cpu, pc, base_insn, entire_insn); goto done;
916       case 102 : /* fall through */
917       case 110 :
918         entire_insn = entire_insn >> 16;
919         itype = MEPCORE1_INSN_SLLI; mepcore1_extract_sfmt_srai (this, current_cpu, pc, base_insn, entire_insn); goto done;
920       case 103 : /* fall through */
921       case 111 :
922         entire_insn = entire_insn >> 16;
923         itype = MEPCORE1_INSN_SLL3; mepcore1_extract_sfmt_sll3 (this, current_cpu, pc, base_insn, entire_insn); goto done;
924       case 112 :
925         {
926           unsigned int val = (((insn >> 26) & (1 << 1)) | ((insn >> 20) & (1 << 0)));
927           switch (val)
928           {
929           case 0 :
930             entire_insn = entire_insn >> 16;
931             if ((entire_insn & 0xffff) == 0x7000)
932               { itype = MEPCORE1_INSN_DI; mepcore1_extract_sfmt_di (this, current_cpu, pc, base_insn, entire_insn); goto done; }
933             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
934           case 1 :
935             entire_insn = entire_insn >> 16;
936             if ((entire_insn & 0xffff) == 0x7010)
937               { itype = MEPCORE1_INSN_EI; mepcore1_extract_sfmt_di (this, current_cpu, pc, base_insn, entire_insn); goto done; }
938             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
939           case 2 : /* fall through */
940           case 3 :
941             entire_insn = entire_insn >> 16;
942             if ((entire_insn & 0xf8ef) == 0x7800)
943               { itype = MEPCORE1_INSN_SIM_SYSCALL; mepcore1_extract_sfmt_sim_syscall (this, current_cpu, pc, base_insn, entire_insn); goto done; }
944             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
945           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
946           }
947         }
948       case 113 :
949         {
950           unsigned int val = (((insn >> 20) & (3 << 0)));
951           switch (val)
952           {
953           case 1 :
954             entire_insn = entire_insn >> 16;
955             if ((entire_insn & 0xffff) == 0x7011)
956               { itype = MEPCORE1_INSN_SYNCM; mepcore1_extract_sfmt_sleep (this, current_cpu, pc, base_insn, entire_insn); goto done; }
957             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
958           case 2 :
959             entire_insn = entire_insn >> 16;
960             if ((entire_insn & 0xffff) == 0x7021)
961               { itype = MEPCORE1_INSN_SYNCCP; mepcore1_extract_sfmt_synccp (this, current_cpu, pc, base_insn, entire_insn); goto done; }
962             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
963           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
964           }
965         }
966       case 114 :
967         {
968           unsigned int val = (((insn >> 20) & (7 << 0)));
969           switch (val)
970           {
971           case 0 :
972             entire_insn = entire_insn >> 16;
973             if ((entire_insn & 0xffff) == 0x7002)
974               { itype = MEPCORE1_INSN_RET; mepcore1_extract_sfmt_ret (this, current_cpu, pc, base_insn, entire_insn); goto done; }
975             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
976           case 1 :
977             entire_insn = entire_insn >> 16;
978             if ((entire_insn & 0xffff) == 0x7012)
979               { itype = MEPCORE1_INSN_RETI; mepcore1_extract_sfmt_reti (this, current_cpu, pc, base_insn, entire_insn); goto done; }
980             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
981           case 2 :
982             entire_insn = entire_insn >> 16;
983             if ((entire_insn & 0xffff) == 0x7022)
984               { itype = MEPCORE1_INSN_HALT; mepcore1_extract_sfmt_halt (this, current_cpu, pc, base_insn, entire_insn); goto done; }
985             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
986           case 3 :
987             entire_insn = entire_insn >> 16;
988             if ((entire_insn & 0xffff) == 0x7032)
989               { itype = MEPCORE1_INSN_BREAK; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done; }
990             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
991           case 6 :
992             entire_insn = entire_insn >> 16;
993             if ((entire_insn & 0xffff) == 0x7062)
994               { itype = MEPCORE1_INSN_SLEEP; mepcore1_extract_sfmt_sleep (this, current_cpu, pc, base_insn, entire_insn); goto done; }
995             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
996           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
997           }
998         }
999       case 115 :
1000         {
1001           unsigned int val = (((insn >> 21) & (1 << 0)));
1002           switch (val)
1003           {
1004           case 0 :
1005             entire_insn = entire_insn >> 16;
1006             if ((entire_insn & 0xffff) == 0x7013)
1007               { itype = MEPCORE1_INSN_DRET; mepcore1_extract_sfmt_dret (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1008             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1009           case 1 :
1010             entire_insn = entire_insn >> 16;
1011             if ((entire_insn & 0xffff) == 0x7033)
1012               { itype = MEPCORE1_INSN_DBREAK; mepcore1_extract_sfmt_dbreak (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1013             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1014           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1015           }
1016         }
1017       case 116 :
1018         entire_insn = entire_insn >> 16;
1019         itype = MEPCORE1_INSN_CACHE; mepcore1_extract_sfmt_pref (this, current_cpu, pc, base_insn, entire_insn); goto done;
1020       case 117 :
1021         entire_insn = entire_insn >> 16;
1022         itype = MEPCORE1_INSN_PREF; mepcore1_extract_sfmt_pref (this, current_cpu, pc, base_insn, entire_insn); goto done;
1023       case 118 :
1024         entire_insn = entire_insn >> 16;
1025         if ((entire_insn & 0xffcf) == 0x7006)
1026           { itype = MEPCORE1_INSN_SWI; mepcore1_extract_sfmt_swi (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1027         itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1028       case 119 :
1029         entire_insn = entire_insn >> 16;
1030         itype = MEPCORE1_INSN_RI_17; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
1031       case 120 :
1032         {
1033           unsigned int val = (((insn >> 20) & (15 << 0)));
1034           switch (val)
1035           {
1036           case 0 : /* fall through */
1037           case 2 : /* fall through */
1038           case 3 : /* fall through */
1039           case 4 : /* fall through */
1040           case 5 : /* fall through */
1041           case 6 : /* fall through */
1042           case 9 : /* fall through */
1043           case 10 : /* fall through */
1044           case 11 : /* fall through */
1045           case 12 : /* fall through */
1046           case 13 : /* fall through */
1047           case 14 : /* fall through */
1048           case 15 :
1049             entire_insn = entire_insn >> 16;
1050             itype = MEPCORE1_INSN_STC; mepcore1_extract_sfmt_stc (this, current_cpu, pc, base_insn, entire_insn); goto done;
1051           case 1 :
1052             entire_insn = entire_insn >> 16;
1053             itype = MEPCORE1_INSN_STC_LP; mepcore1_extract_sfmt_stc_lp (this, current_cpu, pc, base_insn, entire_insn); goto done;
1054           case 7 :
1055             entire_insn = entire_insn >> 16;
1056             itype = MEPCORE1_INSN_STC_HI; mepcore1_extract_sfmt_stc_hi (this, current_cpu, pc, base_insn, entire_insn); goto done;
1057           case 8 :
1058             entire_insn = entire_insn >> 16;
1059             itype = MEPCORE1_INSN_STC_LO; mepcore1_extract_sfmt_stc_lo (this, current_cpu, pc, base_insn, entire_insn); goto done;
1060           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1061           }
1062         }
1063       case 121 :
1064         entire_insn = entire_insn >> 16;
1065         itype = MEPCORE1_INSN_STC; mepcore1_extract_sfmt_stc (this, current_cpu, pc, base_insn, entire_insn); goto done;
1066       case 122 :
1067         {
1068           unsigned int val = (((insn >> 20) & (15 << 0)));
1069           switch (val)
1070           {
1071           case 0 : /* fall through */
1072           case 2 : /* fall through */
1073           case 3 : /* fall through */
1074           case 4 : /* fall through */
1075           case 5 : /* fall through */
1076           case 6 : /* fall through */
1077           case 9 : /* fall through */
1078           case 10 : /* fall through */
1079           case 11 : /* fall through */
1080           case 12 : /* fall through */
1081           case 13 : /* fall through */
1082           case 14 : /* fall through */
1083           case 15 :
1084             entire_insn = entire_insn >> 16;
1085             itype = MEPCORE1_INSN_LDC; mepcore1_extract_sfmt_ldc (this, current_cpu, pc, base_insn, entire_insn); goto done;
1086           case 1 :
1087             entire_insn = entire_insn >> 16;
1088             itype = MEPCORE1_INSN_LDC_LP; mepcore1_extract_sfmt_ldc_lp (this, current_cpu, pc, base_insn, entire_insn); goto done;
1089           case 7 :
1090             entire_insn = entire_insn >> 16;
1091             itype = MEPCORE1_INSN_LDC_HI; mepcore1_extract_sfmt_ldc_hi (this, current_cpu, pc, base_insn, entire_insn); goto done;
1092           case 8 :
1093             entire_insn = entire_insn >> 16;
1094             itype = MEPCORE1_INSN_LDC_LO; mepcore1_extract_sfmt_ldc_lo (this, current_cpu, pc, base_insn, entire_insn); goto done;
1095           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1096           }
1097         }
1098       case 123 :
1099         entire_insn = entire_insn >> 16;
1100         itype = MEPCORE1_INSN_LDC; mepcore1_extract_sfmt_ldc (this, current_cpu, pc, base_insn, entire_insn); goto done;
1101       case 124 :
1102         entire_insn = entire_insn >> 16;
1103         itype = MEPCORE1_INSN_STCB_R; mepcore1_extract_sfmt_stcb_r (this, current_cpu, pc, base_insn, entire_insn); goto done;
1104       case 125 :
1105         entire_insn = entire_insn >> 16;
1106         itype = MEPCORE1_INSN_LDCB_R; mepcore1_extract_sfmt_ldcb_r (this, current_cpu, pc, base_insn, entire_insn); goto done;
1107       case 126 :
1108         entire_insn = entire_insn >> 16;
1109         itype = MEPCORE1_INSN_RI_20; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
1110       case 127 :
1111         entire_insn = entire_insn >> 16;
1112         itype = MEPCORE1_INSN_RI_21; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
1113       case 128 : /* fall through */
1114       case 130 : /* fall through */
1115       case 132 : /* fall through */
1116       case 134 : /* fall through */
1117       case 136 : /* fall through */
1118       case 138 : /* fall through */
1119       case 140 : /* fall through */
1120       case 142 :
1121         {
1122           unsigned int val = (((insn >> 26) & (1 << 1)) | ((insn >> 23) & (1 << 0)));
1123           switch (val)
1124           {
1125           case 0 :
1126             entire_insn = entire_insn >> 16;
1127             itype = MEPCORE1_INSN_SB_TP; mepcore1_extract_sfmt_sb_tp (this, current_cpu, pc, base_insn, entire_insn); goto done;
1128           case 1 :
1129             entire_insn = entire_insn >> 16;
1130             itype = MEPCORE1_INSN_SH_TP; mepcore1_extract_sfmt_sh_tp (this, current_cpu, pc, base_insn, entire_insn); goto done;
1131           case 2 :
1132             entire_insn = entire_insn >> 16;
1133             itype = MEPCORE1_INSN_LB_TP; mepcore1_extract_sfmt_lb_tp (this, current_cpu, pc, base_insn, entire_insn); goto done;
1134           case 3 :
1135             entire_insn = entire_insn >> 16;
1136             itype = MEPCORE1_INSN_LH_TP; mepcore1_extract_sfmt_lh_tp (this, current_cpu, pc, base_insn, entire_insn); goto done;
1137           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1138           }
1139         }
1140       case 129 : /* fall through */
1141       case 131 : /* fall through */
1142       case 133 : /* fall through */
1143       case 135 : /* fall through */
1144       case 137 : /* fall through */
1145       case 139 : /* fall through */
1146       case 141 : /* fall through */
1147       case 143 :
1148         {
1149           unsigned int val = (((insn >> 26) & (1 << 1)) | ((insn >> 23) & (1 << 0)));
1150           switch (val)
1151           {
1152           case 0 :
1153             entire_insn = entire_insn >> 16;
1154             itype = MEPCORE1_INSN_SB_TP; mepcore1_extract_sfmt_sb_tp (this, current_cpu, pc, base_insn, entire_insn); goto done;
1155           case 2 :
1156             entire_insn = entire_insn >> 16;
1157             itype = MEPCORE1_INSN_LB_TP; mepcore1_extract_sfmt_lb_tp (this, current_cpu, pc, base_insn, entire_insn); goto done;
1158           case 3 :
1159             entire_insn = entire_insn >> 16;
1160             itype = MEPCORE1_INSN_LHU_TP; mepcore1_extract_sfmt_lhu_tp (this, current_cpu, pc, base_insn, entire_insn); goto done;
1161           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1162           }
1163         }
1164       case 144 : /* fall through */
1165       case 145 : /* fall through */
1166       case 146 : /* fall through */
1167       case 147 : /* fall through */
1168       case 148 : /* fall through */
1169       case 149 : /* fall through */
1170       case 150 : /* fall through */
1171       case 151 : /* fall through */
1172       case 152 : /* fall through */
1173       case 153 : /* fall through */
1174       case 154 : /* fall through */
1175       case 155 : /* fall through */
1176       case 156 : /* fall through */
1177       case 157 : /* fall through */
1178       case 158 : /* fall through */
1179       case 159 :
1180         entire_insn = entire_insn >> 16;
1181         itype = MEPCORE1_INSN_ADD3; mepcore1_extract_sfmt_add3 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1182       case 160 : /* fall through */
1183       case 162 : /* fall through */
1184       case 164 : /* fall through */
1185       case 166 : /* fall through */
1186       case 168 : /* fall through */
1187       case 170 : /* fall through */
1188       case 172 : /* fall through */
1189       case 174 :
1190         entire_insn = entire_insn >> 16;
1191         itype = MEPCORE1_INSN_BEQZ; mepcore1_extract_sfmt_beqz (this, current_cpu, pc, base_insn, entire_insn); goto done;
1192       case 161 : /* fall through */
1193       case 163 : /* fall through */
1194       case 165 : /* fall through */
1195       case 167 : /* fall through */
1196       case 169 : /* fall through */
1197       case 171 : /* fall through */
1198       case 173 : /* fall through */
1199       case 175 :
1200         entire_insn = entire_insn >> 16;
1201         itype = MEPCORE1_INSN_BNEZ; mepcore1_extract_sfmt_beqz (this, current_cpu, pc, base_insn, entire_insn); goto done;
1202       case 176 : /* fall through */
1203       case 178 : /* fall through */
1204       case 180 : /* fall through */
1205       case 182 : /* fall through */
1206       case 184 : /* fall through */
1207       case 186 : /* fall through */
1208       case 188 : /* fall through */
1209       case 190 :
1210         entire_insn = entire_insn >> 16;
1211         itype = MEPCORE1_INSN_BRA; mepcore1_extract_sfmt_bra (this, current_cpu, pc, base_insn, entire_insn); goto done;
1212       case 177 : /* fall through */
1213       case 179 : /* fall through */
1214       case 181 : /* fall through */
1215       case 183 : /* fall through */
1216       case 185 : /* fall through */
1217       case 187 : /* fall through */
1218       case 189 : /* fall through */
1219       case 191 :
1220         entire_insn = entire_insn >> 16;
1221         itype = MEPCORE1_INSN_BSR12; mepcore1_extract_sfmt_bsr12 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1222       case 192 : itype = MEPCORE1_INSN_ADD3X; mepcore1_extract_sfmt_add3x (this, current_cpu, pc, base_insn, entire_insn); goto done;
1223       case 193 :
1224         {
1225           unsigned int val = (((insn >> 20) & (3 << 0)));
1226           switch (val)
1227           {
1228           case 0 :
1229             if ((entire_insn & 0xf0ff0000) == 0xc0010000)
1230               { itype = MEPCORE1_INSN_MOVI16; mepcore1_extract_sfmt_movi16 (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1231             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1232           case 1 :
1233             if ((entire_insn & 0xf0ff0000) == 0xc0110000)
1234               { itype = MEPCORE1_INSN_MOVU16; mepcore1_extract_sfmt_movu16 (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1235             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1236           case 2 :
1237             if ((entire_insn & 0xf0ff0000) == 0xc0210000)
1238               { itype = MEPCORE1_INSN_MOVH; mepcore1_extract_sfmt_movu16 (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1239             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1240           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1241           }
1242         }
1243       case 194 : itype = MEPCORE1_INSN_SLT3X; mepcore1_extract_sfmt_slt3x (this, current_cpu, pc, base_insn, entire_insn); goto done;
1244       case 195 : itype = MEPCORE1_INSN_SLTU3X; mepcore1_extract_sfmt_sltu3x (this, current_cpu, pc, base_insn, entire_insn); goto done;
1245       case 196 : itype = MEPCORE1_INSN_OR3; mepcore1_extract_sfmt_or3 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1246       case 197 : itype = MEPCORE1_INSN_AND3; mepcore1_extract_sfmt_or3 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1247       case 198 : itype = MEPCORE1_INSN_XOR3; mepcore1_extract_sfmt_or3 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1248       case 199 :
1249         entire_insn = entire_insn >> 16;
1250         itype = MEPCORE1_INSN_RI_22; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
1251       case 200 : itype = MEPCORE1_INSN_SB16; mepcore1_extract_sfmt_sb16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1252       case 201 : itype = MEPCORE1_INSN_SH16; mepcore1_extract_sfmt_sh16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1253       case 202 : itype = MEPCORE1_INSN_SW16; mepcore1_extract_sfmt_sw16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1254       case 203 : itype = MEPCORE1_INSN_LBU16; mepcore1_extract_sfmt_lbu16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1255       case 204 : itype = MEPCORE1_INSN_LB16; mepcore1_extract_sfmt_lb16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1256       case 205 : itype = MEPCORE1_INSN_LH16; mepcore1_extract_sfmt_lh16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1257       case 206 : itype = MEPCORE1_INSN_LW16; mepcore1_extract_sfmt_lw16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1258       case 207 : itype = MEPCORE1_INSN_LHU16; mepcore1_extract_sfmt_lhu16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1259       case 208 : /* fall through */
1260       case 209 : /* fall through */
1261       case 210 : /* fall through */
1262       case 211 : /* fall through */
1263       case 218 : /* fall through */
1264       case 220 : /* fall through */
1265       case 221 : /* fall through */
1266       case 222 : /* fall through */
1267       case 223 :
1268         if ((entire_insn & 0xf8000000) == 0xd0000000)
1269           { itype = MEPCORE1_INSN_MOVU24; mepcore1_extract_sfmt_movu24 (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1270         itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1271       case 212 :
1272         {
1273           unsigned int val = (((insn >> 27) & (1 << 0)));
1274           switch (val)
1275           {
1276           case 0 : itype = MEPCORE1_INSN_MOVU24; mepcore1_extract_sfmt_movu24 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1277           case 1 :
1278             if ((entire_insn & 0xff0f0000) == 0xd8040000)
1279               { itype = MEPCORE1_INSN_BCPEQ; mepcore1_extract_sfmt_bcpeq (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1280             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1281           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1282           }
1283         }
1284       case 213 :
1285         {
1286           unsigned int val = (((insn >> 27) & (1 << 0)));
1287           switch (val)
1288           {
1289           case 0 : itype = MEPCORE1_INSN_MOVU24; mepcore1_extract_sfmt_movu24 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1290           case 1 :
1291             if ((entire_insn & 0xff0f0000) == 0xd8050000)
1292               { itype = MEPCORE1_INSN_BCPNE; mepcore1_extract_sfmt_bcpeq (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1293             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1294           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1295           }
1296         }
1297       case 214 :
1298         {
1299           unsigned int val = (((insn >> 27) & (1 << 0)));
1300           switch (val)
1301           {
1302           case 0 : itype = MEPCORE1_INSN_MOVU24; mepcore1_extract_sfmt_movu24 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1303           case 1 :
1304             if ((entire_insn & 0xff0f0000) == 0xd8060000)
1305               { itype = MEPCORE1_INSN_BCPAT; mepcore1_extract_sfmt_bcpeq (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1306             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1307           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1308           }
1309         }
1310       case 215 :
1311         {
1312           unsigned int val = (((insn >> 27) & (1 << 0)));
1313           switch (val)
1314           {
1315           case 0 : itype = MEPCORE1_INSN_MOVU24; mepcore1_extract_sfmt_movu24 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1316           case 1 :
1317             if ((entire_insn & 0xff0f0000) == 0xd8070000)
1318               { itype = MEPCORE1_INSN_BCPAF; mepcore1_extract_sfmt_bcpeq (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1319             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1320           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1321           }
1322         }
1323       case 216 :
1324         {
1325           unsigned int val = (((insn >> 27) & (1 << 0)));
1326           switch (val)
1327           {
1328           case 0 : itype = MEPCORE1_INSN_MOVU24; mepcore1_extract_sfmt_movu24 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1329           case 1 : itype = MEPCORE1_INSN_JMP24; mepcore1_extract_sfmt_jmp24 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1330           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1331           }
1332         }
1333       case 217 :
1334         {
1335           unsigned int val = (((insn >> 27) & (1 << 0)));
1336           switch (val)
1337           {
1338           case 0 : itype = MEPCORE1_INSN_MOVU24; mepcore1_extract_sfmt_movu24 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1339           case 1 : itype = MEPCORE1_INSN_BSR24; mepcore1_extract_sfmt_bsr24 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1340           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1341           }
1342         }
1343       case 219 :
1344         {
1345           unsigned int val = (((insn >> 27) & (1 << 0)));
1346           switch (val)
1347           {
1348           case 0 : itype = MEPCORE1_INSN_MOVU24; mepcore1_extract_sfmt_movu24 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1349           case 1 : itype = MEPCORE1_INSN_BSRV; mepcore1_extract_sfmt_bsr24 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1350           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1351           }
1352         }
1353       case 224 : itype = MEPCORE1_INSN_BEQI; mepcore1_extract_sfmt_beqi (this, current_cpu, pc, base_insn, entire_insn); goto done;
1354       case 225 : itype = MEPCORE1_INSN_BEQ; mepcore1_extract_sfmt_beq (this, current_cpu, pc, base_insn, entire_insn); goto done;
1355       case 226 : /* fall through */
1356       case 230 : /* fall through */
1357       case 234 : /* fall through */
1358       case 238 : itype = MEPCORE1_INSN_SW24; mepcore1_extract_sfmt_sw24 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1359       case 227 : /* fall through */
1360       case 231 : /* fall through */
1361       case 235 : /* fall through */
1362       case 239 : itype = MEPCORE1_INSN_LW24; mepcore1_extract_sfmt_lw24 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1363       case 228 : itype = MEPCORE1_INSN_BNEI; mepcore1_extract_sfmt_beqi (this, current_cpu, pc, base_insn, entire_insn); goto done;
1364       case 229 : itype = MEPCORE1_INSN_BNE; mepcore1_extract_sfmt_beq (this, current_cpu, pc, base_insn, entire_insn); goto done;
1365       case 232 : itype = MEPCORE1_INSN_BGEI; mepcore1_extract_sfmt_beqi (this, current_cpu, pc, base_insn, entire_insn); goto done;
1366       case 233 :
1367         {
1368           unsigned int val = (((insn >> 20) & (1 << 0)));
1369           switch (val)
1370           {
1371           case 0 :
1372             if ((entire_insn & 0xf0ff0000) == 0xe0090000)
1373               { itype = MEPCORE1_INSN_REPEAT; mepcore1_extract_sfmt_repeat (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1374             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1375           case 1 :
1376             if ((entire_insn & 0xffff0000) == 0xe0190000)
1377               { itype = MEPCORE1_INSN_EREPEAT; mepcore1_extract_sfmt_erepeat (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1378             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1379           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1380           }
1381         }
1382       case 236 : itype = MEPCORE1_INSN_BLTI; mepcore1_extract_sfmt_beqi (this, current_cpu, pc, base_insn, entire_insn); goto done;
1383       case 237 :
1384         entire_insn = entire_insn >> 16;
1385         itype = MEPCORE1_INSN_RI_23; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
1386       case 240 : itype = MEPCORE1_INSN_DSP; mepcore1_extract_sfmt_uci (this, current_cpu, pc, base_insn, entire_insn); goto done;
1387       case 241 :
1388         {
1389           unsigned int val = (((insn >> 8) & (3 << 4)) | ((insn >> 0) & (15 << 0)));
1390           switch (val)
1391           {
1392           case 0 :
1393             if ((entire_insn & 0xf00fffff) == 0xf0010000)
1394               { itype = MEPCORE1_INSN_LDZ; mepcore1_extract_sfmt_ldz (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1395             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1396           case 2 :
1397             if ((entire_insn & 0xf00fffff) == 0xf0010002)
1398               { itype = MEPCORE1_INSN_AVE; mepcore1_extract_sfmt_abs (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1399             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1400           case 3 :
1401             if ((entire_insn & 0xf00fffff) == 0xf0010003)
1402               { itype = MEPCORE1_INSN_ABS; mepcore1_extract_sfmt_abs (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1403             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1404           case 4 :
1405             if ((entire_insn & 0xf00fffff) == 0xf0010004)
1406               { itype = MEPCORE1_INSN_MIN; mepcore1_extract_sfmt_min (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1407             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1408           case 5 :
1409             if ((entire_insn & 0xf00fffff) == 0xf0010005)
1410               { itype = MEPCORE1_INSN_MAX; mepcore1_extract_sfmt_min (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1411             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1412           case 6 :
1413             if ((entire_insn & 0xf00fffff) == 0xf0010006)
1414               { itype = MEPCORE1_INSN_MINU; mepcore1_extract_sfmt_min (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1415             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1416           case 7 :
1417             if ((entire_insn & 0xf00fffff) == 0xf0010007)
1418               { itype = MEPCORE1_INSN_MAXU; mepcore1_extract_sfmt_min (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1419             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1420           case 8 :
1421             if ((entire_insn & 0xf00fffff) == 0xf0010008)
1422               { itype = MEPCORE1_INSN_SADD; mepcore1_extract_sfmt_min (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1423             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1424           case 9 :
1425             if ((entire_insn & 0xf00fffff) == 0xf0010009)
1426               { itype = MEPCORE1_INSN_SADDU; mepcore1_extract_sfmt_min (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1427             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1428           case 10 :
1429             if ((entire_insn & 0xf00fffff) == 0xf001000a)
1430               { itype = MEPCORE1_INSN_SSUB; mepcore1_extract_sfmt_min (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1431             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1432           case 11 :
1433             if ((entire_insn & 0xf00fffff) == 0xf001000b)
1434               { itype = MEPCORE1_INSN_SSUBU; mepcore1_extract_sfmt_min (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1435             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1436           case 16 : /* fall through */
1437           case 24 :
1438             if ((entire_insn & 0xf0ffff07) == 0xf0011000)
1439               { itype = MEPCORE1_INSN_CLIP; mepcore1_extract_sfmt_clip (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1440             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1441           case 17 : /* fall through */
1442           case 25 :
1443             if ((entire_insn & 0xf0ffff07) == 0xf0011001)
1444               { itype = MEPCORE1_INSN_CLIPU; mepcore1_extract_sfmt_clip (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1445             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1446           case 32 :
1447             if ((entire_insn & 0xf00ff0ff) == 0xf0012000)
1448               { itype = MEPCORE1_INSN_CASB3; mepcore1_extract_sfmt_casb3 (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1449             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1450           case 33 :
1451             if ((entire_insn & 0xf00ff0ff) == 0xf0012001)
1452               { itype = MEPCORE1_INSN_CASH3; mepcore1_extract_sfmt_casb3 (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1453             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1454           case 34 :
1455             if ((entire_insn & 0xf00ff0ff) == 0xf0012002)
1456               { itype = MEPCORE1_INSN_CASW3; mepcore1_extract_sfmt_casb3 (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1457             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1458           case 52 :
1459             if ((entire_insn & 0xf00fffff) == 0xf0013004)
1460               { itype = MEPCORE1_INSN_MADD; mepcore1_extract_sfmt_madd (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1461             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1462           case 53 :
1463             if ((entire_insn & 0xf00fffff) == 0xf0013005)
1464               { itype = MEPCORE1_INSN_MADDU; mepcore1_extract_sfmt_madd (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1465             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1466           case 54 :
1467             if ((entire_insn & 0xf00fffff) == 0xf0013006)
1468               { itype = MEPCORE1_INSN_MADDR; mepcore1_extract_sfmt_maddr (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1469             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1470           case 55 :
1471             if ((entire_insn & 0xf00fffff) == 0xf0013007)
1472               { itype = MEPCORE1_INSN_MADDRU; mepcore1_extract_sfmt_maddr (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1473             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1474           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1475           }
1476         }
1477       case 242 : itype = MEPCORE1_INSN_UCI; mepcore1_extract_sfmt_uci (this, current_cpu, pc, base_insn, entire_insn); goto done;
1478       case 243 : itype = MEPCORE1_INSN_PREFD; mepcore1_extract_sfmt_prefd (this, current_cpu, pc, base_insn, entire_insn); goto done;
1479       case 244 :
1480         {
1481           unsigned int val = (((insn >> 20) & (1 << 0)));
1482           switch (val)
1483           {
1484           case 0 :
1485             if ((entire_insn & 0xf0ff0000) == 0xf0040000)
1486               { itype = MEPCORE1_INSN_STCB; mepcore1_extract_sfmt_stcb (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1487             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1488           case 1 :
1489             if ((entire_insn & 0xf0ff0000) == 0xf0140000)
1490               { itype = MEPCORE1_INSN_LDCB; mepcore1_extract_sfmt_movu16 (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1491             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1492           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1493           }
1494         }
1495       case 245 :
1496         {
1497           unsigned int val = (((insn >> 10) & (63 << 0)));
1498           switch (val)
1499           {
1500           case 0 : itype = MEPCORE1_INSN_SBCPA; mepcore1_extract_sfmt_sbcpa (this, current_cpu, pc, base_insn, entire_insn); goto done;
1501           case 2 : itype = MEPCORE1_INSN_SBCPM0; mepcore1_extract_sfmt_sbcpm0 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1502           case 3 : itype = MEPCORE1_INSN_SBCPM1; mepcore1_extract_sfmt_sbcpm1 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1503           case 4 : itype = MEPCORE1_INSN_SHCPA; mepcore1_extract_sfmt_shcpa (this, current_cpu, pc, base_insn, entire_insn); goto done;
1504           case 6 : itype = MEPCORE1_INSN_SHCPM0; mepcore1_extract_sfmt_shcpm0 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1505           case 7 : itype = MEPCORE1_INSN_SHCPM1; mepcore1_extract_sfmt_shcpm1 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1506           case 8 : itype = MEPCORE1_INSN_SWCPA; mepcore1_extract_sfmt_swcpa (this, current_cpu, pc, base_insn, entire_insn); goto done;
1507           case 10 : itype = MEPCORE1_INSN_SWCPM0; mepcore1_extract_sfmt_swcpm0 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1508           case 11 : itype = MEPCORE1_INSN_SWCPM1; mepcore1_extract_sfmt_swcpm1 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1509           case 12 : itype = MEPCORE1_INSN_SMCPA; mepcore1_extract_sfmt_smcpa (this, current_cpu, pc, base_insn, entire_insn); goto done;
1510           case 14 : itype = MEPCORE1_INSN_SMCPM0; mepcore1_extract_sfmt_smcpm0 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1511           case 15 : itype = MEPCORE1_INSN_SMCPM1; mepcore1_extract_sfmt_smcpm1 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1512           case 16 : itype = MEPCORE1_INSN_LBCPA; mepcore1_extract_sfmt_lbucpa (this, current_cpu, pc, base_insn, entire_insn); goto done;
1513           case 18 : itype = MEPCORE1_INSN_LBCPM0; mepcore1_extract_sfmt_lbucpm0 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1514           case 19 : itype = MEPCORE1_INSN_LBCPM1; mepcore1_extract_sfmt_lbucpm1 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1515           case 20 : itype = MEPCORE1_INSN_LHCPA; mepcore1_extract_sfmt_lhucpa (this, current_cpu, pc, base_insn, entire_insn); goto done;
1516           case 22 : itype = MEPCORE1_INSN_LHCPM0; mepcore1_extract_sfmt_lhucpm0 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1517           case 23 : itype = MEPCORE1_INSN_LHCPM1; mepcore1_extract_sfmt_lhucpm1 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1518           case 24 : itype = MEPCORE1_INSN_LWCPA; mepcore1_extract_sfmt_lwcpa (this, current_cpu, pc, base_insn, entire_insn); goto done;
1519           case 26 : itype = MEPCORE1_INSN_LWCPM0; mepcore1_extract_sfmt_lwcpm0 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1520           case 27 : itype = MEPCORE1_INSN_LWCPM1; mepcore1_extract_sfmt_lwcpm1 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1521           case 28 : itype = MEPCORE1_INSN_LMCPA; mepcore1_extract_sfmt_lmcpa (this, current_cpu, pc, base_insn, entire_insn); goto done;
1522           case 30 : itype = MEPCORE1_INSN_LMCPM0; mepcore1_extract_sfmt_lmcpm0 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1523           case 31 : itype = MEPCORE1_INSN_LMCPM1; mepcore1_extract_sfmt_lmcpm1 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1524           case 48 : itype = MEPCORE1_INSN_LBUCPA; mepcore1_extract_sfmt_lbucpa (this, current_cpu, pc, base_insn, entire_insn); goto done;
1525           case 50 : itype = MEPCORE1_INSN_LBUCPM0; mepcore1_extract_sfmt_lbucpm0 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1526           case 51 : itype = MEPCORE1_INSN_LBUCPM1; mepcore1_extract_sfmt_lbucpm1 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1527           case 52 : itype = MEPCORE1_INSN_LHUCPA; mepcore1_extract_sfmt_lhucpa (this, current_cpu, pc, base_insn, entire_insn); goto done;
1528           case 54 : itype = MEPCORE1_INSN_LHUCPM0; mepcore1_extract_sfmt_lhucpm0 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1529           case 55 : itype = MEPCORE1_INSN_LHUCPM1; mepcore1_extract_sfmt_lhucpm1 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1530           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1531           }
1532         }
1533       case 246 :
1534         {
1535           unsigned int val = (((insn >> 13) & (3 << 1)) | ((insn >> 12) & (1 << 0)));
1536           switch (val)
1537           {
1538           case 0 :
1539             if ((entire_insn & 0xf00ff000) == 0xf0060000)
1540               { itype = MEPCORE1_INSN_SBCP; mepcore1_extract_sfmt_sbcp (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1541             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1542           case 1 :
1543             if ((entire_insn & 0xf00ff000) == 0xf0061000)
1544               { itype = MEPCORE1_INSN_SHCP; mepcore1_extract_sfmt_shcp (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1545             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1546           case 2 :
1547             if ((entire_insn & 0xf00ff000) == 0xf0064000)
1548               { itype = MEPCORE1_INSN_LBCP; mepcore1_extract_sfmt_lbcp (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1549             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1550           case 3 :
1551             if ((entire_insn & 0xf00ff000) == 0xf0065000)
1552               { itype = MEPCORE1_INSN_LHCP; mepcore1_extract_sfmt_lhcp (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1553             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1554           case 6 :
1555             if ((entire_insn & 0xf00ff000) == 0xf006c000)
1556               { itype = MEPCORE1_INSN_LBUCP; mepcore1_extract_sfmt_lbcp (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1557             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1558           case 7 :
1559             if ((entire_insn & 0xf00ff000) == 0xf006d000)
1560               { itype = MEPCORE1_INSN_LHUCP; mepcore1_extract_sfmt_lhcp (this, current_cpu, pc, base_insn, entire_insn); goto done; }
1561             itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1562           default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1563           }
1564         }
1565       case 248 :
1566         entire_insn = entire_insn >> 16;
1567         itype = MEPCORE1_INSN_RI_26; mepcore1_extract_sfmt_break (this, current_cpu, pc, base_insn, entire_insn); goto done;
1568       case 252 : itype = MEPCORE1_INSN_SWCP16; mepcore1_extract_sfmt_swcp16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1569       case 253 : itype = MEPCORE1_INSN_LWCP16; mepcore1_extract_sfmt_lwcp16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1570       case 254 : itype = MEPCORE1_INSN_SMCP16; mepcore1_extract_sfmt_smcp16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1571       case 255 : itype = MEPCORE1_INSN_LMCP16; mepcore1_extract_sfmt_lmcp16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
1572       default : itype = MEPCORE1_INSN_X_INVALID; mepcore1_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
1573       }
1574     }
1575
1576   }
1577
1578   /* The instruction has been decoded and fields extracted.  */
1579   done:
1580
1581   this->addr = pc;
1582   // FIXME: To be redone (to handle ISA variants).
1583   this->idesc = & mepcore1_idesc::idesc_table[itype];
1584   // ??? record semantic handler?
1585   assert(this->idesc->sem_index == itype);
1586 }
1587
1588 void
1589 mepcore1_extract_sfmt_empty (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
1590     mepcore1_insn_word insn = entire_insn;
1591 #define FLD(f) abuf->fields.fmt_empty.f
1592
1593
1594   /* Record the fields for the semantic handler.  */
1595   if (UNLIKELY(current_cpu->trace_extract_p))
1596     {
1597       current_cpu->trace_stream 
1598         << "0x" << hex << pc << dec << " (sfmt_empty)\t"
1599         << endl;
1600     }
1601
1602 #undef FLD
1603 }
1604
1605 void
1606 mepcore1_extract_sfmt_stcb_r (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
1607     mepcore1_insn_word insn = entire_insn;
1608 #define FLD(f) abuf->fields.sfmt_stcb_r.f
1609     UINT f_rn;
1610     UINT f_rm;
1611
1612     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1613     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1614
1615   /* Record the fields for the semantic handler.  */
1616   FLD (f_rm) = f_rm;
1617   FLD (f_rn) = f_rn;
1618   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
1619   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
1620   if (UNLIKELY(current_cpu->trace_extract_p))
1621     {
1622       current_cpu->trace_stream 
1623         << "0x" << hex << pc << dec << " (sfmt_stcb_r)\t"
1624         << " f_rm:0x" << hex << f_rm << dec
1625         << " f_rn:0x" << hex << f_rn << dec
1626         << endl;
1627     }
1628
1629   /* Record the fields for profiling.  */
1630   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
1631     {
1632       FLD (in_rma) = f_rm;
1633       FLD (in_rn) = f_rn;
1634     }
1635 #undef FLD
1636 }
1637
1638 void
1639 mepcore1_extract_sfmt_ldcb_r (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
1640     mepcore1_insn_word insn = entire_insn;
1641 #define FLD(f) abuf->fields.sfmt_ldcb_r.f
1642     UINT f_rn;
1643     UINT f_rm;
1644
1645     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1646     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1647
1648   /* Record the fields for the semantic handler.  */
1649   FLD (f_rm) = f_rm;
1650   FLD (f_rn) = f_rn;
1651   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
1652   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
1653   if (UNLIKELY(current_cpu->trace_extract_p))
1654     {
1655       current_cpu->trace_stream 
1656         << "0x" << hex << pc << dec << " (sfmt_ldcb_r)\t"
1657         << " f_rm:0x" << hex << f_rm << dec
1658         << " f_rn:0x" << hex << f_rn << dec
1659         << endl;
1660     }
1661
1662   /* Record the fields for profiling.  */
1663   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
1664     {
1665       FLD (in_rma) = f_rm;
1666       FLD (out_rn) = f_rn;
1667     }
1668 #undef FLD
1669 }
1670
1671 void
1672 mepcore1_extract_sfmt_pref (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
1673     mepcore1_insn_word insn = entire_insn;
1674 #define FLD(f) abuf->fields.sfmt_ldcb_r.f
1675     UINT f_rn;
1676     UINT f_rm;
1677
1678     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1679     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1680
1681   /* Record the fields for the semantic handler.  */
1682   FLD (f_rn) = f_rn;
1683   FLD (f_rm) = f_rm;
1684   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
1685   if (UNLIKELY(current_cpu->trace_extract_p))
1686     {
1687       current_cpu->trace_stream 
1688         << "0x" << hex << pc << dec << " (sfmt_pref)\t"
1689         << " f_rn:0x" << hex << f_rn << dec
1690         << " f_rm:0x" << hex << f_rm << dec
1691         << endl;
1692     }
1693
1694   /* Record the fields for profiling.  */
1695   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
1696     {
1697       FLD (in_rma) = f_rm;
1698     }
1699 #undef FLD
1700 }
1701
1702 void
1703 mepcore1_extract_sfmt_prefd (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
1704     mepcore1_insn_word insn = entire_insn;
1705 #define FLD(f) abuf->fields.sfmt_lhu16.f
1706     UINT f_rn;
1707     UINT f_rm;
1708     INT f_16s16;
1709
1710     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1711     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
1712     f_16s16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
1713
1714   /* Record the fields for the semantic handler.  */
1715   FLD (f_rn) = f_rn;
1716   FLD (f_rm) = f_rm;
1717   FLD (f_16s16) = f_16s16;
1718   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
1719   if (UNLIKELY(current_cpu->trace_extract_p))
1720     {
1721       current_cpu->trace_stream 
1722         << "0x" << hex << pc << dec << " (sfmt_prefd)\t"
1723         << " f_rn:0x" << hex << f_rn << dec
1724         << " f_rm:0x" << hex << f_rm << dec
1725         << " f_16s16:0x" << hex << f_16s16 << dec
1726         << endl;
1727     }
1728
1729   /* Record the fields for profiling.  */
1730   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
1731     {
1732       FLD (in_rma) = f_rm;
1733     }
1734 #undef FLD
1735 }
1736
1737 void
1738 mepcore1_extract_sfmt_casb3 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
1739     mepcore1_insn_word insn = entire_insn;
1740 #define FLD(f) abuf->fields.sfmt_casb3.f
1741     UINT f_rn;
1742     UINT f_rm;
1743     UINT f_rl5;
1744
1745     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1746     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
1747     f_rl5 = EXTRACT_MSB0_UINT (insn, 32, 20, 4);
1748
1749   /* Record the fields for the semantic handler.  */
1750   FLD (f_rl5) = f_rl5;
1751   FLD (f_rm) = f_rm;
1752   FLD (f_rn) = f_rn;
1753   FLD (i_rl5) = & current_cpu->hardware.h_gpr[f_rl5];
1754   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
1755   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
1756   if (UNLIKELY(current_cpu->trace_extract_p))
1757     {
1758       current_cpu->trace_stream 
1759         << "0x" << hex << pc << dec << " (sfmt_casb3)\t"
1760         << " f_rl5:0x" << hex << f_rl5 << dec
1761         << " f_rm:0x" << hex << f_rm << dec
1762         << " f_rn:0x" << hex << f_rn << dec
1763         << endl;
1764     }
1765
1766   /* Record the fields for profiling.  */
1767   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
1768     {
1769       FLD (in_rl5) = f_rl5;
1770       FLD (in_rm) = f_rm;
1771       FLD (in_rn) = f_rn;
1772       FLD (out_rl5) = f_rl5;
1773     }
1774 #undef FLD
1775 }
1776
1777 void
1778 mepcore1_extract_sfmt_sbcp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
1779     mepcore1_insn_word insn = entire_insn;
1780 #define FLD(f) abuf->fields.sfmt_sbcp.f
1781     UINT f_crn;
1782     UINT f_rm;
1783     INT f_12s20;
1784
1785     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1786     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
1787     f_12s20 = EXTRACT_MSB0_SINT (insn, 32, 20, 12);
1788
1789   /* Record the fields for the semantic handler.  */
1790   FLD (f_12s20) = f_12s20;
1791   FLD (f_crn) = f_crn;
1792   FLD (f_rm) = f_rm;
1793   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
1794   if (UNLIKELY(current_cpu->trace_extract_p))
1795     {
1796       current_cpu->trace_stream 
1797         << "0x" << hex << pc << dec << " (sfmt_sbcp)\t"
1798         << " f_12s20:0x" << hex << f_12s20 << dec
1799         << " f_crn:0x" << hex << f_crn << dec
1800         << " f_rm:0x" << hex << f_rm << dec
1801         << endl;
1802     }
1803
1804   /* Record the fields for profiling.  */
1805   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
1806     {
1807       FLD (in_rma) = f_rm;
1808     }
1809 #undef FLD
1810 }
1811
1812 void
1813 mepcore1_extract_sfmt_lbcp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
1814     mepcore1_insn_word insn = entire_insn;
1815 #define FLD(f) abuf->fields.sfmt_sbcp.f
1816     UINT f_crn;
1817     UINT f_rm;
1818     INT f_12s20;
1819
1820     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1821     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
1822     f_12s20 = EXTRACT_MSB0_SINT (insn, 32, 20, 12);
1823
1824   /* Record the fields for the semantic handler.  */
1825   FLD (f_12s20) = f_12s20;
1826   FLD (f_rm) = f_rm;
1827   FLD (f_crn) = f_crn;
1828   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
1829   if (UNLIKELY(current_cpu->trace_extract_p))
1830     {
1831       current_cpu->trace_stream 
1832         << "0x" << hex << pc << dec << " (sfmt_lbcp)\t"
1833         << " f_12s20:0x" << hex << f_12s20 << dec
1834         << " f_rm:0x" << hex << f_rm << dec
1835         << " f_crn:0x" << hex << f_crn << dec
1836         << endl;
1837     }
1838
1839   /* Record the fields for profiling.  */
1840   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
1841     {
1842       FLD (in_rma) = f_rm;
1843     }
1844 #undef FLD
1845 }
1846
1847 void
1848 mepcore1_extract_sfmt_shcp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
1849     mepcore1_insn_word insn = entire_insn;
1850 #define FLD(f) abuf->fields.sfmt_sbcp.f
1851     UINT f_crn;
1852     UINT f_rm;
1853     INT f_12s20;
1854
1855     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1856     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
1857     f_12s20 = EXTRACT_MSB0_SINT (insn, 32, 20, 12);
1858
1859   /* Record the fields for the semantic handler.  */
1860   FLD (f_12s20) = f_12s20;
1861   FLD (f_crn) = f_crn;
1862   FLD (f_rm) = f_rm;
1863   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
1864   if (UNLIKELY(current_cpu->trace_extract_p))
1865     {
1866       current_cpu->trace_stream 
1867         << "0x" << hex << pc << dec << " (sfmt_shcp)\t"
1868         << " f_12s20:0x" << hex << f_12s20 << dec
1869         << " f_crn:0x" << hex << f_crn << dec
1870         << " f_rm:0x" << hex << f_rm << dec
1871         << endl;
1872     }
1873
1874   /* Record the fields for profiling.  */
1875   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
1876     {
1877       FLD (in_rma) = f_rm;
1878     }
1879 #undef FLD
1880 }
1881
1882 void
1883 mepcore1_extract_sfmt_lhcp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
1884     mepcore1_insn_word insn = entire_insn;
1885 #define FLD(f) abuf->fields.sfmt_sbcp.f
1886     UINT f_crn;
1887     UINT f_rm;
1888     INT f_12s20;
1889
1890     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1891     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
1892     f_12s20 = EXTRACT_MSB0_SINT (insn, 32, 20, 12);
1893
1894   /* Record the fields for the semantic handler.  */
1895   FLD (f_12s20) = f_12s20;
1896   FLD (f_rm) = f_rm;
1897   FLD (f_crn) = f_crn;
1898   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
1899   if (UNLIKELY(current_cpu->trace_extract_p))
1900     {
1901       current_cpu->trace_stream 
1902         << "0x" << hex << pc << dec << " (sfmt_lhcp)\t"
1903         << " f_12s20:0x" << hex << f_12s20 << dec
1904         << " f_rm:0x" << hex << f_rm << dec
1905         << " f_crn:0x" << hex << f_crn << dec
1906         << endl;
1907     }
1908
1909   /* Record the fields for profiling.  */
1910   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
1911     {
1912       FLD (in_rma) = f_rm;
1913     }
1914 #undef FLD
1915 }
1916
1917 void
1918 mepcore1_extract_sfmt_lbucpa (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
1919     mepcore1_insn_word insn = entire_insn;
1920 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
1921     UINT f_crn;
1922     UINT f_rm;
1923     SI f_cdisp10;
1924
1925     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1926     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
1927     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
1928
1929   /* Record the fields for the semantic handler.  */
1930   FLD (f_cdisp10) = f_cdisp10;
1931   FLD (f_rm) = f_rm;
1932   FLD (f_crn) = f_crn;
1933   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
1934   if (UNLIKELY(current_cpu->trace_extract_p))
1935     {
1936       current_cpu->trace_stream 
1937         << "0x" << hex << pc << dec << " (sfmt_lbucpa)\t"
1938         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
1939         << " f_rm:0x" << hex << f_rm << dec
1940         << " f_crn:0x" << hex << f_crn << dec
1941         << endl;
1942     }
1943
1944   /* Record the fields for profiling.  */
1945   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
1946     {
1947       FLD (in_rma) = f_rm;
1948       FLD (out_rma) = f_rm;
1949     }
1950 #undef FLD
1951 }
1952
1953 void
1954 mepcore1_extract_sfmt_lhucpa (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
1955     mepcore1_insn_word insn = entire_insn;
1956 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
1957     UINT f_crn;
1958     UINT f_rm;
1959     SI f_cdisp10;
1960
1961     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1962     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
1963     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
1964
1965   /* Record the fields for the semantic handler.  */
1966   FLD (f_cdisp10) = f_cdisp10;
1967   FLD (f_rm) = f_rm;
1968   FLD (f_crn) = f_crn;
1969   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
1970   if (UNLIKELY(current_cpu->trace_extract_p))
1971     {
1972       current_cpu->trace_stream 
1973         << "0x" << hex << pc << dec << " (sfmt_lhucpa)\t"
1974         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
1975         << " f_rm:0x" << hex << f_rm << dec
1976         << " f_crn:0x" << hex << f_crn << dec
1977         << endl;
1978     }
1979
1980   /* Record the fields for profiling.  */
1981   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
1982     {
1983       FLD (in_rma) = f_rm;
1984       FLD (out_rma) = f_rm;
1985     }
1986 #undef FLD
1987 }
1988
1989 void
1990 mepcore1_extract_sfmt_lbucpm0 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
1991     mepcore1_insn_word insn = entire_insn;
1992 #define FLD(f) abuf->fields.sfmt_lbucpm0.f
1993     UINT f_crn;
1994     UINT f_rm;
1995     SI f_cdisp10;
1996
1997     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1998     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
1999     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
2000
2001   /* Record the fields for the semantic handler.  */
2002   FLD (f_cdisp10) = f_cdisp10;
2003   FLD (f_rm) = f_rm;
2004   FLD (f_crn) = f_crn;
2005   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
2006   if (UNLIKELY(current_cpu->trace_extract_p))
2007     {
2008       current_cpu->trace_stream 
2009         << "0x" << hex << pc << dec << " (sfmt_lbucpm0)\t"
2010         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
2011         << " f_rm:0x" << hex << f_rm << dec
2012         << " f_crn:0x" << hex << f_crn << dec
2013         << endl;
2014     }
2015
2016   /* Record the fields for profiling.  */
2017   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2018     {
2019       FLD (in_mb0) = 12;
2020       FLD (in_me0) = 13;
2021       FLD (in_rma) = f_rm;
2022       FLD (out_rma) = f_rm;
2023     }
2024 #undef FLD
2025 }
2026
2027 void
2028 mepcore1_extract_sfmt_lhucpm0 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2029     mepcore1_insn_word insn = entire_insn;
2030 #define FLD(f) abuf->fields.sfmt_lbucpm0.f
2031     UINT f_crn;
2032     UINT f_rm;
2033     SI f_cdisp10;
2034
2035     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
2036     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
2037     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
2038
2039   /* Record the fields for the semantic handler.  */
2040   FLD (f_cdisp10) = f_cdisp10;
2041   FLD (f_rm) = f_rm;
2042   FLD (f_crn) = f_crn;
2043   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
2044   if (UNLIKELY(current_cpu->trace_extract_p))
2045     {
2046       current_cpu->trace_stream 
2047         << "0x" << hex << pc << dec << " (sfmt_lhucpm0)\t"
2048         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
2049         << " f_rm:0x" << hex << f_rm << dec
2050         << " f_crn:0x" << hex << f_crn << dec
2051         << endl;
2052     }
2053
2054   /* Record the fields for profiling.  */
2055   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2056     {
2057       FLD (in_mb0) = 12;
2058       FLD (in_me0) = 13;
2059       FLD (in_rma) = f_rm;
2060       FLD (out_rma) = f_rm;
2061     }
2062 #undef FLD
2063 }
2064
2065 void
2066 mepcore1_extract_sfmt_lbucpm1 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2067     mepcore1_insn_word insn = entire_insn;
2068 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
2069     UINT f_crn;
2070     UINT f_rm;
2071     SI f_cdisp10;
2072
2073     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
2074     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
2075     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
2076
2077   /* Record the fields for the semantic handler.  */
2078   FLD (f_cdisp10) = f_cdisp10;
2079   FLD (f_rm) = f_rm;
2080   FLD (f_crn) = f_crn;
2081   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
2082   if (UNLIKELY(current_cpu->trace_extract_p))
2083     {
2084       current_cpu->trace_stream 
2085         << "0x" << hex << pc << dec << " (sfmt_lbucpm1)\t"
2086         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
2087         << " f_rm:0x" << hex << f_rm << dec
2088         << " f_crn:0x" << hex << f_crn << dec
2089         << endl;
2090     }
2091
2092   /* Record the fields for profiling.  */
2093   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2094     {
2095       FLD (in_mb1) = 14;
2096       FLD (in_me1) = 15;
2097       FLD (in_rma) = f_rm;
2098       FLD (out_rma) = f_rm;
2099     }
2100 #undef FLD
2101 }
2102
2103 void
2104 mepcore1_extract_sfmt_lhucpm1 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2105     mepcore1_insn_word insn = entire_insn;
2106 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
2107     UINT f_crn;
2108     UINT f_rm;
2109     SI f_cdisp10;
2110
2111     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
2112     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
2113     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
2114
2115   /* Record the fields for the semantic handler.  */
2116   FLD (f_cdisp10) = f_cdisp10;
2117   FLD (f_rm) = f_rm;
2118   FLD (f_crn) = f_crn;
2119   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
2120   if (UNLIKELY(current_cpu->trace_extract_p))
2121     {
2122       current_cpu->trace_stream 
2123         << "0x" << hex << pc << dec << " (sfmt_lhucpm1)\t"
2124         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
2125         << " f_rm:0x" << hex << f_rm << dec
2126         << " f_crn:0x" << hex << f_crn << dec
2127         << endl;
2128     }
2129
2130   /* Record the fields for profiling.  */
2131   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2132     {
2133       FLD (in_mb1) = 14;
2134       FLD (in_me1) = 15;
2135       FLD (in_rma) = f_rm;
2136       FLD (out_rma) = f_rm;
2137     }
2138 #undef FLD
2139 }
2140
2141 void
2142 mepcore1_extract_sfmt_uci (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2143     mepcore1_insn_word insn = entire_insn;
2144 #define FLD(f) abuf->fields.sfmt_uci.f
2145     UINT f_rn;
2146     UINT f_rm;
2147     UINT f_16u16;
2148
2149     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
2150     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
2151     f_16u16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
2152
2153   /* Record the fields for the semantic handler.  */
2154   FLD (f_rm) = f_rm;
2155   FLD (f_rn) = f_rn;
2156   FLD (f_16u16) = f_16u16;
2157   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
2158   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
2159   if (UNLIKELY(current_cpu->trace_extract_p))
2160     {
2161       current_cpu->trace_stream 
2162         << "0x" << hex << pc << dec << " (sfmt_uci)\t"
2163         << " f_rm:0x" << hex << f_rm << dec
2164         << " f_rn:0x" << hex << f_rn << dec
2165         << " f_16u16:0x" << hex << f_16u16 << dec
2166         << endl;
2167     }
2168
2169   /* Record the fields for profiling.  */
2170   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2171     {
2172       FLD (in_rm) = f_rm;
2173       FLD (in_rn) = f_rn;
2174       FLD (out_rn) = f_rn;
2175     }
2176 #undef FLD
2177 }
2178
2179 void
2180 mepcore1_extract_sfmt_sb (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2181     mepcore1_insn_word insn = entire_insn;
2182 #define FLD(f) abuf->fields.sfmt_sb16.f
2183     UINT f_rn;
2184     UINT f_rm;
2185
2186     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2187     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
2188
2189   /* Record the fields for the semantic handler.  */
2190   FLD (f_rm) = f_rm;
2191   FLD (f_rn) = f_rn;
2192   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
2193   FLD (i_rnc) = & current_cpu->hardware.h_gpr[f_rn];
2194   if (UNLIKELY(current_cpu->trace_extract_p))
2195     {
2196       current_cpu->trace_stream 
2197         << "0x" << hex << pc << dec << " (sfmt_sb)\t"
2198         << " f_rm:0x" << hex << f_rm << dec
2199         << " f_rn:0x" << hex << f_rn << dec
2200         << endl;
2201     }
2202
2203   /* Record the fields for profiling.  */
2204   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2205     {
2206       FLD (in_rma) = f_rm;
2207       FLD (in_rnc) = f_rn;
2208     }
2209 #undef FLD
2210 }
2211
2212 void
2213 mepcore1_extract_sfmt_sh (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2214     mepcore1_insn_word insn = entire_insn;
2215 #define FLD(f) abuf->fields.sfmt_sh16.f
2216     UINT f_rn;
2217     UINT f_rm;
2218
2219     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2220     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
2221
2222   /* Record the fields for the semantic handler.  */
2223   FLD (f_rm) = f_rm;
2224   FLD (f_rn) = f_rn;
2225   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
2226   FLD (i_rns) = & current_cpu->hardware.h_gpr[f_rn];
2227   if (UNLIKELY(current_cpu->trace_extract_p))
2228     {
2229       current_cpu->trace_stream 
2230         << "0x" << hex << pc << dec << " (sfmt_sh)\t"
2231         << " f_rm:0x" << hex << f_rm << dec
2232         << " f_rn:0x" << hex << f_rn << dec
2233         << endl;
2234     }
2235
2236   /* Record the fields for profiling.  */
2237   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2238     {
2239       FLD (in_rma) = f_rm;
2240       FLD (in_rns) = f_rn;
2241     }
2242 #undef FLD
2243 }
2244
2245 void
2246 mepcore1_extract_sfmt_sw (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2247     mepcore1_insn_word insn = entire_insn;
2248 #define FLD(f) abuf->fields.sfmt_sw16.f
2249     UINT f_rn;
2250     UINT f_rm;
2251
2252     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2253     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
2254
2255   /* Record the fields for the semantic handler.  */
2256   FLD (f_rm) = f_rm;
2257   FLD (f_rn) = f_rn;
2258   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
2259   FLD (i_rnl) = & current_cpu->hardware.h_gpr[f_rn];
2260   if (UNLIKELY(current_cpu->trace_extract_p))
2261     {
2262       current_cpu->trace_stream 
2263         << "0x" << hex << pc << dec << " (sfmt_sw)\t"
2264         << " f_rm:0x" << hex << f_rm << dec
2265         << " f_rn:0x" << hex << f_rn << dec
2266         << endl;
2267     }
2268
2269   /* Record the fields for profiling.  */
2270   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2271     {
2272       FLD (in_rma) = f_rm;
2273       FLD (in_rnl) = f_rn;
2274     }
2275 #undef FLD
2276 }
2277
2278 void
2279 mepcore1_extract_sfmt_lb (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2280     mepcore1_insn_word insn = entire_insn;
2281 #define FLD(f) abuf->fields.sfmt_lb16.f
2282     UINT f_rn;
2283     UINT f_rm;
2284
2285     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2286     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
2287
2288   /* Record the fields for the semantic handler.  */
2289   FLD (f_rm) = f_rm;
2290   FLD (f_rn) = f_rn;
2291   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
2292   FLD (i_rnc) = & current_cpu->hardware.h_gpr[f_rn];
2293   if (UNLIKELY(current_cpu->trace_extract_p))
2294     {
2295       current_cpu->trace_stream 
2296         << "0x" << hex << pc << dec << " (sfmt_lb)\t"
2297         << " f_rm:0x" << hex << f_rm << dec
2298         << " f_rn:0x" << hex << f_rn << dec
2299         << endl;
2300     }
2301
2302   /* Record the fields for profiling.  */
2303   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2304     {
2305       FLD (in_rma) = f_rm;
2306       FLD (out_rnc) = f_rn;
2307     }
2308 #undef FLD
2309 }
2310
2311 void
2312 mepcore1_extract_sfmt_lh (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2313     mepcore1_insn_word insn = entire_insn;
2314 #define FLD(f) abuf->fields.sfmt_lh16.f
2315     UINT f_rn;
2316     UINT f_rm;
2317
2318     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2319     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
2320
2321   /* Record the fields for the semantic handler.  */
2322   FLD (f_rm) = f_rm;
2323   FLD (f_rn) = f_rn;
2324   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
2325   FLD (i_rns) = & current_cpu->hardware.h_gpr[f_rn];
2326   if (UNLIKELY(current_cpu->trace_extract_p))
2327     {
2328       current_cpu->trace_stream 
2329         << "0x" << hex << pc << dec << " (sfmt_lh)\t"
2330         << " f_rm:0x" << hex << f_rm << dec
2331         << " f_rn:0x" << hex << f_rn << dec
2332         << endl;
2333     }
2334
2335   /* Record the fields for profiling.  */
2336   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2337     {
2338       FLD (in_rma) = f_rm;
2339       FLD (out_rns) = f_rn;
2340     }
2341 #undef FLD
2342 }
2343
2344 void
2345 mepcore1_extract_sfmt_lw (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2346     mepcore1_insn_word insn = entire_insn;
2347 #define FLD(f) abuf->fields.sfmt_lw16.f
2348     UINT f_rn;
2349     UINT f_rm;
2350
2351     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2352     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
2353
2354   /* Record the fields for the semantic handler.  */
2355   FLD (f_rm) = f_rm;
2356   FLD (f_rn) = f_rn;
2357   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
2358   FLD (i_rnl) = & current_cpu->hardware.h_gpr[f_rn];
2359   if (UNLIKELY(current_cpu->trace_extract_p))
2360     {
2361       current_cpu->trace_stream 
2362         << "0x" << hex << pc << dec << " (sfmt_lw)\t"
2363         << " f_rm:0x" << hex << f_rm << dec
2364         << " f_rn:0x" << hex << f_rn << dec
2365         << endl;
2366     }
2367
2368   /* Record the fields for profiling.  */
2369   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2370     {
2371       FLD (in_rma) = f_rm;
2372       FLD (out_rnl) = f_rn;
2373     }
2374 #undef FLD
2375 }
2376
2377 void
2378 mepcore1_extract_sfmt_lbu (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2379     mepcore1_insn_word insn = entire_insn;
2380 #define FLD(f) abuf->fields.sfmt_lbu16.f
2381     UINT f_rn;
2382     UINT f_rm;
2383
2384     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2385     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
2386
2387   /* Record the fields for the semantic handler.  */
2388   FLD (f_rm) = f_rm;
2389   FLD (f_rn) = f_rn;
2390   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
2391   FLD (i_rnuc) = & current_cpu->hardware.h_gpr[f_rn];
2392   if (UNLIKELY(current_cpu->trace_extract_p))
2393     {
2394       current_cpu->trace_stream 
2395         << "0x" << hex << pc << dec << " (sfmt_lbu)\t"
2396         << " f_rm:0x" << hex << f_rm << dec
2397         << " f_rn:0x" << hex << f_rn << dec
2398         << endl;
2399     }
2400
2401   /* Record the fields for profiling.  */
2402   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2403     {
2404       FLD (in_rma) = f_rm;
2405       FLD (out_rnuc) = f_rn;
2406     }
2407 #undef FLD
2408 }
2409
2410 void
2411 mepcore1_extract_sfmt_lhu (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2412     mepcore1_insn_word insn = entire_insn;
2413 #define FLD(f) abuf->fields.sfmt_lhu16.f
2414     UINT f_rn;
2415     UINT f_rm;
2416
2417     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2418     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
2419
2420   /* Record the fields for the semantic handler.  */
2421   FLD (f_rm) = f_rm;
2422   FLD (f_rn) = f_rn;
2423   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
2424   FLD (i_rnus) = & current_cpu->hardware.h_gpr[f_rn];
2425   if (UNLIKELY(current_cpu->trace_extract_p))
2426     {
2427       current_cpu->trace_stream 
2428         << "0x" << hex << pc << dec << " (sfmt_lhu)\t"
2429         << " f_rm:0x" << hex << f_rm << dec
2430         << " f_rn:0x" << hex << f_rn << dec
2431         << endl;
2432     }
2433
2434   /* Record the fields for profiling.  */
2435   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2436     {
2437       FLD (in_rma) = f_rm;
2438       FLD (out_rnus) = f_rn;
2439     }
2440 #undef FLD
2441 }
2442
2443 void
2444 mepcore1_extract_sfmt_sw_sp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2445     mepcore1_insn_word insn = entire_insn;
2446 #define FLD(f) abuf->fields.sfmt_sw_sp.f
2447     UINT f_rn;
2448     SI f_7u9a4;
2449
2450     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2451     f_7u9a4 = ((EXTRACT_MSB0_UINT (insn, 16, 9, 5)) << (2));
2452
2453   /* Record the fields for the semantic handler.  */
2454   FLD (f_rn) = f_rn;
2455   FLD (f_7u9a4) = f_7u9a4;
2456   FLD (i_rnl) = & current_cpu->hardware.h_gpr[f_rn];
2457   if (UNLIKELY(current_cpu->trace_extract_p))
2458     {
2459       current_cpu->trace_stream 
2460         << "0x" << hex << pc << dec << " (sfmt_sw_sp)\t"
2461         << " f_rn:0x" << hex << f_rn << dec
2462         << " f_7u9a4:0x" << hex << f_7u9a4 << dec
2463         << endl;
2464     }
2465
2466   /* Record the fields for profiling.  */
2467   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2468     {
2469       FLD (in_rnl) = f_rn;
2470       FLD (in_sp) = 15;
2471     }
2472 #undef FLD
2473 }
2474
2475 void
2476 mepcore1_extract_sfmt_lw_sp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2477     mepcore1_insn_word insn = entire_insn;
2478 #define FLD(f) abuf->fields.sfmt_lw_sp.f
2479     UINT f_rn;
2480     SI f_7u9a4;
2481
2482     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2483     f_7u9a4 = ((EXTRACT_MSB0_UINT (insn, 16, 9, 5)) << (2));
2484
2485   /* Record the fields for the semantic handler.  */
2486   FLD (f_7u9a4) = f_7u9a4;
2487   FLD (f_rn) = f_rn;
2488   FLD (i_rnl) = & current_cpu->hardware.h_gpr[f_rn];
2489   if (UNLIKELY(current_cpu->trace_extract_p))
2490     {
2491       current_cpu->trace_stream 
2492         << "0x" << hex << pc << dec << " (sfmt_lw_sp)\t"
2493         << " f_7u9a4:0x" << hex << f_7u9a4 << dec
2494         << " f_rn:0x" << hex << f_rn << dec
2495         << endl;
2496     }
2497
2498   /* Record the fields for profiling.  */
2499   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2500     {
2501       FLD (in_sp) = 15;
2502       FLD (out_rnl) = f_rn;
2503     }
2504 #undef FLD
2505 }
2506
2507 void
2508 mepcore1_extract_sfmt_sb_tp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2509     mepcore1_insn_word insn = entire_insn;
2510 #define FLD(f) abuf->fields.sfmt_sb_tp.f
2511     UINT f_rn3;
2512     UINT f_7u9;
2513
2514     f_rn3 = EXTRACT_MSB0_UINT (insn, 16, 5, 3);
2515     f_7u9 = EXTRACT_MSB0_UINT (insn, 16, 9, 7);
2516
2517   /* Record the fields for the semantic handler.  */
2518   FLD (f_rn3) = f_rn3;
2519   FLD (f_7u9) = f_7u9;
2520   FLD (i_rn3c) = & current_cpu->hardware.h_gpr[f_rn3];
2521   if (UNLIKELY(current_cpu->trace_extract_p))
2522     {
2523       current_cpu->trace_stream 
2524         << "0x" << hex << pc << dec << " (sfmt_sb_tp)\t"
2525         << " f_rn3:0x" << hex << f_rn3 << dec
2526         << " f_7u9:0x" << hex << f_7u9 << dec
2527         << endl;
2528     }
2529
2530   /* Record the fields for profiling.  */
2531   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2532     {
2533       FLD (in_rn3c) = f_rn3;
2534       FLD (in_tp) = 13;
2535     }
2536 #undef FLD
2537 }
2538
2539 void
2540 mepcore1_extract_sfmt_sh_tp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2541     mepcore1_insn_word insn = entire_insn;
2542 #define FLD(f) abuf->fields.sfmt_sh_tp.f
2543     UINT f_rn3;
2544     SI f_7u9a2;
2545
2546     f_rn3 = EXTRACT_MSB0_UINT (insn, 16, 5, 3);
2547     f_7u9a2 = ((EXTRACT_MSB0_UINT (insn, 16, 9, 6)) << (1));
2548
2549   /* Record the fields for the semantic handler.  */
2550   FLD (f_rn3) = f_rn3;
2551   FLD (f_7u9a2) = f_7u9a2;
2552   FLD (i_rn3s) = & current_cpu->hardware.h_gpr[f_rn3];
2553   if (UNLIKELY(current_cpu->trace_extract_p))
2554     {
2555       current_cpu->trace_stream 
2556         << "0x" << hex << pc << dec << " (sfmt_sh_tp)\t"
2557         << " f_rn3:0x" << hex << f_rn3 << dec
2558         << " f_7u9a2:0x" << hex << f_7u9a2 << dec
2559         << endl;
2560     }
2561
2562   /* Record the fields for profiling.  */
2563   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2564     {
2565       FLD (in_rn3s) = f_rn3;
2566       FLD (in_tp) = 13;
2567     }
2568 #undef FLD
2569 }
2570
2571 void
2572 mepcore1_extract_sfmt_sw_tp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2573     mepcore1_insn_word insn = entire_insn;
2574 #define FLD(f) abuf->fields.sfmt_sw_tp.f
2575     UINT f_rn3;
2576     SI f_7u9a4;
2577
2578     f_rn3 = EXTRACT_MSB0_UINT (insn, 16, 5, 3);
2579     f_7u9a4 = ((EXTRACT_MSB0_UINT (insn, 16, 9, 5)) << (2));
2580
2581   /* Record the fields for the semantic handler.  */
2582   FLD (f_rn3) = f_rn3;
2583   FLD (f_7u9a4) = f_7u9a4;
2584   FLD (i_rn3l) = & current_cpu->hardware.h_gpr[f_rn3];
2585   if (UNLIKELY(current_cpu->trace_extract_p))
2586     {
2587       current_cpu->trace_stream 
2588         << "0x" << hex << pc << dec << " (sfmt_sw_tp)\t"
2589         << " f_rn3:0x" << hex << f_rn3 << dec
2590         << " f_7u9a4:0x" << hex << f_7u9a4 << dec
2591         << endl;
2592     }
2593
2594   /* Record the fields for profiling.  */
2595   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2596     {
2597       FLD (in_rn3l) = f_rn3;
2598       FLD (in_tp) = 13;
2599     }
2600 #undef FLD
2601 }
2602
2603 void
2604 mepcore1_extract_sfmt_lb_tp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2605     mepcore1_insn_word insn = entire_insn;
2606 #define FLD(f) abuf->fields.sfmt_lb_tp.f
2607     UINT f_rn3;
2608     UINT f_7u9;
2609
2610     f_rn3 = EXTRACT_MSB0_UINT (insn, 16, 5, 3);
2611     f_7u9 = EXTRACT_MSB0_UINT (insn, 16, 9, 7);
2612
2613   /* Record the fields for the semantic handler.  */
2614   FLD (f_7u9) = f_7u9;
2615   FLD (f_rn3) = f_rn3;
2616   FLD (i_rn3c) = & current_cpu->hardware.h_gpr[f_rn3];
2617   if (UNLIKELY(current_cpu->trace_extract_p))
2618     {
2619       current_cpu->trace_stream 
2620         << "0x" << hex << pc << dec << " (sfmt_lb_tp)\t"
2621         << " f_7u9:0x" << hex << f_7u9 << dec
2622         << " f_rn3:0x" << hex << f_rn3 << dec
2623         << endl;
2624     }
2625
2626   /* Record the fields for profiling.  */
2627   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2628     {
2629       FLD (in_tp) = 13;
2630       FLD (out_rn3c) = f_rn3;
2631     }
2632 #undef FLD
2633 }
2634
2635 void
2636 mepcore1_extract_sfmt_lh_tp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2637     mepcore1_insn_word insn = entire_insn;
2638 #define FLD(f) abuf->fields.sfmt_lh_tp.f
2639     UINT f_rn3;
2640     SI f_7u9a2;
2641
2642     f_rn3 = EXTRACT_MSB0_UINT (insn, 16, 5, 3);
2643     f_7u9a2 = ((EXTRACT_MSB0_UINT (insn, 16, 9, 6)) << (1));
2644
2645   /* Record the fields for the semantic handler.  */
2646   FLD (f_7u9a2) = f_7u9a2;
2647   FLD (f_rn3) = f_rn3;
2648   FLD (i_rn3s) = & current_cpu->hardware.h_gpr[f_rn3];
2649   if (UNLIKELY(current_cpu->trace_extract_p))
2650     {
2651       current_cpu->trace_stream 
2652         << "0x" << hex << pc << dec << " (sfmt_lh_tp)\t"
2653         << " f_7u9a2:0x" << hex << f_7u9a2 << dec
2654         << " f_rn3:0x" << hex << f_rn3 << dec
2655         << endl;
2656     }
2657
2658   /* Record the fields for profiling.  */
2659   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2660     {
2661       FLD (in_tp) = 13;
2662       FLD (out_rn3s) = f_rn3;
2663     }
2664 #undef FLD
2665 }
2666
2667 void
2668 mepcore1_extract_sfmt_lw_tp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2669     mepcore1_insn_word insn = entire_insn;
2670 #define FLD(f) abuf->fields.sfmt_lw_tp.f
2671     UINT f_rn3;
2672     SI f_7u9a4;
2673
2674     f_rn3 = EXTRACT_MSB0_UINT (insn, 16, 5, 3);
2675     f_7u9a4 = ((EXTRACT_MSB0_UINT (insn, 16, 9, 5)) << (2));
2676
2677   /* Record the fields for the semantic handler.  */
2678   FLD (f_7u9a4) = f_7u9a4;
2679   FLD (f_rn3) = f_rn3;
2680   FLD (i_rn3l) = & current_cpu->hardware.h_gpr[f_rn3];
2681   if (UNLIKELY(current_cpu->trace_extract_p))
2682     {
2683       current_cpu->trace_stream 
2684         << "0x" << hex << pc << dec << " (sfmt_lw_tp)\t"
2685         << " f_7u9a4:0x" << hex << f_7u9a4 << dec
2686         << " f_rn3:0x" << hex << f_rn3 << dec
2687         << endl;
2688     }
2689
2690   /* Record the fields for profiling.  */
2691   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2692     {
2693       FLD (in_tp) = 13;
2694       FLD (out_rn3l) = f_rn3;
2695     }
2696 #undef FLD
2697 }
2698
2699 void
2700 mepcore1_extract_sfmt_lbu_tp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2701     mepcore1_insn_word insn = entire_insn;
2702 #define FLD(f) abuf->fields.sfmt_lbu_tp.f
2703     UINT f_rn3;
2704     UINT f_7u9;
2705
2706     f_rn3 = EXTRACT_MSB0_UINT (insn, 16, 5, 3);
2707     f_7u9 = EXTRACT_MSB0_UINT (insn, 16, 9, 7);
2708
2709   /* Record the fields for the semantic handler.  */
2710   FLD (f_7u9) = f_7u9;
2711   FLD (f_rn3) = f_rn3;
2712   FLD (i_rn3uc) = & current_cpu->hardware.h_gpr[f_rn3];
2713   if (UNLIKELY(current_cpu->trace_extract_p))
2714     {
2715       current_cpu->trace_stream 
2716         << "0x" << hex << pc << dec << " (sfmt_lbu_tp)\t"
2717         << " f_7u9:0x" << hex << f_7u9 << dec
2718         << " f_rn3:0x" << hex << f_rn3 << dec
2719         << endl;
2720     }
2721
2722   /* Record the fields for profiling.  */
2723   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2724     {
2725       FLD (in_tp) = 13;
2726       FLD (out_rn3uc) = f_rn3;
2727     }
2728 #undef FLD
2729 }
2730
2731 void
2732 mepcore1_extract_sfmt_lhu_tp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2733     mepcore1_insn_word insn = entire_insn;
2734 #define FLD(f) abuf->fields.sfmt_lhu_tp.f
2735     UINT f_rn3;
2736     SI f_7u9a2;
2737
2738     f_rn3 = EXTRACT_MSB0_UINT (insn, 16, 5, 3);
2739     f_7u9a2 = ((EXTRACT_MSB0_UINT (insn, 16, 9, 6)) << (1));
2740
2741   /* Record the fields for the semantic handler.  */
2742   FLD (f_7u9a2) = f_7u9a2;
2743   FLD (f_rn3) = f_rn3;
2744   FLD (i_rn3us) = & current_cpu->hardware.h_gpr[f_rn3];
2745   if (UNLIKELY(current_cpu->trace_extract_p))
2746     {
2747       current_cpu->trace_stream 
2748         << "0x" << hex << pc << dec << " (sfmt_lhu_tp)\t"
2749         << " f_7u9a2:0x" << hex << f_7u9a2 << dec
2750         << " f_rn3:0x" << hex << f_rn3 << dec
2751         << endl;
2752     }
2753
2754   /* Record the fields for profiling.  */
2755   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2756     {
2757       FLD (in_tp) = 13;
2758       FLD (out_rn3us) = f_rn3;
2759     }
2760 #undef FLD
2761 }
2762
2763 void
2764 mepcore1_extract_sfmt_sb16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2765     mepcore1_insn_word insn = entire_insn;
2766 #define FLD(f) abuf->fields.sfmt_sb16.f
2767     UINT f_rn;
2768     UINT f_rm;
2769     INT f_16s16;
2770
2771     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
2772     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
2773     f_16s16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
2774
2775   /* Record the fields for the semantic handler.  */
2776   FLD (f_rm) = f_rm;
2777   FLD (f_rn) = f_rn;
2778   FLD (f_16s16) = f_16s16;
2779   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
2780   FLD (i_rnc) = & current_cpu->hardware.h_gpr[f_rn];
2781   if (UNLIKELY(current_cpu->trace_extract_p))
2782     {
2783       current_cpu->trace_stream 
2784         << "0x" << hex << pc << dec << " (sfmt_sb16)\t"
2785         << " f_rm:0x" << hex << f_rm << dec
2786         << " f_rn:0x" << hex << f_rn << dec
2787         << " f_16s16:0x" << hex << f_16s16 << dec
2788         << endl;
2789     }
2790
2791   /* Record the fields for profiling.  */
2792   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2793     {
2794       FLD (in_rma) = f_rm;
2795       FLD (in_rnc) = f_rn;
2796     }
2797 #undef FLD
2798 }
2799
2800 void
2801 mepcore1_extract_sfmt_sh16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2802     mepcore1_insn_word insn = entire_insn;
2803 #define FLD(f) abuf->fields.sfmt_sh16.f
2804     UINT f_rn;
2805     UINT f_rm;
2806     INT f_16s16;
2807
2808     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
2809     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
2810     f_16s16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
2811
2812   /* Record the fields for the semantic handler.  */
2813   FLD (f_rm) = f_rm;
2814   FLD (f_rn) = f_rn;
2815   FLD (f_16s16) = f_16s16;
2816   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
2817   FLD (i_rns) = & current_cpu->hardware.h_gpr[f_rn];
2818   if (UNLIKELY(current_cpu->trace_extract_p))
2819     {
2820       current_cpu->trace_stream 
2821         << "0x" << hex << pc << dec << " (sfmt_sh16)\t"
2822         << " f_rm:0x" << hex << f_rm << dec
2823         << " f_rn:0x" << hex << f_rn << dec
2824         << " f_16s16:0x" << hex << f_16s16 << dec
2825         << endl;
2826     }
2827
2828   /* Record the fields for profiling.  */
2829   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2830     {
2831       FLD (in_rma) = f_rm;
2832       FLD (in_rns) = f_rn;
2833     }
2834 #undef FLD
2835 }
2836
2837 void
2838 mepcore1_extract_sfmt_sw16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2839     mepcore1_insn_word insn = entire_insn;
2840 #define FLD(f) abuf->fields.sfmt_sw16.f
2841     UINT f_rn;
2842     UINT f_rm;
2843     INT f_16s16;
2844
2845     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
2846     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
2847     f_16s16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
2848
2849   /* Record the fields for the semantic handler.  */
2850   FLD (f_rm) = f_rm;
2851   FLD (f_rn) = f_rn;
2852   FLD (f_16s16) = f_16s16;
2853   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
2854   FLD (i_rnl) = & current_cpu->hardware.h_gpr[f_rn];
2855   if (UNLIKELY(current_cpu->trace_extract_p))
2856     {
2857       current_cpu->trace_stream 
2858         << "0x" << hex << pc << dec << " (sfmt_sw16)\t"
2859         << " f_rm:0x" << hex << f_rm << dec
2860         << " f_rn:0x" << hex << f_rn << dec
2861         << " f_16s16:0x" << hex << f_16s16 << dec
2862         << endl;
2863     }
2864
2865   /* Record the fields for profiling.  */
2866   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2867     {
2868       FLD (in_rma) = f_rm;
2869       FLD (in_rnl) = f_rn;
2870     }
2871 #undef FLD
2872 }
2873
2874 void
2875 mepcore1_extract_sfmt_lb16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2876     mepcore1_insn_word insn = entire_insn;
2877 #define FLD(f) abuf->fields.sfmt_lb16.f
2878     UINT f_rn;
2879     UINT f_rm;
2880     INT f_16s16;
2881
2882     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
2883     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
2884     f_16s16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
2885
2886   /* Record the fields for the semantic handler.  */
2887   FLD (f_rm) = f_rm;
2888   FLD (f_16s16) = f_16s16;
2889   FLD (f_rn) = f_rn;
2890   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
2891   FLD (i_rnc) = & current_cpu->hardware.h_gpr[f_rn];
2892   if (UNLIKELY(current_cpu->trace_extract_p))
2893     {
2894       current_cpu->trace_stream 
2895         << "0x" << hex << pc << dec << " (sfmt_lb16)\t"
2896         << " f_rm:0x" << hex << f_rm << dec
2897         << " f_16s16:0x" << hex << f_16s16 << dec
2898         << " f_rn:0x" << hex << f_rn << dec
2899         << endl;
2900     }
2901
2902   /* Record the fields for profiling.  */
2903   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2904     {
2905       FLD (in_rma) = f_rm;
2906       FLD (out_rnc) = f_rn;
2907     }
2908 #undef FLD
2909 }
2910
2911 void
2912 mepcore1_extract_sfmt_lh16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2913     mepcore1_insn_word insn = entire_insn;
2914 #define FLD(f) abuf->fields.sfmt_lh16.f
2915     UINT f_rn;
2916     UINT f_rm;
2917     INT f_16s16;
2918
2919     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
2920     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
2921     f_16s16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
2922
2923   /* Record the fields for the semantic handler.  */
2924   FLD (f_rm) = f_rm;
2925   FLD (f_16s16) = f_16s16;
2926   FLD (f_rn) = f_rn;
2927   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
2928   FLD (i_rns) = & current_cpu->hardware.h_gpr[f_rn];
2929   if (UNLIKELY(current_cpu->trace_extract_p))
2930     {
2931       current_cpu->trace_stream 
2932         << "0x" << hex << pc << dec << " (sfmt_lh16)\t"
2933         << " f_rm:0x" << hex << f_rm << dec
2934         << " f_16s16:0x" << hex << f_16s16 << dec
2935         << " f_rn:0x" << hex << f_rn << dec
2936         << endl;
2937     }
2938
2939   /* Record the fields for profiling.  */
2940   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2941     {
2942       FLD (in_rma) = f_rm;
2943       FLD (out_rns) = f_rn;
2944     }
2945 #undef FLD
2946 }
2947
2948 void
2949 mepcore1_extract_sfmt_lw16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2950     mepcore1_insn_word insn = entire_insn;
2951 #define FLD(f) abuf->fields.sfmt_lw16.f
2952     UINT f_rn;
2953     UINT f_rm;
2954     INT f_16s16;
2955
2956     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
2957     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
2958     f_16s16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
2959
2960   /* Record the fields for the semantic handler.  */
2961   FLD (f_rm) = f_rm;
2962   FLD (f_16s16) = f_16s16;
2963   FLD (f_rn) = f_rn;
2964   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
2965   FLD (i_rnl) = & current_cpu->hardware.h_gpr[f_rn];
2966   if (UNLIKELY(current_cpu->trace_extract_p))
2967     {
2968       current_cpu->trace_stream 
2969         << "0x" << hex << pc << dec << " (sfmt_lw16)\t"
2970         << " f_rm:0x" << hex << f_rm << dec
2971         << " f_16s16:0x" << hex << f_16s16 << dec
2972         << " f_rn:0x" << hex << f_rn << dec
2973         << endl;
2974     }
2975
2976   /* Record the fields for profiling.  */
2977   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
2978     {
2979       FLD (in_rma) = f_rm;
2980       FLD (out_rnl) = f_rn;
2981     }
2982 #undef FLD
2983 }
2984
2985 void
2986 mepcore1_extract_sfmt_lbu16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
2987     mepcore1_insn_word insn = entire_insn;
2988 #define FLD(f) abuf->fields.sfmt_lbu16.f
2989     UINT f_rn;
2990     UINT f_rm;
2991     INT f_16s16;
2992
2993     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
2994     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
2995     f_16s16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
2996
2997   /* Record the fields for the semantic handler.  */
2998   FLD (f_rm) = f_rm;
2999   FLD (f_16s16) = f_16s16;
3000   FLD (f_rn) = f_rn;
3001   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
3002   FLD (i_rnuc) = & current_cpu->hardware.h_gpr[f_rn];
3003   if (UNLIKELY(current_cpu->trace_extract_p))
3004     {
3005       current_cpu->trace_stream 
3006         << "0x" << hex << pc << dec << " (sfmt_lbu16)\t"
3007         << " f_rm:0x" << hex << f_rm << dec
3008         << " f_16s16:0x" << hex << f_16s16 << dec
3009         << " f_rn:0x" << hex << f_rn << dec
3010         << endl;
3011     }
3012
3013   /* Record the fields for profiling.  */
3014   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3015     {
3016       FLD (in_rma) = f_rm;
3017       FLD (out_rnuc) = f_rn;
3018     }
3019 #undef FLD
3020 }
3021
3022 void
3023 mepcore1_extract_sfmt_lhu16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3024     mepcore1_insn_word insn = entire_insn;
3025 #define FLD(f) abuf->fields.sfmt_lhu16.f
3026     UINT f_rn;
3027     UINT f_rm;
3028     INT f_16s16;
3029
3030     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
3031     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
3032     f_16s16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
3033
3034   /* Record the fields for the semantic handler.  */
3035   FLD (f_rm) = f_rm;
3036   FLD (f_16s16) = f_16s16;
3037   FLD (f_rn) = f_rn;
3038   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
3039   FLD (i_rnus) = & current_cpu->hardware.h_gpr[f_rn];
3040   if (UNLIKELY(current_cpu->trace_extract_p))
3041     {
3042       current_cpu->trace_stream 
3043         << "0x" << hex << pc << dec << " (sfmt_lhu16)\t"
3044         << " f_rm:0x" << hex << f_rm << dec
3045         << " f_16s16:0x" << hex << f_16s16 << dec
3046         << " f_rn:0x" << hex << f_rn << dec
3047         << endl;
3048     }
3049
3050   /* Record the fields for profiling.  */
3051   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3052     {
3053       FLD (in_rma) = f_rm;
3054       FLD (out_rnus) = f_rn;
3055     }
3056 #undef FLD
3057 }
3058
3059 void
3060 mepcore1_extract_sfmt_sw24 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3061     mepcore1_insn_word insn = entire_insn;
3062 #define FLD(f) abuf->fields.sfmt_sw24.f
3063     UINT f_rn;
3064     UINT f_24u8a4n_lo;
3065     UINT f_24u8a4n_hi;
3066     UINT f_24u8a4n;
3067
3068     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
3069     f_24u8a4n_lo = EXTRACT_MSB0_UINT (insn, 32, 8, 6);
3070     f_24u8a4n_hi = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
3071   f_24u8a4n = ((((f_24u8a4n_hi) << (8))) | (((f_24u8a4n_lo) << (2))));
3072
3073   /* Record the fields for the semantic handler.  */
3074   FLD (f_24u8a4n) = f_24u8a4n;
3075   FLD (f_rn) = f_rn;
3076   FLD (i_rnl) = & current_cpu->hardware.h_gpr[f_rn];
3077   if (UNLIKELY(current_cpu->trace_extract_p))
3078     {
3079       current_cpu->trace_stream 
3080         << "0x" << hex << pc << dec << " (sfmt_sw24)\t"
3081         << " f_24u8a4n:0x" << hex << f_24u8a4n << dec
3082         << " f_rn:0x" << hex << f_rn << dec
3083         << endl;
3084     }
3085
3086   /* Record the fields for profiling.  */
3087   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3088     {
3089       FLD (in_rnl) = f_rn;
3090     }
3091 #undef FLD
3092 }
3093
3094 void
3095 mepcore1_extract_sfmt_lw24 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3096     mepcore1_insn_word insn = entire_insn;
3097 #define FLD(f) abuf->fields.sfmt_lw24.f
3098     UINT f_rn;
3099     UINT f_24u8a4n_lo;
3100     UINT f_24u8a4n_hi;
3101     UINT f_24u8a4n;
3102
3103     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
3104     f_24u8a4n_lo = EXTRACT_MSB0_UINT (insn, 32, 8, 6);
3105     f_24u8a4n_hi = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
3106   f_24u8a4n = ((((f_24u8a4n_hi) << (8))) | (((f_24u8a4n_lo) << (2))));
3107
3108   /* Record the fields for the semantic handler.  */
3109   FLD (f_24u8a4n) = f_24u8a4n;
3110   FLD (f_rn) = f_rn;
3111   FLD (i_rnl) = & current_cpu->hardware.h_gpr[f_rn];
3112   if (UNLIKELY(current_cpu->trace_extract_p))
3113     {
3114       current_cpu->trace_stream 
3115         << "0x" << hex << pc << dec << " (sfmt_lw24)\t"
3116         << " f_24u8a4n:0x" << hex << f_24u8a4n << dec
3117         << " f_rn:0x" << hex << f_rn << dec
3118         << endl;
3119     }
3120
3121   /* Record the fields for profiling.  */
3122   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3123     {
3124       FLD (out_rnl) = f_rn;
3125     }
3126 #undef FLD
3127 }
3128
3129 void
3130 mepcore1_extract_sfmt_extb (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3131     mepcore1_insn_word insn = entire_insn;
3132 #define FLD(f) abuf->fields.sfmt_clip.f
3133     UINT f_rn;
3134
3135     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
3136
3137   /* Record the fields for the semantic handler.  */
3138   FLD (f_rn) = f_rn;
3139   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3140   if (UNLIKELY(current_cpu->trace_extract_p))
3141     {
3142       current_cpu->trace_stream 
3143         << "0x" << hex << pc << dec << " (sfmt_extb)\t"
3144         << " f_rn:0x" << hex << f_rn << dec
3145         << endl;
3146     }
3147
3148   /* Record the fields for profiling.  */
3149   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3150     {
3151       FLD (in_rn) = f_rn;
3152       FLD (out_rn) = f_rn;
3153     }
3154 #undef FLD
3155 }
3156
3157 void
3158 mepcore1_extract_sfmt_ssarb (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3159     mepcore1_insn_word insn = entire_insn;
3160 #define FLD(f) abuf->fields.sfmt_ssarb.f
3161     UINT f_2u6;
3162     UINT f_rm;
3163
3164     f_2u6 = EXTRACT_MSB0_UINT (insn, 16, 6, 2);
3165     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
3166
3167   /* Record the fields for the semantic handler.  */
3168   FLD (f_rm) = f_rm;
3169   FLD (f_2u6) = f_2u6;
3170   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
3171   if (UNLIKELY(current_cpu->trace_extract_p))
3172     {
3173       current_cpu->trace_stream 
3174         << "0x" << hex << pc << dec << " (sfmt_ssarb)\t"
3175         << " f_rm:0x" << hex << f_rm << dec
3176         << " f_2u6:0x" << hex << f_2u6 << dec
3177         << endl;
3178     }
3179
3180   /* Record the fields for profiling.  */
3181   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3182     {
3183       FLD (in_rm) = f_rm;
3184       FLD (out_sar) = 2;
3185     }
3186 #undef FLD
3187 }
3188
3189 void
3190 mepcore1_extract_sfmt_mov (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3191     mepcore1_insn_word insn = entire_insn;
3192 #define FLD(f) abuf->fields.sfmt_add3x.f
3193     UINT f_rn;
3194     UINT f_rm;
3195
3196     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
3197     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
3198
3199   /* Record the fields for the semantic handler.  */
3200   FLD (f_rm) = f_rm;
3201   FLD (f_rn) = f_rn;
3202   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
3203   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3204   if (UNLIKELY(current_cpu->trace_extract_p))
3205     {
3206       current_cpu->trace_stream 
3207         << "0x" << hex << pc << dec << " (sfmt_mov)\t"
3208         << " f_rm:0x" << hex << f_rm << dec
3209         << " f_rn:0x" << hex << f_rn << dec
3210         << endl;
3211     }
3212
3213   /* Record the fields for profiling.  */
3214   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3215     {
3216       FLD (in_rm) = f_rm;
3217       FLD (out_rn) = f_rn;
3218     }
3219 #undef FLD
3220 }
3221
3222 void
3223 mepcore1_extract_sfmt_movi8 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3224     mepcore1_insn_word insn = entire_insn;
3225 #define FLD(f) abuf->fields.sfmt_movi8.f
3226     UINT f_rn;
3227     INT f_8s8;
3228
3229     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
3230     f_8s8 = EXTRACT_MSB0_SINT (insn, 16, 8, 8);
3231
3232   /* Record the fields for the semantic handler.  */
3233   FLD (f_8s8) = f_8s8;
3234   FLD (f_rn) = f_rn;
3235   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3236   if (UNLIKELY(current_cpu->trace_extract_p))
3237     {
3238       current_cpu->trace_stream 
3239         << "0x" << hex << pc << dec << " (sfmt_movi8)\t"
3240         << " f_8s8:0x" << hex << f_8s8 << dec
3241         << " f_rn:0x" << hex << f_rn << dec
3242         << endl;
3243     }
3244
3245   /* Record the fields for profiling.  */
3246   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3247     {
3248       FLD (out_rn) = f_rn;
3249     }
3250 #undef FLD
3251 }
3252
3253 void
3254 mepcore1_extract_sfmt_movi16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3255     mepcore1_insn_word insn = entire_insn;
3256 #define FLD(f) abuf->fields.sfmt_add3x.f
3257     UINT f_rn;
3258     INT f_16s16;
3259
3260     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
3261     f_16s16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
3262
3263   /* Record the fields for the semantic handler.  */
3264   FLD (f_16s16) = f_16s16;
3265   FLD (f_rn) = f_rn;
3266   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3267   if (UNLIKELY(current_cpu->trace_extract_p))
3268     {
3269       current_cpu->trace_stream 
3270         << "0x" << hex << pc << dec << " (sfmt_movi16)\t"
3271         << " f_16s16:0x" << hex << f_16s16 << dec
3272         << " f_rn:0x" << hex << f_rn << dec
3273         << endl;
3274     }
3275
3276   /* Record the fields for profiling.  */
3277   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3278     {
3279       FLD (out_rn) = f_rn;
3280     }
3281 #undef FLD
3282 }
3283
3284 void
3285 mepcore1_extract_sfmt_movu24 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3286     mepcore1_insn_word insn = entire_insn;
3287 #define FLD(f) abuf->fields.sfmt_movu24.f
3288     UINT f_rn3;
3289     UINT f_24u8n_lo;
3290     UINT f_24u8n_hi;
3291     UINT f_24u8n;
3292
3293     f_rn3 = EXTRACT_MSB0_UINT (insn, 32, 5, 3);
3294     f_24u8n_lo = EXTRACT_MSB0_UINT (insn, 32, 8, 8);
3295     f_24u8n_hi = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
3296   f_24u8n = ((((f_24u8n_hi) << (8))) | (f_24u8n_lo));
3297
3298   /* Record the fields for the semantic handler.  */
3299   FLD (f_24u8n) = f_24u8n;
3300   FLD (f_rn3) = f_rn3;
3301   FLD (i_rn3) = & current_cpu->hardware.h_gpr[f_rn3];
3302   if (UNLIKELY(current_cpu->trace_extract_p))
3303     {
3304       current_cpu->trace_stream 
3305         << "0x" << hex << pc << dec << " (sfmt_movu24)\t"
3306         << " f_24u8n:0x" << hex << f_24u8n << dec
3307         << " f_rn3:0x" << hex << f_rn3 << dec
3308         << endl;
3309     }
3310
3311   /* Record the fields for profiling.  */
3312   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3313     {
3314       FLD (out_rn3) = f_rn3;
3315     }
3316 #undef FLD
3317 }
3318
3319 void
3320 mepcore1_extract_sfmt_movu16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3321     mepcore1_insn_word insn = entire_insn;
3322 #define FLD(f) abuf->fields.sfmt_uci.f
3323     UINT f_rn;
3324     UINT f_16u16;
3325
3326     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
3327     f_16u16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
3328
3329   /* Record the fields for the semantic handler.  */
3330   FLD (f_16u16) = f_16u16;
3331   FLD (f_rn) = f_rn;
3332   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3333   if (UNLIKELY(current_cpu->trace_extract_p))
3334     {
3335       current_cpu->trace_stream 
3336         << "0x" << hex << pc << dec << " (sfmt_movu16)\t"
3337         << " f_16u16:0x" << hex << f_16u16 << dec
3338         << " f_rn:0x" << hex << f_rn << dec
3339         << endl;
3340     }
3341
3342   /* Record the fields for profiling.  */
3343   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3344     {
3345       FLD (out_rn) = f_rn;
3346     }
3347 #undef FLD
3348 }
3349
3350 void
3351 mepcore1_extract_sfmt_add3 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3352     mepcore1_insn_word insn = entire_insn;
3353 #define FLD(f) abuf->fields.sfmt_add3.f
3354     UINT f_rn;
3355     UINT f_rm;
3356     UINT f_rl;
3357
3358     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
3359     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
3360     f_rl = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
3361
3362   /* Record the fields for the semantic handler.  */
3363   FLD (f_rm) = f_rm;
3364   FLD (f_rn) = f_rn;
3365   FLD (f_rl) = f_rl;
3366   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
3367   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3368   FLD (i_rl) = & current_cpu->hardware.h_gpr[f_rl];
3369   if (UNLIKELY(current_cpu->trace_extract_p))
3370     {
3371       current_cpu->trace_stream 
3372         << "0x" << hex << pc << dec << " (sfmt_add3)\t"
3373         << " f_rm:0x" << hex << f_rm << dec
3374         << " f_rn:0x" << hex << f_rn << dec
3375         << " f_rl:0x" << hex << f_rl << dec
3376         << endl;
3377     }
3378
3379   /* Record the fields for profiling.  */
3380   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3381     {
3382       FLD (in_rm) = f_rm;
3383       FLD (in_rn) = f_rn;
3384       FLD (out_rl) = f_rl;
3385     }
3386 #undef FLD
3387 }
3388
3389 void
3390 mepcore1_extract_sfmt_add (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3391     mepcore1_insn_word insn = entire_insn;
3392 #define FLD(f) abuf->fields.sfmt_add.f
3393     UINT f_rn;
3394     INT f_6s8;
3395
3396     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
3397     f_6s8 = EXTRACT_MSB0_SINT (insn, 16, 8, 6);
3398
3399   /* Record the fields for the semantic handler.  */
3400   FLD (f_rn) = f_rn;
3401   FLD (f_6s8) = f_6s8;
3402   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3403   if (UNLIKELY(current_cpu->trace_extract_p))
3404     {
3405       current_cpu->trace_stream 
3406         << "0x" << hex << pc << dec << " (sfmt_add)\t"
3407         << " f_rn:0x" << hex << f_rn << dec
3408         << " f_6s8:0x" << hex << f_6s8 << dec
3409         << endl;
3410     }
3411
3412   /* Record the fields for profiling.  */
3413   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3414     {
3415       FLD (in_rn) = f_rn;
3416       FLD (out_rn) = f_rn;
3417     }
3418 #undef FLD
3419 }
3420
3421 void
3422 mepcore1_extract_sfmt_add3i (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3423     mepcore1_insn_word insn = entire_insn;
3424 #define FLD(f) abuf->fields.sfmt_add3i.f
3425     UINT f_rn;
3426     SI f_7u9a4;
3427
3428     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
3429     f_7u9a4 = ((EXTRACT_MSB0_UINT (insn, 16, 9, 5)) << (2));
3430
3431   /* Record the fields for the semantic handler.  */
3432   FLD (f_7u9a4) = f_7u9a4;
3433   FLD (f_rn) = f_rn;
3434   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3435   if (UNLIKELY(current_cpu->trace_extract_p))
3436     {
3437       current_cpu->trace_stream 
3438         << "0x" << hex << pc << dec << " (sfmt_add3i)\t"
3439         << " f_7u9a4:0x" << hex << f_7u9a4 << dec
3440         << " f_rn:0x" << hex << f_rn << dec
3441         << endl;
3442     }
3443
3444   /* Record the fields for profiling.  */
3445   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3446     {
3447       FLD (in_sp) = 15;
3448       FLD (out_rn) = f_rn;
3449     }
3450 #undef FLD
3451 }
3452
3453 void
3454 mepcore1_extract_sfmt_advck3 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3455     mepcore1_insn_word insn = entire_insn;
3456 #define FLD(f) abuf->fields.sfmt_advck3.f
3457     UINT f_rn;
3458     UINT f_rm;
3459
3460     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
3461     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
3462
3463   /* Record the fields for the semantic handler.  */
3464   FLD (f_rm) = f_rm;
3465   FLD (f_rn) = f_rn;
3466   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
3467   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3468   if (UNLIKELY(current_cpu->trace_extract_p))
3469     {
3470       current_cpu->trace_stream 
3471         << "0x" << hex << pc << dec << " (sfmt_advck3)\t"
3472         << " f_rm:0x" << hex << f_rm << dec
3473         << " f_rn:0x" << hex << f_rn << dec
3474         << endl;
3475     }
3476
3477   /* Record the fields for profiling.  */
3478   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3479     {
3480       FLD (in_rm) = f_rm;
3481       FLD (in_rn) = f_rn;
3482       FLD (out_r0) = 0;
3483     }
3484 #undef FLD
3485 }
3486
3487 void
3488 mepcore1_extract_sfmt_sub (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3489     mepcore1_insn_word insn = entire_insn;
3490 #define FLD(f) abuf->fields.sfmt_fsft.f
3491     UINT f_rn;
3492     UINT f_rm;
3493
3494     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
3495     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
3496
3497   /* Record the fields for the semantic handler.  */
3498   FLD (f_rm) = f_rm;
3499   FLD (f_rn) = f_rn;
3500   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
3501   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3502   if (UNLIKELY(current_cpu->trace_extract_p))
3503     {
3504       current_cpu->trace_stream 
3505         << "0x" << hex << pc << dec << " (sfmt_sub)\t"
3506         << " f_rm:0x" << hex << f_rm << dec
3507         << " f_rn:0x" << hex << f_rn << dec
3508         << endl;
3509     }
3510
3511   /* Record the fields for profiling.  */
3512   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3513     {
3514       FLD (in_rm) = f_rm;
3515       FLD (in_rn) = f_rn;
3516       FLD (out_rn) = f_rn;
3517     }
3518 #undef FLD
3519 }
3520
3521 void
3522 mepcore1_extract_sfmt_slt3i (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3523     mepcore1_insn_word insn = entire_insn;
3524 #define FLD(f) abuf->fields.sfmt_slt3i.f
3525     UINT f_rn;
3526     UINT f_5u8;
3527
3528     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
3529     f_5u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 5);
3530
3531   /* Record the fields for the semantic handler.  */
3532   FLD (f_rn) = f_rn;
3533   FLD (f_5u8) = f_5u8;
3534   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3535   if (UNLIKELY(current_cpu->trace_extract_p))
3536     {
3537       current_cpu->trace_stream 
3538         << "0x" << hex << pc << dec << " (sfmt_slt3i)\t"
3539         << " f_rn:0x" << hex << f_rn << dec
3540         << " f_5u8:0x" << hex << f_5u8 << dec
3541         << endl;
3542     }
3543
3544   /* Record the fields for profiling.  */
3545   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3546     {
3547       FLD (in_rn) = f_rn;
3548       FLD (out_r0) = 0;
3549     }
3550 #undef FLD
3551 }
3552
3553 void
3554 mepcore1_extract_sfmt_sl1ad3 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3555     mepcore1_insn_word insn = entire_insn;
3556 #define FLD(f) abuf->fields.sfmt_advck3.f
3557     UINT f_rn;
3558     UINT f_rm;
3559
3560     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
3561     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
3562
3563   /* Record the fields for the semantic handler.  */
3564   FLD (f_rm) = f_rm;
3565   FLD (f_rn) = f_rn;
3566   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
3567   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3568   if (UNLIKELY(current_cpu->trace_extract_p))
3569     {
3570       current_cpu->trace_stream 
3571         << "0x" << hex << pc << dec << " (sfmt_sl1ad3)\t"
3572         << " f_rm:0x" << hex << f_rm << dec
3573         << " f_rn:0x" << hex << f_rn << dec
3574         << endl;
3575     }
3576
3577   /* Record the fields for profiling.  */
3578   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3579     {
3580       FLD (in_rm) = f_rm;
3581       FLD (in_rn) = f_rn;
3582       FLD (out_r0) = 0;
3583     }
3584 #undef FLD
3585 }
3586
3587 void
3588 mepcore1_extract_sfmt_add3x (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3589     mepcore1_insn_word insn = entire_insn;
3590 #define FLD(f) abuf->fields.sfmt_add3x.f
3591     UINT f_rn;
3592     UINT f_rm;
3593     INT f_16s16;
3594
3595     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
3596     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
3597     f_16s16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
3598
3599   /* Record the fields for the semantic handler.  */
3600   FLD (f_rm) = f_rm;
3601   FLD (f_16s16) = f_16s16;
3602   FLD (f_rn) = f_rn;
3603   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
3604   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3605   if (UNLIKELY(current_cpu->trace_extract_p))
3606     {
3607       current_cpu->trace_stream 
3608         << "0x" << hex << pc << dec << " (sfmt_add3x)\t"
3609         << " f_rm:0x" << hex << f_rm << dec
3610         << " f_16s16:0x" << hex << f_16s16 << dec
3611         << " f_rn:0x" << hex << f_rn << dec
3612         << endl;
3613     }
3614
3615   /* Record the fields for profiling.  */
3616   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3617     {
3618       FLD (in_rm) = f_rm;
3619       FLD (out_rn) = f_rn;
3620     }
3621 #undef FLD
3622 }
3623
3624 void
3625 mepcore1_extract_sfmt_slt3x (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3626     mepcore1_insn_word insn = entire_insn;
3627 #define FLD(f) abuf->fields.sfmt_add3x.f
3628     UINT f_rn;
3629     UINT f_rm;
3630     INT f_16s16;
3631
3632     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
3633     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
3634     f_16s16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
3635
3636   /* Record the fields for the semantic handler.  */
3637   FLD (f_rm) = f_rm;
3638   FLD (f_16s16) = f_16s16;
3639   FLD (f_rn) = f_rn;
3640   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
3641   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3642   if (UNLIKELY(current_cpu->trace_extract_p))
3643     {
3644       current_cpu->trace_stream 
3645         << "0x" << hex << pc << dec << " (sfmt_slt3x)\t"
3646         << " f_rm:0x" << hex << f_rm << dec
3647         << " f_16s16:0x" << hex << f_16s16 << dec
3648         << " f_rn:0x" << hex << f_rn << dec
3649         << endl;
3650     }
3651
3652   /* Record the fields for profiling.  */
3653   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3654     {
3655       FLD (in_rm) = f_rm;
3656       FLD (out_rn) = f_rn;
3657     }
3658 #undef FLD
3659 }
3660
3661 void
3662 mepcore1_extract_sfmt_sltu3x (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3663     mepcore1_insn_word insn = entire_insn;
3664 #define FLD(f) abuf->fields.sfmt_uci.f
3665     UINT f_rn;
3666     UINT f_rm;
3667     UINT f_16u16;
3668
3669     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
3670     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
3671     f_16u16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
3672
3673   /* Record the fields for the semantic handler.  */
3674   FLD (f_rm) = f_rm;
3675   FLD (f_16u16) = f_16u16;
3676   FLD (f_rn) = f_rn;
3677   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
3678   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3679   if (UNLIKELY(current_cpu->trace_extract_p))
3680     {
3681       current_cpu->trace_stream 
3682         << "0x" << hex << pc << dec << " (sfmt_sltu3x)\t"
3683         << " f_rm:0x" << hex << f_rm << dec
3684         << " f_16u16:0x" << hex << f_16u16 << dec
3685         << " f_rn:0x" << hex << f_rn << dec
3686         << endl;
3687     }
3688
3689   /* Record the fields for profiling.  */
3690   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3691     {
3692       FLD (in_rm) = f_rm;
3693       FLD (out_rn) = f_rn;
3694     }
3695 #undef FLD
3696 }
3697
3698 void
3699 mepcore1_extract_sfmt_or3 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3700     mepcore1_insn_word insn = entire_insn;
3701 #define FLD(f) abuf->fields.sfmt_uci.f
3702     UINT f_rn;
3703     UINT f_rm;
3704     UINT f_16u16;
3705
3706     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
3707     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
3708     f_16u16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
3709
3710   /* Record the fields for the semantic handler.  */
3711   FLD (f_rm) = f_rm;
3712   FLD (f_16u16) = f_16u16;
3713   FLD (f_rn) = f_rn;
3714   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
3715   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3716   if (UNLIKELY(current_cpu->trace_extract_p))
3717     {
3718       current_cpu->trace_stream 
3719         << "0x" << hex << pc << dec << " (sfmt_or3)\t"
3720         << " f_rm:0x" << hex << f_rm << dec
3721         << " f_16u16:0x" << hex << f_16u16 << dec
3722         << " f_rn:0x" << hex << f_rn << dec
3723         << endl;
3724     }
3725
3726   /* Record the fields for profiling.  */
3727   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3728     {
3729       FLD (in_rm) = f_rm;
3730       FLD (out_rn) = f_rn;
3731     }
3732 #undef FLD
3733 }
3734
3735 void
3736 mepcore1_extract_sfmt_srai (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3737     mepcore1_insn_word insn = entire_insn;
3738 #define FLD(f) abuf->fields.sfmt_srai.f
3739     UINT f_rn;
3740     UINT f_5u8;
3741
3742     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
3743     f_5u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 5);
3744
3745   /* Record the fields for the semantic handler.  */
3746   FLD (f_rn) = f_rn;
3747   FLD (f_5u8) = f_5u8;
3748   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3749   if (UNLIKELY(current_cpu->trace_extract_p))
3750     {
3751       current_cpu->trace_stream 
3752         << "0x" << hex << pc << dec << " (sfmt_srai)\t"
3753         << " f_rn:0x" << hex << f_rn << dec
3754         << " f_5u8:0x" << hex << f_5u8 << dec
3755         << endl;
3756     }
3757
3758   /* Record the fields for profiling.  */
3759   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3760     {
3761       FLD (in_rn) = f_rn;
3762       FLD (out_rn) = f_rn;
3763     }
3764 #undef FLD
3765 }
3766
3767 void
3768 mepcore1_extract_sfmt_sll3 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3769     mepcore1_insn_word insn = entire_insn;
3770 #define FLD(f) abuf->fields.sfmt_slt3i.f
3771     UINT f_rn;
3772     UINT f_5u8;
3773
3774     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
3775     f_5u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 5);
3776
3777   /* Record the fields for the semantic handler.  */
3778   FLD (f_rn) = f_rn;
3779   FLD (f_5u8) = f_5u8;
3780   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3781   if (UNLIKELY(current_cpu->trace_extract_p))
3782     {
3783       current_cpu->trace_stream 
3784         << "0x" << hex << pc << dec << " (sfmt_sll3)\t"
3785         << " f_rn:0x" << hex << f_rn << dec
3786         << " f_5u8:0x" << hex << f_5u8 << dec
3787         << endl;
3788     }
3789
3790   /* Record the fields for profiling.  */
3791   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3792     {
3793       FLD (in_rn) = f_rn;
3794       FLD (out_r0) = 0;
3795     }
3796 #undef FLD
3797 }
3798
3799 void
3800 mepcore1_extract_sfmt_fsft (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3801     mepcore1_insn_word insn = entire_insn;
3802 #define FLD(f) abuf->fields.sfmt_fsft.f
3803     UINT f_rn;
3804     UINT f_rm;
3805
3806     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
3807     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
3808
3809   /* Record the fields for the semantic handler.  */
3810   FLD (f_rm) = f_rm;
3811   FLD (f_rn) = f_rn;
3812   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
3813   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3814   if (UNLIKELY(current_cpu->trace_extract_p))
3815     {
3816       current_cpu->trace_stream 
3817         << "0x" << hex << pc << dec << " (sfmt_fsft)\t"
3818         << " f_rm:0x" << hex << f_rm << dec
3819         << " f_rn:0x" << hex << f_rn << dec
3820         << endl;
3821     }
3822
3823   /* Record the fields for profiling.  */
3824   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3825     {
3826       FLD (in_rm) = f_rm;
3827       FLD (in_rn) = f_rn;
3828       FLD (in_sar) = 2;
3829       FLD (out_rn) = f_rn;
3830     }
3831 #undef FLD
3832 }
3833
3834 void
3835 mepcore1_extract_sfmt_bra (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3836     mepcore1_insn_word insn = entire_insn;
3837 #define FLD(f) abuf->fields.sfmt_bsr12.f
3838     SI f_12s4a2;
3839
3840     f_12s4a2 = ((((EXTRACT_MSB0_SINT (insn, 16, 4, 11)) << (1))) + (pc));
3841
3842   /* Record the fields for the semantic handler.  */
3843   FLD (f_12s4a2) = f_12s4a2;
3844   if (UNLIKELY(current_cpu->trace_extract_p))
3845     {
3846       current_cpu->trace_stream 
3847         << "0x" << hex << pc << dec << " (sfmt_bra)\t"
3848         << " f_12s4a2:0x" << hex << f_12s4a2 << dec
3849         << endl;
3850     }
3851
3852   /* Record the fields for profiling.  */
3853   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3854     {
3855       FLD (in_opt) = 26;
3856       FLD (in_psw) = 16;
3857     }
3858 #undef FLD
3859 }
3860
3861 void
3862 mepcore1_extract_sfmt_beqz (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3863     mepcore1_insn_word insn = entire_insn;
3864 #define FLD(f) abuf->fields.sfmt_beqz.f
3865     UINT f_rn;
3866     SI f_8s8a2;
3867
3868     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
3869     f_8s8a2 = ((((EXTRACT_MSB0_SINT (insn, 16, 8, 7)) << (1))) + (pc));
3870
3871   /* Record the fields for the semantic handler.  */
3872   FLD (f_8s8a2) = f_8s8a2;
3873   FLD (f_rn) = f_rn;
3874   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3875   if (UNLIKELY(current_cpu->trace_extract_p))
3876     {
3877       current_cpu->trace_stream 
3878         << "0x" << hex << pc << dec << " (sfmt_beqz)\t"
3879         << " f_8s8a2:0x" << hex << f_8s8a2 << dec
3880         << " f_rn:0x" << hex << f_rn << dec
3881         << endl;
3882     }
3883
3884   /* Record the fields for profiling.  */
3885   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3886     {
3887       FLD (in_opt) = 26;
3888       FLD (in_psw) = 16;
3889       FLD (in_rn) = f_rn;
3890     }
3891 #undef FLD
3892 }
3893
3894 void
3895 mepcore1_extract_sfmt_beqi (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3896     mepcore1_insn_word insn = entire_insn;
3897 #define FLD(f) abuf->fields.sfmt_beqi.f
3898     UINT f_rn;
3899     UINT f_4u8;
3900     SI f_17s16a2;
3901
3902     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
3903     f_4u8 = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
3904     f_17s16a2 = ((((EXTRACT_MSB0_SINT (insn, 32, 16, 16)) << (1))) + (pc));
3905
3906   /* Record the fields for the semantic handler.  */
3907   FLD (f_17s16a2) = f_17s16a2;
3908   FLD (f_rn) = f_rn;
3909   FLD (f_4u8) = f_4u8;
3910   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3911   if (UNLIKELY(current_cpu->trace_extract_p))
3912     {
3913       current_cpu->trace_stream 
3914         << "0x" << hex << pc << dec << " (sfmt_beqi)\t"
3915         << " f_17s16a2:0x" << hex << f_17s16a2 << dec
3916         << " f_rn:0x" << hex << f_rn << dec
3917         << " f_4u8:0x" << hex << f_4u8 << dec
3918         << endl;
3919     }
3920
3921   /* Record the fields for profiling.  */
3922   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3923     {
3924       FLD (in_opt) = 26;
3925       FLD (in_psw) = 16;
3926       FLD (in_rn) = f_rn;
3927     }
3928 #undef FLD
3929 }
3930
3931 void
3932 mepcore1_extract_sfmt_beq (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3933     mepcore1_insn_word insn = entire_insn;
3934 #define FLD(f) abuf->fields.sfmt_beq.f
3935     UINT f_rn;
3936     UINT f_rm;
3937     SI f_17s16a2;
3938
3939     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
3940     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
3941     f_17s16a2 = ((((EXTRACT_MSB0_SINT (insn, 32, 16, 16)) << (1))) + (pc));
3942
3943   /* Record the fields for the semantic handler.  */
3944   FLD (f_17s16a2) = f_17s16a2;
3945   FLD (f_rm) = f_rm;
3946   FLD (f_rn) = f_rn;
3947   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
3948   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
3949   if (UNLIKELY(current_cpu->trace_extract_p))
3950     {
3951       current_cpu->trace_stream 
3952         << "0x" << hex << pc << dec << " (sfmt_beq)\t"
3953         << " f_17s16a2:0x" << hex << f_17s16a2 << dec
3954         << " f_rm:0x" << hex << f_rm << dec
3955         << " f_rn:0x" << hex << f_rn << dec
3956         << endl;
3957     }
3958
3959   /* Record the fields for profiling.  */
3960   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3961     {
3962       FLD (in_opt) = 26;
3963       FLD (in_psw) = 16;
3964       FLD (in_rm) = f_rm;
3965       FLD (in_rn) = f_rn;
3966     }
3967 #undef FLD
3968 }
3969
3970 void
3971 mepcore1_extract_sfmt_bsr12 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
3972     mepcore1_insn_word insn = entire_insn;
3973 #define FLD(f) abuf->fields.sfmt_bsr12.f
3974     SI f_12s4a2;
3975
3976     f_12s4a2 = ((((EXTRACT_MSB0_SINT (insn, 16, 4, 11)) << (1))) + (pc));
3977
3978   /* Record the fields for the semantic handler.  */
3979   FLD (f_12s4a2) = f_12s4a2;
3980   if (UNLIKELY(current_cpu->trace_extract_p))
3981     {
3982       current_cpu->trace_stream 
3983         << "0x" << hex << pc << dec << " (sfmt_bsr12)\t"
3984         << " f_12s4a2:0x" << hex << f_12s4a2 << dec
3985         << endl;
3986     }
3987
3988   /* Record the fields for profiling.  */
3989   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
3990     {
3991       FLD (in_opt) = 26;
3992       FLD (in_psw) = 16;
3993       FLD (out_lp) = 1;
3994     }
3995 #undef FLD
3996 }
3997
3998 void
3999 mepcore1_extract_sfmt_bsr24 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4000     mepcore1_insn_word insn = entire_insn;
4001 #define FLD(f) abuf->fields.sfmt_bsr24.f
4002     UINT f_24s5a2n_lo;
4003     INT f_24s5a2n_hi;
4004     INT f_24s5a2n;
4005
4006     f_24s5a2n_lo = EXTRACT_MSB0_UINT (insn, 32, 5, 7);
4007     f_24s5a2n_hi = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
4008   f_24s5a2n = ((((((f_24s5a2n_hi) << (8))) | (((f_24s5a2n_lo) << (1))))) + (pc));
4009
4010   /* Record the fields for the semantic handler.  */
4011   FLD (f_24s5a2n) = f_24s5a2n;
4012   if (UNLIKELY(current_cpu->trace_extract_p))
4013     {
4014       current_cpu->trace_stream 
4015         << "0x" << hex << pc << dec << " (sfmt_bsr24)\t"
4016         << " f_24s5a2n:0x" << hex << f_24s5a2n << dec
4017         << endl;
4018     }
4019
4020   /* Record the fields for profiling.  */
4021   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4022     {
4023       FLD (in_opt) = 26;
4024       FLD (in_psw) = 16;
4025       FLD (out_lp) = 1;
4026     }
4027 #undef FLD
4028 }
4029
4030 void
4031 mepcore1_extract_sfmt_jmp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4032     mepcore1_insn_word insn = entire_insn;
4033 #define FLD(f) abuf->fields.sfmt_jsr.f
4034     UINT f_rm;
4035
4036     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
4037
4038   /* Record the fields for the semantic handler.  */
4039   FLD (f_rm) = f_rm;
4040   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
4041   if (UNLIKELY(current_cpu->trace_extract_p))
4042     {
4043       current_cpu->trace_stream 
4044         << "0x" << hex << pc << dec << " (sfmt_jmp)\t"
4045         << " f_rm:0x" << hex << f_rm << dec
4046         << endl;
4047     }
4048
4049   /* Record the fields for profiling.  */
4050   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4051     {
4052       FLD (in_opt) = 26;
4053       FLD (in_psw) = 16;
4054       FLD (in_rm) = f_rm;
4055     }
4056 #undef FLD
4057 }
4058
4059 void
4060 mepcore1_extract_sfmt_jmp24 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4061     mepcore1_insn_word insn = entire_insn;
4062 #define FLD(f) abuf->fields.sfmt_jmp24.f
4063     UINT f_24u5a2n_lo;
4064     UINT f_24u5a2n_hi;
4065     UINT f_24u5a2n;
4066
4067     f_24u5a2n_lo = EXTRACT_MSB0_UINT (insn, 32, 5, 7);
4068     f_24u5a2n_hi = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
4069   f_24u5a2n = ((((f_24u5a2n_hi) << (8))) | (((f_24u5a2n_lo) << (1))));
4070
4071   /* Record the fields for the semantic handler.  */
4072   FLD (f_24u5a2n) = f_24u5a2n;
4073   if (UNLIKELY(current_cpu->trace_extract_p))
4074     {
4075       current_cpu->trace_stream 
4076         << "0x" << hex << pc << dec << " (sfmt_jmp24)\t"
4077         << " f_24u5a2n:0x" << hex << f_24u5a2n << dec
4078         << endl;
4079     }
4080
4081   /* Record the fields for profiling.  */
4082   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4083     {
4084       FLD (in_opt) = 26;
4085       FLD (in_psw) = 16;
4086     }
4087 #undef FLD
4088 }
4089
4090 void
4091 mepcore1_extract_sfmt_jsr (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4092     mepcore1_insn_word insn = entire_insn;
4093 #define FLD(f) abuf->fields.sfmt_jsr.f
4094     UINT f_rm;
4095
4096     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
4097
4098   /* Record the fields for the semantic handler.  */
4099   FLD (f_rm) = f_rm;
4100   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
4101   if (UNLIKELY(current_cpu->trace_extract_p))
4102     {
4103       current_cpu->trace_stream 
4104         << "0x" << hex << pc << dec << " (sfmt_jsr)\t"
4105         << " f_rm:0x" << hex << f_rm << dec
4106         << endl;
4107     }
4108
4109   /* Record the fields for profiling.  */
4110   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4111     {
4112       FLD (in_opt) = 26;
4113       FLD (in_psw) = 16;
4114       FLD (in_rm) = f_rm;
4115       FLD (out_lp) = 1;
4116     }
4117 #undef FLD
4118 }
4119
4120 void
4121 mepcore1_extract_sfmt_ret (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4122     mepcore1_insn_word insn = entire_insn;
4123 #define FLD(f) abuf->fields.sfmt_ret.f
4124
4125
4126   /* Record the fields for the semantic handler.  */
4127   if (UNLIKELY(current_cpu->trace_extract_p))
4128     {
4129       current_cpu->trace_stream 
4130         << "0x" << hex << pc << dec << " (sfmt_ret)\t"
4131         << endl;
4132     }
4133
4134   /* Record the fields for profiling.  */
4135   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4136     {
4137       FLD (in_lp) = 1;
4138       FLD (in_opt) = 26;
4139       FLD (in_psw) = 16;
4140     }
4141 #undef FLD
4142 }
4143
4144 void
4145 mepcore1_extract_sfmt_repeat (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4146     mepcore1_insn_word insn = entire_insn;
4147 #define FLD(f) abuf->fields.sfmt_repeat.f
4148     UINT f_rn;
4149     SI f_17s16a2;
4150
4151     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
4152     f_17s16a2 = ((((EXTRACT_MSB0_SINT (insn, 32, 16, 16)) << (1))) + (pc));
4153
4154   /* Record the fields for the semantic handler.  */
4155   FLD (f_17s16a2) = f_17s16a2;
4156   FLD (f_rn) = f_rn;
4157   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
4158   if (UNLIKELY(current_cpu->trace_extract_p))
4159     {
4160       current_cpu->trace_stream 
4161         << "0x" << hex << pc << dec << " (sfmt_repeat)\t"
4162         << " f_17s16a2:0x" << hex << f_17s16a2 << dec
4163         << " f_rn:0x" << hex << f_rn << dec
4164         << endl;
4165     }
4166
4167   /* Record the fields for profiling.  */
4168   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4169     {
4170       FLD (in_opt) = 26;
4171       FLD (in_psw) = 16;
4172       FLD (in_rn) = f_rn;
4173       FLD (out_h_csr_SI_4) = 4;
4174       FLD (out_h_csr_SI_5) = 5;
4175       FLD (out_h_csr_SI_6) = 6;
4176     }
4177 #undef FLD
4178 }
4179
4180 void
4181 mepcore1_extract_sfmt_erepeat (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4182     mepcore1_insn_word insn = entire_insn;
4183 #define FLD(f) abuf->fields.sfmt_repeat.f
4184     SI f_17s16a2;
4185
4186     f_17s16a2 = ((((EXTRACT_MSB0_SINT (insn, 32, 16, 16)) << (1))) + (pc));
4187
4188   /* Record the fields for the semantic handler.  */
4189   FLD (f_17s16a2) = f_17s16a2;
4190   if (UNLIKELY(current_cpu->trace_extract_p))
4191     {
4192       current_cpu->trace_stream 
4193         << "0x" << hex << pc << dec << " (sfmt_erepeat)\t"
4194         << " f_17s16a2:0x" << hex << f_17s16a2 << dec
4195         << endl;
4196     }
4197
4198   /* Record the fields for profiling.  */
4199   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4200     {
4201       FLD (in_opt) = 26;
4202       FLD (in_psw) = 16;
4203       FLD (out_h_csr_SI_4) = 4;
4204       FLD (out_h_csr_SI_5) = 5;
4205       FLD (out_h_csr_SI_6) = 6;
4206     }
4207 #undef FLD
4208 }
4209
4210 void
4211 mepcore1_extract_sfmt_stc_lp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4212     mepcore1_insn_word insn = entire_insn;
4213 #define FLD(f) abuf->fields.sfmt_stc_lp.f
4214     UINT f_rn;
4215
4216     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
4217
4218   /* Record the fields for the semantic handler.  */
4219   FLD (f_rn) = f_rn;
4220   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
4221   if (UNLIKELY(current_cpu->trace_extract_p))
4222     {
4223       current_cpu->trace_stream 
4224         << "0x" << hex << pc << dec << " (sfmt_stc_lp)\t"
4225         << " f_rn:0x" << hex << f_rn << dec
4226         << endl;
4227     }
4228
4229   /* Record the fields for profiling.  */
4230   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4231     {
4232       FLD (in_rn) = f_rn;
4233       FLD (out_lp) = 1;
4234     }
4235 #undef FLD
4236 }
4237
4238 void
4239 mepcore1_extract_sfmt_stc_hi (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4240     mepcore1_insn_word insn = entire_insn;
4241 #define FLD(f) abuf->fields.sfmt_maddr.f
4242     UINT f_rn;
4243
4244     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
4245
4246   /* Record the fields for the semantic handler.  */
4247   FLD (f_rn) = f_rn;
4248   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
4249   if (UNLIKELY(current_cpu->trace_extract_p))
4250     {
4251       current_cpu->trace_stream 
4252         << "0x" << hex << pc << dec << " (sfmt_stc_hi)\t"
4253         << " f_rn:0x" << hex << f_rn << dec
4254         << endl;
4255     }
4256
4257   /* Record the fields for profiling.  */
4258   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4259     {
4260       FLD (in_rn) = f_rn;
4261       FLD (out_hi) = 7;
4262     }
4263 #undef FLD
4264 }
4265
4266 void
4267 mepcore1_extract_sfmt_stc_lo (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4268     mepcore1_insn_word insn = entire_insn;
4269 #define FLD(f) abuf->fields.sfmt_maddr.f
4270     UINT f_rn;
4271
4272     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
4273
4274   /* Record the fields for the semantic handler.  */
4275   FLD (f_rn) = f_rn;
4276   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
4277   if (UNLIKELY(current_cpu->trace_extract_p))
4278     {
4279       current_cpu->trace_stream 
4280         << "0x" << hex << pc << dec << " (sfmt_stc_lo)\t"
4281         << " f_rn:0x" << hex << f_rn << dec
4282         << endl;
4283     }
4284
4285   /* Record the fields for profiling.  */
4286   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4287     {
4288       FLD (in_rn) = f_rn;
4289       FLD (out_lo) = 8;
4290     }
4291 #undef FLD
4292 }
4293
4294 void
4295 mepcore1_extract_sfmt_stc (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4296     mepcore1_insn_word insn = entire_insn;
4297 #define FLD(f) abuf->fields.sfmt_stc.f
4298     UINT f_rn;
4299     UINT f_csrn_lo;
4300     UINT f_csrn_hi;
4301     UINT f_csrn;
4302
4303     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
4304     f_csrn_lo = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
4305     f_csrn_hi = EXTRACT_MSB0_UINT (insn, 16, 15, 1);
4306   f_csrn = ((((f_csrn_hi) << (4))) | (f_csrn_lo));
4307
4308   /* Record the fields for the semantic handler.  */
4309   FLD (f_rn) = f_rn;
4310   FLD (f_csrn) = f_csrn;
4311   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
4312   if (UNLIKELY(current_cpu->trace_extract_p))
4313     {
4314       current_cpu->trace_stream 
4315         << "0x" << hex << pc << dec << " (sfmt_stc)\t"
4316         << " f_rn:0x" << hex << f_rn << dec
4317         << " f_csrn:0x" << hex << f_csrn << dec
4318         << endl;
4319     }
4320
4321   /* Record the fields for profiling.  */
4322   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4323     {
4324       FLD (in_rn) = f_rn;
4325       FLD (out_csrn) = f_csrn;
4326     }
4327 #undef FLD
4328 }
4329
4330 void
4331 mepcore1_extract_sfmt_ldc_lp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4332     mepcore1_insn_word insn = entire_insn;
4333 #define FLD(f) abuf->fields.sfmt_ldc_lp.f
4334     UINT f_rn;
4335
4336     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
4337
4338   /* Record the fields for the semantic handler.  */
4339   FLD (f_rn) = f_rn;
4340   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
4341   if (UNLIKELY(current_cpu->trace_extract_p))
4342     {
4343       current_cpu->trace_stream 
4344         << "0x" << hex << pc << dec << " (sfmt_ldc_lp)\t"
4345         << " f_rn:0x" << hex << f_rn << dec
4346         << endl;
4347     }
4348
4349   /* Record the fields for profiling.  */
4350   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4351     {
4352       FLD (in_lp) = 1;
4353       FLD (out_rn) = f_rn;
4354     }
4355 #undef FLD
4356 }
4357
4358 void
4359 mepcore1_extract_sfmt_ldc_hi (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4360     mepcore1_insn_word insn = entire_insn;
4361 #define FLD(f) abuf->fields.sfmt_maddr.f
4362     UINT f_rn;
4363
4364     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
4365
4366   /* Record the fields for the semantic handler.  */
4367   FLD (f_rn) = f_rn;
4368   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
4369   if (UNLIKELY(current_cpu->trace_extract_p))
4370     {
4371       current_cpu->trace_stream 
4372         << "0x" << hex << pc << dec << " (sfmt_ldc_hi)\t"
4373         << " f_rn:0x" << hex << f_rn << dec
4374         << endl;
4375     }
4376
4377   /* Record the fields for profiling.  */
4378   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4379     {
4380       FLD (in_hi) = 7;
4381       FLD (out_rn) = f_rn;
4382     }
4383 #undef FLD
4384 }
4385
4386 void
4387 mepcore1_extract_sfmt_ldc_lo (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4388     mepcore1_insn_word insn = entire_insn;
4389 #define FLD(f) abuf->fields.sfmt_maddr.f
4390     UINT f_rn;
4391
4392     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
4393
4394   /* Record the fields for the semantic handler.  */
4395   FLD (f_rn) = f_rn;
4396   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
4397   if (UNLIKELY(current_cpu->trace_extract_p))
4398     {
4399       current_cpu->trace_stream 
4400         << "0x" << hex << pc << dec << " (sfmt_ldc_lo)\t"
4401         << " f_rn:0x" << hex << f_rn << dec
4402         << endl;
4403     }
4404
4405   /* Record the fields for profiling.  */
4406   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4407     {
4408       FLD (in_lo) = 8;
4409       FLD (out_rn) = f_rn;
4410     }
4411 #undef FLD
4412 }
4413
4414 void
4415 mepcore1_extract_sfmt_ldc (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4416     mepcore1_insn_word insn = entire_insn;
4417 #define FLD(f) abuf->fields.sfmt_ldc.f
4418     UINT f_rn;
4419     UINT f_csrn_lo;
4420     UINT f_csrn_hi;
4421     UINT f_csrn;
4422
4423     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
4424     f_csrn_lo = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
4425     f_csrn_hi = EXTRACT_MSB0_UINT (insn, 16, 15, 1);
4426   f_csrn = ((((f_csrn_hi) << (4))) | (f_csrn_lo));
4427
4428   /* Record the fields for the semantic handler.  */
4429   FLD (f_csrn) = f_csrn;
4430   FLD (f_rn) = f_rn;
4431   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
4432   if (UNLIKELY(current_cpu->trace_extract_p))
4433     {
4434       current_cpu->trace_stream 
4435         << "0x" << hex << pc << dec << " (sfmt_ldc)\t"
4436         << " f_csrn:0x" << hex << f_csrn << dec
4437         << " f_rn:0x" << hex << f_rn << dec
4438         << endl;
4439     }
4440
4441   /* Record the fields for profiling.  */
4442   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4443     {
4444       FLD (in_csrn) = f_csrn;
4445       FLD (in_opt) = 26;
4446       FLD (in_psw) = 16;
4447       FLD (out_rn) = f_rn;
4448     }
4449 #undef FLD
4450 }
4451
4452 void
4453 mepcore1_extract_sfmt_di (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4454     mepcore1_insn_word insn = entire_insn;
4455 #define FLD(f) abuf->fields.sfmt_di.f
4456
4457
4458   /* Record the fields for the semantic handler.  */
4459   if (UNLIKELY(current_cpu->trace_extract_p))
4460     {
4461       current_cpu->trace_stream 
4462         << "0x" << hex << pc << dec << " (sfmt_di)\t"
4463         << endl;
4464     }
4465
4466   /* Record the fields for profiling.  */
4467   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4468     {
4469       FLD (in_psw) = 16;
4470       FLD (out_psw) = 16;
4471     }
4472 #undef FLD
4473 }
4474
4475 void
4476 mepcore1_extract_sfmt_reti (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4477     mepcore1_insn_word insn = entire_insn;
4478 #define FLD(f) abuf->fields.sfmt_reti.f
4479
4480
4481   /* Record the fields for the semantic handler.  */
4482   if (UNLIKELY(current_cpu->trace_extract_p))
4483     {
4484       current_cpu->trace_stream 
4485         << "0x" << hex << pc << dec << " (sfmt_reti)\t"
4486         << endl;
4487     }
4488
4489   /* Record the fields for profiling.  */
4490   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4491     {
4492       FLD (in_epc) = 19;
4493       FLD (in_npc) = 23;
4494       FLD (in_opt) = 26;
4495       FLD (in_psw) = 16;
4496     }
4497 #undef FLD
4498 }
4499
4500 void
4501 mepcore1_extract_sfmt_halt (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4502     mepcore1_insn_word insn = entire_insn;
4503 #define FLD(f) abuf->fields.sfmt_di.f
4504
4505
4506   /* Record the fields for the semantic handler.  */
4507   if (UNLIKELY(current_cpu->trace_extract_p))
4508     {
4509       current_cpu->trace_stream 
4510         << "0x" << hex << pc << dec << " (sfmt_halt)\t"
4511         << endl;
4512     }
4513
4514   /* Record the fields for profiling.  */
4515   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4516     {
4517       FLD (in_psw) = 16;
4518     }
4519 #undef FLD
4520 }
4521
4522 void
4523 mepcore1_extract_sfmt_sleep (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4524     mepcore1_insn_word insn = entire_insn;
4525 #define FLD(f) abuf->fields.fmt_empty.f
4526
4527
4528   /* Record the fields for the semantic handler.  */
4529   if (UNLIKELY(current_cpu->trace_extract_p))
4530     {
4531       current_cpu->trace_stream 
4532         << "0x" << hex << pc << dec << " (sfmt_sleep)\t"
4533         << endl;
4534     }
4535
4536 #undef FLD
4537 }
4538
4539 void
4540 mepcore1_extract_sfmt_swi (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4541     mepcore1_insn_word insn = entire_insn;
4542 #define FLD(f) abuf->fields.sfmt_swi.f
4543     UINT f_2u10;
4544
4545     f_2u10 = EXTRACT_MSB0_UINT (insn, 16, 10, 2);
4546
4547   /* Record the fields for the semantic handler.  */
4548   FLD (f_2u10) = f_2u10;
4549   if (UNLIKELY(current_cpu->trace_extract_p))
4550     {
4551       current_cpu->trace_stream 
4552         << "0x" << hex << pc << dec << " (sfmt_swi)\t"
4553         << " f_2u10:0x" << hex << f_2u10 << dec
4554         << endl;
4555     }
4556
4557   /* Record the fields for profiling.  */
4558   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4559     {
4560       FLD (in_exc) = 20;
4561       FLD (out_exc) = 20;
4562     }
4563 #undef FLD
4564 }
4565
4566 void
4567 mepcore1_extract_sfmt_break (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4568     mepcore1_insn_word insn = entire_insn;
4569 #define FLD(f) abuf->fields.fmt_empty.f
4570
4571
4572   /* Record the fields for the semantic handler.  */
4573   if (UNLIKELY(current_cpu->trace_extract_p))
4574     {
4575       current_cpu->trace_stream 
4576         << "0x" << hex << pc << dec << " (sfmt_break)\t"
4577         << endl;
4578     }
4579
4580   /* Record the fields for profiling.  */
4581   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4582     {
4583     }
4584 #undef FLD
4585 }
4586
4587 void
4588 mepcore1_extract_sfmt_stcb (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4589     mepcore1_insn_word insn = entire_insn;
4590 #define FLD(f) abuf->fields.sfmt_uci.f
4591     UINT f_rn;
4592     UINT f_16u16;
4593
4594     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
4595     f_16u16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
4596
4597   /* Record the fields for the semantic handler.  */
4598   FLD (f_rn) = f_rn;
4599   FLD (f_16u16) = f_16u16;
4600   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
4601   if (UNLIKELY(current_cpu->trace_extract_p))
4602     {
4603       current_cpu->trace_stream 
4604         << "0x" << hex << pc << dec << " (sfmt_stcb)\t"
4605         << " f_rn:0x" << hex << f_rn << dec
4606         << " f_16u16:0x" << hex << f_16u16 << dec
4607         << endl;
4608     }
4609
4610   /* Record the fields for profiling.  */
4611   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4612     {
4613       FLD (in_rn) = f_rn;
4614     }
4615 #undef FLD
4616 }
4617
4618 void
4619 mepcore1_extract_sfmt_bsetm (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4620     mepcore1_insn_word insn = entire_insn;
4621 #define FLD(f) abuf->fields.sfmt_btstm.f
4622     UINT f_3u5;
4623     UINT f_rm;
4624
4625     f_3u5 = EXTRACT_MSB0_UINT (insn, 16, 5, 3);
4626     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
4627
4628   /* Record the fields for the semantic handler.  */
4629   FLD (f_rm) = f_rm;
4630   FLD (f_3u5) = f_3u5;
4631   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
4632   if (UNLIKELY(current_cpu->trace_extract_p))
4633     {
4634       current_cpu->trace_stream 
4635         << "0x" << hex << pc << dec << " (sfmt_bsetm)\t"
4636         << " f_rm:0x" << hex << f_rm << dec
4637         << " f_3u5:0x" << hex << f_3u5 << dec
4638         << endl;
4639     }
4640
4641   /* Record the fields for profiling.  */
4642   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4643     {
4644       FLD (in_rma) = f_rm;
4645     }
4646 #undef FLD
4647 }
4648
4649 void
4650 mepcore1_extract_sfmt_btstm (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4651     mepcore1_insn_word insn = entire_insn;
4652 #define FLD(f) abuf->fields.sfmt_btstm.f
4653     UINT f_3u5;
4654     UINT f_rm;
4655
4656     f_3u5 = EXTRACT_MSB0_UINT (insn, 16, 5, 3);
4657     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
4658
4659   /* Record the fields for the semantic handler.  */
4660   FLD (f_rm) = f_rm;
4661   FLD (f_3u5) = f_3u5;
4662   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
4663   if (UNLIKELY(current_cpu->trace_extract_p))
4664     {
4665       current_cpu->trace_stream 
4666         << "0x" << hex << pc << dec << " (sfmt_btstm)\t"
4667         << " f_rm:0x" << hex << f_rm << dec
4668         << " f_3u5:0x" << hex << f_3u5 << dec
4669         << endl;
4670     }
4671
4672   /* Record the fields for profiling.  */
4673   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4674     {
4675       FLD (in_rma) = f_rm;
4676       FLD (out_r0) = 0;
4677     }
4678 #undef FLD
4679 }
4680
4681 void
4682 mepcore1_extract_sfmt_tas (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4683     mepcore1_insn_word insn = entire_insn;
4684 #define FLD(f) abuf->fields.sfmt_ldcb_r.f
4685     UINT f_rn;
4686     UINT f_rm;
4687
4688     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
4689     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
4690
4691   /* Record the fields for the semantic handler.  */
4692   FLD (f_rm) = f_rm;
4693   FLD (f_rn) = f_rn;
4694   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
4695   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
4696   if (UNLIKELY(current_cpu->trace_extract_p))
4697     {
4698       current_cpu->trace_stream 
4699         << "0x" << hex << pc << dec << " (sfmt_tas)\t"
4700         << " f_rm:0x" << hex << f_rm << dec
4701         << " f_rn:0x" << hex << f_rn << dec
4702         << endl;
4703     }
4704
4705   /* Record the fields for profiling.  */
4706   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4707     {
4708       FLD (in_rma) = f_rm;
4709       FLD (out_rn) = f_rn;
4710     }
4711 #undef FLD
4712 }
4713
4714 void
4715 mepcore1_extract_sfmt_mul (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4716     mepcore1_insn_word insn = entire_insn;
4717 #define FLD(f) abuf->fields.sfmt_maddr.f
4718     UINT f_rn;
4719     UINT f_rm;
4720
4721     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
4722     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
4723
4724   /* Record the fields for the semantic handler.  */
4725   FLD (f_rm) = f_rm;
4726   FLD (f_rn) = f_rn;
4727   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
4728   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
4729   if (UNLIKELY(current_cpu->trace_extract_p))
4730     {
4731       current_cpu->trace_stream 
4732         << "0x" << hex << pc << dec << " (sfmt_mul)\t"
4733         << " f_rm:0x" << hex << f_rm << dec
4734         << " f_rn:0x" << hex << f_rn << dec
4735         << endl;
4736     }
4737
4738   /* Record the fields for profiling.  */
4739   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4740     {
4741       FLD (in_rm) = f_rm;
4742       FLD (in_rn) = f_rn;
4743       FLD (out_hi) = 7;
4744       FLD (out_lo) = 8;
4745     }
4746 #undef FLD
4747 }
4748
4749 void
4750 mepcore1_extract_sfmt_mulr (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4751     mepcore1_insn_word insn = entire_insn;
4752 #define FLD(f) abuf->fields.sfmt_maddr.f
4753     UINT f_rn;
4754     UINT f_rm;
4755
4756     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
4757     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
4758
4759   /* Record the fields for the semantic handler.  */
4760   FLD (f_rm) = f_rm;
4761   FLD (f_rn) = f_rn;
4762   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
4763   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
4764   if (UNLIKELY(current_cpu->trace_extract_p))
4765     {
4766       current_cpu->trace_stream 
4767         << "0x" << hex << pc << dec << " (sfmt_mulr)\t"
4768         << " f_rm:0x" << hex << f_rm << dec
4769         << " f_rn:0x" << hex << f_rn << dec
4770         << endl;
4771     }
4772
4773   /* Record the fields for profiling.  */
4774   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4775     {
4776       FLD (in_rm) = f_rm;
4777       FLD (in_rn) = f_rn;
4778       FLD (out_hi) = 7;
4779       FLD (out_lo) = 8;
4780       FLD (out_rn) = f_rn;
4781     }
4782 #undef FLD
4783 }
4784
4785 void
4786 mepcore1_extract_sfmt_madd (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4787     mepcore1_insn_word insn = entire_insn;
4788 #define FLD(f) abuf->fields.sfmt_maddr.f
4789     UINT f_rn;
4790     UINT f_rm;
4791
4792     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
4793     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
4794
4795   /* Record the fields for the semantic handler.  */
4796   FLD (f_rm) = f_rm;
4797   FLD (f_rn) = f_rn;
4798   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
4799   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
4800   if (UNLIKELY(current_cpu->trace_extract_p))
4801     {
4802       current_cpu->trace_stream 
4803         << "0x" << hex << pc << dec << " (sfmt_madd)\t"
4804         << " f_rm:0x" << hex << f_rm << dec
4805         << " f_rn:0x" << hex << f_rn << dec
4806         << endl;
4807     }
4808
4809   /* Record the fields for profiling.  */
4810   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4811     {
4812       FLD (in_hi) = 7;
4813       FLD (in_lo) = 8;
4814       FLD (in_rm) = f_rm;
4815       FLD (in_rn) = f_rn;
4816       FLD (out_hi) = 7;
4817       FLD (out_lo) = 8;
4818     }
4819 #undef FLD
4820 }
4821
4822 void
4823 mepcore1_extract_sfmt_maddr (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4824     mepcore1_insn_word insn = entire_insn;
4825 #define FLD(f) abuf->fields.sfmt_maddr.f
4826     UINT f_rn;
4827     UINT f_rm;
4828
4829     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
4830     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
4831
4832   /* Record the fields for the semantic handler.  */
4833   FLD (f_rm) = f_rm;
4834   FLD (f_rn) = f_rn;
4835   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
4836   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
4837   if (UNLIKELY(current_cpu->trace_extract_p))
4838     {
4839       current_cpu->trace_stream 
4840         << "0x" << hex << pc << dec << " (sfmt_maddr)\t"
4841         << " f_rm:0x" << hex << f_rm << dec
4842         << " f_rn:0x" << hex << f_rn << dec
4843         << endl;
4844     }
4845
4846   /* Record the fields for profiling.  */
4847   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4848     {
4849       FLD (in_hi) = 7;
4850       FLD (in_lo) = 8;
4851       FLD (in_rm) = f_rm;
4852       FLD (in_rn) = f_rn;
4853       FLD (out_hi) = 7;
4854       FLD (out_lo) = 8;
4855       FLD (out_rn) = f_rn;
4856     }
4857 #undef FLD
4858 }
4859
4860 void
4861 mepcore1_extract_sfmt_div (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4862     mepcore1_insn_word insn = entire_insn;
4863 #define FLD(f) abuf->fields.sfmt_maddr.f
4864     UINT f_rn;
4865     UINT f_rm;
4866
4867     f_rn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
4868     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
4869
4870   /* Record the fields for the semantic handler.  */
4871   FLD (f_rm) = f_rm;
4872   FLD (f_rn) = f_rn;
4873   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
4874   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
4875   if (UNLIKELY(current_cpu->trace_extract_p))
4876     {
4877       current_cpu->trace_stream 
4878         << "0x" << hex << pc << dec << " (sfmt_div)\t"
4879         << " f_rm:0x" << hex << f_rm << dec
4880         << " f_rn:0x" << hex << f_rn << dec
4881         << endl;
4882     }
4883
4884   /* Record the fields for profiling.  */
4885   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4886     {
4887       FLD (in_rm) = f_rm;
4888       FLD (in_rn) = f_rn;
4889       FLD (out_hi) = 7;
4890       FLD (out_lo) = 8;
4891     }
4892 #undef FLD
4893 }
4894
4895 void
4896 mepcore1_extract_sfmt_dret (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4897     mepcore1_insn_word insn = entire_insn;
4898 #define FLD(f) abuf->fields.sfmt_dret.f
4899
4900
4901   /* Record the fields for the semantic handler.  */
4902   if (UNLIKELY(current_cpu->trace_extract_p))
4903     {
4904       current_cpu->trace_stream 
4905         << "0x" << hex << pc << dec << " (sfmt_dret)\t"
4906         << endl;
4907     }
4908
4909   /* Record the fields for profiling.  */
4910   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4911     {
4912       FLD (in_dbg) = 24;
4913       FLD (in_depc) = 25;
4914       FLD (out_dbg) = 24;
4915     }
4916 #undef FLD
4917 }
4918
4919 void
4920 mepcore1_extract_sfmt_dbreak (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4921     mepcore1_insn_word insn = entire_insn;
4922 #define FLD(f) abuf->fields.sfmt_dret.f
4923
4924
4925   /* Record the fields for the semantic handler.  */
4926   if (UNLIKELY(current_cpu->trace_extract_p))
4927     {
4928       current_cpu->trace_stream 
4929         << "0x" << hex << pc << dec << " (sfmt_dbreak)\t"
4930         << endl;
4931     }
4932
4933   /* Record the fields for profiling.  */
4934   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4935     {
4936       FLD (in_dbg) = 24;
4937       FLD (out_dbg) = 24;
4938     }
4939 #undef FLD
4940 }
4941
4942 void
4943 mepcore1_extract_sfmt_ldz (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4944     mepcore1_insn_word insn = entire_insn;
4945 #define FLD(f) abuf->fields.sfmt_add3x.f
4946     UINT f_rn;
4947     UINT f_rm;
4948
4949     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
4950     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
4951
4952   /* Record the fields for the semantic handler.  */
4953   FLD (f_rm) = f_rm;
4954   FLD (f_rn) = f_rn;
4955   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
4956   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
4957   if (UNLIKELY(current_cpu->trace_extract_p))
4958     {
4959       current_cpu->trace_stream 
4960         << "0x" << hex << pc << dec << " (sfmt_ldz)\t"
4961         << " f_rm:0x" << hex << f_rm << dec
4962         << " f_rn:0x" << hex << f_rn << dec
4963         << endl;
4964     }
4965
4966   /* Record the fields for profiling.  */
4967   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
4968     {
4969       FLD (in_rm) = f_rm;
4970       FLD (out_rn) = f_rn;
4971     }
4972 #undef FLD
4973 }
4974
4975 void
4976 mepcore1_extract_sfmt_abs (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
4977     mepcore1_insn_word insn = entire_insn;
4978 #define FLD(f) abuf->fields.sfmt_fsft.f
4979     UINT f_rn;
4980     UINT f_rm;
4981
4982     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
4983     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
4984
4985   /* Record the fields for the semantic handler.  */
4986   FLD (f_rm) = f_rm;
4987   FLD (f_rn) = f_rn;
4988   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
4989   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
4990   if (UNLIKELY(current_cpu->trace_extract_p))
4991     {
4992       current_cpu->trace_stream 
4993         << "0x" << hex << pc << dec << " (sfmt_abs)\t"
4994         << " f_rm:0x" << hex << f_rm << dec
4995         << " f_rn:0x" << hex << f_rn << dec
4996         << endl;
4997     }
4998
4999   /* Record the fields for profiling.  */
5000   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5001     {
5002       FLD (in_rm) = f_rm;
5003       FLD (in_rn) = f_rn;
5004       FLD (out_rn) = f_rn;
5005     }
5006 #undef FLD
5007 }
5008
5009 void
5010 mepcore1_extract_sfmt_min (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5011     mepcore1_insn_word insn = entire_insn;
5012 #define FLD(f) abuf->fields.sfmt_fsft.f
5013     UINT f_rn;
5014     UINT f_rm;
5015
5016     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5017     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5018
5019   /* Record the fields for the semantic handler.  */
5020   FLD (f_rm) = f_rm;
5021   FLD (f_rn) = f_rn;
5022   FLD (i_rm) = & current_cpu->hardware.h_gpr[f_rm];
5023   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
5024   if (UNLIKELY(current_cpu->trace_extract_p))
5025     {
5026       current_cpu->trace_stream 
5027         << "0x" << hex << pc << dec << " (sfmt_min)\t"
5028         << " f_rm:0x" << hex << f_rm << dec
5029         << " f_rn:0x" << hex << f_rn << dec
5030         << endl;
5031     }
5032
5033   /* Record the fields for profiling.  */
5034   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5035     {
5036       FLD (in_rm) = f_rm;
5037       FLD (in_rn) = f_rn;
5038       FLD (out_rn) = f_rn;
5039     }
5040 #undef FLD
5041 }
5042
5043 void
5044 mepcore1_extract_sfmt_clip (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5045     mepcore1_insn_word insn = entire_insn;
5046 #define FLD(f) abuf->fields.sfmt_clip.f
5047     UINT f_rn;
5048     UINT f_5u24;
5049
5050     f_rn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5051     f_5u24 = EXTRACT_MSB0_UINT (insn, 32, 24, 5);
5052
5053   /* Record the fields for the semantic handler.  */
5054   FLD (f_5u24) = f_5u24;
5055   FLD (f_rn) = f_rn;
5056   FLD (i_rn) = & current_cpu->hardware.h_gpr[f_rn];
5057   if (UNLIKELY(current_cpu->trace_extract_p))
5058     {
5059       current_cpu->trace_stream 
5060         << "0x" << hex << pc << dec << " (sfmt_clip)\t"
5061         << " f_5u24:0x" << hex << f_5u24 << dec
5062         << " f_rn:0x" << hex << f_rn << dec
5063         << endl;
5064     }
5065
5066   /* Record the fields for profiling.  */
5067   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5068     {
5069       FLD (in_rn) = f_rn;
5070       FLD (out_rn) = f_rn;
5071     }
5072 #undef FLD
5073 }
5074
5075 void
5076 mepcore1_extract_sfmt_swcp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5077     mepcore1_insn_word insn = entire_insn;
5078 #define FLD(f) abuf->fields.sfmt_swcp16.f
5079     UINT f_crn;
5080     UINT f_rm;
5081
5082     f_crn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
5083     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
5084
5085   /* Record the fields for the semantic handler.  */
5086   FLD (f_crn) = f_crn;
5087   FLD (f_rm) = f_rm;
5088   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5089   if (UNLIKELY(current_cpu->trace_extract_p))
5090     {
5091       current_cpu->trace_stream 
5092         << "0x" << hex << pc << dec << " (sfmt_swcp)\t"
5093         << " f_crn:0x" << hex << f_crn << dec
5094         << " f_rm:0x" << hex << f_rm << dec
5095         << endl;
5096     }
5097
5098   /* Record the fields for profiling.  */
5099   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5100     {
5101       FLD (in_rma) = f_rm;
5102     }
5103 #undef FLD
5104 }
5105
5106 void
5107 mepcore1_extract_sfmt_lwcp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5108     mepcore1_insn_word insn = entire_insn;
5109 #define FLD(f) abuf->fields.sfmt_swcp16.f
5110     UINT f_crn;
5111     UINT f_rm;
5112
5113     f_crn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
5114     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
5115
5116   /* Record the fields for the semantic handler.  */
5117   FLD (f_rm) = f_rm;
5118   FLD (f_crn) = f_crn;
5119   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5120   if (UNLIKELY(current_cpu->trace_extract_p))
5121     {
5122       current_cpu->trace_stream 
5123         << "0x" << hex << pc << dec << " (sfmt_lwcp)\t"
5124         << " f_rm:0x" << hex << f_rm << dec
5125         << " f_crn:0x" << hex << f_crn << dec
5126         << endl;
5127     }
5128
5129   /* Record the fields for profiling.  */
5130   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5131     {
5132       FLD (in_rma) = f_rm;
5133     }
5134 #undef FLD
5135 }
5136
5137 void
5138 mepcore1_extract_sfmt_smcp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5139     mepcore1_insn_word insn = entire_insn;
5140 #define FLD(f) abuf->fields.sfmt_swcp16.f
5141     UINT f_crn;
5142     UINT f_rm;
5143
5144     f_crn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
5145     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
5146
5147   /* Record the fields for the semantic handler.  */
5148   FLD (f_crn) = f_crn;
5149   FLD (f_rm) = f_rm;
5150   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5151   if (UNLIKELY(current_cpu->trace_extract_p))
5152     {
5153       current_cpu->trace_stream 
5154         << "0x" << hex << pc << dec << " (sfmt_smcp)\t"
5155         << " f_crn:0x" << hex << f_crn << dec
5156         << " f_rm:0x" << hex << f_rm << dec
5157         << endl;
5158     }
5159
5160   /* Record the fields for profiling.  */
5161   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5162     {
5163       FLD (in_rma) = f_rm;
5164     }
5165 #undef FLD
5166 }
5167
5168 void
5169 mepcore1_extract_sfmt_lmcp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5170     mepcore1_insn_word insn = entire_insn;
5171 #define FLD(f) abuf->fields.sfmt_swcp16.f
5172     UINT f_crn;
5173     UINT f_rm;
5174
5175     f_crn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
5176     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
5177
5178   /* Record the fields for the semantic handler.  */
5179   FLD (f_rm) = f_rm;
5180   FLD (f_crn) = f_crn;
5181   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5182   if (UNLIKELY(current_cpu->trace_extract_p))
5183     {
5184       current_cpu->trace_stream 
5185         << "0x" << hex << pc << dec << " (sfmt_lmcp)\t"
5186         << " f_rm:0x" << hex << f_rm << dec
5187         << " f_crn:0x" << hex << f_crn << dec
5188         << endl;
5189     }
5190
5191   /* Record the fields for profiling.  */
5192   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5193     {
5194       FLD (in_rma) = f_rm;
5195     }
5196 #undef FLD
5197 }
5198
5199 void
5200 mepcore1_extract_sfmt_swcpi (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5201     mepcore1_insn_word insn = entire_insn;
5202 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5203     UINT f_crn;
5204     UINT f_rm;
5205
5206     f_crn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
5207     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
5208
5209   /* Record the fields for the semantic handler.  */
5210   FLD (f_crn) = f_crn;
5211   FLD (f_rm) = f_rm;
5212   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5213   if (UNLIKELY(current_cpu->trace_extract_p))
5214     {
5215       current_cpu->trace_stream 
5216         << "0x" << hex << pc << dec << " (sfmt_swcpi)\t"
5217         << " f_crn:0x" << hex << f_crn << dec
5218         << " f_rm:0x" << hex << f_rm << dec
5219         << endl;
5220     }
5221
5222   /* Record the fields for profiling.  */
5223   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5224     {
5225       FLD (in_rma) = f_rm;
5226       FLD (out_rma) = f_rm;
5227     }
5228 #undef FLD
5229 }
5230
5231 void
5232 mepcore1_extract_sfmt_lwcpi (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5233     mepcore1_insn_word insn = entire_insn;
5234 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5235     UINT f_crn;
5236     UINT f_rm;
5237
5238     f_crn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
5239     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
5240
5241   /* Record the fields for the semantic handler.  */
5242   FLD (f_rm) = f_rm;
5243   FLD (f_crn) = f_crn;
5244   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5245   if (UNLIKELY(current_cpu->trace_extract_p))
5246     {
5247       current_cpu->trace_stream 
5248         << "0x" << hex << pc << dec << " (sfmt_lwcpi)\t"
5249         << " f_rm:0x" << hex << f_rm << dec
5250         << " f_crn:0x" << hex << f_crn << dec
5251         << endl;
5252     }
5253
5254   /* Record the fields for profiling.  */
5255   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5256     {
5257       FLD (in_rma) = f_rm;
5258       FLD (out_rma) = f_rm;
5259     }
5260 #undef FLD
5261 }
5262
5263 void
5264 mepcore1_extract_sfmt_smcpi (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5265     mepcore1_insn_word insn = entire_insn;
5266 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5267     UINT f_crn;
5268     UINT f_rm;
5269
5270     f_crn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
5271     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
5272
5273   /* Record the fields for the semantic handler.  */
5274   FLD (f_crn) = f_crn;
5275   FLD (f_rm) = f_rm;
5276   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5277   if (UNLIKELY(current_cpu->trace_extract_p))
5278     {
5279       current_cpu->trace_stream 
5280         << "0x" << hex << pc << dec << " (sfmt_smcpi)\t"
5281         << " f_crn:0x" << hex << f_crn << dec
5282         << " f_rm:0x" << hex << f_rm << dec
5283         << endl;
5284     }
5285
5286   /* Record the fields for profiling.  */
5287   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5288     {
5289       FLD (in_rma) = f_rm;
5290       FLD (out_rma) = f_rm;
5291     }
5292 #undef FLD
5293 }
5294
5295 void
5296 mepcore1_extract_sfmt_lmcpi (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5297     mepcore1_insn_word insn = entire_insn;
5298 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5299     UINT f_crn;
5300     UINT f_rm;
5301
5302     f_crn = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
5303     f_rm = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
5304
5305   /* Record the fields for the semantic handler.  */
5306   FLD (f_rm) = f_rm;
5307   FLD (f_crn) = f_crn;
5308   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5309   if (UNLIKELY(current_cpu->trace_extract_p))
5310     {
5311       current_cpu->trace_stream 
5312         << "0x" << hex << pc << dec << " (sfmt_lmcpi)\t"
5313         << " f_rm:0x" << hex << f_rm << dec
5314         << " f_crn:0x" << hex << f_crn << dec
5315         << endl;
5316     }
5317
5318   /* Record the fields for profiling.  */
5319   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5320     {
5321       FLD (in_rma) = f_rm;
5322       FLD (out_rma) = f_rm;
5323     }
5324 #undef FLD
5325 }
5326
5327 void
5328 mepcore1_extract_sfmt_swcp16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5329     mepcore1_insn_word insn = entire_insn;
5330 #define FLD(f) abuf->fields.sfmt_swcp16.f
5331     UINT f_crn;
5332     UINT f_rm;
5333     INT f_16s16;
5334
5335     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5336     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5337     f_16s16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
5338
5339   /* Record the fields for the semantic handler.  */
5340   FLD (f_crn) = f_crn;
5341   FLD (f_rm) = f_rm;
5342   FLD (f_16s16) = f_16s16;
5343   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5344   if (UNLIKELY(current_cpu->trace_extract_p))
5345     {
5346       current_cpu->trace_stream 
5347         << "0x" << hex << pc << dec << " (sfmt_swcp16)\t"
5348         << " f_crn:0x" << hex << f_crn << dec
5349         << " f_rm:0x" << hex << f_rm << dec
5350         << " f_16s16:0x" << hex << f_16s16 << dec
5351         << endl;
5352     }
5353
5354   /* Record the fields for profiling.  */
5355   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5356     {
5357       FLD (in_rma) = f_rm;
5358     }
5359 #undef FLD
5360 }
5361
5362 void
5363 mepcore1_extract_sfmt_lwcp16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5364     mepcore1_insn_word insn = entire_insn;
5365 #define FLD(f) abuf->fields.sfmt_swcp16.f
5366     UINT f_crn;
5367     UINT f_rm;
5368     INT f_16s16;
5369
5370     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5371     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5372     f_16s16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
5373
5374   /* Record the fields for the semantic handler.  */
5375   FLD (f_rm) = f_rm;
5376   FLD (f_16s16) = f_16s16;
5377   FLD (f_crn) = f_crn;
5378   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5379   if (UNLIKELY(current_cpu->trace_extract_p))
5380     {
5381       current_cpu->trace_stream 
5382         << "0x" << hex << pc << dec << " (sfmt_lwcp16)\t"
5383         << " f_rm:0x" << hex << f_rm << dec
5384         << " f_16s16:0x" << hex << f_16s16 << dec
5385         << " f_crn:0x" << hex << f_crn << dec
5386         << endl;
5387     }
5388
5389   /* Record the fields for profiling.  */
5390   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5391     {
5392       FLD (in_rma) = f_rm;
5393     }
5394 #undef FLD
5395 }
5396
5397 void
5398 mepcore1_extract_sfmt_smcp16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5399     mepcore1_insn_word insn = entire_insn;
5400 #define FLD(f) abuf->fields.sfmt_swcp16.f
5401     UINT f_crn;
5402     UINT f_rm;
5403     INT f_16s16;
5404
5405     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5406     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5407     f_16s16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
5408
5409   /* Record the fields for the semantic handler.  */
5410   FLD (f_crn) = f_crn;
5411   FLD (f_rm) = f_rm;
5412   FLD (f_16s16) = f_16s16;
5413   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5414   if (UNLIKELY(current_cpu->trace_extract_p))
5415     {
5416       current_cpu->trace_stream 
5417         << "0x" << hex << pc << dec << " (sfmt_smcp16)\t"
5418         << " f_crn:0x" << hex << f_crn << dec
5419         << " f_rm:0x" << hex << f_rm << dec
5420         << " f_16s16:0x" << hex << f_16s16 << dec
5421         << endl;
5422     }
5423
5424   /* Record the fields for profiling.  */
5425   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5426     {
5427       FLD (in_rma) = f_rm;
5428     }
5429 #undef FLD
5430 }
5431
5432 void
5433 mepcore1_extract_sfmt_lmcp16 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5434     mepcore1_insn_word insn = entire_insn;
5435 #define FLD(f) abuf->fields.sfmt_swcp16.f
5436     UINT f_crn;
5437     UINT f_rm;
5438     INT f_16s16;
5439
5440     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5441     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5442     f_16s16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
5443
5444   /* Record the fields for the semantic handler.  */
5445   FLD (f_rm) = f_rm;
5446   FLD (f_16s16) = f_16s16;
5447   FLD (f_crn) = f_crn;
5448   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5449   if (UNLIKELY(current_cpu->trace_extract_p))
5450     {
5451       current_cpu->trace_stream 
5452         << "0x" << hex << pc << dec << " (sfmt_lmcp16)\t"
5453         << " f_rm:0x" << hex << f_rm << dec
5454         << " f_16s16:0x" << hex << f_16s16 << dec
5455         << " f_crn:0x" << hex << f_crn << dec
5456         << endl;
5457     }
5458
5459   /* Record the fields for profiling.  */
5460   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5461     {
5462       FLD (in_rma) = f_rm;
5463     }
5464 #undef FLD
5465 }
5466
5467 void
5468 mepcore1_extract_sfmt_sbcpa (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5469     mepcore1_insn_word insn = entire_insn;
5470 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5471     UINT f_crn;
5472     UINT f_rm;
5473     SI f_cdisp10;
5474
5475     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5476     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5477     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
5478
5479   /* Record the fields for the semantic handler.  */
5480   FLD (f_cdisp10) = f_cdisp10;
5481   FLD (f_crn) = f_crn;
5482   FLD (f_rm) = f_rm;
5483   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5484   if (UNLIKELY(current_cpu->trace_extract_p))
5485     {
5486       current_cpu->trace_stream 
5487         << "0x" << hex << pc << dec << " (sfmt_sbcpa)\t"
5488         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
5489         << " f_crn:0x" << hex << f_crn << dec
5490         << " f_rm:0x" << hex << f_rm << dec
5491         << endl;
5492     }
5493
5494   /* Record the fields for profiling.  */
5495   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5496     {
5497       FLD (in_rma) = f_rm;
5498       FLD (out_rma) = f_rm;
5499     }
5500 #undef FLD
5501 }
5502
5503 void
5504 mepcore1_extract_sfmt_shcpa (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5505     mepcore1_insn_word insn = entire_insn;
5506 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5507     UINT f_crn;
5508     UINT f_rm;
5509     SI f_cdisp10;
5510
5511     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5512     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5513     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
5514
5515   /* Record the fields for the semantic handler.  */
5516   FLD (f_cdisp10) = f_cdisp10;
5517   FLD (f_crn) = f_crn;
5518   FLD (f_rm) = f_rm;
5519   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5520   if (UNLIKELY(current_cpu->trace_extract_p))
5521     {
5522       current_cpu->trace_stream 
5523         << "0x" << hex << pc << dec << " (sfmt_shcpa)\t"
5524         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
5525         << " f_crn:0x" << hex << f_crn << dec
5526         << " f_rm:0x" << hex << f_rm << dec
5527         << endl;
5528     }
5529
5530   /* Record the fields for profiling.  */
5531   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5532     {
5533       FLD (in_rma) = f_rm;
5534       FLD (out_rma) = f_rm;
5535     }
5536 #undef FLD
5537 }
5538
5539 void
5540 mepcore1_extract_sfmt_swcpa (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5541     mepcore1_insn_word insn = entire_insn;
5542 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5543     UINT f_crn;
5544     UINT f_rm;
5545     SI f_cdisp10;
5546
5547     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5548     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5549     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
5550
5551   /* Record the fields for the semantic handler.  */
5552   FLD (f_cdisp10) = f_cdisp10;
5553   FLD (f_crn) = f_crn;
5554   FLD (f_rm) = f_rm;
5555   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5556   if (UNLIKELY(current_cpu->trace_extract_p))
5557     {
5558       current_cpu->trace_stream 
5559         << "0x" << hex << pc << dec << " (sfmt_swcpa)\t"
5560         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
5561         << " f_crn:0x" << hex << f_crn << dec
5562         << " f_rm:0x" << hex << f_rm << dec
5563         << endl;
5564     }
5565
5566   /* Record the fields for profiling.  */
5567   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5568     {
5569       FLD (in_rma) = f_rm;
5570       FLD (out_rma) = f_rm;
5571     }
5572 #undef FLD
5573 }
5574
5575 void
5576 mepcore1_extract_sfmt_lwcpa (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5577     mepcore1_insn_word insn = entire_insn;
5578 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5579     UINT f_crn;
5580     UINT f_rm;
5581     SI f_cdisp10;
5582
5583     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5584     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5585     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
5586
5587   /* Record the fields for the semantic handler.  */
5588   FLD (f_cdisp10) = f_cdisp10;
5589   FLD (f_rm) = f_rm;
5590   FLD (f_crn) = f_crn;
5591   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5592   if (UNLIKELY(current_cpu->trace_extract_p))
5593     {
5594       current_cpu->trace_stream 
5595         << "0x" << hex << pc << dec << " (sfmt_lwcpa)\t"
5596         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
5597         << " f_rm:0x" << hex << f_rm << dec
5598         << " f_crn:0x" << hex << f_crn << dec
5599         << endl;
5600     }
5601
5602   /* Record the fields for profiling.  */
5603   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5604     {
5605       FLD (in_rma) = f_rm;
5606       FLD (out_rma) = f_rm;
5607     }
5608 #undef FLD
5609 }
5610
5611 void
5612 mepcore1_extract_sfmt_smcpa (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5613     mepcore1_insn_word insn = entire_insn;
5614 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5615     UINT f_crn;
5616     UINT f_rm;
5617     SI f_cdisp10;
5618
5619     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5620     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5621     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
5622
5623   /* Record the fields for the semantic handler.  */
5624   FLD (f_cdisp10) = f_cdisp10;
5625   FLD (f_crn) = f_crn;
5626   FLD (f_rm) = f_rm;
5627   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5628   if (UNLIKELY(current_cpu->trace_extract_p))
5629     {
5630       current_cpu->trace_stream 
5631         << "0x" << hex << pc << dec << " (sfmt_smcpa)\t"
5632         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
5633         << " f_crn:0x" << hex << f_crn << dec
5634         << " f_rm:0x" << hex << f_rm << dec
5635         << endl;
5636     }
5637
5638   /* Record the fields for profiling.  */
5639   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5640     {
5641       FLD (in_rma) = f_rm;
5642       FLD (out_rma) = f_rm;
5643     }
5644 #undef FLD
5645 }
5646
5647 void
5648 mepcore1_extract_sfmt_lmcpa (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5649     mepcore1_insn_word insn = entire_insn;
5650 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5651     UINT f_crn;
5652     UINT f_rm;
5653     SI f_cdisp10;
5654
5655     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5656     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5657     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
5658
5659   /* Record the fields for the semantic handler.  */
5660   FLD (f_cdisp10) = f_cdisp10;
5661   FLD (f_rm) = f_rm;
5662   FLD (f_crn) = f_crn;
5663   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5664   if (UNLIKELY(current_cpu->trace_extract_p))
5665     {
5666       current_cpu->trace_stream 
5667         << "0x" << hex << pc << dec << " (sfmt_lmcpa)\t"
5668         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
5669         << " f_rm:0x" << hex << f_rm << dec
5670         << " f_crn:0x" << hex << f_crn << dec
5671         << endl;
5672     }
5673
5674   /* Record the fields for profiling.  */
5675   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5676     {
5677       FLD (in_rma) = f_rm;
5678       FLD (out_rma) = f_rm;
5679     }
5680 #undef FLD
5681 }
5682
5683 void
5684 mepcore1_extract_sfmt_sbcpm0 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5685     mepcore1_insn_word insn = entire_insn;
5686 #define FLD(f) abuf->fields.sfmt_lbucpm0.f
5687     UINT f_crn;
5688     UINT f_rm;
5689     SI f_cdisp10;
5690
5691     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5692     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5693     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
5694
5695   /* Record the fields for the semantic handler.  */
5696   FLD (f_cdisp10) = f_cdisp10;
5697   FLD (f_crn) = f_crn;
5698   FLD (f_rm) = f_rm;
5699   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5700   if (UNLIKELY(current_cpu->trace_extract_p))
5701     {
5702       current_cpu->trace_stream 
5703         << "0x" << hex << pc << dec << " (sfmt_sbcpm0)\t"
5704         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
5705         << " f_crn:0x" << hex << f_crn << dec
5706         << " f_rm:0x" << hex << f_rm << dec
5707         << endl;
5708     }
5709
5710   /* Record the fields for profiling.  */
5711   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5712     {
5713       FLD (in_mb0) = 12;
5714       FLD (in_me0) = 13;
5715       FLD (in_rma) = f_rm;
5716       FLD (out_rma) = f_rm;
5717     }
5718 #undef FLD
5719 }
5720
5721 void
5722 mepcore1_extract_sfmt_shcpm0 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5723     mepcore1_insn_word insn = entire_insn;
5724 #define FLD(f) abuf->fields.sfmt_lbucpm0.f
5725     UINT f_crn;
5726     UINT f_rm;
5727     SI f_cdisp10;
5728
5729     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5730     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5731     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
5732
5733   /* Record the fields for the semantic handler.  */
5734   FLD (f_cdisp10) = f_cdisp10;
5735   FLD (f_crn) = f_crn;
5736   FLD (f_rm) = f_rm;
5737   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5738   if (UNLIKELY(current_cpu->trace_extract_p))
5739     {
5740       current_cpu->trace_stream 
5741         << "0x" << hex << pc << dec << " (sfmt_shcpm0)\t"
5742         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
5743         << " f_crn:0x" << hex << f_crn << dec
5744         << " f_rm:0x" << hex << f_rm << dec
5745         << endl;
5746     }
5747
5748   /* Record the fields for profiling.  */
5749   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5750     {
5751       FLD (in_mb0) = 12;
5752       FLD (in_me0) = 13;
5753       FLD (in_rma) = f_rm;
5754       FLD (out_rma) = f_rm;
5755     }
5756 #undef FLD
5757 }
5758
5759 void
5760 mepcore1_extract_sfmt_swcpm0 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5761     mepcore1_insn_word insn = entire_insn;
5762 #define FLD(f) abuf->fields.sfmt_lbucpm0.f
5763     UINT f_crn;
5764     UINT f_rm;
5765     SI f_cdisp10;
5766
5767     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5768     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5769     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
5770
5771   /* Record the fields for the semantic handler.  */
5772   FLD (f_cdisp10) = f_cdisp10;
5773   FLD (f_crn) = f_crn;
5774   FLD (f_rm) = f_rm;
5775   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5776   if (UNLIKELY(current_cpu->trace_extract_p))
5777     {
5778       current_cpu->trace_stream 
5779         << "0x" << hex << pc << dec << " (sfmt_swcpm0)\t"
5780         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
5781         << " f_crn:0x" << hex << f_crn << dec
5782         << " f_rm:0x" << hex << f_rm << dec
5783         << endl;
5784     }
5785
5786   /* Record the fields for profiling.  */
5787   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5788     {
5789       FLD (in_mb0) = 12;
5790       FLD (in_me0) = 13;
5791       FLD (in_rma) = f_rm;
5792       FLD (out_rma) = f_rm;
5793     }
5794 #undef FLD
5795 }
5796
5797 void
5798 mepcore1_extract_sfmt_lwcpm0 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5799     mepcore1_insn_word insn = entire_insn;
5800 #define FLD(f) abuf->fields.sfmt_lbucpm0.f
5801     UINT f_crn;
5802     UINT f_rm;
5803     SI f_cdisp10;
5804
5805     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5806     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5807     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
5808
5809   /* Record the fields for the semantic handler.  */
5810   FLD (f_cdisp10) = f_cdisp10;
5811   FLD (f_rm) = f_rm;
5812   FLD (f_crn) = f_crn;
5813   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5814   if (UNLIKELY(current_cpu->trace_extract_p))
5815     {
5816       current_cpu->trace_stream 
5817         << "0x" << hex << pc << dec << " (sfmt_lwcpm0)\t"
5818         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
5819         << " f_rm:0x" << hex << f_rm << dec
5820         << " f_crn:0x" << hex << f_crn << dec
5821         << endl;
5822     }
5823
5824   /* Record the fields for profiling.  */
5825   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5826     {
5827       FLD (in_mb0) = 12;
5828       FLD (in_me0) = 13;
5829       FLD (in_rma) = f_rm;
5830       FLD (out_rma) = f_rm;
5831     }
5832 #undef FLD
5833 }
5834
5835 void
5836 mepcore1_extract_sfmt_smcpm0 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5837     mepcore1_insn_word insn = entire_insn;
5838 #define FLD(f) abuf->fields.sfmt_lbucpm0.f
5839     UINT f_crn;
5840     UINT f_rm;
5841     SI f_cdisp10;
5842
5843     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5844     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5845     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
5846
5847   /* Record the fields for the semantic handler.  */
5848   FLD (f_cdisp10) = f_cdisp10;
5849   FLD (f_crn) = f_crn;
5850   FLD (f_rm) = f_rm;
5851   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5852   if (UNLIKELY(current_cpu->trace_extract_p))
5853     {
5854       current_cpu->trace_stream 
5855         << "0x" << hex << pc << dec << " (sfmt_smcpm0)\t"
5856         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
5857         << " f_crn:0x" << hex << f_crn << dec
5858         << " f_rm:0x" << hex << f_rm << dec
5859         << endl;
5860     }
5861
5862   /* Record the fields for profiling.  */
5863   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5864     {
5865       FLD (in_mb0) = 12;
5866       FLD (in_me0) = 13;
5867       FLD (in_rma) = f_rm;
5868       FLD (out_rma) = f_rm;
5869     }
5870 #undef FLD
5871 }
5872
5873 void
5874 mepcore1_extract_sfmt_lmcpm0 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5875     mepcore1_insn_word insn = entire_insn;
5876 #define FLD(f) abuf->fields.sfmt_lbucpm0.f
5877     UINT f_crn;
5878     UINT f_rm;
5879     SI f_cdisp10;
5880
5881     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5882     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5883     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
5884
5885   /* Record the fields for the semantic handler.  */
5886   FLD (f_cdisp10) = f_cdisp10;
5887   FLD (f_rm) = f_rm;
5888   FLD (f_crn) = f_crn;
5889   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5890   if (UNLIKELY(current_cpu->trace_extract_p))
5891     {
5892       current_cpu->trace_stream 
5893         << "0x" << hex << pc << dec << " (sfmt_lmcpm0)\t"
5894         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
5895         << " f_rm:0x" << hex << f_rm << dec
5896         << " f_crn:0x" << hex << f_crn << dec
5897         << endl;
5898     }
5899
5900   /* Record the fields for profiling.  */
5901   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5902     {
5903       FLD (in_mb0) = 12;
5904       FLD (in_me0) = 13;
5905       FLD (in_rma) = f_rm;
5906       FLD (out_rma) = f_rm;
5907     }
5908 #undef FLD
5909 }
5910
5911 void
5912 mepcore1_extract_sfmt_sbcpm1 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5913     mepcore1_insn_word insn = entire_insn;
5914 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5915     UINT f_crn;
5916     UINT f_rm;
5917     SI f_cdisp10;
5918
5919     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5920     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5921     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
5922
5923   /* Record the fields for the semantic handler.  */
5924   FLD (f_cdisp10) = f_cdisp10;
5925   FLD (f_crn) = f_crn;
5926   FLD (f_rm) = f_rm;
5927   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5928   if (UNLIKELY(current_cpu->trace_extract_p))
5929     {
5930       current_cpu->trace_stream 
5931         << "0x" << hex << pc << dec << " (sfmt_sbcpm1)\t"
5932         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
5933         << " f_crn:0x" << hex << f_crn << dec
5934         << " f_rm:0x" << hex << f_rm << dec
5935         << endl;
5936     }
5937
5938   /* Record the fields for profiling.  */
5939   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5940     {
5941       FLD (in_mb1) = 14;
5942       FLD (in_me1) = 15;
5943       FLD (in_rma) = f_rm;
5944       FLD (out_rma) = f_rm;
5945     }
5946 #undef FLD
5947 }
5948
5949 void
5950 mepcore1_extract_sfmt_shcpm1 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5951     mepcore1_insn_word insn = entire_insn;
5952 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5953     UINT f_crn;
5954     UINT f_rm;
5955     SI f_cdisp10;
5956
5957     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5958     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5959     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
5960
5961   /* Record the fields for the semantic handler.  */
5962   FLD (f_cdisp10) = f_cdisp10;
5963   FLD (f_crn) = f_crn;
5964   FLD (f_rm) = f_rm;
5965   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
5966   if (UNLIKELY(current_cpu->trace_extract_p))
5967     {
5968       current_cpu->trace_stream 
5969         << "0x" << hex << pc << dec << " (sfmt_shcpm1)\t"
5970         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
5971         << " f_crn:0x" << hex << f_crn << dec
5972         << " f_rm:0x" << hex << f_rm << dec
5973         << endl;
5974     }
5975
5976   /* Record the fields for profiling.  */
5977   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
5978     {
5979       FLD (in_mb1) = 14;
5980       FLD (in_me1) = 15;
5981       FLD (in_rma) = f_rm;
5982       FLD (out_rma) = f_rm;
5983     }
5984 #undef FLD
5985 }
5986
5987 void
5988 mepcore1_extract_sfmt_swcpm1 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
5989     mepcore1_insn_word insn = entire_insn;
5990 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5991     UINT f_crn;
5992     UINT f_rm;
5993     SI f_cdisp10;
5994
5995     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
5996     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
5997     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
5998
5999   /* Record the fields for the semantic handler.  */
6000   FLD (f_cdisp10) = f_cdisp10;
6001   FLD (f_crn) = f_crn;
6002   FLD (f_rm) = f_rm;
6003   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
6004   if (UNLIKELY(current_cpu->trace_extract_p))
6005     {
6006       current_cpu->trace_stream 
6007         << "0x" << hex << pc << dec << " (sfmt_swcpm1)\t"
6008         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
6009         << " f_crn:0x" << hex << f_crn << dec
6010         << " f_rm:0x" << hex << f_rm << dec
6011         << endl;
6012     }
6013
6014   /* Record the fields for profiling.  */
6015   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
6016     {
6017       FLD (in_mb1) = 14;
6018       FLD (in_me1) = 15;
6019       FLD (in_rma) = f_rm;
6020       FLD (out_rma) = f_rm;
6021     }
6022 #undef FLD
6023 }
6024
6025 void
6026 mepcore1_extract_sfmt_lwcpm1 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
6027     mepcore1_insn_word insn = entire_insn;
6028 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
6029     UINT f_crn;
6030     UINT f_rm;
6031     SI f_cdisp10;
6032
6033     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
6034     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
6035     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
6036
6037   /* Record the fields for the semantic handler.  */
6038   FLD (f_cdisp10) = f_cdisp10;
6039   FLD (f_rm) = f_rm;
6040   FLD (f_crn) = f_crn;
6041   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
6042   if (UNLIKELY(current_cpu->trace_extract_p))
6043     {
6044       current_cpu->trace_stream 
6045         << "0x" << hex << pc << dec << " (sfmt_lwcpm1)\t"
6046         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
6047         << " f_rm:0x" << hex << f_rm << dec
6048         << " f_crn:0x" << hex << f_crn << dec
6049         << endl;
6050     }
6051
6052   /* Record the fields for profiling.  */
6053   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
6054     {
6055       FLD (in_mb1) = 14;
6056       FLD (in_me1) = 15;
6057       FLD (in_rma) = f_rm;
6058       FLD (out_rma) = f_rm;
6059     }
6060 #undef FLD
6061 }
6062
6063 void
6064 mepcore1_extract_sfmt_smcpm1 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
6065     mepcore1_insn_word insn = entire_insn;
6066 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
6067     UINT f_crn;
6068     UINT f_rm;
6069     SI f_cdisp10;
6070
6071     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
6072     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
6073     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
6074
6075   /* Record the fields for the semantic handler.  */
6076   FLD (f_cdisp10) = f_cdisp10;
6077   FLD (f_crn) = f_crn;
6078   FLD (f_rm) = f_rm;
6079   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
6080   if (UNLIKELY(current_cpu->trace_extract_p))
6081     {
6082       current_cpu->trace_stream 
6083         << "0x" << hex << pc << dec << " (sfmt_smcpm1)\t"
6084         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
6085         << " f_crn:0x" << hex << f_crn << dec
6086         << " f_rm:0x" << hex << f_rm << dec
6087         << endl;
6088     }
6089
6090   /* Record the fields for profiling.  */
6091   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
6092     {
6093       FLD (in_mb1) = 14;
6094       FLD (in_me1) = 15;
6095       FLD (in_rma) = f_rm;
6096       FLD (out_rma) = f_rm;
6097     }
6098 #undef FLD
6099 }
6100
6101 void
6102 mepcore1_extract_sfmt_lmcpm1 (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
6103     mepcore1_insn_word insn = entire_insn;
6104 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
6105     UINT f_crn;
6106     UINT f_rm;
6107     SI f_cdisp10;
6108
6109     f_crn = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
6110     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
6111     f_cdisp10 = (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (512))) ? (((((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023))) - (1024))) : (((((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) & (512))) ? ((((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10))) - (1024))) : ((((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) & (128))) ? (((EXTRACT_MSB0_SINT (insn, 32, 22, 10)) ^ (768))) : (EXTRACT_MSB0_SINT (insn, 32, 22, 10)))) & (1023)));
6112
6113   /* Record the fields for the semantic handler.  */
6114   FLD (f_cdisp10) = f_cdisp10;
6115   FLD (f_rm) = f_rm;
6116   FLD (f_crn) = f_crn;
6117   FLD (i_rma) = & current_cpu->hardware.h_gpr[f_rm];
6118   if (UNLIKELY(current_cpu->trace_extract_p))
6119     {
6120       current_cpu->trace_stream 
6121         << "0x" << hex << pc << dec << " (sfmt_lmcpm1)\t"
6122         << " f_cdisp10:0x" << hex << f_cdisp10 << dec
6123         << " f_rm:0x" << hex << f_rm << dec
6124         << " f_crn:0x" << hex << f_crn << dec
6125         << endl;
6126     }
6127
6128   /* Record the fields for profiling.  */
6129   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
6130     {
6131       FLD (in_mb1) = 14;
6132       FLD (in_me1) = 15;
6133       FLD (in_rma) = f_rm;
6134       FLD (out_rma) = f_rm;
6135     }
6136 #undef FLD
6137 }
6138
6139 void
6140 mepcore1_extract_sfmt_bcpeq (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
6141     mepcore1_insn_word insn = entire_insn;
6142 #define FLD(f) abuf->fields.sfmt_beq.f
6143     UINT f_rm;
6144     SI f_17s16a2;
6145
6146     f_rm = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
6147     f_17s16a2 = ((((EXTRACT_MSB0_SINT (insn, 32, 16, 16)) << (1))) + (pc));
6148
6149   /* Record the fields for the semantic handler.  */
6150   FLD (f_rm) = f_rm;
6151   FLD (f_17s16a2) = f_17s16a2;
6152   if (UNLIKELY(current_cpu->trace_extract_p))
6153     {
6154       current_cpu->trace_stream 
6155         << "0x" << hex << pc << dec << " (sfmt_bcpeq)\t"
6156         << " f_rm:0x" << hex << f_rm << dec
6157         << " f_17s16a2:0x" << hex << f_17s16a2 << dec
6158         << endl;
6159     }
6160
6161   /* Record the fields for profiling.  */
6162   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
6163     {
6164       FLD (in_opt) = 26;
6165       FLD (in_psw) = 16;
6166     }
6167 #undef FLD
6168 }
6169
6170 void
6171 mepcore1_extract_sfmt_synccp (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
6172     mepcore1_insn_word insn = entire_insn;
6173 #define FLD(f) abuf->fields.fmt_empty.f
6174
6175
6176   /* Record the fields for the semantic handler.  */
6177   if (UNLIKELY(current_cpu->trace_extract_p))
6178     {
6179       current_cpu->trace_stream 
6180         << "0x" << hex << pc << dec << " (sfmt_synccp)\t"
6181         << endl;
6182     }
6183
6184   /* Record the fields for profiling.  */
6185   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
6186     {
6187     }
6188 #undef FLD
6189 }
6190
6191 void
6192 mepcore1_extract_sfmt_sim_syscall (mepcore1_scache* abuf, mep_ext1_cpu* current_cpu, PCADDR pc, mepcore1_insn_word base_insn, mepcore1_insn_word entire_insn){
6193     mepcore1_insn_word insn = entire_insn;
6194 #define FLD(f) abuf->fields.sfmt_sim_syscall.f
6195     UINT f_5;
6196     UINT f_6;
6197     UINT f_7;
6198     UINT f_11;
6199     UINT f_callnum;
6200
6201     f_5 = EXTRACT_MSB0_UINT (insn, 16, 5, 1);
6202     f_6 = EXTRACT_MSB0_UINT (insn, 16, 6, 1);
6203     f_7 = EXTRACT_MSB0_UINT (insn, 16, 7, 1);
6204     f_11 = EXTRACT_MSB0_UINT (insn, 16, 11, 1);
6205   f_callnum = ((((f_5) << (3))) | (((((f_6) << (2))) | (((((f_7) << (1))) | (f_11))))));
6206
6207   /* Record the fields for the semantic handler.  */
6208   FLD (f_callnum) = f_callnum;
6209   if (UNLIKELY(current_cpu->trace_extract_p))
6210     {
6211       current_cpu->trace_stream 
6212         << "0x" << hex << pc << dec << " (sfmt_sim_syscall)\t"
6213         << " f_callnum:0x" << hex << f_callnum << dec
6214         << endl;
6215     }
6216
6217   /* Record the fields for profiling.  */
6218   if (UNLIKELY (current_cpu->trace_counter_p || current_cpu->final_insn_count_p))
6219     {
6220     }
6221 #undef FLD
6222 }
6223