]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - sim/sparc/decode64.c
* config/sh/tm-sh.h (BELIEVE_PCC_PROMOTION): Define, so that
[thirdparty/binutils-gdb.git] / sim / sparc / decode64.c
1 /* Simulator instruction decoder for sparc64.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright (C) 1999 Cygnus Solutions, Inc.
6
7 This file is part of the Cygnus Simulators.
8
9
10 */
11
12 #define WANT_CPU sparc64
13 #define WANT_CPU_SPARC64
14
15 #include "sim-main.h"
16 #include "sim-assert.h"
17
18 /* FIXME: Need to review choices for the following. */
19
20 #if WITH_SEM_SWITCH_FULL
21 #define FULL(fn)
22 #else
23 #define FULL(fn) CONCAT3 (sparc64,_sem_,fn) ,
24 #endif
25
26 #if WITH_FAST
27 #if WITH_SEM_SWITCH_FAST
28 #define FAST(fn)
29 #else
30 #define FAST(fn) CONCAT3 (sparc64,_semf_,fn) , /* f for fast */
31 #endif
32 #else
33 #define FAST(fn)
34 #endif
35
36 /* The instruction descriptor array.
37 This is computed at runtime. Space for it is not malloc'd to save a
38 teensy bit of cpu in the decoder. Moving it to malloc space is trivial
39 but won't be done until necessary (we don't currently support the runtime
40 addition of instructions nor an SMP machine with different cpus). */
41 static IDESC sparc64_insn_data[SPARC64_INSN_MAX];
42
43 /* The INSN_ prefix is not here and is instead part of the `insn' argument
44 to avoid collisions with header files (e.g. `AND' in ansidecl.h). */
45 #define IDX(insn) CONCAT2 (SPARC64_,insn)
46 #define TYPE(insn) CONCAT2 (SPARC_,insn)
47
48 /* Commas between elements are contained in the macros.
49 Some of these are conditionally compiled out. */
50
51 static const struct insn_sem sparc64_insn_sem[] =
52 {
53 { VIRTUAL_INSN_X_INVALID, IDX (INSN_X_INVALID), FULL (x_invalid) FAST (x_invalid) },
54 { VIRTUAL_INSN_X_AFTER, IDX (INSN_X_AFTER), FULL (x_after) FAST (x_after) },
55 { VIRTUAL_INSN_X_BEFORE, IDX (INSN_X_BEFORE), FULL (x_before) FAST (x_before) },
56 { VIRTUAL_INSN_X_CTI_CHAIN, IDX (INSN_X_CTI_CHAIN), FULL (x_cti_chain) FAST (x_cti_chain) },
57 { VIRTUAL_INSN_X_CHAIN, IDX (INSN_X_CHAIN), FULL (x_chain) FAST (x_chain) },
58 { VIRTUAL_INSN_X_BEGIN, IDX (INSN_X_BEGIN), FULL (x_begin) FAST (x_begin) },
59 { TYPE (INSN_BEQZ), IDX (INSN_BEQZ), FULL (beqz) FAST (beqz) },
60 { TYPE (INSN_BGEZ), IDX (INSN_BGEZ), FULL (bgez) FAST (bgez) },
61 { TYPE (INSN_BGTZ), IDX (INSN_BGTZ), FULL (bgtz) FAST (bgtz) },
62 { TYPE (INSN_BLEZ), IDX (INSN_BLEZ), FULL (blez) FAST (blez) },
63 { TYPE (INSN_BLTZ), IDX (INSN_BLTZ), FULL (bltz) FAST (bltz) },
64 { TYPE (INSN_BNEZ), IDX (INSN_BNEZ), FULL (bnez) FAST (bnez) },
65 { TYPE (INSN_BPCC_BA), IDX (INSN_BPCC_BA), FULL (bpcc_ba) FAST (bpcc_ba) },
66 { TYPE (INSN_BPCC_BN), IDX (INSN_BPCC_BN), FULL (bpcc_bn) FAST (bpcc_bn) },
67 { TYPE (INSN_BPCC_BNE), IDX (INSN_BPCC_BNE), FULL (bpcc_bne) FAST (bpcc_bne) },
68 { TYPE (INSN_BPCC_BE), IDX (INSN_BPCC_BE), FULL (bpcc_be) FAST (bpcc_be) },
69 { TYPE (INSN_BPCC_BG), IDX (INSN_BPCC_BG), FULL (bpcc_bg) FAST (bpcc_bg) },
70 { TYPE (INSN_BPCC_BLE), IDX (INSN_BPCC_BLE), FULL (bpcc_ble) FAST (bpcc_ble) },
71 { TYPE (INSN_BPCC_BGE), IDX (INSN_BPCC_BGE), FULL (bpcc_bge) FAST (bpcc_bge) },
72 { TYPE (INSN_BPCC_BL), IDX (INSN_BPCC_BL), FULL (bpcc_bl) FAST (bpcc_bl) },
73 { TYPE (INSN_BPCC_BGU), IDX (INSN_BPCC_BGU), FULL (bpcc_bgu) FAST (bpcc_bgu) },
74 { TYPE (INSN_BPCC_BLEU), IDX (INSN_BPCC_BLEU), FULL (bpcc_bleu) FAST (bpcc_bleu) },
75 { TYPE (INSN_BPCC_BCC), IDX (INSN_BPCC_BCC), FULL (bpcc_bcc) FAST (bpcc_bcc) },
76 { TYPE (INSN_BPCC_BCS), IDX (INSN_BPCC_BCS), FULL (bpcc_bcs) FAST (bpcc_bcs) },
77 { TYPE (INSN_BPCC_BPOS), IDX (INSN_BPCC_BPOS), FULL (bpcc_bpos) FAST (bpcc_bpos) },
78 { TYPE (INSN_BPCC_BNEG), IDX (INSN_BPCC_BNEG), FULL (bpcc_bneg) FAST (bpcc_bneg) },
79 { TYPE (INSN_BPCC_BVC), IDX (INSN_BPCC_BVC), FULL (bpcc_bvc) FAST (bpcc_bvc) },
80 { TYPE (INSN_BPCC_BVS), IDX (INSN_BPCC_BVS), FULL (bpcc_bvs) FAST (bpcc_bvs) },
81 { TYPE (INSN_DONE), IDX (INSN_DONE), FULL (done) FAST (done) },
82 { TYPE (INSN_RETRY), IDX (INSN_RETRY), FULL (retry) FAST (retry) },
83 { TYPE (INSN_FLUSH), IDX (INSN_FLUSH), FULL (flush) FAST (flush) },
84 { TYPE (INSN_FLUSH_IMM), IDX (INSN_FLUSH_IMM), FULL (flush_imm) FAST (flush_imm) },
85 { TYPE (INSN_FLUSHW), IDX (INSN_FLUSHW), FULL (flushw) FAST (flushw) },
86 { TYPE (INSN_IMPDEP1), IDX (INSN_IMPDEP1), FULL (impdep1) FAST (impdep1) },
87 { TYPE (INSN_IMPDEP2), IDX (INSN_IMPDEP2), FULL (impdep2) FAST (impdep2) },
88 { TYPE (INSN_MEMBAR), IDX (INSN_MEMBAR), FULL (membar) FAST (membar) },
89 { TYPE (INSN_MOVA_ICC_ICC), IDX (INSN_MOVA_ICC_ICC), FULL (mova_icc_icc) FAST (mova_icc_icc) },
90 { TYPE (INSN_MOVA_IMM_ICC_ICC), IDX (INSN_MOVA_IMM_ICC_ICC), FULL (mova_imm_icc_icc) FAST (mova_imm_icc_icc) },
91 { TYPE (INSN_MOVA_XCC_XCC), IDX (INSN_MOVA_XCC_XCC), FULL (mova_xcc_xcc) FAST (mova_xcc_xcc) },
92 { TYPE (INSN_MOVA_IMM_XCC_XCC), IDX (INSN_MOVA_IMM_XCC_XCC), FULL (mova_imm_xcc_xcc) FAST (mova_imm_xcc_xcc) },
93 { TYPE (INSN_MOVN_ICC_ICC), IDX (INSN_MOVN_ICC_ICC), FULL (movn_icc_icc) FAST (movn_icc_icc) },
94 { TYPE (INSN_MOVN_IMM_ICC_ICC), IDX (INSN_MOVN_IMM_ICC_ICC), FULL (movn_imm_icc_icc) FAST (movn_imm_icc_icc) },
95 { TYPE (INSN_MOVN_XCC_XCC), IDX (INSN_MOVN_XCC_XCC), FULL (movn_xcc_xcc) FAST (movn_xcc_xcc) },
96 { TYPE (INSN_MOVN_IMM_XCC_XCC), IDX (INSN_MOVN_IMM_XCC_XCC), FULL (movn_imm_xcc_xcc) FAST (movn_imm_xcc_xcc) },
97 { TYPE (INSN_MOVNE_ICC_ICC), IDX (INSN_MOVNE_ICC_ICC), FULL (movne_icc_icc) FAST (movne_icc_icc) },
98 { TYPE (INSN_MOVNE_IMM_ICC_ICC), IDX (INSN_MOVNE_IMM_ICC_ICC), FULL (movne_imm_icc_icc) FAST (movne_imm_icc_icc) },
99 { TYPE (INSN_MOVNE_XCC_XCC), IDX (INSN_MOVNE_XCC_XCC), FULL (movne_xcc_xcc) FAST (movne_xcc_xcc) },
100 { TYPE (INSN_MOVNE_IMM_XCC_XCC), IDX (INSN_MOVNE_IMM_XCC_XCC), FULL (movne_imm_xcc_xcc) FAST (movne_imm_xcc_xcc) },
101 { TYPE (INSN_MOVE_ICC_ICC), IDX (INSN_MOVE_ICC_ICC), FULL (move_icc_icc) FAST (move_icc_icc) },
102 { TYPE (INSN_MOVE_IMM_ICC_ICC), IDX (INSN_MOVE_IMM_ICC_ICC), FULL (move_imm_icc_icc) FAST (move_imm_icc_icc) },
103 { TYPE (INSN_MOVE_XCC_XCC), IDX (INSN_MOVE_XCC_XCC), FULL (move_xcc_xcc) FAST (move_xcc_xcc) },
104 { TYPE (INSN_MOVE_IMM_XCC_XCC), IDX (INSN_MOVE_IMM_XCC_XCC), FULL (move_imm_xcc_xcc) FAST (move_imm_xcc_xcc) },
105 { TYPE (INSN_MOVG_ICC_ICC), IDX (INSN_MOVG_ICC_ICC), FULL (movg_icc_icc) FAST (movg_icc_icc) },
106 { TYPE (INSN_MOVG_IMM_ICC_ICC), IDX (INSN_MOVG_IMM_ICC_ICC), FULL (movg_imm_icc_icc) FAST (movg_imm_icc_icc) },
107 { TYPE (INSN_MOVG_XCC_XCC), IDX (INSN_MOVG_XCC_XCC), FULL (movg_xcc_xcc) FAST (movg_xcc_xcc) },
108 { TYPE (INSN_MOVG_IMM_XCC_XCC), IDX (INSN_MOVG_IMM_XCC_XCC), FULL (movg_imm_xcc_xcc) FAST (movg_imm_xcc_xcc) },
109 { TYPE (INSN_MOVLE_ICC_ICC), IDX (INSN_MOVLE_ICC_ICC), FULL (movle_icc_icc) FAST (movle_icc_icc) },
110 { TYPE (INSN_MOVLE_IMM_ICC_ICC), IDX (INSN_MOVLE_IMM_ICC_ICC), FULL (movle_imm_icc_icc) FAST (movle_imm_icc_icc) },
111 { TYPE (INSN_MOVLE_XCC_XCC), IDX (INSN_MOVLE_XCC_XCC), FULL (movle_xcc_xcc) FAST (movle_xcc_xcc) },
112 { TYPE (INSN_MOVLE_IMM_XCC_XCC), IDX (INSN_MOVLE_IMM_XCC_XCC), FULL (movle_imm_xcc_xcc) FAST (movle_imm_xcc_xcc) },
113 { TYPE (INSN_MOVGE_ICC_ICC), IDX (INSN_MOVGE_ICC_ICC), FULL (movge_icc_icc) FAST (movge_icc_icc) },
114 { TYPE (INSN_MOVGE_IMM_ICC_ICC), IDX (INSN_MOVGE_IMM_ICC_ICC), FULL (movge_imm_icc_icc) FAST (movge_imm_icc_icc) },
115 { TYPE (INSN_MOVGE_XCC_XCC), IDX (INSN_MOVGE_XCC_XCC), FULL (movge_xcc_xcc) FAST (movge_xcc_xcc) },
116 { TYPE (INSN_MOVGE_IMM_XCC_XCC), IDX (INSN_MOVGE_IMM_XCC_XCC), FULL (movge_imm_xcc_xcc) FAST (movge_imm_xcc_xcc) },
117 { TYPE (INSN_MOVL_ICC_ICC), IDX (INSN_MOVL_ICC_ICC), FULL (movl_icc_icc) FAST (movl_icc_icc) },
118 { TYPE (INSN_MOVL_IMM_ICC_ICC), IDX (INSN_MOVL_IMM_ICC_ICC), FULL (movl_imm_icc_icc) FAST (movl_imm_icc_icc) },
119 { TYPE (INSN_MOVL_XCC_XCC), IDX (INSN_MOVL_XCC_XCC), FULL (movl_xcc_xcc) FAST (movl_xcc_xcc) },
120 { TYPE (INSN_MOVL_IMM_XCC_XCC), IDX (INSN_MOVL_IMM_XCC_XCC), FULL (movl_imm_xcc_xcc) FAST (movl_imm_xcc_xcc) },
121 { TYPE (INSN_MOVGU_ICC_ICC), IDX (INSN_MOVGU_ICC_ICC), FULL (movgu_icc_icc) FAST (movgu_icc_icc) },
122 { TYPE (INSN_MOVGU_IMM_ICC_ICC), IDX (INSN_MOVGU_IMM_ICC_ICC), FULL (movgu_imm_icc_icc) FAST (movgu_imm_icc_icc) },
123 { TYPE (INSN_MOVGU_XCC_XCC), IDX (INSN_MOVGU_XCC_XCC), FULL (movgu_xcc_xcc) FAST (movgu_xcc_xcc) },
124 { TYPE (INSN_MOVGU_IMM_XCC_XCC), IDX (INSN_MOVGU_IMM_XCC_XCC), FULL (movgu_imm_xcc_xcc) FAST (movgu_imm_xcc_xcc) },
125 { TYPE (INSN_MOVLEU_ICC_ICC), IDX (INSN_MOVLEU_ICC_ICC), FULL (movleu_icc_icc) FAST (movleu_icc_icc) },
126 { TYPE (INSN_MOVLEU_IMM_ICC_ICC), IDX (INSN_MOVLEU_IMM_ICC_ICC), FULL (movleu_imm_icc_icc) FAST (movleu_imm_icc_icc) },
127 { TYPE (INSN_MOVLEU_XCC_XCC), IDX (INSN_MOVLEU_XCC_XCC), FULL (movleu_xcc_xcc) FAST (movleu_xcc_xcc) },
128 { TYPE (INSN_MOVLEU_IMM_XCC_XCC), IDX (INSN_MOVLEU_IMM_XCC_XCC), FULL (movleu_imm_xcc_xcc) FAST (movleu_imm_xcc_xcc) },
129 { TYPE (INSN_MOVCC_ICC_ICC), IDX (INSN_MOVCC_ICC_ICC), FULL (movcc_icc_icc) FAST (movcc_icc_icc) },
130 { TYPE (INSN_MOVCC_IMM_ICC_ICC), IDX (INSN_MOVCC_IMM_ICC_ICC), FULL (movcc_imm_icc_icc) FAST (movcc_imm_icc_icc) },
131 { TYPE (INSN_MOVCC_XCC_XCC), IDX (INSN_MOVCC_XCC_XCC), FULL (movcc_xcc_xcc) FAST (movcc_xcc_xcc) },
132 { TYPE (INSN_MOVCC_IMM_XCC_XCC), IDX (INSN_MOVCC_IMM_XCC_XCC), FULL (movcc_imm_xcc_xcc) FAST (movcc_imm_xcc_xcc) },
133 { TYPE (INSN_MOVCS_ICC_ICC), IDX (INSN_MOVCS_ICC_ICC), FULL (movcs_icc_icc) FAST (movcs_icc_icc) },
134 { TYPE (INSN_MOVCS_IMM_ICC_ICC), IDX (INSN_MOVCS_IMM_ICC_ICC), FULL (movcs_imm_icc_icc) FAST (movcs_imm_icc_icc) },
135 { TYPE (INSN_MOVCS_XCC_XCC), IDX (INSN_MOVCS_XCC_XCC), FULL (movcs_xcc_xcc) FAST (movcs_xcc_xcc) },
136 { TYPE (INSN_MOVCS_IMM_XCC_XCC), IDX (INSN_MOVCS_IMM_XCC_XCC), FULL (movcs_imm_xcc_xcc) FAST (movcs_imm_xcc_xcc) },
137 { TYPE (INSN_MOVPOS_ICC_ICC), IDX (INSN_MOVPOS_ICC_ICC), FULL (movpos_icc_icc) FAST (movpos_icc_icc) },
138 { TYPE (INSN_MOVPOS_IMM_ICC_ICC), IDX (INSN_MOVPOS_IMM_ICC_ICC), FULL (movpos_imm_icc_icc) FAST (movpos_imm_icc_icc) },
139 { TYPE (INSN_MOVPOS_XCC_XCC), IDX (INSN_MOVPOS_XCC_XCC), FULL (movpos_xcc_xcc) FAST (movpos_xcc_xcc) },
140 { TYPE (INSN_MOVPOS_IMM_XCC_XCC), IDX (INSN_MOVPOS_IMM_XCC_XCC), FULL (movpos_imm_xcc_xcc) FAST (movpos_imm_xcc_xcc) },
141 { TYPE (INSN_MOVNEG_ICC_ICC), IDX (INSN_MOVNEG_ICC_ICC), FULL (movneg_icc_icc) FAST (movneg_icc_icc) },
142 { TYPE (INSN_MOVNEG_IMM_ICC_ICC), IDX (INSN_MOVNEG_IMM_ICC_ICC), FULL (movneg_imm_icc_icc) FAST (movneg_imm_icc_icc) },
143 { TYPE (INSN_MOVNEG_XCC_XCC), IDX (INSN_MOVNEG_XCC_XCC), FULL (movneg_xcc_xcc) FAST (movneg_xcc_xcc) },
144 { TYPE (INSN_MOVNEG_IMM_XCC_XCC), IDX (INSN_MOVNEG_IMM_XCC_XCC), FULL (movneg_imm_xcc_xcc) FAST (movneg_imm_xcc_xcc) },
145 { TYPE (INSN_MOVVC_ICC_ICC), IDX (INSN_MOVVC_ICC_ICC), FULL (movvc_icc_icc) FAST (movvc_icc_icc) },
146 { TYPE (INSN_MOVVC_IMM_ICC_ICC), IDX (INSN_MOVVC_IMM_ICC_ICC), FULL (movvc_imm_icc_icc) FAST (movvc_imm_icc_icc) },
147 { TYPE (INSN_MOVVC_XCC_XCC), IDX (INSN_MOVVC_XCC_XCC), FULL (movvc_xcc_xcc) FAST (movvc_xcc_xcc) },
148 { TYPE (INSN_MOVVC_IMM_XCC_XCC), IDX (INSN_MOVVC_IMM_XCC_XCC), FULL (movvc_imm_xcc_xcc) FAST (movvc_imm_xcc_xcc) },
149 { TYPE (INSN_MOVVS_ICC_ICC), IDX (INSN_MOVVS_ICC_ICC), FULL (movvs_icc_icc) FAST (movvs_icc_icc) },
150 { TYPE (INSN_MOVVS_IMM_ICC_ICC), IDX (INSN_MOVVS_IMM_ICC_ICC), FULL (movvs_imm_icc_icc) FAST (movvs_imm_icc_icc) },
151 { TYPE (INSN_MOVVS_XCC_XCC), IDX (INSN_MOVVS_XCC_XCC), FULL (movvs_xcc_xcc) FAST (movvs_xcc_xcc) },
152 { TYPE (INSN_MOVVS_IMM_XCC_XCC), IDX (INSN_MOVVS_IMM_XCC_XCC), FULL (movvs_imm_xcc_xcc) FAST (movvs_imm_xcc_xcc) },
153 { TYPE (INSN_LDSB_REG_REG), IDX (INSN_LDSB_REG_REG), FULL (ldsb_reg_reg) FAST (ldsb_reg_reg) },
154 { TYPE (INSN_LDSB_REG_IMM), IDX (INSN_LDSB_REG_IMM), FULL (ldsb_reg_imm) FAST (ldsb_reg_imm) },
155 { TYPE (INSN_LDSB_REG_REG_ASI), IDX (INSN_LDSB_REG_REG_ASI), FULL (ldsb_reg_reg_asi) FAST (ldsb_reg_reg_asi) },
156 { TYPE (INSN_LDUB_REG_REG), IDX (INSN_LDUB_REG_REG), FULL (ldub_reg_reg) FAST (ldub_reg_reg) },
157 { TYPE (INSN_LDUB_REG_IMM), IDX (INSN_LDUB_REG_IMM), FULL (ldub_reg_imm) FAST (ldub_reg_imm) },
158 { TYPE (INSN_LDUB_REG_REG_ASI), IDX (INSN_LDUB_REG_REG_ASI), FULL (ldub_reg_reg_asi) FAST (ldub_reg_reg_asi) },
159 { TYPE (INSN_LDSH_REG_REG), IDX (INSN_LDSH_REG_REG), FULL (ldsh_reg_reg) FAST (ldsh_reg_reg) },
160 { TYPE (INSN_LDSH_REG_IMM), IDX (INSN_LDSH_REG_IMM), FULL (ldsh_reg_imm) FAST (ldsh_reg_imm) },
161 { TYPE (INSN_LDSH_REG_REG_ASI), IDX (INSN_LDSH_REG_REG_ASI), FULL (ldsh_reg_reg_asi) FAST (ldsh_reg_reg_asi) },
162 { TYPE (INSN_LDUH_REG_REG), IDX (INSN_LDUH_REG_REG), FULL (lduh_reg_reg) FAST (lduh_reg_reg) },
163 { TYPE (INSN_LDUH_REG_IMM), IDX (INSN_LDUH_REG_IMM), FULL (lduh_reg_imm) FAST (lduh_reg_imm) },
164 { TYPE (INSN_LDUH_REG_REG_ASI), IDX (INSN_LDUH_REG_REG_ASI), FULL (lduh_reg_reg_asi) FAST (lduh_reg_reg_asi) },
165 { TYPE (INSN_LDSW_REG_REG), IDX (INSN_LDSW_REG_REG), FULL (ldsw_reg_reg) FAST (ldsw_reg_reg) },
166 { TYPE (INSN_LDSW_REG_IMM), IDX (INSN_LDSW_REG_IMM), FULL (ldsw_reg_imm) FAST (ldsw_reg_imm) },
167 { TYPE (INSN_LDSW_REG_REG_ASI), IDX (INSN_LDSW_REG_REG_ASI), FULL (ldsw_reg_reg_asi) FAST (ldsw_reg_reg_asi) },
168 { TYPE (INSN_LDUW_REG_REG), IDX (INSN_LDUW_REG_REG), FULL (lduw_reg_reg) FAST (lduw_reg_reg) },
169 { TYPE (INSN_LDUW_REG_IMM), IDX (INSN_LDUW_REG_IMM), FULL (lduw_reg_imm) FAST (lduw_reg_imm) },
170 { TYPE (INSN_LDUW_REG_REG_ASI), IDX (INSN_LDUW_REG_REG_ASI), FULL (lduw_reg_reg_asi) FAST (lduw_reg_reg_asi) },
171 { TYPE (INSN_LDX_REG_REG), IDX (INSN_LDX_REG_REG), FULL (ldx_reg_reg) FAST (ldx_reg_reg) },
172 { TYPE (INSN_LDX_REG_IMM), IDX (INSN_LDX_REG_IMM), FULL (ldx_reg_imm) FAST (ldx_reg_imm) },
173 { TYPE (INSN_LDX_REG_REG_ASI), IDX (INSN_LDX_REG_REG_ASI), FULL (ldx_reg_reg_asi) FAST (ldx_reg_reg_asi) },
174 { TYPE (INSN_LDD_REG_REG), IDX (INSN_LDD_REG_REG), FULL (ldd_reg_reg) FAST (ldd_reg_reg) },
175 { TYPE (INSN_LDD_REG_IMM), IDX (INSN_LDD_REG_IMM), FULL (ldd_reg_imm) FAST (ldd_reg_imm) },
176 { TYPE (INSN_LDD_REG_REG_ASI), IDX (INSN_LDD_REG_REG_ASI), FULL (ldd_reg_reg_asi) FAST (ldd_reg_reg_asi) },
177 { TYPE (INSN_STB_REG_REG), IDX (INSN_STB_REG_REG), FULL (stb_reg_reg) FAST (stb_reg_reg) },
178 { TYPE (INSN_STB_REG_IMM), IDX (INSN_STB_REG_IMM), FULL (stb_reg_imm) FAST (stb_reg_imm) },
179 { TYPE (INSN_STB_REG_REG_ASI), IDX (INSN_STB_REG_REG_ASI), FULL (stb_reg_reg_asi) FAST (stb_reg_reg_asi) },
180 { TYPE (INSN_STH_REG_REG), IDX (INSN_STH_REG_REG), FULL (sth_reg_reg) FAST (sth_reg_reg) },
181 { TYPE (INSN_STH_REG_IMM), IDX (INSN_STH_REG_IMM), FULL (sth_reg_imm) FAST (sth_reg_imm) },
182 { TYPE (INSN_STH_REG_REG_ASI), IDX (INSN_STH_REG_REG_ASI), FULL (sth_reg_reg_asi) FAST (sth_reg_reg_asi) },
183 { TYPE (INSN_ST_REG_REG), IDX (INSN_ST_REG_REG), FULL (st_reg_reg) FAST (st_reg_reg) },
184 { TYPE (INSN_ST_REG_IMM), IDX (INSN_ST_REG_IMM), FULL (st_reg_imm) FAST (st_reg_imm) },
185 { TYPE (INSN_ST_REG_REG_ASI), IDX (INSN_ST_REG_REG_ASI), FULL (st_reg_reg_asi) FAST (st_reg_reg_asi) },
186 { TYPE (INSN_STX_REG_REG), IDX (INSN_STX_REG_REG), FULL (stx_reg_reg) FAST (stx_reg_reg) },
187 { TYPE (INSN_STX_REG_IMM), IDX (INSN_STX_REG_IMM), FULL (stx_reg_imm) FAST (stx_reg_imm) },
188 { TYPE (INSN_STX_REG_REG_ASI), IDX (INSN_STX_REG_REG_ASI), FULL (stx_reg_reg_asi) FAST (stx_reg_reg_asi) },
189 { TYPE (INSN_STD_REG_REG), IDX (INSN_STD_REG_REG), FULL (std_reg_reg) FAST (std_reg_reg) },
190 { TYPE (INSN_STD_REG_IMM), IDX (INSN_STD_REG_IMM), FULL (std_reg_imm) FAST (std_reg_imm) },
191 { TYPE (INSN_STD_REG_REG_ASI), IDX (INSN_STD_REG_REG_ASI), FULL (std_reg_reg_asi) FAST (std_reg_reg_asi) },
192 { TYPE (INSN_FP_LD_REG_REG), IDX (INSN_FP_LD_REG_REG), FULL (fp_ld_reg_reg) FAST (fp_ld_reg_reg) },
193 { TYPE (INSN_FP_LD_REG_IMM), IDX (INSN_FP_LD_REG_IMM), FULL (fp_ld_reg_imm) FAST (fp_ld_reg_imm) },
194 { TYPE (INSN_FP_LD_REG_REG_ASI), IDX (INSN_FP_LD_REG_REG_ASI), FULL (fp_ld_reg_reg_asi) FAST (fp_ld_reg_reg_asi) },
195 { TYPE (INSN_SETHI), IDX (INSN_SETHI), FULL (sethi) FAST (sethi) },
196 { TYPE (INSN_ADD), IDX (INSN_ADD), FULL (add) FAST (add) },
197 { TYPE (INSN_ADD_IMM), IDX (INSN_ADD_IMM), FULL (add_imm) FAST (add_imm) },
198 { TYPE (INSN_SUB), IDX (INSN_SUB), FULL (sub) FAST (sub) },
199 { TYPE (INSN_SUB_IMM), IDX (INSN_SUB_IMM), FULL (sub_imm) FAST (sub_imm) },
200 { TYPE (INSN_ADDCC), IDX (INSN_ADDCC), FULL (addcc) FAST (addcc) },
201 { TYPE (INSN_ADDCC_IMM), IDX (INSN_ADDCC_IMM), FULL (addcc_imm) FAST (addcc_imm) },
202 { TYPE (INSN_SUBCC), IDX (INSN_SUBCC), FULL (subcc) FAST (subcc) },
203 { TYPE (INSN_SUBCC_IMM), IDX (INSN_SUBCC_IMM), FULL (subcc_imm) FAST (subcc_imm) },
204 { TYPE (INSN_ADDC), IDX (INSN_ADDC), FULL (addc) FAST (addc) },
205 { TYPE (INSN_ADDC_IMM), IDX (INSN_ADDC_IMM), FULL (addc_imm) FAST (addc_imm) },
206 { TYPE (INSN_SUBC), IDX (INSN_SUBC), FULL (subc) FAST (subc) },
207 { TYPE (INSN_SUBC_IMM), IDX (INSN_SUBC_IMM), FULL (subc_imm) FAST (subc_imm) },
208 { TYPE (INSN_ADDCCC), IDX (INSN_ADDCCC), FULL (addccc) FAST (addccc) },
209 { TYPE (INSN_ADDCCC_IMM), IDX (INSN_ADDCCC_IMM), FULL (addccc_imm) FAST (addccc_imm) },
210 { TYPE (INSN_SUBCCC), IDX (INSN_SUBCCC), FULL (subccc) FAST (subccc) },
211 { TYPE (INSN_SUBCCC_IMM), IDX (INSN_SUBCCC_IMM), FULL (subccc_imm) FAST (subccc_imm) },
212 { TYPE (INSN_AND), IDX (INSN_AND), FULL (and) FAST (and) },
213 { TYPE (INSN_AND_IMM), IDX (INSN_AND_IMM), FULL (and_imm) FAST (and_imm) },
214 { TYPE (INSN_ANDCC), IDX (INSN_ANDCC), FULL (andcc) FAST (andcc) },
215 { TYPE (INSN_ANDCC_IMM), IDX (INSN_ANDCC_IMM), FULL (andcc_imm) FAST (andcc_imm) },
216 { TYPE (INSN_OR), IDX (INSN_OR), FULL (or) FAST (or) },
217 { TYPE (INSN_OR_IMM), IDX (INSN_OR_IMM), FULL (or_imm) FAST (or_imm) },
218 { TYPE (INSN_ORCC), IDX (INSN_ORCC), FULL (orcc) FAST (orcc) },
219 { TYPE (INSN_ORCC_IMM), IDX (INSN_ORCC_IMM), FULL (orcc_imm) FAST (orcc_imm) },
220 { TYPE (INSN_XOR), IDX (INSN_XOR), FULL (xor) FAST (xor) },
221 { TYPE (INSN_XOR_IMM), IDX (INSN_XOR_IMM), FULL (xor_imm) FAST (xor_imm) },
222 { TYPE (INSN_XORCC), IDX (INSN_XORCC), FULL (xorcc) FAST (xorcc) },
223 { TYPE (INSN_XORCC_IMM), IDX (INSN_XORCC_IMM), FULL (xorcc_imm) FAST (xorcc_imm) },
224 { TYPE (INSN_ANDN), IDX (INSN_ANDN), FULL (andn) FAST (andn) },
225 { TYPE (INSN_ANDN_IMM), IDX (INSN_ANDN_IMM), FULL (andn_imm) FAST (andn_imm) },
226 { TYPE (INSN_ANDNCC), IDX (INSN_ANDNCC), FULL (andncc) FAST (andncc) },
227 { TYPE (INSN_ANDNCC_IMM), IDX (INSN_ANDNCC_IMM), FULL (andncc_imm) FAST (andncc_imm) },
228 { TYPE (INSN_ORN), IDX (INSN_ORN), FULL (orn) FAST (orn) },
229 { TYPE (INSN_ORN_IMM), IDX (INSN_ORN_IMM), FULL (orn_imm) FAST (orn_imm) },
230 { TYPE (INSN_ORNCC), IDX (INSN_ORNCC), FULL (orncc) FAST (orncc) },
231 { TYPE (INSN_ORNCC_IMM), IDX (INSN_ORNCC_IMM), FULL (orncc_imm) FAST (orncc_imm) },
232 { TYPE (INSN_XNOR), IDX (INSN_XNOR), FULL (xnor) FAST (xnor) },
233 { TYPE (INSN_XNOR_IMM), IDX (INSN_XNOR_IMM), FULL (xnor_imm) FAST (xnor_imm) },
234 { TYPE (INSN_XNORCC), IDX (INSN_XNORCC), FULL (xnorcc) FAST (xnorcc) },
235 { TYPE (INSN_XNORCC_IMM), IDX (INSN_XNORCC_IMM), FULL (xnorcc_imm) FAST (xnorcc_imm) },
236 { TYPE (INSN_SLL), IDX (INSN_SLL), FULL (sll) FAST (sll) },
237 { TYPE (INSN_SLL_IMM), IDX (INSN_SLL_IMM), FULL (sll_imm) FAST (sll_imm) },
238 { TYPE (INSN_SRL), IDX (INSN_SRL), FULL (srl) FAST (srl) },
239 { TYPE (INSN_SRL_IMM), IDX (INSN_SRL_IMM), FULL (srl_imm) FAST (srl_imm) },
240 { TYPE (INSN_SRA), IDX (INSN_SRA), FULL (sra) FAST (sra) },
241 { TYPE (INSN_SRA_IMM), IDX (INSN_SRA_IMM), FULL (sra_imm) FAST (sra_imm) },
242 { TYPE (INSN_SMUL), IDX (INSN_SMUL), FULL (smul) FAST (smul) },
243 { TYPE (INSN_SMUL_IMM), IDX (INSN_SMUL_IMM), FULL (smul_imm) FAST (smul_imm) },
244 { TYPE (INSN_SMUL_CC), IDX (INSN_SMUL_CC), FULL (smul_cc) FAST (smul_cc) },
245 { TYPE (INSN_SMUL_CC_IMM), IDX (INSN_SMUL_CC_IMM), FULL (smul_cc_imm) FAST (smul_cc_imm) },
246 { TYPE (INSN_UMUL), IDX (INSN_UMUL), FULL (umul) FAST (umul) },
247 { TYPE (INSN_UMUL_IMM), IDX (INSN_UMUL_IMM), FULL (umul_imm) FAST (umul_imm) },
248 { TYPE (INSN_UMUL_CC), IDX (INSN_UMUL_CC), FULL (umul_cc) FAST (umul_cc) },
249 { TYPE (INSN_UMUL_CC_IMM), IDX (INSN_UMUL_CC_IMM), FULL (umul_cc_imm) FAST (umul_cc_imm) },
250 { TYPE (INSN_MULSCC), IDX (INSN_MULSCC), FULL (mulscc) FAST (mulscc) },
251 { TYPE (INSN_SAVE), IDX (INSN_SAVE), FULL (save) FAST (save) },
252 { TYPE (INSN_SAVE_IMM), IDX (INSN_SAVE_IMM), FULL (save_imm) FAST (save_imm) },
253 { TYPE (INSN_RESTORE), IDX (INSN_RESTORE), FULL (restore) FAST (restore) },
254 { TYPE (INSN_RESTORE_IMM), IDX (INSN_RESTORE_IMM), FULL (restore_imm) FAST (restore_imm) },
255 { TYPE (INSN_RETT), IDX (INSN_RETT), FULL (rett) FAST (rett) },
256 { TYPE (INSN_RETT_IMM), IDX (INSN_RETT_IMM), FULL (rett_imm) FAST (rett_imm) },
257 { TYPE (INSN_UNIMP), IDX (INSN_UNIMP), FULL (unimp) FAST (unimp) },
258 { TYPE (INSN_CALL), IDX (INSN_CALL), FULL (call) FAST (call) },
259 { TYPE (INSN_JMPL), IDX (INSN_JMPL), FULL (jmpl) FAST (jmpl) },
260 { TYPE (INSN_JMPL_IMM), IDX (INSN_JMPL_IMM), FULL (jmpl_imm) FAST (jmpl_imm) },
261 { TYPE (INSN_BA), IDX (INSN_BA), FULL (ba) FAST (ba) },
262 { TYPE (INSN_TA), IDX (INSN_TA), FULL (ta) FAST (ta) },
263 { TYPE (INSN_TA_IMM), IDX (INSN_TA_IMM), FULL (ta_imm) FAST (ta_imm) },
264 { TYPE (INSN_BN), IDX (INSN_BN), FULL (bn) FAST (bn) },
265 { TYPE (INSN_TN), IDX (INSN_TN), FULL (tn) FAST (tn) },
266 { TYPE (INSN_TN_IMM), IDX (INSN_TN_IMM), FULL (tn_imm) FAST (tn_imm) },
267 { TYPE (INSN_BNE), IDX (INSN_BNE), FULL (bne) FAST (bne) },
268 { TYPE (INSN_TNE), IDX (INSN_TNE), FULL (tne) FAST (tne) },
269 { TYPE (INSN_TNE_IMM), IDX (INSN_TNE_IMM), FULL (tne_imm) FAST (tne_imm) },
270 { TYPE (INSN_BE), IDX (INSN_BE), FULL (be) FAST (be) },
271 { TYPE (INSN_TE), IDX (INSN_TE), FULL (te) FAST (te) },
272 { TYPE (INSN_TE_IMM), IDX (INSN_TE_IMM), FULL (te_imm) FAST (te_imm) },
273 { TYPE (INSN_BG), IDX (INSN_BG), FULL (bg) FAST (bg) },
274 { TYPE (INSN_TG), IDX (INSN_TG), FULL (tg) FAST (tg) },
275 { TYPE (INSN_TG_IMM), IDX (INSN_TG_IMM), FULL (tg_imm) FAST (tg_imm) },
276 { TYPE (INSN_BLE), IDX (INSN_BLE), FULL (ble) FAST (ble) },
277 { TYPE (INSN_TLE), IDX (INSN_TLE), FULL (tle) FAST (tle) },
278 { TYPE (INSN_TLE_IMM), IDX (INSN_TLE_IMM), FULL (tle_imm) FAST (tle_imm) },
279 { TYPE (INSN_BGE), IDX (INSN_BGE), FULL (bge) FAST (bge) },
280 { TYPE (INSN_TGE), IDX (INSN_TGE), FULL (tge) FAST (tge) },
281 { TYPE (INSN_TGE_IMM), IDX (INSN_TGE_IMM), FULL (tge_imm) FAST (tge_imm) },
282 { TYPE (INSN_BL), IDX (INSN_BL), FULL (bl) FAST (bl) },
283 { TYPE (INSN_TL), IDX (INSN_TL), FULL (tl) FAST (tl) },
284 { TYPE (INSN_TL_IMM), IDX (INSN_TL_IMM), FULL (tl_imm) FAST (tl_imm) },
285 { TYPE (INSN_BGU), IDX (INSN_BGU), FULL (bgu) FAST (bgu) },
286 { TYPE (INSN_TGU), IDX (INSN_TGU), FULL (tgu) FAST (tgu) },
287 { TYPE (INSN_TGU_IMM), IDX (INSN_TGU_IMM), FULL (tgu_imm) FAST (tgu_imm) },
288 { TYPE (INSN_BLEU), IDX (INSN_BLEU), FULL (bleu) FAST (bleu) },
289 { TYPE (INSN_TLEU), IDX (INSN_TLEU), FULL (tleu) FAST (tleu) },
290 { TYPE (INSN_TLEU_IMM), IDX (INSN_TLEU_IMM), FULL (tleu_imm) FAST (tleu_imm) },
291 { TYPE (INSN_BCC), IDX (INSN_BCC), FULL (bcc) FAST (bcc) },
292 { TYPE (INSN_TCC), IDX (INSN_TCC), FULL (tcc) FAST (tcc) },
293 { TYPE (INSN_TCC_IMM), IDX (INSN_TCC_IMM), FULL (tcc_imm) FAST (tcc_imm) },
294 { TYPE (INSN_BCS), IDX (INSN_BCS), FULL (bcs) FAST (bcs) },
295 { TYPE (INSN_TCS), IDX (INSN_TCS), FULL (tcs) FAST (tcs) },
296 { TYPE (INSN_TCS_IMM), IDX (INSN_TCS_IMM), FULL (tcs_imm) FAST (tcs_imm) },
297 { TYPE (INSN_BPOS), IDX (INSN_BPOS), FULL (bpos) FAST (bpos) },
298 { TYPE (INSN_TPOS), IDX (INSN_TPOS), FULL (tpos) FAST (tpos) },
299 { TYPE (INSN_TPOS_IMM), IDX (INSN_TPOS_IMM), FULL (tpos_imm) FAST (tpos_imm) },
300 { TYPE (INSN_BNEG), IDX (INSN_BNEG), FULL (bneg) FAST (bneg) },
301 { TYPE (INSN_TNEG), IDX (INSN_TNEG), FULL (tneg) FAST (tneg) },
302 { TYPE (INSN_TNEG_IMM), IDX (INSN_TNEG_IMM), FULL (tneg_imm) FAST (tneg_imm) },
303 { TYPE (INSN_BVC), IDX (INSN_BVC), FULL (bvc) FAST (bvc) },
304 { TYPE (INSN_TVC), IDX (INSN_TVC), FULL (tvc) FAST (tvc) },
305 { TYPE (INSN_TVC_IMM), IDX (INSN_TVC_IMM), FULL (tvc_imm) FAST (tvc_imm) },
306 { TYPE (INSN_BVS), IDX (INSN_BVS), FULL (bvs) FAST (bvs) },
307 { TYPE (INSN_TVS), IDX (INSN_TVS), FULL (tvs) FAST (tvs) },
308 { TYPE (INSN_TVS_IMM), IDX (INSN_TVS_IMM), FULL (tvs_imm) FAST (tvs_imm) },
309 { TYPE (INSN_LDSTUB_REG_REG), IDX (INSN_LDSTUB_REG_REG), FULL (ldstub_reg_reg) FAST (ldstub_reg_reg) },
310 { TYPE (INSN_LDSTUB_REG_IMM), IDX (INSN_LDSTUB_REG_IMM), FULL (ldstub_reg_imm) FAST (ldstub_reg_imm) },
311 { TYPE (INSN_LDSTUB_REG_REG_ASI), IDX (INSN_LDSTUB_REG_REG_ASI), FULL (ldstub_reg_reg_asi) FAST (ldstub_reg_reg_asi) },
312 { TYPE (INSN_SWAP_REG_REG), IDX (INSN_SWAP_REG_REG), FULL (swap_reg_reg) FAST (swap_reg_reg) },
313 { TYPE (INSN_SWAP_REG_IMM), IDX (INSN_SWAP_REG_IMM), FULL (swap_reg_imm) FAST (swap_reg_imm) },
314 { TYPE (INSN_SWAP_REG_REG_ASI), IDX (INSN_SWAP_REG_REG_ASI), FULL (swap_reg_reg_asi) FAST (swap_reg_reg_asi) },
315 };
316
317 static const struct insn_sem sparc64_insn_sem_invalid =
318 {
319 VIRTUAL_INSN_X_INVALID, IDX (INSN_X_INVALID), FULL (x_invalid) FAST (x_invalid)
320 };
321
322 #undef IDX
323 #undef TYPE
324
325 /* Initialize an IDESC from the compile-time computable parts. */
326
327 static INLINE void
328 init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
329 {
330 const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
331
332 id->num = t->index;
333 if ((int) t->type <= 0)
334 id->idata = & cgen_virtual_insn_table[- (int) t->type];
335 else
336 id->idata = & insn_table[t->type];
337 id->attrs = CGEN_INSN_ATTRS (id->idata);
338 /* Oh my god, a magic number. */
339 id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
340 #if ! WITH_SEM_SWITCH_FULL
341 id->sem_full = t->sem_full;
342 #endif
343 #if WITH_FAST && ! WITH_SEM_SWITCH_FAST
344 id->sem_fast = t->sem_fast;
345 #endif
346 #if WITH_PROFILE_MODEL_P
347 id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
348 {
349 SIM_DESC sd = CPU_STATE (cpu);
350 SIM_ASSERT (t->index == id->timing->num);
351 }
352 #endif
353 }
354
355 /* Initialize the instruction descriptor table. */
356
357 void
358 sparc64_init_idesc_table (SIM_CPU *cpu)
359 {
360 IDESC *id,*tabend;
361 const struct insn_sem *t,*tend;
362 int tabsize = SPARC64_INSN_MAX;
363 IDESC *table = sparc64_insn_data;
364
365 memset (table, 0, tabsize * sizeof (IDESC));
366
367 /* First set all entries to the `invalid insn'. */
368 t = & sparc64_insn_sem_invalid;
369 for (id = table, tabend = table + tabsize; id < tabend; ++id)
370 init_idesc (cpu, id, t);
371
372 /* Now fill in the values for the chosen cpu. */
373 for (t = sparc64_insn_sem, tend = t + sizeof (sparc64_insn_sem) / sizeof (*t);
374 t != tend; ++t)
375 {
376 init_idesc (cpu, & table[t->index], t);
377 }
378
379 /* Link the IDESC table into the cpu. */
380 CPU_IDESC (cpu) = table;
381 }
382
383 #define GOTO_EXTRACT(id) goto extract
384
385 /* The decoder needs a slightly different computed goto switch control. */
386 #ifdef __GNUC__
387 #define DECODE_SWITCH(N, X) goto *labels_##N[X];
388 #else
389 #define DECODE_SWITCH(N, X) switch (X)
390 #endif
391
392 /* Given an instruction, return a pointer to its IDESC entry. */
393
394 const IDESC *
395 sparc64_decode (SIM_CPU *current_cpu, IADDR pc,
396 CGEN_INSN_INT base_insn, CGEN_INSN_INT entire_insn,
397 ARGBUF *abuf)
398 {
399 /* Result. */
400 const IDESC *idecode;
401
402 {
403 #define I(insn) & sparc64_insn_data[CONCAT2 (SPARC64_,insn)]
404 CGEN_INSN_INT insn = base_insn;
405 static const IDESC *idecode_invalid = I (INSN_X_INVALID);
406
407 {
408 #ifdef __GNUC__
409 static const void *labels_0[256] = {
410 && default_0, && default_0, && default_0, && default_0,
411 && default_0, && default_0, && default_0, && default_0,
412 && default_0, && default_0, && default_0, && default_0,
413 && case_0_12, && case_0_13, && default_0, && default_0,
414 && case_0_16, && case_0_17, && case_0_18, && case_0_19,
415 && case_0_20, && case_0_21, && case_0_22, && case_0_23,
416 && case_0_24, && case_0_25, && case_0_26, && case_0_27,
417 && case_0_28, && case_0_29, && case_0_30, && case_0_31,
418 && default_0, && default_0, && default_0, && default_0,
419 && default_0, && default_0, && default_0, && default_0,
420 && default_0, && default_0, && default_0, && default_0,
421 && default_0, && default_0, && default_0, && default_0,
422 && default_0, && default_0, && default_0, && default_0,
423 && default_0, && default_0, && default_0, && default_0,
424 && default_0, && default_0, && default_0, && default_0,
425 && default_0, && default_0, && default_0, && default_0,
426 && default_0, && default_0, && default_0, && default_0,
427 && default_0, && default_0, && default_0, && default_0,
428 && default_0, && default_0, && default_0, && default_0,
429 && default_0, && default_0, && default_0, && default_0,
430 && default_0, && default_0, && default_0, && default_0,
431 && default_0, && default_0, && default_0, && default_0,
432 && default_0, && default_0, && default_0, && default_0,
433 && default_0, && default_0, && default_0, && default_0,
434 && default_0, && default_0, && default_0, && default_0,
435 && default_0, && default_0, && default_0, && default_0,
436 && default_0, && default_0, && default_0, && default_0,
437 && default_0, && default_0, && default_0, && default_0,
438 && default_0, && default_0, && default_0, && default_0,
439 && default_0, && default_0, && default_0, && default_0,
440 && default_0, && default_0, && default_0, && default_0,
441 && default_0, && default_0, && default_0, && default_0,
442 && case_0_128, && case_0_129, && case_0_130, && case_0_131,
443 && case_0_132, && case_0_133, && case_0_134, && case_0_135,
444 && case_0_136, && default_0, && case_0_138, && case_0_139,
445 && case_0_140, && default_0, && default_0, && default_0,
446 && case_0_144, && case_0_145, && case_0_146, && case_0_147,
447 && case_0_148, && case_0_149, && case_0_150, && case_0_151,
448 && case_0_152, && default_0, && case_0_154, && case_0_155,
449 && case_0_156, && default_0, && default_0, && default_0,
450 && default_0, && default_0, && default_0, && default_0,
451 && default_0, && case_0_165, && case_0_166, && case_0_167,
452 && default_0, && default_0, && default_0, && default_0,
453 && case_0_172, && default_0, && default_0, && default_0,
454 && default_0, && default_0, && default_0, && default_0,
455 && default_0, && default_0, && default_0, && default_0,
456 && case_0_184, && case_0_185, && case_0_186, && case_0_187,
457 && case_0_188, && case_0_189, && case_0_190, && default_0,
458 && case_0_192, && case_0_193, && case_0_194, && case_0_195,
459 && case_0_196, && case_0_197, && case_0_198, && case_0_199,
460 && case_0_200, && case_0_201, && case_0_202, && case_0_203,
461 && default_0, && case_0_205, && case_0_206, && case_0_207,
462 && default_0, && default_0, && default_0, && default_0,
463 && default_0, && default_0, && default_0, && default_0,
464 && default_0, && default_0, && default_0, && default_0,
465 && default_0, && default_0, && default_0, && default_0,
466 && case_0_224, && default_0, && default_0, && default_0,
467 && default_0, && default_0, && default_0, && default_0,
468 && default_0, && default_0, && default_0, && default_0,
469 && default_0, && default_0, && default_0, && default_0,
470 && default_0, && default_0, && default_0, && default_0,
471 && default_0, && default_0, && default_0, && default_0,
472 && default_0, && default_0, && default_0, && default_0,
473 && default_0, && default_0, && default_0, && default_0,
474 };
475 #endif
476 static const IDESC * insns[256] = {
477 I (INSN_UNIMP), I (INSN_UNIMP),
478 I (INSN_UNIMP), I (INSN_UNIMP),
479 I (INSN_UNIMP), I (INSN_UNIMP),
480 I (INSN_UNIMP), I (INSN_UNIMP),
481 I (INSN_X_INVALID), I (INSN_X_INVALID),
482 I (INSN_X_INVALID), I (INSN_X_INVALID),
483 0, 0,
484 I (INSN_X_INVALID), I (INSN_X_INVALID),
485 0, 0,
486 0, 0,
487 0, 0,
488 0, 0,
489 0, 0,
490 0, 0,
491 0, 0,
492 0, 0,
493 I (INSN_SETHI), I (INSN_SETHI),
494 I (INSN_SETHI), I (INSN_SETHI),
495 I (INSN_SETHI), I (INSN_SETHI),
496 I (INSN_SETHI), I (INSN_SETHI),
497 I (INSN_X_INVALID), I (INSN_X_INVALID),
498 I (INSN_X_INVALID), I (INSN_X_INVALID),
499 I (INSN_X_INVALID), I (INSN_X_INVALID),
500 I (INSN_X_INVALID), I (INSN_X_INVALID),
501 I (INSN_X_INVALID), I (INSN_X_INVALID),
502 I (INSN_X_INVALID), I (INSN_X_INVALID),
503 I (INSN_X_INVALID), I (INSN_X_INVALID),
504 I (INSN_X_INVALID), I (INSN_X_INVALID),
505 I (INSN_X_INVALID), I (INSN_X_INVALID),
506 I (INSN_X_INVALID), I (INSN_X_INVALID),
507 I (INSN_X_INVALID), I (INSN_X_INVALID),
508 I (INSN_X_INVALID), I (INSN_X_INVALID),
509 I (INSN_CALL), I (INSN_CALL),
510 I (INSN_CALL), I (INSN_CALL),
511 I (INSN_CALL), I (INSN_CALL),
512 I (INSN_CALL), I (INSN_CALL),
513 I (INSN_CALL), I (INSN_CALL),
514 I (INSN_CALL), I (INSN_CALL),
515 I (INSN_CALL), I (INSN_CALL),
516 I (INSN_CALL), I (INSN_CALL),
517 I (INSN_CALL), I (INSN_CALL),
518 I (INSN_CALL), I (INSN_CALL),
519 I (INSN_CALL), I (INSN_CALL),
520 I (INSN_CALL), I (INSN_CALL),
521 I (INSN_CALL), I (INSN_CALL),
522 I (INSN_CALL), I (INSN_CALL),
523 I (INSN_CALL), I (INSN_CALL),
524 I (INSN_CALL), I (INSN_CALL),
525 I (INSN_CALL), I (INSN_CALL),
526 I (INSN_CALL), I (INSN_CALL),
527 I (INSN_CALL), I (INSN_CALL),
528 I (INSN_CALL), I (INSN_CALL),
529 I (INSN_CALL), I (INSN_CALL),
530 I (INSN_CALL), I (INSN_CALL),
531 I (INSN_CALL), I (INSN_CALL),
532 I (INSN_CALL), I (INSN_CALL),
533 I (INSN_CALL), I (INSN_CALL),
534 I (INSN_CALL), I (INSN_CALL),
535 I (INSN_CALL), I (INSN_CALL),
536 I (INSN_CALL), I (INSN_CALL),
537 I (INSN_CALL), I (INSN_CALL),
538 I (INSN_CALL), I (INSN_CALL),
539 I (INSN_CALL), I (INSN_CALL),
540 I (INSN_CALL), I (INSN_CALL),
541 0, 0,
542 0, 0,
543 0, 0,
544 0, 0,
545 0, I (INSN_X_INVALID),
546 0, 0,
547 0, I (INSN_X_INVALID),
548 I (INSN_X_INVALID), I (INSN_X_INVALID),
549 0, 0,
550 0, 0,
551 0, 0,
552 0, 0,
553 0, I (INSN_X_INVALID),
554 0, 0,
555 0, I (INSN_X_INVALID),
556 I (INSN_X_INVALID), I (INSN_X_INVALID),
557 I (INSN_X_INVALID), I (INSN_X_INVALID),
558 I (INSN_X_INVALID), I (INSN_X_INVALID),
559 I (INSN_MULSCC), 0,
560 0, 0,
561 I (INSN_MEMBAR), I (INSN_X_INVALID),
562 I (INSN_X_INVALID), I (INSN_FLUSHW),
563 0, I (INSN_X_INVALID),
564 I (INSN_X_INVALID), I (INSN_X_INVALID),
565 I (INSN_X_INVALID), I (INSN_X_INVALID),
566 I (INSN_X_INVALID), I (INSN_X_INVALID),
567 I (INSN_X_INVALID), I (INSN_X_INVALID),
568 I (INSN_IMPDEP1), I (INSN_IMPDEP2),
569 0, 0,
570 0, 0,
571 0, 0,
572 0, I (INSN_X_INVALID),
573 0, 0,
574 0, 0,
575 0, 0,
576 0, 0,
577 0, 0,
578 0, 0,
579 I (INSN_X_INVALID), 0,
580 0, 0,
581 I (INSN_LDUW_REG_REG_ASI), I (INSN_LDUB_REG_REG_ASI),
582 I (INSN_LDUH_REG_REG_ASI), I (INSN_LDD_REG_REG_ASI),
583 I (INSN_ST_REG_REG_ASI), I (INSN_STB_REG_REG_ASI),
584 I (INSN_STH_REG_REG_ASI), I (INSN_STD_REG_REG_ASI),
585 I (INSN_LDSW_REG_REG_ASI), I (INSN_LDSB_REG_REG_ASI),
586 I (INSN_LDSH_REG_REG_ASI), I (INSN_LDX_REG_REG_ASI),
587 I (INSN_X_INVALID), I (INSN_LDSTUB_REG_REG_ASI),
588 I (INSN_STX_REG_REG_ASI), I (INSN_SWAP_REG_REG_ASI),
589 0, I (INSN_X_INVALID),
590 I (INSN_X_INVALID), I (INSN_X_INVALID),
591 I (INSN_X_INVALID), I (INSN_X_INVALID),
592 I (INSN_X_INVALID), I (INSN_X_INVALID),
593 I (INSN_X_INVALID), I (INSN_X_INVALID),
594 I (INSN_X_INVALID), I (INSN_X_INVALID),
595 I (INSN_X_INVALID), I (INSN_X_INVALID),
596 I (INSN_X_INVALID), I (INSN_X_INVALID),
597 I (INSN_FP_LD_REG_REG_ASI), I (INSN_X_INVALID),
598 I (INSN_X_INVALID), I (INSN_X_INVALID),
599 I (INSN_X_INVALID), I (INSN_X_INVALID),
600 I (INSN_X_INVALID), I (INSN_X_INVALID),
601 I (INSN_X_INVALID), I (INSN_X_INVALID),
602 I (INSN_X_INVALID), I (INSN_X_INVALID),
603 I (INSN_X_INVALID), I (INSN_X_INVALID),
604 I (INSN_X_INVALID), I (INSN_X_INVALID),
605 };
606 unsigned int val;
607 val = (((insn >> 24) & (3 << 6)) | ((insn >> 19) & (63 << 0)));
608 DECODE_SWITCH (0, val)
609 {
610 CASE (0, 12) : /* fall through */
611 CASE (0, 13) :
612 {
613 static const IDESC * insns[16] = {
614 I (INSN_BPCC_BN), I (INSN_BPCC_BE),
615 I (INSN_BPCC_BLE), I (INSN_BPCC_BL),
616 I (INSN_BPCC_BLEU), I (INSN_BPCC_BCS),
617 I (INSN_BPCC_BNEG), I (INSN_BPCC_BVS),
618 I (INSN_BPCC_BA), I (INSN_BPCC_BNE),
619 I (INSN_BPCC_BG), I (INSN_BPCC_BGE),
620 I (INSN_BPCC_BGU), I (INSN_BPCC_BCC),
621 I (INSN_BPCC_BPOS), I (INSN_BPCC_BVC),
622 };
623 unsigned int val = (((insn >> 25) & (15 << 0)));
624 idecode = insns[val];
625 GOTO_EXTRACT (idecode);
626 }
627 CASE (0, 16) : /* fall through */
628 CASE (0, 17) : /* fall through */
629 CASE (0, 18) : /* fall through */
630 CASE (0, 19) : /* fall through */
631 CASE (0, 20) : /* fall through */
632 CASE (0, 21) : /* fall through */
633 CASE (0, 22) : /* fall through */
634 CASE (0, 23) :
635 {
636 static const IDESC * insns[16] = {
637 I (INSN_BN), I (INSN_BE),
638 I (INSN_BLE), I (INSN_BL),
639 I (INSN_BLEU), I (INSN_BCS),
640 I (INSN_BNEG), I (INSN_BVS),
641 I (INSN_BA), I (INSN_BNE),
642 I (INSN_BG), I (INSN_BGE),
643 I (INSN_BGU), I (INSN_BCC),
644 I (INSN_BPOS), I (INSN_BVC),
645 };
646 unsigned int val = (((insn >> 25) & (15 << 0)));
647 idecode = insns[val];
648 GOTO_EXTRACT (idecode);
649 }
650 CASE (0, 24) : /* fall through */
651 CASE (0, 25) : /* fall through */
652 CASE (0, 26) : /* fall through */
653 CASE (0, 27) : /* fall through */
654 CASE (0, 28) : /* fall through */
655 CASE (0, 29) : /* fall through */
656 CASE (0, 30) : /* fall through */
657 CASE (0, 31) :
658 {
659 static const IDESC * insns[8] = {
660 I (INSN_X_INVALID), I (INSN_BEQZ),
661 I (INSN_BLEZ), I (INSN_BLTZ),
662 I (INSN_X_INVALID), I (INSN_BNEZ),
663 I (INSN_BGTZ), I (INSN_BGEZ),
664 };
665 unsigned int val = (((insn >> 25) & (7 << 0)));
666 idecode = insns[val];
667 GOTO_EXTRACT (idecode);
668 }
669 CASE (0, 128) :
670 {
671 static const IDESC * insns[2] = {
672 I (INSN_ADD), I (INSN_ADD_IMM),
673 };
674 unsigned int val = (((insn >> 13) & (1 << 0)));
675 idecode = insns[val];
676 GOTO_EXTRACT (idecode);
677 }
678 CASE (0, 129) :
679 {
680 static const IDESC * insns[2] = {
681 I (INSN_AND), I (INSN_AND_IMM),
682 };
683 unsigned int val = (((insn >> 13) & (1 << 0)));
684 idecode = insns[val];
685 GOTO_EXTRACT (idecode);
686 }
687 CASE (0, 130) :
688 {
689 static const IDESC * insns[2] = {
690 I (INSN_OR), I (INSN_OR_IMM),
691 };
692 unsigned int val = (((insn >> 13) & (1 << 0)));
693 idecode = insns[val];
694 GOTO_EXTRACT (idecode);
695 }
696 CASE (0, 131) :
697 {
698 static const IDESC * insns[2] = {
699 I (INSN_XOR), I (INSN_XOR_IMM),
700 };
701 unsigned int val = (((insn >> 13) & (1 << 0)));
702 idecode = insns[val];
703 GOTO_EXTRACT (idecode);
704 }
705 CASE (0, 132) :
706 {
707 static const IDESC * insns[2] = {
708 I (INSN_SUB), I (INSN_SUB_IMM),
709 };
710 unsigned int val = (((insn >> 13) & (1 << 0)));
711 idecode = insns[val];
712 GOTO_EXTRACT (idecode);
713 }
714 CASE (0, 133) :
715 {
716 static const IDESC * insns[2] = {
717 I (INSN_ANDN), I (INSN_ANDN_IMM),
718 };
719 unsigned int val = (((insn >> 13) & (1 << 0)));
720 idecode = insns[val];
721 GOTO_EXTRACT (idecode);
722 }
723 CASE (0, 134) :
724 {
725 static const IDESC * insns[2] = {
726 I (INSN_ORN), I (INSN_ORN_IMM),
727 };
728 unsigned int val = (((insn >> 13) & (1 << 0)));
729 idecode = insns[val];
730 GOTO_EXTRACT (idecode);
731 }
732 CASE (0, 135) :
733 {
734 static const IDESC * insns[2] = {
735 I (INSN_XNOR), I (INSN_XNOR_IMM),
736 };
737 unsigned int val = (((insn >> 13) & (1 << 0)));
738 idecode = insns[val];
739 GOTO_EXTRACT (idecode);
740 }
741 CASE (0, 136) :
742 {
743 static const IDESC * insns[2] = {
744 I (INSN_ADDC), I (INSN_ADDC_IMM),
745 };
746 unsigned int val = (((insn >> 13) & (1 << 0)));
747 idecode = insns[val];
748 GOTO_EXTRACT (idecode);
749 }
750 CASE (0, 138) :
751 {
752 static const IDESC * insns[2] = {
753 I (INSN_UMUL), I (INSN_UMUL_IMM),
754 };
755 unsigned int val = (((insn >> 13) & (1 << 0)));
756 idecode = insns[val];
757 GOTO_EXTRACT (idecode);
758 }
759 CASE (0, 139) :
760 {
761 static const IDESC * insns[2] = {
762 I (INSN_SMUL), I (INSN_SMUL_IMM),
763 };
764 unsigned int val = (((insn >> 13) & (1 << 0)));
765 idecode = insns[val];
766 GOTO_EXTRACT (idecode);
767 }
768 CASE (0, 140) :
769 {
770 static const IDESC * insns[2] = {
771 I (INSN_SUBC), I (INSN_SUBC_IMM),
772 };
773 unsigned int val = (((insn >> 13) & (1 << 0)));
774 idecode = insns[val];
775 GOTO_EXTRACT (idecode);
776 }
777 CASE (0, 144) :
778 {
779 static const IDESC * insns[2] = {
780 I (INSN_ADDCC), I (INSN_ADDCC_IMM),
781 };
782 unsigned int val = (((insn >> 13) & (1 << 0)));
783 idecode = insns[val];
784 GOTO_EXTRACT (idecode);
785 }
786 CASE (0, 145) :
787 {
788 static const IDESC * insns[2] = {
789 I (INSN_ANDCC), I (INSN_ANDCC_IMM),
790 };
791 unsigned int val = (((insn >> 13) & (1 << 0)));
792 idecode = insns[val];
793 GOTO_EXTRACT (idecode);
794 }
795 CASE (0, 146) :
796 {
797 static const IDESC * insns[2] = {
798 I (INSN_ORCC), I (INSN_ORCC_IMM),
799 };
800 unsigned int val = (((insn >> 13) & (1 << 0)));
801 idecode = insns[val];
802 GOTO_EXTRACT (idecode);
803 }
804 CASE (0, 147) :
805 {
806 static const IDESC * insns[2] = {
807 I (INSN_XORCC), I (INSN_XORCC_IMM),
808 };
809 unsigned int val = (((insn >> 13) & (1 << 0)));
810 idecode = insns[val];
811 GOTO_EXTRACT (idecode);
812 }
813 CASE (0, 148) :
814 {
815 static const IDESC * insns[2] = {
816 I (INSN_SUBCC), I (INSN_SUBCC_IMM),
817 };
818 unsigned int val = (((insn >> 13) & (1 << 0)));
819 idecode = insns[val];
820 GOTO_EXTRACT (idecode);
821 }
822 CASE (0, 149) :
823 {
824 static const IDESC * insns[2] = {
825 I (INSN_ANDNCC), I (INSN_ANDNCC_IMM),
826 };
827 unsigned int val = (((insn >> 13) & (1 << 0)));
828 idecode = insns[val];
829 GOTO_EXTRACT (idecode);
830 }
831 CASE (0, 150) :
832 {
833 static const IDESC * insns[2] = {
834 I (INSN_ORNCC), I (INSN_ORNCC_IMM),
835 };
836 unsigned int val = (((insn >> 13) & (1 << 0)));
837 idecode = insns[val];
838 GOTO_EXTRACT (idecode);
839 }
840 CASE (0, 151) :
841 {
842 static const IDESC * insns[2] = {
843 I (INSN_XNORCC), I (INSN_XNORCC_IMM),
844 };
845 unsigned int val = (((insn >> 13) & (1 << 0)));
846 idecode = insns[val];
847 GOTO_EXTRACT (idecode);
848 }
849 CASE (0, 152) :
850 {
851 static const IDESC * insns[2] = {
852 I (INSN_ADDCCC), I (INSN_ADDCCC_IMM),
853 };
854 unsigned int val = (((insn >> 13) & (1 << 0)));
855 idecode = insns[val];
856 GOTO_EXTRACT (idecode);
857 }
858 CASE (0, 154) :
859 {
860 static const IDESC * insns[2] = {
861 I (INSN_UMUL_CC), I (INSN_UMUL_CC_IMM),
862 };
863 unsigned int val = (((insn >> 13) & (1 << 0)));
864 idecode = insns[val];
865 GOTO_EXTRACT (idecode);
866 }
867 CASE (0, 155) :
868 {
869 static const IDESC * insns[2] = {
870 I (INSN_SMUL_CC), I (INSN_SMUL_CC_IMM),
871 };
872 unsigned int val = (((insn >> 13) & (1 << 0)));
873 idecode = insns[val];
874 GOTO_EXTRACT (idecode);
875 }
876 CASE (0, 156) :
877 {
878 static const IDESC * insns[2] = {
879 I (INSN_SUBCCC), I (INSN_SUBCCC_IMM),
880 };
881 unsigned int val = (((insn >> 13) & (1 << 0)));
882 idecode = insns[val];
883 GOTO_EXTRACT (idecode);
884 }
885 CASE (0, 165) :
886 {
887 static const IDESC * insns[2] = {
888 I (INSN_SLL), I (INSN_SLL_IMM),
889 };
890 unsigned int val = (((insn >> 13) & (1 << 0)));
891 idecode = insns[val];
892 GOTO_EXTRACT (idecode);
893 }
894 CASE (0, 166) :
895 {
896 static const IDESC * insns[2] = {
897 I (INSN_SRL), I (INSN_SRL_IMM),
898 };
899 unsigned int val = (((insn >> 13) & (1 << 0)));
900 idecode = insns[val];
901 GOTO_EXTRACT (idecode);
902 }
903 CASE (0, 167) :
904 {
905 static const IDESC * insns[2] = {
906 I (INSN_SRA), I (INSN_SRA_IMM),
907 };
908 unsigned int val = (((insn >> 13) & (1 << 0)));
909 idecode = insns[val];
910 GOTO_EXTRACT (idecode);
911 }
912 CASE (0, 172) :
913 {
914 #ifdef __GNUC__
915 static const void *labels_0_172[16] = {
916 && case_0_172_0, && case_0_172_1, && case_0_172_2, && case_0_172_3,
917 && case_0_172_4, && case_0_172_5, && case_0_172_6, && case_0_172_7,
918 && case_0_172_8, && case_0_172_9, && case_0_172_10, && case_0_172_11,
919 && case_0_172_12, && case_0_172_13, && case_0_172_14, && case_0_172_15,
920 };
921 #endif
922 unsigned int val;
923 val = (((insn >> 25) & (15 << 0)));
924 DECODE_SWITCH (0_172, val)
925 {
926 CASE (0_172, 0) :
927 {
928 static const IDESC * insns[16] = {
929 I (INSN_X_INVALID), I (INSN_X_INVALID),
930 I (INSN_X_INVALID), I (INSN_X_INVALID),
931 I (INSN_X_INVALID), I (INSN_X_INVALID),
932 I (INSN_X_INVALID), I (INSN_X_INVALID),
933 I (INSN_MOVN_ICC_ICC), I (INSN_X_INVALID),
934 I (INSN_MOVN_XCC_XCC), I (INSN_X_INVALID),
935 I (INSN_MOVN_IMM_ICC_ICC), I (INSN_X_INVALID),
936 I (INSN_MOVN_IMM_XCC_XCC), I (INSN_X_INVALID),
937 };
938 unsigned int val = (((insn >> 15) & (1 << 3)) | ((insn >> 11) & (7 << 0)));
939 idecode = insns[val];
940 GOTO_EXTRACT (idecode);
941 }
942 CASE (0_172, 1) :
943 {
944 static const IDESC * insns[16] = {
945 I (INSN_X_INVALID), I (INSN_X_INVALID),
946 I (INSN_X_INVALID), I (INSN_X_INVALID),
947 I (INSN_X_INVALID), I (INSN_X_INVALID),
948 I (INSN_X_INVALID), I (INSN_X_INVALID),
949 I (INSN_MOVE_ICC_ICC), I (INSN_X_INVALID),
950 I (INSN_MOVE_XCC_XCC), I (INSN_X_INVALID),
951 I (INSN_MOVE_IMM_ICC_ICC), I (INSN_X_INVALID),
952 I (INSN_MOVE_IMM_XCC_XCC), I (INSN_X_INVALID),
953 };
954 unsigned int val = (((insn >> 15) & (1 << 3)) | ((insn >> 11) & (7 << 0)));
955 idecode = insns[val];
956 GOTO_EXTRACT (idecode);
957 }
958 CASE (0_172, 2) :
959 {
960 static const IDESC * insns[16] = {
961 I (INSN_X_INVALID), I (INSN_X_INVALID),
962 I (INSN_X_INVALID), I (INSN_X_INVALID),
963 I (INSN_X_INVALID), I (INSN_X_INVALID),
964 I (INSN_X_INVALID), I (INSN_X_INVALID),
965 I (INSN_MOVLE_ICC_ICC), I (INSN_X_INVALID),
966 I (INSN_MOVLE_XCC_XCC), I (INSN_X_INVALID),
967 I (INSN_MOVLE_IMM_ICC_ICC), I (INSN_X_INVALID),
968 I (INSN_MOVLE_IMM_XCC_XCC), I (INSN_X_INVALID),
969 };
970 unsigned int val = (((insn >> 15) & (1 << 3)) | ((insn >> 11) & (7 << 0)));
971 idecode = insns[val];
972 GOTO_EXTRACT (idecode);
973 }
974 CASE (0_172, 3) :
975 {
976 static const IDESC * insns[16] = {
977 I (INSN_X_INVALID), I (INSN_X_INVALID),
978 I (INSN_X_INVALID), I (INSN_X_INVALID),
979 I (INSN_X_INVALID), I (INSN_X_INVALID),
980 I (INSN_X_INVALID), I (INSN_X_INVALID),
981 I (INSN_MOVL_ICC_ICC), I (INSN_X_INVALID),
982 I (INSN_MOVL_XCC_XCC), I (INSN_X_INVALID),
983 I (INSN_MOVL_IMM_ICC_ICC), I (INSN_X_INVALID),
984 I (INSN_MOVL_IMM_XCC_XCC), I (INSN_X_INVALID),
985 };
986 unsigned int val = (((insn >> 15) & (1 << 3)) | ((insn >> 11) & (7 << 0)));
987 idecode = insns[val];
988 GOTO_EXTRACT (idecode);
989 }
990 CASE (0_172, 4) :
991 {
992 static const IDESC * insns[16] = {
993 I (INSN_X_INVALID), I (INSN_X_INVALID),
994 I (INSN_X_INVALID), I (INSN_X_INVALID),
995 I (INSN_X_INVALID), I (INSN_X_INVALID),
996 I (INSN_X_INVALID), I (INSN_X_INVALID),
997 I (INSN_MOVLEU_ICC_ICC), I (INSN_X_INVALID),
998 I (INSN_MOVLEU_XCC_XCC), I (INSN_X_INVALID),
999 I (INSN_MOVLEU_IMM_ICC_ICC), I (INSN_X_INVALID),
1000 I (INSN_MOVLEU_IMM_XCC_XCC), I (INSN_X_INVALID),
1001 };
1002 unsigned int val = (((insn >> 15) & (1 << 3)) | ((insn >> 11) & (7 << 0)));
1003 idecode = insns[val];
1004 GOTO_EXTRACT (idecode);
1005 }
1006 CASE (0_172, 5) :
1007 {
1008 static const IDESC * insns[16] = {
1009 I (INSN_X_INVALID), I (INSN_X_INVALID),
1010 I (INSN_X_INVALID), I (INSN_X_INVALID),
1011 I (INSN_X_INVALID), I (INSN_X_INVALID),
1012 I (INSN_X_INVALID), I (INSN_X_INVALID),
1013 I (INSN_MOVCS_ICC_ICC), I (INSN_X_INVALID),
1014 I (INSN_MOVCS_XCC_XCC), I (INSN_X_INVALID),
1015 I (INSN_MOVCS_IMM_ICC_ICC), I (INSN_X_INVALID),
1016 I (INSN_MOVCS_IMM_XCC_XCC), I (INSN_X_INVALID),
1017 };
1018 unsigned int val = (((insn >> 15) & (1 << 3)) | ((insn >> 11) & (7 << 0)));
1019 idecode = insns[val];
1020 GOTO_EXTRACT (idecode);
1021 }
1022 CASE (0_172, 6) :
1023 {
1024 static const IDESC * insns[16] = {
1025 I (INSN_X_INVALID), I (INSN_X_INVALID),
1026 I (INSN_X_INVALID), I (INSN_X_INVALID),
1027 I (INSN_X_INVALID), I (INSN_X_INVALID),
1028 I (INSN_X_INVALID), I (INSN_X_INVALID),
1029 I (INSN_MOVNEG_ICC_ICC), I (INSN_X_INVALID),
1030 I (INSN_MOVNEG_XCC_XCC), I (INSN_X_INVALID),
1031 I (INSN_MOVNEG_IMM_ICC_ICC), I (INSN_X_INVALID),
1032 I (INSN_MOVNEG_IMM_XCC_XCC), I (INSN_X_INVALID),
1033 };
1034 unsigned int val = (((insn >> 15) & (1 << 3)) | ((insn >> 11) & (7 << 0)));
1035 idecode = insns[val];
1036 GOTO_EXTRACT (idecode);
1037 }
1038 CASE (0_172, 7) :
1039 {
1040 static const IDESC * insns[16] = {
1041 I (INSN_X_INVALID), I (INSN_X_INVALID),
1042 I (INSN_X_INVALID), I (INSN_X_INVALID),
1043 I (INSN_X_INVALID), I (INSN_X_INVALID),
1044 I (INSN_X_INVALID), I (INSN_X_INVALID),
1045 I (INSN_MOVVS_ICC_ICC), I (INSN_X_INVALID),
1046 I (INSN_MOVVS_XCC_XCC), I (INSN_X_INVALID),
1047 I (INSN_MOVVS_IMM_ICC_ICC), I (INSN_X_INVALID),
1048 I (INSN_MOVVS_IMM_XCC_XCC), I (INSN_X_INVALID),
1049 };
1050 unsigned int val = (((insn >> 15) & (1 << 3)) | ((insn >> 11) & (7 << 0)));
1051 idecode = insns[val];
1052 GOTO_EXTRACT (idecode);
1053 }
1054 CASE (0_172, 8) :
1055 {
1056 static const IDESC * insns[16] = {
1057 I (INSN_X_INVALID), I (INSN_X_INVALID),
1058 I (INSN_X_INVALID), I (INSN_X_INVALID),
1059 I (INSN_X_INVALID), I (INSN_X_INVALID),
1060 I (INSN_X_INVALID), I (INSN_X_INVALID),
1061 I (INSN_MOVA_ICC_ICC), I (INSN_X_INVALID),
1062 I (INSN_MOVA_XCC_XCC), I (INSN_X_INVALID),
1063 I (INSN_MOVA_IMM_ICC_ICC), I (INSN_X_INVALID),
1064 I (INSN_MOVA_IMM_XCC_XCC), I (INSN_X_INVALID),
1065 };
1066 unsigned int val = (((insn >> 15) & (1 << 3)) | ((insn >> 11) & (7 << 0)));
1067 idecode = insns[val];
1068 GOTO_EXTRACT (idecode);
1069 }
1070 CASE (0_172, 9) :
1071 {
1072 static const IDESC * insns[16] = {
1073 I (INSN_X_INVALID), I (INSN_X_INVALID),
1074 I (INSN_X_INVALID), I (INSN_X_INVALID),
1075 I (INSN_X_INVALID), I (INSN_X_INVALID),
1076 I (INSN_X_INVALID), I (INSN_X_INVALID),
1077 I (INSN_MOVNE_ICC_ICC), I (INSN_X_INVALID),
1078 I (INSN_MOVNE_XCC_XCC), I (INSN_X_INVALID),
1079 I (INSN_MOVNE_IMM_ICC_ICC), I (INSN_X_INVALID),
1080 I (INSN_MOVNE_IMM_XCC_XCC), I (INSN_X_INVALID),
1081 };
1082 unsigned int val = (((insn >> 15) & (1 << 3)) | ((insn >> 11) & (7 << 0)));
1083 idecode = insns[val];
1084 GOTO_EXTRACT (idecode);
1085 }
1086 CASE (0_172, 10) :
1087 {
1088 static const IDESC * insns[16] = {
1089 I (INSN_X_INVALID), I (INSN_X_INVALID),
1090 I (INSN_X_INVALID), I (INSN_X_INVALID),
1091 I (INSN_X_INVALID), I (INSN_X_INVALID),
1092 I (INSN_X_INVALID), I (INSN_X_INVALID),
1093 I (INSN_MOVG_ICC_ICC), I (INSN_X_INVALID),
1094 I (INSN_MOVG_XCC_XCC), I (INSN_X_INVALID),
1095 I (INSN_MOVG_IMM_ICC_ICC), I (INSN_X_INVALID),
1096 I (INSN_MOVG_IMM_XCC_XCC), I (INSN_X_INVALID),
1097 };
1098 unsigned int val = (((insn >> 15) & (1 << 3)) | ((insn >> 11) & (7 << 0)));
1099 idecode = insns[val];
1100 GOTO_EXTRACT (idecode);
1101 }
1102 CASE (0_172, 11) :
1103 {
1104 static const IDESC * insns[16] = {
1105 I (INSN_X_INVALID), I (INSN_X_INVALID),
1106 I (INSN_X_INVALID), I (INSN_X_INVALID),
1107 I (INSN_X_INVALID), I (INSN_X_INVALID),
1108 I (INSN_X_INVALID), I (INSN_X_INVALID),
1109 I (INSN_MOVGE_ICC_ICC), I (INSN_X_INVALID),
1110 I (INSN_MOVGE_XCC_XCC), I (INSN_X_INVALID),
1111 I (INSN_MOVGE_IMM_ICC_ICC), I (INSN_X_INVALID),
1112 I (INSN_MOVGE_IMM_XCC_XCC), I (INSN_X_INVALID),
1113 };
1114 unsigned int val = (((insn >> 15) & (1 << 3)) | ((insn >> 11) & (7 << 0)));
1115 idecode = insns[val];
1116 GOTO_EXTRACT (idecode);
1117 }
1118 CASE (0_172, 12) :
1119 {
1120 static const IDESC * insns[16] = {
1121 I (INSN_X_INVALID), I (INSN_X_INVALID),
1122 I (INSN_X_INVALID), I (INSN_X_INVALID),
1123 I (INSN_X_INVALID), I (INSN_X_INVALID),
1124 I (INSN_X_INVALID), I (INSN_X_INVALID),
1125 I (INSN_MOVGU_ICC_ICC), I (INSN_X_INVALID),
1126 I (INSN_MOVGU_XCC_XCC), I (INSN_X_INVALID),
1127 I (INSN_MOVGU_IMM_ICC_ICC), I (INSN_X_INVALID),
1128 I (INSN_MOVGU_IMM_XCC_XCC), I (INSN_X_INVALID),
1129 };
1130 unsigned int val = (((insn >> 15) & (1 << 3)) | ((insn >> 11) & (7 << 0)));
1131 idecode = insns[val];
1132 GOTO_EXTRACT (idecode);
1133 }
1134 CASE (0_172, 13) :
1135 {
1136 static const IDESC * insns[16] = {
1137 I (INSN_X_INVALID), I (INSN_X_INVALID),
1138 I (INSN_X_INVALID), I (INSN_X_INVALID),
1139 I (INSN_X_INVALID), I (INSN_X_INVALID),
1140 I (INSN_X_INVALID), I (INSN_X_INVALID),
1141 I (INSN_MOVCC_ICC_ICC), I (INSN_X_INVALID),
1142 I (INSN_MOVCC_XCC_XCC), I (INSN_X_INVALID),
1143 I (INSN_MOVCC_IMM_ICC_ICC), I (INSN_X_INVALID),
1144 I (INSN_MOVCC_IMM_XCC_XCC), I (INSN_X_INVALID),
1145 };
1146 unsigned int val = (((insn >> 15) & (1 << 3)) | ((insn >> 11) & (7 << 0)));
1147 idecode = insns[val];
1148 GOTO_EXTRACT (idecode);
1149 }
1150 CASE (0_172, 14) :
1151 {
1152 static const IDESC * insns[16] = {
1153 I (INSN_X_INVALID), I (INSN_X_INVALID),
1154 I (INSN_X_INVALID), I (INSN_X_INVALID),
1155 I (INSN_X_INVALID), I (INSN_X_INVALID),
1156 I (INSN_X_INVALID), I (INSN_X_INVALID),
1157 I (INSN_MOVPOS_ICC_ICC), I (INSN_X_INVALID),
1158 I (INSN_MOVPOS_XCC_XCC), I (INSN_X_INVALID),
1159 I (INSN_MOVPOS_IMM_ICC_ICC), I (INSN_X_INVALID),
1160 I (INSN_MOVPOS_IMM_XCC_XCC), I (INSN_X_INVALID),
1161 };
1162 unsigned int val = (((insn >> 15) & (1 << 3)) | ((insn >> 11) & (7 << 0)));
1163 idecode = insns[val];
1164 GOTO_EXTRACT (idecode);
1165 }
1166 CASE (0_172, 15) :
1167 {
1168 static const IDESC * insns[16] = {
1169 I (INSN_X_INVALID), I (INSN_X_INVALID),
1170 I (INSN_X_INVALID), I (INSN_X_INVALID),
1171 I (INSN_X_INVALID), I (INSN_X_INVALID),
1172 I (INSN_X_INVALID), I (INSN_X_INVALID),
1173 I (INSN_MOVVC_ICC_ICC), I (INSN_X_INVALID),
1174 I (INSN_MOVVC_XCC_XCC), I (INSN_X_INVALID),
1175 I (INSN_MOVVC_IMM_ICC_ICC), I (INSN_X_INVALID),
1176 I (INSN_MOVVC_IMM_XCC_XCC), I (INSN_X_INVALID),
1177 };
1178 unsigned int val = (((insn >> 15) & (1 << 3)) | ((insn >> 11) & (7 << 0)));
1179 idecode = insns[val];
1180 GOTO_EXTRACT (idecode);
1181 }
1182 DEFAULT (0_172) :
1183 idecode = idecode_invalid;
1184 GOTO_EXTRACT (idecode);
1185 }
1186 ENDSWITCH (0_172)
1187 }
1188 CASE (0, 184) :
1189 {
1190 static const IDESC * insns[2] = {
1191 I (INSN_JMPL), I (INSN_JMPL_IMM),
1192 };
1193 unsigned int val = (((insn >> 13) & (1 << 0)));
1194 idecode = insns[val];
1195 GOTO_EXTRACT (idecode);
1196 }
1197 CASE (0, 185) :
1198 {
1199 #ifdef __GNUC__
1200 static const void *labels_0_185[16] = {
1201 && case_0_185_0, && default_0_185, && default_0_185, && default_0_185,
1202 && default_0_185, && default_0_185, && default_0_185, && default_0_185,
1203 && default_0_185, && default_0_185, && default_0_185, && default_0_185,
1204 && default_0_185, && default_0_185, && default_0_185, && default_0_185,
1205 };
1206 #endif
1207 static const IDESC * insns[16] = {
1208 0, I (INSN_X_INVALID),
1209 I (INSN_X_INVALID), I (INSN_X_INVALID),
1210 I (INSN_X_INVALID), I (INSN_X_INVALID),
1211 I (INSN_X_INVALID), I (INSN_X_INVALID),
1212 I (INSN_X_INVALID), I (INSN_X_INVALID),
1213 I (INSN_X_INVALID), I (INSN_X_INVALID),
1214 I (INSN_X_INVALID), I (INSN_X_INVALID),
1215 I (INSN_X_INVALID), I (INSN_X_INVALID),
1216 };
1217 unsigned int val;
1218 val = (((insn >> 26) & (15 << 0)));
1219 DECODE_SWITCH (0_185, val)
1220 {
1221 CASE (0_185, 0) :
1222 {
1223 static const IDESC * insns[4] = {
1224 I (INSN_RETT), I (INSN_RETT_IMM),
1225 I (INSN_X_INVALID), I (INSN_X_INVALID),
1226 };
1227 unsigned int val = (((insn >> 24) & (1 << 1)) | ((insn >> 13) & (1 << 0)));
1228 idecode = insns[val];
1229 GOTO_EXTRACT (idecode);
1230 }
1231 DEFAULT (0_185) :
1232 idecode = insns[val];
1233 GOTO_EXTRACT (idecode);
1234 }
1235 ENDSWITCH (0_185)
1236 }
1237 CASE (0, 186) :
1238 {
1239 #ifdef __GNUC__
1240 static const void *labels_0_186[16] = {
1241 && case_0_186_0, && case_0_186_1, && case_0_186_2, && case_0_186_3,
1242 && case_0_186_4, && case_0_186_5, && case_0_186_6, && case_0_186_7,
1243 && default_0_186, && default_0_186, && default_0_186, && default_0_186,
1244 && default_0_186, && default_0_186, && default_0_186, && default_0_186,
1245 };
1246 #endif
1247 static const IDESC * insns[16] = {
1248 0, 0,
1249 0, 0,
1250 0, 0,
1251 0, 0,
1252 I (INSN_X_INVALID), I (INSN_X_INVALID),
1253 I (INSN_X_INVALID), I (INSN_X_INVALID),
1254 I (INSN_X_INVALID), I (INSN_X_INVALID),
1255 I (INSN_X_INVALID), I (INSN_X_INVALID),
1256 };
1257 unsigned int val;
1258 val = (((insn >> 26) & (15 << 0)));
1259 DECODE_SWITCH (0_186, val)
1260 {
1261 CASE (0_186, 0) :
1262 {
1263 static const IDESC * insns[4] = {
1264 I (INSN_TN), I (INSN_TN_IMM),
1265 I (INSN_TE), I (INSN_TE_IMM),
1266 };
1267 unsigned int val = (((insn >> 24) & (1 << 1)) | ((insn >> 13) & (1 << 0)));
1268 idecode = insns[val];
1269 GOTO_EXTRACT (idecode);
1270 }
1271 CASE (0_186, 1) :
1272 {
1273 static const IDESC * insns[4] = {
1274 I (INSN_TLE), I (INSN_TLE_IMM),
1275 I (INSN_TL), I (INSN_TL_IMM),
1276 };
1277 unsigned int val = (((insn >> 24) & (1 << 1)) | ((insn >> 13) & (1 << 0)));
1278 idecode = insns[val];
1279 GOTO_EXTRACT (idecode);
1280 }
1281 CASE (0_186, 2) :
1282 {
1283 static const IDESC * insns[4] = {
1284 I (INSN_TLEU), I (INSN_TLEU_IMM),
1285 I (INSN_TCS), I (INSN_TCS_IMM),
1286 };
1287 unsigned int val = (((insn >> 24) & (1 << 1)) | ((insn >> 13) & (1 << 0)));
1288 idecode = insns[val];
1289 GOTO_EXTRACT (idecode);
1290 }
1291 CASE (0_186, 3) :
1292 {
1293 static const IDESC * insns[4] = {
1294 I (INSN_TNEG), I (INSN_TNEG_IMM),
1295 I (INSN_TVS), I (INSN_TVS_IMM),
1296 };
1297 unsigned int val = (((insn >> 24) & (1 << 1)) | ((insn >> 13) & (1 << 0)));
1298 idecode = insns[val];
1299 GOTO_EXTRACT (idecode);
1300 }
1301 CASE (0_186, 4) :
1302 {
1303 static const IDESC * insns[4] = {
1304 I (INSN_TA), I (INSN_TA_IMM),
1305 I (INSN_TNE), I (INSN_TNE_IMM),
1306 };
1307 unsigned int val = (((insn >> 24) & (1 << 1)) | ((insn >> 13) & (1 << 0)));
1308 idecode = insns[val];
1309 GOTO_EXTRACT (idecode);
1310 }
1311 CASE (0_186, 5) :
1312 {
1313 static const IDESC * insns[4] = {
1314 I (INSN_TG), I (INSN_TG_IMM),
1315 I (INSN_TGE), I (INSN_TGE_IMM),
1316 };
1317 unsigned int val = (((insn >> 24) & (1 << 1)) | ((insn >> 13) & (1 << 0)));
1318 idecode = insns[val];
1319 GOTO_EXTRACT (idecode);
1320 }
1321 CASE (0_186, 6) :
1322 {
1323 static const IDESC * insns[4] = {
1324 I (INSN_TGU), I (INSN_TGU_IMM),
1325 I (INSN_TCC), I (INSN_TCC_IMM),
1326 };
1327 unsigned int val = (((insn >> 24) & (1 << 1)) | ((insn >> 13) & (1 << 0)));
1328 idecode = insns[val];
1329 GOTO_EXTRACT (idecode);
1330 }
1331 CASE (0_186, 7) :
1332 {
1333 static const IDESC * insns[4] = {
1334 I (INSN_TPOS), I (INSN_TPOS_IMM),
1335 I (INSN_TVC), I (INSN_TVC_IMM),
1336 };
1337 unsigned int val = (((insn >> 24) & (1 << 1)) | ((insn >> 13) & (1 << 0)));
1338 idecode = insns[val];
1339 GOTO_EXTRACT (idecode);
1340 }
1341 DEFAULT (0_186) :
1342 idecode = insns[val];
1343 GOTO_EXTRACT (idecode);
1344 }
1345 ENDSWITCH (0_186)
1346 }
1347 CASE (0, 187) :
1348 {
1349 #ifdef __GNUC__
1350 static const void *labels_0_187[16] = {
1351 && case_0_187_0, && default_0_187, && default_0_187, && default_0_187,
1352 && default_0_187, && default_0_187, && default_0_187, && default_0_187,
1353 && default_0_187, && default_0_187, && default_0_187, && default_0_187,
1354 && default_0_187, && default_0_187, && default_0_187, && default_0_187,
1355 };
1356 #endif
1357 static const IDESC * insns[16] = {
1358 0, I (INSN_X_INVALID),
1359 I (INSN_X_INVALID), I (INSN_X_INVALID),
1360 I (INSN_X_INVALID), I (INSN_X_INVALID),
1361 I (INSN_X_INVALID), I (INSN_X_INVALID),
1362 I (INSN_X_INVALID), I (INSN_X_INVALID),
1363 I (INSN_X_INVALID), I (INSN_X_INVALID),
1364 I (INSN_X_INVALID), I (INSN_X_INVALID),
1365 I (INSN_X_INVALID), I (INSN_X_INVALID),
1366 };
1367 unsigned int val;
1368 val = (((insn >> 26) & (15 << 0)));
1369 DECODE_SWITCH (0_187, val)
1370 {
1371 CASE (0_187, 0) :
1372 {
1373 static const IDESC * insns[4] = {
1374 I (INSN_FLUSH), I (INSN_FLUSH_IMM),
1375 I (INSN_X_INVALID), I (INSN_X_INVALID),
1376 };
1377 unsigned int val = (((insn >> 24) & (1 << 1)) | ((insn >> 13) & (1 << 0)));
1378 idecode = insns[val];
1379 GOTO_EXTRACT (idecode);
1380 }
1381 DEFAULT (0_187) :
1382 idecode = insns[val];
1383 GOTO_EXTRACT (idecode);
1384 }
1385 ENDSWITCH (0_187)
1386 }
1387 CASE (0, 188) :
1388 {
1389 static const IDESC * insns[2] = {
1390 I (INSN_SAVE), I (INSN_SAVE_IMM),
1391 };
1392 unsigned int val = (((insn >> 13) & (1 << 0)));
1393 idecode = insns[val];
1394 GOTO_EXTRACT (idecode);
1395 }
1396 CASE (0, 189) :
1397 {
1398 static const IDESC * insns[2] = {
1399 I (INSN_RESTORE), I (INSN_RESTORE_IMM),
1400 };
1401 unsigned int val = (((insn >> 13) & (1 << 0)));
1402 idecode = insns[val];
1403 GOTO_EXTRACT (idecode);
1404 }
1405 CASE (0, 190) :
1406 {
1407 #ifdef __GNUC__
1408 static const void *labels_0_190[16] = {
1409 && case_0_190_0, && default_0_190, && default_0_190, && default_0_190,
1410 && default_0_190, && default_0_190, && default_0_190, && default_0_190,
1411 && default_0_190, && default_0_190, && default_0_190, && default_0_190,
1412 && default_0_190, && default_0_190, && default_0_190, && default_0_190,
1413 };
1414 #endif
1415 static const IDESC * insns[16] = {
1416 0, I (INSN_X_INVALID),
1417 I (INSN_X_INVALID), I (INSN_X_INVALID),
1418 I (INSN_X_INVALID), I (INSN_X_INVALID),
1419 I (INSN_X_INVALID), I (INSN_X_INVALID),
1420 I (INSN_X_INVALID), I (INSN_X_INVALID),
1421 I (INSN_X_INVALID), I (INSN_X_INVALID),
1422 I (INSN_X_INVALID), I (INSN_X_INVALID),
1423 I (INSN_X_INVALID), I (INSN_X_INVALID),
1424 };
1425 unsigned int val;
1426 val = (((insn >> 26) & (15 << 0)));
1427 DECODE_SWITCH (0_190, val)
1428 {
1429 CASE (0_190, 0) :
1430 {
1431 static const IDESC * insns[2] = {
1432 I (INSN_DONE), I (INSN_RETRY),
1433 };
1434 unsigned int val = (((insn >> 25) & (1 << 0)));
1435 idecode = insns[val];
1436 GOTO_EXTRACT (idecode);
1437 }
1438 DEFAULT (0_190) :
1439 idecode = insns[val];
1440 GOTO_EXTRACT (idecode);
1441 }
1442 ENDSWITCH (0_190)
1443 }
1444 CASE (0, 192) :
1445 {
1446 static const IDESC * insns[2] = {
1447 I (INSN_LDUW_REG_REG), I (INSN_LDUW_REG_IMM),
1448 };
1449 unsigned int val = (((insn >> 13) & (1 << 0)));
1450 idecode = insns[val];
1451 GOTO_EXTRACT (idecode);
1452 }
1453 CASE (0, 193) :
1454 {
1455 static const IDESC * insns[2] = {
1456 I (INSN_LDUB_REG_REG), I (INSN_LDUB_REG_IMM),
1457 };
1458 unsigned int val = (((insn >> 13) & (1 << 0)));
1459 idecode = insns[val];
1460 GOTO_EXTRACT (idecode);
1461 }
1462 CASE (0, 194) :
1463 {
1464 static const IDESC * insns[2] = {
1465 I (INSN_LDUH_REG_REG), I (INSN_LDUH_REG_IMM),
1466 };
1467 unsigned int val = (((insn >> 13) & (1 << 0)));
1468 idecode = insns[val];
1469 GOTO_EXTRACT (idecode);
1470 }
1471 CASE (0, 195) :
1472 {
1473 static const IDESC * insns[2] = {
1474 I (INSN_LDD_REG_REG), I (INSN_LDD_REG_IMM),
1475 };
1476 unsigned int val = (((insn >> 13) & (1 << 0)));
1477 idecode = insns[val];
1478 GOTO_EXTRACT (idecode);
1479 }
1480 CASE (0, 196) :
1481 {
1482 static const IDESC * insns[2] = {
1483 I (INSN_ST_REG_REG), I (INSN_ST_REG_IMM),
1484 };
1485 unsigned int val = (((insn >> 13) & (1 << 0)));
1486 idecode = insns[val];
1487 GOTO_EXTRACT (idecode);
1488 }
1489 CASE (0, 197) :
1490 {
1491 static const IDESC * insns[2] = {
1492 I (INSN_STB_REG_REG), I (INSN_STB_REG_IMM),
1493 };
1494 unsigned int val = (((insn >> 13) & (1 << 0)));
1495 idecode = insns[val];
1496 GOTO_EXTRACT (idecode);
1497 }
1498 CASE (0, 198) :
1499 {
1500 static const IDESC * insns[2] = {
1501 I (INSN_STH_REG_REG), I (INSN_STH_REG_IMM),
1502 };
1503 unsigned int val = (((insn >> 13) & (1 << 0)));
1504 idecode = insns[val];
1505 GOTO_EXTRACT (idecode);
1506 }
1507 CASE (0, 199) :
1508 {
1509 static const IDESC * insns[2] = {
1510 I (INSN_STD_REG_REG), I (INSN_STD_REG_IMM),
1511 };
1512 unsigned int val = (((insn >> 13) & (1 << 0)));
1513 idecode = insns[val];
1514 GOTO_EXTRACT (idecode);
1515 }
1516 CASE (0, 200) :
1517 {
1518 static const IDESC * insns[2] = {
1519 I (INSN_LDSW_REG_REG), I (INSN_LDSW_REG_IMM),
1520 };
1521 unsigned int val = (((insn >> 13) & (1 << 0)));
1522 idecode = insns[val];
1523 GOTO_EXTRACT (idecode);
1524 }
1525 CASE (0, 201) :
1526 {
1527 static const IDESC * insns[2] = {
1528 I (INSN_LDSB_REG_REG), I (INSN_LDSB_REG_IMM),
1529 };
1530 unsigned int val = (((insn >> 13) & (1 << 0)));
1531 idecode = insns[val];
1532 GOTO_EXTRACT (idecode);
1533 }
1534 CASE (0, 202) :
1535 {
1536 static const IDESC * insns[2] = {
1537 I (INSN_LDSH_REG_REG), I (INSN_LDSH_REG_IMM),
1538 };
1539 unsigned int val = (((insn >> 13) & (1 << 0)));
1540 idecode = insns[val];
1541 GOTO_EXTRACT (idecode);
1542 }
1543 CASE (0, 203) :
1544 {
1545 static const IDESC * insns[2] = {
1546 I (INSN_LDX_REG_REG), I (INSN_LDX_REG_IMM),
1547 };
1548 unsigned int val = (((insn >> 13) & (1 << 0)));
1549 idecode = insns[val];
1550 GOTO_EXTRACT (idecode);
1551 }
1552 CASE (0, 205) :
1553 {
1554 static const IDESC * insns[2] = {
1555 I (INSN_LDSTUB_REG_REG), I (INSN_LDSTUB_REG_IMM),
1556 };
1557 unsigned int val = (((insn >> 13) & (1 << 0)));
1558 idecode = insns[val];
1559 GOTO_EXTRACT (idecode);
1560 }
1561 CASE (0, 206) :
1562 {
1563 static const IDESC * insns[2] = {
1564 I (INSN_STX_REG_REG), I (INSN_STX_REG_IMM),
1565 };
1566 unsigned int val = (((insn >> 13) & (1 << 0)));
1567 idecode = insns[val];
1568 GOTO_EXTRACT (idecode);
1569 }
1570 CASE (0, 207) :
1571 {
1572 static const IDESC * insns[2] = {
1573 I (INSN_SWAP_REG_REG), I (INSN_SWAP_REG_IMM),
1574 };
1575 unsigned int val = (((insn >> 13) & (1 << 0)));
1576 idecode = insns[val];
1577 GOTO_EXTRACT (idecode);
1578 }
1579 CASE (0, 224) :
1580 {
1581 static const IDESC * insns[2] = {
1582 I (INSN_FP_LD_REG_REG), I (INSN_FP_LD_REG_IMM),
1583 };
1584 unsigned int val = (((insn >> 13) & (1 << 0)));
1585 idecode = insns[val];
1586 GOTO_EXTRACT (idecode);
1587 }
1588 DEFAULT (0) :
1589 idecode = insns[val];
1590 GOTO_EXTRACT (idecode);
1591 }
1592 ENDSWITCH (0)
1593 }
1594 #undef I
1595 #undef E
1596 }
1597
1598 /* Extraction is defered until the semantic code. */
1599
1600 extract:
1601 return idecode;
1602 }