summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/etnaviv/hw/isa.xml.h
blob: 31706807e3de882f856af1e89eac6d89a0576faf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
#ifndef ISA_XML
#define ISA_XML

/* Autogenerated file, DO NOT EDIT manually!

This file was generated by the rules-ng-ng headergen tool in this git repository:
http://0x04.net/cgit/index.cgi/rules-ng-ng
git clone git://0x04.net/rules-ng-ng

The rules-ng-ng source files this header was generated from are:
- isa.xml       (  34392 bytes, from 2017-04-13 12:44:36)
- copyright.xml (   1597 bytes, from 2016-10-29 07:29:22)

Copyright (C) 2012-2017 by the following authors:
- Wladimir J. van der Laan <laanwj@gmail.com>
- Christian Gmeiner <christian.gmeiner@gmail.com>
- Lucas Stach <l.stach@pengutronix.de>
- Russell King <rmk@arm.linux.org.uk>

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sub license,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice (including the
next paragraph) shall be included in all copies or substantial portions
of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/


#define INST_OPCODE_NOP						0x00000000
#define INST_OPCODE_ADD						0x00000001
#define INST_OPCODE_MAD						0x00000002
#define INST_OPCODE_MUL						0x00000003
#define INST_OPCODE_DST						0x00000004
#define INST_OPCODE_DP3						0x00000005
#define INST_OPCODE_DP4						0x00000006
#define INST_OPCODE_DSX						0x00000007
#define INST_OPCODE_DSY						0x00000008
#define INST_OPCODE_MOV						0x00000009
#define INST_OPCODE_MOVAR					0x0000000a
#define INST_OPCODE_MOVAF					0x0000000b
#define INST_OPCODE_RCP						0x0000000c
#define INST_OPCODE_RSQ						0x0000000d
#define INST_OPCODE_LITP					0x0000000e
#define INST_OPCODE_SELECT					0x0000000f
#define INST_OPCODE_SET						0x00000010
#define INST_OPCODE_EXP						0x00000011
#define INST_OPCODE_LOG						0x00000012
#define INST_OPCODE_FRC						0x00000013
#define INST_OPCODE_CALL					0x00000014
#define INST_OPCODE_RET						0x00000015
#define INST_OPCODE_BRANCH					0x00000016
#define INST_OPCODE_TEXKILL					0x00000017
#define INST_OPCODE_TEXLD					0x00000018
#define INST_OPCODE_TEXLDB					0x00000019
#define INST_OPCODE_TEXLDD					0x0000001a
#define INST_OPCODE_TEXLDL					0x0000001b
#define INST_OPCODE_TEXLDPCF					0x0000001c
#define INST_OPCODE_REP						0x0000001d
#define INST_OPCODE_ENDREP					0x0000001e
#define INST_OPCODE_LOOP					0x0000001f
#define INST_OPCODE_ENDLOOP					0x00000020
#define INST_OPCODE_SQRT					0x00000021
#define INST_OPCODE_SIN						0x00000022
#define INST_OPCODE_COS						0x00000023
#define INST_OPCODE_FLOOR					0x00000025
#define INST_OPCODE_CEIL					0x00000026
#define INST_OPCODE_SIGN					0x00000027
#define INST_OPCODE_ADDLO					0x00000028
#define INST_OPCODE_MULLO					0x00000029
#define INST_OPCODE_BARRIER					0x0000002a
#define INST_OPCODE_SWIZZLE					0x0000002b
#define INST_OPCODE_I2I						0x0000002c
#define INST_OPCODE_I2F						0x0000002d
#define INST_OPCODE_F2I						0x0000002e
#define INST_OPCODE_F2IRND					0x0000002f
#define INST_OPCODE_F2I7					0x00000030
#define INST_OPCODE_CMP						0x00000031
#define INST_OPCODE_LOAD					0x00000032
#define INST_OPCODE_STORE					0x00000033
#define INST_OPCODE_COPYSIGN					0x00000034
#define INST_OPCODE_GETEXP					0x00000035
#define INST_OPCODE_GETMANT					0x00000036
#define INST_OPCODE_NAN						0x00000037
#define INST_OPCODE_NEXTAFTER					0x00000038
#define INST_OPCODE_ROUNDEVEN					0x00000039
#define INST_OPCODE_ROUNDAWAY					0x0000003a
#define INST_OPCODE_IADDSAT					0x0000003b
#define INST_OPCODE_IMULLO0					0x0000003c
#define INST_OPCODE_IMULLO1					0x0000003d
#define INST_OPCODE_IMULLOSAT0					0x0000003e
#define INST_OPCODE_IMULLOSAT1					0x0000003f
#define INST_OPCODE_IMULHI0					0x00000040
#define INST_OPCODE_IMULHI1					0x00000041
#define INST_OPCODE_IMUL0					0x00000042
#define INST_OPCODE_IMUL1					0x00000043
#define INST_OPCODE_IDIV0					0x00000044
#define INST_OPCODE_IDIV1					0x00000045
#define INST_OPCODE_IDIV2					0x00000046
#define INST_OPCODE_IDIV3					0x00000047
#define INST_OPCODE_IMOD0					0x00000048
#define INST_OPCODE_IMOD1					0x00000049
#define INST_OPCODE_IMOD2					0x0000004a
#define INST_OPCODE_IMOD3					0x0000004b
#define INST_OPCODE_IMADLO0					0x0000004c
#define INST_OPCODE_IMADLO1					0x0000004d
#define INST_OPCODE_IMADLOSAT0					0x0000004e
#define INST_OPCODE_IMADLOSAT1					0x0000004f
#define INST_OPCODE_IMADHI0					0x00000050
#define INST_OPCODE_IMADHI1					0x00000051
#define INST_OPCODE_IMADHISAT0					0x00000052
#define INST_OPCODE_IMADHISAT1					0x00000053
#define INST_OPCODE_HALFADD					0x00000054
#define INST_OPCODE_HALFADDINC					0x00000055
#define INST_OPCODE_MOVAI					0x00000056
#define INST_OPCODE_IABS					0x00000057
#define INST_OPCODE_LEADZERO					0x00000058
#define INST_OPCODE_LSHIFT					0x00000059
#define INST_OPCODE_RSHIFT					0x0000005a
#define INST_OPCODE_ROTATE					0x0000005b
#define INST_OPCODE_OR						0x0000005c
#define INST_OPCODE_AND						0x0000005d
#define INST_OPCODE_XOR						0x0000005e
#define INST_OPCODE_NOT						0x0000005f
#define INST_OPCODE_BITSELECT					0x00000060
#define INST_OPCODE_POPCOUNT					0x00000061
#define INST_OPCODE_STOREB					0x00000062
#define INST_OPCODE_RGB2YUV					0x00000063
#define INST_OPCODE_DIV						0x00000064
#define INST_OPCODE_ATOM_ADD					0x00000065
#define INST_OPCODE_ATOM_XCHG					0x00000066
#define INST_OPCODE_ATOM_CMP_XCHG				0x00000067
#define INST_OPCODE_ATOM_MIN					0x00000068
#define INST_OPCODE_ATOM_MAX					0x00000069
#define INST_OPCODE_ATOM_OR					0x0000006a
#define INST_OPCODE_ATOM_AND					0x0000006b
#define INST_OPCODE_ATOM_XOR					0x0000006c
#define INST_OPCODE_BIT_REV					0x0000006d
#define INST_OPCODE_BYTE_REV					0x0000006e
#define INST_OPCODE_TEXLDLPCF					0x0000006f
#define INST_OPCODE_TEXLDGPCF					0x00000070
#define INST_OPCODE_PACK					0x00000071
#define INST_OPCODE_CONV					0x00000072
#define INST_OPCODE_DP2						0x00000073
#define INST_OPCODE_NORM_DP2					0x00000074
#define INST_OPCODE_NORM_DP3					0x00000075
#define INST_OPCODE_NORM_DP4					0x00000076
#define INST_OPCODE_NORM_MUL					0x00000077
#define INST_OPCODE_STORE_ATTR					0x00000078
#define INST_OPCODE_LOAD_ATTR					0x00000079
#define INST_OPCODE_EMIT					0x0000007a
#define INST_OPCODE_RESTART					0x0000007b
#define INST_OPCODE_NOP7C					0x0000007c
#define INST_OPCODE_NOP7D					0x0000007d
#define INST_OPCODE_NOP7E					0x0000007e
#define INST_OPCODE_NOP7F					0x0000007f
#define INST_CONDITION_TRUE					0x00000000
#define INST_CONDITION_GT					0x00000001
#define INST_CONDITION_LT					0x00000002
#define INST_CONDITION_GE					0x00000003
#define INST_CONDITION_LE					0x00000004
#define INST_CONDITION_EQ					0x00000005
#define INST_CONDITION_NE					0x00000006
#define INST_CONDITION_AND					0x00000007
#define INST_CONDITION_OR					0x00000008
#define INST_CONDITION_XOR					0x00000009
#define INST_CONDITION_NOT					0x0000000a
#define INST_CONDITION_NZ					0x0000000b
#define INST_CONDITION_GEZ					0x0000000c
#define INST_CONDITION_GZ					0x0000000d
#define INST_CONDITION_LEZ					0x0000000e
#define INST_CONDITION_LZ					0x0000000f
#define INST_RGROUP_TEMP					0x00000000
#define INST_RGROUP_INTERNAL					0x00000001
#define INST_RGROUP_UNIFORM_0					0x00000002
#define INST_RGROUP_UNIFORM_1					0x00000003
#define INST_AMODE_DIRECT					0x00000000
#define INST_AMODE_ADD_A_X					0x00000001
#define INST_AMODE_ADD_A_Y					0x00000002
#define INST_AMODE_ADD_A_Z					0x00000003
#define INST_AMODE_ADD_A_W					0x00000004
#define INST_SWIZ_COMP_X					0x00000000
#define INST_SWIZ_COMP_Y					0x00000001
#define INST_SWIZ_COMP_Z					0x00000002
#define INST_SWIZ_COMP_W					0x00000003
#define INST_TYPE_F32						0x00000000
#define INST_TYPE_S32						0x00000001
#define INST_TYPE_S8						0x00000002
#define INST_TYPE_U16						0x00000003
#define INST_TYPE_F16						0x00000004
#define INST_TYPE_S16						0x00000005
#define INST_TYPE_U32						0x00000006
#define INST_TYPE_U8						0x00000007
#define INST_COMPS_X						0x00000001
#define INST_COMPS_Y						0x00000002
#define INST_COMPS_Z						0x00000004
#define INST_COMPS_W						0x00000008
#define INST_SWIZ_X__MASK					0x00000003
#define INST_SWIZ_X__SHIFT					0
#define INST_SWIZ_X(x)						(((x) << INST_SWIZ_X__SHIFT) & INST_SWIZ_X__MASK)
#define INST_SWIZ_Y__MASK					0x0000000c
#define INST_SWIZ_Y__SHIFT					2
#define INST_SWIZ_Y(x)						(((x) << INST_SWIZ_Y__SHIFT) & INST_SWIZ_Y__MASK)
#define INST_SWIZ_Z__MASK					0x00000030
#define INST_SWIZ_Z__SHIFT					4
#define INST_SWIZ_Z(x)						(((x) << INST_SWIZ_Z__SHIFT) & INST_SWIZ_Z__MASK)
#define INST_SWIZ_W__MASK					0x000000c0
#define INST_SWIZ_W__SHIFT					6
#define INST_SWIZ_W(x)						(((x) << INST_SWIZ_W__SHIFT) & INST_SWIZ_W__MASK)
#define VIV_ISA_WORD_0						0x00000000
#define VIV_ISA_WORD_0_OPCODE__MASK				0x0000003f
#define VIV_ISA_WORD_0_OPCODE__SHIFT				0
#define VIV_ISA_WORD_0_OPCODE(x)				(((x) << VIV_ISA_WORD_0_OPCODE__SHIFT) & VIV_ISA_WORD_0_OPCODE__MASK)
#define VIV_ISA_WORD_0_COND__MASK				0x000007c0
#define VIV_ISA_WORD_0_COND__SHIFT				6
#define VIV_ISA_WORD_0_COND(x)					(((x) << VIV_ISA_WORD_0_COND__SHIFT) & VIV_ISA_WORD_0_COND__MASK)
#define VIV_ISA_WORD_0_SAT					0x00000800
#define VIV_ISA_WORD_0_DST_USE					0x00001000
#define VIV_ISA_WORD_0_DST_AMODE__MASK				0x0000e000
#define VIV_ISA_WORD_0_DST_AMODE__SHIFT				13
#define VIV_ISA_WORD_0_DST_AMODE(x)				(((x) << VIV_ISA_WORD_0_DST_AMODE__SHIFT) & VIV_ISA_WORD_0_DST_AMODE__MASK)
#define VIV_ISA_WORD_0_DST_REG__MASK				0x007f0000
#define VIV_ISA_WORD_0_DST_REG__SHIFT				16
#define VIV_ISA_WORD_0_DST_REG(x)				(((x) << VIV_ISA_WORD_0_DST_REG__SHIFT) & VIV_ISA_WORD_0_DST_REG__MASK)
#define VIV_ISA_WORD_0_DST_COMPS__MASK				0x07800000
#define VIV_ISA_WORD_0_DST_COMPS__SHIFT				23
#define VIV_ISA_WORD_0_DST_COMPS(x)				(((x) << VIV_ISA_WORD_0_DST_COMPS__SHIFT) & VIV_ISA_WORD_0_DST_COMPS__MASK)
#define VIV_ISA_WORD_0_TEX_ID__MASK				0xf8000000
#define VIV_ISA_WORD_0_TEX_ID__SHIFT				27
#define VIV_ISA_WORD_0_TEX_ID(x)				(((x) << VIV_ISA_WORD_0_TEX_ID__SHIFT) & VIV_ISA_WORD_0_TEX_ID__MASK)

#define VIV_ISA_WORD_1						0x00000004
#define VIV_ISA_WORD_1_TEX_AMODE__MASK				0x00000007
#define VIV_ISA_WORD_1_TEX_AMODE__SHIFT				0
#define VIV_ISA_WORD_1_TEX_AMODE(x)				(((x) << VIV_ISA_WORD_1_TEX_AMODE__SHIFT) & VIV_ISA_WORD_1_TEX_AMODE__MASK)
#define VIV_ISA_WORD_1_TEX_SWIZ__MASK				0x000007f8
#define VIV_ISA_WORD_1_TEX_SWIZ__SHIFT				3
#define VIV_ISA_WORD_1_TEX_SWIZ(x)				(((x) << VIV_ISA_WORD_1_TEX_SWIZ__SHIFT) & VIV_ISA_WORD_1_TEX_SWIZ__MASK)
#define VIV_ISA_WORD_1_SRC0_USE					0x00000800
#define VIV_ISA_WORD_1_SRC0_REG__MASK				0x001ff000
#define VIV_ISA_WORD_1_SRC0_REG__SHIFT				12
#define VIV_ISA_WORD_1_SRC0_REG(x)				(((x) << VIV_ISA_WORD_1_SRC0_REG__SHIFT) & VIV_ISA_WORD_1_SRC0_REG__MASK)
#define VIV_ISA_WORD_1_TYPE_BIT2				0x00200000
#define VIV_ISA_WORD_1_SRC0_SWIZ__MASK				0x3fc00000
#define VIV_ISA_WORD_1_SRC0_SWIZ__SHIFT				22
#define VIV_ISA_WORD_1_SRC0_SWIZ(x)				(((x) << VIV_ISA_WORD_1_SRC0_SWIZ__SHIFT) & VIV_ISA_WORD_1_SRC0_SWIZ__MASK)
#define VIV_ISA_WORD_1_SRC0_NEG					0x40000000
#define VIV_ISA_WORD_1_SRC0_ABS					0x80000000

#define VIV_ISA_WORD_2						0x00000008
#define VIV_ISA_WORD_2_SRC0_AMODE__MASK				0x00000007
#define VIV_ISA_WORD_2_SRC0_AMODE__SHIFT			0
#define VIV_ISA_WORD_2_SRC0_AMODE(x)				(((x) << VIV_ISA_WORD_2_SRC0_AMODE__SHIFT) & VIV_ISA_WORD_2_SRC0_AMODE__MASK)
#define VIV_ISA_WORD_2_SRC0_RGROUP__MASK			0x00000038
#define VIV_ISA_WORD_2_SRC0_RGROUP__SHIFT			3
#define VIV_ISA_WORD_2_SRC0_RGROUP(x)				(((x) << VIV_ISA_WORD_2_SRC0_RGROUP__SHIFT) & VIV_ISA_WORD_2_SRC0_RGROUP__MASK)
#define VIV_ISA_WORD_2_SRC1_USE					0x00000040
#define VIV_ISA_WORD_2_SRC1_REG__MASK				0x0000ff80
#define VIV_ISA_WORD_2_SRC1_REG__SHIFT				7
#define VIV_ISA_WORD_2_SRC1_REG(x)				(((x) << VIV_ISA_WORD_2_SRC1_REG__SHIFT) & VIV_ISA_WORD_2_SRC1_REG__MASK)
#define VIV_ISA_WORD_2_OPCODE_BIT6				0x00010000
#define VIV_ISA_WORD_2_SRC1_SWIZ__MASK				0x01fe0000
#define VIV_ISA_WORD_2_SRC1_SWIZ__SHIFT				17
#define VIV_ISA_WORD_2_SRC1_SWIZ(x)				(((x) << VIV_ISA_WORD_2_SRC1_SWIZ__SHIFT) & VIV_ISA_WORD_2_SRC1_SWIZ__MASK)
#define VIV_ISA_WORD_2_SRC1_NEG					0x02000000
#define VIV_ISA_WORD_2_SRC1_ABS					0x04000000
#define VIV_ISA_WORD_2_SRC1_AMODE__MASK				0x38000000
#define VIV_ISA_WORD_2_SRC1_AMODE__SHIFT			27
#define VIV_ISA_WORD_2_SRC1_AMODE(x)				(((x) << VIV_ISA_WORD_2_SRC1_AMODE__SHIFT) & VIV_ISA_WORD_2_SRC1_AMODE__MASK)
#define VIV_ISA_WORD_2_TYPE_BIT01__MASK				0xc0000000
#define VIV_ISA_WORD_2_TYPE_BIT01__SHIFT			30
#define VIV_ISA_WORD_2_TYPE_BIT01(x)				(((x) << VIV_ISA_WORD_2_TYPE_BIT01__SHIFT) & VIV_ISA_WORD_2_TYPE_BIT01__MASK)

#define VIV_ISA_WORD_3						0x0000000c
#define VIV_ISA_WORD_3_SRC1_RGROUP__MASK			0x00000007
#define VIV_ISA_WORD_3_SRC1_RGROUP__SHIFT			0
#define VIV_ISA_WORD_3_SRC1_RGROUP(x)				(((x) << VIV_ISA_WORD_3_SRC1_RGROUP__SHIFT) & VIV_ISA_WORD_3_SRC1_RGROUP__MASK)
#define VIV_ISA_WORD_3_SRC2_IMM__MASK				0x003fff80
#define VIV_ISA_WORD_3_SRC2_IMM__SHIFT				7
#define VIV_ISA_WORD_3_SRC2_IMM(x)				(((x) << VIV_ISA_WORD_3_SRC2_IMM__SHIFT) & VIV_ISA_WORD_3_SRC2_IMM__MASK)
#define VIV_ISA_WORD_3_SRC2_USE					0x00000008
#define VIV_ISA_WORD_3_SRC2_REG__MASK				0x00001ff0
#define VIV_ISA_WORD_3_SRC2_REG__SHIFT				4
#define VIV_ISA_WORD_3_SRC2_REG(x)				(((x) << VIV_ISA_WORD_3_SRC2_REG__SHIFT) & VIV_ISA_WORD_3_SRC2_REG__MASK)
#define VIV_ISA_WORD_3_UNK3_13					0x00002000
#define VIV_ISA_WORD_3_SRC2_SWIZ__MASK				0x003fc000
#define VIV_ISA_WORD_3_SRC2_SWIZ__SHIFT				14
#define VIV_ISA_WORD_3_SRC2_SWIZ(x)				(((x) << VIV_ISA_WORD_3_SRC2_SWIZ__SHIFT) & VIV_ISA_WORD_3_SRC2_SWIZ__MASK)
#define VIV_ISA_WORD_3_SRC2_NEG					0x00400000
#define VIV_ISA_WORD_3_SRC2_ABS					0x00800000
#define VIV_ISA_WORD_3_UNK3_24					0x01000000
#define VIV_ISA_WORD_3_SRC2_AMODE__MASK				0x0e000000
#define VIV_ISA_WORD_3_SRC2_AMODE__SHIFT			25
#define VIV_ISA_WORD_3_SRC2_AMODE(x)				(((x) << VIV_ISA_WORD_3_SRC2_AMODE__SHIFT) & VIV_ISA_WORD_3_SRC2_AMODE__MASK)
#define VIV_ISA_WORD_3_SRC2_RGROUP__MASK			0x70000000
#define VIV_ISA_WORD_3_SRC2_RGROUP__SHIFT			28
#define VIV_ISA_WORD_3_SRC2_RGROUP(x)				(((x) << VIV_ISA_WORD_3_SRC2_RGROUP__SHIFT) & VIV_ISA_WORD_3_SRC2_RGROUP__MASK)
#define VIV_ISA_WORD_3_UNK3_31					0x80000000


#endif /* ISA_XML */