]> Git Repo - binutils.git/blob - sim/bpf/decode-le.c
Automatic date update in version.in
[binutils.git] / sim / bpf / decode-le.c
1 /* Simulator instruction decoder for bpfbf_ebpfle.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright (C) 1996-2022 Free Software Foundation, Inc.
6
7 This file is part of the GNU simulators.
8
9    This file is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3, or (at your option)
12    any later version.
13
14    It is distributed in the hope that it will be useful, but WITHOUT
15    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
17    License for more details.
18
19    You should have received a copy of the GNU General Public License along
20    with this program; if not, write to the Free Software Foundation, Inc.,
21    51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
22
23 */
24
25 #define WANT_CPU bpfbf
26 #define WANT_CPU_BPFBF
27
28 #include "sim-main.h"
29 #include "sim-assert.h"
30 #include "cgen-mem.h"
31 #include "cgen-ops.h"
32
33 /* The instruction descriptor array.
34    This is computed at runtime.  Space for it is not malloc'd to save a
35    teensy bit of cpu in the decoder.  Moving it to malloc space is trivial
36    but won't be done until necessary (we don't currently support the runtime
37    addition of instructions nor an SMP machine with different cpus).  */
38 static IDESC bpfbf_ebpfle_insn_data[BPFBF_EBPFLE_INSN__MAX];
39
40 /* Commas between elements are contained in the macros.
41    Some of these are conditionally compiled out.  */
42
43 static const struct insn_sem bpfbf_ebpfle_insn_sem[] =
44 {
45   { VIRTUAL_INSN_X_INVALID, BPFBF_EBPFLE_INSN_X_INVALID, BPFBF_EBPFLE_SFMT_EMPTY },
46   { VIRTUAL_INSN_X_AFTER, BPFBF_EBPFLE_INSN_X_AFTER, BPFBF_EBPFLE_SFMT_EMPTY },
47   { VIRTUAL_INSN_X_BEFORE, BPFBF_EBPFLE_INSN_X_BEFORE, BPFBF_EBPFLE_SFMT_EMPTY },
48   { VIRTUAL_INSN_X_CTI_CHAIN, BPFBF_EBPFLE_INSN_X_CTI_CHAIN, BPFBF_EBPFLE_SFMT_EMPTY },
49   { VIRTUAL_INSN_X_CHAIN, BPFBF_EBPFLE_INSN_X_CHAIN, BPFBF_EBPFLE_SFMT_EMPTY },
50   { VIRTUAL_INSN_X_BEGIN, BPFBF_EBPFLE_INSN_X_BEGIN, BPFBF_EBPFLE_SFMT_EMPTY },
51   { BPF_INSN_ADDILE, BPFBF_EBPFLE_INSN_ADDILE, BPFBF_EBPFLE_SFMT_ADDILE },
52   { BPF_INSN_ADDRLE, BPFBF_EBPFLE_INSN_ADDRLE, BPFBF_EBPFLE_SFMT_ADDRLE },
53   { BPF_INSN_ADD32ILE, BPFBF_EBPFLE_INSN_ADD32ILE, BPFBF_EBPFLE_SFMT_ADDILE },
54   { BPF_INSN_ADD32RLE, BPFBF_EBPFLE_INSN_ADD32RLE, BPFBF_EBPFLE_SFMT_ADDRLE },
55   { BPF_INSN_SUBILE, BPFBF_EBPFLE_INSN_SUBILE, BPFBF_EBPFLE_SFMT_ADDILE },
56   { BPF_INSN_SUBRLE, BPFBF_EBPFLE_INSN_SUBRLE, BPFBF_EBPFLE_SFMT_ADDRLE },
57   { BPF_INSN_SUB32ILE, BPFBF_EBPFLE_INSN_SUB32ILE, BPFBF_EBPFLE_SFMT_ADDILE },
58   { BPF_INSN_SUB32RLE, BPFBF_EBPFLE_INSN_SUB32RLE, BPFBF_EBPFLE_SFMT_ADDRLE },
59   { BPF_INSN_MULILE, BPFBF_EBPFLE_INSN_MULILE, BPFBF_EBPFLE_SFMT_ADDILE },
60   { BPF_INSN_MULRLE, BPFBF_EBPFLE_INSN_MULRLE, BPFBF_EBPFLE_SFMT_ADDRLE },
61   { BPF_INSN_MUL32ILE, BPFBF_EBPFLE_INSN_MUL32ILE, BPFBF_EBPFLE_SFMT_ADDILE },
62   { BPF_INSN_MUL32RLE, BPFBF_EBPFLE_INSN_MUL32RLE, BPFBF_EBPFLE_SFMT_ADDRLE },
63   { BPF_INSN_DIVILE, BPFBF_EBPFLE_INSN_DIVILE, BPFBF_EBPFLE_SFMT_ADDILE },
64   { BPF_INSN_DIVRLE, BPFBF_EBPFLE_INSN_DIVRLE, BPFBF_EBPFLE_SFMT_ADDRLE },
65   { BPF_INSN_DIV32ILE, BPFBF_EBPFLE_INSN_DIV32ILE, BPFBF_EBPFLE_SFMT_ADDILE },
66   { BPF_INSN_DIV32RLE, BPFBF_EBPFLE_INSN_DIV32RLE, BPFBF_EBPFLE_SFMT_ADDRLE },
67   { BPF_INSN_ORILE, BPFBF_EBPFLE_INSN_ORILE, BPFBF_EBPFLE_SFMT_ADDILE },
68   { BPF_INSN_ORRLE, BPFBF_EBPFLE_INSN_ORRLE, BPFBF_EBPFLE_SFMT_ADDRLE },
69   { BPF_INSN_OR32ILE, BPFBF_EBPFLE_INSN_OR32ILE, BPFBF_EBPFLE_SFMT_ADDILE },
70   { BPF_INSN_OR32RLE, BPFBF_EBPFLE_INSN_OR32RLE, BPFBF_EBPFLE_SFMT_ADDRLE },
71   { BPF_INSN_ANDILE, BPFBF_EBPFLE_INSN_ANDILE, BPFBF_EBPFLE_SFMT_ADDILE },
72   { BPF_INSN_ANDRLE, BPFBF_EBPFLE_INSN_ANDRLE, BPFBF_EBPFLE_SFMT_ADDRLE },
73   { BPF_INSN_AND32ILE, BPFBF_EBPFLE_INSN_AND32ILE, BPFBF_EBPFLE_SFMT_ADDILE },
74   { BPF_INSN_AND32RLE, BPFBF_EBPFLE_INSN_AND32RLE, BPFBF_EBPFLE_SFMT_ADDRLE },
75   { BPF_INSN_LSHILE, BPFBF_EBPFLE_INSN_LSHILE, BPFBF_EBPFLE_SFMT_ADDILE },
76   { BPF_INSN_LSHRLE, BPFBF_EBPFLE_INSN_LSHRLE, BPFBF_EBPFLE_SFMT_ADDRLE },
77   { BPF_INSN_LSH32ILE, BPFBF_EBPFLE_INSN_LSH32ILE, BPFBF_EBPFLE_SFMT_ADDILE },
78   { BPF_INSN_LSH32RLE, BPFBF_EBPFLE_INSN_LSH32RLE, BPFBF_EBPFLE_SFMT_ADDRLE },
79   { BPF_INSN_RSHILE, BPFBF_EBPFLE_INSN_RSHILE, BPFBF_EBPFLE_SFMT_ADDILE },
80   { BPF_INSN_RSHRLE, BPFBF_EBPFLE_INSN_RSHRLE, BPFBF_EBPFLE_SFMT_ADDRLE },
81   { BPF_INSN_RSH32ILE, BPFBF_EBPFLE_INSN_RSH32ILE, BPFBF_EBPFLE_SFMT_ADDILE },
82   { BPF_INSN_RSH32RLE, BPFBF_EBPFLE_INSN_RSH32RLE, BPFBF_EBPFLE_SFMT_ADDRLE },
83   { BPF_INSN_MODILE, BPFBF_EBPFLE_INSN_MODILE, BPFBF_EBPFLE_SFMT_ADDILE },
84   { BPF_INSN_MODRLE, BPFBF_EBPFLE_INSN_MODRLE, BPFBF_EBPFLE_SFMT_ADDRLE },
85   { BPF_INSN_MOD32ILE, BPFBF_EBPFLE_INSN_MOD32ILE, BPFBF_EBPFLE_SFMT_ADDILE },
86   { BPF_INSN_MOD32RLE, BPFBF_EBPFLE_INSN_MOD32RLE, BPFBF_EBPFLE_SFMT_ADDRLE },
87   { BPF_INSN_XORILE, BPFBF_EBPFLE_INSN_XORILE, BPFBF_EBPFLE_SFMT_ADDILE },
88   { BPF_INSN_XORRLE, BPFBF_EBPFLE_INSN_XORRLE, BPFBF_EBPFLE_SFMT_ADDRLE },
89   { BPF_INSN_XOR32ILE, BPFBF_EBPFLE_INSN_XOR32ILE, BPFBF_EBPFLE_SFMT_ADDILE },
90   { BPF_INSN_XOR32RLE, BPFBF_EBPFLE_INSN_XOR32RLE, BPFBF_EBPFLE_SFMT_ADDRLE },
91   { BPF_INSN_ARSHILE, BPFBF_EBPFLE_INSN_ARSHILE, BPFBF_EBPFLE_SFMT_ADDILE },
92   { BPF_INSN_ARSHRLE, BPFBF_EBPFLE_INSN_ARSHRLE, BPFBF_EBPFLE_SFMT_ADDRLE },
93   { BPF_INSN_ARSH32ILE, BPFBF_EBPFLE_INSN_ARSH32ILE, BPFBF_EBPFLE_SFMT_ADDILE },
94   { BPF_INSN_ARSH32RLE, BPFBF_EBPFLE_INSN_ARSH32RLE, BPFBF_EBPFLE_SFMT_ADDRLE },
95   { BPF_INSN_NEGLE, BPFBF_EBPFLE_INSN_NEGLE, BPFBF_EBPFLE_SFMT_NEGLE },
96   { BPF_INSN_NEG32LE, BPFBF_EBPFLE_INSN_NEG32LE, BPFBF_EBPFLE_SFMT_NEGLE },
97   { BPF_INSN_MOVILE, BPFBF_EBPFLE_INSN_MOVILE, BPFBF_EBPFLE_SFMT_MOVILE },
98   { BPF_INSN_MOVRLE, BPFBF_EBPFLE_INSN_MOVRLE, BPFBF_EBPFLE_SFMT_MOVRLE },
99   { BPF_INSN_MOV32ILE, BPFBF_EBPFLE_INSN_MOV32ILE, BPFBF_EBPFLE_SFMT_MOVILE },
100   { BPF_INSN_MOV32RLE, BPFBF_EBPFLE_INSN_MOV32RLE, BPFBF_EBPFLE_SFMT_MOVRLE },
101   { BPF_INSN_ENDLELE, BPFBF_EBPFLE_INSN_ENDLELE, BPFBF_EBPFLE_SFMT_ENDLELE },
102   { BPF_INSN_ENDBELE, BPFBF_EBPFLE_INSN_ENDBELE, BPFBF_EBPFLE_SFMT_ENDLELE },
103   { BPF_INSN_LDDWLE, BPFBF_EBPFLE_INSN_LDDWLE, BPFBF_EBPFLE_SFMT_LDDWLE },
104   { BPF_INSN_LDABSW, BPFBF_EBPFLE_INSN_LDABSW, BPFBF_EBPFLE_SFMT_LDABSW },
105   { BPF_INSN_LDABSH, BPFBF_EBPFLE_INSN_LDABSH, BPFBF_EBPFLE_SFMT_LDABSH },
106   { BPF_INSN_LDABSB, BPFBF_EBPFLE_INSN_LDABSB, BPFBF_EBPFLE_SFMT_LDABSB },
107   { BPF_INSN_LDABSDW, BPFBF_EBPFLE_INSN_LDABSDW, BPFBF_EBPFLE_SFMT_LDABSDW },
108   { BPF_INSN_LDINDWLE, BPFBF_EBPFLE_INSN_LDINDWLE, BPFBF_EBPFLE_SFMT_LDINDWLE },
109   { BPF_INSN_LDINDHLE, BPFBF_EBPFLE_INSN_LDINDHLE, BPFBF_EBPFLE_SFMT_LDINDHLE },
110   { BPF_INSN_LDINDBLE, BPFBF_EBPFLE_INSN_LDINDBLE, BPFBF_EBPFLE_SFMT_LDINDBLE },
111   { BPF_INSN_LDINDDWLE, BPFBF_EBPFLE_INSN_LDINDDWLE, BPFBF_EBPFLE_SFMT_LDINDDWLE },
112   { BPF_INSN_LDXWLE, BPFBF_EBPFLE_INSN_LDXWLE, BPFBF_EBPFLE_SFMT_LDXWLE },
113   { BPF_INSN_LDXHLE, BPFBF_EBPFLE_INSN_LDXHLE, BPFBF_EBPFLE_SFMT_LDXHLE },
114   { BPF_INSN_LDXBLE, BPFBF_EBPFLE_INSN_LDXBLE, BPFBF_EBPFLE_SFMT_LDXBLE },
115   { BPF_INSN_LDXDWLE, BPFBF_EBPFLE_INSN_LDXDWLE, BPFBF_EBPFLE_SFMT_LDXDWLE },
116   { BPF_INSN_STXWLE, BPFBF_EBPFLE_INSN_STXWLE, BPFBF_EBPFLE_SFMT_STXWLE },
117   { BPF_INSN_STXHLE, BPFBF_EBPFLE_INSN_STXHLE, BPFBF_EBPFLE_SFMT_STXHLE },
118   { BPF_INSN_STXBLE, BPFBF_EBPFLE_INSN_STXBLE, BPFBF_EBPFLE_SFMT_STXBLE },
119   { BPF_INSN_STXDWLE, BPFBF_EBPFLE_INSN_STXDWLE, BPFBF_EBPFLE_SFMT_STXDWLE },
120   { BPF_INSN_STBLE, BPFBF_EBPFLE_INSN_STBLE, BPFBF_EBPFLE_SFMT_STBLE },
121   { BPF_INSN_STHLE, BPFBF_EBPFLE_INSN_STHLE, BPFBF_EBPFLE_SFMT_STHLE },
122   { BPF_INSN_STWLE, BPFBF_EBPFLE_INSN_STWLE, BPFBF_EBPFLE_SFMT_STWLE },
123   { BPF_INSN_STDWLE, BPFBF_EBPFLE_INSN_STDWLE, BPFBF_EBPFLE_SFMT_STDWLE },
124   { BPF_INSN_JEQILE, BPFBF_EBPFLE_INSN_JEQILE, BPFBF_EBPFLE_SFMT_JEQILE },
125   { BPF_INSN_JEQRLE, BPFBF_EBPFLE_INSN_JEQRLE, BPFBF_EBPFLE_SFMT_JEQRLE },
126   { BPF_INSN_JEQ32ILE, BPFBF_EBPFLE_INSN_JEQ32ILE, BPFBF_EBPFLE_SFMT_JEQILE },
127   { BPF_INSN_JEQ32RLE, BPFBF_EBPFLE_INSN_JEQ32RLE, BPFBF_EBPFLE_SFMT_JEQRLE },
128   { BPF_INSN_JGTILE, BPFBF_EBPFLE_INSN_JGTILE, BPFBF_EBPFLE_SFMT_JEQILE },
129   { BPF_INSN_JGTRLE, BPFBF_EBPFLE_INSN_JGTRLE, BPFBF_EBPFLE_SFMT_JEQRLE },
130   { BPF_INSN_JGT32ILE, BPFBF_EBPFLE_INSN_JGT32ILE, BPFBF_EBPFLE_SFMT_JEQILE },
131   { BPF_INSN_JGT32RLE, BPFBF_EBPFLE_INSN_JGT32RLE, BPFBF_EBPFLE_SFMT_JEQRLE },
132   { BPF_INSN_JGEILE, BPFBF_EBPFLE_INSN_JGEILE, BPFBF_EBPFLE_SFMT_JEQILE },
133   { BPF_INSN_JGERLE, BPFBF_EBPFLE_INSN_JGERLE, BPFBF_EBPFLE_SFMT_JEQRLE },
134   { BPF_INSN_JGE32ILE, BPFBF_EBPFLE_INSN_JGE32ILE, BPFBF_EBPFLE_SFMT_JEQILE },
135   { BPF_INSN_JGE32RLE, BPFBF_EBPFLE_INSN_JGE32RLE, BPFBF_EBPFLE_SFMT_JEQRLE },
136   { BPF_INSN_JLTILE, BPFBF_EBPFLE_INSN_JLTILE, BPFBF_EBPFLE_SFMT_JEQILE },
137   { BPF_INSN_JLTRLE, BPFBF_EBPFLE_INSN_JLTRLE, BPFBF_EBPFLE_SFMT_JEQRLE },
138   { BPF_INSN_JLT32ILE, BPFBF_EBPFLE_INSN_JLT32ILE, BPFBF_EBPFLE_SFMT_JEQILE },
139   { BPF_INSN_JLT32RLE, BPFBF_EBPFLE_INSN_JLT32RLE, BPFBF_EBPFLE_SFMT_JEQRLE },
140   { BPF_INSN_JLEILE, BPFBF_EBPFLE_INSN_JLEILE, BPFBF_EBPFLE_SFMT_JEQILE },
141   { BPF_INSN_JLERLE, BPFBF_EBPFLE_INSN_JLERLE, BPFBF_EBPFLE_SFMT_JEQRLE },
142   { BPF_INSN_JLE32ILE, BPFBF_EBPFLE_INSN_JLE32ILE, BPFBF_EBPFLE_SFMT_JEQILE },
143   { BPF_INSN_JLE32RLE, BPFBF_EBPFLE_INSN_JLE32RLE, BPFBF_EBPFLE_SFMT_JEQRLE },
144   { BPF_INSN_JSETILE, BPFBF_EBPFLE_INSN_JSETILE, BPFBF_EBPFLE_SFMT_JEQILE },
145   { BPF_INSN_JSETRLE, BPFBF_EBPFLE_INSN_JSETRLE, BPFBF_EBPFLE_SFMT_JEQRLE },
146   { BPF_INSN_JSET32ILE, BPFBF_EBPFLE_INSN_JSET32ILE, BPFBF_EBPFLE_SFMT_JEQILE },
147   { BPF_INSN_JSET32RLE, BPFBF_EBPFLE_INSN_JSET32RLE, BPFBF_EBPFLE_SFMT_JEQRLE },
148   { BPF_INSN_JNEILE, BPFBF_EBPFLE_INSN_JNEILE, BPFBF_EBPFLE_SFMT_JEQILE },
149   { BPF_INSN_JNERLE, BPFBF_EBPFLE_INSN_JNERLE, BPFBF_EBPFLE_SFMT_JEQRLE },
150   { BPF_INSN_JNE32ILE, BPFBF_EBPFLE_INSN_JNE32ILE, BPFBF_EBPFLE_SFMT_JEQILE },
151   { BPF_INSN_JNE32RLE, BPFBF_EBPFLE_INSN_JNE32RLE, BPFBF_EBPFLE_SFMT_JEQRLE },
152   { BPF_INSN_JSGTILE, BPFBF_EBPFLE_INSN_JSGTILE, BPFBF_EBPFLE_SFMT_JEQILE },
153   { BPF_INSN_JSGTRLE, BPFBF_EBPFLE_INSN_JSGTRLE, BPFBF_EBPFLE_SFMT_JEQRLE },
154   { BPF_INSN_JSGT32ILE, BPFBF_EBPFLE_INSN_JSGT32ILE, BPFBF_EBPFLE_SFMT_JEQILE },
155   { BPF_INSN_JSGT32RLE, BPFBF_EBPFLE_INSN_JSGT32RLE, BPFBF_EBPFLE_SFMT_JEQRLE },
156   { BPF_INSN_JSGEILE, BPFBF_EBPFLE_INSN_JSGEILE, BPFBF_EBPFLE_SFMT_JEQILE },
157   { BPF_INSN_JSGERLE, BPFBF_EBPFLE_INSN_JSGERLE, BPFBF_EBPFLE_SFMT_JEQRLE },
158   { BPF_INSN_JSGE32ILE, BPFBF_EBPFLE_INSN_JSGE32ILE, BPFBF_EBPFLE_SFMT_JEQILE },
159   { BPF_INSN_JSGE32RLE, BPFBF_EBPFLE_INSN_JSGE32RLE, BPFBF_EBPFLE_SFMT_JEQRLE },
160   { BPF_INSN_JSLTILE, BPFBF_EBPFLE_INSN_JSLTILE, BPFBF_EBPFLE_SFMT_JEQILE },
161   { BPF_INSN_JSLTRLE, BPFBF_EBPFLE_INSN_JSLTRLE, BPFBF_EBPFLE_SFMT_JEQRLE },
162   { BPF_INSN_JSLT32ILE, BPFBF_EBPFLE_INSN_JSLT32ILE, BPFBF_EBPFLE_SFMT_JEQILE },
163   { BPF_INSN_JSLT32RLE, BPFBF_EBPFLE_INSN_JSLT32RLE, BPFBF_EBPFLE_SFMT_JEQRLE },
164   { BPF_INSN_JSLEILE, BPFBF_EBPFLE_INSN_JSLEILE, BPFBF_EBPFLE_SFMT_JEQILE },
165   { BPF_INSN_JSLERLE, BPFBF_EBPFLE_INSN_JSLERLE, BPFBF_EBPFLE_SFMT_JEQRLE },
166   { BPF_INSN_JSLE32ILE, BPFBF_EBPFLE_INSN_JSLE32ILE, BPFBF_EBPFLE_SFMT_JEQILE },
167   { BPF_INSN_JSLE32RLE, BPFBF_EBPFLE_INSN_JSLE32RLE, BPFBF_EBPFLE_SFMT_JEQRLE },
168   { BPF_INSN_CALLLE, BPFBF_EBPFLE_INSN_CALLLE, BPFBF_EBPFLE_SFMT_CALLLE },
169   { BPF_INSN_JA, BPFBF_EBPFLE_INSN_JA, BPFBF_EBPFLE_SFMT_JA },
170   { BPF_INSN_EXIT, BPFBF_EBPFLE_INSN_EXIT, BPFBF_EBPFLE_SFMT_EXIT },
171   { BPF_INSN_XADDDWLE, BPFBF_EBPFLE_INSN_XADDDWLE, BPFBF_EBPFLE_SFMT_XADDDWLE },
172   { BPF_INSN_XADDWLE, BPFBF_EBPFLE_INSN_XADDWLE, BPFBF_EBPFLE_SFMT_XADDWLE },
173   { BPF_INSN_BRKPT, BPFBF_EBPFLE_INSN_BRKPT, BPFBF_EBPFLE_SFMT_EXIT },
174 };
175
176 static const struct insn_sem bpfbf_ebpfle_insn_sem_invalid =
177 {
178   VIRTUAL_INSN_X_INVALID, BPFBF_EBPFLE_INSN_X_INVALID, BPFBF_EBPFLE_SFMT_EMPTY
179 };
180
181 /* Initialize an IDESC from the compile-time computable parts.  */
182
183 static INLINE void
184 init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
185 {
186   const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
187
188   id->num = t->index;
189   id->sfmt = t->sfmt;
190   if ((int) t->type <= 0)
191     id->idata = & cgen_virtual_insn_table[- (int) t->type];
192   else
193     id->idata = & insn_table[t->type];
194   id->attrs = CGEN_INSN_ATTRS (id->idata);
195   /* Oh my god, a magic number.  */
196   id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
197
198 #if WITH_PROFILE_MODEL_P
199   id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
200   {
201     SIM_DESC sd = CPU_STATE (cpu);
202     SIM_ASSERT (t->index == id->timing->num);
203   }
204 #endif
205
206   /* Semantic pointers are initialized elsewhere.  */
207 }
208
209 /* Initialize the instruction descriptor table.  */
210
211 void
212 bpfbf_ebpfle_init_idesc_table (SIM_CPU *cpu)
213 {
214   IDESC *id,*tabend;
215   const struct insn_sem *t,*tend;
216   int tabsize = BPFBF_EBPFLE_INSN__MAX;
217   IDESC *table = bpfbf_ebpfle_insn_data;
218
219   memset (table, 0, tabsize * sizeof (IDESC));
220
221   /* First set all entries to the `invalid insn'.  */
222   t = & bpfbf_ebpfle_insn_sem_invalid;
223   for (id = table, tabend = table + tabsize; id < tabend; ++id)
224     init_idesc (cpu, id, t);
225
226   /* Now fill in the values for the chosen cpu.  */
227   for (t = bpfbf_ebpfle_insn_sem, tend = t + sizeof (bpfbf_ebpfle_insn_sem) / sizeof (*t);
228        t != tend; ++t)
229     {
230       init_idesc (cpu, & table[t->index], t);
231     }
232
233   /* Link the IDESC table into the cpu.  */
234   CPU_IDESC (cpu) = table;
235 }
236
237 /* Given an instruction, return a pointer to its IDESC entry.  */
238
239 const IDESC *
240 bpfbf_ebpfle_decode (SIM_CPU *current_cpu, IADDR pc,
241               CGEN_INSN_WORD base_insn,
242               ARGBUF *abuf)
243 {
244   /* Result of decoder.  */
245   BPFBF_EBPFLE_INSN_TYPE itype;
246
247   {
248     CGEN_INSN_WORD insn = base_insn;
249
250     {
251       unsigned int val = (((insn >> 0) & (255 << 0)));
252       switch (val)
253       {
254       case 4 : itype = BPFBF_EBPFLE_INSN_ADD32ILE; goto extract_sfmt_addile;
255       case 5 : itype = BPFBF_EBPFLE_INSN_JA; goto extract_sfmt_ja;
256       case 7 : itype = BPFBF_EBPFLE_INSN_ADDILE; goto extract_sfmt_addile;
257       case 12 : itype = BPFBF_EBPFLE_INSN_ADD32RLE; goto extract_sfmt_addrle;
258       case 15 : itype = BPFBF_EBPFLE_INSN_ADDRLE; goto extract_sfmt_addrle;
259       case 20 : itype = BPFBF_EBPFLE_INSN_SUB32ILE; goto extract_sfmt_addile;
260       case 21 : itype = BPFBF_EBPFLE_INSN_JEQILE; goto extract_sfmt_jeqile;
261       case 22 : itype = BPFBF_EBPFLE_INSN_JEQ32ILE; goto extract_sfmt_jeqile;
262       case 23 : itype = BPFBF_EBPFLE_INSN_SUBILE; goto extract_sfmt_addile;
263       case 24 : itype = BPFBF_EBPFLE_INSN_LDDWLE; goto extract_sfmt_lddwle;
264       case 28 : itype = BPFBF_EBPFLE_INSN_SUB32RLE; goto extract_sfmt_addrle;
265       case 29 : itype = BPFBF_EBPFLE_INSN_JEQRLE; goto extract_sfmt_jeqrle;
266       case 30 : itype = BPFBF_EBPFLE_INSN_JEQ32RLE; goto extract_sfmt_jeqrle;
267       case 31 : itype = BPFBF_EBPFLE_INSN_SUBRLE; goto extract_sfmt_addrle;
268       case 32 : itype = BPFBF_EBPFLE_INSN_LDABSW; goto extract_sfmt_ldabsw;
269       case 36 : itype = BPFBF_EBPFLE_INSN_MUL32ILE; goto extract_sfmt_addile;
270       case 37 : itype = BPFBF_EBPFLE_INSN_JGTILE; goto extract_sfmt_jeqile;
271       case 38 : itype = BPFBF_EBPFLE_INSN_JGT32ILE; goto extract_sfmt_jeqile;
272       case 39 : itype = BPFBF_EBPFLE_INSN_MULILE; goto extract_sfmt_addile;
273       case 40 : itype = BPFBF_EBPFLE_INSN_LDABSH; goto extract_sfmt_ldabsh;
274       case 44 : itype = BPFBF_EBPFLE_INSN_MUL32RLE; goto extract_sfmt_addrle;
275       case 45 : itype = BPFBF_EBPFLE_INSN_JGTRLE; goto extract_sfmt_jeqrle;
276       case 46 : itype = BPFBF_EBPFLE_INSN_JGT32RLE; goto extract_sfmt_jeqrle;
277       case 47 : itype = BPFBF_EBPFLE_INSN_MULRLE; goto extract_sfmt_addrle;
278       case 48 : itype = BPFBF_EBPFLE_INSN_LDABSB; goto extract_sfmt_ldabsb;
279       case 52 : itype = BPFBF_EBPFLE_INSN_DIV32ILE; goto extract_sfmt_addile;
280       case 53 : itype = BPFBF_EBPFLE_INSN_JGEILE; goto extract_sfmt_jeqile;
281       case 54 : itype = BPFBF_EBPFLE_INSN_JGE32ILE; goto extract_sfmt_jeqile;
282       case 55 : itype = BPFBF_EBPFLE_INSN_DIVILE; goto extract_sfmt_addile;
283       case 56 : itype = BPFBF_EBPFLE_INSN_LDABSDW; goto extract_sfmt_ldabsdw;
284       case 60 : itype = BPFBF_EBPFLE_INSN_DIV32RLE; goto extract_sfmt_addrle;
285       case 61 : itype = BPFBF_EBPFLE_INSN_JGERLE; goto extract_sfmt_jeqrle;
286       case 62 : itype = BPFBF_EBPFLE_INSN_JGE32RLE; goto extract_sfmt_jeqrle;
287       case 63 : itype = BPFBF_EBPFLE_INSN_DIVRLE; goto extract_sfmt_addrle;
288       case 64 : itype = BPFBF_EBPFLE_INSN_LDINDWLE; goto extract_sfmt_ldindwle;
289       case 68 : itype = BPFBF_EBPFLE_INSN_OR32ILE; goto extract_sfmt_addile;
290       case 69 : itype = BPFBF_EBPFLE_INSN_JSETILE; goto extract_sfmt_jeqile;
291       case 70 : itype = BPFBF_EBPFLE_INSN_JSET32ILE; goto extract_sfmt_jeqile;
292       case 71 : itype = BPFBF_EBPFLE_INSN_ORILE; goto extract_sfmt_addile;
293       case 72 : itype = BPFBF_EBPFLE_INSN_LDINDHLE; goto extract_sfmt_ldindhle;
294       case 76 : itype = BPFBF_EBPFLE_INSN_OR32RLE; goto extract_sfmt_addrle;
295       case 77 : itype = BPFBF_EBPFLE_INSN_JSETRLE; goto extract_sfmt_jeqrle;
296       case 78 : itype = BPFBF_EBPFLE_INSN_JSET32RLE; goto extract_sfmt_jeqrle;
297       case 79 : itype = BPFBF_EBPFLE_INSN_ORRLE; goto extract_sfmt_addrle;
298       case 80 : itype = BPFBF_EBPFLE_INSN_LDINDBLE; goto extract_sfmt_ldindble;
299       case 84 : itype = BPFBF_EBPFLE_INSN_AND32ILE; goto extract_sfmt_addile;
300       case 85 : itype = BPFBF_EBPFLE_INSN_JNEILE; goto extract_sfmt_jeqile;
301       case 86 : itype = BPFBF_EBPFLE_INSN_JNE32ILE; goto extract_sfmt_jeqile;
302       case 87 : itype = BPFBF_EBPFLE_INSN_ANDILE; goto extract_sfmt_addile;
303       case 88 : itype = BPFBF_EBPFLE_INSN_LDINDDWLE; goto extract_sfmt_ldinddwle;
304       case 92 : itype = BPFBF_EBPFLE_INSN_AND32RLE; goto extract_sfmt_addrle;
305       case 93 : itype = BPFBF_EBPFLE_INSN_JNERLE; goto extract_sfmt_jeqrle;
306       case 94 : itype = BPFBF_EBPFLE_INSN_JNE32RLE; goto extract_sfmt_jeqrle;
307       case 95 : itype = BPFBF_EBPFLE_INSN_ANDRLE; goto extract_sfmt_addrle;
308       case 97 : itype = BPFBF_EBPFLE_INSN_LDXWLE; goto extract_sfmt_ldxwle;
309       case 98 : itype = BPFBF_EBPFLE_INSN_STWLE; goto extract_sfmt_stwle;
310       case 99 : itype = BPFBF_EBPFLE_INSN_STXWLE; goto extract_sfmt_stxwle;
311       case 100 : itype = BPFBF_EBPFLE_INSN_LSH32ILE; goto extract_sfmt_addile;
312       case 101 : itype = BPFBF_EBPFLE_INSN_JSGTILE; goto extract_sfmt_jeqile;
313       case 102 : itype = BPFBF_EBPFLE_INSN_JSGT32ILE; goto extract_sfmt_jeqile;
314       case 103 : itype = BPFBF_EBPFLE_INSN_LSHILE; goto extract_sfmt_addile;
315       case 105 : itype = BPFBF_EBPFLE_INSN_LDXHLE; goto extract_sfmt_ldxhle;
316       case 106 : itype = BPFBF_EBPFLE_INSN_STHLE; goto extract_sfmt_sthle;
317       case 107 : itype = BPFBF_EBPFLE_INSN_STXHLE; goto extract_sfmt_stxhle;
318       case 108 : itype = BPFBF_EBPFLE_INSN_LSH32RLE; goto extract_sfmt_addrle;
319       case 109 : itype = BPFBF_EBPFLE_INSN_JSGTRLE; goto extract_sfmt_jeqrle;
320       case 110 : itype = BPFBF_EBPFLE_INSN_JSGT32RLE; goto extract_sfmt_jeqrle;
321       case 111 : itype = BPFBF_EBPFLE_INSN_LSHRLE; goto extract_sfmt_addrle;
322       case 113 : itype = BPFBF_EBPFLE_INSN_LDXBLE; goto extract_sfmt_ldxble;
323       case 114 : itype = BPFBF_EBPFLE_INSN_STBLE; goto extract_sfmt_stble;
324       case 115 : itype = BPFBF_EBPFLE_INSN_STXBLE; goto extract_sfmt_stxble;
325       case 116 : itype = BPFBF_EBPFLE_INSN_RSH32ILE; goto extract_sfmt_addile;
326       case 117 : itype = BPFBF_EBPFLE_INSN_JSGEILE; goto extract_sfmt_jeqile;
327       case 118 : itype = BPFBF_EBPFLE_INSN_JSGE32ILE; goto extract_sfmt_jeqile;
328       case 119 : itype = BPFBF_EBPFLE_INSN_RSHILE; goto extract_sfmt_addile;
329       case 121 : itype = BPFBF_EBPFLE_INSN_LDXDWLE; goto extract_sfmt_ldxdwle;
330       case 122 : itype = BPFBF_EBPFLE_INSN_STDWLE; goto extract_sfmt_stdwle;
331       case 123 : itype = BPFBF_EBPFLE_INSN_STXDWLE; goto extract_sfmt_stxdwle;
332       case 124 : itype = BPFBF_EBPFLE_INSN_RSH32RLE; goto extract_sfmt_addrle;
333       case 125 : itype = BPFBF_EBPFLE_INSN_JSGERLE; goto extract_sfmt_jeqrle;
334       case 126 : itype = BPFBF_EBPFLE_INSN_JSGE32RLE; goto extract_sfmt_jeqrle;
335       case 127 : itype = BPFBF_EBPFLE_INSN_RSHRLE; goto extract_sfmt_addrle;
336       case 132 : itype = BPFBF_EBPFLE_INSN_NEG32LE; goto extract_sfmt_negle;
337       case 133 : itype = BPFBF_EBPFLE_INSN_CALLLE; goto extract_sfmt_callle;
338       case 135 : itype = BPFBF_EBPFLE_INSN_NEGLE; goto extract_sfmt_negle;
339       case 140 : itype = BPFBF_EBPFLE_INSN_BRKPT; goto extract_sfmt_exit;
340       case 148 : itype = BPFBF_EBPFLE_INSN_MOD32ILE; goto extract_sfmt_addile;
341       case 149 : itype = BPFBF_EBPFLE_INSN_EXIT; goto extract_sfmt_exit;
342       case 151 : itype = BPFBF_EBPFLE_INSN_MODILE; goto extract_sfmt_addile;
343       case 156 : itype = BPFBF_EBPFLE_INSN_MOD32RLE; goto extract_sfmt_addrle;
344       case 159 : itype = BPFBF_EBPFLE_INSN_MODRLE; goto extract_sfmt_addrle;
345       case 164 : itype = BPFBF_EBPFLE_INSN_XOR32ILE; goto extract_sfmt_addile;
346       case 165 : itype = BPFBF_EBPFLE_INSN_JLTILE; goto extract_sfmt_jeqile;
347       case 166 : itype = BPFBF_EBPFLE_INSN_JLT32ILE; goto extract_sfmt_jeqile;
348       case 167 : itype = BPFBF_EBPFLE_INSN_XORILE; goto extract_sfmt_addile;
349       case 172 : itype = BPFBF_EBPFLE_INSN_XOR32RLE; goto extract_sfmt_addrle;
350       case 173 : itype = BPFBF_EBPFLE_INSN_JLTRLE; goto extract_sfmt_jeqrle;
351       case 174 : itype = BPFBF_EBPFLE_INSN_JLT32RLE; goto extract_sfmt_jeqrle;
352       case 175 : itype = BPFBF_EBPFLE_INSN_XORRLE; goto extract_sfmt_addrle;
353       case 180 : itype = BPFBF_EBPFLE_INSN_MOV32ILE; goto extract_sfmt_movile;
354       case 181 : itype = BPFBF_EBPFLE_INSN_JLEILE; goto extract_sfmt_jeqile;
355       case 182 : itype = BPFBF_EBPFLE_INSN_JLE32ILE; goto extract_sfmt_jeqile;
356       case 183 : itype = BPFBF_EBPFLE_INSN_MOVILE; goto extract_sfmt_movile;
357       case 188 : itype = BPFBF_EBPFLE_INSN_MOV32RLE; goto extract_sfmt_movrle;
358       case 189 : itype = BPFBF_EBPFLE_INSN_JLERLE; goto extract_sfmt_jeqrle;
359       case 190 : itype = BPFBF_EBPFLE_INSN_JLE32RLE; goto extract_sfmt_jeqrle;
360       case 191 : itype = BPFBF_EBPFLE_INSN_MOVRLE; goto extract_sfmt_movrle;
361       case 195 : itype = BPFBF_EBPFLE_INSN_XADDWLE; goto extract_sfmt_xaddwle;
362       case 196 : itype = BPFBF_EBPFLE_INSN_ARSH32ILE; goto extract_sfmt_addile;
363       case 197 : itype = BPFBF_EBPFLE_INSN_JSLTILE; goto extract_sfmt_jeqile;
364       case 198 : itype = BPFBF_EBPFLE_INSN_JSLT32ILE; goto extract_sfmt_jeqile;
365       case 199 : itype = BPFBF_EBPFLE_INSN_ARSHILE; goto extract_sfmt_addile;
366       case 204 : itype = BPFBF_EBPFLE_INSN_ARSH32RLE; goto extract_sfmt_addrle;
367       case 205 : itype = BPFBF_EBPFLE_INSN_JSLTRLE; goto extract_sfmt_jeqrle;
368       case 206 : itype = BPFBF_EBPFLE_INSN_JSLT32RLE; goto extract_sfmt_jeqrle;
369       case 207 : itype = BPFBF_EBPFLE_INSN_ARSHRLE; goto extract_sfmt_addrle;
370       case 212 : itype = BPFBF_EBPFLE_INSN_ENDLELE; goto extract_sfmt_endlele;
371       case 213 : itype = BPFBF_EBPFLE_INSN_JSLEILE; goto extract_sfmt_jeqile;
372       case 214 : itype = BPFBF_EBPFLE_INSN_JSLE32ILE; goto extract_sfmt_jeqile;
373       case 219 : itype = BPFBF_EBPFLE_INSN_XADDDWLE; goto extract_sfmt_xadddwle;
374       case 220 : itype = BPFBF_EBPFLE_INSN_ENDBELE; goto extract_sfmt_endlele;
375       case 221 : itype = BPFBF_EBPFLE_INSN_JSLERLE; goto extract_sfmt_jeqrle;
376       case 222 : itype = BPFBF_EBPFLE_INSN_JSLE32RLE; goto extract_sfmt_jeqrle;
377       default : itype = BPFBF_EBPFLE_INSN_X_INVALID; goto extract_sfmt_empty;
378       }
379     }
380   }
381
382   /* The instruction has been decoded, now extract the fields.  */
383
384  extract_sfmt_empty:
385   {
386     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
387 #define FLD(f) abuf->fields.sfmt_empty.f
388
389
390   /* Record the fields for the semantic handler.  */
391   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
392
393 #undef FLD
394     return idesc;
395   }
396
397  extract_sfmt_addile:
398   {
399     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
400     CGEN_INSN_WORD insn = base_insn;
401 #define FLD(f) abuf->fields.sfmt_stble.f
402     INT f_imm32;
403     UINT f_dstle;
404
405     f_imm32 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 63, 32) << 0));
406     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
407
408   /* Record the fields for the semantic handler.  */
409   FLD (f_dstle) = f_dstle;
410   FLD (f_imm32) = f_imm32;
411   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addile", "f_dstle 0x%x", 'x', f_dstle, "f_imm32 0x%x", 'x', f_imm32, (char *) 0));
412
413 #undef FLD
414     return idesc;
415   }
416
417  extract_sfmt_addrle:
418   {
419     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
420     CGEN_INSN_WORD insn = base_insn;
421 #define FLD(f) abuf->fields.sfmt_ldxwle.f
422     UINT f_srcle;
423     UINT f_dstle;
424
425     f_srcle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 15, 4) << 0));
426     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
427
428   /* Record the fields for the semantic handler.  */
429   FLD (f_dstle) = f_dstle;
430   FLD (f_srcle) = f_srcle;
431   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addrle", "f_dstle 0x%x", 'x', f_dstle, "f_srcle 0x%x", 'x', f_srcle, (char *) 0));
432
433 #undef FLD
434     return idesc;
435   }
436
437  extract_sfmt_negle:
438   {
439     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
440     CGEN_INSN_WORD insn = base_insn;
441 #define FLD(f) abuf->fields.sfmt_lddwle.f
442     UINT f_dstle;
443
444     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
445
446   /* Record the fields for the semantic handler.  */
447   FLD (f_dstle) = f_dstle;
448   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_negle", "f_dstle 0x%x", 'x', f_dstle, (char *) 0));
449
450 #undef FLD
451     return idesc;
452   }
453
454  extract_sfmt_movile:
455   {
456     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
457     CGEN_INSN_WORD insn = base_insn;
458 #define FLD(f) abuf->fields.sfmt_stble.f
459     INT f_imm32;
460     UINT f_dstle;
461
462     f_imm32 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 63, 32) << 0));
463     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
464
465   /* Record the fields for the semantic handler.  */
466   FLD (f_imm32) = f_imm32;
467   FLD (f_dstle) = f_dstle;
468   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movile", "f_imm32 0x%x", 'x', f_imm32, "f_dstle 0x%x", 'x', f_dstle, (char *) 0));
469
470 #undef FLD
471     return idesc;
472   }
473
474  extract_sfmt_movrle:
475   {
476     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
477     CGEN_INSN_WORD insn = base_insn;
478 #define FLD(f) abuf->fields.sfmt_ldxwle.f
479     UINT f_srcle;
480     UINT f_dstle;
481
482     f_srcle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 15, 4) << 0));
483     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
484
485   /* Record the fields for the semantic handler.  */
486   FLD (f_srcle) = f_srcle;
487   FLD (f_dstle) = f_dstle;
488   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movrle", "f_srcle 0x%x", 'x', f_srcle, "f_dstle 0x%x", 'x', f_dstle, (char *) 0));
489
490 #undef FLD
491     return idesc;
492   }
493
494  extract_sfmt_endlele:
495   {
496     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
497     CGEN_INSN_WORD insn = base_insn;
498 #define FLD(f) abuf->fields.sfmt_stble.f
499     INT f_imm32;
500     UINT f_dstle;
501
502     f_imm32 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 63, 32) << 0));
503     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
504
505   /* Record the fields for the semantic handler.  */
506   FLD (f_dstle) = f_dstle;
507   FLD (f_imm32) = f_imm32;
508   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_endlele", "f_dstle 0x%x", 'x', f_dstle, "f_imm32 0x%x", 'x', f_imm32, (char *) 0));
509
510 #undef FLD
511     return idesc;
512   }
513
514  extract_sfmt_lddwle:
515   {
516     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
517     CGEN_INSN_WORD insn = base_insn;
518 #define FLD(f) abuf->fields.sfmt_lddwle.f
519     UINT f_imm64_c;
520     UINT f_imm64_b;
521     UINT f_imm64_a;
522     UINT f_dstle;
523     DI f_imm64;
524     /* Contents of trailing part of insn.  */
525     UINT word_1;
526     UINT word_2;
527
528   word_1 = GETIMEMUSI (current_cpu, pc + 8);
529   word_2 = GETIMEMUSI (current_cpu, pc + 12);
530     f_imm64_c = (0|(EXTRACT_LSB0_UINT (word_2, 32, 31, 32) << 0));
531     f_imm64_b = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
532     f_imm64_a = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 63, 32) << 0));
533     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
534 {
535   f_imm64 = ((((((UDI) (UINT) (f_imm64_c))) << (32))) | (((UDI) (UINT) (f_imm64_a))));
536 }
537
538   /* Record the fields for the semantic handler.  */
539   FLD (f_imm64) = f_imm64;
540   FLD (f_dstle) = f_dstle;
541   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lddwle", "f_imm64 0x%x", 'x', f_imm64, "f_dstle 0x%x", 'x', f_dstle, (char *) 0));
542
543 #undef FLD
544     return idesc;
545   }
546
547  extract_sfmt_ldabsw:
548   {
549     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
550     CGEN_INSN_WORD insn = base_insn;
551 #define FLD(f) abuf->fields.sfmt_ldindwle.f
552     INT f_imm32;
553
554     f_imm32 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 63, 32) << 0));
555
556   /* Record the fields for the semantic handler.  */
557   FLD (f_imm32) = f_imm32;
558   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldabsw", "f_imm32 0x%x", 'x', f_imm32, (char *) 0));
559
560 #undef FLD
561     return idesc;
562   }
563
564  extract_sfmt_ldabsh:
565   {
566     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
567     CGEN_INSN_WORD insn = base_insn;
568 #define FLD(f) abuf->fields.sfmt_ldindwle.f
569     INT f_imm32;
570
571     f_imm32 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 63, 32) << 0));
572
573   /* Record the fields for the semantic handler.  */
574   FLD (f_imm32) = f_imm32;
575   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldabsh", "f_imm32 0x%x", 'x', f_imm32, (char *) 0));
576
577 #undef FLD
578     return idesc;
579   }
580
581  extract_sfmt_ldabsb:
582   {
583     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
584     CGEN_INSN_WORD insn = base_insn;
585 #define FLD(f) abuf->fields.sfmt_ldindwle.f
586     INT f_imm32;
587
588     f_imm32 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 63, 32) << 0));
589
590   /* Record the fields for the semantic handler.  */
591   FLD (f_imm32) = f_imm32;
592   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldabsb", "f_imm32 0x%x", 'x', f_imm32, (char *) 0));
593
594 #undef FLD
595     return idesc;
596   }
597
598  extract_sfmt_ldabsdw:
599   {
600     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
601     CGEN_INSN_WORD insn = base_insn;
602 #define FLD(f) abuf->fields.sfmt_ldindwle.f
603     INT f_imm32;
604
605     f_imm32 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 63, 32) << 0));
606
607   /* Record the fields for the semantic handler.  */
608   FLD (f_imm32) = f_imm32;
609   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldabsdw", "f_imm32 0x%x", 'x', f_imm32, (char *) 0));
610
611 #undef FLD
612     return idesc;
613   }
614
615  extract_sfmt_ldindwle:
616   {
617     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
618     CGEN_INSN_WORD insn = base_insn;
619 #define FLD(f) abuf->fields.sfmt_ldindwle.f
620     INT f_imm32;
621     UINT f_srcle;
622
623     f_imm32 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 63, 32) << 0));
624     f_srcle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 15, 4) << 0));
625
626   /* Record the fields for the semantic handler.  */
627   FLD (f_imm32) = f_imm32;
628   FLD (f_srcle) = f_srcle;
629   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldindwle", "f_imm32 0x%x", 'x', f_imm32, "f_srcle 0x%x", 'x', f_srcle, (char *) 0));
630
631 #undef FLD
632     return idesc;
633   }
634
635  extract_sfmt_ldindhle:
636   {
637     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
638     CGEN_INSN_WORD insn = base_insn;
639 #define FLD(f) abuf->fields.sfmt_ldindwle.f
640     INT f_imm32;
641     UINT f_srcle;
642
643     f_imm32 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 63, 32) << 0));
644     f_srcle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 15, 4) << 0));
645
646   /* Record the fields for the semantic handler.  */
647   FLD (f_imm32) = f_imm32;
648   FLD (f_srcle) = f_srcle;
649   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldindhle", "f_imm32 0x%x", 'x', f_imm32, "f_srcle 0x%x", 'x', f_srcle, (char *) 0));
650
651 #undef FLD
652     return idesc;
653   }
654
655  extract_sfmt_ldindble:
656   {
657     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
658     CGEN_INSN_WORD insn = base_insn;
659 #define FLD(f) abuf->fields.sfmt_ldindwle.f
660     INT f_imm32;
661     UINT f_srcle;
662
663     f_imm32 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 63, 32) << 0));
664     f_srcle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 15, 4) << 0));
665
666   /* Record the fields for the semantic handler.  */
667   FLD (f_imm32) = f_imm32;
668   FLD (f_srcle) = f_srcle;
669   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldindble", "f_imm32 0x%x", 'x', f_imm32, "f_srcle 0x%x", 'x', f_srcle, (char *) 0));
670
671 #undef FLD
672     return idesc;
673   }
674
675  extract_sfmt_ldinddwle:
676   {
677     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
678     CGEN_INSN_WORD insn = base_insn;
679 #define FLD(f) abuf->fields.sfmt_ldindwle.f
680     INT f_imm32;
681     UINT f_srcle;
682
683     f_imm32 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 63, 32) << 0));
684     f_srcle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 15, 4) << 0));
685
686   /* Record the fields for the semantic handler.  */
687   FLD (f_imm32) = f_imm32;
688   FLD (f_srcle) = f_srcle;
689   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldinddwle", "f_imm32 0x%x", 'x', f_imm32, "f_srcle 0x%x", 'x', f_srcle, (char *) 0));
690
691 #undef FLD
692     return idesc;
693   }
694
695  extract_sfmt_ldxwle:
696   {
697     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
698     CGEN_INSN_WORD insn = base_insn;
699 #define FLD(f) abuf->fields.sfmt_ldxwle.f
700     HI f_offset16;
701     UINT f_srcle;
702     UINT f_dstle;
703
704     f_offset16 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 31, 16) << 0));
705     f_srcle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 15, 4) << 0));
706     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
707
708   /* Record the fields for the semantic handler.  */
709   FLD (f_offset16) = f_offset16;
710   FLD (f_srcle) = f_srcle;
711   FLD (f_dstle) = f_dstle;
712   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldxwle", "f_offset16 0x%x", 'x', f_offset16, "f_srcle 0x%x", 'x', f_srcle, "f_dstle 0x%x", 'x', f_dstle, (char *) 0));
713
714 #undef FLD
715     return idesc;
716   }
717
718  extract_sfmt_ldxhle:
719   {
720     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
721     CGEN_INSN_WORD insn = base_insn;
722 #define FLD(f) abuf->fields.sfmt_ldxwle.f
723     HI f_offset16;
724     UINT f_srcle;
725     UINT f_dstle;
726
727     f_offset16 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 31, 16) << 0));
728     f_srcle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 15, 4) << 0));
729     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
730
731   /* Record the fields for the semantic handler.  */
732   FLD (f_offset16) = f_offset16;
733   FLD (f_srcle) = f_srcle;
734   FLD (f_dstle) = f_dstle;
735   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldxhle", "f_offset16 0x%x", 'x', f_offset16, "f_srcle 0x%x", 'x', f_srcle, "f_dstle 0x%x", 'x', f_dstle, (char *) 0));
736
737 #undef FLD
738     return idesc;
739   }
740
741  extract_sfmt_ldxble:
742   {
743     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
744     CGEN_INSN_WORD insn = base_insn;
745 #define FLD(f) abuf->fields.sfmt_ldxwle.f
746     HI f_offset16;
747     UINT f_srcle;
748     UINT f_dstle;
749
750     f_offset16 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 31, 16) << 0));
751     f_srcle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 15, 4) << 0));
752     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
753
754   /* Record the fields for the semantic handler.  */
755   FLD (f_offset16) = f_offset16;
756   FLD (f_srcle) = f_srcle;
757   FLD (f_dstle) = f_dstle;
758   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldxble", "f_offset16 0x%x", 'x', f_offset16, "f_srcle 0x%x", 'x', f_srcle, "f_dstle 0x%x", 'x', f_dstle, (char *) 0));
759
760 #undef FLD
761     return idesc;
762   }
763
764  extract_sfmt_ldxdwle:
765   {
766     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
767     CGEN_INSN_WORD insn = base_insn;
768 #define FLD(f) abuf->fields.sfmt_ldxwle.f
769     HI f_offset16;
770     UINT f_srcle;
771     UINT f_dstle;
772
773     f_offset16 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 31, 16) << 0));
774     f_srcle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 15, 4) << 0));
775     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
776
777   /* Record the fields for the semantic handler.  */
778   FLD (f_offset16) = f_offset16;
779   FLD (f_srcle) = f_srcle;
780   FLD (f_dstle) = f_dstle;
781   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldxdwle", "f_offset16 0x%x", 'x', f_offset16, "f_srcle 0x%x", 'x', f_srcle, "f_dstle 0x%x", 'x', f_dstle, (char *) 0));
782
783 #undef FLD
784     return idesc;
785   }
786
787  extract_sfmt_stxwle:
788   {
789     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
790     CGEN_INSN_WORD insn = base_insn;
791 #define FLD(f) abuf->fields.sfmt_ldxwle.f
792     HI f_offset16;
793     UINT f_srcle;
794     UINT f_dstle;
795
796     f_offset16 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 31, 16) << 0));
797     f_srcle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 15, 4) << 0));
798     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
799
800   /* Record the fields for the semantic handler.  */
801   FLD (f_dstle) = f_dstle;
802   FLD (f_offset16) = f_offset16;
803   FLD (f_srcle) = f_srcle;
804   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stxwle", "f_dstle 0x%x", 'x', f_dstle, "f_offset16 0x%x", 'x', f_offset16, "f_srcle 0x%x", 'x', f_srcle, (char *) 0));
805
806 #undef FLD
807     return idesc;
808   }
809
810  extract_sfmt_stxhle:
811   {
812     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
813     CGEN_INSN_WORD insn = base_insn;
814 #define FLD(f) abuf->fields.sfmt_ldxwle.f
815     HI f_offset16;
816     UINT f_srcle;
817     UINT f_dstle;
818
819     f_offset16 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 31, 16) << 0));
820     f_srcle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 15, 4) << 0));
821     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
822
823   /* Record the fields for the semantic handler.  */
824   FLD (f_dstle) = f_dstle;
825   FLD (f_offset16) = f_offset16;
826   FLD (f_srcle) = f_srcle;
827   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stxhle", "f_dstle 0x%x", 'x', f_dstle, "f_offset16 0x%x", 'x', f_offset16, "f_srcle 0x%x", 'x', f_srcle, (char *) 0));
828
829 #undef FLD
830     return idesc;
831   }
832
833  extract_sfmt_stxble:
834   {
835     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
836     CGEN_INSN_WORD insn = base_insn;
837 #define FLD(f) abuf->fields.sfmt_ldxwle.f
838     HI f_offset16;
839     UINT f_srcle;
840     UINT f_dstle;
841
842     f_offset16 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 31, 16) << 0));
843     f_srcle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 15, 4) << 0));
844     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
845
846   /* Record the fields for the semantic handler.  */
847   FLD (f_dstle) = f_dstle;
848   FLD (f_offset16) = f_offset16;
849   FLD (f_srcle) = f_srcle;
850   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stxble", "f_dstle 0x%x", 'x', f_dstle, "f_offset16 0x%x", 'x', f_offset16, "f_srcle 0x%x", 'x', f_srcle, (char *) 0));
851
852 #undef FLD
853     return idesc;
854   }
855
856  extract_sfmt_stxdwle:
857   {
858     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
859     CGEN_INSN_WORD insn = base_insn;
860 #define FLD(f) abuf->fields.sfmt_ldxwle.f
861     HI f_offset16;
862     UINT f_srcle;
863     UINT f_dstle;
864
865     f_offset16 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 31, 16) << 0));
866     f_srcle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 15, 4) << 0));
867     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
868
869   /* Record the fields for the semantic handler.  */
870   FLD (f_dstle) = f_dstle;
871   FLD (f_offset16) = f_offset16;
872   FLD (f_srcle) = f_srcle;
873   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stxdwle", "f_dstle 0x%x", 'x', f_dstle, "f_offset16 0x%x", 'x', f_offset16, "f_srcle 0x%x", 'x', f_srcle, (char *) 0));
874
875 #undef FLD
876     return idesc;
877   }
878
879  extract_sfmt_stble:
880   {
881     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
882     CGEN_INSN_WORD insn = base_insn;
883 #define FLD(f) abuf->fields.sfmt_stble.f
884     INT f_imm32;
885     HI f_offset16;
886     UINT f_dstle;
887
888     f_imm32 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 63, 32) << 0));
889     f_offset16 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 31, 16) << 0));
890     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
891
892   /* Record the fields for the semantic handler.  */
893   FLD (f_dstle) = f_dstle;
894   FLD (f_imm32) = f_imm32;
895   FLD (f_offset16) = f_offset16;
896   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stble", "f_dstle 0x%x", 'x', f_dstle, "f_imm32 0x%x", 'x', f_imm32, "f_offset16 0x%x", 'x', f_offset16, (char *) 0));
897
898 #undef FLD
899     return idesc;
900   }
901
902  extract_sfmt_sthle:
903   {
904     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
905     CGEN_INSN_WORD insn = base_insn;
906 #define FLD(f) abuf->fields.sfmt_stble.f
907     INT f_imm32;
908     HI f_offset16;
909     UINT f_dstle;
910
911     f_imm32 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 63, 32) << 0));
912     f_offset16 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 31, 16) << 0));
913     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
914
915   /* Record the fields for the semantic handler.  */
916   FLD (f_dstle) = f_dstle;
917   FLD (f_imm32) = f_imm32;
918   FLD (f_offset16) = f_offset16;
919   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sthle", "f_dstle 0x%x", 'x', f_dstle, "f_imm32 0x%x", 'x', f_imm32, "f_offset16 0x%x", 'x', f_offset16, (char *) 0));
920
921 #undef FLD
922     return idesc;
923   }
924
925  extract_sfmt_stwle:
926   {
927     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
928     CGEN_INSN_WORD insn = base_insn;
929 #define FLD(f) abuf->fields.sfmt_stble.f
930     INT f_imm32;
931     HI f_offset16;
932     UINT f_dstle;
933
934     f_imm32 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 63, 32) << 0));
935     f_offset16 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 31, 16) << 0));
936     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
937
938   /* Record the fields for the semantic handler.  */
939   FLD (f_dstle) = f_dstle;
940   FLD (f_imm32) = f_imm32;
941   FLD (f_offset16) = f_offset16;
942   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stwle", "f_dstle 0x%x", 'x', f_dstle, "f_imm32 0x%x", 'x', f_imm32, "f_offset16 0x%x", 'x', f_offset16, (char *) 0));
943
944 #undef FLD
945     return idesc;
946   }
947
948  extract_sfmt_stdwle:
949   {
950     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
951     CGEN_INSN_WORD insn = base_insn;
952 #define FLD(f) abuf->fields.sfmt_stble.f
953     INT f_imm32;
954     HI f_offset16;
955     UINT f_dstle;
956
957     f_imm32 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 63, 32) << 0));
958     f_offset16 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 31, 16) << 0));
959     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
960
961   /* Record the fields for the semantic handler.  */
962   FLD (f_dstle) = f_dstle;
963   FLD (f_imm32) = f_imm32;
964   FLD (f_offset16) = f_offset16;
965   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stdwle", "f_dstle 0x%x", 'x', f_dstle, "f_imm32 0x%x", 'x', f_imm32, "f_offset16 0x%x", 'x', f_offset16, (char *) 0));
966
967 #undef FLD
968     return idesc;
969   }
970
971  extract_sfmt_jeqile:
972   {
973     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
974     CGEN_INSN_WORD insn = base_insn;
975 #define FLD(f) abuf->fields.sfmt_stble.f
976     INT f_imm32;
977     HI f_offset16;
978     UINT f_dstle;
979
980     f_imm32 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 63, 32) << 0));
981     f_offset16 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 31, 16) << 0));
982     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
983
984   /* Record the fields for the semantic handler.  */
985   FLD (f_offset16) = f_offset16;
986   FLD (f_dstle) = f_dstle;
987   FLD (f_imm32) = f_imm32;
988   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jeqile", "f_offset16 0x%x", 'x', f_offset16, "f_dstle 0x%x", 'x', f_dstle, "f_imm32 0x%x", 'x', f_imm32, (char *) 0));
989
990 #if WITH_PROFILE_MODEL_P
991   /* Record the fields for profiling.  */
992   if (PROFILE_MODEL_P (current_cpu))
993     {
994     }
995 #endif
996 #undef FLD
997     return idesc;
998   }
999
1000  extract_sfmt_jeqrle:
1001   {
1002     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
1003     CGEN_INSN_WORD insn = base_insn;
1004 #define FLD(f) abuf->fields.sfmt_ldxwle.f
1005     HI f_offset16;
1006     UINT f_srcle;
1007     UINT f_dstle;
1008
1009     f_offset16 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 31, 16) << 0));
1010     f_srcle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 15, 4) << 0));
1011     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
1012
1013   /* Record the fields for the semantic handler.  */
1014   FLD (f_offset16) = f_offset16;
1015   FLD (f_dstle) = f_dstle;
1016   FLD (f_srcle) = f_srcle;
1017   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jeqrle", "f_offset16 0x%x", 'x', f_offset16, "f_dstle 0x%x", 'x', f_dstle, "f_srcle 0x%x", 'x', f_srcle, (char *) 0));
1018
1019 #if WITH_PROFILE_MODEL_P
1020   /* Record the fields for profiling.  */
1021   if (PROFILE_MODEL_P (current_cpu))
1022     {
1023     }
1024 #endif
1025 #undef FLD
1026     return idesc;
1027   }
1028
1029  extract_sfmt_callle:
1030   {
1031     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
1032     CGEN_INSN_WORD insn = base_insn;
1033 #define FLD(f) abuf->fields.sfmt_ldindwle.f
1034     INT f_imm32;
1035     UINT f_srcle;
1036
1037     f_imm32 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 63, 32) << 0));
1038     f_srcle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 15, 4) << 0));
1039
1040   /* Record the fields for the semantic handler.  */
1041   FLD (f_imm32) = f_imm32;
1042   FLD (f_srcle) = f_srcle;
1043   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_callle", "f_imm32 0x%x", 'x', f_imm32, "f_srcle 0x%x", 'x', f_srcle, (char *) 0));
1044
1045 #undef FLD
1046     return idesc;
1047   }
1048
1049  extract_sfmt_ja:
1050   {
1051     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
1052     CGEN_INSN_WORD insn = base_insn;
1053 #define FLD(f) abuf->fields.sfmt_stble.f
1054     HI f_offset16;
1055
1056     f_offset16 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 31, 16) << 0));
1057
1058   /* Record the fields for the semantic handler.  */
1059   FLD (f_offset16) = f_offset16;
1060   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ja", "f_offset16 0x%x", 'x', f_offset16, (char *) 0));
1061
1062 #if WITH_PROFILE_MODEL_P
1063   /* Record the fields for profiling.  */
1064   if (PROFILE_MODEL_P (current_cpu))
1065     {
1066     }
1067 #endif
1068 #undef FLD
1069     return idesc;
1070   }
1071
1072  extract_sfmt_exit:
1073   {
1074     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
1075 #define FLD(f) abuf->fields.sfmt_empty.f
1076
1077
1078   /* Record the fields for the semantic handler.  */
1079   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_exit", (char *) 0));
1080
1081 #undef FLD
1082     return idesc;
1083   }
1084
1085  extract_sfmt_xadddwle:
1086   {
1087     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
1088     CGEN_INSN_WORD insn = base_insn;
1089 #define FLD(f) abuf->fields.sfmt_ldxwle.f
1090     HI f_offset16;
1091     UINT f_srcle;
1092     UINT f_dstle;
1093
1094     f_offset16 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 31, 16) << 0));
1095     f_srcle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 15, 4) << 0));
1096     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
1097
1098   /* Record the fields for the semantic handler.  */
1099   FLD (f_dstle) = f_dstle;
1100   FLD (f_offset16) = f_offset16;
1101   FLD (f_srcle) = f_srcle;
1102   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_xadddwle", "f_dstle 0x%x", 'x', f_dstle, "f_offset16 0x%x", 'x', f_offset16, "f_srcle 0x%x", 'x', f_srcle, (char *) 0));
1103
1104 #undef FLD
1105     return idesc;
1106   }
1107
1108  extract_sfmt_xaddwle:
1109   {
1110     const IDESC *idesc = &bpfbf_ebpfle_insn_data[itype];
1111     CGEN_INSN_WORD insn = base_insn;
1112 #define FLD(f) abuf->fields.sfmt_ldxwle.f
1113     HI f_offset16;
1114     UINT f_srcle;
1115     UINT f_dstle;
1116
1117     f_offset16 = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 31, 16) << 0));
1118     f_srcle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 15, 4) << 0));
1119     f_dstle = (0|(EXTRACT_LSB0_LGUINT (insn, 64, 11, 4) << 0));
1120
1121   /* Record the fields for the semantic handler.  */
1122   FLD (f_dstle) = f_dstle;
1123   FLD (f_offset16) = f_offset16;
1124   FLD (f_srcle) = f_srcle;
1125   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_xaddwle", "f_dstle 0x%x", 'x', f_dstle, "f_offset16 0x%x", 'x', f_offset16, "f_srcle 0x%x", 'x', f_srcle, (char *) 0));
1126
1127 #undef FLD
1128     return idesc;
1129   }
1130
1131 }
This page took 0.082358 seconds and 4 git commands to generate.