1 /* ppc-svp64.h -- Header file for PowerPC opcode table (SVP64 extensions)
2 Copyright (C) 2022 Free Software Foundation, Inc.
3 Written by Dmitry Selyutin (ghostmansd).
4 Sponsored by NLnet and NGI POINTER under EU Grants 871528 and 957073.
6 This file is part of the GNU opcodes library.
8 This library is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3, or (at your option)
13 It is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
16 License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this file; see the file COPYING. If not, write to the
20 Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
21 MA 02110-1301, USA. */
26 #include "ppc-svp64-gen.h"
32 struct svp64_extra_desc
{
33 uint64_t (*get
)(const struct svp64_insn
*insn
);
34 void (*set
)(struct svp64_insn
*insn
, uint64_t value
);
37 const struct svp64_extra_desc
*
38 svp64_extra_desc (const struct svp64_desc
*desc
, ppc_opindex_t opindex
);
41 const struct svp64_desc
*desc
;
42 struct svp64_insn insn
;
43 unsigned int pmmode
: 1;
44 unsigned int pmask
: 3;
45 unsigned int smmode
: 1;
46 unsigned int smask
: 3;
47 unsigned int mmode
: 1;
48 unsigned int has_pmask
: 1;
49 unsigned int has_smask
: 1;
50 unsigned int mask_m_specified
: 1;
51 unsigned int subvl
: 2;
52 unsigned int destwid
: 2;
53 unsigned int srcwid
: 2;
54 unsigned int ldst_elstride
: 1;
55 unsigned int sv_mode_explicit
: 1;
56 unsigned int sv_mode
: 2;
58 unsigned int src_zero
: 1;
59 unsigned int dst_zero
: 1;
60 unsigned int ff
: 3 + 2; /* 3-bit plus RC1 */
61 unsigned int pr
: 3 + 2; /* 3-bit plus RC1 */
65 unsigned int type
: 2;
67 unsigned int mode
: 5;
69 /* These are not implemented yet. */
70 unsigned int bc_all
: 1;
71 unsigned int bc_lru
: 1;
72 unsigned int bc_brc
: 1;
73 unsigned int bc_svstep
: 1;
74 unsigned int bc_vsb
: 1;
75 unsigned int bc_vlset
: 1;
76 unsigned int bc_vli
: 1;
77 unsigned int bc_snz
: 1;
80 #define SVP64_RC1_ACTIVE (1U << 3U)
81 #define SVP64_RC1_INVERT (SVP64_RC1_ACTIVE | (1U << 4U))
87 #endif /* PPC_SVP64_H */