OSDN Git Service

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