xref: /openbmc/qemu/target/hexagon/opcodes.h (revision 28188253dc26bc3038f30eed0d79798b51f81a94)
1*e3c00c2eSTaylor Simpson /*
2*e3c00c2eSTaylor Simpson  *  Copyright(c) 2019-2021 Qualcomm Innovation Center, Inc. All Rights Reserved.
3*e3c00c2eSTaylor Simpson  *
4*e3c00c2eSTaylor Simpson  *  This program is free software; you can redistribute it and/or modify
5*e3c00c2eSTaylor Simpson  *  it under the terms of the GNU General Public License as published by
6*e3c00c2eSTaylor Simpson  *  the Free Software Foundation; either version 2 of the License, or
7*e3c00c2eSTaylor Simpson  *  (at your option) any later version.
8*e3c00c2eSTaylor Simpson  *
9*e3c00c2eSTaylor Simpson  *  This program is distributed in the hope that it will be useful,
10*e3c00c2eSTaylor Simpson  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11*e3c00c2eSTaylor Simpson  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12*e3c00c2eSTaylor Simpson  *  GNU General Public License for more details.
13*e3c00c2eSTaylor Simpson  *
14*e3c00c2eSTaylor Simpson  *  You should have received a copy of the GNU General Public License
15*e3c00c2eSTaylor Simpson  *  along with this program; if not, see <http://www.gnu.org/licenses/>.
16*e3c00c2eSTaylor Simpson  */
17*e3c00c2eSTaylor Simpson 
18*e3c00c2eSTaylor Simpson #ifndef HEXAGON_OPCODES_H
19*e3c00c2eSTaylor Simpson #define HEXAGON_OPCODES_H
20*e3c00c2eSTaylor Simpson 
21*e3c00c2eSTaylor Simpson typedef enum {
22*e3c00c2eSTaylor Simpson #define OPCODE(IID) IID
23*e3c00c2eSTaylor Simpson #include "opcodes_def_generated.h.inc"
24*e3c00c2eSTaylor Simpson     XX_LAST_OPCODE
25*e3c00c2eSTaylor Simpson #undef OPCODE
26*e3c00c2eSTaylor Simpson } Opcode;
27*e3c00c2eSTaylor Simpson 
28*e3c00c2eSTaylor Simpson typedef enum {
29*e3c00c2eSTaylor Simpson     NORMAL,
30*e3c00c2eSTaylor Simpson     HALF,
31*e3c00c2eSTaylor Simpson     SUBINSN_A,
32*e3c00c2eSTaylor Simpson     SUBINSN_L1,
33*e3c00c2eSTaylor Simpson     SUBINSN_L2,
34*e3c00c2eSTaylor Simpson     SUBINSN_S1,
35*e3c00c2eSTaylor Simpson     SUBINSN_S2,
36*e3c00c2eSTaylor Simpson     EXT_noext,
37*e3c00c2eSTaylor Simpson     EXT_mmvec,
38*e3c00c2eSTaylor Simpson     XX_LAST_ENC_CLASS
39*e3c00c2eSTaylor Simpson } EncClass;
40*e3c00c2eSTaylor Simpson 
41*e3c00c2eSTaylor Simpson extern const char * const opcode_names[];
42*e3c00c2eSTaylor Simpson 
43*e3c00c2eSTaylor Simpson typedef struct {
44*e3c00c2eSTaylor Simpson     const char * const encoding;
45*e3c00c2eSTaylor Simpson     const EncClass enc_class;
46*e3c00c2eSTaylor Simpson } OpcodeEncoding;
47*e3c00c2eSTaylor Simpson 
48*e3c00c2eSTaylor Simpson extern const OpcodeEncoding opcode_encodings[XX_LAST_OPCODE];
49*e3c00c2eSTaylor Simpson 
50*e3c00c2eSTaylor Simpson void opcode_init(void);
51*e3c00c2eSTaylor Simpson 
52*e3c00c2eSTaylor Simpson #endif
53