2
* Copyright (C) 2008-2009 Advanced Micro Devices, Inc.
4
* Permission is hereby granted, free of charge, to any person obtaining a
5
* copy of this software and associated documentation files (the "Software"),
6
* to deal in the Software without restriction, including without limitation
7
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
8
* and/or sell copies of the Software, and to permit persons to whom the
9
* Software is furnished to do so, subject to the following conditions:
11
* The above copyright notice and this permission notice shall be included
12
* in all copies or substantial portions of the Software.
14
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17
* THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
18
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
* Richard Li <RichardZ.Li@amd.com>, <richardradeon@gmail.com>
27
#if !defined (_SQ_MICRO_REG_H)
28
#define _SQ_MICRO_REG_H
30
#if defined(LITTLEENDIAN_CPU)
31
#elif defined(BIGENDIAN_CPU)
33
#error "BIGENDIAN_CPU or LITTLEENDIAN_CPU must be defined"
37
* SQ_ALU_SRC_GPR_BASE value
40
#define SQ_ALU_SRC_GPR_BASE 0x00000000
43
* SQ_ALU_SRC_GPR_SIZE value
46
#define SQ_ALU_SRC_GPR_SIZE 0x00000080
49
* SQ_ALU_SRC_KCACHE0_BASE value
52
#define SQ_ALU_SRC_KCACHE0_BASE 0x00000080
55
* SQ_ALU_SRC_KCACHE0_SIZE value
58
#define SQ_ALU_SRC_KCACHE0_SIZE 0x00000020
61
* SQ_ALU_SRC_KCACHE1_BASE value
64
#define SQ_ALU_SRC_KCACHE1_BASE 0x000000a0
67
* SQ_ALU_SRC_KCACHE1_SIZE value
70
#define SQ_ALU_SRC_KCACHE1_SIZE 0x00000020
73
* SQ_ALU_SRC_CFILE_BASE value
76
#define SQ_ALU_SRC_CFILE_BASE 0x00000100
79
* SQ_ALU_SRC_CFILE_SIZE value
82
#define SQ_ALU_SRC_CFILE_SIZE 0x00000100
85
* SQ_SP_OP_REDUC_BEGIN value
88
#define SQ_SP_OP_REDUC_BEGIN 0x00000050
91
* SQ_SP_OP_REDUC_END value
94
#define SQ_SP_OP_REDUC_END 0x00000053
97
* SQ_SP_OP_TRANS_BEGIN value
100
#define SQ_SP_OP_TRANS_BEGIN 0x00000060
103
* SQ_SP_OP_TRANS_END value
106
#define SQ_SP_OP_TRANS_END 0x0000007f
112
#define SQ_CF_WORD0_ADDR_SIZE 32
114
#define SQ_CF_WORD0_ADDR_SHIFT 0
116
#define SQ_CF_WORD0_ADDR_MASK 0xffffffff
118
#define SQ_CF_WORD0_MASK \
119
(SQ_CF_WORD0_ADDR_MASK)
121
#define SQ_CF_WORD0_DEFAULT 0xcdcdcdcd
123
#define SQ_CF_WORD0_GET_ADDR(sq_cf_word0) \
124
((sq_cf_word0 & SQ_CF_WORD0_ADDR_MASK) >> SQ_CF_WORD0_ADDR_SHIFT)
126
#define SQ_CF_WORD0_SET_ADDR(sq_cf_word0_reg, addr) \
127
sq_cf_word0_reg = (sq_cf_word0_reg & ~SQ_CF_WORD0_ADDR_MASK) | (addr << SQ_CF_WORD0_ADDR_SHIFT)
129
#if defined(LITTLEENDIAN_CPU)
131
typedef struct _sq_cf_word0_t {
132
unsigned int addr : SQ_CF_WORD0_ADDR_SIZE;
135
#elif defined(BIGENDIAN_CPU)
137
typedef struct _sq_cf_word0_t {
138
unsigned int addr : SQ_CF_WORD0_ADDR_SIZE;
144
unsigned int val : 32;
153
#define SQ_CF_WORD1_POP_COUNT_SIZE 3
154
#define SQ_CF_WORD1_CF_CONST_SIZE 5
155
#define SQ_CF_WORD1_COND_SIZE 2
156
#define SQ_CF_WORD1_COUNT_SIZE 3
157
#define SQ_CF_WORD1_CALL_COUNT_SIZE 6
158
#define SQ_CF_WORD1_COUNT_3_SIZE 1
159
#define SQ_CF_WORD1_END_OF_PROGRAM_SIZE 1
160
#define SQ_CF_WORD1_VALID_PIXEL_MODE_SIZE 1
161
#define SQ_CF_WORD1_CF_INST_SIZE 7
162
#define SQ_CF_WORD1_WHOLE_QUAD_MODE_SIZE 1
163
#define SQ_CF_WORD1_BARRIER_SIZE 1
165
#define SQ_CF_WORD1_POP_COUNT_SHIFT 0
166
#define SQ_CF_WORD1_CF_CONST_SHIFT 3
167
#define SQ_CF_WORD1_COND_SHIFT 8
168
#define SQ_CF_WORD1_COUNT_SHIFT 10
169
#define SQ_CF_WORD1_CALL_COUNT_SHIFT 13
170
#define SQ_CF_WORD1_COUNT_3_SHIFT 19
171
#define SQ_CF_WORD1_END_OF_PROGRAM_SHIFT 21
172
#define SQ_CF_WORD1_VALID_PIXEL_MODE_SHIFT 22
173
#define SQ_CF_WORD1_CF_INST_SHIFT 23
174
#define SQ_CF_WORD1_WHOLE_QUAD_MODE_SHIFT 30
175
#define SQ_CF_WORD1_BARRIER_SHIFT 31
177
#define SQ_CF_WORD1_POP_COUNT_MASK 0x00000007
178
#define SQ_CF_WORD1_CF_CONST_MASK 0x000000f8
179
#define SQ_CF_WORD1_COND_MASK 0x00000300
180
#define SQ_CF_WORD1_COUNT_MASK 0x00001c00
181
#define SQ_CF_WORD1_CALL_COUNT_MASK 0x0007e000
182
#define SQ_CF_WORD1_COUNT_3_MASK 0x00080000
183
#define SQ_CF_WORD1_END_OF_PROGRAM_MASK 0x00200000
184
#define SQ_CF_WORD1_VALID_PIXEL_MODE_MASK 0x00400000
185
#define SQ_CF_WORD1_CF_INST_MASK 0x3f800000
186
#define SQ_CF_WORD1_WHOLE_QUAD_MODE_MASK 0x40000000
187
#define SQ_CF_WORD1_BARRIER_MASK 0x80000000
189
#define SQ_CF_WORD1_MASK \
190
(SQ_CF_WORD1_POP_COUNT_MASK | \
191
SQ_CF_WORD1_CF_CONST_MASK | \
192
SQ_CF_WORD1_COND_MASK | \
193
SQ_CF_WORD1_COUNT_MASK | \
194
SQ_CF_WORD1_CALL_COUNT_MASK | \
195
SQ_CF_WORD1_COUNT_3_MASK | \
196
SQ_CF_WORD1_END_OF_PROGRAM_MASK | \
197
SQ_CF_WORD1_VALID_PIXEL_MODE_MASK | \
198
SQ_CF_WORD1_CF_INST_MASK | \
199
SQ_CF_WORD1_WHOLE_QUAD_MODE_MASK | \
200
SQ_CF_WORD1_BARRIER_MASK)
202
#define SQ_CF_WORD1_DEFAULT 0xcdcdcdcd
204
#define SQ_CF_WORD1_GET_POP_COUNT(sq_cf_word1) \
205
((sq_cf_word1 & SQ_CF_WORD1_POP_COUNT_MASK) >> SQ_CF_WORD1_POP_COUNT_SHIFT)
206
#define SQ_CF_WORD1_GET_CF_CONST(sq_cf_word1) \
207
((sq_cf_word1 & SQ_CF_WORD1_CF_CONST_MASK) >> SQ_CF_WORD1_CF_CONST_SHIFT)
208
#define SQ_CF_WORD1_GET_COND(sq_cf_word1) \
209
((sq_cf_word1 & SQ_CF_WORD1_COND_MASK) >> SQ_CF_WORD1_COND_SHIFT)
210
#define SQ_CF_WORD1_GET_COUNT(sq_cf_word1) \
211
((sq_cf_word1 & SQ_CF_WORD1_COUNT_MASK) >> SQ_CF_WORD1_COUNT_SHIFT)
212
#define SQ_CF_WORD1_GET_CALL_COUNT(sq_cf_word1) \
213
((sq_cf_word1 & SQ_CF_WORD1_CALL_COUNT_MASK) >> SQ_CF_WORD1_CALL_COUNT_SHIFT)
214
#define SQ_CF_WORD1_GET_COUNT_3(sq_cf_word1) \
215
((sq_cf_word1 & SQ_CF_WORD1_COUNT_3_MASK) >> SQ_CF_WORD1_COUNT_3_SHIFT)
216
#define SQ_CF_WORD1_GET_END_OF_PROGRAM(sq_cf_word1) \
217
((sq_cf_word1 & SQ_CF_WORD1_END_OF_PROGRAM_MASK) >> SQ_CF_WORD1_END_OF_PROGRAM_SHIFT)
218
#define SQ_CF_WORD1_GET_VALID_PIXEL_MODE(sq_cf_word1) \
219
((sq_cf_word1 & SQ_CF_WORD1_VALID_PIXEL_MODE_MASK) >> SQ_CF_WORD1_VALID_PIXEL_MODE_SHIFT)
220
#define SQ_CF_WORD1_GET_CF_INST(sq_cf_word1) \
221
((sq_cf_word1 & SQ_CF_WORD1_CF_INST_MASK) >> SQ_CF_WORD1_CF_INST_SHIFT)
222
#define SQ_CF_WORD1_GET_WHOLE_QUAD_MODE(sq_cf_word1) \
223
((sq_cf_word1 & SQ_CF_WORD1_WHOLE_QUAD_MODE_MASK) >> SQ_CF_WORD1_WHOLE_QUAD_MODE_SHIFT)
224
#define SQ_CF_WORD1_GET_BARRIER(sq_cf_word1) \
225
((sq_cf_word1 & SQ_CF_WORD1_BARRIER_MASK) >> SQ_CF_WORD1_BARRIER_SHIFT)
227
#define SQ_CF_WORD1_SET_POP_COUNT(sq_cf_word1_reg, pop_count) \
228
sq_cf_word1_reg = (sq_cf_word1_reg & ~SQ_CF_WORD1_POP_COUNT_MASK) | (pop_count << SQ_CF_WORD1_POP_COUNT_SHIFT)
229
#define SQ_CF_WORD1_SET_CF_CONST(sq_cf_word1_reg, cf_const) \
230
sq_cf_word1_reg = (sq_cf_word1_reg & ~SQ_CF_WORD1_CF_CONST_MASK) | (cf_const << SQ_CF_WORD1_CF_CONST_SHIFT)
231
#define SQ_CF_WORD1_SET_COND(sq_cf_word1_reg, cond) \
232
sq_cf_word1_reg = (sq_cf_word1_reg & ~SQ_CF_WORD1_COND_MASK) | (cond << SQ_CF_WORD1_COND_SHIFT)
233
#define SQ_CF_WORD1_SET_COUNT(sq_cf_word1_reg, count) \
234
sq_cf_word1_reg = (sq_cf_word1_reg & ~SQ_CF_WORD1_COUNT_MASK) | (count << SQ_CF_WORD1_COUNT_SHIFT)
235
#define SQ_CF_WORD1_SET_CALL_COUNT(sq_cf_word1_reg, call_count) \
236
sq_cf_word1_reg = (sq_cf_word1_reg & ~SQ_CF_WORD1_CALL_COUNT_MASK) | (call_count << SQ_CF_WORD1_CALL_COUNT_SHIFT)
237
#define SQ_CF_WORD1_SET_COUNT_3(sq_cf_word1_reg, count_3) \
238
sq_cf_word1_reg = (sq_cf_word1_reg & ~SQ_CF_WORD1_COUNT_3_MASK) | (count_3 << SQ_CF_WORD1_COUNT_3_SHIFT)
239
#define SQ_CF_WORD1_SET_END_OF_PROGRAM(sq_cf_word1_reg, end_of_program) \
240
sq_cf_word1_reg = (sq_cf_word1_reg & ~SQ_CF_WORD1_END_OF_PROGRAM_MASK) | (end_of_program << SQ_CF_WORD1_END_OF_PROGRAM_SHIFT)
241
#define SQ_CF_WORD1_SET_VALID_PIXEL_MODE(sq_cf_word1_reg, valid_pixel_mode) \
242
sq_cf_word1_reg = (sq_cf_word1_reg & ~SQ_CF_WORD1_VALID_PIXEL_MODE_MASK) | (valid_pixel_mode << SQ_CF_WORD1_VALID_PIXEL_MODE_SHIFT)
243
#define SQ_CF_WORD1_SET_CF_INST(sq_cf_word1_reg, cf_inst) \
244
sq_cf_word1_reg = (sq_cf_word1_reg & ~SQ_CF_WORD1_CF_INST_MASK) | (cf_inst << SQ_CF_WORD1_CF_INST_SHIFT)
245
#define SQ_CF_WORD1_SET_WHOLE_QUAD_MODE(sq_cf_word1_reg, whole_quad_mode) \
246
sq_cf_word1_reg = (sq_cf_word1_reg & ~SQ_CF_WORD1_WHOLE_QUAD_MODE_MASK) | (whole_quad_mode << SQ_CF_WORD1_WHOLE_QUAD_MODE_SHIFT)
247
#define SQ_CF_WORD1_SET_BARRIER(sq_cf_word1_reg, barrier) \
248
sq_cf_word1_reg = (sq_cf_word1_reg & ~SQ_CF_WORD1_BARRIER_MASK) | (barrier << SQ_CF_WORD1_BARRIER_SHIFT)
250
#if defined(LITTLEENDIAN_CPU)
252
typedef struct _sq_cf_word1_t {
253
unsigned int pop_count : SQ_CF_WORD1_POP_COUNT_SIZE;
254
unsigned int cf_const : SQ_CF_WORD1_CF_CONST_SIZE;
255
unsigned int cond : SQ_CF_WORD1_COND_SIZE;
256
unsigned int count : SQ_CF_WORD1_COUNT_SIZE;
257
unsigned int call_count : SQ_CF_WORD1_CALL_COUNT_SIZE;
258
unsigned int count_3 : SQ_CF_WORD1_COUNT_3_SIZE;
260
unsigned int end_of_program : SQ_CF_WORD1_END_OF_PROGRAM_SIZE;
261
unsigned int valid_pixel_mode : SQ_CF_WORD1_VALID_PIXEL_MODE_SIZE;
262
unsigned int cf_inst : SQ_CF_WORD1_CF_INST_SIZE;
263
unsigned int whole_quad_mode : SQ_CF_WORD1_WHOLE_QUAD_MODE_SIZE;
264
unsigned int barrier : SQ_CF_WORD1_BARRIER_SIZE;
267
#elif defined(BIGENDIAN_CPU)
269
typedef struct _sq_cf_word1_t {
270
unsigned int barrier : SQ_CF_WORD1_BARRIER_SIZE;
271
unsigned int whole_quad_mode : SQ_CF_WORD1_WHOLE_QUAD_MODE_SIZE;
272
unsigned int cf_inst : SQ_CF_WORD1_CF_INST_SIZE;
273
unsigned int valid_pixel_mode : SQ_CF_WORD1_VALID_PIXEL_MODE_SIZE;
274
unsigned int end_of_program : SQ_CF_WORD1_END_OF_PROGRAM_SIZE;
276
unsigned int count_3 : SQ_CF_WORD1_COUNT_3_SIZE;
277
unsigned int call_count : SQ_CF_WORD1_CALL_COUNT_SIZE;
278
unsigned int count : SQ_CF_WORD1_COUNT_SIZE;
279
unsigned int cond : SQ_CF_WORD1_COND_SIZE;
280
unsigned int cf_const : SQ_CF_WORD1_CF_CONST_SIZE;
281
unsigned int pop_count : SQ_CF_WORD1_POP_COUNT_SIZE;
287
unsigned int val : 32;
293
* SQ_CF_ALU_WORD0 struct
296
#define SQ_CF_ALU_WORD0_ADDR_SIZE 22
297
#define SQ_CF_ALU_WORD0_KCACHE_BANK0_SIZE 4
298
#define SQ_CF_ALU_WORD0_KCACHE_BANK1_SIZE 4
299
#define SQ_CF_ALU_WORD0_KCACHE_MODE0_SIZE 2
301
#define SQ_CF_ALU_WORD0_ADDR_SHIFT 0
302
#define SQ_CF_ALU_WORD0_KCACHE_BANK0_SHIFT 22
303
#define SQ_CF_ALU_WORD0_KCACHE_BANK1_SHIFT 26
304
#define SQ_CF_ALU_WORD0_KCACHE_MODE0_SHIFT 30
306
#define SQ_CF_ALU_WORD0_ADDR_MASK 0x003fffff
307
#define SQ_CF_ALU_WORD0_KCACHE_BANK0_MASK 0x03c00000
308
#define SQ_CF_ALU_WORD0_KCACHE_BANK1_MASK 0x3c000000
309
#define SQ_CF_ALU_WORD0_KCACHE_MODE0_MASK 0xc0000000
311
#define SQ_CF_ALU_WORD0_MASK \
312
(SQ_CF_ALU_WORD0_ADDR_MASK | \
313
SQ_CF_ALU_WORD0_KCACHE_BANK0_MASK | \
314
SQ_CF_ALU_WORD0_KCACHE_BANK1_MASK | \
315
SQ_CF_ALU_WORD0_KCACHE_MODE0_MASK)
317
#define SQ_CF_ALU_WORD0_DEFAULT 0xcdcdcdcd
319
#define SQ_CF_ALU_WORD0_GET_ADDR(sq_cf_alu_word0) \
320
((sq_cf_alu_word0 & SQ_CF_ALU_WORD0_ADDR_MASK) >> SQ_CF_ALU_WORD0_ADDR_SHIFT)
321
#define SQ_CF_ALU_WORD0_GET_KCACHE_BANK0(sq_cf_alu_word0) \
322
((sq_cf_alu_word0 & SQ_CF_ALU_WORD0_KCACHE_BANK0_MASK) >> SQ_CF_ALU_WORD0_KCACHE_BANK0_SHIFT)
323
#define SQ_CF_ALU_WORD0_GET_KCACHE_BANK1(sq_cf_alu_word0) \
324
((sq_cf_alu_word0 & SQ_CF_ALU_WORD0_KCACHE_BANK1_MASK) >> SQ_CF_ALU_WORD0_KCACHE_BANK1_SHIFT)
325
#define SQ_CF_ALU_WORD0_GET_KCACHE_MODE0(sq_cf_alu_word0) \
326
((sq_cf_alu_word0 & SQ_CF_ALU_WORD0_KCACHE_MODE0_MASK) >> SQ_CF_ALU_WORD0_KCACHE_MODE0_SHIFT)
328
#define SQ_CF_ALU_WORD0_SET_ADDR(sq_cf_alu_word0_reg, addr) \
329
sq_cf_alu_word0_reg = (sq_cf_alu_word0_reg & ~SQ_CF_ALU_WORD0_ADDR_MASK) | (addr << SQ_CF_ALU_WORD0_ADDR_SHIFT)
330
#define SQ_CF_ALU_WORD0_SET_KCACHE_BANK0(sq_cf_alu_word0_reg, kcache_bank0) \
331
sq_cf_alu_word0_reg = (sq_cf_alu_word0_reg & ~SQ_CF_ALU_WORD0_KCACHE_BANK0_MASK) | (kcache_bank0 << SQ_CF_ALU_WORD0_KCACHE_BANK0_SHIFT)
332
#define SQ_CF_ALU_WORD0_SET_KCACHE_BANK1(sq_cf_alu_word0_reg, kcache_bank1) \
333
sq_cf_alu_word0_reg = (sq_cf_alu_word0_reg & ~SQ_CF_ALU_WORD0_KCACHE_BANK1_MASK) | (kcache_bank1 << SQ_CF_ALU_WORD0_KCACHE_BANK1_SHIFT)
334
#define SQ_CF_ALU_WORD0_SET_KCACHE_MODE0(sq_cf_alu_word0_reg, kcache_mode0) \
335
sq_cf_alu_word0_reg = (sq_cf_alu_word0_reg & ~SQ_CF_ALU_WORD0_KCACHE_MODE0_MASK) | (kcache_mode0 << SQ_CF_ALU_WORD0_KCACHE_MODE0_SHIFT)
337
#if defined(LITTLEENDIAN_CPU)
339
typedef struct _sq_cf_alu_word0_t {
340
unsigned int addr : SQ_CF_ALU_WORD0_ADDR_SIZE;
341
unsigned int kcache_bank0 : SQ_CF_ALU_WORD0_KCACHE_BANK0_SIZE;
342
unsigned int kcache_bank1 : SQ_CF_ALU_WORD0_KCACHE_BANK1_SIZE;
343
unsigned int kcache_mode0 : SQ_CF_ALU_WORD0_KCACHE_MODE0_SIZE;
346
#elif defined(BIGENDIAN_CPU)
348
typedef struct _sq_cf_alu_word0_t {
349
unsigned int kcache_mode0 : SQ_CF_ALU_WORD0_KCACHE_MODE0_SIZE;
350
unsigned int kcache_bank1 : SQ_CF_ALU_WORD0_KCACHE_BANK1_SIZE;
351
unsigned int kcache_bank0 : SQ_CF_ALU_WORD0_KCACHE_BANK0_SIZE;
352
unsigned int addr : SQ_CF_ALU_WORD0_ADDR_SIZE;
358
unsigned int val : 32;
364
* SQ_CF_ALU_WORD1 struct
367
#define SQ_CF_ALU_WORD1_KCACHE_MODE1_SIZE 2
368
#define SQ_CF_ALU_WORD1_KCACHE_ADDR0_SIZE 8
369
#define SQ_CF_ALU_WORD1_KCACHE_ADDR1_SIZE 8
370
#define SQ_CF_ALU_WORD1_COUNT_SIZE 7
371
#define SQ_CF_ALU_WORD1_ALT_CONST_SIZE 1
372
#define SQ_CF_ALU_WORD1_CF_INST_SIZE 4
373
#define SQ_CF_ALU_WORD1_WHOLE_QUAD_MODE_SIZE 1
374
#define SQ_CF_ALU_WORD1_BARRIER_SIZE 1
376
#define SQ_CF_ALU_WORD1_KCACHE_MODE1_SHIFT 0
377
#define SQ_CF_ALU_WORD1_KCACHE_ADDR0_SHIFT 2
378
#define SQ_CF_ALU_WORD1_KCACHE_ADDR1_SHIFT 10
379
#define SQ_CF_ALU_WORD1_COUNT_SHIFT 18
380
#define SQ_CF_ALU_WORD1_ALT_CONST_SHIFT 25
381
#define SQ_CF_ALU_WORD1_CF_INST_SHIFT 26
382
#define SQ_CF_ALU_WORD1_WHOLE_QUAD_MODE_SHIFT 30
383
#define SQ_CF_ALU_WORD1_BARRIER_SHIFT 31
385
#define SQ_CF_ALU_WORD1_KCACHE_MODE1_MASK 0x00000003
386
#define SQ_CF_ALU_WORD1_KCACHE_ADDR0_MASK 0x000003fc
387
#define SQ_CF_ALU_WORD1_KCACHE_ADDR1_MASK 0x0003fc00
388
#define SQ_CF_ALU_WORD1_COUNT_MASK 0x01fc0000
389
#define SQ_CF_ALU_WORD1_ALT_CONST_MASK 0x02000000
390
#define SQ_CF_ALU_WORD1_CF_INST_MASK 0x3c000000
391
#define SQ_CF_ALU_WORD1_WHOLE_QUAD_MODE_MASK 0x40000000
392
#define SQ_CF_ALU_WORD1_BARRIER_MASK 0x80000000
394
#define SQ_CF_ALU_WORD1_MASK \
395
(SQ_CF_ALU_WORD1_KCACHE_MODE1_MASK | \
396
SQ_CF_ALU_WORD1_KCACHE_ADDR0_MASK | \
397
SQ_CF_ALU_WORD1_KCACHE_ADDR1_MASK | \
398
SQ_CF_ALU_WORD1_COUNT_MASK | \
399
SQ_CF_ALU_WORD1_ALT_CONST_MASK | \
400
SQ_CF_ALU_WORD1_CF_INST_MASK | \
401
SQ_CF_ALU_WORD1_WHOLE_QUAD_MODE_MASK | \
402
SQ_CF_ALU_WORD1_BARRIER_MASK)
404
#define SQ_CF_ALU_WORD1_DEFAULT 0xcdcdcdcd
406
#define SQ_CF_ALU_WORD1_GET_KCACHE_MODE1(sq_cf_alu_word1) \
407
((sq_cf_alu_word1 & SQ_CF_ALU_WORD1_KCACHE_MODE1_MASK) >> SQ_CF_ALU_WORD1_KCACHE_MODE1_SHIFT)
408
#define SQ_CF_ALU_WORD1_GET_KCACHE_ADDR0(sq_cf_alu_word1) \
409
((sq_cf_alu_word1 & SQ_CF_ALU_WORD1_KCACHE_ADDR0_MASK) >> SQ_CF_ALU_WORD1_KCACHE_ADDR0_SHIFT)
410
#define SQ_CF_ALU_WORD1_GET_KCACHE_ADDR1(sq_cf_alu_word1) \
411
((sq_cf_alu_word1 & SQ_CF_ALU_WORD1_KCACHE_ADDR1_MASK) >> SQ_CF_ALU_WORD1_KCACHE_ADDR1_SHIFT)
412
#define SQ_CF_ALU_WORD1_GET_COUNT(sq_cf_alu_word1) \
413
((sq_cf_alu_word1 & SQ_CF_ALU_WORD1_COUNT_MASK) >> SQ_CF_ALU_WORD1_COUNT_SHIFT)
414
#define SQ_CF_ALU_WORD1_GET_ALT_CONST(sq_cf_alu_word1) \
415
((sq_cf_alu_word1 & SQ_CF_ALU_WORD1_ALT_CONST_MASK) >> SQ_CF_ALU_WORD1_ALT_CONST_SHIFT)
416
#define SQ_CF_ALU_WORD1_GET_CF_INST(sq_cf_alu_word1) \
417
((sq_cf_alu_word1 & SQ_CF_ALU_WORD1_CF_INST_MASK) >> SQ_CF_ALU_WORD1_CF_INST_SHIFT)
418
#define SQ_CF_ALU_WORD1_GET_WHOLE_QUAD_MODE(sq_cf_alu_word1) \
419
((sq_cf_alu_word1 & SQ_CF_ALU_WORD1_WHOLE_QUAD_MODE_MASK) >> SQ_CF_ALU_WORD1_WHOLE_QUAD_MODE_SHIFT)
420
#define SQ_CF_ALU_WORD1_GET_BARRIER(sq_cf_alu_word1) \
421
((sq_cf_alu_word1 & SQ_CF_ALU_WORD1_BARRIER_MASK) >> SQ_CF_ALU_WORD1_BARRIER_SHIFT)
423
#define SQ_CF_ALU_WORD1_SET_KCACHE_MODE1(sq_cf_alu_word1_reg, kcache_mode1) \
424
sq_cf_alu_word1_reg = (sq_cf_alu_word1_reg & ~SQ_CF_ALU_WORD1_KCACHE_MODE1_MASK) | (kcache_mode1 << SQ_CF_ALU_WORD1_KCACHE_MODE1_SHIFT)
425
#define SQ_CF_ALU_WORD1_SET_KCACHE_ADDR0(sq_cf_alu_word1_reg, kcache_addr0) \
426
sq_cf_alu_word1_reg = (sq_cf_alu_word1_reg & ~SQ_CF_ALU_WORD1_KCACHE_ADDR0_MASK) | (kcache_addr0 << SQ_CF_ALU_WORD1_KCACHE_ADDR0_SHIFT)
427
#define SQ_CF_ALU_WORD1_SET_KCACHE_ADDR1(sq_cf_alu_word1_reg, kcache_addr1) \
428
sq_cf_alu_word1_reg = (sq_cf_alu_word1_reg & ~SQ_CF_ALU_WORD1_KCACHE_ADDR1_MASK) | (kcache_addr1 << SQ_CF_ALU_WORD1_KCACHE_ADDR1_SHIFT)
429
#define SQ_CF_ALU_WORD1_SET_COUNT(sq_cf_alu_word1_reg, count) \
430
sq_cf_alu_word1_reg = (sq_cf_alu_word1_reg & ~SQ_CF_ALU_WORD1_COUNT_MASK) | (count << SQ_CF_ALU_WORD1_COUNT_SHIFT)
431
#define SQ_CF_ALU_WORD1_SET_ALT_CONST(sq_cf_alu_word1_reg, alt_const) \
432
sq_cf_alu_word1_reg = (sq_cf_alu_word1_reg & ~SQ_CF_ALU_WORD1_ALT_CONST_MASK) | (alt_const << SQ_CF_ALU_WORD1_ALT_CONST_SHIFT)
433
#define SQ_CF_ALU_WORD1_SET_CF_INST(sq_cf_alu_word1_reg, cf_inst) \
434
sq_cf_alu_word1_reg = (sq_cf_alu_word1_reg & ~SQ_CF_ALU_WORD1_CF_INST_MASK) | (cf_inst << SQ_CF_ALU_WORD1_CF_INST_SHIFT)
435
#define SQ_CF_ALU_WORD1_SET_WHOLE_QUAD_MODE(sq_cf_alu_word1_reg, whole_quad_mode) \
436
sq_cf_alu_word1_reg = (sq_cf_alu_word1_reg & ~SQ_CF_ALU_WORD1_WHOLE_QUAD_MODE_MASK) | (whole_quad_mode << SQ_CF_ALU_WORD1_WHOLE_QUAD_MODE_SHIFT)
437
#define SQ_CF_ALU_WORD1_SET_BARRIER(sq_cf_alu_word1_reg, barrier) \
438
sq_cf_alu_word1_reg = (sq_cf_alu_word1_reg & ~SQ_CF_ALU_WORD1_BARRIER_MASK) | (barrier << SQ_CF_ALU_WORD1_BARRIER_SHIFT)
440
#if defined(LITTLEENDIAN_CPU)
442
typedef struct _sq_cf_alu_word1_t {
443
unsigned int kcache_mode1 : SQ_CF_ALU_WORD1_KCACHE_MODE1_SIZE;
444
unsigned int kcache_addr0 : SQ_CF_ALU_WORD1_KCACHE_ADDR0_SIZE;
445
unsigned int kcache_addr1 : SQ_CF_ALU_WORD1_KCACHE_ADDR1_SIZE;
446
unsigned int count : SQ_CF_ALU_WORD1_COUNT_SIZE;
447
unsigned int alt_const : SQ_CF_ALU_WORD1_ALT_CONST_SIZE;
448
unsigned int cf_inst : SQ_CF_ALU_WORD1_CF_INST_SIZE;
449
unsigned int whole_quad_mode : SQ_CF_ALU_WORD1_WHOLE_QUAD_MODE_SIZE;
450
unsigned int barrier : SQ_CF_ALU_WORD1_BARRIER_SIZE;
453
#elif defined(BIGENDIAN_CPU)
455
typedef struct _sq_cf_alu_word1_t {
456
unsigned int barrier : SQ_CF_ALU_WORD1_BARRIER_SIZE;
457
unsigned int whole_quad_mode : SQ_CF_ALU_WORD1_WHOLE_QUAD_MODE_SIZE;
458
unsigned int cf_inst : SQ_CF_ALU_WORD1_CF_INST_SIZE;
459
unsigned int alt_const : SQ_CF_ALU_WORD1_ALT_CONST_SIZE;
460
unsigned int count : SQ_CF_ALU_WORD1_COUNT_SIZE;
461
unsigned int kcache_addr1 : SQ_CF_ALU_WORD1_KCACHE_ADDR1_SIZE;
462
unsigned int kcache_addr0 : SQ_CF_ALU_WORD1_KCACHE_ADDR0_SIZE;
463
unsigned int kcache_mode1 : SQ_CF_ALU_WORD1_KCACHE_MODE1_SIZE;
469
unsigned int val : 32;
475
* SQ_CF_ALLOC_EXPORT_WORD0 struct
478
#define SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE_SIZE 13
479
#define SQ_CF_ALLOC_EXPORT_WORD0_TYPE_SIZE 2
480
#define SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR_SIZE 7
481
#define SQ_CF_ALLOC_EXPORT_WORD0_RW_REL_SIZE 1
482
#define SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR_SIZE 7
483
#define SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE_SIZE 2
485
#define SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE_SHIFT 0
486
#define SQ_CF_ALLOC_EXPORT_WORD0_TYPE_SHIFT 13
487
#define SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR_SHIFT 15
488
#define SQ_CF_ALLOC_EXPORT_WORD0_RW_REL_SHIFT 22
489
#define SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR_SHIFT 23
490
#define SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE_SHIFT 30
492
#define SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE_MASK 0x00001fff
493
#define SQ_CF_ALLOC_EXPORT_WORD0_TYPE_MASK 0x00006000
494
#define SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR_MASK 0x003f8000
495
#define SQ_CF_ALLOC_EXPORT_WORD0_RW_REL_MASK 0x00400000
496
#define SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR_MASK 0x3f800000
497
#define SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE_MASK 0xc0000000
499
#define SQ_CF_ALLOC_EXPORT_WORD0_MASK \
500
(SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE_MASK | \
501
SQ_CF_ALLOC_EXPORT_WORD0_TYPE_MASK | \
502
SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR_MASK | \
503
SQ_CF_ALLOC_EXPORT_WORD0_RW_REL_MASK | \
504
SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR_MASK | \
505
SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE_MASK)
507
#define SQ_CF_ALLOC_EXPORT_WORD0_DEFAULT 0xcdcdcdcd
509
#define SQ_CF_ALLOC_EXPORT_WORD0_GET_ARRAY_BASE(sq_cf_alloc_export_word0) \
510
((sq_cf_alloc_export_word0 & SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE_MASK) >> SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE_SHIFT)
511
#define SQ_CF_ALLOC_EXPORT_WORD0_GET_TYPE(sq_cf_alloc_export_word0) \
512
((sq_cf_alloc_export_word0 & SQ_CF_ALLOC_EXPORT_WORD0_TYPE_MASK) >> SQ_CF_ALLOC_EXPORT_WORD0_TYPE_SHIFT)
513
#define SQ_CF_ALLOC_EXPORT_WORD0_GET_RW_GPR(sq_cf_alloc_export_word0) \
514
((sq_cf_alloc_export_word0 & SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR_MASK) >> SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR_SHIFT)
515
#define SQ_CF_ALLOC_EXPORT_WORD0_GET_RW_REL(sq_cf_alloc_export_word0) \
516
((sq_cf_alloc_export_word0 & SQ_CF_ALLOC_EXPORT_WORD0_RW_REL_MASK) >> SQ_CF_ALLOC_EXPORT_WORD0_RW_REL_SHIFT)
517
#define SQ_CF_ALLOC_EXPORT_WORD0_GET_INDEX_GPR(sq_cf_alloc_export_word0) \
518
((sq_cf_alloc_export_word0 & SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR_MASK) >> SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR_SHIFT)
519
#define SQ_CF_ALLOC_EXPORT_WORD0_GET_ELEM_SIZE(sq_cf_alloc_export_word0) \
520
((sq_cf_alloc_export_word0 & SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE_MASK) >> SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE_SHIFT)
522
#define SQ_CF_ALLOC_EXPORT_WORD0_SET_ARRAY_BASE(sq_cf_alloc_export_word0_reg, array_base) \
523
sq_cf_alloc_export_word0_reg = (sq_cf_alloc_export_word0_reg & ~SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE_MASK) | (array_base << SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE_SHIFT)
524
#define SQ_CF_ALLOC_EXPORT_WORD0_SET_TYPE(sq_cf_alloc_export_word0_reg, type) \
525
sq_cf_alloc_export_word0_reg = (sq_cf_alloc_export_word0_reg & ~SQ_CF_ALLOC_EXPORT_WORD0_TYPE_MASK) | (type << SQ_CF_ALLOC_EXPORT_WORD0_TYPE_SHIFT)
526
#define SQ_CF_ALLOC_EXPORT_WORD0_SET_RW_GPR(sq_cf_alloc_export_word0_reg, rw_gpr) \
527
sq_cf_alloc_export_word0_reg = (sq_cf_alloc_export_word0_reg & ~SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR_MASK) | (rw_gpr << SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR_SHIFT)
528
#define SQ_CF_ALLOC_EXPORT_WORD0_SET_RW_REL(sq_cf_alloc_export_word0_reg, rw_rel) \
529
sq_cf_alloc_export_word0_reg = (sq_cf_alloc_export_word0_reg & ~SQ_CF_ALLOC_EXPORT_WORD0_RW_REL_MASK) | (rw_rel << SQ_CF_ALLOC_EXPORT_WORD0_RW_REL_SHIFT)
530
#define SQ_CF_ALLOC_EXPORT_WORD0_SET_INDEX_GPR(sq_cf_alloc_export_word0_reg, index_gpr) \
531
sq_cf_alloc_export_word0_reg = (sq_cf_alloc_export_word0_reg & ~SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR_MASK) | (index_gpr << SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR_SHIFT)
532
#define SQ_CF_ALLOC_EXPORT_WORD0_SET_ELEM_SIZE(sq_cf_alloc_export_word0_reg, elem_size) \
533
sq_cf_alloc_export_word0_reg = (sq_cf_alloc_export_word0_reg & ~SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE_MASK) | (elem_size << SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE_SHIFT)
535
#if defined(LITTLEENDIAN_CPU)
537
typedef struct _sq_cf_alloc_export_word0_t {
538
unsigned int array_base : SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE_SIZE;
539
unsigned int type : SQ_CF_ALLOC_EXPORT_WORD0_TYPE_SIZE;
540
unsigned int rw_gpr : SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR_SIZE;
541
unsigned int rw_rel : SQ_CF_ALLOC_EXPORT_WORD0_RW_REL_SIZE;
542
unsigned int index_gpr : SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR_SIZE;
543
unsigned int elem_size : SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE_SIZE;
544
} sq_cf_alloc_export_word0_t;
546
#elif defined(BIGENDIAN_CPU)
548
typedef struct _sq_cf_alloc_export_word0_t {
549
unsigned int elem_size : SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE_SIZE;
550
unsigned int index_gpr : SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR_SIZE;
551
unsigned int rw_rel : SQ_CF_ALLOC_EXPORT_WORD0_RW_REL_SIZE;
552
unsigned int rw_gpr : SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR_SIZE;
553
unsigned int type : SQ_CF_ALLOC_EXPORT_WORD0_TYPE_SIZE;
554
unsigned int array_base : SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE_SIZE;
555
} sq_cf_alloc_export_word0_t;
560
unsigned int val : 32;
561
sq_cf_alloc_export_word0_t f;
562
} sq_cf_alloc_export_word0_u;
566
* SQ_CF_ALLOC_EXPORT_WORD1 struct
569
#define SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT_SIZE 4
570
#define SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM_SIZE 1
571
#define SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE_SIZE 1
572
#define SQ_CF_ALLOC_EXPORT_WORD1_CF_INST_SIZE 7
573
#define SQ_CF_ALLOC_EXPORT_WORD1_WHOLE_QUAD_MODE_SIZE 1
574
#define SQ_CF_ALLOC_EXPORT_WORD1_BARRIER_SIZE 1
576
#define SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT_SHIFT 17
577
#define SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM_SHIFT 21
578
#define SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE_SHIFT 22
579
#define SQ_CF_ALLOC_EXPORT_WORD1_CF_INST_SHIFT 23
580
#define SQ_CF_ALLOC_EXPORT_WORD1_WHOLE_QUAD_MODE_SHIFT 30
581
#define SQ_CF_ALLOC_EXPORT_WORD1_BARRIER_SHIFT 31
583
#define SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT_MASK 0x001e0000
584
#define SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM_MASK 0x00200000
585
#define SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE_MASK 0x00400000
586
#define SQ_CF_ALLOC_EXPORT_WORD1_CF_INST_MASK 0x3f800000
587
#define SQ_CF_ALLOC_EXPORT_WORD1_WHOLE_QUAD_MODE_MASK 0x40000000
588
#define SQ_CF_ALLOC_EXPORT_WORD1_BARRIER_MASK 0x80000000
590
#define SQ_CF_ALLOC_EXPORT_WORD1_MASK \
591
(SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT_MASK | \
592
SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM_MASK | \
593
SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE_MASK | \
594
SQ_CF_ALLOC_EXPORT_WORD1_CF_INST_MASK | \
595
SQ_CF_ALLOC_EXPORT_WORD1_WHOLE_QUAD_MODE_MASK | \
596
SQ_CF_ALLOC_EXPORT_WORD1_BARRIER_MASK)
598
#define SQ_CF_ALLOC_EXPORT_WORD1_DEFAULT 0xcdcc0000
600
#define SQ_CF_ALLOC_EXPORT_WORD1_GET_BURST_COUNT(sq_cf_alloc_export_word1) \
601
((sq_cf_alloc_export_word1 & SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT_MASK) >> SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT_SHIFT)
602
#define SQ_CF_ALLOC_EXPORT_WORD1_GET_END_OF_PROGRAM(sq_cf_alloc_export_word1) \
603
((sq_cf_alloc_export_word1 & SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM_MASK) >> SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM_SHIFT)
604
#define SQ_CF_ALLOC_EXPORT_WORD1_GET_VALID_PIXEL_MODE(sq_cf_alloc_export_word1) \
605
((sq_cf_alloc_export_word1 & SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE_MASK) >> SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE_SHIFT)
606
#define SQ_CF_ALLOC_EXPORT_WORD1_GET_CF_INST(sq_cf_alloc_export_word1) \
607
((sq_cf_alloc_export_word1 & SQ_CF_ALLOC_EXPORT_WORD1_CF_INST_MASK) >> SQ_CF_ALLOC_EXPORT_WORD1_CF_INST_SHIFT)
608
#define SQ_CF_ALLOC_EXPORT_WORD1_GET_WHOLE_QUAD_MODE(sq_cf_alloc_export_word1) \
609
((sq_cf_alloc_export_word1 & SQ_CF_ALLOC_EXPORT_WORD1_WHOLE_QUAD_MODE_MASK) >> SQ_CF_ALLOC_EXPORT_WORD1_WHOLE_QUAD_MODE_SHIFT)
610
#define SQ_CF_ALLOC_EXPORT_WORD1_GET_BARRIER(sq_cf_alloc_export_word1) \
611
((sq_cf_alloc_export_word1 & SQ_CF_ALLOC_EXPORT_WORD1_BARRIER_MASK) >> SQ_CF_ALLOC_EXPORT_WORD1_BARRIER_SHIFT)
613
#define SQ_CF_ALLOC_EXPORT_WORD1_SET_BURST_COUNT(sq_cf_alloc_export_word1_reg, burst_count) \
614
sq_cf_alloc_export_word1_reg = (sq_cf_alloc_export_word1_reg & ~SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT_MASK) | (burst_count << SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT_SHIFT)
615
#define SQ_CF_ALLOC_EXPORT_WORD1_SET_END_OF_PROGRAM(sq_cf_alloc_export_word1_reg, end_of_program) \
616
sq_cf_alloc_export_word1_reg = (sq_cf_alloc_export_word1_reg & ~SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM_MASK) | (end_of_program << SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM_SHIFT)
617
#define SQ_CF_ALLOC_EXPORT_WORD1_SET_VALID_PIXEL_MODE(sq_cf_alloc_export_word1_reg, valid_pixel_mode) \
618
sq_cf_alloc_export_word1_reg = (sq_cf_alloc_export_word1_reg & ~SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE_MASK) | (valid_pixel_mode << SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE_SHIFT)
619
#define SQ_CF_ALLOC_EXPORT_WORD1_SET_CF_INST(sq_cf_alloc_export_word1_reg, cf_inst) \
620
sq_cf_alloc_export_word1_reg = (sq_cf_alloc_export_word1_reg & ~SQ_CF_ALLOC_EXPORT_WORD1_CF_INST_MASK) | (cf_inst << SQ_CF_ALLOC_EXPORT_WORD1_CF_INST_SHIFT)
621
#define SQ_CF_ALLOC_EXPORT_WORD1_SET_WHOLE_QUAD_MODE(sq_cf_alloc_export_word1_reg, whole_quad_mode) \
622
sq_cf_alloc_export_word1_reg = (sq_cf_alloc_export_word1_reg & ~SQ_CF_ALLOC_EXPORT_WORD1_WHOLE_QUAD_MODE_MASK) | (whole_quad_mode << SQ_CF_ALLOC_EXPORT_WORD1_WHOLE_QUAD_MODE_SHIFT)
623
#define SQ_CF_ALLOC_EXPORT_WORD1_SET_BARRIER(sq_cf_alloc_export_word1_reg, barrier) \
624
sq_cf_alloc_export_word1_reg = (sq_cf_alloc_export_word1_reg & ~SQ_CF_ALLOC_EXPORT_WORD1_BARRIER_MASK) | (barrier << SQ_CF_ALLOC_EXPORT_WORD1_BARRIER_SHIFT)
626
#if defined(LITTLEENDIAN_CPU)
628
typedef struct _sq_cf_alloc_export_word1_t {
630
unsigned int burst_count : SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT_SIZE;
631
unsigned int end_of_program : SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM_SIZE;
632
unsigned int valid_pixel_mode : SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE_SIZE;
633
unsigned int cf_inst : SQ_CF_ALLOC_EXPORT_WORD1_CF_INST_SIZE;
634
unsigned int whole_quad_mode : SQ_CF_ALLOC_EXPORT_WORD1_WHOLE_QUAD_MODE_SIZE;
635
unsigned int barrier : SQ_CF_ALLOC_EXPORT_WORD1_BARRIER_SIZE;
636
} sq_cf_alloc_export_word1_t;
638
#elif defined(BIGENDIAN_CPU)
640
typedef struct _sq_cf_alloc_export_word1_t {
641
unsigned int barrier : SQ_CF_ALLOC_EXPORT_WORD1_BARRIER_SIZE;
642
unsigned int whole_quad_mode : SQ_CF_ALLOC_EXPORT_WORD1_WHOLE_QUAD_MODE_SIZE;
643
unsigned int cf_inst : SQ_CF_ALLOC_EXPORT_WORD1_CF_INST_SIZE;
644
unsigned int valid_pixel_mode : SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE_SIZE;
645
unsigned int end_of_program : SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM_SIZE;
646
unsigned int burst_count : SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT_SIZE;
648
} sq_cf_alloc_export_word1_t;
653
unsigned int val : 32;
654
sq_cf_alloc_export_word1_t f;
655
} sq_cf_alloc_export_word1_u;
659
* SQ_CF_ALLOC_EXPORT_WORD1_BUF struct
662
#define SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE_SIZE 12
663
#define SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK_SIZE 4
665
#define SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE_SHIFT 0
666
#define SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK_SHIFT 12
668
#define SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE_MASK 0x00000fff
669
#define SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK_MASK 0x0000f000
671
#define SQ_CF_ALLOC_EXPORT_WORD1_BUF_MASK \
672
(SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE_MASK | \
673
SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK_MASK)
675
#define SQ_CF_ALLOC_EXPORT_WORD1_BUF_DEFAULT 0x0000cdcd
677
#define SQ_CF_ALLOC_EXPORT_WORD1_BUF_GET_ARRAY_SIZE(sq_cf_alloc_export_word1_buf) \
678
((sq_cf_alloc_export_word1_buf & SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE_MASK) >> SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE_SHIFT)
679
#define SQ_CF_ALLOC_EXPORT_WORD1_BUF_GET_COMP_MASK(sq_cf_alloc_export_word1_buf) \
680
((sq_cf_alloc_export_word1_buf & SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK_MASK) >> SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK_SHIFT)
682
#define SQ_CF_ALLOC_EXPORT_WORD1_BUF_SET_ARRAY_SIZE(sq_cf_alloc_export_word1_buf_reg, array_size) \
683
sq_cf_alloc_export_word1_buf_reg = (sq_cf_alloc_export_word1_buf_reg & ~SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE_MASK) | (array_size << SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE_SHIFT)
684
#define SQ_CF_ALLOC_EXPORT_WORD1_BUF_SET_COMP_MASK(sq_cf_alloc_export_word1_buf_reg, comp_mask) \
685
sq_cf_alloc_export_word1_buf_reg = (sq_cf_alloc_export_word1_buf_reg & ~SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK_MASK) | (comp_mask << SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK_SHIFT)
687
#if defined(LITTLEENDIAN_CPU)
689
typedef struct _sq_cf_alloc_export_word1_buf_t {
690
unsigned int array_size : SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE_SIZE;
691
unsigned int comp_mask : SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK_SIZE;
693
} sq_cf_alloc_export_word1_buf_t;
695
#elif defined(BIGENDIAN_CPU)
697
typedef struct _sq_cf_alloc_export_word1_buf_t {
699
unsigned int comp_mask : SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK_SIZE;
700
unsigned int array_size : SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE_SIZE;
701
} sq_cf_alloc_export_word1_buf_t;
706
unsigned int val : 32;
707
sq_cf_alloc_export_word1_buf_t f;
708
} sq_cf_alloc_export_word1_buf_u;
712
* SQ_CF_ALLOC_EXPORT_WORD1_SWIZ struct
715
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X_SIZE 3
716
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y_SIZE 3
717
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z_SIZE 3
718
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W_SIZE 3
720
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X_SHIFT 0
721
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y_SHIFT 3
722
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z_SHIFT 6
723
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W_SHIFT 9
725
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X_MASK 0x00000007
726
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y_MASK 0x00000038
727
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z_MASK 0x000001c0
728
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W_MASK 0x00000e00
730
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_MASK \
731
(SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X_MASK | \
732
SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y_MASK | \
733
SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z_MASK | \
734
SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W_MASK)
736
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_DEFAULT 0x00000dcd
738
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_GET_SEL_X(sq_cf_alloc_export_word1_swiz) \
739
((sq_cf_alloc_export_word1_swiz & SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X_MASK) >> SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X_SHIFT)
740
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_GET_SEL_Y(sq_cf_alloc_export_word1_swiz) \
741
((sq_cf_alloc_export_word1_swiz & SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y_MASK) >> SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y_SHIFT)
742
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_GET_SEL_Z(sq_cf_alloc_export_word1_swiz) \
743
((sq_cf_alloc_export_word1_swiz & SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z_MASK) >> SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z_SHIFT)
744
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_GET_SEL_W(sq_cf_alloc_export_word1_swiz) \
745
((sq_cf_alloc_export_word1_swiz & SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W_MASK) >> SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W_SHIFT)
747
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SET_SEL_X(sq_cf_alloc_export_word1_swiz_reg, sel_x) \
748
sq_cf_alloc_export_word1_swiz_reg = (sq_cf_alloc_export_word1_swiz_reg & ~SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X_MASK) | (sel_x << SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X_SHIFT)
749
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SET_SEL_Y(sq_cf_alloc_export_word1_swiz_reg, sel_y) \
750
sq_cf_alloc_export_word1_swiz_reg = (sq_cf_alloc_export_word1_swiz_reg & ~SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y_MASK) | (sel_y << SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y_SHIFT)
751
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SET_SEL_Z(sq_cf_alloc_export_word1_swiz_reg, sel_z) \
752
sq_cf_alloc_export_word1_swiz_reg = (sq_cf_alloc_export_word1_swiz_reg & ~SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z_MASK) | (sel_z << SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z_SHIFT)
753
#define SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SET_SEL_W(sq_cf_alloc_export_word1_swiz_reg, sel_w) \
754
sq_cf_alloc_export_word1_swiz_reg = (sq_cf_alloc_export_word1_swiz_reg & ~SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W_MASK) | (sel_w << SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W_SHIFT)
756
#if defined(LITTLEENDIAN_CPU)
758
typedef struct _sq_cf_alloc_export_word1_swiz_t {
759
unsigned int sel_x : SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X_SIZE;
760
unsigned int sel_y : SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y_SIZE;
761
unsigned int sel_z : SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z_SIZE;
762
unsigned int sel_w : SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W_SIZE;
764
} sq_cf_alloc_export_word1_swiz_t;
766
#elif defined(BIGENDIAN_CPU)
768
typedef struct _sq_cf_alloc_export_word1_swiz_t {
770
unsigned int sel_w : SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W_SIZE;
771
unsigned int sel_z : SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z_SIZE;
772
unsigned int sel_y : SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y_SIZE;
773
unsigned int sel_x : SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X_SIZE;
774
} sq_cf_alloc_export_word1_swiz_t;
779
unsigned int val : 32;
780
sq_cf_alloc_export_word1_swiz_t f;
781
} sq_cf_alloc_export_word1_swiz_u;
785
* SQ_ALU_WORD0 struct
788
#define SQ_ALU_WORD0_SRC0_SEL_SIZE 9
789
#define SQ_ALU_WORD0_SRC0_REL_SIZE 1
790
#define SQ_ALU_WORD0_SRC0_CHAN_SIZE 2
791
#define SQ_ALU_WORD0_SRC0_NEG_SIZE 1
792
#define SQ_ALU_WORD0_SRC1_SEL_SIZE 9
793
#define SQ_ALU_WORD0_SRC1_REL_SIZE 1
794
#define SQ_ALU_WORD0_SRC1_CHAN_SIZE 2
795
#define SQ_ALU_WORD0_SRC1_NEG_SIZE 1
796
#define SQ_ALU_WORD0_INDEX_MODE_SIZE 3
797
#define SQ_ALU_WORD0_PRED_SEL_SIZE 2
798
#define SQ_ALU_WORD0_LAST_SIZE 1
800
#define SQ_ALU_WORD0_SRC0_SEL_SHIFT 0
801
#define SQ_ALU_WORD0_SRC0_REL_SHIFT 9
802
#define SQ_ALU_WORD0_SRC0_CHAN_SHIFT 10
803
#define SQ_ALU_WORD0_SRC0_NEG_SHIFT 12
804
#define SQ_ALU_WORD0_SRC1_SEL_SHIFT 13
805
#define SQ_ALU_WORD0_SRC1_REL_SHIFT 22
806
#define SQ_ALU_WORD0_SRC1_CHAN_SHIFT 23
807
#define SQ_ALU_WORD0_SRC1_NEG_SHIFT 25
808
#define SQ_ALU_WORD0_INDEX_MODE_SHIFT 26
809
#define SQ_ALU_WORD0_PRED_SEL_SHIFT 29
810
#define SQ_ALU_WORD0_LAST_SHIFT 31
812
#define SQ_ALU_WORD0_SRC0_SEL_MASK 0x000001ff
813
#define SQ_ALU_WORD0_SRC0_REL_MASK 0x00000200
814
#define SQ_ALU_WORD0_SRC0_CHAN_MASK 0x00000c00
815
#define SQ_ALU_WORD0_SRC0_NEG_MASK 0x00001000
816
#define SQ_ALU_WORD0_SRC1_SEL_MASK 0x003fe000
817
#define SQ_ALU_WORD0_SRC1_REL_MASK 0x00400000
818
#define SQ_ALU_WORD0_SRC1_CHAN_MASK 0x01800000
819
#define SQ_ALU_WORD0_SRC1_NEG_MASK 0x02000000
820
#define SQ_ALU_WORD0_INDEX_MODE_MASK 0x1c000000
821
#define SQ_ALU_WORD0_PRED_SEL_MASK 0x60000000
822
#define SQ_ALU_WORD0_LAST_MASK 0x80000000
824
#define SQ_ALU_WORD0_MASK \
825
(SQ_ALU_WORD0_SRC0_SEL_MASK | \
826
SQ_ALU_WORD0_SRC0_REL_MASK | \
827
SQ_ALU_WORD0_SRC0_CHAN_MASK | \
828
SQ_ALU_WORD0_SRC0_NEG_MASK | \
829
SQ_ALU_WORD0_SRC1_SEL_MASK | \
830
SQ_ALU_WORD0_SRC1_REL_MASK | \
831
SQ_ALU_WORD0_SRC1_CHAN_MASK | \
832
SQ_ALU_WORD0_SRC1_NEG_MASK | \
833
SQ_ALU_WORD0_INDEX_MODE_MASK | \
834
SQ_ALU_WORD0_PRED_SEL_MASK | \
835
SQ_ALU_WORD0_LAST_MASK)
837
#define SQ_ALU_WORD0_DEFAULT 0xcdcdcdcd
839
#define SQ_ALU_WORD0_GET_SRC0_SEL(sq_alu_word0) \
840
((sq_alu_word0 & SQ_ALU_WORD0_SRC0_SEL_MASK) >> SQ_ALU_WORD0_SRC0_SEL_SHIFT)
841
#define SQ_ALU_WORD0_GET_SRC0_REL(sq_alu_word0) \
842
((sq_alu_word0 & SQ_ALU_WORD0_SRC0_REL_MASK) >> SQ_ALU_WORD0_SRC0_REL_SHIFT)
843
#define SQ_ALU_WORD0_GET_SRC0_CHAN(sq_alu_word0) \
844
((sq_alu_word0 & SQ_ALU_WORD0_SRC0_CHAN_MASK) >> SQ_ALU_WORD0_SRC0_CHAN_SHIFT)
845
#define SQ_ALU_WORD0_GET_SRC0_NEG(sq_alu_word0) \
846
((sq_alu_word0 & SQ_ALU_WORD0_SRC0_NEG_MASK) >> SQ_ALU_WORD0_SRC0_NEG_SHIFT)
847
#define SQ_ALU_WORD0_GET_SRC1_SEL(sq_alu_word0) \
848
((sq_alu_word0 & SQ_ALU_WORD0_SRC1_SEL_MASK) >> SQ_ALU_WORD0_SRC1_SEL_SHIFT)
849
#define SQ_ALU_WORD0_GET_SRC1_REL(sq_alu_word0) \
850
((sq_alu_word0 & SQ_ALU_WORD0_SRC1_REL_MASK) >> SQ_ALU_WORD0_SRC1_REL_SHIFT)
851
#define SQ_ALU_WORD0_GET_SRC1_CHAN(sq_alu_word0) \
852
((sq_alu_word0 & SQ_ALU_WORD0_SRC1_CHAN_MASK) >> SQ_ALU_WORD0_SRC1_CHAN_SHIFT)
853
#define SQ_ALU_WORD0_GET_SRC1_NEG(sq_alu_word0) \
854
((sq_alu_word0 & SQ_ALU_WORD0_SRC1_NEG_MASK) >> SQ_ALU_WORD0_SRC1_NEG_SHIFT)
855
#define SQ_ALU_WORD0_GET_INDEX_MODE(sq_alu_word0) \
856
((sq_alu_word0 & SQ_ALU_WORD0_INDEX_MODE_MASK) >> SQ_ALU_WORD0_INDEX_MODE_SHIFT)
857
#define SQ_ALU_WORD0_GET_PRED_SEL(sq_alu_word0) \
858
((sq_alu_word0 & SQ_ALU_WORD0_PRED_SEL_MASK) >> SQ_ALU_WORD0_PRED_SEL_SHIFT)
859
#define SQ_ALU_WORD0_GET_LAST(sq_alu_word0) \
860
((sq_alu_word0 & SQ_ALU_WORD0_LAST_MASK) >> SQ_ALU_WORD0_LAST_SHIFT)
862
#define SQ_ALU_WORD0_SET_SRC0_SEL(sq_alu_word0_reg, src0_sel) \
863
sq_alu_word0_reg = (sq_alu_word0_reg & ~SQ_ALU_WORD0_SRC0_SEL_MASK) | (src0_sel << SQ_ALU_WORD0_SRC0_SEL_SHIFT)
864
#define SQ_ALU_WORD0_SET_SRC0_REL(sq_alu_word0_reg, src0_rel) \
865
sq_alu_word0_reg = (sq_alu_word0_reg & ~SQ_ALU_WORD0_SRC0_REL_MASK) | (src0_rel << SQ_ALU_WORD0_SRC0_REL_SHIFT)
866
#define SQ_ALU_WORD0_SET_SRC0_CHAN(sq_alu_word0_reg, src0_chan) \
867
sq_alu_word0_reg = (sq_alu_word0_reg & ~SQ_ALU_WORD0_SRC0_CHAN_MASK) | (src0_chan << SQ_ALU_WORD0_SRC0_CHAN_SHIFT)
868
#define SQ_ALU_WORD0_SET_SRC0_NEG(sq_alu_word0_reg, src0_neg) \
869
sq_alu_word0_reg = (sq_alu_word0_reg & ~SQ_ALU_WORD0_SRC0_NEG_MASK) | (src0_neg << SQ_ALU_WORD0_SRC0_NEG_SHIFT)
870
#define SQ_ALU_WORD0_SET_SRC1_SEL(sq_alu_word0_reg, src1_sel) \
871
sq_alu_word0_reg = (sq_alu_word0_reg & ~SQ_ALU_WORD0_SRC1_SEL_MASK) | (src1_sel << SQ_ALU_WORD0_SRC1_SEL_SHIFT)
872
#define SQ_ALU_WORD0_SET_SRC1_REL(sq_alu_word0_reg, src1_rel) \
873
sq_alu_word0_reg = (sq_alu_word0_reg & ~SQ_ALU_WORD0_SRC1_REL_MASK) | (src1_rel << SQ_ALU_WORD0_SRC1_REL_SHIFT)
874
#define SQ_ALU_WORD0_SET_SRC1_CHAN(sq_alu_word0_reg, src1_chan) \
875
sq_alu_word0_reg = (sq_alu_word0_reg & ~SQ_ALU_WORD0_SRC1_CHAN_MASK) | (src1_chan << SQ_ALU_WORD0_SRC1_CHAN_SHIFT)
876
#define SQ_ALU_WORD0_SET_SRC1_NEG(sq_alu_word0_reg, src1_neg) \
877
sq_alu_word0_reg = (sq_alu_word0_reg & ~SQ_ALU_WORD0_SRC1_NEG_MASK) | (src1_neg << SQ_ALU_WORD0_SRC1_NEG_SHIFT)
878
#define SQ_ALU_WORD0_SET_INDEX_MODE(sq_alu_word0_reg, index_mode) \
879
sq_alu_word0_reg = (sq_alu_word0_reg & ~SQ_ALU_WORD0_INDEX_MODE_MASK) | (index_mode << SQ_ALU_WORD0_INDEX_MODE_SHIFT)
880
#define SQ_ALU_WORD0_SET_PRED_SEL(sq_alu_word0_reg, pred_sel) \
881
sq_alu_word0_reg = (sq_alu_word0_reg & ~SQ_ALU_WORD0_PRED_SEL_MASK) | (pred_sel << SQ_ALU_WORD0_PRED_SEL_SHIFT)
882
#define SQ_ALU_WORD0_SET_LAST(sq_alu_word0_reg, last) \
883
sq_alu_word0_reg = (sq_alu_word0_reg & ~SQ_ALU_WORD0_LAST_MASK) | (last << SQ_ALU_WORD0_LAST_SHIFT)
885
#if defined(LITTLEENDIAN_CPU)
887
typedef struct _sq_alu_word0_t {
888
unsigned int src0_sel : SQ_ALU_WORD0_SRC0_SEL_SIZE;
889
unsigned int src0_rel : SQ_ALU_WORD0_SRC0_REL_SIZE;
890
unsigned int src0_chan : SQ_ALU_WORD0_SRC0_CHAN_SIZE;
891
unsigned int src0_neg : SQ_ALU_WORD0_SRC0_NEG_SIZE;
892
unsigned int src1_sel : SQ_ALU_WORD0_SRC1_SEL_SIZE;
893
unsigned int src1_rel : SQ_ALU_WORD0_SRC1_REL_SIZE;
894
unsigned int src1_chan : SQ_ALU_WORD0_SRC1_CHAN_SIZE;
895
unsigned int src1_neg : SQ_ALU_WORD0_SRC1_NEG_SIZE;
896
unsigned int index_mode : SQ_ALU_WORD0_INDEX_MODE_SIZE;
897
unsigned int pred_sel : SQ_ALU_WORD0_PRED_SEL_SIZE;
898
unsigned int last : SQ_ALU_WORD0_LAST_SIZE;
901
#elif defined(BIGENDIAN_CPU)
903
typedef struct _sq_alu_word0_t {
904
unsigned int last : SQ_ALU_WORD0_LAST_SIZE;
905
unsigned int pred_sel : SQ_ALU_WORD0_PRED_SEL_SIZE;
906
unsigned int index_mode : SQ_ALU_WORD0_INDEX_MODE_SIZE;
907
unsigned int src1_neg : SQ_ALU_WORD0_SRC1_NEG_SIZE;
908
unsigned int src1_chan : SQ_ALU_WORD0_SRC1_CHAN_SIZE;
909
unsigned int src1_rel : SQ_ALU_WORD0_SRC1_REL_SIZE;
910
unsigned int src1_sel : SQ_ALU_WORD0_SRC1_SEL_SIZE;
911
unsigned int src0_neg : SQ_ALU_WORD0_SRC0_NEG_SIZE;
912
unsigned int src0_chan : SQ_ALU_WORD0_SRC0_CHAN_SIZE;
913
unsigned int src0_rel : SQ_ALU_WORD0_SRC0_REL_SIZE;
914
unsigned int src0_sel : SQ_ALU_WORD0_SRC0_SEL_SIZE;
920
unsigned int val : 32;
926
* SQ_ALU_WORD1 struct
929
#define SQ_ALU_WORD1_ENCODING_SIZE 3
930
#define SQ_ALU_WORD1_BANK_SWIZZLE_SIZE 3
931
#define SQ_ALU_WORD1_DST_GPR_SIZE 7
932
#define SQ_ALU_WORD1_DST_REL_SIZE 1
933
#define SQ_ALU_WORD1_DST_CHAN_SIZE 2
934
#define SQ_ALU_WORD1_CLAMP_SIZE 1
936
#define SQ_ALU_WORD1_ENCODING_SHIFT 15
937
#define SQ_ALU_WORD1_BANK_SWIZZLE_SHIFT 18
938
#define SQ_ALU_WORD1_DST_GPR_SHIFT 21
939
#define SQ_ALU_WORD1_DST_REL_SHIFT 28
940
#define SQ_ALU_WORD1_DST_CHAN_SHIFT 29
941
#define SQ_ALU_WORD1_CLAMP_SHIFT 31
943
#define SQ_ALU_WORD1_ENCODING_MASK 0x00038000
944
#define SQ_ALU_WORD1_BANK_SWIZZLE_MASK 0x001c0000
945
#define SQ_ALU_WORD1_DST_GPR_MASK 0x0fe00000
946
#define SQ_ALU_WORD1_DST_REL_MASK 0x10000000
947
#define SQ_ALU_WORD1_DST_CHAN_MASK 0x60000000
948
#define SQ_ALU_WORD1_CLAMP_MASK 0x80000000
950
#define SQ_ALU_WORD1_MASK \
951
(SQ_ALU_WORD1_ENCODING_MASK | \
952
SQ_ALU_WORD1_BANK_SWIZZLE_MASK | \
953
SQ_ALU_WORD1_DST_GPR_MASK | \
954
SQ_ALU_WORD1_DST_REL_MASK | \
955
SQ_ALU_WORD1_DST_CHAN_MASK | \
956
SQ_ALU_WORD1_CLAMP_MASK)
958
#define SQ_ALU_WORD1_DEFAULT 0xcdcd8000
960
#define SQ_ALU_WORD1_GET_ENCODING(sq_alu_word1) \
961
((sq_alu_word1 & SQ_ALU_WORD1_ENCODING_MASK) >> SQ_ALU_WORD1_ENCODING_SHIFT)
962
#define SQ_ALU_WORD1_GET_BANK_SWIZZLE(sq_alu_word1) \
963
((sq_alu_word1 & SQ_ALU_WORD1_BANK_SWIZZLE_MASK) >> SQ_ALU_WORD1_BANK_SWIZZLE_SHIFT)
964
#define SQ_ALU_WORD1_GET_DST_GPR(sq_alu_word1) \
965
((sq_alu_word1 & SQ_ALU_WORD1_DST_GPR_MASK) >> SQ_ALU_WORD1_DST_GPR_SHIFT)
966
#define SQ_ALU_WORD1_GET_DST_REL(sq_alu_word1) \
967
((sq_alu_word1 & SQ_ALU_WORD1_DST_REL_MASK) >> SQ_ALU_WORD1_DST_REL_SHIFT)
968
#define SQ_ALU_WORD1_GET_DST_CHAN(sq_alu_word1) \
969
((sq_alu_word1 & SQ_ALU_WORD1_DST_CHAN_MASK) >> SQ_ALU_WORD1_DST_CHAN_SHIFT)
970
#define SQ_ALU_WORD1_GET_CLAMP(sq_alu_word1) \
971
((sq_alu_word1 & SQ_ALU_WORD1_CLAMP_MASK) >> SQ_ALU_WORD1_CLAMP_SHIFT)
973
#define SQ_ALU_WORD1_SET_ENCODING(sq_alu_word1_reg, encoding) \
974
sq_alu_word1_reg = (sq_alu_word1_reg & ~SQ_ALU_WORD1_ENCODING_MASK) | (encoding << SQ_ALU_WORD1_ENCODING_SHIFT)
975
#define SQ_ALU_WORD1_SET_BANK_SWIZZLE(sq_alu_word1_reg, bank_swizzle) \
976
sq_alu_word1_reg = (sq_alu_word1_reg & ~SQ_ALU_WORD1_BANK_SWIZZLE_MASK) | (bank_swizzle << SQ_ALU_WORD1_BANK_SWIZZLE_SHIFT)
977
#define SQ_ALU_WORD1_SET_DST_GPR(sq_alu_word1_reg, dst_gpr) \
978
sq_alu_word1_reg = (sq_alu_word1_reg & ~SQ_ALU_WORD1_DST_GPR_MASK) | (dst_gpr << SQ_ALU_WORD1_DST_GPR_SHIFT)
979
#define SQ_ALU_WORD1_SET_DST_REL(sq_alu_word1_reg, dst_rel) \
980
sq_alu_word1_reg = (sq_alu_word1_reg & ~SQ_ALU_WORD1_DST_REL_MASK) | (dst_rel << SQ_ALU_WORD1_DST_REL_SHIFT)
981
#define SQ_ALU_WORD1_SET_DST_CHAN(sq_alu_word1_reg, dst_chan) \
982
sq_alu_word1_reg = (sq_alu_word1_reg & ~SQ_ALU_WORD1_DST_CHAN_MASK) | (dst_chan << SQ_ALU_WORD1_DST_CHAN_SHIFT)
983
#define SQ_ALU_WORD1_SET_CLAMP(sq_alu_word1_reg, clamp) \
984
sq_alu_word1_reg = (sq_alu_word1_reg & ~SQ_ALU_WORD1_CLAMP_MASK) | (clamp << SQ_ALU_WORD1_CLAMP_SHIFT)
986
#if defined(LITTLEENDIAN_CPU)
988
typedef struct _sq_alu_word1_t {
990
unsigned int encoding : SQ_ALU_WORD1_ENCODING_SIZE;
991
unsigned int bank_swizzle : SQ_ALU_WORD1_BANK_SWIZZLE_SIZE;
992
unsigned int dst_gpr : SQ_ALU_WORD1_DST_GPR_SIZE;
993
unsigned int dst_rel : SQ_ALU_WORD1_DST_REL_SIZE;
994
unsigned int dst_chan : SQ_ALU_WORD1_DST_CHAN_SIZE;
995
unsigned int clamp : SQ_ALU_WORD1_CLAMP_SIZE;
998
#elif defined(BIGENDIAN_CPU)
1000
typedef struct _sq_alu_word1_t {
1001
unsigned int clamp : SQ_ALU_WORD1_CLAMP_SIZE;
1002
unsigned int dst_chan : SQ_ALU_WORD1_DST_CHAN_SIZE;
1003
unsigned int dst_rel : SQ_ALU_WORD1_DST_REL_SIZE;
1004
unsigned int dst_gpr : SQ_ALU_WORD1_DST_GPR_SIZE;
1005
unsigned int bank_swizzle : SQ_ALU_WORD1_BANK_SWIZZLE_SIZE;
1006
unsigned int encoding : SQ_ALU_WORD1_ENCODING_SIZE;
1013
unsigned int val : 32;
1019
* SQ_ALU_WORD1_OP2_V2 struct
1022
#define SQ_ALU_WORD1_OP2_V2_SRC0_ABS_SIZE 1
1023
#define SQ_ALU_WORD1_OP2_V2_SRC1_ABS_SIZE 1
1024
#define SQ_ALU_WORD1_OP2_V2_UPDATE_EXECUTE_MASK_SIZE 1
1025
#define SQ_ALU_WORD1_OP2_V2_UPDATE_PRED_SIZE 1
1026
#define SQ_ALU_WORD1_OP2_V2_WRITE_MASK_SIZE 1
1027
#define SQ_ALU_WORD1_OP2_V2_OMOD_SIZE 2
1028
#define SQ_ALU_WORD1_OP2_V2_ALU_INST_SIZE 11
1030
#define SQ_ALU_WORD1_OP2_V2_SRC0_ABS_SHIFT 0
1031
#define SQ_ALU_WORD1_OP2_V2_SRC1_ABS_SHIFT 1
1032
#define SQ_ALU_WORD1_OP2_V2_UPDATE_EXECUTE_MASK_SHIFT 2
1033
#define SQ_ALU_WORD1_OP2_V2_UPDATE_PRED_SHIFT 3
1034
#define SQ_ALU_WORD1_OP2_V2_WRITE_MASK_SHIFT 4
1035
#define SQ_ALU_WORD1_OP2_V2_OMOD_SHIFT 5
1036
#define SQ_ALU_WORD1_OP2_V2_ALU_INST_SHIFT 7
1038
#define SQ_ALU_WORD1_OP2_V2_SRC0_ABS_MASK 0x00000001
1039
#define SQ_ALU_WORD1_OP2_V2_SRC1_ABS_MASK 0x00000002
1040
#define SQ_ALU_WORD1_OP2_V2_UPDATE_EXECUTE_MASK_MASK 0x00000004
1041
#define SQ_ALU_WORD1_OP2_V2_UPDATE_PRED_MASK 0x00000008
1042
#define SQ_ALU_WORD1_OP2_V2_WRITE_MASK_MASK 0x00000010
1043
#define SQ_ALU_WORD1_OP2_V2_OMOD_MASK 0x00000060
1044
#define SQ_ALU_WORD1_OP2_V2_ALU_INST_MASK 0x0003ff80
1046
#define SQ_ALU_WORD1_OP2_V2_MASK \
1047
(SQ_ALU_WORD1_OP2_V2_SRC0_ABS_MASK | \
1048
SQ_ALU_WORD1_OP2_V2_SRC1_ABS_MASK | \
1049
SQ_ALU_WORD1_OP2_V2_UPDATE_EXECUTE_MASK_MASK | \
1050
SQ_ALU_WORD1_OP2_V2_UPDATE_PRED_MASK | \
1051
SQ_ALU_WORD1_OP2_V2_WRITE_MASK_MASK | \
1052
SQ_ALU_WORD1_OP2_V2_OMOD_MASK | \
1053
SQ_ALU_WORD1_OP2_V2_ALU_INST_MASK)
1055
#define SQ_ALU_WORD1_OP2_V2_DEFAULT 0x0001cdcd
1057
#define SQ_ALU_WORD1_OP2_V2_GET_SRC0_ABS(sq_alu_word1_op2_v2) \
1058
((sq_alu_word1_op2_v2 & SQ_ALU_WORD1_OP2_V2_SRC0_ABS_MASK) >> SQ_ALU_WORD1_OP2_V2_SRC0_ABS_SHIFT)
1059
#define SQ_ALU_WORD1_OP2_V2_GET_SRC1_ABS(sq_alu_word1_op2_v2) \
1060
((sq_alu_word1_op2_v2 & SQ_ALU_WORD1_OP2_V2_SRC1_ABS_MASK) >> SQ_ALU_WORD1_OP2_V2_SRC1_ABS_SHIFT)
1061
#define SQ_ALU_WORD1_OP2_V2_GET_UPDATE_EXECUTE_MASK(sq_alu_word1_op2_v2) \
1062
((sq_alu_word1_op2_v2 & SQ_ALU_WORD1_OP2_V2_UPDATE_EXECUTE_MASK_MASK) >> SQ_ALU_WORD1_OP2_V2_UPDATE_EXECUTE_MASK_SHIFT)
1063
#define SQ_ALU_WORD1_OP2_V2_GET_UPDATE_PRED(sq_alu_word1_op2_v2) \
1064
((sq_alu_word1_op2_v2 & SQ_ALU_WORD1_OP2_V2_UPDATE_PRED_MASK) >> SQ_ALU_WORD1_OP2_V2_UPDATE_PRED_SHIFT)
1065
#define SQ_ALU_WORD1_OP2_V2_GET_WRITE_MASK(sq_alu_word1_op2_v2) \
1066
((sq_alu_word1_op2_v2 & SQ_ALU_WORD1_OP2_V2_WRITE_MASK_MASK) >> SQ_ALU_WORD1_OP2_V2_WRITE_MASK_SHIFT)
1067
#define SQ_ALU_WORD1_OP2_V2_GET_OMOD(sq_alu_word1_op2_v2) \
1068
((sq_alu_word1_op2_v2 & SQ_ALU_WORD1_OP2_V2_OMOD_MASK) >> SQ_ALU_WORD1_OP2_V2_OMOD_SHIFT)
1069
#define SQ_ALU_WORD1_OP2_V2_GET_ALU_INST(sq_alu_word1_op2_v2) \
1070
((sq_alu_word1_op2_v2 & SQ_ALU_WORD1_OP2_V2_ALU_INST_MASK) >> SQ_ALU_WORD1_OP2_V2_ALU_INST_SHIFT)
1072
#define SQ_ALU_WORD1_OP2_V2_SET_SRC0_ABS(sq_alu_word1_op2_v2_reg, src0_abs) \
1073
sq_alu_word1_op2_v2_reg = (sq_alu_word1_op2_v2_reg & ~SQ_ALU_WORD1_OP2_V2_SRC0_ABS_MASK) | (src0_abs << SQ_ALU_WORD1_OP2_V2_SRC0_ABS_SHIFT)
1074
#define SQ_ALU_WORD1_OP2_V2_SET_SRC1_ABS(sq_alu_word1_op2_v2_reg, src1_abs) \
1075
sq_alu_word1_op2_v2_reg = (sq_alu_word1_op2_v2_reg & ~SQ_ALU_WORD1_OP2_V2_SRC1_ABS_MASK) | (src1_abs << SQ_ALU_WORD1_OP2_V2_SRC1_ABS_SHIFT)
1076
#define SQ_ALU_WORD1_OP2_V2_SET_UPDATE_EXECUTE_MASK(sq_alu_word1_op2_v2_reg, update_execute_mask) \
1077
sq_alu_word1_op2_v2_reg = (sq_alu_word1_op2_v2_reg & ~SQ_ALU_WORD1_OP2_V2_UPDATE_EXECUTE_MASK_MASK) | (update_execute_mask << SQ_ALU_WORD1_OP2_V2_UPDATE_EXECUTE_MASK_SHIFT)
1078
#define SQ_ALU_WORD1_OP2_V2_SET_UPDATE_PRED(sq_alu_word1_op2_v2_reg, update_pred) \
1079
sq_alu_word1_op2_v2_reg = (sq_alu_word1_op2_v2_reg & ~SQ_ALU_WORD1_OP2_V2_UPDATE_PRED_MASK) | (update_pred << SQ_ALU_WORD1_OP2_V2_UPDATE_PRED_SHIFT)
1080
#define SQ_ALU_WORD1_OP2_V2_SET_WRITE_MASK(sq_alu_word1_op2_v2_reg, write_mask) \
1081
sq_alu_word1_op2_v2_reg = (sq_alu_word1_op2_v2_reg & ~SQ_ALU_WORD1_OP2_V2_WRITE_MASK_MASK) | (write_mask << SQ_ALU_WORD1_OP2_V2_WRITE_MASK_SHIFT)
1082
#define SQ_ALU_WORD1_OP2_V2_SET_OMOD(sq_alu_word1_op2_v2_reg, omod) \
1083
sq_alu_word1_op2_v2_reg = (sq_alu_word1_op2_v2_reg & ~SQ_ALU_WORD1_OP2_V2_OMOD_MASK) | (omod << SQ_ALU_WORD1_OP2_V2_OMOD_SHIFT)
1084
#define SQ_ALU_WORD1_OP2_V2_SET_ALU_INST(sq_alu_word1_op2_v2_reg, alu_inst) \
1085
sq_alu_word1_op2_v2_reg = (sq_alu_word1_op2_v2_reg & ~SQ_ALU_WORD1_OP2_V2_ALU_INST_MASK) | (alu_inst << SQ_ALU_WORD1_OP2_V2_ALU_INST_SHIFT)
1087
#if defined(LITTLEENDIAN_CPU)
1089
typedef struct _sq_alu_word1_op2_v2_t {
1090
unsigned int src0_abs : SQ_ALU_WORD1_OP2_V2_SRC0_ABS_SIZE;
1091
unsigned int src1_abs : SQ_ALU_WORD1_OP2_V2_SRC1_ABS_SIZE;
1092
unsigned int update_execute_mask : SQ_ALU_WORD1_OP2_V2_UPDATE_EXECUTE_MASK_SIZE;
1093
unsigned int update_pred : SQ_ALU_WORD1_OP2_V2_UPDATE_PRED_SIZE;
1094
unsigned int write_mask : SQ_ALU_WORD1_OP2_V2_WRITE_MASK_SIZE;
1095
unsigned int omod : SQ_ALU_WORD1_OP2_V2_OMOD_SIZE;
1096
unsigned int alu_inst : SQ_ALU_WORD1_OP2_V2_ALU_INST_SIZE;
1098
} sq_alu_word1_op2_v2_t;
1100
#elif defined(BIGENDIAN_CPU)
1102
typedef struct _sq_alu_word1_op2_v2_t {
1104
unsigned int alu_inst : SQ_ALU_WORD1_OP2_V2_ALU_INST_SIZE;
1105
unsigned int omod : SQ_ALU_WORD1_OP2_V2_OMOD_SIZE;
1106
unsigned int write_mask : SQ_ALU_WORD1_OP2_V2_WRITE_MASK_SIZE;
1107
unsigned int update_pred : SQ_ALU_WORD1_OP2_V2_UPDATE_PRED_SIZE;
1108
unsigned int update_execute_mask : SQ_ALU_WORD1_OP2_V2_UPDATE_EXECUTE_MASK_SIZE;
1109
unsigned int src1_abs : SQ_ALU_WORD1_OP2_V2_SRC1_ABS_SIZE;
1110
unsigned int src0_abs : SQ_ALU_WORD1_OP2_V2_SRC0_ABS_SIZE;
1111
} sq_alu_word1_op2_v2_t;
1115
#if defined(LITTLEENDIAN_CPU)
1117
typedef struct _sq_alu_word1_op2_r6xx_t {
1118
unsigned int src0_abs : SQ_ALU_WORD1_OP2_V2_SRC0_ABS_SIZE;
1119
unsigned int src1_abs : SQ_ALU_WORD1_OP2_V2_SRC1_ABS_SIZE;
1120
unsigned int update_execute_mask : SQ_ALU_WORD1_OP2_V2_UPDATE_EXECUTE_MASK_SIZE;
1121
unsigned int update_pred : SQ_ALU_WORD1_OP2_V2_UPDATE_PRED_SIZE;
1122
unsigned int write_mask : SQ_ALU_WORD1_OP2_V2_WRITE_MASK_SIZE;
1123
unsigned int fog_export : 1;
1124
unsigned int omod : SQ_ALU_WORD1_OP2_V2_OMOD_SIZE;
1125
unsigned int alu_inst : 10;
1127
} sq_alu_word1_op2_v1_t;
1129
#elif defined(BIGENDIAN_CPU)
1131
typedef struct _sq_alu_word1_op2_r6xx_t {
1133
unsigned int alu_inst : 10;
1134
unsigned int omod : SQ_ALU_WORD1_OP2_V2_OMOD_SIZE;
1135
unsigned int fog_export : 1;
1136
unsigned int write_mask : SQ_ALU_WORD1_OP2_V2_WRITE_MASK_SIZE;
1137
unsigned int update_pred : SQ_ALU_WORD1_OP2_V2_UPDATE_PRED_SIZE;
1138
unsigned int update_execute_mask : SQ_ALU_WORD1_OP2_V2_UPDATE_EXECUTE_MASK_SIZE;
1139
unsigned int src1_abs : SQ_ALU_WORD1_OP2_V2_SRC1_ABS_SIZE;
1140
unsigned int src0_abs : SQ_ALU_WORD1_OP2_V2_SRC0_ABS_SIZE;
1141
} sq_alu_word1_op2_v1_t;
1146
unsigned int val : 32;
1147
sq_alu_word1_op2_v2_t f;
1148
sq_alu_word1_op2_v1_t f6;
1149
} sq_alu_word1_op2_v2_u;
1153
* SQ_ALU_WORD1_OP3 struct
1156
#define SQ_ALU_WORD1_OP3_SRC2_SEL_SIZE 9
1157
#define SQ_ALU_WORD1_OP3_SRC2_REL_SIZE 1
1158
#define SQ_ALU_WORD1_OP3_SRC2_CHAN_SIZE 2
1159
#define SQ_ALU_WORD1_OP3_SRC2_NEG_SIZE 1
1160
#define SQ_ALU_WORD1_OP3_ALU_INST_SIZE 5
1162
#define SQ_ALU_WORD1_OP3_SRC2_SEL_SHIFT 0
1163
#define SQ_ALU_WORD1_OP3_SRC2_REL_SHIFT 9
1164
#define SQ_ALU_WORD1_OP3_SRC2_CHAN_SHIFT 10
1165
#define SQ_ALU_WORD1_OP3_SRC2_NEG_SHIFT 12
1166
#define SQ_ALU_WORD1_OP3_ALU_INST_SHIFT 13
1168
#define SQ_ALU_WORD1_OP3_SRC2_SEL_MASK 0x000001ff
1169
#define SQ_ALU_WORD1_OP3_SRC2_REL_MASK 0x00000200
1170
#define SQ_ALU_WORD1_OP3_SRC2_CHAN_MASK 0x00000c00
1171
#define SQ_ALU_WORD1_OP3_SRC2_NEG_MASK 0x00001000
1172
#define SQ_ALU_WORD1_OP3_ALU_INST_MASK 0x0003e000
1174
#define SQ_ALU_WORD1_OP3_MASK \
1175
(SQ_ALU_WORD1_OP3_SRC2_SEL_MASK | \
1176
SQ_ALU_WORD1_OP3_SRC2_REL_MASK | \
1177
SQ_ALU_WORD1_OP3_SRC2_CHAN_MASK | \
1178
SQ_ALU_WORD1_OP3_SRC2_NEG_MASK | \
1179
SQ_ALU_WORD1_OP3_ALU_INST_MASK)
1181
#define SQ_ALU_WORD1_OP3_DEFAULT 0x0001cdcd
1183
#define SQ_ALU_WORD1_OP3_GET_SRC2_SEL(sq_alu_word1_op3) \
1184
((sq_alu_word1_op3 & SQ_ALU_WORD1_OP3_SRC2_SEL_MASK) >> SQ_ALU_WORD1_OP3_SRC2_SEL_SHIFT)
1185
#define SQ_ALU_WORD1_OP3_GET_SRC2_REL(sq_alu_word1_op3) \
1186
((sq_alu_word1_op3 & SQ_ALU_WORD1_OP3_SRC2_REL_MASK) >> SQ_ALU_WORD1_OP3_SRC2_REL_SHIFT)
1187
#define SQ_ALU_WORD1_OP3_GET_SRC2_CHAN(sq_alu_word1_op3) \
1188
((sq_alu_word1_op3 & SQ_ALU_WORD1_OP3_SRC2_CHAN_MASK) >> SQ_ALU_WORD1_OP3_SRC2_CHAN_SHIFT)
1189
#define SQ_ALU_WORD1_OP3_GET_SRC2_NEG(sq_alu_word1_op3) \
1190
((sq_alu_word1_op3 & SQ_ALU_WORD1_OP3_SRC2_NEG_MASK) >> SQ_ALU_WORD1_OP3_SRC2_NEG_SHIFT)
1191
#define SQ_ALU_WORD1_OP3_GET_ALU_INST(sq_alu_word1_op3) \
1192
((sq_alu_word1_op3 & SQ_ALU_WORD1_OP3_ALU_INST_MASK) >> SQ_ALU_WORD1_OP3_ALU_INST_SHIFT)
1194
#define SQ_ALU_WORD1_OP3_SET_SRC2_SEL(sq_alu_word1_op3_reg, src2_sel) \
1195
sq_alu_word1_op3_reg = (sq_alu_word1_op3_reg & ~SQ_ALU_WORD1_OP3_SRC2_SEL_MASK) | (src2_sel << SQ_ALU_WORD1_OP3_SRC2_SEL_SHIFT)
1196
#define SQ_ALU_WORD1_OP3_SET_SRC2_REL(sq_alu_word1_op3_reg, src2_rel) \
1197
sq_alu_word1_op3_reg = (sq_alu_word1_op3_reg & ~SQ_ALU_WORD1_OP3_SRC2_REL_MASK) | (src2_rel << SQ_ALU_WORD1_OP3_SRC2_REL_SHIFT)
1198
#define SQ_ALU_WORD1_OP3_SET_SRC2_CHAN(sq_alu_word1_op3_reg, src2_chan) \
1199
sq_alu_word1_op3_reg = (sq_alu_word1_op3_reg & ~SQ_ALU_WORD1_OP3_SRC2_CHAN_MASK) | (src2_chan << SQ_ALU_WORD1_OP3_SRC2_CHAN_SHIFT)
1200
#define SQ_ALU_WORD1_OP3_SET_SRC2_NEG(sq_alu_word1_op3_reg, src2_neg) \
1201
sq_alu_word1_op3_reg = (sq_alu_word1_op3_reg & ~SQ_ALU_WORD1_OP3_SRC2_NEG_MASK) | (src2_neg << SQ_ALU_WORD1_OP3_SRC2_NEG_SHIFT)
1202
#define SQ_ALU_WORD1_OP3_SET_ALU_INST(sq_alu_word1_op3_reg, alu_inst) \
1203
sq_alu_word1_op3_reg = (sq_alu_word1_op3_reg & ~SQ_ALU_WORD1_OP3_ALU_INST_MASK) | (alu_inst << SQ_ALU_WORD1_OP3_ALU_INST_SHIFT)
1205
#if defined(LITTLEENDIAN_CPU)
1207
typedef struct _sq_alu_word1_op3_t {
1208
unsigned int src2_sel : SQ_ALU_WORD1_OP3_SRC2_SEL_SIZE;
1209
unsigned int src2_rel : SQ_ALU_WORD1_OP3_SRC2_REL_SIZE;
1210
unsigned int src2_chan : SQ_ALU_WORD1_OP3_SRC2_CHAN_SIZE;
1211
unsigned int src2_neg : SQ_ALU_WORD1_OP3_SRC2_NEG_SIZE;
1212
unsigned int alu_inst : SQ_ALU_WORD1_OP3_ALU_INST_SIZE;
1214
} sq_alu_word1_op3_t;
1216
#elif defined(BIGENDIAN_CPU)
1218
typedef struct _sq_alu_word1_op3_t {
1220
unsigned int alu_inst : SQ_ALU_WORD1_OP3_ALU_INST_SIZE;
1221
unsigned int src2_neg : SQ_ALU_WORD1_OP3_SRC2_NEG_SIZE;
1222
unsigned int src2_chan : SQ_ALU_WORD1_OP3_SRC2_CHAN_SIZE;
1223
unsigned int src2_rel : SQ_ALU_WORD1_OP3_SRC2_REL_SIZE;
1224
unsigned int src2_sel : SQ_ALU_WORD1_OP3_SRC2_SEL_SIZE;
1225
} sq_alu_word1_op3_t;
1230
unsigned int val : 32;
1231
sq_alu_word1_op3_t f;
1232
} sq_alu_word1_op3_u;
1236
* SQ_TEX_WORD0 struct
1239
#define SQ_TEX_WORD0_TEX_INST_SIZE 5
1240
#define SQ_TEX_WORD0_BC_FRAC_MODE_SIZE 1
1241
#define SQ_TEX_WORD0_FETCH_WHOLE_QUAD_SIZE 1
1242
#define SQ_TEX_WORD0_RESOURCE_ID_SIZE 8
1243
#define SQ_TEX_WORD0_SRC_GPR_SIZE 7
1244
#define SQ_TEX_WORD0_SRC_REL_SIZE 1
1245
#define SQ_TEX_WORD0_ALT_CONST_SIZE 1
1247
#define SQ_TEX_WORD0_TEX_INST_SHIFT 0
1248
#define SQ_TEX_WORD0_BC_FRAC_MODE_SHIFT 5
1249
#define SQ_TEX_WORD0_FETCH_WHOLE_QUAD_SHIFT 7
1250
#define SQ_TEX_WORD0_RESOURCE_ID_SHIFT 8
1251
#define SQ_TEX_WORD0_SRC_GPR_SHIFT 16
1252
#define SQ_TEX_WORD0_SRC_REL_SHIFT 23
1253
#define SQ_TEX_WORD0_ALT_CONST_SHIFT 24
1255
#define SQ_TEX_WORD0_TEX_INST_MASK 0x0000001f
1256
#define SQ_TEX_WORD0_BC_FRAC_MODE_MASK 0x00000020
1257
#define SQ_TEX_WORD0_FETCH_WHOLE_QUAD_MASK 0x00000080
1258
#define SQ_TEX_WORD0_RESOURCE_ID_MASK 0x0000ff00
1259
#define SQ_TEX_WORD0_SRC_GPR_MASK 0x007f0000
1260
#define SQ_TEX_WORD0_SRC_REL_MASK 0x00800000
1261
#define SQ_TEX_WORD0_ALT_CONST_MASK 0x01000000
1263
#define SQ_TEX_WORD0_MASK \
1264
(SQ_TEX_WORD0_TEX_INST_MASK | \
1265
SQ_TEX_WORD0_BC_FRAC_MODE_MASK | \
1266
SQ_TEX_WORD0_FETCH_WHOLE_QUAD_MASK | \
1267
SQ_TEX_WORD0_RESOURCE_ID_MASK | \
1268
SQ_TEX_WORD0_SRC_GPR_MASK | \
1269
SQ_TEX_WORD0_SRC_REL_MASK | \
1270
SQ_TEX_WORD0_ALT_CONST_MASK)
1272
#define SQ_TEX_WORD0_DEFAULT 0x01cdcd8d
1274
#define SQ_TEX_WORD0_GET_TEX_INST(sq_tex_word0) \
1275
((sq_tex_word0 & SQ_TEX_WORD0_TEX_INST_MASK) >> SQ_TEX_WORD0_TEX_INST_SHIFT)
1276
#define SQ_TEX_WORD0_GET_BC_FRAC_MODE(sq_tex_word0) \
1277
((sq_tex_word0 & SQ_TEX_WORD0_BC_FRAC_MODE_MASK) >> SQ_TEX_WORD0_BC_FRAC_MODE_SHIFT)
1278
#define SQ_TEX_WORD0_GET_FETCH_WHOLE_QUAD(sq_tex_word0) \
1279
((sq_tex_word0 & SQ_TEX_WORD0_FETCH_WHOLE_QUAD_MASK) >> SQ_TEX_WORD0_FETCH_WHOLE_QUAD_SHIFT)
1280
#define SQ_TEX_WORD0_GET_RESOURCE_ID(sq_tex_word0) \
1281
((sq_tex_word0 & SQ_TEX_WORD0_RESOURCE_ID_MASK) >> SQ_TEX_WORD0_RESOURCE_ID_SHIFT)
1282
#define SQ_TEX_WORD0_GET_SRC_GPR(sq_tex_word0) \
1283
((sq_tex_word0 & SQ_TEX_WORD0_SRC_GPR_MASK) >> SQ_TEX_WORD0_SRC_GPR_SHIFT)
1284
#define SQ_TEX_WORD0_GET_SRC_REL(sq_tex_word0) \
1285
((sq_tex_word0 & SQ_TEX_WORD0_SRC_REL_MASK) >> SQ_TEX_WORD0_SRC_REL_SHIFT)
1286
#define SQ_TEX_WORD0_GET_ALT_CONST(sq_tex_word0) \
1287
((sq_tex_word0 & SQ_TEX_WORD0_ALT_CONST_MASK) >> SQ_TEX_WORD0_ALT_CONST_SHIFT)
1289
#define SQ_TEX_WORD0_SET_TEX_INST(sq_tex_word0_reg, tex_inst) \
1290
sq_tex_word0_reg = (sq_tex_word0_reg & ~SQ_TEX_WORD0_TEX_INST_MASK) | (tex_inst << SQ_TEX_WORD0_TEX_INST_SHIFT)
1291
#define SQ_TEX_WORD0_SET_BC_FRAC_MODE(sq_tex_word0_reg, bc_frac_mode) \
1292
sq_tex_word0_reg = (sq_tex_word0_reg & ~SQ_TEX_WORD0_BC_FRAC_MODE_MASK) | (bc_frac_mode << SQ_TEX_WORD0_BC_FRAC_MODE_SHIFT)
1293
#define SQ_TEX_WORD0_SET_FETCH_WHOLE_QUAD(sq_tex_word0_reg, fetch_whole_quad) \
1294
sq_tex_word0_reg = (sq_tex_word0_reg & ~SQ_TEX_WORD0_FETCH_WHOLE_QUAD_MASK) | (fetch_whole_quad << SQ_TEX_WORD0_FETCH_WHOLE_QUAD_SHIFT)
1295
#define SQ_TEX_WORD0_SET_RESOURCE_ID(sq_tex_word0_reg, resource_id) \
1296
sq_tex_word0_reg = (sq_tex_word0_reg & ~SQ_TEX_WORD0_RESOURCE_ID_MASK) | (resource_id << SQ_TEX_WORD0_RESOURCE_ID_SHIFT)
1297
#define SQ_TEX_WORD0_SET_SRC_GPR(sq_tex_word0_reg, src_gpr) \
1298
sq_tex_word0_reg = (sq_tex_word0_reg & ~SQ_TEX_WORD0_SRC_GPR_MASK) | (src_gpr << SQ_TEX_WORD0_SRC_GPR_SHIFT)
1299
#define SQ_TEX_WORD0_SET_SRC_REL(sq_tex_word0_reg, src_rel) \
1300
sq_tex_word0_reg = (sq_tex_word0_reg & ~SQ_TEX_WORD0_SRC_REL_MASK) | (src_rel << SQ_TEX_WORD0_SRC_REL_SHIFT)
1301
#define SQ_TEX_WORD0_SET_ALT_CONST(sq_tex_word0_reg, alt_const) \
1302
sq_tex_word0_reg = (sq_tex_word0_reg & ~SQ_TEX_WORD0_ALT_CONST_MASK) | (alt_const << SQ_TEX_WORD0_ALT_CONST_SHIFT)
1304
#if defined(LITTLEENDIAN_CPU)
1306
typedef struct _sq_tex_word0_t {
1307
unsigned int tex_inst : SQ_TEX_WORD0_TEX_INST_SIZE;
1308
unsigned int bc_frac_mode : SQ_TEX_WORD0_BC_FRAC_MODE_SIZE;
1310
unsigned int fetch_whole_quad : SQ_TEX_WORD0_FETCH_WHOLE_QUAD_SIZE;
1311
unsigned int resource_id : SQ_TEX_WORD0_RESOURCE_ID_SIZE;
1312
unsigned int src_gpr : SQ_TEX_WORD0_SRC_GPR_SIZE;
1313
unsigned int src_rel : SQ_TEX_WORD0_SRC_REL_SIZE;
1314
unsigned int alt_const : SQ_TEX_WORD0_ALT_CONST_SIZE;
1318
#elif defined(BIGENDIAN_CPU)
1320
typedef struct _sq_tex_word0_t {
1322
unsigned int alt_const : SQ_TEX_WORD0_ALT_CONST_SIZE;
1323
unsigned int src_rel : SQ_TEX_WORD0_SRC_REL_SIZE;
1324
unsigned int src_gpr : SQ_TEX_WORD0_SRC_GPR_SIZE;
1325
unsigned int resource_id : SQ_TEX_WORD0_RESOURCE_ID_SIZE;
1326
unsigned int fetch_whole_quad : SQ_TEX_WORD0_FETCH_WHOLE_QUAD_SIZE;
1328
unsigned int bc_frac_mode : SQ_TEX_WORD0_BC_FRAC_MODE_SIZE;
1329
unsigned int tex_inst : SQ_TEX_WORD0_TEX_INST_SIZE;
1335
unsigned int val : 32;
1341
* SQ_TEX_WORD1 struct
1344
#define SQ_TEX_WORD1_DST_GPR_SIZE 7
1345
#define SQ_TEX_WORD1_DST_REL_SIZE 1
1346
#define SQ_TEX_WORD1_DST_SEL_X_SIZE 3
1347
#define SQ_TEX_WORD1_DST_SEL_Y_SIZE 3
1348
#define SQ_TEX_WORD1_DST_SEL_Z_SIZE 3
1349
#define SQ_TEX_WORD1_DST_SEL_W_SIZE 3
1350
#define SQ_TEX_WORD1_LOD_BIAS_SIZE 7
1351
#define SQ_TEX_WORD1_COORD_TYPE_X_SIZE 1
1352
#define SQ_TEX_WORD1_COORD_TYPE_Y_SIZE 1
1353
#define SQ_TEX_WORD1_COORD_TYPE_Z_SIZE 1
1354
#define SQ_TEX_WORD1_COORD_TYPE_W_SIZE 1
1356
#define SQ_TEX_WORD1_DST_GPR_SHIFT 0
1357
#define SQ_TEX_WORD1_DST_REL_SHIFT 7
1358
#define SQ_TEX_WORD1_DST_SEL_X_SHIFT 9
1359
#define SQ_TEX_WORD1_DST_SEL_Y_SHIFT 12
1360
#define SQ_TEX_WORD1_DST_SEL_Z_SHIFT 15
1361
#define SQ_TEX_WORD1_DST_SEL_W_SHIFT 18
1362
#define SQ_TEX_WORD1_LOD_BIAS_SHIFT 21
1363
#define SQ_TEX_WORD1_COORD_TYPE_X_SHIFT 28
1364
#define SQ_TEX_WORD1_COORD_TYPE_Y_SHIFT 29
1365
#define SQ_TEX_WORD1_COORD_TYPE_Z_SHIFT 30
1366
#define SQ_TEX_WORD1_COORD_TYPE_W_SHIFT 31
1368
#define SQ_TEX_WORD1_DST_GPR_MASK 0x0000007f
1369
#define SQ_TEX_WORD1_DST_REL_MASK 0x00000080
1370
#define SQ_TEX_WORD1_DST_SEL_X_MASK 0x00000e00
1371
#define SQ_TEX_WORD1_DST_SEL_Y_MASK 0x00007000
1372
#define SQ_TEX_WORD1_DST_SEL_Z_MASK 0x00038000
1373
#define SQ_TEX_WORD1_DST_SEL_W_MASK 0x001c0000
1374
#define SQ_TEX_WORD1_LOD_BIAS_MASK 0x0fe00000
1375
#define SQ_TEX_WORD1_COORD_TYPE_X_MASK 0x10000000
1376
#define SQ_TEX_WORD1_COORD_TYPE_Y_MASK 0x20000000
1377
#define SQ_TEX_WORD1_COORD_TYPE_Z_MASK 0x40000000
1378
#define SQ_TEX_WORD1_COORD_TYPE_W_MASK 0x80000000
1380
#define SQ_TEX_WORD1_MASK \
1381
(SQ_TEX_WORD1_DST_GPR_MASK | \
1382
SQ_TEX_WORD1_DST_REL_MASK | \
1383
SQ_TEX_WORD1_DST_SEL_X_MASK | \
1384
SQ_TEX_WORD1_DST_SEL_Y_MASK | \
1385
SQ_TEX_WORD1_DST_SEL_Z_MASK | \
1386
SQ_TEX_WORD1_DST_SEL_W_MASK | \
1387
SQ_TEX_WORD1_LOD_BIAS_MASK | \
1388
SQ_TEX_WORD1_COORD_TYPE_X_MASK | \
1389
SQ_TEX_WORD1_COORD_TYPE_Y_MASK | \
1390
SQ_TEX_WORD1_COORD_TYPE_Z_MASK | \
1391
SQ_TEX_WORD1_COORD_TYPE_W_MASK)
1393
#define SQ_TEX_WORD1_DEFAULT 0xcdcdcccd
1395
#define SQ_TEX_WORD1_GET_DST_GPR(sq_tex_word1) \
1396
((sq_tex_word1 & SQ_TEX_WORD1_DST_GPR_MASK) >> SQ_TEX_WORD1_DST_GPR_SHIFT)
1397
#define SQ_TEX_WORD1_GET_DST_REL(sq_tex_word1) \
1398
((sq_tex_word1 & SQ_TEX_WORD1_DST_REL_MASK) >> SQ_TEX_WORD1_DST_REL_SHIFT)
1399
#define SQ_TEX_WORD1_GET_DST_SEL_X(sq_tex_word1) \
1400
((sq_tex_word1 & SQ_TEX_WORD1_DST_SEL_X_MASK) >> SQ_TEX_WORD1_DST_SEL_X_SHIFT)
1401
#define SQ_TEX_WORD1_GET_DST_SEL_Y(sq_tex_word1) \
1402
((sq_tex_word1 & SQ_TEX_WORD1_DST_SEL_Y_MASK) >> SQ_TEX_WORD1_DST_SEL_Y_SHIFT)
1403
#define SQ_TEX_WORD1_GET_DST_SEL_Z(sq_tex_word1) \
1404
((sq_tex_word1 & SQ_TEX_WORD1_DST_SEL_Z_MASK) >> SQ_TEX_WORD1_DST_SEL_Z_SHIFT)
1405
#define SQ_TEX_WORD1_GET_DST_SEL_W(sq_tex_word1) \
1406
((sq_tex_word1 & SQ_TEX_WORD1_DST_SEL_W_MASK) >> SQ_TEX_WORD1_DST_SEL_W_SHIFT)
1407
#define SQ_TEX_WORD1_GET_LOD_BIAS(sq_tex_word1) \
1408
((sq_tex_word1 & SQ_TEX_WORD1_LOD_BIAS_MASK) >> SQ_TEX_WORD1_LOD_BIAS_SHIFT)
1409
#define SQ_TEX_WORD1_GET_COORD_TYPE_X(sq_tex_word1) \
1410
((sq_tex_word1 & SQ_TEX_WORD1_COORD_TYPE_X_MASK) >> SQ_TEX_WORD1_COORD_TYPE_X_SHIFT)
1411
#define SQ_TEX_WORD1_GET_COORD_TYPE_Y(sq_tex_word1) \
1412
((sq_tex_word1 & SQ_TEX_WORD1_COORD_TYPE_Y_MASK) >> SQ_TEX_WORD1_COORD_TYPE_Y_SHIFT)
1413
#define SQ_TEX_WORD1_GET_COORD_TYPE_Z(sq_tex_word1) \
1414
((sq_tex_word1 & SQ_TEX_WORD1_COORD_TYPE_Z_MASK) >> SQ_TEX_WORD1_COORD_TYPE_Z_SHIFT)
1415
#define SQ_TEX_WORD1_GET_COORD_TYPE_W(sq_tex_word1) \
1416
((sq_tex_word1 & SQ_TEX_WORD1_COORD_TYPE_W_MASK) >> SQ_TEX_WORD1_COORD_TYPE_W_SHIFT)
1418
#define SQ_TEX_WORD1_SET_DST_GPR(sq_tex_word1_reg, dst_gpr) \
1419
sq_tex_word1_reg = (sq_tex_word1_reg & ~SQ_TEX_WORD1_DST_GPR_MASK) | (dst_gpr << SQ_TEX_WORD1_DST_GPR_SHIFT)
1420
#define SQ_TEX_WORD1_SET_DST_REL(sq_tex_word1_reg, dst_rel) \
1421
sq_tex_word1_reg = (sq_tex_word1_reg & ~SQ_TEX_WORD1_DST_REL_MASK) | (dst_rel << SQ_TEX_WORD1_DST_REL_SHIFT)
1422
#define SQ_TEX_WORD1_SET_DST_SEL_X(sq_tex_word1_reg, dst_sel_x) \
1423
sq_tex_word1_reg = (sq_tex_word1_reg & ~SQ_TEX_WORD1_DST_SEL_X_MASK) | (dst_sel_x << SQ_TEX_WORD1_DST_SEL_X_SHIFT)
1424
#define SQ_TEX_WORD1_SET_DST_SEL_Y(sq_tex_word1_reg, dst_sel_y) \
1425
sq_tex_word1_reg = (sq_tex_word1_reg & ~SQ_TEX_WORD1_DST_SEL_Y_MASK) | (dst_sel_y << SQ_TEX_WORD1_DST_SEL_Y_SHIFT)
1426
#define SQ_TEX_WORD1_SET_DST_SEL_Z(sq_tex_word1_reg, dst_sel_z) \
1427
sq_tex_word1_reg = (sq_tex_word1_reg & ~SQ_TEX_WORD1_DST_SEL_Z_MASK) | (dst_sel_z << SQ_TEX_WORD1_DST_SEL_Z_SHIFT)
1428
#define SQ_TEX_WORD1_SET_DST_SEL_W(sq_tex_word1_reg, dst_sel_w) \
1429
sq_tex_word1_reg = (sq_tex_word1_reg & ~SQ_TEX_WORD1_DST_SEL_W_MASK) | (dst_sel_w << SQ_TEX_WORD1_DST_SEL_W_SHIFT)
1430
#define SQ_TEX_WORD1_SET_LOD_BIAS(sq_tex_word1_reg, lod_bias) \
1431
sq_tex_word1_reg = (sq_tex_word1_reg & ~SQ_TEX_WORD1_LOD_BIAS_MASK) | (lod_bias << SQ_TEX_WORD1_LOD_BIAS_SHIFT)
1432
#define SQ_TEX_WORD1_SET_COORD_TYPE_X(sq_tex_word1_reg, coord_type_x) \
1433
sq_tex_word1_reg = (sq_tex_word1_reg & ~SQ_TEX_WORD1_COORD_TYPE_X_MASK) | (coord_type_x << SQ_TEX_WORD1_COORD_TYPE_X_SHIFT)
1434
#define SQ_TEX_WORD1_SET_COORD_TYPE_Y(sq_tex_word1_reg, coord_type_y) \
1435
sq_tex_word1_reg = (sq_tex_word1_reg & ~SQ_TEX_WORD1_COORD_TYPE_Y_MASK) | (coord_type_y << SQ_TEX_WORD1_COORD_TYPE_Y_SHIFT)
1436
#define SQ_TEX_WORD1_SET_COORD_TYPE_Z(sq_tex_word1_reg, coord_type_z) \
1437
sq_tex_word1_reg = (sq_tex_word1_reg & ~SQ_TEX_WORD1_COORD_TYPE_Z_MASK) | (coord_type_z << SQ_TEX_WORD1_COORD_TYPE_Z_SHIFT)
1438
#define SQ_TEX_WORD1_SET_COORD_TYPE_W(sq_tex_word1_reg, coord_type_w) \
1439
sq_tex_word1_reg = (sq_tex_word1_reg & ~SQ_TEX_WORD1_COORD_TYPE_W_MASK) | (coord_type_w << SQ_TEX_WORD1_COORD_TYPE_W_SHIFT)
1441
#if defined(LITTLEENDIAN_CPU)
1443
typedef struct _sq_tex_word1_t {
1444
unsigned int dst_gpr : SQ_TEX_WORD1_DST_GPR_SIZE;
1445
unsigned int dst_rel : SQ_TEX_WORD1_DST_REL_SIZE;
1447
unsigned int dst_sel_x : SQ_TEX_WORD1_DST_SEL_X_SIZE;
1448
unsigned int dst_sel_y : SQ_TEX_WORD1_DST_SEL_Y_SIZE;
1449
unsigned int dst_sel_z : SQ_TEX_WORD1_DST_SEL_Z_SIZE;
1450
unsigned int dst_sel_w : SQ_TEX_WORD1_DST_SEL_W_SIZE;
1451
unsigned int lod_bias : SQ_TEX_WORD1_LOD_BIAS_SIZE;
1452
unsigned int coord_type_x : SQ_TEX_WORD1_COORD_TYPE_X_SIZE;
1453
unsigned int coord_type_y : SQ_TEX_WORD1_COORD_TYPE_Y_SIZE;
1454
unsigned int coord_type_z : SQ_TEX_WORD1_COORD_TYPE_Z_SIZE;
1455
unsigned int coord_type_w : SQ_TEX_WORD1_COORD_TYPE_W_SIZE;
1458
#elif defined(BIGENDIAN_CPU)
1460
typedef struct _sq_tex_word1_t {
1461
unsigned int coord_type_w : SQ_TEX_WORD1_COORD_TYPE_W_SIZE;
1462
unsigned int coord_type_z : SQ_TEX_WORD1_COORD_TYPE_Z_SIZE;
1463
unsigned int coord_type_y : SQ_TEX_WORD1_COORD_TYPE_Y_SIZE;
1464
unsigned int coord_type_x : SQ_TEX_WORD1_COORD_TYPE_X_SIZE;
1465
unsigned int lod_bias : SQ_TEX_WORD1_LOD_BIAS_SIZE;
1466
unsigned int dst_sel_w : SQ_TEX_WORD1_DST_SEL_W_SIZE;
1467
unsigned int dst_sel_z : SQ_TEX_WORD1_DST_SEL_Z_SIZE;
1468
unsigned int dst_sel_y : SQ_TEX_WORD1_DST_SEL_Y_SIZE;
1469
unsigned int dst_sel_x : SQ_TEX_WORD1_DST_SEL_X_SIZE;
1471
unsigned int dst_rel : SQ_TEX_WORD1_DST_REL_SIZE;
1472
unsigned int dst_gpr : SQ_TEX_WORD1_DST_GPR_SIZE;
1478
unsigned int val : 32;
1484
* SQ_TEX_WORD2 struct
1487
#define SQ_TEX_WORD2_OFFSET_X_SIZE 5
1488
#define SQ_TEX_WORD2_OFFSET_Y_SIZE 5
1489
#define SQ_TEX_WORD2_OFFSET_Z_SIZE 5
1490
#define SQ_TEX_WORD2_SAMPLER_ID_SIZE 5
1491
#define SQ_TEX_WORD2_SRC_SEL_X_SIZE 3
1492
#define SQ_TEX_WORD2_SRC_SEL_Y_SIZE 3
1493
#define SQ_TEX_WORD2_SRC_SEL_Z_SIZE 3
1494
#define SQ_TEX_WORD2_SRC_SEL_W_SIZE 3
1496
#define SQ_TEX_WORD2_OFFSET_X_SHIFT 0
1497
#define SQ_TEX_WORD2_OFFSET_Y_SHIFT 5
1498
#define SQ_TEX_WORD2_OFFSET_Z_SHIFT 10
1499
#define SQ_TEX_WORD2_SAMPLER_ID_SHIFT 15
1500
#define SQ_TEX_WORD2_SRC_SEL_X_SHIFT 20
1501
#define SQ_TEX_WORD2_SRC_SEL_Y_SHIFT 23
1502
#define SQ_TEX_WORD2_SRC_SEL_Z_SHIFT 26
1503
#define SQ_TEX_WORD2_SRC_SEL_W_SHIFT 29
1505
#define SQ_TEX_WORD2_OFFSET_X_MASK 0x0000001f
1506
#define SQ_TEX_WORD2_OFFSET_Y_MASK 0x000003e0
1507
#define SQ_TEX_WORD2_OFFSET_Z_MASK 0x00007c00
1508
#define SQ_TEX_WORD2_SAMPLER_ID_MASK 0x000f8000
1509
#define SQ_TEX_WORD2_SRC_SEL_X_MASK 0x00700000
1510
#define SQ_TEX_WORD2_SRC_SEL_Y_MASK 0x03800000
1511
#define SQ_TEX_WORD2_SRC_SEL_Z_MASK 0x1c000000
1512
#define SQ_TEX_WORD2_SRC_SEL_W_MASK 0xe0000000
1514
#define SQ_TEX_WORD2_MASK \
1515
(SQ_TEX_WORD2_OFFSET_X_MASK | \
1516
SQ_TEX_WORD2_OFFSET_Y_MASK | \
1517
SQ_TEX_WORD2_OFFSET_Z_MASK | \
1518
SQ_TEX_WORD2_SAMPLER_ID_MASK | \
1519
SQ_TEX_WORD2_SRC_SEL_X_MASK | \
1520
SQ_TEX_WORD2_SRC_SEL_Y_MASK | \
1521
SQ_TEX_WORD2_SRC_SEL_Z_MASK | \
1522
SQ_TEX_WORD2_SRC_SEL_W_MASK)
1524
#define SQ_TEX_WORD2_DEFAULT 0xcdcdcdcd
1526
#define SQ_TEX_WORD2_GET_OFFSET_X(sq_tex_word2) \
1527
((sq_tex_word2 & SQ_TEX_WORD2_OFFSET_X_MASK) >> SQ_TEX_WORD2_OFFSET_X_SHIFT)
1528
#define SQ_TEX_WORD2_GET_OFFSET_Y(sq_tex_word2) \
1529
((sq_tex_word2 & SQ_TEX_WORD2_OFFSET_Y_MASK) >> SQ_TEX_WORD2_OFFSET_Y_SHIFT)
1530
#define SQ_TEX_WORD2_GET_OFFSET_Z(sq_tex_word2) \
1531
((sq_tex_word2 & SQ_TEX_WORD2_OFFSET_Z_MASK) >> SQ_TEX_WORD2_OFFSET_Z_SHIFT)
1532
#define SQ_TEX_WORD2_GET_SAMPLER_ID(sq_tex_word2) \
1533
((sq_tex_word2 & SQ_TEX_WORD2_SAMPLER_ID_MASK) >> SQ_TEX_WORD2_SAMPLER_ID_SHIFT)
1534
#define SQ_TEX_WORD2_GET_SRC_SEL_X(sq_tex_word2) \
1535
((sq_tex_word2 & SQ_TEX_WORD2_SRC_SEL_X_MASK) >> SQ_TEX_WORD2_SRC_SEL_X_SHIFT)
1536
#define SQ_TEX_WORD2_GET_SRC_SEL_Y(sq_tex_word2) \
1537
((sq_tex_word2 & SQ_TEX_WORD2_SRC_SEL_Y_MASK) >> SQ_TEX_WORD2_SRC_SEL_Y_SHIFT)
1538
#define SQ_TEX_WORD2_GET_SRC_SEL_Z(sq_tex_word2) \
1539
((sq_tex_word2 & SQ_TEX_WORD2_SRC_SEL_Z_MASK) >> SQ_TEX_WORD2_SRC_SEL_Z_SHIFT)
1540
#define SQ_TEX_WORD2_GET_SRC_SEL_W(sq_tex_word2) \
1541
((sq_tex_word2 & SQ_TEX_WORD2_SRC_SEL_W_MASK) >> SQ_TEX_WORD2_SRC_SEL_W_SHIFT)
1543
#define SQ_TEX_WORD2_SET_OFFSET_X(sq_tex_word2_reg, offset_x) \
1544
sq_tex_word2_reg = (sq_tex_word2_reg & ~SQ_TEX_WORD2_OFFSET_X_MASK) | (offset_x << SQ_TEX_WORD2_OFFSET_X_SHIFT)
1545
#define SQ_TEX_WORD2_SET_OFFSET_Y(sq_tex_word2_reg, offset_y) \
1546
sq_tex_word2_reg = (sq_tex_word2_reg & ~SQ_TEX_WORD2_OFFSET_Y_MASK) | (offset_y << SQ_TEX_WORD2_OFFSET_Y_SHIFT)
1547
#define SQ_TEX_WORD2_SET_OFFSET_Z(sq_tex_word2_reg, offset_z) \
1548
sq_tex_word2_reg = (sq_tex_word2_reg & ~SQ_TEX_WORD2_OFFSET_Z_MASK) | (offset_z << SQ_TEX_WORD2_OFFSET_Z_SHIFT)
1549
#define SQ_TEX_WORD2_SET_SAMPLER_ID(sq_tex_word2_reg, sampler_id) \
1550
sq_tex_word2_reg = (sq_tex_word2_reg & ~SQ_TEX_WORD2_SAMPLER_ID_MASK) | (sampler_id << SQ_TEX_WORD2_SAMPLER_ID_SHIFT)
1551
#define SQ_TEX_WORD2_SET_SRC_SEL_X(sq_tex_word2_reg, src_sel_x) \
1552
sq_tex_word2_reg = (sq_tex_word2_reg & ~SQ_TEX_WORD2_SRC_SEL_X_MASK) | (src_sel_x << SQ_TEX_WORD2_SRC_SEL_X_SHIFT)
1553
#define SQ_TEX_WORD2_SET_SRC_SEL_Y(sq_tex_word2_reg, src_sel_y) \
1554
sq_tex_word2_reg = (sq_tex_word2_reg & ~SQ_TEX_WORD2_SRC_SEL_Y_MASK) | (src_sel_y << SQ_TEX_WORD2_SRC_SEL_Y_SHIFT)
1555
#define SQ_TEX_WORD2_SET_SRC_SEL_Z(sq_tex_word2_reg, src_sel_z) \
1556
sq_tex_word2_reg = (sq_tex_word2_reg & ~SQ_TEX_WORD2_SRC_SEL_Z_MASK) | (src_sel_z << SQ_TEX_WORD2_SRC_SEL_Z_SHIFT)
1557
#define SQ_TEX_WORD2_SET_SRC_SEL_W(sq_tex_word2_reg, src_sel_w) \
1558
sq_tex_word2_reg = (sq_tex_word2_reg & ~SQ_TEX_WORD2_SRC_SEL_W_MASK) | (src_sel_w << SQ_TEX_WORD2_SRC_SEL_W_SHIFT)
1560
#if defined(LITTLEENDIAN_CPU)
1562
typedef struct _sq_tex_word2_t {
1563
unsigned int offset_x : SQ_TEX_WORD2_OFFSET_X_SIZE;
1564
unsigned int offset_y : SQ_TEX_WORD2_OFFSET_Y_SIZE;
1565
unsigned int offset_z : SQ_TEX_WORD2_OFFSET_Z_SIZE;
1566
unsigned int sampler_id : SQ_TEX_WORD2_SAMPLER_ID_SIZE;
1567
unsigned int src_sel_x : SQ_TEX_WORD2_SRC_SEL_X_SIZE;
1568
unsigned int src_sel_y : SQ_TEX_WORD2_SRC_SEL_Y_SIZE;
1569
unsigned int src_sel_z : SQ_TEX_WORD2_SRC_SEL_Z_SIZE;
1570
unsigned int src_sel_w : SQ_TEX_WORD2_SRC_SEL_W_SIZE;
1573
#elif defined(BIGENDIAN_CPU)
1575
typedef struct _sq_tex_word2_t {
1576
unsigned int src_sel_w : SQ_TEX_WORD2_SRC_SEL_W_SIZE;
1577
unsigned int src_sel_z : SQ_TEX_WORD2_SRC_SEL_Z_SIZE;
1578
unsigned int src_sel_y : SQ_TEX_WORD2_SRC_SEL_Y_SIZE;
1579
unsigned int src_sel_x : SQ_TEX_WORD2_SRC_SEL_X_SIZE;
1580
unsigned int sampler_id : SQ_TEX_WORD2_SAMPLER_ID_SIZE;
1581
unsigned int offset_z : SQ_TEX_WORD2_OFFSET_Z_SIZE;
1582
unsigned int offset_y : SQ_TEX_WORD2_OFFSET_Y_SIZE;
1583
unsigned int offset_x : SQ_TEX_WORD2_OFFSET_X_SIZE;
1589
unsigned int val : 32;
1595
* SQ_VTX_WORD0 struct
1598
#define SQ_VTX_WORD0_VTX_INST_SIZE 5
1599
#define SQ_VTX_WORD0_FETCH_TYPE_SIZE 2
1600
#define SQ_VTX_WORD0_FETCH_WHOLE_QUAD_SIZE 1
1601
#define SQ_VTX_WORD0_BUFFER_ID_SIZE 8
1602
#define SQ_VTX_WORD0_SRC_GPR_SIZE 7
1603
#define SQ_VTX_WORD0_SRC_REL_SIZE 1
1604
#define SQ_VTX_WORD0_SRC_SEL_X_SIZE 2
1605
#define SQ_VTX_WORD0_MEGA_FETCH_COUNT_SIZE 6
1607
#define SQ_VTX_WORD0_VTX_INST_SHIFT 0
1608
#define SQ_VTX_WORD0_FETCH_TYPE_SHIFT 5
1609
#define SQ_VTX_WORD0_FETCH_WHOLE_QUAD_SHIFT 7
1610
#define SQ_VTX_WORD0_BUFFER_ID_SHIFT 8
1611
#define SQ_VTX_WORD0_SRC_GPR_SHIFT 16
1612
#define SQ_VTX_WORD0_SRC_REL_SHIFT 23
1613
#define SQ_VTX_WORD0_SRC_SEL_X_SHIFT 24
1614
#define SQ_VTX_WORD0_MEGA_FETCH_COUNT_SHIFT 26
1616
#define SQ_VTX_WORD0_VTX_INST_MASK 0x0000001f
1617
#define SQ_VTX_WORD0_FETCH_TYPE_MASK 0x00000060
1618
#define SQ_VTX_WORD0_FETCH_WHOLE_QUAD_MASK 0x00000080
1619
#define SQ_VTX_WORD0_BUFFER_ID_MASK 0x0000ff00
1620
#define SQ_VTX_WORD0_SRC_GPR_MASK 0x007f0000
1621
#define SQ_VTX_WORD0_SRC_REL_MASK 0x00800000
1622
#define SQ_VTX_WORD0_SRC_SEL_X_MASK 0x03000000
1623
#define SQ_VTX_WORD0_MEGA_FETCH_COUNT_MASK 0xfc000000
1625
#define SQ_VTX_WORD0_MASK \
1626
(SQ_VTX_WORD0_VTX_INST_MASK | \
1627
SQ_VTX_WORD0_FETCH_TYPE_MASK | \
1628
SQ_VTX_WORD0_FETCH_WHOLE_QUAD_MASK | \
1629
SQ_VTX_WORD0_BUFFER_ID_MASK | \
1630
SQ_VTX_WORD0_SRC_GPR_MASK | \
1631
SQ_VTX_WORD0_SRC_REL_MASK | \
1632
SQ_VTX_WORD0_SRC_SEL_X_MASK | \
1633
SQ_VTX_WORD0_MEGA_FETCH_COUNT_MASK)
1635
#define SQ_VTX_WORD0_DEFAULT 0xcdcdcdcd
1637
#define SQ_VTX_WORD0_GET_VTX_INST(sq_vtx_word0) \
1638
((sq_vtx_word0 & SQ_VTX_WORD0_VTX_INST_MASK) >> SQ_VTX_WORD0_VTX_INST_SHIFT)
1639
#define SQ_VTX_WORD0_GET_FETCH_TYPE(sq_vtx_word0) \
1640
((sq_vtx_word0 & SQ_VTX_WORD0_FETCH_TYPE_MASK) >> SQ_VTX_WORD0_FETCH_TYPE_SHIFT)
1641
#define SQ_VTX_WORD0_GET_FETCH_WHOLE_QUAD(sq_vtx_word0) \
1642
((sq_vtx_word0 & SQ_VTX_WORD0_FETCH_WHOLE_QUAD_MASK) >> SQ_VTX_WORD0_FETCH_WHOLE_QUAD_SHIFT)
1643
#define SQ_VTX_WORD0_GET_BUFFER_ID(sq_vtx_word0) \
1644
((sq_vtx_word0 & SQ_VTX_WORD0_BUFFER_ID_MASK) >> SQ_VTX_WORD0_BUFFER_ID_SHIFT)
1645
#define SQ_VTX_WORD0_GET_SRC_GPR(sq_vtx_word0) \
1646
((sq_vtx_word0 & SQ_VTX_WORD0_SRC_GPR_MASK) >> SQ_VTX_WORD0_SRC_GPR_SHIFT)
1647
#define SQ_VTX_WORD0_GET_SRC_REL(sq_vtx_word0) \
1648
((sq_vtx_word0 & SQ_VTX_WORD0_SRC_REL_MASK) >> SQ_VTX_WORD0_SRC_REL_SHIFT)
1649
#define SQ_VTX_WORD0_GET_SRC_SEL_X(sq_vtx_word0) \
1650
((sq_vtx_word0 & SQ_VTX_WORD0_SRC_SEL_X_MASK) >> SQ_VTX_WORD0_SRC_SEL_X_SHIFT)
1651
#define SQ_VTX_WORD0_GET_MEGA_FETCH_COUNT(sq_vtx_word0) \
1652
((sq_vtx_word0 & SQ_VTX_WORD0_MEGA_FETCH_COUNT_MASK) >> SQ_VTX_WORD0_MEGA_FETCH_COUNT_SHIFT)
1654
#define SQ_VTX_WORD0_SET_VTX_INST(sq_vtx_word0_reg, vtx_inst) \
1655
sq_vtx_word0_reg = (sq_vtx_word0_reg & ~SQ_VTX_WORD0_VTX_INST_MASK) | (vtx_inst << SQ_VTX_WORD0_VTX_INST_SHIFT)
1656
#define SQ_VTX_WORD0_SET_FETCH_TYPE(sq_vtx_word0_reg, fetch_type) \
1657
sq_vtx_word0_reg = (sq_vtx_word0_reg & ~SQ_VTX_WORD0_FETCH_TYPE_MASK) | (fetch_type << SQ_VTX_WORD0_FETCH_TYPE_SHIFT)
1658
#define SQ_VTX_WORD0_SET_FETCH_WHOLE_QUAD(sq_vtx_word0_reg, fetch_whole_quad) \
1659
sq_vtx_word0_reg = (sq_vtx_word0_reg & ~SQ_VTX_WORD0_FETCH_WHOLE_QUAD_MASK) | (fetch_whole_quad << SQ_VTX_WORD0_FETCH_WHOLE_QUAD_SHIFT)
1660
#define SQ_VTX_WORD0_SET_BUFFER_ID(sq_vtx_word0_reg, buffer_id) \
1661
sq_vtx_word0_reg = (sq_vtx_word0_reg & ~SQ_VTX_WORD0_BUFFER_ID_MASK) | (buffer_id << SQ_VTX_WORD0_BUFFER_ID_SHIFT)
1662
#define SQ_VTX_WORD0_SET_SRC_GPR(sq_vtx_word0_reg, src_gpr) \
1663
sq_vtx_word0_reg = (sq_vtx_word0_reg & ~SQ_VTX_WORD0_SRC_GPR_MASK) | (src_gpr << SQ_VTX_WORD0_SRC_GPR_SHIFT)
1664
#define SQ_VTX_WORD0_SET_SRC_REL(sq_vtx_word0_reg, src_rel) \
1665
sq_vtx_word0_reg = (sq_vtx_word0_reg & ~SQ_VTX_WORD0_SRC_REL_MASK) | (src_rel << SQ_VTX_WORD0_SRC_REL_SHIFT)
1666
#define SQ_VTX_WORD0_SET_SRC_SEL_X(sq_vtx_word0_reg, src_sel_x) \
1667
sq_vtx_word0_reg = (sq_vtx_word0_reg & ~SQ_VTX_WORD0_SRC_SEL_X_MASK) | (src_sel_x << SQ_VTX_WORD0_SRC_SEL_X_SHIFT)
1668
#define SQ_VTX_WORD0_SET_MEGA_FETCH_COUNT(sq_vtx_word0_reg, mega_fetch_count) \
1669
sq_vtx_word0_reg = (sq_vtx_word0_reg & ~SQ_VTX_WORD0_MEGA_FETCH_COUNT_MASK) | (mega_fetch_count << SQ_VTX_WORD0_MEGA_FETCH_COUNT_SHIFT)
1671
#if defined(LITTLEENDIAN_CPU)
1673
typedef struct _sq_vtx_word0_t {
1674
unsigned int vtx_inst : SQ_VTX_WORD0_VTX_INST_SIZE;
1675
unsigned int fetch_type : SQ_VTX_WORD0_FETCH_TYPE_SIZE;
1676
unsigned int fetch_whole_quad : SQ_VTX_WORD0_FETCH_WHOLE_QUAD_SIZE;
1677
unsigned int buffer_id : SQ_VTX_WORD0_BUFFER_ID_SIZE;
1678
unsigned int src_gpr : SQ_VTX_WORD0_SRC_GPR_SIZE;
1679
unsigned int src_rel : SQ_VTX_WORD0_SRC_REL_SIZE;
1680
unsigned int src_sel_x : SQ_VTX_WORD0_SRC_SEL_X_SIZE;
1681
unsigned int mega_fetch_count : SQ_VTX_WORD0_MEGA_FETCH_COUNT_SIZE;
1684
#elif defined(BIGENDIAN_CPU)
1686
typedef struct _sq_vtx_word0_t {
1687
unsigned int mega_fetch_count : SQ_VTX_WORD0_MEGA_FETCH_COUNT_SIZE;
1688
unsigned int src_sel_x : SQ_VTX_WORD0_SRC_SEL_X_SIZE;
1689
unsigned int src_rel : SQ_VTX_WORD0_SRC_REL_SIZE;
1690
unsigned int src_gpr : SQ_VTX_WORD0_SRC_GPR_SIZE;
1691
unsigned int buffer_id : SQ_VTX_WORD0_BUFFER_ID_SIZE;
1692
unsigned int fetch_whole_quad : SQ_VTX_WORD0_FETCH_WHOLE_QUAD_SIZE;
1693
unsigned int fetch_type : SQ_VTX_WORD0_FETCH_TYPE_SIZE;
1694
unsigned int vtx_inst : SQ_VTX_WORD0_VTX_INST_SIZE;
1700
unsigned int val : 32;
1706
* SQ_VTX_WORD1 struct
1709
#define SQ_VTX_WORD1_DST_SEL_X_SIZE 3
1710
#define SQ_VTX_WORD1_DST_SEL_Y_SIZE 3
1711
#define SQ_VTX_WORD1_DST_SEL_Z_SIZE 3
1712
#define SQ_VTX_WORD1_DST_SEL_W_SIZE 3
1713
#define SQ_VTX_WORD1_USE_CONST_FIELDS_SIZE 1
1714
#define SQ_VTX_WORD1_DATA_FORMAT_SIZE 6
1715
#define SQ_VTX_WORD1_NUM_FORMAT_ALL_SIZE 2
1716
#define SQ_VTX_WORD1_FORMAT_COMP_ALL_SIZE 1
1717
#define SQ_VTX_WORD1_SRF_MODE_ALL_SIZE 1
1719
#define SQ_VTX_WORD1_DST_SEL_X_SHIFT 9
1720
#define SQ_VTX_WORD1_DST_SEL_Y_SHIFT 12
1721
#define SQ_VTX_WORD1_DST_SEL_Z_SHIFT 15
1722
#define SQ_VTX_WORD1_DST_SEL_W_SHIFT 18
1723
#define SQ_VTX_WORD1_USE_CONST_FIELDS_SHIFT 21
1724
#define SQ_VTX_WORD1_DATA_FORMAT_SHIFT 22
1725
#define SQ_VTX_WORD1_NUM_FORMAT_ALL_SHIFT 28
1726
#define SQ_VTX_WORD1_FORMAT_COMP_ALL_SHIFT 30
1727
#define SQ_VTX_WORD1_SRF_MODE_ALL_SHIFT 31
1729
#define SQ_VTX_WORD1_DST_SEL_X_MASK 0x00000e00
1730
#define SQ_VTX_WORD1_DST_SEL_Y_MASK 0x00007000
1731
#define SQ_VTX_WORD1_DST_SEL_Z_MASK 0x00038000
1732
#define SQ_VTX_WORD1_DST_SEL_W_MASK 0x001c0000
1733
#define SQ_VTX_WORD1_USE_CONST_FIELDS_MASK 0x00200000
1734
#define SQ_VTX_WORD1_DATA_FORMAT_MASK 0x0fc00000
1735
#define SQ_VTX_WORD1_NUM_FORMAT_ALL_MASK 0x30000000
1736
#define SQ_VTX_WORD1_FORMAT_COMP_ALL_MASK 0x40000000
1737
#define SQ_VTX_WORD1_SRF_MODE_ALL_MASK 0x80000000
1739
#define SQ_VTX_WORD1_MASK \
1740
(SQ_VTX_WORD1_DST_SEL_X_MASK | \
1741
SQ_VTX_WORD1_DST_SEL_Y_MASK | \
1742
SQ_VTX_WORD1_DST_SEL_Z_MASK | \
1743
SQ_VTX_WORD1_DST_SEL_W_MASK | \
1744
SQ_VTX_WORD1_USE_CONST_FIELDS_MASK | \
1745
SQ_VTX_WORD1_DATA_FORMAT_MASK | \
1746
SQ_VTX_WORD1_NUM_FORMAT_ALL_MASK | \
1747
SQ_VTX_WORD1_FORMAT_COMP_ALL_MASK | \
1748
SQ_VTX_WORD1_SRF_MODE_ALL_MASK)
1750
#define SQ_VTX_WORD1_DEFAULT 0xcdcdcc00
1752
#define SQ_VTX_WORD1_GET_DST_SEL_X(sq_vtx_word1) \
1753
((sq_vtx_word1 & SQ_VTX_WORD1_DST_SEL_X_MASK) >> SQ_VTX_WORD1_DST_SEL_X_SHIFT)
1754
#define SQ_VTX_WORD1_GET_DST_SEL_Y(sq_vtx_word1) \
1755
((sq_vtx_word1 & SQ_VTX_WORD1_DST_SEL_Y_MASK) >> SQ_VTX_WORD1_DST_SEL_Y_SHIFT)
1756
#define SQ_VTX_WORD1_GET_DST_SEL_Z(sq_vtx_word1) \
1757
((sq_vtx_word1 & SQ_VTX_WORD1_DST_SEL_Z_MASK) >> SQ_VTX_WORD1_DST_SEL_Z_SHIFT)
1758
#define SQ_VTX_WORD1_GET_DST_SEL_W(sq_vtx_word1) \
1759
((sq_vtx_word1 & SQ_VTX_WORD1_DST_SEL_W_MASK) >> SQ_VTX_WORD1_DST_SEL_W_SHIFT)
1760
#define SQ_VTX_WORD1_GET_USE_CONST_FIELDS(sq_vtx_word1) \
1761
((sq_vtx_word1 & SQ_VTX_WORD1_USE_CONST_FIELDS_MASK) >> SQ_VTX_WORD1_USE_CONST_FIELDS_SHIFT)
1762
#define SQ_VTX_WORD1_GET_DATA_FORMAT(sq_vtx_word1) \
1763
((sq_vtx_word1 & SQ_VTX_WORD1_DATA_FORMAT_MASK) >> SQ_VTX_WORD1_DATA_FORMAT_SHIFT)
1764
#define SQ_VTX_WORD1_GET_NUM_FORMAT_ALL(sq_vtx_word1) \
1765
((sq_vtx_word1 & SQ_VTX_WORD1_NUM_FORMAT_ALL_MASK) >> SQ_VTX_WORD1_NUM_FORMAT_ALL_SHIFT)
1766
#define SQ_VTX_WORD1_GET_FORMAT_COMP_ALL(sq_vtx_word1) \
1767
((sq_vtx_word1 & SQ_VTX_WORD1_FORMAT_COMP_ALL_MASK) >> SQ_VTX_WORD1_FORMAT_COMP_ALL_SHIFT)
1768
#define SQ_VTX_WORD1_GET_SRF_MODE_ALL(sq_vtx_word1) \
1769
((sq_vtx_word1 & SQ_VTX_WORD1_SRF_MODE_ALL_MASK) >> SQ_VTX_WORD1_SRF_MODE_ALL_SHIFT)
1771
#define SQ_VTX_WORD1_SET_DST_SEL_X(sq_vtx_word1_reg, dst_sel_x) \
1772
sq_vtx_word1_reg = (sq_vtx_word1_reg & ~SQ_VTX_WORD1_DST_SEL_X_MASK) | (dst_sel_x << SQ_VTX_WORD1_DST_SEL_X_SHIFT)
1773
#define SQ_VTX_WORD1_SET_DST_SEL_Y(sq_vtx_word1_reg, dst_sel_y) \
1774
sq_vtx_word1_reg = (sq_vtx_word1_reg & ~SQ_VTX_WORD1_DST_SEL_Y_MASK) | (dst_sel_y << SQ_VTX_WORD1_DST_SEL_Y_SHIFT)
1775
#define SQ_VTX_WORD1_SET_DST_SEL_Z(sq_vtx_word1_reg, dst_sel_z) \
1776
sq_vtx_word1_reg = (sq_vtx_word1_reg & ~SQ_VTX_WORD1_DST_SEL_Z_MASK) | (dst_sel_z << SQ_VTX_WORD1_DST_SEL_Z_SHIFT)
1777
#define SQ_VTX_WORD1_SET_DST_SEL_W(sq_vtx_word1_reg, dst_sel_w) \
1778
sq_vtx_word1_reg = (sq_vtx_word1_reg & ~SQ_VTX_WORD1_DST_SEL_W_MASK) | (dst_sel_w << SQ_VTX_WORD1_DST_SEL_W_SHIFT)
1779
#define SQ_VTX_WORD1_SET_USE_CONST_FIELDS(sq_vtx_word1_reg, use_const_fields) \
1780
sq_vtx_word1_reg = (sq_vtx_word1_reg & ~SQ_VTX_WORD1_USE_CONST_FIELDS_MASK) | (use_const_fields << SQ_VTX_WORD1_USE_CONST_FIELDS_SHIFT)
1781
#define SQ_VTX_WORD1_SET_DATA_FORMAT(sq_vtx_word1_reg, data_format) \
1782
sq_vtx_word1_reg = (sq_vtx_word1_reg & ~SQ_VTX_WORD1_DATA_FORMAT_MASK) | (data_format << SQ_VTX_WORD1_DATA_FORMAT_SHIFT)
1783
#define SQ_VTX_WORD1_SET_NUM_FORMAT_ALL(sq_vtx_word1_reg, num_format_all) \
1784
sq_vtx_word1_reg = (sq_vtx_word1_reg & ~SQ_VTX_WORD1_NUM_FORMAT_ALL_MASK) | (num_format_all << SQ_VTX_WORD1_NUM_FORMAT_ALL_SHIFT)
1785
#define SQ_VTX_WORD1_SET_FORMAT_COMP_ALL(sq_vtx_word1_reg, format_comp_all) \
1786
sq_vtx_word1_reg = (sq_vtx_word1_reg & ~SQ_VTX_WORD1_FORMAT_COMP_ALL_MASK) | (format_comp_all << SQ_VTX_WORD1_FORMAT_COMP_ALL_SHIFT)
1787
#define SQ_VTX_WORD1_SET_SRF_MODE_ALL(sq_vtx_word1_reg, srf_mode_all) \
1788
sq_vtx_word1_reg = (sq_vtx_word1_reg & ~SQ_VTX_WORD1_SRF_MODE_ALL_MASK) | (srf_mode_all << SQ_VTX_WORD1_SRF_MODE_ALL_SHIFT)
1790
#if defined(LITTLEENDIAN_CPU)
1792
typedef struct _sq_vtx_word1_t {
1794
unsigned int dst_sel_x : SQ_VTX_WORD1_DST_SEL_X_SIZE;
1795
unsigned int dst_sel_y : SQ_VTX_WORD1_DST_SEL_Y_SIZE;
1796
unsigned int dst_sel_z : SQ_VTX_WORD1_DST_SEL_Z_SIZE;
1797
unsigned int dst_sel_w : SQ_VTX_WORD1_DST_SEL_W_SIZE;
1798
unsigned int use_const_fields : SQ_VTX_WORD1_USE_CONST_FIELDS_SIZE;
1799
unsigned int data_format : SQ_VTX_WORD1_DATA_FORMAT_SIZE;
1800
unsigned int num_format_all : SQ_VTX_WORD1_NUM_FORMAT_ALL_SIZE;
1801
unsigned int format_comp_all : SQ_VTX_WORD1_FORMAT_COMP_ALL_SIZE;
1802
unsigned int srf_mode_all : SQ_VTX_WORD1_SRF_MODE_ALL_SIZE;
1805
#elif defined(BIGENDIAN_CPU)
1807
typedef struct _sq_vtx_word1_t {
1808
unsigned int srf_mode_all : SQ_VTX_WORD1_SRF_MODE_ALL_SIZE;
1809
unsigned int format_comp_all : SQ_VTX_WORD1_FORMAT_COMP_ALL_SIZE;
1810
unsigned int num_format_all : SQ_VTX_WORD1_NUM_FORMAT_ALL_SIZE;
1811
unsigned int data_format : SQ_VTX_WORD1_DATA_FORMAT_SIZE;
1812
unsigned int use_const_fields : SQ_VTX_WORD1_USE_CONST_FIELDS_SIZE;
1813
unsigned int dst_sel_w : SQ_VTX_WORD1_DST_SEL_W_SIZE;
1814
unsigned int dst_sel_z : SQ_VTX_WORD1_DST_SEL_Z_SIZE;
1815
unsigned int dst_sel_y : SQ_VTX_WORD1_DST_SEL_Y_SIZE;
1816
unsigned int dst_sel_x : SQ_VTX_WORD1_DST_SEL_X_SIZE;
1823
unsigned int val : 32;
1829
* SQ_VTX_WORD1_GPR struct
1832
#define SQ_VTX_WORD1_GPR_DST_GPR_SIZE 7
1833
#define SQ_VTX_WORD1_GPR_DST_REL_SIZE 1
1835
#define SQ_VTX_WORD1_GPR_DST_GPR_SHIFT 0
1836
#define SQ_VTX_WORD1_GPR_DST_REL_SHIFT 7
1838
#define SQ_VTX_WORD1_GPR_DST_GPR_MASK 0x0000007f
1839
#define SQ_VTX_WORD1_GPR_DST_REL_MASK 0x00000080
1841
#define SQ_VTX_WORD1_GPR_MASK \
1842
(SQ_VTX_WORD1_GPR_DST_GPR_MASK | \
1843
SQ_VTX_WORD1_GPR_DST_REL_MASK)
1845
#define SQ_VTX_WORD1_GPR_DEFAULT 0x000000cd
1847
#define SQ_VTX_WORD1_GPR_GET_DST_GPR(sq_vtx_word1_gpr) \
1848
((sq_vtx_word1_gpr & SQ_VTX_WORD1_GPR_DST_GPR_MASK) >> SQ_VTX_WORD1_GPR_DST_GPR_SHIFT)
1849
#define SQ_VTX_WORD1_GPR_GET_DST_REL(sq_vtx_word1_gpr) \
1850
((sq_vtx_word1_gpr & SQ_VTX_WORD1_GPR_DST_REL_MASK) >> SQ_VTX_WORD1_GPR_DST_REL_SHIFT)
1852
#define SQ_VTX_WORD1_GPR_SET_DST_GPR(sq_vtx_word1_gpr_reg, dst_gpr) \
1853
sq_vtx_word1_gpr_reg = (sq_vtx_word1_gpr_reg & ~SQ_VTX_WORD1_GPR_DST_GPR_MASK) | (dst_gpr << SQ_VTX_WORD1_GPR_DST_GPR_SHIFT)
1854
#define SQ_VTX_WORD1_GPR_SET_DST_REL(sq_vtx_word1_gpr_reg, dst_rel) \
1855
sq_vtx_word1_gpr_reg = (sq_vtx_word1_gpr_reg & ~SQ_VTX_WORD1_GPR_DST_REL_MASK) | (dst_rel << SQ_VTX_WORD1_GPR_DST_REL_SHIFT)
1857
#if defined(LITTLEENDIAN_CPU)
1859
typedef struct _sq_vtx_word1_gpr_t {
1860
unsigned int dst_gpr : SQ_VTX_WORD1_GPR_DST_GPR_SIZE;
1861
unsigned int dst_rel : SQ_VTX_WORD1_GPR_DST_REL_SIZE;
1863
} sq_vtx_word1_gpr_t;
1865
#elif defined(BIGENDIAN_CPU)
1867
typedef struct _sq_vtx_word1_gpr_t {
1869
unsigned int dst_rel : SQ_VTX_WORD1_GPR_DST_REL_SIZE;
1870
unsigned int dst_gpr : SQ_VTX_WORD1_GPR_DST_GPR_SIZE;
1871
} sq_vtx_word1_gpr_t;
1876
unsigned int val : 32;
1877
sq_vtx_word1_gpr_t f;
1878
} sq_vtx_word1_gpr_u;
1882
* SQ_VTX_WORD1_SEM struct
1885
#define SQ_VTX_WORD1_SEM_SEMANTIC_ID_SIZE 8
1887
#define SQ_VTX_WORD1_SEM_SEMANTIC_ID_SHIFT 0
1889
#define SQ_VTX_WORD1_SEM_SEMANTIC_ID_MASK 0x000000ff
1891
#define SQ_VTX_WORD1_SEM_MASK \
1892
(SQ_VTX_WORD1_SEM_SEMANTIC_ID_MASK)
1894
#define SQ_VTX_WORD1_SEM_DEFAULT 0x000000cd
1896
#define SQ_VTX_WORD1_SEM_GET_SEMANTIC_ID(sq_vtx_word1_sem) \
1897
((sq_vtx_word1_sem & SQ_VTX_WORD1_SEM_SEMANTIC_ID_MASK) >> SQ_VTX_WORD1_SEM_SEMANTIC_ID_SHIFT)
1899
#define SQ_VTX_WORD1_SEM_SET_SEMANTIC_ID(sq_vtx_word1_sem_reg, semantic_id) \
1900
sq_vtx_word1_sem_reg = (sq_vtx_word1_sem_reg & ~SQ_VTX_WORD1_SEM_SEMANTIC_ID_MASK) | (semantic_id << SQ_VTX_WORD1_SEM_SEMANTIC_ID_SHIFT)
1902
#if defined(LITTLEENDIAN_CPU)
1904
typedef struct _sq_vtx_word1_sem_t {
1905
unsigned int semantic_id : SQ_VTX_WORD1_SEM_SEMANTIC_ID_SIZE;
1907
} sq_vtx_word1_sem_t;
1909
#elif defined(BIGENDIAN_CPU)
1911
typedef struct _sq_vtx_word1_sem_t {
1913
unsigned int semantic_id : SQ_VTX_WORD1_SEM_SEMANTIC_ID_SIZE;
1914
} sq_vtx_word1_sem_t;
1919
unsigned int val : 32;
1920
sq_vtx_word1_sem_t f;
1921
} sq_vtx_word1_sem_u;
1925
* SQ_VTX_WORD2 struct
1928
#define SQ_VTX_WORD2_OFFSET_SIZE 16
1929
#define SQ_VTX_WORD2_ENDIAN_SWAP_SIZE 2
1930
#define SQ_VTX_WORD2_CONST_BUF_NO_STRIDE_SIZE 1
1931
#define SQ_VTX_WORD2_MEGA_FETCH_SIZE 1
1932
#define SQ_VTX_WORD2_ALT_CONST_SIZE 1
1934
#define SQ_VTX_WORD2_OFFSET_SHIFT 0
1935
#define SQ_VTX_WORD2_ENDIAN_SWAP_SHIFT 16
1936
#define SQ_VTX_WORD2_CONST_BUF_NO_STRIDE_SHIFT 18
1937
#define SQ_VTX_WORD2_MEGA_FETCH_SHIFT 19
1938
#define SQ_VTX_WORD2_ALT_CONST_SHIFT 20
1940
#define SQ_VTX_WORD2_OFFSET_MASK 0x0000ffff
1941
#define SQ_VTX_WORD2_ENDIAN_SWAP_MASK 0x00030000
1942
#define SQ_VTX_WORD2_CONST_BUF_NO_STRIDE_MASK 0x00040000
1943
#define SQ_VTX_WORD2_MEGA_FETCH_MASK 0x00080000
1944
#define SQ_VTX_WORD2_ALT_CONST_MASK 0x00100000
1946
#define SQ_VTX_WORD2_MASK \
1947
(SQ_VTX_WORD2_OFFSET_MASK | \
1948
SQ_VTX_WORD2_ENDIAN_SWAP_MASK | \
1949
SQ_VTX_WORD2_CONST_BUF_NO_STRIDE_MASK | \
1950
SQ_VTX_WORD2_MEGA_FETCH_MASK | \
1951
SQ_VTX_WORD2_ALT_CONST_MASK)
1953
#define SQ_VTX_WORD2_DEFAULT 0x000dcdcd
1955
#define SQ_VTX_WORD2_GET_OFFSET(sq_vtx_word2) \
1956
((sq_vtx_word2 & SQ_VTX_WORD2_OFFSET_MASK) >> SQ_VTX_WORD2_OFFSET_SHIFT)
1957
#define SQ_VTX_WORD2_GET_ENDIAN_SWAP(sq_vtx_word2) \
1958
((sq_vtx_word2 & SQ_VTX_WORD2_ENDIAN_SWAP_MASK) >> SQ_VTX_WORD2_ENDIAN_SWAP_SHIFT)
1959
#define SQ_VTX_WORD2_GET_CONST_BUF_NO_STRIDE(sq_vtx_word2) \
1960
((sq_vtx_word2 & SQ_VTX_WORD2_CONST_BUF_NO_STRIDE_MASK) >> SQ_VTX_WORD2_CONST_BUF_NO_STRIDE_SHIFT)
1961
#define SQ_VTX_WORD2_GET_MEGA_FETCH(sq_vtx_word2) \
1962
((sq_vtx_word2 & SQ_VTX_WORD2_MEGA_FETCH_MASK) >> SQ_VTX_WORD2_MEGA_FETCH_SHIFT)
1963
#define SQ_VTX_WORD2_GET_ALT_CONST(sq_vtx_word2) \
1964
((sq_vtx_word2 & SQ_VTX_WORD2_ALT_CONST_MASK) >> SQ_VTX_WORD2_ALT_CONST_SHIFT)
1966
#define SQ_VTX_WORD2_SET_OFFSET(sq_vtx_word2_reg, offset) \
1967
sq_vtx_word2_reg = (sq_vtx_word2_reg & ~SQ_VTX_WORD2_OFFSET_MASK) | (offset << SQ_VTX_WORD2_OFFSET_SHIFT)
1968
#define SQ_VTX_WORD2_SET_ENDIAN_SWAP(sq_vtx_word2_reg, endian_swap) \
1969
sq_vtx_word2_reg = (sq_vtx_word2_reg & ~SQ_VTX_WORD2_ENDIAN_SWAP_MASK) | (endian_swap << SQ_VTX_WORD2_ENDIAN_SWAP_SHIFT)
1970
#define SQ_VTX_WORD2_SET_CONST_BUF_NO_STRIDE(sq_vtx_word2_reg, const_buf_no_stride) \
1971
sq_vtx_word2_reg = (sq_vtx_word2_reg & ~SQ_VTX_WORD2_CONST_BUF_NO_STRIDE_MASK) | (const_buf_no_stride << SQ_VTX_WORD2_CONST_BUF_NO_STRIDE_SHIFT)
1972
#define SQ_VTX_WORD2_SET_MEGA_FETCH(sq_vtx_word2_reg, mega_fetch) \
1973
sq_vtx_word2_reg = (sq_vtx_word2_reg & ~SQ_VTX_WORD2_MEGA_FETCH_MASK) | (mega_fetch << SQ_VTX_WORD2_MEGA_FETCH_SHIFT)
1974
#define SQ_VTX_WORD2_SET_ALT_CONST(sq_vtx_word2_reg, alt_const) \
1975
sq_vtx_word2_reg = (sq_vtx_word2_reg & ~SQ_VTX_WORD2_ALT_CONST_MASK) | (alt_const << SQ_VTX_WORD2_ALT_CONST_SHIFT)
1977
#if defined(LITTLEENDIAN_CPU)
1979
typedef struct _sq_vtx_word2_t {
1980
unsigned int offset : SQ_VTX_WORD2_OFFSET_SIZE;
1981
unsigned int endian_swap : SQ_VTX_WORD2_ENDIAN_SWAP_SIZE;
1982
unsigned int const_buf_no_stride : SQ_VTX_WORD2_CONST_BUF_NO_STRIDE_SIZE;
1983
unsigned int mega_fetch : SQ_VTX_WORD2_MEGA_FETCH_SIZE;
1984
unsigned int alt_const : SQ_VTX_WORD2_ALT_CONST_SIZE;
1988
#elif defined(BIGENDIAN_CPU)
1990
typedef struct _sq_vtx_word2_t {
1992
unsigned int alt_const : SQ_VTX_WORD2_ALT_CONST_SIZE;
1993
unsigned int mega_fetch : SQ_VTX_WORD2_MEGA_FETCH_SIZE;
1994
unsigned int const_buf_no_stride : SQ_VTX_WORD2_CONST_BUF_NO_STRIDE_SIZE;
1995
unsigned int endian_swap : SQ_VTX_WORD2_ENDIAN_SWAP_SIZE;
1996
unsigned int offset : SQ_VTX_WORD2_OFFSET_SIZE;
2002
unsigned int val : 32;
2006
#endif /* _SQ_MICRO_REG_H */