summaryrefslogtreecommitdiff
path: root/r600d.h
blob: 6c35aba2c09ca6802cf548b9bd973caea15f2451 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
/*
 * Copyright 2010 Jerome Glisse <glisse@freedesktop.org>
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * on the rights to use, copy, modify, merge, publish, distribute, sub
 * license, and/or sell copies of the Software, and to permit persons to whom
 * the Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice (including the next
 * paragraph) shall be included in all copies or substantial portions of the
 * Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
 * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 * USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 * Authors:
 *      Jerome Glisse
 */
#ifndef R600D_H
#define R600D_H

#define PKT3_NOP                               0x10
#define PKT3_INDIRECT_BUFFER_END               0x17
#define PKT3_SET_PREDICATION                   0x20
#define PKT3_REG_RMW                           0x21
#define PKT3_COND_EXEC                         0x22
#define PKT3_PRED_EXEC                         0x23
#define PKT3_START_3D_CMDBUF                   0x24
#define PKT3_DRAW_INDEX_2                      0x27
#define PKT3_CONTEXT_CONTROL                   0x28
#define PKT3_DRAW_INDEX_IMMD_BE                0x29
#define PKT3_INDEX_TYPE                        0x2A
#define PKT3_DRAW_INDEX                        0x2B
#define PKT3_DRAW_INDEX_AUTO                   0x2D
#define PKT3_DRAW_INDEX_IMMD                   0x2E
#define PKT3_NUM_INSTANCES                     0x2F
#define PKT3_STRMOUT_BUFFER_UPDATE             0x34
#define PKT3_INDIRECT_BUFFER_MP                0x38
#define PKT3_MEM_SEMAPHORE                     0x39
#define PKT3_MPEG_INDEX                        0x3A
#define PKT3_WAIT_REG_MEM                      0x3C
#define PKT3_MEM_WRITE                         0x3D
#define PKT3_INDIRECT_BUFFER                   0x32
#define PKT3_CP_INTERRUPT                      0x40
#define PKT3_SURFACE_SYNC                      0x43
#define PKT3_ME_INITIALIZE                     0x44
#define PKT3_COND_WRITE                        0x45
#define PKT3_EVENT_WRITE                       0x46
#define PKT3_EVENT_WRITE_EOP                   0x47
#define PKT3_ONE_REG_WRITE                     0x57
#define PKT3_SET_CONFIG_REG                    0x68
#define PKT3_SET_CONTEXT_REG                   0x69
#define PKT3_SET_ALU_CONST                     0x6A
#define PKT3_SET_BOOL_CONST                    0x6B
#define PKT3_SET_LOOP_CONST                    0x6C
#define PKT3_SET_RESOURCE                      0x6D
#define PKT3_SET_SAMPLER                       0x6E
#define PKT3_SET_CTL_CONST                     0x6F
#define PKT3_SURFACE_BASE_UPDATE               0x73

#define PKT_TYPE_S(x)                   (((x) & 0x3) << 30)
#define PKT_TYPE_G(x)                   (((x) >> 30) & 0x3)
#define PKT_TYPE_C                      0x3FFFFFFF
#define PKT_COUNT_S(x)                  (((x) & 0x3FFF) << 16)
#define PKT_COUNT_G(x)                  (((x) >> 16) & 0x3FFF)
#define PKT_COUNT_C                     0xC000FFFF
#define PKT0_BASE_INDEX_S(x)            (((x) & 0xFFFF) << 0)
#define PKT0_BASE_INDEX_G(x)            (((x) >> 0) & 0xFFFF)
#define PKT0_BASE_INDEX_C               0xFFFF0000
#define PKT3_IT_OPCODE_S(x)             (((x) & 0xFF) << 8)
#define PKT3_IT_OPCODE_G(x)             (((x) >> 8) & 0xFF)
#define PKT3_IT_OPCODE_C                0xFFFF00FF
#define PKT0(index, count) (PKT_TYPE_S(0) | PKT0_BASE_INDEX_S(index) | PKT_COUNT_S(count))
#define PKT3(op, count) (PKT_TYPE_S(3) | PKT3_IT_OPCODE_S(op) | PKT_COUNT_S(count))

/* Registers */
#define R_0280A0_CB_COLOR0_INFO                      0x0280A0
#define   S_0280A0_ENDIAN(x)                           (((x) & 0x3) << 0)
#define   G_0280A0_ENDIAN(x)                           (((x) >> 0) & 0x3)
#define   C_0280A0_ENDIAN                              0xFFFFFFFC
#define   S_0280A0_FORMAT(x)                           (((x) & 0x3F) << 2)
#define   G_0280A0_FORMAT(x)                           (((x) >> 2) & 0x3F)
#define   C_0280A0_FORMAT                              0xFFFFFF03
#define     V_0280A0_COLOR_INVALID                     0x00000000
#define     V_0280A0_COLOR_8                           0x00000001
#define     V_0280A0_COLOR_4_4                         0x00000002
#define     V_0280A0_COLOR_3_3_2                       0x00000003
#define     V_0280A0_COLOR_16                          0x00000005
#define     V_0280A0_COLOR_16_FLOAT                    0x00000006
#define     V_0280A0_COLOR_8_8                         0x00000007
#define     V_0280A0_COLOR_5_6_5                       0x00000008
#define     V_0280A0_COLOR_6_5_5                       0x00000009
#define     V_0280A0_COLOR_1_5_5_5                     0x0000000A
#define     V_0280A0_COLOR_4_4_4_4                     0x0000000B
#define     V_0280A0_COLOR_5_5_5_1                     0x0000000C
#define     V_0280A0_COLOR_32                          0x0000000D
#define     V_0280A0_COLOR_32_FLOAT                    0x0000000E
#define     V_0280A0_COLOR_16_16                       0x0000000F
#define     V_0280A0_COLOR_16_16_FLOAT                 0x00000010
#define     V_0280A0_COLOR_8_24                        0x00000011
#define     V_0280A0_COLOR_8_24_FLOAT                  0x00000012
#define     V_0280A0_COLOR_24_8                        0x00000013
#define     V_0280A0_COLOR_24_8_FLOAT                  0x00000014
#define     V_0280A0_COLOR_10_11_11                    0x00000015
#define     V_0280A0_COLOR_10_11_11_FLOAT              0x00000016
#define     V_0280A0_COLOR_11_11_10                    0x00000017
#define     V_0280A0_COLOR_11_11_10_FLOAT              0x00000018
#define     V_0280A0_COLOR_2_10_10_10                  0x00000019
#define     V_0280A0_COLOR_8_8_8_8                     0x0000001A
#define     V_0280A0_COLOR_10_10_10_2                  0x0000001B
#define     V_0280A0_COLOR_X24_8_32_FLOAT              0x0000001C
#define     V_0280A0_COLOR_32_32                       0x0000001D
#define     V_0280A0_COLOR_32_32_FLOAT                 0x0000001E
#define     V_0280A0_COLOR_16_16_16_16                 0x0000001F
#define     V_0280A0_COLOR_16_16_16_16_FLOAT           0x00000020
#define     V_0280A0_COLOR_32_32_32_32                 0x00000022
#define     V_0280A0_COLOR_32_32_32_32_FLOAT           0x00000023
#define   S_0280A0_ARRAY_MODE(x)                       (((x) & 0xF) << 8)
#define   G_0280A0_ARRAY_MODE(x)                       (((x) >> 8) & 0xF)
#define   C_0280A0_ARRAY_MODE                          0xFFFFF0FF
#define     V_0280A0_ARRAY_LINEAR_GENERAL              0x00000000
#define     V_0280A0_ARRAY_LINEAR_ALIGNED              0x00000001
#define     V_0280A0_ARRAY_1D_TILED_THIN1              0x00000002
#define     V_0280A0_ARRAY_2D_TILED_THIN1              0x00000004
#define   S_0280A0_NUMBER_TYPE(x)                      (((x) & 0x7) << 12)
#define   G_0280A0_NUMBER_TYPE(x)                      (((x) >> 12) & 0x7)
#define   C_0280A0_NUMBER_TYPE                         0xFFFF8FFF
#define   S_0280A0_READ_SIZE(x)                        (((x) & 0x1) << 15)
#define   G_0280A0_READ_SIZE(x)                        (((x) >> 15) & 0x1)
#define   C_0280A0_READ_SIZE                           0xFFFF7FFF
#define   S_0280A0_COMP_SWAP(x)                        (((x) & 0x3) << 16)
#define   G_0280A0_COMP_SWAP(x)                        (((x) >> 16) & 0x3)
#define   C_0280A0_COMP_SWAP                           0xFFFCFFFF
#define   S_0280A0_TILE_MODE(x)                        (((x) & 0x3) << 18)
#define   G_0280A0_TILE_MODE(x)                        (((x) >> 18) & 0x3)
#define   C_0280A0_TILE_MODE                           0xFFF3FFFF
#define   S_0280A0_BLEND_CLAMP(x)                      (((x) & 0x1) << 20)
#define   G_0280A0_BLEND_CLAMP(x)                      (((x) >> 20) & 0x1)
#define   C_0280A0_BLEND_CLAMP                         0xFFEFFFFF
#define   S_0280A0_CLEAR_COLOR(x)                      (((x) & 0x1) << 21)
#define   G_0280A0_CLEAR_COLOR(x)                      (((x) >> 21) & 0x1)
#define   C_0280A0_CLEAR_COLOR                         0xFFDFFFFF
#define   S_0280A0_BLEND_BYPASS(x)                     (((x) & 0x1) << 22)
#define   G_0280A0_BLEND_BYPASS(x)                     (((x) >> 22) & 0x1)
#define   C_0280A0_BLEND_BYPASS                        0xFFBFFFFF
#define   S_0280A0_BLEND_FLOAT32(x)                    (((x) & 0x1) << 23)
#define   G_0280A0_BLEND_FLOAT32(x)                    (((x) >> 23) & 0x1)
#define   C_0280A0_BLEND_FLOAT32                       0xFF7FFFFF
#define   S_0280A0_SIMPLE_FLOAT(x)                     (((x) & 0x1) << 24)
#define   G_0280A0_SIMPLE_FLOAT(x)                     (((x) >> 24) & 0x1)
#define   C_0280A0_SIMPLE_FLOAT                        0xFEFFFFFF
#define   S_0280A0_ROUND_MODE(x)                       (((x) & 0x1) << 25)
#define   G_0280A0_ROUND_MODE(x)                       (((x) >> 25) & 0x1)
#define   C_0280A0_ROUND_MODE                          0xFDFFFFFF
#define   S_0280A0_TILE_COMPACT(x)                     (((x) & 0x1) << 26)
#define   G_0280A0_TILE_COMPACT(x)                     (((x) >> 26) & 0x1)
#define   C_0280A0_TILE_COMPACT                        0xFBFFFFFF
#define   S_0280A0_SOURCE_FORMAT(x)                    (((x) & 0x1) << 27)
#define   G_0280A0_SOURCE_FORMAT(x)                    (((x) >> 27) & 0x1)
#define   C_0280A0_SOURCE_FORMAT                       0xF7FFFFFF
#define R_028060_CB_COLOR0_SIZE                      0x028060
#define   S_028060_PITCH_TILE_MAX(x)                   (((x) & 0x3FF) << 0)
#define   G_028060_PITCH_TILE_MAX(x)                   (((x) >> 0) & 0x3FF)
#define   C_028060_PITCH_TILE_MAX                      0xFFFFFC00
#define   S_028060_SLICE_TILE_MAX(x)                   (((x) & 0xFFFFF) << 10)
#define   G_028060_SLICE_TILE_MAX(x)                   (((x) >> 10) & 0xFFFFF)
#define   C_028060_SLICE_TILE_MAX                      0xC00003FF
#define R_028800_DB_DEPTH_CONTROL                    0x028800
#define   S_028800_STENCIL_ENABLE(x)                   (((x) & 0x1) << 0)
#define   G_028800_STENCIL_ENABLE(x)                   (((x) >> 0) & 0x1)
#define   C_028800_STENCIL_ENABLE                      0xFFFFFFFE
#define   S_028800_Z_ENABLE(x)                         (((x) & 0x1) << 1)
#define   G_028800_Z_ENABLE(x)                         (((x) >> 1) & 0x1)
#define   C_028800_Z_ENABLE                            0xFFFFFFFD
#define   S_028800_Z_WRITE_ENABLE(x)                   (((x) & 0x1) << 2)
#define   G_028800_Z_WRITE_ENABLE(x)                   (((x) >> 2) & 0x1)
#define   C_028800_Z_WRITE_ENABLE                      0xFFFFFFFB
#define   S_028800_ZFUNC(x)                            (((x) & 0x7) << 4)
#define   G_028800_ZFUNC(x)                            (((x) >> 4) & 0x7)
#define   C_028800_ZFUNC                               0xFFFFFF8F
#define   S_028800_BACKFACE_ENABLE(x)                  (((x) & 0x1) << 7)
#define   G_028800_BACKFACE_ENABLE(x)                  (((x) >> 7) & 0x1)
#define   C_028800_BACKFACE_ENABLE                     0xFFFFFF7F
#define   S_028800_STENCILFUNC(x)                      (((x) & 0x7) << 8)
#define   G_028800_STENCILFUNC(x)                      (((x) >> 8) & 0x7)
#define   C_028800_STENCILFUNC                         0xFFFFF8FF
#define   S_028800_STENCILFAIL(x)                      (((x) & 0x7) << 11)
#define   G_028800_STENCILFAIL(x)                      (((x) >> 11) & 0x7)
#define   C_028800_STENCILFAIL                         0xFFFFC7FF
#define   S_028800_STENCILZPASS(x)                     (((x) & 0x7) << 14)
#define   G_028800_STENCILZPASS(x)                     (((x) >> 14) & 0x7)
#define   C_028800_STENCILZPASS                        0xFFFE3FFF
#define   S_028800_STENCILZFAIL(x)                     (((x) & 0x7) << 17)
#define   G_028800_STENCILZFAIL(x)                     (((x) >> 17) & 0x7)
#define   C_028800_STENCILZFAIL                        0xFFF1FFFF
#define   S_028800_STENCILFUNC_BF(x)                   (((x) & 0x7) << 20)
#define   G_028800_STENCILFUNC_BF(x)                   (((x) >> 20) & 0x7)
#define   C_028800_STENCILFUNC_BF                      0xFF8FFFFF
#define   S_028800_STENCILFAIL_BF(x)                   (((x) & 0x7) << 23)
#define   G_028800_STENCILFAIL_BF(x)                   (((x) >> 23) & 0x7)
#define   C_028800_STENCILFAIL_BF                      0xFC7FFFFF
#define   S_028800_STENCILZPASS_BF(x)                  (((x) & 0x7) << 26)
#define   G_028800_STENCILZPASS_BF(x)                  (((x) >> 26) & 0x7)
#define   C_028800_STENCILZPASS_BF                     0xE3FFFFFF
#define   S_028800_STENCILZFAIL_BF(x)                  (((x) & 0x7) << 29)
#define   G_028800_STENCILZFAIL_BF(x)                  (((x) >> 29) & 0x7)
#define   C_028800_STENCILZFAIL_BF                     0x1FFFFFFF
#define R_028010_DB_DEPTH_INFO                       0x028010
#define   S_028010_FORMAT(x)                           (((x) & 0x7) << 0)
#define   G_028010_FORMAT(x)                           (((x) >> 0) & 0x7)
#define   C_028010_FORMAT                              0xFFFFFFF8
#define     V_028010_DEPTH_INVALID                     0x00000000
#define     V_028010_DEPTH_16                          0x00000001
#define     V_028010_DEPTH_X8_24                       0x00000002
#define     V_028010_DEPTH_8_24                        0x00000003
#define     V_028010_DEPTH_X8_24_FLOAT                 0x00000004
#define     V_028010_DEPTH_8_24_FLOAT                  0x00000005
#define     V_028010_DEPTH_32_FLOAT                    0x00000006
#define     V_028010_DEPTH_X24_8_32_FLOAT              0x00000007
#define   S_028010_READ_SIZE(x)                        (((x) & 0x1) << 3)
#define   G_028010_READ_SIZE(x)                        (((x) >> 3) & 0x1)
#define   C_028010_READ_SIZE                           0xFFFFFFF7
#define   S_028010_ARRAY_MODE(x)                       (((x) & 0xF) << 15)
#define   G_028010_ARRAY_MODE(x)                       (((x) >> 15) & 0xF)
#define   C_028010_ARRAY_MODE                          0xFFF87FFF
#define   S_028010_TILE_SURFACE_ENABLE(x)              (((x) & 0x1) << 25)
#define   G_028010_TILE_SURFACE_ENABLE(x)              (((x) >> 25) & 0x1)
#define   C_028010_TILE_SURFACE_ENABLE                 0xFDFFFFFF
#define   S_028010_TILE_COMPACT(x)                     (((x) & 0x1) << 26)
#define   G_028010_TILE_COMPACT(x)                     (((x) >> 26) & 0x1)
#define   C_028010_TILE_COMPACT                        0xFBFFFFFF
#define   S_028010_ZRANGE_PRECISION(x)                 (((x) & 0x1) << 31)
#define   G_028010_ZRANGE_PRECISION(x)                 (((x) >> 31) & 0x1)
#define   C_028010_ZRANGE_PRECISION                    0x7FFFFFFF
#define R_028000_DB_DEPTH_SIZE                       0x028000
#define   S_028000_PITCH_TILE_MAX(x)                   (((x) & 0x3FF) << 0)
#define   G_028000_PITCH_TILE_MAX(x)                   (((x) >> 0) & 0x3FF)
#define   C_028000_PITCH_TILE_MAX                      0xFFFFFC00
#define   S_028000_SLICE_TILE_MAX(x)                   (((x) & 0xFFFFF) << 10)
#define   G_028000_SLICE_TILE_MAX(x)                   (((x) >> 10) & 0xFFFFF)
#define   C_028000_SLICE_TILE_MAX                      0xC00003FF
#define R_028004_DB_DEPTH_VIEW                       0x028004
#define   S_028004_SLICE_START(x)                      (((x) & 0x7FF) << 0)
#define   G_028004_SLICE_START(x)                      (((x) >> 0) & 0x7FF)
#define   C_028004_SLICE_START                         0xFFFFF800
#define   S_028004_SLICE_MAX(x)                        (((x) & 0x7FF) << 13)
#define   G_028004_SLICE_MAX(x)                        (((x) >> 13) & 0x7FF)
#define   C_028004_SLICE_MAX                           0xFF001FFF
#define R_028D24_DB_HTILE_SURFACE                    0x028D24
#define   S_028D24_HTILE_WIDTH(x)                      (((x) & 0x1) << 0)
#define   G_028D24_HTILE_WIDTH(x)                      (((x) >> 0) & 0x1)
#define   C_028D24_HTILE_WIDTH                         0xFFFFFFFE
#define   S_028D24_HTILE_HEIGHT(x)                     (((x) & 0x1) << 1)
#define   G_028D24_HTILE_HEIGHT(x)                     (((x) >> 1) & 0x1)
#define   C_028D24_HTILE_HEIGHT                        0xFFFFFFFD
#define   S_028D24_LINEAR(x)                           (((x) & 0x1) << 2)
#define   G_028D24_LINEAR(x)                           (((x) >> 2) & 0x1)
#define   C_028D24_LINEAR                              0xFFFFFFFB
#define   S_028D24_FULL_CACHE(x)                       (((x) & 0x1) << 3)
#define   G_028D24_FULL_CACHE(x)                       (((x) >> 3) & 0x1)
#define   C_028D24_FULL_CACHE                          0xFFFFFFF7
#define   S_028D24_HTILE_USES_PRELOAD_WIN(x)           (((x) & 0x1) << 4)
#define   G_028D24_HTILE_USES_PRELOAD_WIN(x)           (((x) >> 4) & 0x1)
#define   C_028D24_HTILE_USES_PRELOAD_WIN              0xFFFFFFEF
#define   S_028D24_PRELOAD(x)                          (((x) & 0x1) << 5)
#define   G_028D24_PRELOAD(x)                          (((x) >> 5) & 0x1)
#define   C_028D24_PRELOAD                             0xFFFFFFDF
#define   S_028D24_PREFETCH_WIDTH(x)                   (((x) & 0x3F) << 6)
#define   G_028D24_PREFETCH_WIDTH(x)                   (((x) >> 6) & 0x3F)
#define   C_028D24_PREFETCH_WIDTH                      0xFFFFF03F
#define   S_028D24_PREFETCH_HEIGHT(x)                  (((x) & 0x3F) << 12)
#define   G_028D24_PREFETCH_HEIGHT(x)                  (((x) >> 12) & 0x3F)
#define   C_028D24_PREFETCH_HEIGHT                     0xFFFC0FFF
#define R_028D34_DB_PREFETCH_LIMIT                   0x028D34
#define   S_028D34_DEPTH_HEIGHT_TILE_MAX(x)            (((x) & 0x3FF) << 0)
#define   G_028D34_DEPTH_HEIGHT_TILE_MAX(x)            (((x) >> 0) & 0x3FF)
#define   C_028D34_DEPTH_HEIGHT_TILE_MAX               0xFFFFFC00
#define R_028D10_DB_RENDER_OVERRIDE                  0x028D10
#define   S_028D10_FORCE_HIZ_ENABLE(x)                 (((x) & 0x3) << 0)
#define   G_028D10_FORCE_HIZ_ENABLE(x)                 (((x) >> 0) & 0x3)
#define   C_028D10_FORCE_HIZ_ENABLE                    0xFFFFFFFC
#define   S_028D10_FORCE_HIS_ENABLE0(x)                (((x) & 0x3) << 2)
#define   G_028D10_FORCE_HIS_ENABLE0(x)                (((x) >> 2) & 0x3)
#define   C_028D10_FORCE_HIS_ENABLE0                   0xFFFFFFF3
#define   S_028D10_FORCE_HIS_ENABLE1(x)                (((x) & 0x3) << 4)
#define   G_028D10_FORCE_HIS_ENABLE1(x)                (((x) >> 4) & 0x3)
#define   C_028D10_FORCE_HIS_ENABLE1                   0xFFFFFFCF
#define   S_028D10_FORCE_SHADER_Z_ORDER(x)             (((x) & 0x1) << 6)
#define   G_028D10_FORCE_SHADER_Z_ORDER(x)             (((x) >> 6) & 0x1)
#define   C_028D10_FORCE_SHADER_Z_ORDER                0xFFFFFFBF
#define   S_028D10_FAST_Z_DISABLE(x)                   (((x) & 0x1) << 7)
#define   G_028D10_FAST_Z_DISABLE(x)                   (((x) >> 7) & 0x1)
#define   C_028D10_FAST_Z_DISABLE                      0xFFFFFF7F
#define   S_028D10_FAST_STENCIL_DISABLE(x)             (((x) & 0x1) << 8)
#define   G_028D10_FAST_STENCIL_DISABLE(x)             (((x) >> 8) & 0x1)
#define   C_028D10_FAST_STENCIL_DISABLE                0xFFFFFEFF
#define   S_028D10_NOOP_CULL_DISABLE(x)                (((x) & 0x1) << 9)
#define   G_028D10_NOOP_CULL_DISABLE(x)                (((x) >> 9) & 0x1)
#define   C_028D10_NOOP_CULL_DISABLE                   0xFFFFFDFF
#define   S_028D10_FORCE_COLOR_KILL(x)                 (((x) & 0x1) << 10)
#define   G_028D10_FORCE_COLOR_KILL(x)                 (((x) >> 10) & 0x1)
#define   C_028D10_FORCE_COLOR_KILL                    0xFFFFFBFF
#define   S_028D10_FORCE_Z_READ(x)                     (((x) & 0x1) << 11)
#define   G_028D10_FORCE_Z_READ(x)                     (((x) >> 11) & 0x1)
#define   C_028D10_FORCE_Z_READ                        0xFFFFF7FF
#define   S_028D10_FORCE_STENCIL_READ(x)               (((x) & 0x1) << 12)
#define   G_028D10_FORCE_STENCIL_READ(x)               (((x) >> 12) & 0x1)
#define   C_028D10_FORCE_STENCIL_READ                  0xFFFFEFFF
#define   S_028D10_FORCE_FULL_Z_RANGE(x)               (((x) & 0x3) << 13)
#define   G_028D10_FORCE_FULL_Z_RANGE(x)               (((x) >> 13) & 0x3)
#define   C_028D10_FORCE_FULL_Z_RANGE                  0xFFFF9FFF
#define   S_028D10_FORCE_QC_SMASK_CONFLICT(x)          (((x) & 0x1) << 15)
#define   G_028D10_FORCE_QC_SMASK_CONFLICT(x)          (((x) >> 15) & 0x1)
#define   C_028D10_FORCE_QC_SMASK_CONFLICT             0xFFFF7FFF
#define   S_028D10_DISABLE_VIEWPORT_CLAMP(x)           (((x) & 0x1) << 16)
#define   G_028D10_DISABLE_VIEWPORT_CLAMP(x)           (((x) >> 16) & 0x1)
#define   C_028D10_DISABLE_VIEWPORT_CLAMP              0xFFFEFFFF
#define   S_028D10_IGNORE_SC_ZRANGE(x)                 (((x) & 0x1) << 17)
#define   G_028D10_IGNORE_SC_ZRANGE(x)                 (((x) >> 17) & 0x1)
#define   C_028D10_IGNORE_SC_ZRANGE                    0xFFFDFFFF
#define R_028A40_VGT_GS_MODE                         0x028A40
#define   S_028A40_MODE(x)                             (((x) & 0x3) << 0)
#define   G_028A40_MODE(x)                             (((x) >> 0) & 0x3)
#define   C_028A40_MODE                                0xFFFFFFFC
#define   S_028A40_ES_PASSTHRU(x)                      (((x) & 0x1) << 2)
#define   G_028A40_ES_PASSTHRU(x)                      (((x) >> 2) & 0x1)
#define   C_028A40_ES_PASSTHRU                         0xFFFFFFFB
#define   S_028A40_CUT_MODE(x)                         (((x) & 0x3) << 3)
#define   G_028A40_CUT_MODE(x)                         (((x) >> 3) & 0x3)
#define   C_028A40_CUT_MODE                            0xFFFFFFE7
#define R_008DFC_SQ_CF_WORD0                         0x008DFC
#define   S_008DFC_ADDR(x)                             (((x) & 0xFFFFFFFF) << 0)
#define   G_008DFC_ADDR(x)                             (((x) >> 0) & 0xFFFFFFFF)
#define   C_008DFC_ADDR                                0x00000000
#define R_008DFC_SQ_CF_WORD1                         0x008DFC
#define   S_008DFC_POP_COUNT(x)                        (((x) & 0x7) << 0)
#define   G_008DFC_POP_COUNT(x)                        (((x) >> 0) & 0x7)
#define   C_008DFC_POP_COUNT                           0xFFFFFFF8
#define   S_008DFC_CF_CONST(x)                         (((x) & 0x1F) << 3)
#define   G_008DFC_CF_CONST(x)                         (((x) >> 3) & 0x1F)
#define   C_008DFC_CF_CONST                            0xFFFFFF07
#define   S_008DFC_COND(x)                             (((x) & 0x3) << 8)
#define   G_008DFC_COND(x)                             (((x) >> 8) & 0x3)
#define   C_008DFC_COND                                0xFFFFFCFF
#define   S_008DFC_COUNT(x)                            (((x) & 0x7) << 10)
#define   G_008DFC_COUNT(x)                            (((x) >> 10) & 0x7)
#define   C_008DFC_COUNT                               0xFFFFE3FF
#define   S_008DFC_CALL_COUNT(x)                       (((x) & 0x3F) << 13)
#define   G_008DFC_CALL_COUNT(x)                       (((x) >> 13) & 0x3F)
#define   C_008DFC_CALL_COUNT                          0xFFF81FFF
#define   S_008DFC_END_OF_PROGRAM(x)                   (((x) & 0x1) << 21)
#define   G_008DFC_END_OF_PROGRAM(x)                   (((x) >> 21) & 0x1)
#define   C_008DFC_END_OF_PROGRAM                      0xFFDFFFFF
#define   S_008DFC_VALID_PIXEL_MODE(x)                 (((x) & 0x1) << 22)
#define   G_008DFC_VALID_PIXEL_MODE(x)                 (((x) >> 22) & 0x1)
#define   C_008DFC_VALID_PIXEL_MODE                    0xFFBFFFFF
#define   S_008DFC_CF_INST(x)                          (((x) & 0x7F) << 23)
#define   G_008DFC_CF_INST(x)                          (((x) >> 23) & 0x7F)
#define   C_008DFC_CF_INST                             0xC07FFFFF
#define     V_008DFC_SQ_CF_INST_NOP                    0x00000000
#define     V_008DFC_SQ_CF_INST_TEX                    0x00000001
#define     V_008DFC_SQ_CF_INST_VTX                    0x00000002
#define     V_008DFC_SQ_CF_INST_VTX_TC                 0x00000003
#define     V_008DFC_SQ_CF_INST_LOOP_START             0x00000004
#define     V_008DFC_SQ_CF_INST_LOOP_END               0x00000005
#define     V_008DFC_SQ_CF_INST_LOOP_START_DX10        0x00000006
#define     V_008DFC_SQ_CF_INST_LOOP_START_NO_AL       0x00000007
#define     V_008DFC_SQ_CF_INST_LOOP_CONTINUE          0x00000008
#define     V_008DFC_SQ_CF_INST_LOOP_BREAK             0x00000009
#define     V_008DFC_SQ_CF_INST_JUMP                   0x0000000A
#define     V_008DFC_SQ_CF_INST_PUSH                   0x0000000B
#define     V_008DFC_SQ_CF_INST_PUSH_ELSE              0x0000000C
#define     V_008DFC_SQ_CF_INST_ELSE                   0x0000000D
#define     V_008DFC_SQ_CF_INST_POP                    0x0000000E
#define     V_008DFC_SQ_CF_INST_POP_JUMP               0x0000000F
#define     V_008DFC_SQ_CF_INST_POP_PUSH               0x00000010
#define     V_008DFC_SQ_CF_INST_POP_PUSH_ELSE          0x00000011
#define     V_008DFC_SQ_CF_INST_CALL                   0x00000012
#define     V_008DFC_SQ_CF_INST_CALL_FS                0x00000013
#define     V_008DFC_SQ_CF_INST_RETURN                 0x00000014
#define     V_008DFC_SQ_CF_INST_EMIT_VERTEX            0x00000015
#define     V_008DFC_SQ_CF_INST_EMIT_CUT_VERTEX        0x00000016
#define     V_008DFC_SQ_CF_INST_CUT_VERTEX             0x00000017
#define     V_008DFC_SQ_CF_INST_KILL                   0x00000018
#define   S_008DFC_WHOLE_QUAD_MODE(x)                  (((x) & 0x1) << 30)
#define   G_008DFC_WHOLE_QUAD_MODE(x)                  (((x) >> 30) & 0x1)
#define   C_008DFC_WHOLE_QUAD_MODE                     0xBFFFFFFF
#define   S_008DFC_BARRIER(x)                          (((x) & 0x1) << 31)
#define   G_008DFC_BARRIER(x)                          (((x) >> 31) & 0x1)
#define   C_008DFC_BARRIER                             0x7FFFFFFF
#define R_008DFC_SQ_CF_ALU_WORD0                     0x008DFC
#define   S_008DFC_ALU_ADDR(x)                         (((x) & 0x3FFFFF) << 0)
#define   G_008DFC_ALU_ADDR(x)                         (((x) >> 0) & 0x3FFFFF)
#define   C_008DFC_ALU_ADDR                            0xFFC00000
#define   S_008DFC_KCACHE_BANK0(x)                     (((x) & 0xF) << 22)
#define   G_008DFC_KCACHE_BANK0(x)                     (((x) >> 22) & 0xF)
#define   C_008DFC_KCACHE_BANK0                        0xFC3FFFFF
#define   S_008DFC_KCACHE_BANK1(x)                     (((x) & 0xF) << 26)
#define   G_008DFC_KCACHE_BANK1(x)                     (((x) >> 26) & 0xF)
#define   C_008DFC_KCACHE_BANK1                        0xC3FFFFFF
#define   S_008DFC_KCACHE_MODE0(x)                     (((x) & 0x3) << 30)
#define   G_008DFC_KCACHE_MODE0(x)                     (((x) >> 30) & 0x3)
#define   C_008DFC_KCACHE_MODE0                        0x3FFFFFFF
#define R_008DFC_SQ_CF_ALU_WORD1                     0x008DFC
#define   S_008DFC_KCACHE_MODE1(x)                     (((x) & 0x3) << 0)
#define   G_008DFC_KCACHE_MODE1(x)                     (((x) >> 0) & 0x3)
#define   C_008DFC_KCACHE_MODE1                        0xFFFFFFFC
#define   S_008DFC_KCACHE_ADDR0(x)                     (((x) & 0xFF) << 2)
#define   G_008DFC_KCACHE_ADDR0(x)                     (((x) >> 2) & 0xFF)
#define   C_008DFC_KCACHE_ADDR0                        0xFFFFFC03
#define   S_008DFC_KCACHE_ADDR1(x)                     (((x) & 0xFF) << 10)
#define   G_008DFC_KCACHE_ADDR1(x)                     (((x) >> 10) & 0xFF)
#define   C_008DFC_KCACHE_ADDR1                        0xFFFC03FF
#define   S_008DFC_ALU_COUNT(x)                        (((x) & 0x7F) << 18)
#define   G_008DFC_ALU_COUNT(x)                        (((x) >> 18) & 0x7F)
#define   C_008DFC_ALU_COUNT                           0xFE03FFFF
#define   S_008DFC_USES_WATERFALL(x)                   (((x) & 0x1) << 25)
#define   G_008DFC_USES_WATERFALL(x)                   (((x) >> 25) & 0x1)
#define   C_008DFC_USES_WATERFALL                      0xFDFFFFFF
#define   S_008DFC_CF_ALU_INST(x)                      (((x) & 0xF) << 26)
#define   G_008DFC_CF_ALU_INST(x)                      (((x) >> 26) & 0xF)
#define   C_008DFC_CF_ALU_INST                         0xC3FFFFFF
#define     V_008DFC_SQ_CF_INST_ALU                    0x00000008
#define     V_008DFC_SQ_CF_INST_ALU_PUSH_BEFORE        0x00000009
#define     V_008DFC_SQ_CF_INST_ALU_POP_AFTER          0x0000000A
#define     V_008DFC_SQ_CF_INST_ALU_POP2_AFTER         0x0000000B
#define     V_008DFC_SQ_CF_INST_ALU_CONTINUE           0x0000000D
#define     V_008DFC_SQ_CF_INST_ALU_BREAK              0x0000000E
#define     V_008DFC_SQ_CF_INST_ALU_ELSE_AFTER         0x0000000F
#define   S_008DFC_WHOLE_QUAD_MODE(x)                  (((x) & 0x1) << 30)
#define   G_008DFC_WHOLE_QUAD_MODE(x)                  (((x) >> 30) & 0x1)
#define   C_008DFC_WHOLE_QUAD_MODE                     0xBFFFFFFF
#define   S_008DFC_BARRIER(x)                          (((x) & 0x1) << 31)
#define   G_008DFC_BARRIER(x)                          (((x) >> 31) & 0x1)
#define   C_008DFC_BARRIER                             0x7FFFFFFF
#define R_008DFC_SQ_CF_ALLOC_EXPORT_WORD0            0x008DFC
#define   S_008DFC_ARRAY_BASE(x)                       (((x) & 0x1FFF) << 0)
#define   G_008DFC_ARRAY_BASE(x)                       (((x) >> 0) & 0x1FFF)
#define   C_008DFC_ARRAY_BASE                          0xFFFFE000
#define   S_008DFC_TYPE(x)                             (((x) & 0x3) << 13)
#define   G_008DFC_TYPE(x)                             (((x) >> 13) & 0x3)
#define   C_008DFC_TYPE                                0xFFFF9FFF
#define   S_008DFC_RW_GPR(x)                           (((x) & 0x7F) << 15)
#define   G_008DFC_RW_GPR(x)                           (((x) >> 15) & 0x7F)
#define   C_008DFC_RW_GPR                              0xFFC07FFF
#define   S_008DFC_RW_REL(x)                           (((x) & 0x1) << 22)
#define   G_008DFC_RW_REL(x)                           (((x) >> 22) & 0x1)
#define   C_008DFC_RW_REL                              0xFFBFFFFF
#define   S_008DFC_INDEX_GPR(x)                        (((x) & 0x7F) << 23)
#define   G_008DFC_INDEX_GPR(x)                        (((x) >> 23) & 0x7F)
#define   C_008DFC_INDEX_GPR                           0xC07FFFFF
#define   S_008DFC_ELEM_SIZE(x)                        (((x) & 0x3) << 30)
#define   G_008DFC_ELEM_SIZE(x)                        (((x) >> 30) & 0x3)
#define   C_008DFC_ELEM_SIZE                           0x3FFFFFFF
#define R_008DFC_SQ_CF_ALLOC_EXPORT_WORD1            0x008DFC
#define   S_008DFC_BURST_COUNT(x)                      (((x) & 0xF) << 17)
#define   G_008DFC_BURST_COUNT(x)                      (((x) >> 17) & 0xF)
#define   C_008DFC_BURST_COUNT                         0xFFE1FFFF
#define   S_008DFC_END_OF_PROGRAM(x)                   (((x) & 0x1) << 21)
#define   G_008DFC_END_OF_PROGRAM(x)                   (((x) >> 21) & 0x1)
#define   C_008DFC_END_OF_PROGRAM                      0xFFDFFFFF
#define   S_008DFC_VALID_PIXEL_MODE(x)                 (((x) & 0x1) << 22)
#define   G_008DFC_VALID_PIXEL_MODE(x)                 (((x) >> 22) & 0x1)
#define   C_008DFC_VALID_PIXEL_MODE                    0xFFBFFFFF
#define   S_008DFC_CF_INST(x)                          (((x) & 0x7F) << 23)
#define   G_008DFC_CF_INST(x)                          (((x) >> 23) & 0x7F)
#define   C_008DFC_CF_INST                             0xC07FFFFF
#define     V_008DFC_SQ_CF_INST_MEM_STREAM0            0x00000020
#define     V_008DFC_SQ_CF_INST_MEM_STREAM1            0x00000021
#define     V_008DFC_SQ_CF_INST_MEM_STREAM2            0x00000022
#define     V_008DFC_SQ_CF_INST_MEM_STREAM3            0x00000023
#define     V_008DFC_SQ_CF_INST_MEM_SCRATCH            0x00000024
#define     V_008DFC_SQ_CF_INST_MEM_REDUCTION          0x00000025
#define     V_008DFC_SQ_CF_INST_MEM_RING               0x00000026
#define     V_008DFC_SQ_CF_INST_EXPORT                 0x00000027
#define     V_008DFC_SQ_CF_INST_EXPORT_DONE            0x00000028
#define   S_008DFC_WHOLE_QUAD_MODE(x)                  (((x) & 0x1) << 30)
#define   G_008DFC_WHOLE_QUAD_MODE(x)                  (((x) >> 30) & 0x1)
#define   C_008DFC_WHOLE_QUAD_MODE                     0xBFFFFFFF
#define   S_008DFC_BARRIER(x)                          (((x) & 0x1) << 31)
#define   G_008DFC_BARRIER(x)                          (((x) >> 31) & 0x1)
#define   C_008DFC_BARRIER                             0x7FFFFFFF
#define R_008DFC_SQ_CF_ALLOC_EXPORT_WORD1_BUF        0x008DFC
#define   S_008DFC_ARRAY_SIZE(x)                       (((x) & 0xFFF) << 0)
#define   G_008DFC_ARRAY_SIZE(x)                       (((x) >> 0) & 0xFFF)
#define   C_008DFC_ARRAY_SIZE                          0xFFFFF000
#define   S_008DFC_COMP_MASK(x)                        (((x) & 0xF) << 12)
#define   G_008DFC_COMP_MASK(x)                        (((x) >> 12) & 0xF)
#define   C_008DFC_COMP_MASK                           0xFFFF0FFF
#define R_008DFC_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ       0x008DFC
#define   S_008DFC_SEL_X(x)                            (((x) & 0x7) << 0)
#define   G_008DFC_SEL_X(x)                            (((x) >> 0) & 0x7)
#define   C_008DFC_SEL_X                               0xFFFFFFF8
#define   S_008DFC_SEL_Y(x)                            (((x) & 0x7) << 3)
#define   G_008DFC_SEL_Y(x)                            (((x) >> 3) & 0x7)
#define   C_008DFC_SEL_Y                               0xFFFFFFC7
#define   S_008DFC_SEL_Z(x)                            (((x) & 0x7) << 6)
#define   G_008DFC_SEL_Z(x)                            (((x) >> 6) & 0x7)
#define   C_008DFC_SEL_Z                               0xFFFFFE3F
#define   S_008DFC_SEL_W(x)                            (((x) & 0x7) << 9)
#define   G_008DFC_SEL_W(x)                            (((x) >> 9) & 0x7)
#define   C_008DFC_SEL_W                               0xFFFFF1FF
#define R_008DFC_SQ_VTX_WORD0                        0x008DFC
#define   S_008DFC_VTX_INST(x)                         (((x) & 0x1F) << 0)
#define   G_008DFC_VTX_INST(x)                         (((x) >> 0) & 0x1F)
#define   C_008DFC_VTX_INST                            0xFFFFFFE0
#define   S_008DFC_FETCH_TYPE(x)                       (((x) & 0x3) << 5)
#define   G_008DFC_FETCH_TYPE(x)                       (((x) >> 5) & 0x3)
#define   C_008DFC_FETCH_TYPE                          0xFFFFFF9F
#define   S_008DFC_FETCH_WHOLE_QUAD(x)                 (((x) & 0x1) << 7)
#define   G_008DFC_FETCH_WHOLE_QUAD(x)                 (((x) >> 7) & 0x1)
#define   C_008DFC_FETCH_WHOLE_QUAD                    0xFFFFFF7F
#define   S_008DFC_BUFFER_ID(x)                        (((x) & 0xFF) << 8)
#define   G_008DFC_BUFFER_ID(x)                        (((x) >> 8) & 0xFF)
#define   C_008DFC_BUFFER_ID                           0xFFFF00FF
#define   S_008DFC_SRC_GPR(x)                          (((x) & 0x7F) << 16)
#define   G_008DFC_SRC_GPR(x)                          (((x) >> 16) & 0x7F)
#define   C_008DFC_SRC_GPR                             0xFF80FFFF
#define   S_008DFC_SRC_REL(x)                          (((x) & 0x1) << 23)
#define   G_008DFC_SRC_REL(x)                          (((x) >> 23) & 0x1)
#define   C_008DFC_SRC_REL                             0xFF7FFFFF
#define   S_008DFC_SRC_SEL_X(x)                        (((x) & 0x3) << 24)
#define   G_008DFC_SRC_SEL_X(x)                        (((x) >> 24) & 0x3)
#define   C_008DFC_SRC_SEL_X                           0xFCFFFFFF
#define   S_008DFC_MEGA_FETCH_COUNT(x)                 (((x) & 0x3F) << 26)
#define   G_008DFC_MEGA_FETCH_COUNT(x)                 (((x) >> 26) & 0x3F)
#define   C_008DFC_MEGA_FETCH_COUNT                    0x03FFFFFF
#define R_008DFC_SQ_VTX_WORD1                        0x008DFC
#define   S_008DFC_DST_SEL_X(x)                        (((x) & 0x7) << 9)
#define   G_008DFC_DST_SEL_X(x)                        (((x) >> 9) & 0x7)
#define   C_008DFC_DST_SEL_X                           0xFFFFF1FF
#define   S_008DFC_DST_SEL_Y(x)                        (((x) & 0x7) << 12)
#define   G_008DFC_DST_SEL_Y(x)                        (((x) >> 12) & 0x7)
#define   C_008DFC_DST_SEL_Y                           0xFFFF8FFF
#define   S_008DFC_DST_SEL_Z(x)                        (((x) & 0x7) << 15)
#define   G_008DFC_DST_SEL_Z(x)                        (((x) >> 15) & 0x7)
#define   C_008DFC_DST_SEL_Z                           0xFFFC7FFF
#define   S_008DFC_DST_SEL_W(x)                        (((x) & 0x7) << 18)
#define   G_008DFC_DST_SEL_W(x)                        (((x) >> 18) & 0x7)
#define   C_008DFC_DST_SEL_W                           0xFFE3FFFF
#define   S_008DFC_USE_CONST_FIELDS(x)                 (((x) & 0x1) << 21)
#define   G_008DFC_USE_CONST_FIELDS(x)                 (((x) >> 21) & 0x1)
#define   C_008DFC_USE_CONST_FIELDS                    0xFFDFFFFF
#define   S_008DFC_DATA_FORMAT(x)                      (((x) & 0x3F) << 22)
#define   G_008DFC_DATA_FORMAT(x)                      (((x) >> 22) & 0x3F)
#define   C_008DFC_DATA_FORMAT                         0xF03FFFFF
#define   S_008DFC_NUM_FORMAT_ALL(x)                   (((x) & 0x3) << 28)
#define   G_008DFC_NUM_FORMAT_ALL(x)                   (((x) >> 28) & 0x3)
#define   C_008DFC_NUM_FORMAT_ALL                      0xCFFFFFFF
#define   S_008DFC_FORMAT_COMP_ALL(x)                  (((x) & 0x1) << 30)
#define   G_008DFC_FORMAT_COMP_ALL(x)                  (((x) >> 30) & 0x1)
#define   C_008DFC_FORMAT_COMP_ALL                     0xBFFFFFFF
#define   S_008DFC_SRF_MODE_ALL(x)                     (((x) & 0x1) << 31)
#define   G_008DFC_SRF_MODE_ALL(x)                     (((x) >> 31) & 0x1)
#define   C_008DFC_SRF_MODE_ALL                        0x7FFFFFFF
#define R_008DFC_SQ_VTX_WORD1_GPR                    0x008DFC
#define   S_008DFC_DST_GPR(x)                          (((x) & 0x7F) << 0)
#define   G_008DFC_DST_GPR(x)                          (((x) >> 0) & 0x7F)
#define   C_008DFC_DST_GPR                             0xFFFFFF80
#define   S_008DFC_DST_REL(x)                          (((x) & 0x1) << 7)
#define   G_008DFC_DST_REL(x)                          (((x) >> 7) & 0x1)
#define   C_008DFC_DST_REL                             0xFFFFFF7F
#define R_008DFC_SQ_VTX_WORD2                        0x008DFC
#define   S_008DFC_OFFSET(x)                           (((x) & 0xFFFF) << 0)
#define   G_008DFC_OFFSET(x)                           (((x) >> 0) & 0xFFFF)
#define   C_008DFC_OFFSET                              0xFFFF0000
#define   S_008DFC_ENDIAN_SWAP(x)                      (((x) & 0x3) << 16)
#define   G_008DFC_ENDIAN_SWAP(x)                      (((x) >> 16) & 0x3)
#define   C_008DFC_ENDIAN_SWAP                         0xFFFCFFFF
#define   S_008DFC_CONST_BUF_NO_STRIDE(x)              (((x) & 0x1) << 18)
#define   G_008DFC_CONST_BUF_NO_STRIDE(x)              (((x) >> 18) & 0x1)
#define   C_008DFC_CONST_BUF_NO_STRIDE                 0xFFFBFFFF
#define   S_008DFC_MEGA_FETCH(x)                       (((x) & 0x1) << 19)
#define   G_008DFC_MEGA_FETCH(x)                       (((x) >> 19) & 0x1)
#define   C_008DFC_MEGA_FETCH                          0xFFF7FFFF
#define   S_008DFC_ALT_CONST(x)                        (((x) & 0x1) << 20)
#define   G_008DFC_ALT_CONST(x)                        (((x) >> 20) & 0x1)
#define   C_008DFC_ALT_CONST                           0xFFEFFFFF
#define R_008040_WAIT_UNTIL                          0x008040
#define   S_008040_WAIT_CP_DMA_IDLE(x)                 (((x) & 0x1) << 8)
#define   G_008040_WAIT_CP_DMA_IDLE(x)                 (((x) >> 8) & 0x1)
#define   C_008040_WAIT_CP_DMA_IDLE                    0xFFFFFEFF
#define   S_008040_WAIT_CMDFIFO(x)                     (((x) & 0x1) << 10)
#define   G_008040_WAIT_CMDFIFO(x)                     (((x) >> 10) & 0x1)
#define   C_008040_WAIT_CMDFIFO                        0xFFFFFBFF
#define   S_008040_WAIT_2D_IDLE(x)                     (((x) & 0x1) << 14)
#define   G_008040_WAIT_2D_IDLE(x)                     (((x) >> 14) & 0x1)
#define   C_008040_WAIT_2D_IDLE                        0xFFFFBFFF
#define   S_008040_WAIT_3D_IDLE(x)                     (((x) & 0x1) << 15)
#define   G_008040_WAIT_3D_IDLE(x)                     (((x) >> 15) & 0x1)
#define   C_008040_WAIT_3D_IDLE                        0xFFFF7FFF
#define   S_008040_WAIT_2D_IDLECLEAN(x)                (((x) & 0x1) << 16)
#define   G_008040_WAIT_2D_IDLECLEAN(x)                (((x) >> 16) & 0x1)
#define   C_008040_WAIT_2D_IDLECLEAN                   0xFFFEFFFF
#define   S_008040_WAIT_3D_IDLECLEAN(x)                (((x) & 0x1) << 17)
#define   G_008040_WAIT_3D_IDLECLEAN(x)                (((x) >> 17) & 0x1)
#define   C_008040_WAIT_3D_IDLECLEAN                   0xFFFDFFFF
#define   S_008040_WAIT_EXTERN_SIG(x)                  (((x) & 0x1) << 19)
#define   G_008040_WAIT_EXTERN_SIG(x)                  (((x) >> 19) & 0x1)
#define   C_008040_WAIT_EXTERN_SIG                     0xFFF7FFFF
#define   S_008040_CMDFIFO_ENTRIES(x)                  (((x) & 0x1F) << 20)
#define   G_008040_CMDFIFO_ENTRIES(x)                  (((x) >> 20) & 0x1F)
#define   C_008040_CMDFIFO_ENTRIES                     0xFE0FFFFF
#define R_0286CC_SPI_PS_IN_CONTROL_0                 0x0286CC
#define   S_0286CC_NUM_INTERP(x)                       (((x) & 0x3F) << 0)
#define   G_0286CC_NUM_INTERP(x)                       (((x) >> 0) & 0x3F)
#define   C_0286CC_NUM_INTERP                          0xFFFFFFC0
#define   S_0286CC_POSITION_ENA(x)                     (((x) & 0x1) << 8)
#define   G_0286CC_POSITION_ENA(x)                     (((x) >> 8) & 0x1)
#define   C_0286CC_POSITION_ENA                        0xFFFFFEFF
#define   S_0286CC_POSITION_CENTROID(x)                (((x) & 0x1) << 9)
#define   G_0286CC_POSITION_CENTROID(x)                (((x) >> 9) & 0x1)
#define   C_0286CC_POSITION_CENTROID                   0xFFFFFDFF
#define   S_0286CC_POSITION_ADDR(x)                    (((x) & 0x1F) << 10)
#define   G_0286CC_POSITION_ADDR(x)                    (((x) >> 10) & 0x1F)
#define   C_0286CC_POSITION_ADDR                       0xFFFF83FF
#define   S_0286CC_PARAM_GEN(x)                        (((x) & 0xF) << 15)
#define   G_0286CC_PARAM_GEN(x)                        (((x) >> 15) & 0xF)
#define   C_0286CC_PARAM_GEN                           0xFFF87FFF
#define   S_0286CC_PARAM_GEN_ADDR(x)                   (((x) & 0x7F) << 19)
#define   G_0286CC_PARAM_GEN_ADDR(x)                   (((x) >> 19) & 0x7F)
#define   C_0286CC_PARAM_GEN_ADDR                      0xFC07FFFF
#define   S_0286CC_BARYC_SAMPLE_CNTL(x)                (((x) & 0x3) << 26)
#define   G_0286CC_BARYC_SAMPLE_CNTL(x)                (((x) >> 26) & 0x3)
#define   C_0286CC_BARYC_SAMPLE_CNTL                   0xF3FFFFFF
#define   S_0286CC_PERSP_GRADIENT_ENA(x)               (((x) & 0x1) << 28)
#define   G_0286CC_PERSP_GRADIENT_ENA(x)               (((x) >> 28) & 0x1)
#define   C_0286CC_PERSP_GRADIENT_ENA                  0xEFFFFFFF
#define   S_0286CC_LINEAR_GRADIENT_ENA(x)              (((x) & 0x1) << 29)
#define   G_0286CC_LINEAR_GRADIENT_ENA(x)              (((x) >> 29) & 0x1)
#define   C_0286CC_LINEAR_GRADIENT_ENA                 0xDFFFFFFF
#define   S_0286CC_POSITION_SAMPLE(x)                  (((x) & 0x1) << 30)
#define   G_0286CC_POSITION_SAMPLE(x)                  (((x) >> 30) & 0x1)
#define   C_0286CC_POSITION_SAMPLE                     0xBFFFFFFF
#define   S_0286CC_BARYC_AT_SAMPLE_ENA(x)              (((x) & 0x1) << 31)
#define   G_0286CC_BARYC_AT_SAMPLE_ENA(x)              (((x) >> 31) & 0x1)
#define   C_0286CC_BARYC_AT_SAMPLE_ENA                 0x7FFFFFFF
#define R_0286D0_SPI_PS_IN_CONTROL_1                 0x0286D0
#define   S_0286D0_GEN_INDEX_PIX(x)                    (((x) & 0x1) << 0)
#define   G_0286D0_GEN_INDEX_PIX(x)                    (((x) >> 0) & 0x1)
#define   C_0286D0_GEN_INDEX_PIX                       0xFFFFFFFE
#define   S_0286D0_GEN_INDEX_PIX_ADDR(x)               (((x) & 0x7F) << 1)
#define   G_0286D0_GEN_INDEX_PIX_ADDR(x)               (((x) >> 1) & 0x7F)
#define   C_0286D0_GEN_INDEX_PIX_ADDR                  0xFFFFFF01
#define   S_0286D0_FRONT_FACE_ENA(x)                   (((x) & 0x1) << 8)
#define   G_0286D0_FRONT_FACE_ENA(x)                   (((x) >> 8) & 0x1)
#define   C_0286D0_FRONT_FACE_ENA                      0xFFFFFEFF
#define   S_0286D0_FRONT_FACE_CHAN(x)                  (((x) & 0x3) << 9)
#define   G_0286D0_FRONT_FACE_CHAN(x)                  (((x) >> 9) & 0x3)
#define   C_0286D0_FRONT_FACE_CHAN                     0xFFFFF9FF
#define   S_0286D0_FRONT_FACE_ALL_BITS(x)              (((x) & 0x1) << 11)
#define   G_0286D0_FRONT_FACE_ALL_BITS(x)              (((x) >> 11) & 0x1)
#define   C_0286D0_FRONT_FACE_ALL_BITS                 0xFFFFF7FF
#define   S_0286D0_FRONT_FACE_ADDR(x)                  (((x) & 0x1F) << 12)
#define   G_0286D0_FRONT_FACE_ADDR(x)                  (((x) >> 12) & 0x1F)
#define   C_0286D0_FRONT_FACE_ADDR                     0xFFFE0FFF
#define   S_0286D0_FOG_ADDR(x)                         (((x) & 0x7F) << 17)
#define   G_0286D0_FOG_ADDR(x)                         (((x) >> 17) & 0x7F)
#define   C_0286D0_FOG_ADDR                            0xFF01FFFF
#define   S_0286D0_FIXED_PT_POSITION_ENA(x)            (((x) & 0x1) << 24)
#define   G_0286D0_FIXED_PT_POSITION_ENA(x)            (((x) >> 24) & 0x1)
#define   C_0286D0_FIXED_PT_POSITION_ENA               0xFEFFFFFF
#define   S_0286D0_FIXED_PT_POSITION_ADDR(x)           (((x) & 0x1F) << 25)
#define   G_0286D0_FIXED_PT_POSITION_ADDR(x)           (((x) >> 25) & 0x1F)
#define   C_0286D0_FIXED_PT_POSITION_ADDR              0xC1FFFFFF
#define R_0286C4_SPI_VS_OUT_CONFIG                   0x0286C4
#define   S_0286C4_VS_PER_COMPONENT(x)                 (((x) & 0x1) << 0)
#define   G_0286C4_VS_PER_COMPONENT(x)                 (((x) >> 0) & 0x1)
#define   C_0286C4_VS_PER_COMPONENT                    0xFFFFFFFE
#define   S_0286C4_VS_EXPORT_COUNT(x)                  (((x) & 0x1F) << 1)
#define   G_0286C4_VS_EXPORT_COUNT(x)                  (((x) >> 1) & 0x1F)
#define   C_0286C4_VS_EXPORT_COUNT                     0xFFFFFFC1
#define   S_0286C4_VS_EXPORTS_FOG(x)                   (((x) & 0x1) << 8)
#define   G_0286C4_VS_EXPORTS_FOG(x)                   (((x) >> 8) & 0x1)
#define   C_0286C4_VS_EXPORTS_FOG                      0xFFFFFEFF
#define   S_0286C4_VS_OUT_FOG_VEC_ADDR(x)              (((x) & 0x1F) << 9)
#define   G_0286C4_VS_OUT_FOG_VEC_ADDR(x)              (((x) >> 9) & 0x1F)
#define   C_0286C4_VS_OUT_FOG_VEC_ADDR                 0xFFFFC1FF
#define R_028240_PA_SC_GENERIC_SCISSOR_TL            0x028240
#define   S_028240_TL_X(x)                             (((x) & 0x3FFF) << 0)
#define   G_028240_TL_X(x)                             (((x) >> 0) & 0x3FFF)
#define   C_028240_TL_X                                0xFFFFC000
#define   S_028240_TL_Y(x)                             (((x) & 0x3FFF) << 16)
#define   G_028240_TL_Y(x)                             (((x) >> 16) & 0x3FFF)
#define   C_028240_TL_Y                                0xC000FFFF
#define   S_028240_WINDOW_OFFSET_DISABLE(x)            (((x) & 0x1) << 31)
#define   G_028240_WINDOW_OFFSET_DISABLE(x)            (((x) >> 31) & 0x1)
#define   C_028240_WINDOW_OFFSET_DISABLE               0x7FFFFFFF
#define R_028244_PA_SC_GENERIC_SCISSOR_BR            0x028244
#define   S_028244_BR_X(x)                             (((x) & 0x3FFF) << 0)
#define   G_028244_BR_X(x)                             (((x) >> 0) & 0x3FFF)
#define   C_028244_BR_X                                0xFFFFC000
#define   S_028244_BR_Y(x)                             (((x) & 0x3FFF) << 16)
#define   G_028244_BR_Y(x)                             (((x) >> 16) & 0x3FFF)
#define   C_028244_BR_Y                                0xC000FFFF
#define R_028030_PA_SC_SCREEN_SCISSOR_TL             0x028030
#define   S_028030_TL_X(x)                             (((x) & 0x7FFF) << 0)
#define   G_028030_TL_X(x)                             (((x) >> 0) & 0x7FFF)
#define   C_028030_TL_X                                0xFFFF8000
#define   S_028030_TL_Y(x)                             (((x) & 0x7FFF) << 16)
#define   G_028030_TL_Y(x)                             (((x) >> 16) & 0x7FFF)
#define   C_028030_TL_Y                                0x8000FFFF
#define R_028034_PA_SC_SCREEN_SCISSOR_BR             0x028034
#define   S_028034_BR_X(x)                             (((x) & 0x7FFF) << 0)
#define   G_028034_BR_X(x)                             (((x) >> 0) & 0x7FFF)
#define   C_028034_BR_X                                0xFFFF8000
#define   S_028034_BR_Y(x)                             (((x) & 0x7FFF) << 16)
#define   G_028034_BR_Y(x)                             (((x) >> 16) & 0x7FFF)
#define   C_028034_BR_Y                                0x8000FFFF
#define R_028204_PA_SC_WINDOW_SCISSOR_TL             0x028204
#define   S_028204_TL_X(x)                             (((x) & 0x3FFF) << 0)
#define   G_028204_TL_X(x)                             (((x) >> 0) & 0x3FFF)
#define   C_028204_TL_X                                0xFFFFC000
#define   S_028204_TL_Y(x)                             (((x) & 0x3FFF) << 16)
#define   G_028204_TL_Y(x)                             (((x) >> 16) & 0x3FFF)
#define   C_028204_TL_Y                                0xC000FFFF
#define   S_028204_WINDOW_OFFSET_DISABLE(x)            (((x) & 0x1) << 31)
#define   G_028204_WINDOW_OFFSET_DISABLE(x)            (((x) >> 31) & 0x1)
#define   C_028204_WINDOW_OFFSET_DISABLE               0x7FFFFFFF
#define R_028208_PA_SC_WINDOW_SCISSOR_BR             0x028208
#define   S_028208_BR_X(x)                             (((x) & 0x3FFF) << 0)
#define   G_028208_BR_X(x)                             (((x) >> 0) & 0x3FFF)
#define   C_028208_BR_X                                0xFFFFC000
#define   S_028208_BR_Y(x)                             (((x) & 0x3FFF) << 16)
#define   G_028208_BR_Y(x)                             (((x) >> 16) & 0x3FFF)
#define   C_028208_BR_Y                                0xC000FFFF
#define R_0287F0_VGT_DRAW_INITIATOR                  0x0287F0
#define   S_0287F0_SOURCE_SELECT(x)                    (((x) & 0x3) << 0)
#define   G_0287F0_SOURCE_SELECT(x)                    (((x) >> 0) & 0x3)
#define   C_0287F0_SOURCE_SELECT                       0xFFFFFFFC
#define   S_0287F0_MAJOR_MODE(x)                       (((x) & 0x3) << 2)
#define   G_0287F0_MAJOR_MODE(x)                       (((x) >> 2) & 0x3)
#define   C_0287F0_MAJOR_MODE                          0xFFFFFFF3
#define   S_0287F0_SPRITE_EN(x)                        (((x) & 0x1) << 4)
#define   G_0287F0_SPRITE_EN(x)                        (((x) >> 4) & 0x1)
#define   C_0287F0_SPRITE_EN                           0xFFFFFFEF
#define   S_0287F0_NOT_EOP(x)                          (((x) & 0x1) << 5)
#define   G_0287F0_NOT_EOP(x)                          (((x) >> 5) & 0x1)
#define   C_0287F0_NOT_EOP                             0xFFFFFFDF
#define   S_0287F0_USE_OPAQUE(x)                       (((x) & 0x1) << 6)
#define   G_0287F0_USE_OPAQUE(x)                       (((x) >> 6) & 0x1)
#define   C_0287F0_USE_OPAQUE                          0xFFFFFFBF

#endif