1ed6a76a9Schristos /* Nios II R2 opcode list for GAS, the GNU assembler.
2*1424dfb3Schristos    Copyright (C) 2013-2020 Free Software Foundation, Inc.
3ed6a76a9Schristos    Contributed by Mentor Graphics, Inc.
4ed6a76a9Schristos 
51c468f90Schristos    This file is part of the GNU opcodes library.
6ed6a76a9Schristos 
7ed6a76a9Schristos    GAS/GDB is free software; you can redistribute it and/or modify
8ed6a76a9Schristos    it under the terms of the GNU General Public License as published by
9ed6a76a9Schristos    the Free Software Foundation; either version 3, or (at your option)
10ed6a76a9Schristos    any later version.
11ed6a76a9Schristos 
12ed6a76a9Schristos    GAS/GDB is distributed in the hope that it will be useful,
13ed6a76a9Schristos    but WITHOUT ANY WARRANTY; without even the implied warranty of
14ed6a76a9Schristos    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15ed6a76a9Schristos    GNU General Public License for more details.
16ed6a76a9Schristos 
17ed6a76a9Schristos    You should have received a copy of the GNU General Public License
18ed6a76a9Schristos    along with GAS or GDB; see the file COPYING3.  If not, write to
19ed6a76a9Schristos    the Free Software Foundation, 51 Franklin Street - Fifth Floor,
20ed6a76a9Schristos    Boston, MA 02110-1301, USA.  */
21ed6a76a9Schristos 
22ed6a76a9Schristos #ifndef _NIOS2R2_H_
23ed6a76a9Schristos #define _NIOS2R2_H_
24ed6a76a9Schristos 
25ed6a76a9Schristos /* Fields for 32-bit R2 instructions.  */
26ed6a76a9Schristos 
27ed6a76a9Schristos #define IW_R2_OP_LSB 0
28ed6a76a9Schristos #define IW_R2_OP_SIZE 6
29ed6a76a9Schristos #define IW_R2_OP_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_R2_OP_SIZE))
30ed6a76a9Schristos #define IW_R2_OP_SHIFTED_MASK (IW_R2_OP_UNSHIFTED_MASK << IW_R2_OP_LSB)
31ed6a76a9Schristos #define GET_IW_R2_OP(W) (((W) >> IW_R2_OP_LSB) & IW_R2_OP_UNSHIFTED_MASK)
32ed6a76a9Schristos #define SET_IW_R2_OP(V) (((V) & IW_R2_OP_UNSHIFTED_MASK) << IW_R2_OP_LSB)
33ed6a76a9Schristos 
34ed6a76a9Schristos #define IW_L26_IMM26_LSB 6
35ed6a76a9Schristos #define IW_L26_IMM26_SIZE 26
36ed6a76a9Schristos #define IW_L26_IMM26_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_L26_IMM26_SIZE))
37ed6a76a9Schristos #define IW_L26_IMM26_SHIFTED_MASK (IW_L26_IMM26_UNSHIFTED_MASK << IW_L26_IMM26_LSB)
38ed6a76a9Schristos #define GET_IW_L26_IMM26(W) (((W) >> IW_L26_IMM26_LSB) & IW_L26_IMM26_UNSHIFTED_MASK)
39ed6a76a9Schristos #define SET_IW_L26_IMM26(V) (((V) & IW_L26_IMM26_UNSHIFTED_MASK) << IW_L26_IMM26_LSB)
40ed6a76a9Schristos 
41ed6a76a9Schristos #define IW_F2I16_A_LSB 6
42ed6a76a9Schristos #define IW_F2I16_A_SIZE 5
43ed6a76a9Schristos #define IW_F2I16_A_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F2I16_A_SIZE))
44ed6a76a9Schristos #define IW_F2I16_A_SHIFTED_MASK (IW_F2I16_A_UNSHIFTED_MASK << IW_F2I16_A_LSB)
45ed6a76a9Schristos #define GET_IW_F2I16_A(W) (((W) >> IW_F2I16_A_LSB) & IW_F2I16_A_UNSHIFTED_MASK)
46ed6a76a9Schristos #define SET_IW_F2I16_A(V) (((V) & IW_F2I16_A_UNSHIFTED_MASK) << IW_F2I16_A_LSB)
47ed6a76a9Schristos 
48ed6a76a9Schristos #define IW_F2I16_B_LSB 11
49ed6a76a9Schristos #define IW_F2I16_B_SIZE 5
50ed6a76a9Schristos #define IW_F2I16_B_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F2I16_B_SIZE))
51ed6a76a9Schristos #define IW_F2I16_B_SHIFTED_MASK (IW_F2I16_B_UNSHIFTED_MASK << IW_F2I16_B_LSB)
52ed6a76a9Schristos #define GET_IW_F2I16_B(W) (((W) >> IW_F2I16_B_LSB) & IW_F2I16_B_UNSHIFTED_MASK)
53ed6a76a9Schristos #define SET_IW_F2I16_B(V) (((V) & IW_F2I16_B_UNSHIFTED_MASK) << IW_F2I16_B_LSB)
54ed6a76a9Schristos 
55ed6a76a9Schristos #define IW_F2I16_IMM16_LSB 16
56ed6a76a9Schristos #define IW_F2I16_IMM16_SIZE 16
57ed6a76a9Schristos #define IW_F2I16_IMM16_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F2I16_IMM16_SIZE))
58ed6a76a9Schristos #define IW_F2I16_IMM16_SHIFTED_MASK (IW_F2I16_IMM16_UNSHIFTED_MASK << IW_F2I16_IMM16_LSB)
59ed6a76a9Schristos #define GET_IW_F2I16_IMM16(W) (((W) >> IW_F2I16_IMM16_LSB) & IW_F2I16_IMM16_UNSHIFTED_MASK)
60ed6a76a9Schristos #define SET_IW_F2I16_IMM16(V) (((V) & IW_F2I16_IMM16_UNSHIFTED_MASK) << IW_F2I16_IMM16_LSB)
61ed6a76a9Schristos 
62ed6a76a9Schristos /* Common to all three I12-group formats F2X4I12, F1X4I12, F1X4L17.  */
63ed6a76a9Schristos #define IW_I12_X_LSB 28
64ed6a76a9Schristos #define IW_I12_X_SIZE 4
65ed6a76a9Schristos #define IW_I12_X_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_I12_X_SIZE))
66ed6a76a9Schristos #define IW_I12_X_SHIFTED_MASK (IW_I12_X_UNSHIFTED_MASK << IW_I12_X_LSB)
67ed6a76a9Schristos #define GET_IW_I12_X(W) (((W) >> IW_I12_X_LSB) & IW_I12_X_UNSHIFTED_MASK)
68ed6a76a9Schristos #define SET_IW_I12_X(V) (((V) & IW_I12_X_UNSHIFTED_MASK) << IW_I12_X_LSB)
69ed6a76a9Schristos 
70ed6a76a9Schristos #define IW_F2X4I12_A_LSB 6
71ed6a76a9Schristos #define IW_F2X4I12_A_SIZE 5
72ed6a76a9Schristos #define IW_F2X4I12_A_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F2X4I12_A_SIZE))
73ed6a76a9Schristos #define IW_F2X4I12_A_SHIFTED_MASK (IW_F2X4I12_A_UNSHIFTED_MASK << IW_F2X4I12_A_LSB)
74ed6a76a9Schristos #define GET_IW_F2X4I12_A(W) (((W) >> IW_F2X4I12_A_LSB) & IW_F2X4I12_A_UNSHIFTED_MASK)
75ed6a76a9Schristos #define SET_IW_F2X4I12_A(V) (((V) & IW_F2X4I12_A_UNSHIFTED_MASK) << IW_F2X4I12_A_LSB)
76ed6a76a9Schristos 
77ed6a76a9Schristos #define IW_F2X4I12_B_LSB 11
78ed6a76a9Schristos #define IW_F2X4I12_B_SIZE 5
79ed6a76a9Schristos #define IW_F2X4I12_B_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F2X4I12_B_SIZE))
80ed6a76a9Schristos #define IW_F2X4I12_B_SHIFTED_MASK (IW_F2X4I12_B_UNSHIFTED_MASK << IW_F2X4I12_B_LSB)
81ed6a76a9Schristos #define GET_IW_F2X4I12_B(W) (((W) >> IW_F2X4I12_B_LSB) & IW_F2X4I12_B_UNSHIFTED_MASK)
82ed6a76a9Schristos #define SET_IW_F2X4I12_B(V) (((V) & IW_F2X4I12_B_UNSHIFTED_MASK) << IW_F2X4I12_B_LSB)
83ed6a76a9Schristos 
84ed6a76a9Schristos #define IW_F2X4I12_IMM12_LSB 16
85ed6a76a9Schristos #define IW_F2X4I12_IMM12_SIZE 12
86ed6a76a9Schristos #define IW_F2X4I12_IMM12_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F2X4I12_IMM12_SIZE))
87ed6a76a9Schristos #define IW_F2X4I12_IMM12_SHIFTED_MASK (IW_F2X4I12_IMM12_UNSHIFTED_MASK << IW_F2X4I12_IMM12_LSB)
88ed6a76a9Schristos #define GET_IW_F2X4I12_IMM12(W) (((W) >> IW_F2X4I12_IMM12_LSB) & IW_F2X4I12_IMM12_UNSHIFTED_MASK)
89ed6a76a9Schristos #define SET_IW_F2X4I12_IMM12(V) (((V) & IW_F2X4I12_IMM12_UNSHIFTED_MASK) << IW_F2X4I12_IMM12_LSB)
90ed6a76a9Schristos 
91ed6a76a9Schristos #define IW_F1X4I12_A_LSB 6
92ed6a76a9Schristos #define IW_F1X4I12_A_SIZE 5
93ed6a76a9Schristos #define IW_F1X4I12_A_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F1X4I12_A_SIZE))
94ed6a76a9Schristos #define IW_F1X4I12_A_SHIFTED_MASK (IW_F1X4I12_A_UNSHIFTED_MASK << IW_F1X4I12_A_LSB)
95ed6a76a9Schristos #define GET_IW_F1X4I12_A(W) (((W) >> IW_F1X4I12_A_LSB) & IW_F1X4I12_A_UNSHIFTED_MASK)
96ed6a76a9Schristos #define SET_IW_F1X4I12_A(V) (((V) & IW_F1X4I12_A_UNSHIFTED_MASK) << IW_F1X4I12_A_LSB)
97ed6a76a9Schristos 
98ed6a76a9Schristos #define IW_F1X4I12_X_LSB 11
99ed6a76a9Schristos #define IW_F1X4I12_X_SIZE 5
100ed6a76a9Schristos #define IW_F1X4I12_X_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F1X4I12_X_SIZE))
101ed6a76a9Schristos #define IW_F1X4I12_X_SHIFTED_MASK (IW_F1X4I12_X_UNSHIFTED_MASK << IW_F1X4I12_X_LSB)
102ed6a76a9Schristos #define GET_IW_F1X4I12_X(W) (((W) >> IW_F1X4I12_X_LSB) & IW_F1X4I12_X_UNSHIFTED_MASK)
103ed6a76a9Schristos #define SET_IW_F1X4I12_X(V) (((V) & IW_F1X4I12_X_UNSHIFTED_MASK) << IW_F1X4I12_X_LSB)
104ed6a76a9Schristos 
105ed6a76a9Schristos #define IW_F1X4I12_IMM12_LSB 16
106ed6a76a9Schristos #define IW_F1X4I12_IMM12_SIZE 12
107ed6a76a9Schristos #define IW_F1X4I12_IMM12_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F1X4I12_IMM12_SIZE))
108ed6a76a9Schristos #define IW_F1X4I12_IMM12_SHIFTED_MASK (IW_F1X4I12_IMM12_UNSHIFTED_MASK << IW_F1X4I12_IMM12_LSB)
109ed6a76a9Schristos #define GET_IW_F1X4I12_IMM12(W) (((W) >> IW_F1X4I12_IMM12_LSB) & IW_F1X4I12_IMM12_UNSHIFTED_MASK)
110ed6a76a9Schristos #define SET_IW_F1X4I12_IMM12(V) (((V) & IW_F1X4I12_IMM12_UNSHIFTED_MASK) << IW_F1X4I12_IMM12_LSB)
111ed6a76a9Schristos 
112ed6a76a9Schristos #define IW_F1X4L17_A_LSB 6
113ed6a76a9Schristos #define IW_F1X4L17_A_SIZE 5
114ed6a76a9Schristos #define IW_F1X4L17_A_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F1X4L17_A_SIZE))
115ed6a76a9Schristos #define IW_F1X4L17_A_SHIFTED_MASK (IW_F1X4L17_A_UNSHIFTED_MASK << IW_F1X4L17_A_LSB)
116ed6a76a9Schristos #define GET_IW_F1X4L17_A(W) (((W) >> IW_F1X4L17_A_LSB) & IW_F1X4L17_A_UNSHIFTED_MASK)
117ed6a76a9Schristos #define SET_IW_F1X4L17_A(V) (((V) & IW_F1X4L17_A_UNSHIFTED_MASK) << IW_F1X4L17_A_LSB)
118ed6a76a9Schristos 
119ed6a76a9Schristos #define IW_F1X4L17_ID_LSB 11
120ed6a76a9Schristos #define IW_F1X4L17_ID_SIZE 1
121ed6a76a9Schristos #define IW_F1X4L17_ID_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F1X4L17_ID_SIZE))
122ed6a76a9Schristos #define IW_F1X4L17_ID_SHIFTED_MASK (IW_F1X4L17_ID_UNSHIFTED_MASK << IW_F1X4L17_ID_LSB)
123ed6a76a9Schristos #define GET_IW_F1X4L17_ID(W) (((W) >> IW_F1X4L17_ID_LSB) & IW_F1X4L17_ID_UNSHIFTED_MASK)
124ed6a76a9Schristos #define SET_IW_F1X4L17_ID(V) (((V) & IW_F1X4L17_ID_UNSHIFTED_MASK) << IW_F1X4L17_ID_LSB)
125ed6a76a9Schristos 
126ed6a76a9Schristos #define IW_F1X4L17_WB_LSB 12
127ed6a76a9Schristos #define IW_F1X4L17_WB_SIZE 1
128ed6a76a9Schristos #define IW_F1X4L17_WB_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F1X4L17_WB_SIZE))
129ed6a76a9Schristos #define IW_F1X4L17_WB_SHIFTED_MASK (IW_F1X4L17_WB_UNSHIFTED_MASK << IW_F1X4L17_WB_LSB)
130ed6a76a9Schristos #define GET_IW_F1X4L17_WB(W) (((W) >> IW_F1X4L17_WB_LSB) & IW_F1X4L17_WB_UNSHIFTED_MASK)
131ed6a76a9Schristos #define SET_IW_F1X4L17_WB(V) (((V) & IW_F1X4L17_WB_UNSHIFTED_MASK) << IW_F1X4L17_WB_LSB)
132ed6a76a9Schristos 
133ed6a76a9Schristos #define IW_F1X4L17_RS_LSB 13
134ed6a76a9Schristos #define IW_F1X4L17_RS_SIZE 1
135ed6a76a9Schristos #define IW_F1X4L17_RS_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F1X4L17_RS_SIZE))
136ed6a76a9Schristos #define IW_F1X4L17_RS_SHIFTED_MASK (IW_F1X4L17_RS_UNSHIFTED_MASK << IW_F1X4L17_RS_LSB)
137ed6a76a9Schristos #define GET_IW_F1X4L17_RS(W) (((W) >> IW_F1X4L17_RS_LSB) & IW_F1X4L17_RS_UNSHIFTED_MASK)
138ed6a76a9Schristos #define SET_IW_F1X4L17_RS(V) (((V) & IW_F1X4L17_RS_UNSHIFTED_MASK) << IW_F1X4L17_RS_LSB)
139ed6a76a9Schristos 
140ed6a76a9Schristos #define IW_F1X4L17_PC_LSB 14
141ed6a76a9Schristos #define IW_F1X4L17_PC_SIZE 1
142ed6a76a9Schristos #define IW_F1X4L17_PC_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F1X4L17_PC_SIZE))
143ed6a76a9Schristos #define IW_F1X4L17_PC_SHIFTED_MASK (IW_F1X4L17_PC_UNSHIFTED_MASK << IW_F1X4L17_PC_LSB)
144ed6a76a9Schristos #define GET_IW_F1X4L17_PC(W) (((W) >> IW_F1X4L17_PC_LSB) & IW_F1X4L17_PC_UNSHIFTED_MASK)
145ed6a76a9Schristos #define SET_IW_F1X4L17_PC(V) (((V) & IW_F1X4L17_PC_UNSHIFTED_MASK) << IW_F1X4L17_PC_LSB)
146ed6a76a9Schristos 
147ed6a76a9Schristos #define IW_F1X4L17_RSV_LSB 15
148ed6a76a9Schristos #define IW_F1X4L17_RSV_SIZE 1
149ed6a76a9Schristos #define IW_F1X4L17_RSV_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F1X4L17_RSV_SIZE))
150ed6a76a9Schristos #define IW_F1X4L17_RSV_SHIFTED_MASK (IW_F1X4L17_RSV_UNSHIFTED_MASK << IW_F1X4L17_RSV_LSB)
151ed6a76a9Schristos #define GET_IW_F1X4L17_RSV(W) (((W) >> IW_F1X4L17_RSV_LSB) & IW_F1X4L17_RSV_UNSHIFTED_MASK)
152ed6a76a9Schristos #define SET_IW_F1X4L17_RSV(V) (((V) & IW_F1X4L17_RSV_UNSHIFTED_MASK) << IW_F1X4L17_RSV_LSB)
153ed6a76a9Schristos 
154ed6a76a9Schristos #define IW_F1X4L17_REGMASK_LSB 16
155ed6a76a9Schristos #define IW_F1X4L17_REGMASK_SIZE 12
156ed6a76a9Schristos #define IW_F1X4L17_REGMASK_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F1X4L17_REGMASK_SIZE))
157ed6a76a9Schristos #define IW_F1X4L17_REGMASK_SHIFTED_MASK (IW_F1X4L17_REGMASK_UNSHIFTED_MASK << IW_F1X4L17_REGMASK_LSB)
158ed6a76a9Schristos #define GET_IW_F1X4L17_REGMASK(W) (((W) >> IW_F1X4L17_REGMASK_LSB) & IW_F1X4L17_REGMASK_UNSHIFTED_MASK)
159ed6a76a9Schristos #define SET_IW_F1X4L17_REGMASK(V) (((V) & IW_F1X4L17_REGMASK_UNSHIFTED_MASK) << IW_F1X4L17_REGMASK_LSB)
160ed6a76a9Schristos 
161ed6a76a9Schristos /* Shared by OPX-group formats F3X6L5, F2X6L10, F3X6.  */
162ed6a76a9Schristos #define IW_OPX_X_LSB 26
163ed6a76a9Schristos #define IW_OPX_X_SIZE 6
164ed6a76a9Schristos #define IW_OPX_X_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_OPX_X_SIZE))
165ed6a76a9Schristos #define IW_OPX_X_SHIFTED_MASK (IW_OPX_X_UNSHIFTED_MASK << IW_OPX_X_LSB)
166ed6a76a9Schristos #define GET_IW_OPX_X(W) (((W) >> IW_OPX_X_LSB) & IW_OPX_X_UNSHIFTED_MASK)
167ed6a76a9Schristos #define SET_IW_OPX_X(V) (((V) & IW_OPX_X_UNSHIFTED_MASK) << IW_OPX_X_LSB)
168ed6a76a9Schristos 
169ed6a76a9Schristos /* F3X6L5 accessors are also used for F3X6 formats.  */
170ed6a76a9Schristos #define IW_F3X6L5_A_LSB 6
171ed6a76a9Schristos #define IW_F3X6L5_A_SIZE 5
172ed6a76a9Schristos #define IW_F3X6L5_A_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F3X6L5_A_SIZE))
173ed6a76a9Schristos #define IW_F3X6L5_A_SHIFTED_MASK (IW_F3X6L5_A_UNSHIFTED_MASK << IW_F3X6L5_A_LSB)
174ed6a76a9Schristos #define GET_IW_F3X6L5_A(W) (((W) >> IW_F3X6L5_A_LSB) & IW_F3X6L5_A_UNSHIFTED_MASK)
175ed6a76a9Schristos #define SET_IW_F3X6L5_A(V) (((V) & IW_F3X6L5_A_UNSHIFTED_MASK) << IW_F3X6L5_A_LSB)
176ed6a76a9Schristos 
177ed6a76a9Schristos #define IW_F3X6L5_B_LSB 11
178ed6a76a9Schristos #define IW_F3X6L5_B_SIZE 5
179ed6a76a9Schristos #define IW_F3X6L5_B_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F3X6L5_B_SIZE))
180ed6a76a9Schristos #define IW_F3X6L5_B_SHIFTED_MASK (IW_F3X6L5_B_UNSHIFTED_MASK << IW_F3X6L5_B_LSB)
181ed6a76a9Schristos #define GET_IW_F3X6L5_B(W) (((W) >> IW_F3X6L5_B_LSB) & IW_F3X6L5_B_UNSHIFTED_MASK)
182ed6a76a9Schristos #define SET_IW_F3X6L5_B(V) (((V) & IW_F3X6L5_B_UNSHIFTED_MASK) << IW_F3X6L5_B_LSB)
183ed6a76a9Schristos 
184ed6a76a9Schristos #define IW_F3X6L5_C_LSB 16
185ed6a76a9Schristos #define IW_F3X6L5_C_SIZE 5
186ed6a76a9Schristos #define IW_F3X6L5_C_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F3X6L5_C_SIZE))
187ed6a76a9Schristos #define IW_F3X6L5_C_SHIFTED_MASK (IW_F3X6L5_C_UNSHIFTED_MASK << IW_F3X6L5_C_LSB)
188ed6a76a9Schristos #define GET_IW_F3X6L5_C(W) (((W) >> IW_F3X6L5_C_LSB) & IW_F3X6L5_C_UNSHIFTED_MASK)
189ed6a76a9Schristos #define SET_IW_F3X6L5_C(V) (((V) & IW_F3X6L5_C_UNSHIFTED_MASK) << IW_F3X6L5_C_LSB)
190ed6a76a9Schristos 
191ed6a76a9Schristos #define IW_F3X6L5_IMM5_LSB 21
192ed6a76a9Schristos #define IW_F3X6L5_IMM5_SIZE 5
193ed6a76a9Schristos #define IW_F3X6L5_IMM5_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F3X6L5_IMM5_SIZE))
194ed6a76a9Schristos #define IW_F3X6L5_IMM5_SHIFTED_MASK (IW_F3X6L5_IMM5_UNSHIFTED_MASK << IW_F3X6L5_IMM5_LSB)
195ed6a76a9Schristos #define GET_IW_F3X6L5_IMM5(W) (((W) >> IW_F3X6L5_IMM5_LSB) & IW_F3X6L5_IMM5_UNSHIFTED_MASK)
196ed6a76a9Schristos #define SET_IW_F3X6L5_IMM5(V) (((V) & IW_F3X6L5_IMM5_UNSHIFTED_MASK) << IW_F3X6L5_IMM5_LSB)
197ed6a76a9Schristos 
198ed6a76a9Schristos #define IW_F2X6L10_A_LSB 6
199ed6a76a9Schristos #define IW_F2X6L10_A_SIZE 5
200ed6a76a9Schristos #define IW_F2X6L10_A_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F2X6L10_A_SIZE))
201ed6a76a9Schristos #define IW_F2X6L10_A_SHIFTED_MASK (IW_F2X6L10_A_UNSHIFTED_MASK << IW_F2X6L10_A_LSB)
202ed6a76a9Schristos #define GET_IW_F2X6L10_A(W) (((W) >> IW_F2X6L10_A_LSB) & IW_F2X6L10_A_UNSHIFTED_MASK)
203ed6a76a9Schristos #define SET_IW_F2X6L10_A(V) (((V) & IW_F2X6L10_A_UNSHIFTED_MASK) << IW_F2X6L10_A_LSB)
204ed6a76a9Schristos 
205ed6a76a9Schristos #define IW_F2X6L10_B_LSB 11
206ed6a76a9Schristos #define IW_F2X6L10_B_SIZE 5
207ed6a76a9Schristos #define IW_F2X6L10_B_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F2X6L10_B_SIZE))
208ed6a76a9Schristos #define IW_F2X6L10_B_SHIFTED_MASK (IW_F2X6L10_B_UNSHIFTED_MASK << IW_F2X6L10_B_LSB)
209ed6a76a9Schristos #define GET_IW_F2X6L10_B(W) (((W) >> IW_F2X6L10_B_LSB) & IW_F2X6L10_B_UNSHIFTED_MASK)
210ed6a76a9Schristos #define SET_IW_F2X6L10_B(V) (((V) & IW_F2X6L10_B_UNSHIFTED_MASK) << IW_F2X6L10_B_LSB)
211ed6a76a9Schristos 
212ed6a76a9Schristos #define IW_F2X6L10_LSB_LSB 16
213ed6a76a9Schristos #define IW_F2X6L10_LSB_SIZE 5
214ed6a76a9Schristos #define IW_F2X6L10_LSB_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F2X6L10_LSB_SIZE))
215ed6a76a9Schristos #define IW_F2X6L10_LSB_SHIFTED_MASK (IW_F2X6L10_LSB_UNSHIFTED_MASK << IW_F2X6L10_LSB_LSB)
216ed6a76a9Schristos #define GET_IW_F2X6L10_LSB(W) (((W) >> IW_F2X6L10_LSB_LSB) & IW_F2X6L10_LSB_UNSHIFTED_MASK)
217ed6a76a9Schristos #define SET_IW_F2X6L10_LSB(V) (((V) & IW_F2X6L10_LSB_UNSHIFTED_MASK) << IW_F2X6L10_LSB_LSB)
218ed6a76a9Schristos 
219ed6a76a9Schristos #define IW_F2X6L10_MSB_LSB 21
220ed6a76a9Schristos #define IW_F2X6L10_MSB_SIZE 5
221ed6a76a9Schristos #define IW_F2X6L10_MSB_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F2X6L10_MSB_SIZE))
222ed6a76a9Schristos #define IW_F2X6L10_MSB_SHIFTED_MASK (IW_F2X6L10_MSB_UNSHIFTED_MASK << IW_F2X6L10_MSB_LSB)
223ed6a76a9Schristos #define GET_IW_F2X6L10_MSB(W) (((W) >> IW_F2X6L10_MSB_LSB) & IW_F2X6L10_MSB_UNSHIFTED_MASK)
224ed6a76a9Schristos #define SET_IW_F2X6L10_MSB(V) (((V) & IW_F2X6L10_MSB_UNSHIFTED_MASK) << IW_F2X6L10_MSB_LSB)
225ed6a76a9Schristos 
226ed6a76a9Schristos #define IW_F3X8_A_LSB 6
227ed6a76a9Schristos #define IW_F3X8_A_SIZE 5
228ed6a76a9Schristos #define IW_F3X8_A_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F3X8_A_SIZE))
229ed6a76a9Schristos #define IW_F3X8_A_SHIFTED_MASK (IW_F3X8_A_UNSHIFTED_MASK << IW_F3X8_A_LSB)
230ed6a76a9Schristos #define GET_IW_F3X8_A(W) (((W) >> IW_F3X8_A_LSB) & IW_F3X8_A_UNSHIFTED_MASK)
231ed6a76a9Schristos #define SET_IW_F3X8_A(V) (((V) & IW_F3X8_A_UNSHIFTED_MASK) << IW_F3X8_A_LSB)
232ed6a76a9Schristos 
233ed6a76a9Schristos #define IW_F3X8_B_LSB 11
234ed6a76a9Schristos #define IW_F3X8_B_SIZE 5
235ed6a76a9Schristos #define IW_F3X8_B_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F3X8_B_SIZE))
236ed6a76a9Schristos #define IW_F3X8_B_SHIFTED_MASK (IW_F3X8_B_UNSHIFTED_MASK << IW_F3X8_B_LSB)
237ed6a76a9Schristos #define GET_IW_F3X8_B(W) (((W) >> IW_F3X8_B_LSB) & IW_F3X8_B_UNSHIFTED_MASK)
238ed6a76a9Schristos #define SET_IW_F3X8_B(V) (((V) & IW_F3X8_B_UNSHIFTED_MASK) << IW_F3X8_B_LSB)
239ed6a76a9Schristos 
240ed6a76a9Schristos #define IW_F3X8_C_LSB 16
241ed6a76a9Schristos #define IW_F3X8_C_SIZE 5
242ed6a76a9Schristos #define IW_F3X8_C_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F3X8_C_SIZE))
243ed6a76a9Schristos #define IW_F3X8_C_SHIFTED_MASK (IW_F3X8_C_UNSHIFTED_MASK << IW_F3X8_C_LSB)
244ed6a76a9Schristos #define GET_IW_F3X8_C(W) (((W) >> IW_F3X8_C_LSB) & IW_F3X8_C_UNSHIFTED_MASK)
245ed6a76a9Schristos #define SET_IW_F3X8_C(V) (((V) & IW_F3X8_C_UNSHIFTED_MASK) << IW_F3X8_C_LSB)
246ed6a76a9Schristos 
247ed6a76a9Schristos #define IW_F3X8_READA_LSB 21
248ed6a76a9Schristos #define IW_F3X8_READA_SIZE 1
249ed6a76a9Schristos #define IW_F3X8_READA_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F3X8_READA_SIZE))
250ed6a76a9Schristos #define IW_F3X8_READA_SHIFTED_MASK (IW_F3X8_READA_UNSHIFTED_MASK << IW_F3X8_READA_LSB)
251ed6a76a9Schristos #define GET_IW_F3X8_READA(W) (((W) >> IW_F3X8_READA_LSB) & IW_F3X8_READA_UNSHIFTED_MASK)
252ed6a76a9Schristos #define SET_IW_F3X8_READA(V) (((V) & IW_F3X8_READA_UNSHIFTED_MASK) << IW_F3X8_READA_LSB)
253ed6a76a9Schristos 
254ed6a76a9Schristos #define IW_F3X8_READB_LSB 22
255ed6a76a9Schristos #define IW_F3X8_READB_SIZE 1
256ed6a76a9Schristos #define IW_F3X8_READB_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F3X8_READB_SIZE))
257ed6a76a9Schristos #define IW_F3X8_READB_SHIFTED_MASK (IW_F3X8_READB_UNSHIFTED_MASK << IW_F3X8_READB_LSB)
258ed6a76a9Schristos #define GET_IW_F3X8_READB(W) (((W) >> IW_F3X8_READB_LSB) & IW_F3X8_READB_UNSHIFTED_MASK)
259ed6a76a9Schristos #define SET_IW_F3X8_READB(V) (((V) & IW_F3X8_READB_UNSHIFTED_MASK) << IW_F3X8_READB_LSB)
260ed6a76a9Schristos 
261ed6a76a9Schristos #define IW_F3X8_READC_LSB 23
262ed6a76a9Schristos #define IW_F3X8_READC_SIZE 1
263ed6a76a9Schristos #define IW_F3X8_READC_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F3X8_READC_SIZE))
264ed6a76a9Schristos #define IW_F3X8_READC_SHIFTED_MASK (IW_F3X8_READC_UNSHIFTED_MASK << IW_F3X8_READC_LSB)
265ed6a76a9Schristos #define GET_IW_F3X8_READC(W) (((W) >> IW_F3X8_READC_LSB) & IW_F3X8_READC_UNSHIFTED_MASK)
266ed6a76a9Schristos #define SET_IW_F3X8_READC(V) (((V) & IW_F3X8_READC_UNSHIFTED_MASK) << IW_F3X8_READC_LSB)
267ed6a76a9Schristos 
268ed6a76a9Schristos #define IW_F3X8_N_LSB 24
269ed6a76a9Schristos #define IW_F3X8_N_SIZE 8
270ed6a76a9Schristos #define IW_F3X8_N_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F3X8_N_SIZE))
271ed6a76a9Schristos #define IW_F3X8_N_SHIFTED_MASK (IW_F3X8_N_UNSHIFTED_MASK << IW_F3X8_N_LSB)
272ed6a76a9Schristos #define GET_IW_F3X8_N(W) (((W) >> IW_F3X8_N_LSB) & IW_F3X8_N_UNSHIFTED_MASK)
273ed6a76a9Schristos #define SET_IW_F3X8_N(V) (((V) & IW_F3X8_N_UNSHIFTED_MASK) << IW_F3X8_N_LSB)
274ed6a76a9Schristos 
275ed6a76a9Schristos /* 16-bit R2 fields.  */
276ed6a76a9Schristos 
277ed6a76a9Schristos #define IW_I10_IMM10_LSB 6
278ed6a76a9Schristos #define IW_I10_IMM10_SIZE 10
279ed6a76a9Schristos #define IW_I10_IMM10_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_I10_IMM10_SIZE))
280ed6a76a9Schristos #define IW_I10_IMM10_SHIFTED_MASK (IW_I10_IMM10_UNSHIFTED_MASK << IW_I10_IMM10_LSB)
281ed6a76a9Schristos #define GET_IW_I10_IMM10(W) (((W) >> IW_I10_IMM10_LSB) & IW_I10_IMM10_UNSHIFTED_MASK)
282ed6a76a9Schristos #define SET_IW_I10_IMM10(V) (((V) & IW_I10_IMM10_UNSHIFTED_MASK) << IW_I10_IMM10_LSB)
283ed6a76a9Schristos 
284ed6a76a9Schristos #define IW_T1I7_A3_LSB 6
285ed6a76a9Schristos #define IW_T1I7_A3_SIZE 3
286ed6a76a9Schristos #define IW_T1I7_A3_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T1I7_A3_SIZE))
287ed6a76a9Schristos #define IW_T1I7_A3_SHIFTED_MASK (IW_T1I7_A3_UNSHIFTED_MASK << IW_T1I7_A3_LSB)
288ed6a76a9Schristos #define GET_IW_T1I7_A3(W) (((W) >> IW_T1I7_A3_LSB) & IW_T1I7_A3_UNSHIFTED_MASK)
289ed6a76a9Schristos #define SET_IW_T1I7_A3(V) (((V) & IW_T1I7_A3_UNSHIFTED_MASK) << IW_T1I7_A3_LSB)
290ed6a76a9Schristos 
291ed6a76a9Schristos #define IW_T1I7_IMM7_LSB 9
292ed6a76a9Schristos #define IW_T1I7_IMM7_SIZE 7
293ed6a76a9Schristos #define IW_T1I7_IMM7_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T1I7_IMM7_SIZE))
294ed6a76a9Schristos #define IW_T1I7_IMM7_SHIFTED_MASK (IW_T1I7_IMM7_UNSHIFTED_MASK << IW_T1I7_IMM7_LSB)
295ed6a76a9Schristos #define GET_IW_T1I7_IMM7(W) (((W) >> IW_T1I7_IMM7_LSB) & IW_T1I7_IMM7_UNSHIFTED_MASK)
296ed6a76a9Schristos #define SET_IW_T1I7_IMM7(V) (((V) & IW_T1I7_IMM7_UNSHIFTED_MASK) << IW_T1I7_IMM7_LSB)
297ed6a76a9Schristos 
298ed6a76a9Schristos #define IW_T2I4_A3_LSB 6
299ed6a76a9Schristos #define IW_T2I4_A3_SIZE 3
300ed6a76a9Schristos #define IW_T2I4_A3_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T2I4_A3_SIZE))
301ed6a76a9Schristos #define IW_T2I4_A3_SHIFTED_MASK (IW_T2I4_A3_UNSHIFTED_MASK << IW_T2I4_A3_LSB)
302ed6a76a9Schristos #define GET_IW_T2I4_A3(W) (((W) >> IW_T2I4_A3_LSB) & IW_T2I4_A3_UNSHIFTED_MASK)
303ed6a76a9Schristos #define SET_IW_T2I4_A3(V) (((V) & IW_T2I4_A3_UNSHIFTED_MASK) << IW_T2I4_A3_LSB)
304ed6a76a9Schristos 
305ed6a76a9Schristos #define IW_T2I4_B3_LSB 9
306ed6a76a9Schristos #define IW_T2I4_B3_SIZE 3
307ed6a76a9Schristos #define IW_T2I4_B3_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T2I4_B3_SIZE))
308ed6a76a9Schristos #define IW_T2I4_B3_SHIFTED_MASK (IW_T2I4_B3_UNSHIFTED_MASK << IW_T2I4_B3_LSB)
309ed6a76a9Schristos #define GET_IW_T2I4_B3(W) (((W) >> IW_T2I4_B3_LSB) & IW_T2I4_B3_UNSHIFTED_MASK)
310ed6a76a9Schristos #define SET_IW_T2I4_B3(V) (((V) & IW_T2I4_B3_UNSHIFTED_MASK) << IW_T2I4_B3_LSB)
311ed6a76a9Schristos 
312ed6a76a9Schristos #define IW_T2I4_IMM4_LSB 12
313ed6a76a9Schristos #define IW_T2I4_IMM4_SIZE 4
314ed6a76a9Schristos #define IW_T2I4_IMM4_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T2I4_IMM4_SIZE))
315ed6a76a9Schristos #define IW_T2I4_IMM4_SHIFTED_MASK (IW_T2I4_IMM4_UNSHIFTED_MASK << IW_T2I4_IMM4_LSB)
316ed6a76a9Schristos #define GET_IW_T2I4_IMM4(W) (((W) >> IW_T2I4_IMM4_LSB) & IW_T2I4_IMM4_UNSHIFTED_MASK)
317ed6a76a9Schristos #define SET_IW_T2I4_IMM4(V) (((V) & IW_T2I4_IMM4_UNSHIFTED_MASK) << IW_T2I4_IMM4_LSB)
318ed6a76a9Schristos 
319ed6a76a9Schristos #define IW_T1X1I6_A3_LSB 6
320ed6a76a9Schristos #define IW_T1X1I6_A3_SIZE 3
321ed6a76a9Schristos #define IW_T1X1I6_A3_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T1X1I6_A3_SIZE))
322ed6a76a9Schristos #define IW_T1X1I6_A3_SHIFTED_MASK (IW_T1X1I6_A3_UNSHIFTED_MASK << IW_T1X1I6_A3_LSB)
323ed6a76a9Schristos #define GET_IW_T1X1I6_A3(W) (((W) >> IW_T1X1I6_A3_LSB) & IW_T1X1I6_A3_UNSHIFTED_MASK)
324ed6a76a9Schristos #define SET_IW_T1X1I6_A3(V) (((V) & IW_T1X1I6_A3_UNSHIFTED_MASK) << IW_T1X1I6_A3_LSB)
325ed6a76a9Schristos 
326ed6a76a9Schristos #define IW_T1X1I6_IMM6_LSB 9
327ed6a76a9Schristos #define IW_T1X1I6_IMM6_SIZE 6
328ed6a76a9Schristos #define IW_T1X1I6_IMM6_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T1X1I6_IMM6_SIZE))
329ed6a76a9Schristos #define IW_T1X1I6_IMM6_SHIFTED_MASK (IW_T1X1I6_IMM6_UNSHIFTED_MASK << IW_T1X1I6_IMM6_LSB)
330ed6a76a9Schristos #define GET_IW_T1X1I6_IMM6(W) (((W) >> IW_T1X1I6_IMM6_LSB) & IW_T1X1I6_IMM6_UNSHIFTED_MASK)
331ed6a76a9Schristos #define SET_IW_T1X1I6_IMM6(V) (((V) & IW_T1X1I6_IMM6_UNSHIFTED_MASK) << IW_T1X1I6_IMM6_LSB)
332ed6a76a9Schristos 
333ed6a76a9Schristos #define IW_T1X1I6_X_LSB 15
334ed6a76a9Schristos #define IW_T1X1I6_X_SIZE 1
335ed6a76a9Schristos #define IW_T1X1I6_X_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T1X1I6_X_SIZE))
336ed6a76a9Schristos #define IW_T1X1I6_X_SHIFTED_MASK (IW_T1X1I6_X_UNSHIFTED_MASK << IW_T1X1I6_X_LSB)
337ed6a76a9Schristos #define GET_IW_T1X1I6_X(W) (((W) >> IW_T1X1I6_X_LSB) & IW_T1X1I6_X_UNSHIFTED_MASK)
338ed6a76a9Schristos #define SET_IW_T1X1I6_X(V) (((V) & IW_T1X1I6_X_UNSHIFTED_MASK) << IW_T1X1I6_X_LSB)
339ed6a76a9Schristos 
340ed6a76a9Schristos #define IW_X1I7_IMM7_LSB 6
341ed6a76a9Schristos #define IW_X1I7_IMM7_SIZE 7
342ed6a76a9Schristos #define IW_X1I7_IMM7_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_X1I7_IMM7_SIZE))
343ed6a76a9Schristos #define IW_X1I7_IMM7_SHIFTED_MASK (IW_X1I7_IMM7_UNSHIFTED_MASK << IW_X1I7_IMM7_LSB)
344ed6a76a9Schristos #define GET_IW_X1I7_IMM7(W) (((W) >> IW_X1I7_IMM7_LSB) & IW_X1I7_IMM7_UNSHIFTED_MASK)
345ed6a76a9Schristos #define SET_IW_X1I7_IMM7(V) (((V) & IW_X1I7_IMM7_UNSHIFTED_MASK) << IW_X1I7_IMM7_LSB)
346ed6a76a9Schristos 
347ed6a76a9Schristos #define IW_X1I7_RSV_LSB 13
348ed6a76a9Schristos #define IW_X1I7_RSV_SIZE 2
349ed6a76a9Schristos #define IW_X1I7_RSV_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_X1I7_RSV_SIZE))
350ed6a76a9Schristos #define IW_X1I7_RSV_SHIFTED_MASK (IW_X1I7_RSV_UNSHIFTED_MASK << IW_X1I7_RSV_LSB)
351ed6a76a9Schristos #define GET_IW_X1I7_RSV(W) (((W) >> IW_X1I7_RSV_LSB) & IW_X1I7_RSV_UNSHIFTED_MASK)
352ed6a76a9Schristos #define SET_IW_X1I7_RSV(V) (((V) & IW_X1I7_RSV_UNSHIFTED_MASK) << IW_X1I7_RSV_LSB)
353ed6a76a9Schristos 
354ed6a76a9Schristos #define IW_X1I7_X_LSB 15
355ed6a76a9Schristos #define IW_X1I7_X_SIZE 1
356ed6a76a9Schristos #define IW_X1I7_X_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_X1I7_X_SIZE))
357ed6a76a9Schristos #define IW_X1I7_X_SHIFTED_MASK (IW_X1I7_X_UNSHIFTED_MASK << IW_X1I7_X_LSB)
358ed6a76a9Schristos #define GET_IW_X1I7_X(W) (((W) >> IW_X1I7_X_LSB) & IW_X1I7_X_UNSHIFTED_MASK)
359ed6a76a9Schristos #define SET_IW_X1I7_X(V) (((V) & IW_X1I7_X_UNSHIFTED_MASK) << IW_X1I7_X_LSB)
360ed6a76a9Schristos 
361ed6a76a9Schristos #define IW_L5I4X1_IMM4_LSB 6
362ed6a76a9Schristos #define IW_L5I4X1_IMM4_SIZE 4
363ed6a76a9Schristos #define IW_L5I4X1_IMM4_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_L5I4X1_IMM4_SIZE))
364ed6a76a9Schristos #define IW_L5I4X1_IMM4_SHIFTED_MASK (IW_L5I4X1_IMM4_UNSHIFTED_MASK << IW_L5I4X1_IMM4_LSB)
365ed6a76a9Schristos #define GET_IW_L5I4X1_IMM4(W) (((W) >> IW_L5I4X1_IMM4_LSB) & IW_L5I4X1_IMM4_UNSHIFTED_MASK)
366ed6a76a9Schristos #define SET_IW_L5I4X1_IMM4(V) (((V) & IW_L5I4X1_IMM4_UNSHIFTED_MASK) << IW_L5I4X1_IMM4_LSB)
367ed6a76a9Schristos 
368ed6a76a9Schristos #define IW_L5I4X1_REGRANGE_LSB 10
369ed6a76a9Schristos #define IW_L5I4X1_REGRANGE_SIZE 3
370ed6a76a9Schristos #define IW_L5I4X1_REGRANGE_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_L5I4X1_REGRANGE_SIZE))
371ed6a76a9Schristos #define IW_L5I4X1_REGRANGE_SHIFTED_MASK (IW_L5I4X1_REGRANGE_UNSHIFTED_MASK << IW_L5I4X1_REGRANGE_LSB)
372ed6a76a9Schristos #define GET_IW_L5I4X1_REGRANGE(W) (((W) >> IW_L5I4X1_REGRANGE_LSB) & IW_L5I4X1_REGRANGE_UNSHIFTED_MASK)
373ed6a76a9Schristos #define SET_IW_L5I4X1_REGRANGE(V) (((V) & IW_L5I4X1_REGRANGE_UNSHIFTED_MASK) << IW_L5I4X1_REGRANGE_LSB)
374ed6a76a9Schristos 
375ed6a76a9Schristos #define IW_L5I4X1_FP_LSB 13
376ed6a76a9Schristos #define IW_L5I4X1_FP_SIZE 1
377ed6a76a9Schristos #define IW_L5I4X1_FP_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_L5I4X1_FP_SIZE))
378ed6a76a9Schristos #define IW_L5I4X1_FP_SHIFTED_MASK (IW_L5I4X1_FP_UNSHIFTED_MASK << IW_L5I4X1_FP_LSB)
379ed6a76a9Schristos #define GET_IW_L5I4X1_FP(W) (((W) >> IW_L5I4X1_FP_LSB) & IW_L5I4X1_FP_UNSHIFTED_MASK)
380ed6a76a9Schristos #define SET_IW_L5I4X1_FP(V) (((V) & IW_L5I4X1_FP_UNSHIFTED_MASK) << IW_L5I4X1_FP_LSB)
381ed6a76a9Schristos 
382ed6a76a9Schristos #define IW_L5I4X1_CS_LSB 14
383ed6a76a9Schristos #define IW_L5I4X1_CS_SIZE 1
384ed6a76a9Schristos #define IW_L5I4X1_CS_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_L5I4X1_CS_SIZE))
385ed6a76a9Schristos #define IW_L5I4X1_CS_SHIFTED_MASK (IW_L5I4X1_CS_UNSHIFTED_MASK << IW_L5I4X1_CS_LSB)
386ed6a76a9Schristos #define GET_IW_L5I4X1_CS(W) (((W) >> IW_L5I4X1_CS_LSB) & IW_L5I4X1_CS_UNSHIFTED_MASK)
387ed6a76a9Schristos #define SET_IW_L5I4X1_CS(V) (((V) & IW_L5I4X1_CS_UNSHIFTED_MASK) << IW_L5I4X1_CS_LSB)
388ed6a76a9Schristos 
389ed6a76a9Schristos #define IW_L5I4X1_X_LSB 15
390ed6a76a9Schristos #define IW_L5I4X1_X_SIZE 1
391ed6a76a9Schristos #define IW_L5I4X1_X_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_L5I4X1_X_SIZE))
392ed6a76a9Schristos #define IW_L5I4X1_X_SHIFTED_MASK (IW_L5I4X1_X_UNSHIFTED_MASK << IW_L5I4X1_X_LSB)
393ed6a76a9Schristos #define GET_IW_L5I4X1_X(W) (((W) >> IW_L5I4X1_X_LSB) & IW_L5I4X1_X_UNSHIFTED_MASK)
394ed6a76a9Schristos #define SET_IW_L5I4X1_X(V) (((V) & IW_L5I4X1_X_UNSHIFTED_MASK) << IW_L5I4X1_X_LSB)
395ed6a76a9Schristos 
396ed6a76a9Schristos #define IW_T2X1L3_A3_LSB 6
397ed6a76a9Schristos #define IW_T2X1L3_A3_SIZE 3
398ed6a76a9Schristos #define IW_T2X1L3_A3_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T2X1L3_A3_SIZE))
399ed6a76a9Schristos #define IW_T2X1L3_A3_SHIFTED_MASK (IW_T2X1L3_A3_UNSHIFTED_MASK << IW_T2X1L3_A3_LSB)
400ed6a76a9Schristos #define GET_IW_T2X1L3_A3(W) (((W) >> IW_T2X1L3_A3_LSB) & IW_T2X1L3_A3_UNSHIFTED_MASK)
401ed6a76a9Schristos #define SET_IW_T2X1L3_A3(V) (((V) & IW_T2X1L3_A3_UNSHIFTED_MASK) << IW_T2X1L3_A3_LSB)
402ed6a76a9Schristos 
403ed6a76a9Schristos #define IW_T2X1L3_B3_LSB 9
404ed6a76a9Schristos #define IW_T2X1L3_B3_SIZE 3
405ed6a76a9Schristos #define IW_T2X1L3_B3_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T2X1L3_B3_SIZE))
406ed6a76a9Schristos #define IW_T2X1L3_B3_SHIFTED_MASK (IW_T2X1L3_B3_UNSHIFTED_MASK << IW_T2X1L3_B3_LSB)
407ed6a76a9Schristos #define GET_IW_T2X1L3_B3(W) (((W) >> IW_T2X1L3_B3_LSB) & IW_T2X1L3_B3_UNSHIFTED_MASK)
408ed6a76a9Schristos #define SET_IW_T2X1L3_B3(V) (((V) & IW_T2X1L3_B3_UNSHIFTED_MASK) << IW_T2X1L3_B3_LSB)
409ed6a76a9Schristos 
410ed6a76a9Schristos #define IW_T2X1L3_SHAMT_LSB 12
411ed6a76a9Schristos #define IW_T2X1L3_SHAMT_SIZE 3
412ed6a76a9Schristos #define IW_T2X1L3_SHAMT_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T2X1L3_SHAMT_SIZE))
413ed6a76a9Schristos #define IW_T2X1L3_SHAMT_SHIFTED_MASK (IW_T2X1L3_SHAMT_UNSHIFTED_MASK << IW_T2X1L3_SHAMT_LSB)
414ed6a76a9Schristos #define GET_IW_T2X1L3_SHAMT(W) (((W) >> IW_T2X1L3_SHAMT_LSB) & IW_T2X1L3_SHAMT_UNSHIFTED_MASK)
415ed6a76a9Schristos #define SET_IW_T2X1L3_SHAMT(V) (((V) & IW_T2X1L3_SHAMT_UNSHIFTED_MASK) << IW_T2X1L3_SHAMT_LSB)
416ed6a76a9Schristos 
417ed6a76a9Schristos #define IW_T2X1L3_X_LSB 15
418ed6a76a9Schristos #define IW_T2X1L3_X_SIZE 1
419ed6a76a9Schristos #define IW_T2X1L3_X_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T2X1L3_X_SIZE))
420ed6a76a9Schristos #define IW_T2X1L3_X_SHIFTED_MASK (IW_T2X1L3_X_UNSHIFTED_MASK << IW_T2X1L3_X_LSB)
421ed6a76a9Schristos #define GET_IW_T2X1L3_X(W) (((W) >> IW_T2X1L3_X_LSB) & IW_T2X1L3_X_UNSHIFTED_MASK)
422ed6a76a9Schristos #define SET_IW_T2X1L3_X(V) (((V) & IW_T2X1L3_X_UNSHIFTED_MASK) << IW_T2X1L3_X_LSB)
423ed6a76a9Schristos 
424ed6a76a9Schristos #define IW_T2X1I3_A3_LSB 6
425ed6a76a9Schristos #define IW_T2X1I3_A3_SIZE 3
426ed6a76a9Schristos #define IW_T2X1I3_A3_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T2X1I3_A3_SIZE))
427ed6a76a9Schristos #define IW_T2X1I3_A3_SHIFTED_MASK (IW_T2X1I3_A3_UNSHIFTED_MASK << IW_T2X1I3_A3_LSB)
428ed6a76a9Schristos #define GET_IW_T2X1I3_A3(W) (((W) >> IW_T2X1I3_A3_LSB) & IW_T2X1I3_A3_UNSHIFTED_MASK)
429ed6a76a9Schristos #define SET_IW_T2X1I3_A3(V) (((V) & IW_T2X1I3_A3_UNSHIFTED_MASK) << IW_T2X1I3_A3_LSB)
430ed6a76a9Schristos 
431ed6a76a9Schristos #define IW_T2X1I3_B3_LSB 9
432ed6a76a9Schristos #define IW_T2X1I3_B3_SIZE 3
433ed6a76a9Schristos #define IW_T2X1I3_B3_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T2X1I3_B3_SIZE))
434ed6a76a9Schristos #define IW_T2X1I3_B3_SHIFTED_MASK (IW_T2X1I3_B3_UNSHIFTED_MASK << IW_T2X1I3_B3_LSB)
435ed6a76a9Schristos #define GET_IW_T2X1I3_B3(W) (((W) >> IW_T2X1I3_B3_LSB) & IW_T2X1I3_B3_UNSHIFTED_MASK)
436ed6a76a9Schristos #define SET_IW_T2X1I3_B3(V) (((V) & IW_T2X1I3_B3_UNSHIFTED_MASK) << IW_T2X1I3_B3_LSB)
437ed6a76a9Schristos 
438ed6a76a9Schristos #define IW_T2X1I3_IMM3_LSB 12
439ed6a76a9Schristos #define IW_T2X1I3_IMM3_SIZE 3
440ed6a76a9Schristos #define IW_T2X1I3_IMM3_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T2X1I3_IMM3_SIZE))
441ed6a76a9Schristos #define IW_T2X1I3_IMM3_SHIFTED_MASK (IW_T2X1I3_IMM3_UNSHIFTED_MASK << IW_T2X1I3_IMM3_LSB)
442ed6a76a9Schristos #define GET_IW_T2X1I3_IMM3(W) (((W) >> IW_T2X1I3_IMM3_LSB) & IW_T2X1I3_IMM3_UNSHIFTED_MASK)
443ed6a76a9Schristos #define SET_IW_T2X1I3_IMM3(V) (((V) & IW_T2X1I3_IMM3_UNSHIFTED_MASK) << IW_T2X1I3_IMM3_LSB)
444ed6a76a9Schristos 
445ed6a76a9Schristos #define IW_T2X1I3_X_LSB 15
446ed6a76a9Schristos #define IW_T2X1I3_X_SIZE 1
447ed6a76a9Schristos #define IW_T2X1I3_X_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T2X1I3_X_SIZE))
448ed6a76a9Schristos #define IW_T2X1I3_X_SHIFTED_MASK (IW_T2X1I3_X_UNSHIFTED_MASK << IW_T2X1I3_X_LSB)
449ed6a76a9Schristos #define GET_IW_T2X1I3_X(W) (((W) >> IW_T2X1I3_X_LSB) & IW_T2X1I3_X_UNSHIFTED_MASK)
450ed6a76a9Schristos #define SET_IW_T2X1I3_X(V) (((V) & IW_T2X1I3_X_UNSHIFTED_MASK) << IW_T2X1I3_X_LSB)
451ed6a76a9Schristos 
452ed6a76a9Schristos #define IW_T3X1_A3_LSB 6
453ed6a76a9Schristos #define IW_T3X1_A3_SIZE 3
454ed6a76a9Schristos #define IW_T3X1_A3_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T3X1_A3_SIZE))
455ed6a76a9Schristos #define IW_T3X1_A3_SHIFTED_MASK (IW_T3X1_A3_UNSHIFTED_MASK << IW_T3X1_A3_LSB)
456ed6a76a9Schristos #define GET_IW_T3X1_A3(W) (((W) >> IW_T3X1_A3_LSB) & IW_T3X1_A3_UNSHIFTED_MASK)
457ed6a76a9Schristos #define SET_IW_T3X1_A3(V) (((V) & IW_T3X1_A3_UNSHIFTED_MASK) << IW_T3X1_A3_LSB)
458ed6a76a9Schristos 
459ed6a76a9Schristos #define IW_T3X1_B3_LSB 9
460ed6a76a9Schristos #define IW_T3X1_B3_SIZE 3
461ed6a76a9Schristos #define IW_T3X1_B3_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T3X1_B3_SIZE))
462ed6a76a9Schristos #define IW_T3X1_B3_SHIFTED_MASK (IW_T3X1_B3_UNSHIFTED_MASK << IW_T3X1_B3_LSB)
463ed6a76a9Schristos #define GET_IW_T3X1_B3(W) (((W) >> IW_T3X1_B3_LSB) & IW_T3X1_B3_UNSHIFTED_MASK)
464ed6a76a9Schristos #define SET_IW_T3X1_B3(V) (((V) & IW_T3X1_B3_UNSHIFTED_MASK) << IW_T3X1_B3_LSB)
465ed6a76a9Schristos 
466ed6a76a9Schristos #define IW_T3X1_C3_LSB 12
467ed6a76a9Schristos #define IW_T3X1_C3_SIZE 3
468ed6a76a9Schristos #define IW_T3X1_C3_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T3X1_C3_SIZE))
469ed6a76a9Schristos #define IW_T3X1_C3_SHIFTED_MASK (IW_T3X1_C3_UNSHIFTED_MASK << IW_T3X1_C3_LSB)
470ed6a76a9Schristos #define GET_IW_T3X1_C3(W) (((W) >> IW_T3X1_C3_LSB) & IW_T3X1_C3_UNSHIFTED_MASK)
471ed6a76a9Schristos #define SET_IW_T3X1_C3(V) (((V) & IW_T3X1_C3_UNSHIFTED_MASK) << IW_T3X1_C3_LSB)
472ed6a76a9Schristos 
473ed6a76a9Schristos #define IW_T3X1_X_LSB 15
474ed6a76a9Schristos #define IW_T3X1_X_SIZE 1
475ed6a76a9Schristos #define IW_T3X1_X_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T3X1_X_SIZE))
476ed6a76a9Schristos #define IW_T3X1_X_SHIFTED_MASK (IW_T3X1_X_UNSHIFTED_MASK << IW_T3X1_X_LSB)
477ed6a76a9Schristos #define GET_IW_T3X1_X(W) (((W) >> IW_T3X1_X_LSB) & IW_T3X1_X_UNSHIFTED_MASK)
478ed6a76a9Schristos #define SET_IW_T3X1_X(V) (((V) & IW_T3X1_X_UNSHIFTED_MASK) << IW_T3X1_X_LSB)
479ed6a76a9Schristos 
480ed6a76a9Schristos /* The X field for all three R.N-class instruction formats is represented
481ed6a76a9Schristos    here as 4 bits, including the bits defined as constant 0 or 1 that
482ed6a76a9Schristos    determine which of the formats T2X3, F1X1, or X2L5 it is.  */
483ed6a76a9Schristos #define IW_R_N_X_LSB 12
484ed6a76a9Schristos #define IW_R_N_X_SIZE 4
485ed6a76a9Schristos #define IW_R_N_X_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_R_N_X_SIZE))
486ed6a76a9Schristos #define IW_R_N_X_SHIFTED_MASK (IW_R_N_X_UNSHIFTED_MASK << IW_R_N_X_LSB)
487ed6a76a9Schristos #define GET_IW_R_N_X(W) (((W) >> IW_R_N_X_LSB) & IW_R_N_X_UNSHIFTED_MASK)
488ed6a76a9Schristos #define SET_IW_R_N_X(V) (((V) & IW_R_N_X_UNSHIFTED_MASK) << IW_R_N_X_LSB)
489ed6a76a9Schristos 
490ed6a76a9Schristos #define IW_T2X3_A3_LSB 6
491ed6a76a9Schristos #define IW_T2X3_A3_SIZE 3
492ed6a76a9Schristos #define IW_T2X3_A3_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T2X3_A3_SIZE))
493ed6a76a9Schristos #define IW_T2X3_A3_SHIFTED_MASK (IW_T2X3_A3_UNSHIFTED_MASK << IW_T2X3_A3_LSB)
494ed6a76a9Schristos #define GET_IW_T2X3_A3(W) (((W) >> IW_T2X3_A3_LSB) & IW_T2X3_A3_UNSHIFTED_MASK)
495ed6a76a9Schristos #define SET_IW_T2X3_A3(V) (((V) & IW_T2X3_A3_UNSHIFTED_MASK) << IW_T2X3_A3_LSB)
496ed6a76a9Schristos 
497ed6a76a9Schristos #define IW_T2X3_B3_LSB 9
498ed6a76a9Schristos #define IW_T2X3_B3_SIZE 3
499ed6a76a9Schristos #define IW_T2X3_B3_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_T2X3_B3_SIZE))
500ed6a76a9Schristos #define IW_T2X3_B3_SHIFTED_MASK (IW_T2X3_B3_UNSHIFTED_MASK << IW_T2X3_B3_LSB)
501ed6a76a9Schristos #define GET_IW_T2X3_B3(W) (((W) >> IW_T2X3_B3_LSB) & IW_T2X3_B3_UNSHIFTED_MASK)
502ed6a76a9Schristos #define SET_IW_T2X3_B3(V) (((V) & IW_T2X3_B3_UNSHIFTED_MASK) << IW_T2X3_B3_LSB)
503ed6a76a9Schristos 
504ed6a76a9Schristos #define IW_F1X1_A_LSB 6
505ed6a76a9Schristos #define IW_F1X1_A_SIZE 5
506ed6a76a9Schristos #define IW_F1X1_A_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F1X1_A_SIZE))
507ed6a76a9Schristos #define IW_F1X1_A_SHIFTED_MASK (IW_F1X1_A_UNSHIFTED_MASK << IW_F1X1_A_LSB)
508ed6a76a9Schristos #define GET_IW_F1X1_A(W) (((W) >> IW_F1X1_A_LSB) & IW_F1X1_A_UNSHIFTED_MASK)
509ed6a76a9Schristos #define SET_IW_F1X1_A(V) (((V) & IW_F1X1_A_UNSHIFTED_MASK) << IW_F1X1_A_LSB)
510ed6a76a9Schristos 
511ed6a76a9Schristos #define IW_F1X1_RSV_LSB 11
512ed6a76a9Schristos #define IW_F1X1_RSV_SIZE 1
513ed6a76a9Schristos #define IW_F1X1_RSV_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F1X1_RSV_SIZE))
514ed6a76a9Schristos #define IW_F1X1_RSV_SHIFTED_MASK (IW_F1X1_RSV_UNSHIFTED_MASK << IW_F1X1_RSV_LSB)
515ed6a76a9Schristos #define GET_IW_F1X1_RSV(W) (((W) >> IW_F1X1_RSV_LSB) & IW_F1X1_RSV_UNSHIFTED_MASK)
516ed6a76a9Schristos #define SET_IW_F1X1_RSV(V) (((V) & IW_F1X1_RSV_UNSHIFTED_MASK) << IW_F1X1_RSV_LSB)
517ed6a76a9Schristos 
518ed6a76a9Schristos #define IW_X2L5_IMM5_LSB 6
519ed6a76a9Schristos #define IW_X2L5_IMM5_SIZE 5
520ed6a76a9Schristos #define IW_X2L5_IMM5_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_X2L5_IMM5_SIZE))
521ed6a76a9Schristos #define IW_X2L5_IMM5_SHIFTED_MASK (IW_X2L5_IMM5_UNSHIFTED_MASK << IW_X2L5_IMM5_LSB)
522ed6a76a9Schristos #define GET_IW_X2L5_IMM5(W) (((W) >> IW_X2L5_IMM5_LSB) & IW_X2L5_IMM5_UNSHIFTED_MASK)
523ed6a76a9Schristos #define SET_IW_X2L5_IMM5(V) (((V) & IW_X2L5_IMM5_UNSHIFTED_MASK) << IW_X2L5_IMM5_LSB)
524ed6a76a9Schristos 
525ed6a76a9Schristos #define IW_X2L5_RSV_LSB 11
526ed6a76a9Schristos #define IW_X2L5_RSV_SIZE 1
527ed6a76a9Schristos #define IW_X2L5_RSV_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_X2L5_RSV_SIZE))
528ed6a76a9Schristos #define IW_X2L5_RSV_SHIFTED_MASK (IW_X2L5_RSV_UNSHIFTED_MASK << IW_X2L5_RSV_LSB)
529ed6a76a9Schristos #define GET_IW_X2L5_RSV(W) (((W) >> IW_X2L5_RSV_LSB) & IW_X2L5_RSV_UNSHIFTED_MASK)
530ed6a76a9Schristos #define SET_IW_X2L5_RSV(V) (((V) & IW_X2L5_RSV_UNSHIFTED_MASK) << IW_X2L5_RSV_LSB)
531ed6a76a9Schristos 
532ed6a76a9Schristos #define IW_F1I5_IMM5_LSB 6
533ed6a76a9Schristos #define IW_F1I5_IMM5_SIZE 5
534ed6a76a9Schristos #define IW_F1I5_IMM5_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F1I5_IMM5_SIZE))
535ed6a76a9Schristos #define IW_F1I5_IMM5_SHIFTED_MASK (IW_F1I5_IMM5_UNSHIFTED_MASK << IW_F1I5_IMM5_LSB)
536ed6a76a9Schristos #define GET_IW_F1I5_IMM5(W) (((W) >> IW_F1I5_IMM5_LSB) & IW_F1I5_IMM5_UNSHIFTED_MASK)
537ed6a76a9Schristos #define SET_IW_F1I5_IMM5(V) (((V) & IW_F1I5_IMM5_UNSHIFTED_MASK) << IW_F1I5_IMM5_LSB)
538ed6a76a9Schristos 
539ed6a76a9Schristos #define IW_F1I5_B_LSB 11
540ed6a76a9Schristos #define IW_F1I5_B_SIZE 5
541ed6a76a9Schristos #define IW_F1I5_B_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F1I5_B_SIZE))
542ed6a76a9Schristos #define IW_F1I5_B_SHIFTED_MASK (IW_F1I5_B_UNSHIFTED_MASK << IW_F1I5_B_LSB)
543ed6a76a9Schristos #define GET_IW_F1I5_B(W) (((W) >> IW_F1I5_B_LSB) & IW_F1I5_B_UNSHIFTED_MASK)
544ed6a76a9Schristos #define SET_IW_F1I5_B(V) (((V) & IW_F1I5_B_UNSHIFTED_MASK) << IW_F1I5_B_LSB)
545ed6a76a9Schristos 
546ed6a76a9Schristos #define IW_F2_A_LSB 6
547ed6a76a9Schristos #define IW_F2_A_SIZE 5
548ed6a76a9Schristos #define IW_F2_A_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F2_A_SIZE))
549ed6a76a9Schristos #define IW_F2_A_SHIFTED_MASK (IW_F2_A_UNSHIFTED_MASK << IW_F2_A_LSB)
550ed6a76a9Schristos #define GET_IW_F2_A(W) (((W) >> IW_F2_A_LSB) & IW_F2_A_UNSHIFTED_MASK)
551ed6a76a9Schristos #define SET_IW_F2_A(V) (((V) & IW_F2_A_UNSHIFTED_MASK) << IW_F2_A_LSB)
552ed6a76a9Schristos 
553ed6a76a9Schristos #define IW_F2_B_LSB 11
554ed6a76a9Schristos #define IW_F2_B_SIZE 5
555ed6a76a9Schristos #define IW_F2_B_UNSHIFTED_MASK (0xffffffffu >> (32 - IW_F2_B_SIZE))
556ed6a76a9Schristos #define IW_F2_B_SHIFTED_MASK (IW_F2_B_UNSHIFTED_MASK << IW_F2_B_LSB)
557ed6a76a9Schristos #define GET_IW_F2_B(W) (((W) >> IW_F2_B_LSB) & IW_F2_B_UNSHIFTED_MASK)
558ed6a76a9Schristos #define SET_IW_F2_B(V) (((V) & IW_F2_B_UNSHIFTED_MASK) << IW_F2_B_LSB)
559ed6a76a9Schristos 
560ed6a76a9Schristos /* R2 opcodes.  */
561ed6a76a9Schristos #define R2_OP_CALL 0
562ed6a76a9Schristos #define R2_OP_AS_N 1
563ed6a76a9Schristos #define R2_OP_BR 2
564ed6a76a9Schristos #define R2_OP_BR_N 3
565ed6a76a9Schristos #define R2_OP_ADDI 4
566ed6a76a9Schristos #define R2_OP_LDBU_N 5
567ed6a76a9Schristos #define R2_OP_LDBU 6
568ed6a76a9Schristos #define R2_OP_LDB 7
569ed6a76a9Schristos #define R2_OP_JMPI 8
570ed6a76a9Schristos #define R2_OP_R_N 9
571ed6a76a9Schristos #define R2_OP_ANDI_N 11
572ed6a76a9Schristos #define R2_OP_ANDI 12
573ed6a76a9Schristos #define R2_OP_LDHU_N 13
574ed6a76a9Schristos #define R2_OP_LDHU 14
575ed6a76a9Schristos #define R2_OP_LDH 15
576ed6a76a9Schristos #define R2_OP_ASI_N 17
577ed6a76a9Schristos #define R2_OP_BGE 18
578ed6a76a9Schristos #define R2_OP_LDWSP_N 19
579ed6a76a9Schristos #define R2_OP_ORI 20
580ed6a76a9Schristos #define R2_OP_LDW_N 21
581ed6a76a9Schristos #define R2_OP_CMPGEI 22
582ed6a76a9Schristos #define R2_OP_LDW 23
583ed6a76a9Schristos #define R2_OP_SHI_N 25
584ed6a76a9Schristos #define R2_OP_BLT 26
585ed6a76a9Schristos #define R2_OP_MOVI_N 27
586ed6a76a9Schristos #define R2_OP_XORI 28
587ed6a76a9Schristos #define R2_OP_STZ_N 29
588ed6a76a9Schristos #define R2_OP_CMPLTI 30
589ed6a76a9Schristos #define R2_OP_ANDCI 31
590ed6a76a9Schristos #define R2_OP_OPX 32
591ed6a76a9Schristos #define R2_OP_PP_N 33
592ed6a76a9Schristos #define R2_OP_BNE 34
593ed6a76a9Schristos #define R2_OP_BNEZ_N 35
594ed6a76a9Schristos #define R2_OP_MULI 36
595ed6a76a9Schristos #define R2_OP_STB_N 37
596ed6a76a9Schristos #define R2_OP_CMPNEI 38
597ed6a76a9Schristos #define R2_OP_STB 39
598ed6a76a9Schristos #define R2_OP_I12 40
599ed6a76a9Schristos #define R2_OP_SPI_N 41
600ed6a76a9Schristos #define R2_OP_BEQ 42
601ed6a76a9Schristos #define R2_OP_BEQZ_N 43
602ed6a76a9Schristos #define R2_OP_ANDHI 44
603ed6a76a9Schristos #define R2_OP_STH_N 45
604ed6a76a9Schristos #define R2_OP_CMPEQI 46
605ed6a76a9Schristos #define R2_OP_STH 47
606ed6a76a9Schristos #define R2_OP_CUSTOM 48
607ed6a76a9Schristos #define R2_OP_BGEU 50
608ed6a76a9Schristos #define R2_OP_STWSP_N 51
609ed6a76a9Schristos #define R2_OP_ORHI 52
610ed6a76a9Schristos #define R2_OP_STW_N 53
611ed6a76a9Schristos #define R2_OP_CMPGEUI 54
612ed6a76a9Schristos #define R2_OP_STW 55
613ed6a76a9Schristos #define R2_OP_BLTU 58
614ed6a76a9Schristos #define R2_OP_MOV_N 59
615ed6a76a9Schristos #define R2_OP_XORHI 60
616ed6a76a9Schristos #define R2_OP_SPADDI_N 61
617ed6a76a9Schristos #define R2_OP_CMPLTUI 62
618ed6a76a9Schristos #define R2_OP_ANDCHI 63
619ed6a76a9Schristos 
620ed6a76a9Schristos #define R2_OPX_WRPIE 0
621ed6a76a9Schristos #define R2_OPX_ERET 1
622ed6a76a9Schristos #define R2_OPX_ROLI 2
623ed6a76a9Schristos #define R2_OPX_ROL 3
624ed6a76a9Schristos #define R2_OPX_FLUSHP 4
625ed6a76a9Schristos #define R2_OPX_RET 5
626ed6a76a9Schristos #define R2_OPX_NOR 6
627ed6a76a9Schristos #define R2_OPX_MULXUU 7
628ed6a76a9Schristos #define R2_OPX_ENI 8
629ed6a76a9Schristos #define R2_OPX_BRET 9
630ed6a76a9Schristos #define R2_OPX_ROR 11
631ed6a76a9Schristos #define R2_OPX_FLUSHI 12
632ed6a76a9Schristos #define R2_OPX_JMP 13
633ed6a76a9Schristos #define R2_OPX_AND 14
634ed6a76a9Schristos #define R2_OPX_CMPGE 16
635ed6a76a9Schristos #define R2_OPX_SLLI 18
636ed6a76a9Schristos #define R2_OPX_SLL 19
637ed6a76a9Schristos #define R2_OPX_WRPRS 20
638ed6a76a9Schristos #define R2_OPX_OR 22
639ed6a76a9Schristos #define R2_OPX_MULXSU 23
640ed6a76a9Schristos #define R2_OPX_CMPLT 24
641ed6a76a9Schristos #define R2_OPX_SRLI 26
642ed6a76a9Schristos #define R2_OPX_SRL 27
643ed6a76a9Schristos #define R2_OPX_NEXTPC 28
644ed6a76a9Schristos #define R2_OPX_CALLR 29
645ed6a76a9Schristos #define R2_OPX_XOR 30
646ed6a76a9Schristos #define R2_OPX_MULXSS 31
647ed6a76a9Schristos #define R2_OPX_CMPNE 32
648ed6a76a9Schristos #define R2_OPX_INSERT 35
649ed6a76a9Schristos #define R2_OPX_DIVU 36
650ed6a76a9Schristos #define R2_OPX_DIV 37
651ed6a76a9Schristos #define R2_OPX_RDCTL 38
652ed6a76a9Schristos #define R2_OPX_MUL 39
653ed6a76a9Schristos #define R2_OPX_CMPEQ 40
654ed6a76a9Schristos #define R2_OPX_INITI 41
655ed6a76a9Schristos #define R2_OPX_MERGE 43
656ed6a76a9Schristos #define R2_OPX_HBREAK 44
657ed6a76a9Schristos #define R2_OPX_TRAP 45
658ed6a76a9Schristos #define R2_OPX_WRCTL 46
659ed6a76a9Schristos #define R2_OPX_CMPGEU 48
660ed6a76a9Schristos #define R2_OPX_ADD 49
661ed6a76a9Schristos #define R2_OPX_EXTRACT 51
662ed6a76a9Schristos #define R2_OPX_BREAK 52
663ed6a76a9Schristos #define R2_OPX_LDEX 53
664ed6a76a9Schristos #define R2_OPX_SYNC 54
665ed6a76a9Schristos #define R2_OPX_LDSEX 55
666ed6a76a9Schristos #define R2_OPX_CMPLTU 56
667ed6a76a9Schristos #define R2_OPX_SUB 57
668ed6a76a9Schristos #define R2_OPX_SRAI 58
669ed6a76a9Schristos #define R2_OPX_SRA 59
670ed6a76a9Schristos #define R2_OPX_STEX 61
671ed6a76a9Schristos #define R2_OPX_STSEX 63
672ed6a76a9Schristos 
673ed6a76a9Schristos #define R2_I12_LDBIO 0
674ed6a76a9Schristos #define R2_I12_STBIO 1
675ed6a76a9Schristos #define R2_I12_LDBUIO 2
676ed6a76a9Schristos #define R2_I12_DCACHE 3
677ed6a76a9Schristos #define R2_I12_LDHIO 4
678ed6a76a9Schristos #define R2_I12_STHIO 5
679ed6a76a9Schristos #define R2_I12_LDHUIO 6
680ed6a76a9Schristos #define R2_I12_RDPRS 7
681ed6a76a9Schristos #define R2_I12_LDWIO 8
682ed6a76a9Schristos #define R2_I12_STWIO 9
683ed6a76a9Schristos #define R2_I12_LDWM 12
684ed6a76a9Schristos #define R2_I12_STWM 13
685ed6a76a9Schristos 
686ed6a76a9Schristos #define R2_DCACHE_INITD 0
687ed6a76a9Schristos #define R2_DCACHE_INITDA 1
688ed6a76a9Schristos #define R2_DCACHE_FLUSHD 2
689ed6a76a9Schristos #define R2_DCACHE_FLUSHDA 3
690ed6a76a9Schristos 
691ed6a76a9Schristos #define R2_AS_N_ADD_N 0
692ed6a76a9Schristos #define R2_AS_N_SUB_N 1
693ed6a76a9Schristos 
694ed6a76a9Schristos #define R2_R_N_AND_N 0
695ed6a76a9Schristos #define R2_R_N_OR_N 2
696ed6a76a9Schristos #define R2_R_N_XOR_N 3
697ed6a76a9Schristos #define R2_R_N_SLL_N 4
698ed6a76a9Schristos #define R2_R_N_SRL_N 5
699ed6a76a9Schristos #define R2_R_N_NOT_N 6
700ed6a76a9Schristos #define R2_R_N_NEG_N 7
701ed6a76a9Schristos #define R2_R_N_CALLR_N 8
702ed6a76a9Schristos #define R2_R_N_JMPR_N 10
703ed6a76a9Schristos #define R2_R_N_BREAK_N 12
704ed6a76a9Schristos #define R2_R_N_TRAP_N 13
705ed6a76a9Schristos #define R2_R_N_RET_N 14
706ed6a76a9Schristos 
707ed6a76a9Schristos #define R2_SPI_N_SPINCI_N 0
708ed6a76a9Schristos #define R2_SPI_N_SPDECI_N 1
709ed6a76a9Schristos 
710ed6a76a9Schristos #define R2_ASI_N_ADDI_N 0
711ed6a76a9Schristos #define R2_ASI_N_SUBI_N 1
712ed6a76a9Schristos 
713ed6a76a9Schristos #define R2_SHI_N_SLLI_N 0
714ed6a76a9Schristos #define R2_SHI_N_SRLI_N 1
715ed6a76a9Schristos 
716ed6a76a9Schristos #define R2_PP_N_POP_N 0
717ed6a76a9Schristos #define R2_PP_N_PUSH_N 1
718ed6a76a9Schristos 
719ed6a76a9Schristos #define R2_STZ_N_STWZ_N 0
720ed6a76a9Schristos #define R2_STZ_N_STBZ_N 1
721ed6a76a9Schristos 
722ed6a76a9Schristos /* Convenience macros for R2 encodings. */
723ed6a76a9Schristos 
724ed6a76a9Schristos #define MATCH_R2_OP(NAME) \
725ed6a76a9Schristos   (SET_IW_R2_OP (R2_OP_##NAME))
726ed6a76a9Schristos #define MASK_R2_OP \
727ed6a76a9Schristos   IW_R2_OP_SHIFTED_MASK
728ed6a76a9Schristos 
729ed6a76a9Schristos #define MATCH_R2_OPX0(NAME) \
730ed6a76a9Schristos   (SET_IW_R2_OP (R2_OP_OPX) | SET_IW_OPX_X (R2_OPX_##NAME))
731ed6a76a9Schristos #define MASK_R2_OPX0 \
732ed6a76a9Schristos   (IW_R2_OP_SHIFTED_MASK | IW_OPX_X_SHIFTED_MASK \
733ed6a76a9Schristos    | IW_F3X6L5_IMM5_SHIFTED_MASK)
734ed6a76a9Schristos 
735ed6a76a9Schristos #define MATCH_R2_OPX(NAME, A, B, C)				\
736ed6a76a9Schristos   (MATCH_R2_OPX0 (NAME) | SET_IW_F3X6L5_A (A) | SET_IW_F3X6L5_B (B) \
737ed6a76a9Schristos    | SET_IW_F3X6L5_C (C))
738ed6a76a9Schristos #define MASK_R2_OPX(A, B, C, N)				\
739ed6a76a9Schristos   (IW_R2_OP_SHIFTED_MASK | IW_OPX_X_SHIFTED_MASK	\
740ed6a76a9Schristos    | (A ? IW_F3X6L5_A_SHIFTED_MASK : 0)			\
741ed6a76a9Schristos    | (B ? IW_F3X6L5_B_SHIFTED_MASK : 0)			\
742ed6a76a9Schristos    | (C ? IW_F3X6L5_C_SHIFTED_MASK : 0)			\
743ed6a76a9Schristos    | (N ? IW_F3X6L5_IMM5_SHIFTED_MASK : 0))
744ed6a76a9Schristos 
745ed6a76a9Schristos #define MATCH_R2_I12(NAME) \
746ed6a76a9Schristos   (SET_IW_R2_OP (R2_OP_I12) | SET_IW_I12_X (R2_I12_##NAME))
747ed6a76a9Schristos #define MASK_R2_I12 \
748ed6a76a9Schristos   (IW_R2_OP_SHIFTED_MASK | IW_I12_X_SHIFTED_MASK )
749ed6a76a9Schristos 
750ed6a76a9Schristos #define MATCH_R2_DCACHE(NAME) \
751ed6a76a9Schristos   (MATCH_R2_I12(DCACHE) | SET_IW_F1X4I12_X (R2_DCACHE_##NAME))
752ed6a76a9Schristos #define MASK_R2_DCACHE \
753ed6a76a9Schristos   (MASK_R2_I12 | IW_F1X4I12_X_SHIFTED_MASK)
754ed6a76a9Schristos 
755ed6a76a9Schristos #define MATCH_R2_R_N(NAME) \
756ed6a76a9Schristos   (SET_IW_R2_OP (R2_OP_R_N) | SET_IW_R_N_X (R2_R_N_##NAME))
757ed6a76a9Schristos #define MASK_R2_R_N \
758ed6a76a9Schristos   (IW_R2_OP_SHIFTED_MASK | IW_R_N_X_SHIFTED_MASK )
759ed6a76a9Schristos 
760ed6a76a9Schristos /* Match/mask macros for R2 instructions.  */
761ed6a76a9Schristos 
762ed6a76a9Schristos #define MATCH_R2_ADD	MATCH_R2_OPX0 (ADD)
763ed6a76a9Schristos #define MASK_R2_ADD	MASK_R2_OPX0
764ed6a76a9Schristos #define MATCH_R2_ADDI	MATCH_R2_OP (ADDI)
765ed6a76a9Schristos #define MASK_R2_ADDI	MASK_R2_OP
766ed6a76a9Schristos #define MATCH_R2_ADD_N	(MATCH_R2_OP (AS_N) | SET_IW_T3X1_X (R2_AS_N_ADD_N))
767ed6a76a9Schristos #define MASK_R2_ADD_N	(MASK_R2_OP | IW_T3X1_X_SHIFTED_MASK)
768ed6a76a9Schristos #define MATCH_R2_ADDI_N	(MATCH_R2_OP (ASI_N) | SET_IW_T2X1I3_X (R2_ASI_N_ADDI_N))
769ed6a76a9Schristos #define MASK_R2_ADDI_N	(MASK_R2_OP | IW_T2X1I3_X_SHIFTED_MASK)
770ed6a76a9Schristos #define MATCH_R2_AND	MATCH_R2_OPX0 (AND)
771ed6a76a9Schristos #define MASK_R2_AND	MASK_R2_OPX0
772ed6a76a9Schristos #define MATCH_R2_ANDCHI	MATCH_R2_OP (ANDCHI)
773ed6a76a9Schristos #define MASK_R2_ANDCHI	MASK_R2_OP
774ed6a76a9Schristos #define MATCH_R2_ANDCI	MATCH_R2_OP (ANDCI)
775ed6a76a9Schristos #define MASK_R2_ANDCI	MASK_R2_OP
776ed6a76a9Schristos #define MATCH_R2_ANDHI	MATCH_R2_OP (ANDHI)
777ed6a76a9Schristos #define MASK_R2_ANDHI	MASK_R2_OP
778ed6a76a9Schristos #define MATCH_R2_ANDI	MATCH_R2_OP (ANDI)
779ed6a76a9Schristos #define MASK_R2_ANDI	MASK_R2_OP
780ed6a76a9Schristos #define MATCH_R2_ANDI_N	MATCH_R2_OP (ANDI_N)
781ed6a76a9Schristos #define MASK_R2_ANDI_N	MASK_R2_OP
782ed6a76a9Schristos #define MATCH_R2_AND_N	MATCH_R2_R_N (AND_N)
783ed6a76a9Schristos #define MASK_R2_AND_N	MASK_R2_R_N
784ed6a76a9Schristos #define MATCH_R2_BEQ	MATCH_R2_OP (BEQ)
785ed6a76a9Schristos #define MASK_R2_BEQ	MASK_R2_OP
786ed6a76a9Schristos #define MATCH_R2_BEQZ_N	MATCH_R2_OP (BEQZ_N)
787ed6a76a9Schristos #define MASK_R2_BEQZ_N	MASK_R2_OP
788ed6a76a9Schristos #define MATCH_R2_BGE	MATCH_R2_OP (BGE)
789ed6a76a9Schristos #define MASK_R2_BGE	MASK_R2_OP
790ed6a76a9Schristos #define MATCH_R2_BGEU	MATCH_R2_OP (BGEU)
791ed6a76a9Schristos #define MASK_R2_BGEU	MASK_R2_OP
792ed6a76a9Schristos #define MATCH_R2_BGT	MATCH_R2_OP (BLT)
793ed6a76a9Schristos #define MASK_R2_BGT	MASK_R2_OP
794ed6a76a9Schristos #define MATCH_R2_BGTU	MATCH_R2_OP (BLTU)
795ed6a76a9Schristos #define MASK_R2_BGTU	MASK_R2_OP
796ed6a76a9Schristos #define MATCH_R2_BLE	MATCH_R2_OP (BGE)
797ed6a76a9Schristos #define MASK_R2_BLE	MASK_R2_OP
798ed6a76a9Schristos #define MATCH_R2_BLEU	MATCH_R2_OP (BGEU)
799ed6a76a9Schristos #define MASK_R2_BLEU	MASK_R2_OP
800ed6a76a9Schristos #define MATCH_R2_BLT	MATCH_R2_OP (BLT)
801ed6a76a9Schristos #define MASK_R2_BLT	MASK_R2_OP
802ed6a76a9Schristos #define MATCH_R2_BLTU	MATCH_R2_OP (BLTU)
803ed6a76a9Schristos #define MASK_R2_BLTU	MASK_R2_OP
804ed6a76a9Schristos #define MATCH_R2_BNE	MATCH_R2_OP (BNE)
805ed6a76a9Schristos #define MASK_R2_BNE	MASK_R2_OP
806ed6a76a9Schristos #define MATCH_R2_BNEZ_N	MATCH_R2_OP (BNEZ_N)
807ed6a76a9Schristos #define MASK_R2_BNEZ_N	MASK_R2_OP
808ed6a76a9Schristos #define MATCH_R2_BR	MATCH_R2_OP (BR)
809ed6a76a9Schristos #define MASK_R2_BR	MASK_R2_OP | IW_F2I16_A_SHIFTED_MASK | IW_F2I16_B_SHIFTED_MASK
810ed6a76a9Schristos #define MATCH_R2_BREAK	MATCH_R2_OPX (BREAK, 0, 0, 0x1e)
811ed6a76a9Schristos #define MASK_R2_BREAK	MASK_R2_OPX (1, 1, 1, 0)
812ed6a76a9Schristos #define MATCH_R2_BREAK_N	MATCH_R2_R_N (BREAK_N)
813ed6a76a9Schristos #define MASK_R2_BREAK_N	MASK_R2_R_N
814ed6a76a9Schristos #define MATCH_R2_BRET	MATCH_R2_OPX (BRET, 0x1e, 0, 0)
815ed6a76a9Schristos #define MASK_R2_BRET	MASK_R2_OPX (1, 1, 1, 1)
816ed6a76a9Schristos #define MATCH_R2_BR_N	MATCH_R2_OP (BR_N)
817ed6a76a9Schristos #define MASK_R2_BR_N	MASK_R2_OP
818ed6a76a9Schristos #define MATCH_R2_CALL	MATCH_R2_OP (CALL)
819ed6a76a9Schristos #define MASK_R2_CALL	MASK_R2_OP
820ed6a76a9Schristos #define MATCH_R2_CALLR	MATCH_R2_OPX (CALLR, 0, 0, 0x1f)
821ed6a76a9Schristos #define MASK_R2_CALLR	MASK_R2_OPX (0, 1, 1, 1)
822ed6a76a9Schristos #define MATCH_R2_CALLR_N	MATCH_R2_R_N (CALLR_N)
823ed6a76a9Schristos #define MASK_R2_CALLR_N	MASK_R2_R_N
824ed6a76a9Schristos #define MATCH_R2_CMPEQ	MATCH_R2_OPX0 (CMPEQ)
825ed6a76a9Schristos #define MASK_R2_CMPEQ	MASK_R2_OPX0
826ed6a76a9Schristos #define MATCH_R2_CMPEQI	MATCH_R2_OP (CMPEQI)
827ed6a76a9Schristos #define MASK_R2_CMPEQI	MASK_R2_OP
828ed6a76a9Schristos #define MATCH_R2_CMPGE	MATCH_R2_OPX0 (CMPGE)
829ed6a76a9Schristos #define MASK_R2_CMPGE	MASK_R2_OPX0
830ed6a76a9Schristos #define MATCH_R2_CMPGEI	MATCH_R2_OP (CMPGEI)
831ed6a76a9Schristos #define MASK_R2_CMPGEI	MASK_R2_OP
832ed6a76a9Schristos #define MATCH_R2_CMPGEU	MATCH_R2_OPX0 (CMPGEU)
833ed6a76a9Schristos #define MASK_R2_CMPGEU	MASK_R2_OPX0
834ed6a76a9Schristos #define MATCH_R2_CMPGEUI	MATCH_R2_OP (CMPGEUI)
835ed6a76a9Schristos #define MASK_R2_CMPGEUI	MASK_R2_OP
836ed6a76a9Schristos #define MATCH_R2_CMPGT	MATCH_R2_OPX0 (CMPLT)
837ed6a76a9Schristos #define MASK_R2_CMPGT	MASK_R2_OPX0
838ed6a76a9Schristos #define MATCH_R2_CMPGTI	MATCH_R2_OP (CMPGEI)
839ed6a76a9Schristos #define MASK_R2_CMPGTI	MASK_R2_OP
840ed6a76a9Schristos #define MATCH_R2_CMPGTU	MATCH_R2_OPX0 (CMPLTU)
841ed6a76a9Schristos #define MASK_R2_CMPGTU	MASK_R2_OPX0
842ed6a76a9Schristos #define MATCH_R2_CMPGTUI	MATCH_R2_OP (CMPGEUI)
843ed6a76a9Schristos #define MASK_R2_CMPGTUI	MASK_R2_OP
844ed6a76a9Schristos #define MATCH_R2_CMPLE	MATCH_R2_OPX0 (CMPGE)
845ed6a76a9Schristos #define MASK_R2_CMPLE	MASK_R2_OPX0
846ed6a76a9Schristos #define MATCH_R2_CMPLEI	MATCH_R2_OP (CMPLTI)
847ed6a76a9Schristos #define MASK_R2_CMPLEI	MASK_R2_OP
848ed6a76a9Schristos #define MATCH_R2_CMPLEU	MATCH_R2_OPX0 (CMPGEU)
849ed6a76a9Schristos #define MASK_R2_CMPLEU	MASK_R2_OPX0
850ed6a76a9Schristos #define MATCH_R2_CMPLEUI	MATCH_R2_OP (CMPLTUI)
851ed6a76a9Schristos #define MASK_R2_CMPLEUI	MASK_R2_OP
852ed6a76a9Schristos #define MATCH_R2_CMPLT	MATCH_R2_OPX0 (CMPLT)
853ed6a76a9Schristos #define MASK_R2_CMPLT	MASK_R2_OPX0
854ed6a76a9Schristos #define MATCH_R2_CMPLTI	MATCH_R2_OP (CMPLTI)
855ed6a76a9Schristos #define MASK_R2_CMPLTI	MASK_R2_OP
856ed6a76a9Schristos #define MATCH_R2_CMPLTU	MATCH_R2_OPX0 (CMPLTU)
857ed6a76a9Schristos #define MASK_R2_CMPLTU	MASK_R2_OPX0
858ed6a76a9Schristos #define MATCH_R2_CMPLTUI	MATCH_R2_OP (CMPLTUI)
859ed6a76a9Schristos #define MASK_R2_CMPLTUI	MASK_R2_OP
860ed6a76a9Schristos #define MATCH_R2_CMPNE	MATCH_R2_OPX0 (CMPNE)
861ed6a76a9Schristos #define MASK_R2_CMPNE	MASK_R2_OPX0
862ed6a76a9Schristos #define MATCH_R2_CMPNEI	MATCH_R2_OP (CMPNEI)
863ed6a76a9Schristos #define MASK_R2_CMPNEI	MASK_R2_OP
864ed6a76a9Schristos #define MATCH_R2_CUSTOM	MATCH_R2_OP (CUSTOM)
865ed6a76a9Schristos #define MASK_R2_CUSTOM	MASK_R2_OP
866ed6a76a9Schristos #define MATCH_R2_DIV	MATCH_R2_OPX0 (DIV)
867ed6a76a9Schristos #define MASK_R2_DIV	MASK_R2_OPX0
868ed6a76a9Schristos #define MATCH_R2_DIVU	MATCH_R2_OPX0 (DIVU)
869ed6a76a9Schristos #define MASK_R2_DIVU	MASK_R2_OPX0
870ed6a76a9Schristos #define MATCH_R2_ENI	MATCH_R2_OPX (ENI, 0, 0, 0)
871ed6a76a9Schristos #define MASK_R2_ENI	MASK_R2_OPX (1, 1, 1, 0)
872ed6a76a9Schristos #define MATCH_R2_ERET	MATCH_R2_OPX (ERET, 0x1d, 0x1e, 0)
873ed6a76a9Schristos #define MASK_R2_ERET	MASK_R2_OPX (1, 1, 1, 1)
874ed6a76a9Schristos #define MATCH_R2_EXTRACT	MATCH_R2_OPX (EXTRACT, 0, 0, 0)
875ed6a76a9Schristos #define MASK_R2_EXTRACT	MASK_R2_OPX (0, 0, 0, 0)
876ed6a76a9Schristos #define MATCH_R2_FLUSHD	MATCH_R2_DCACHE (FLUSHD)
877ed6a76a9Schristos #define MASK_R2_FLUSHD	MASK_R2_DCACHE
878ed6a76a9Schristos #define MATCH_R2_FLUSHDA	MATCH_R2_DCACHE (FLUSHDA)
879ed6a76a9Schristos #define MASK_R2_FLUSHDA	MASK_R2_DCACHE
880ed6a76a9Schristos #define MATCH_R2_FLUSHI	MATCH_R2_OPX (FLUSHI, 0, 0, 0)
881ed6a76a9Schristos #define MASK_R2_FLUSHI	MASK_R2_OPX (0, 1, 1, 1)
882ed6a76a9Schristos #define MATCH_R2_FLUSHP	MATCH_R2_OPX (FLUSHP, 0, 0, 0)
883ed6a76a9Schristos #define MASK_R2_FLUSHP	MASK_R2_OPX (1, 1, 1, 1)
884ed6a76a9Schristos #define MATCH_R2_INITD	MATCH_R2_DCACHE (INITD)
885ed6a76a9Schristos #define MASK_R2_INITD	MASK_R2_DCACHE
886ed6a76a9Schristos #define MATCH_R2_INITDA	MATCH_R2_DCACHE (INITDA)
887ed6a76a9Schristos #define MASK_R2_INITDA	MASK_R2_DCACHE
888ed6a76a9Schristos #define MATCH_R2_INITI	MATCH_R2_OPX (INITI, 0, 0, 0)
889ed6a76a9Schristos #define MASK_R2_INITI	MASK_R2_OPX (0, 1, 1, 1)
890ed6a76a9Schristos #define MATCH_R2_INSERT	MATCH_R2_OPX (INSERT, 0, 0, 0)
891ed6a76a9Schristos #define MASK_R2_INSERT	MASK_R2_OPX (0, 0, 0, 0)
892ed6a76a9Schristos #define MATCH_R2_JMP	MATCH_R2_OPX (JMP, 0, 0, 0)
893ed6a76a9Schristos #define MASK_R2_JMP	MASK_R2_OPX (0, 1, 1, 1)
894ed6a76a9Schristos #define MATCH_R2_JMPI	MATCH_R2_OP (JMPI)
895ed6a76a9Schristos #define MASK_R2_JMPI	MASK_R2_OP
896ed6a76a9Schristos #define MATCH_R2_JMPR_N	MATCH_R2_R_N (JMPR_N)
897ed6a76a9Schristos #define MASK_R2_JMPR_N	MASK_R2_R_N
898ed6a76a9Schristos #define MATCH_R2_LDB	MATCH_R2_OP (LDB)
899ed6a76a9Schristos #define MASK_R2_LDB	MASK_R2_OP
900ed6a76a9Schristos #define MATCH_R2_LDBIO	MATCH_R2_I12 (LDBIO)
901ed6a76a9Schristos #define MASK_R2_LDBIO	MASK_R2_I12
902ed6a76a9Schristos #define MATCH_R2_LDBU	MATCH_R2_OP (LDBU)
903ed6a76a9Schristos #define MASK_R2_LDBU	MASK_R2_OP
904ed6a76a9Schristos #define MATCH_R2_LDBUIO	MATCH_R2_I12 (LDBUIO)
905ed6a76a9Schristos #define MASK_R2_LDBUIO	MASK_R2_I12
906ed6a76a9Schristos #define MATCH_R2_LDBU_N	MATCH_R2_OP (LDBU_N)
907ed6a76a9Schristos #define MASK_R2_LDBU_N	MASK_R2_OP
908ed6a76a9Schristos #define MATCH_R2_LDEX	MATCH_R2_OPX (LDEX, 0, 0, 0)
909ed6a76a9Schristos #define MASK_R2_LDEX	MASK_R2_OPX (0, 1, 0, 1)
910ed6a76a9Schristos #define MATCH_R2_LDH	MATCH_R2_OP (LDH)
911ed6a76a9Schristos #define MASK_R2_LDH	MASK_R2_OP
912ed6a76a9Schristos #define MATCH_R2_LDHIO	MATCH_R2_I12 (LDHIO)
913ed6a76a9Schristos #define MASK_R2_LDHIO	MASK_R2_I12
914ed6a76a9Schristos #define MATCH_R2_LDHU	MATCH_R2_OP (LDHU)
915ed6a76a9Schristos #define MASK_R2_LDHU	MASK_R2_OP
916ed6a76a9Schristos #define MATCH_R2_LDHUIO	MATCH_R2_I12 (LDHUIO)
917ed6a76a9Schristos #define MASK_R2_LDHUIO	MASK_R2_I12
918ed6a76a9Schristos #define MATCH_R2_LDHU_N	MATCH_R2_OP (LDHU_N)
919ed6a76a9Schristos #define MASK_R2_LDHU_N	MASK_R2_OP
920ed6a76a9Schristos #define MATCH_R2_LDSEX	MATCH_R2_OPX (LDSEX, 0, 0, 0)
921ed6a76a9Schristos #define MASK_R2_LDSEX	MASK_R2_OPX (0, 1, 0, 1)
922ed6a76a9Schristos #define MATCH_R2_LDW	MATCH_R2_OP (LDW)
923ed6a76a9Schristos #define MASK_R2_LDW	MASK_R2_OP
924ed6a76a9Schristos #define MATCH_R2_LDWIO	MATCH_R2_I12 (LDWIO)
925ed6a76a9Schristos #define MASK_R2_LDWIO	MASK_R2_I12
926ed6a76a9Schristos #define MATCH_R2_LDWM	MATCH_R2_I12 (LDWM)
927ed6a76a9Schristos #define MASK_R2_LDWM	MASK_R2_I12
928ed6a76a9Schristos #define MATCH_R2_LDWSP_N	MATCH_R2_OP (LDWSP_N)
929ed6a76a9Schristos #define MASK_R2_LDWSP_N	MASK_R2_OP
930ed6a76a9Schristos #define MATCH_R2_LDW_N	MATCH_R2_OP (LDW_N)
931ed6a76a9Schristos #define MASK_R2_LDW_N	MASK_R2_OP
932ed6a76a9Schristos #define MATCH_R2_MERGE	MATCH_R2_OPX (MERGE, 0, 0, 0)
933ed6a76a9Schristos #define MASK_R2_MERGE	MASK_R2_OPX (0, 0, 0, 0)
934ed6a76a9Schristos #define MATCH_R2_MOV	MATCH_R2_OPX (ADD, 0, 0, 0)
935ed6a76a9Schristos #define MASK_R2_MOV	MASK_R2_OPX (0, 1, 0, 1)
936ed6a76a9Schristos #define MATCH_R2_MOVHI	MATCH_R2_OP (ORHI) | SET_IW_F2I16_A (0)
937ed6a76a9Schristos #define MASK_R2_MOVHI	MASK_R2_OP | IW_F2I16_A_SHIFTED_MASK
938ed6a76a9Schristos #define MATCH_R2_MOVI	MATCH_R2_OP (ADDI) | SET_IW_F2I16_A (0)
939ed6a76a9Schristos #define MASK_R2_MOVI	MASK_R2_OP | IW_F2I16_A_SHIFTED_MASK
940ed6a76a9Schristos #define MATCH_R2_MOVUI	MATCH_R2_OP (ORI) | SET_IW_F2I16_A (0)
941ed6a76a9Schristos #define MASK_R2_MOVUI	MASK_R2_OP | IW_F2I16_A_SHIFTED_MASK
942ed6a76a9Schristos #define MATCH_R2_MOV_N	MATCH_R2_OP (MOV_N)
943ed6a76a9Schristos #define MASK_R2_MOV_N	MASK_R2_OP
944ed6a76a9Schristos #define MATCH_R2_MOVI_N	MATCH_R2_OP (MOVI_N)
945ed6a76a9Schristos #define MASK_R2_MOVI_N	MASK_R2_OP
946ed6a76a9Schristos #define MATCH_R2_MUL	MATCH_R2_OPX0 (MUL)
947ed6a76a9Schristos #define MASK_R2_MUL	MASK_R2_OPX0
948ed6a76a9Schristos #define MATCH_R2_MULI	MATCH_R2_OP (MULI)
949ed6a76a9Schristos #define MASK_R2_MULI	MASK_R2_OP
950ed6a76a9Schristos #define MATCH_R2_MULXSS	MATCH_R2_OPX0 (MULXSS)
951ed6a76a9Schristos #define MASK_R2_MULXSS	MASK_R2_OPX0
952ed6a76a9Schristos #define MATCH_R2_MULXSU	MATCH_R2_OPX0 (MULXSU)
953ed6a76a9Schristos #define MASK_R2_MULXSU	MASK_R2_OPX0
954ed6a76a9Schristos #define MATCH_R2_MULXUU	MATCH_R2_OPX0 (MULXUU)
955ed6a76a9Schristos #define MASK_R2_MULXUU	MASK_R2_OPX0
956ed6a76a9Schristos #define MATCH_R2_NEG_N	MATCH_R2_R_N (NEG_N)
957ed6a76a9Schristos #define MASK_R2_NEG_N	MASK_R2_R_N
958ed6a76a9Schristos #define MATCH_R2_NEXTPC	MATCH_R2_OPX (NEXTPC, 0, 0, 0)
959ed6a76a9Schristos #define MASK_R2_NEXTPC	MASK_R2_OPX (1, 1, 0, 1)
960ed6a76a9Schristos #define MATCH_R2_NOP	MATCH_R2_OPX (ADD, 0, 0, 0)
961ed6a76a9Schristos #define MASK_R2_NOP	MASK_R2_OPX (1, 1, 1, 1)
962ed6a76a9Schristos #define MATCH_R2_NOP_N	(MATCH_R2_OP (MOV_N) | SET_IW_F2_A (0) | SET_IW_F2_B (0))
963ed6a76a9Schristos #define MASK_R2_NOP_N	(MASK_R2_OP | IW_F2_A_SHIFTED_MASK | IW_F2_B_SHIFTED_MASK)
964ed6a76a9Schristos #define MATCH_R2_NOR	MATCH_R2_OPX0 (NOR)
965ed6a76a9Schristos #define MASK_R2_NOR	MASK_R2_OPX0
966ed6a76a9Schristos #define MATCH_R2_NOT_N	MATCH_R2_R_N (NOT_N)
967ed6a76a9Schristos #define MASK_R2_NOT_N	MASK_R2_R_N
968ed6a76a9Schristos #define MATCH_R2_OR	MATCH_R2_OPX0 (OR)
969ed6a76a9Schristos #define MASK_R2_OR	MASK_R2_OPX0
970ed6a76a9Schristos #define MATCH_R2_OR_N	MATCH_R2_R_N (OR_N)
971ed6a76a9Schristos #define MASK_R2_OR_N	MASK_R2_R_N
972ed6a76a9Schristos #define MATCH_R2_ORHI	MATCH_R2_OP (ORHI)
973ed6a76a9Schristos #define MASK_R2_ORHI	MASK_R2_OP
974ed6a76a9Schristos #define MATCH_R2_ORI	MATCH_R2_OP (ORI)
975ed6a76a9Schristos #define MASK_R2_ORI	MASK_R2_OP
976ed6a76a9Schristos #define MATCH_R2_POP_N	(MATCH_R2_OP (PP_N) | SET_IW_L5I4X1_X (R2_PP_N_POP_N))
977ed6a76a9Schristos #define MASK_R2_POP_N	(MASK_R2_OP | IW_L5I4X1_X_SHIFTED_MASK)
978ed6a76a9Schristos #define MATCH_R2_PUSH_N	(MATCH_R2_OP (PP_N) | SET_IW_L5I4X1_X (R2_PP_N_PUSH_N))
979ed6a76a9Schristos #define MASK_R2_PUSH_N	(MASK_R2_OP | IW_L5I4X1_X_SHIFTED_MASK)
980ed6a76a9Schristos #define MATCH_R2_RDCTL	MATCH_R2_OPX (RDCTL, 0, 0, 0)
981ed6a76a9Schristos #define MASK_R2_RDCTL	MASK_R2_OPX (1, 1, 0, 0)
982ed6a76a9Schristos #define MATCH_R2_RDPRS	MATCH_R2_I12 (RDPRS)
983ed6a76a9Schristos #define MASK_R2_RDPRS	MASK_R2_I12
984ed6a76a9Schristos #define MATCH_R2_RET	MATCH_R2_OPX (RET, 0x1f, 0, 0)
985ed6a76a9Schristos #define MASK_R2_RET	MASK_R2_OPX (1, 1, 1, 1)
986ed6a76a9Schristos #define MATCH_R2_RET_N	(MATCH_R2_R_N (RET_N) | SET_IW_X2L5_IMM5 (0))
987ed6a76a9Schristos #define MASK_R2_RET_N	(MASK_R2_R_N | IW_X2L5_IMM5_SHIFTED_MASK)
988ed6a76a9Schristos #define MATCH_R2_ROL	MATCH_R2_OPX0 (ROL)
989ed6a76a9Schristos #define MASK_R2_ROL	MASK_R2_OPX0
990ed6a76a9Schristos #define MATCH_R2_ROLI	MATCH_R2_OPX (ROLI, 0, 0, 0)
991ed6a76a9Schristos #define MASK_R2_ROLI	MASK_R2_OPX (0, 1, 0, 0)
992ed6a76a9Schristos #define MATCH_R2_ROR	MATCH_R2_OPX0 (ROR)
993ed6a76a9Schristos #define MASK_R2_ROR	MASK_R2_OPX0
994ed6a76a9Schristos #define MATCH_R2_SLL	MATCH_R2_OPX0 (SLL)
995ed6a76a9Schristos #define MASK_R2_SLL	MASK_R2_OPX0
996ed6a76a9Schristos #define MATCH_R2_SLLI	MATCH_R2_OPX (SLLI, 0, 0, 0)
997ed6a76a9Schristos #define MASK_R2_SLLI	MASK_R2_OPX (0, 1, 0, 0)
998ed6a76a9Schristos #define MATCH_R2_SLL_N	MATCH_R2_R_N (SLL_N)
999ed6a76a9Schristos #define MASK_R2_SLL_N	MASK_R2_R_N
1000ed6a76a9Schristos #define MATCH_R2_SLLI_N	(MATCH_R2_OP (SHI_N) | SET_IW_T2X1L3_X (R2_SHI_N_SLLI_N))
1001ed6a76a9Schristos #define MASK_R2_SLLI_N	(MASK_R2_OP | IW_T2X1L3_X_SHIFTED_MASK)
1002ed6a76a9Schristos #define MATCH_R2_SPADDI_N	MATCH_R2_OP (SPADDI_N)
1003ed6a76a9Schristos #define MASK_R2_SPADDI_N	MASK_R2_OP
1004ed6a76a9Schristos #define MATCH_R2_SPDECI_N	(MATCH_R2_OP (SPI_N) | SET_IW_X1I7_X (R2_SPI_N_SPDECI_N))
1005ed6a76a9Schristos #define MASK_R2_SPDECI_N	(MASK_R2_OP | IW_X1I7_X_SHIFTED_MASK)
1006ed6a76a9Schristos #define MATCH_R2_SPINCI_N	(MATCH_R2_OP (SPI_N) | SET_IW_X1I7_X (R2_SPI_N_SPINCI_N))
1007ed6a76a9Schristos #define MASK_R2_SPINCI_N	(MASK_R2_OP | IW_X1I7_X_SHIFTED_MASK)
1008ed6a76a9Schristos #define MATCH_R2_SRA	MATCH_R2_OPX0 (SRA)
1009ed6a76a9Schristos #define MASK_R2_SRA	MASK_R2_OPX0
1010ed6a76a9Schristos #define MATCH_R2_SRAI	MATCH_R2_OPX (SRAI, 0, 0, 0)
1011ed6a76a9Schristos #define MASK_R2_SRAI	MASK_R2_OPX (0, 1, 0, 0)
1012ed6a76a9Schristos #define MATCH_R2_SRL	MATCH_R2_OPX0 (SRL)
1013ed6a76a9Schristos #define MASK_R2_SRL	MASK_R2_OPX0
1014ed6a76a9Schristos #define MATCH_R2_SRLI	MATCH_R2_OPX (SRLI, 0, 0, 0)
1015ed6a76a9Schristos #define MASK_R2_SRLI	MASK_R2_OPX (0, 1, 0, 0)
1016ed6a76a9Schristos #define MATCH_R2_SRL_N	MATCH_R2_R_N (SRL_N)
1017ed6a76a9Schristos #define MASK_R2_SRL_N	MASK_R2_R_N
1018ed6a76a9Schristos #define MATCH_R2_SRLI_N	(MATCH_R2_OP (SHI_N) | SET_IW_T2X1L3_X (R2_SHI_N_SRLI_N))
1019ed6a76a9Schristos #define MASK_R2_SRLI_N	(MASK_R2_OP | IW_T2X1L3_X_SHIFTED_MASK)
1020ed6a76a9Schristos #define MATCH_R2_STB	MATCH_R2_OP (STB)
1021ed6a76a9Schristos #define MASK_R2_STB	MASK_R2_OP
1022ed6a76a9Schristos #define MATCH_R2_STBIO	MATCH_R2_I12 (STBIO)
1023ed6a76a9Schristos #define MASK_R2_STBIO	MASK_R2_I12
1024ed6a76a9Schristos #define MATCH_R2_STB_N	MATCH_R2_OP (STB_N)
1025ed6a76a9Schristos #define MASK_R2_STB_N	MASK_R2_OP
1026ed6a76a9Schristos #define MATCH_R2_STBZ_N	(MATCH_R2_OP (STZ_N) | SET_IW_T1X1I6_X (R2_STZ_N_STBZ_N))
1027ed6a76a9Schristos #define MASK_R2_STBZ_N	(MASK_R2_OP | IW_T1X1I6_X_SHIFTED_MASK)
1028ed6a76a9Schristos #define MATCH_R2_STEX	MATCH_R2_OPX0 (STEX)
1029ed6a76a9Schristos #define MASK_R2_STEX	MASK_R2_OPX0
1030ed6a76a9Schristos #define MATCH_R2_STH	MATCH_R2_OP (STH)
1031ed6a76a9Schristos #define MASK_R2_STH	MASK_R2_OP
1032ed6a76a9Schristos #define MATCH_R2_STHIO	MATCH_R2_I12 (STHIO)
1033ed6a76a9Schristos #define MASK_R2_STHIO	MASK_R2_I12
1034ed6a76a9Schristos #define MATCH_R2_STH_N	MATCH_R2_OP (STH_N)
1035ed6a76a9Schristos #define MASK_R2_STH_N	MASK_R2_OP
1036ed6a76a9Schristos #define MATCH_R2_STSEX	MATCH_R2_OPX0 (STSEX)
1037ed6a76a9Schristos #define MASK_R2_STSEX	MASK_R2_OPX0
1038ed6a76a9Schristos #define MATCH_R2_STW	MATCH_R2_OP (STW)
1039ed6a76a9Schristos #define MASK_R2_STW	MASK_R2_OP
1040ed6a76a9Schristos #define MATCH_R2_STWIO	MATCH_R2_I12 (STWIO)
1041ed6a76a9Schristos #define MASK_R2_STWIO	MASK_R2_I12
1042ed6a76a9Schristos #define MATCH_R2_STWM	MATCH_R2_I12 (STWM)
1043ed6a76a9Schristos #define MASK_R2_STWM	MASK_R2_I12
1044ed6a76a9Schristos #define MATCH_R2_STWSP_N	MATCH_R2_OP (STWSP_N)
1045ed6a76a9Schristos #define MASK_R2_STWSP_N	MASK_R2_OP
1046ed6a76a9Schristos #define MATCH_R2_STW_N	MATCH_R2_OP (STW_N)
1047ed6a76a9Schristos #define MASK_R2_STW_N	MASK_R2_OP
1048ed6a76a9Schristos #define MATCH_R2_STWZ_N	MATCH_R2_OP (STZ_N)
1049ed6a76a9Schristos #define MASK_R2_STWZ_N	MASK_R2_OP
1050ed6a76a9Schristos #define MATCH_R2_SUB	MATCH_R2_OPX0 (SUB)
1051ed6a76a9Schristos #define MASK_R2_SUB	MASK_R2_OPX0
1052ed6a76a9Schristos #define MATCH_R2_SUBI	MATCH_R2_OP (ADDI)
1053ed6a76a9Schristos #define MASK_R2_SUBI	MASK_R2_OP
1054ed6a76a9Schristos #define MATCH_R2_SUB_N	(MATCH_R2_OP (AS_N) | SET_IW_T3X1_X (R2_AS_N_SUB_N))
1055ed6a76a9Schristos #define MASK_R2_SUB_N	(MASK_R2_OP | IW_T3X1_X_SHIFTED_MASK)
1056ed6a76a9Schristos #define MATCH_R2_SUBI_N	(MATCH_R2_OP (ASI_N) | SET_IW_T2X1I3_X (R2_ASI_N_SUBI_N))
1057ed6a76a9Schristos #define MASK_R2_SUBI_N	(MASK_R2_OP | IW_T2X1I3_X_SHIFTED_MASK)
1058ed6a76a9Schristos #define MATCH_R2_SYNC	MATCH_R2_OPX (SYNC, 0, 0, 0)
1059ed6a76a9Schristos #define MASK_R2_SYNC	MASK_R2_OPX (1, 1, 1, 1)
1060ed6a76a9Schristos #define MATCH_R2_TRAP	MATCH_R2_OPX (TRAP, 0, 0, 0x1d)
1061ed6a76a9Schristos #define MASK_R2_TRAP	MASK_R2_OPX (1, 1, 1, 0)
1062ed6a76a9Schristos #define MATCH_R2_TRAP_N	MATCH_R2_R_N (TRAP_N)
1063ed6a76a9Schristos #define MASK_R2_TRAP_N	MASK_R2_R_N
1064ed6a76a9Schristos #define MATCH_R2_WRCTL	MATCH_R2_OPX (WRCTL, 0, 0, 0)
1065ed6a76a9Schristos #define MASK_R2_WRCTL	MASK_R2_OPX (0, 1, 1, 0)
1066ed6a76a9Schristos #define MATCH_R2_WRPIE	MATCH_R2_OPX (WRPIE, 0, 0, 0)
1067ed6a76a9Schristos #define MASK_R2_WRPIE	MASK_R2_OPX (0, 1, 0, 1)
1068ed6a76a9Schristos #define MATCH_R2_WRPRS	MATCH_R2_OPX (WRPRS, 0, 0, 0)
1069ed6a76a9Schristos #define MASK_R2_WRPRS	MASK_R2_OPX (0, 1, 0, 1)
1070ed6a76a9Schristos #define MATCH_R2_XOR	MATCH_R2_OPX0 (XOR)
1071ed6a76a9Schristos #define MASK_R2_XOR	MASK_R2_OPX0
1072ed6a76a9Schristos #define MATCH_R2_XORHI	MATCH_R2_OP (XORHI)
1073ed6a76a9Schristos #define MASK_R2_XORHI	MASK_R2_OP
1074ed6a76a9Schristos #define MATCH_R2_XORI	MATCH_R2_OP (XORI)
1075ed6a76a9Schristos #define MASK_R2_XORI	MASK_R2_OP
1076ed6a76a9Schristos #define MATCH_R2_XOR_N	MATCH_R2_R_N (XOR_N)
1077ed6a76a9Schristos #define MASK_R2_XOR_N	MASK_R2_R_N
1078ed6a76a9Schristos 
1079ed6a76a9Schristos #endif /* _NIOS2R2_H */
1080ed6a76a9Schristos 
1081ed6a76a9Schristos 
1082