1/*
2 * Copyright 2013 Vadim Girlin <vadimgirlin@gmail.com>
3 *
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 * on the rights to use, copy, modify, merge, publish, distribute, sub
8 * license, and/or sell copies of the Software, and to permit persons to whom
9 * the Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice (including the next
12 * paragraph) shall be included in all copies or substantial portions of the
13 * Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
18 * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
19 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
20 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
21 * USE OR OTHER DEALINGS IN THE SOFTWARE.
22 *
23 * Authors:
24 *      Vadim Girlin
25 */
26
27// TODO add all formats
28
29// CF
30
31BC_FORMAT_BEGIN_HW(CF_WORD0, R6R7)
32BC_FIELD(CF_WORD0,      ADDR,               ADDR,       31, 0)
33BC_FORMAT_END(CF_WORD0)
34
35BC_FORMAT_BEGIN_HW(CF_WORD0, EGCM)
36BC_FIELD(CF_WORD0,      ADDR,               ADDR,       23, 0)
37BC_FIELD(CF_WORD0,      JUMPTABLE_SEL,      JTS,        26, 24)
38BC_RSRVD(CF_WORD0,                                      31, 27)
39BC_FORMAT_END(CF_WORD0)
40
41
42BC_FORMAT_BEGIN_HW(CF_GWS_WORD0, EGCM)
43BC_FIELD(CF_GWS_WORD0,  VALUE,              VAL,        9,  0)
44BC_RSRVD(CF_GWS_WORD0,                                  15, 10)
45BC_FIELD(CF_GWS_WORD0,  RESOURCE,           RSRC,       20, 16)
46BC_RSRVD(CF_GWS_WORD0,                                  24, 21)
47BC_FIELD(CF_GWS_WORD0,  SIGN,               SIGN,       25, 25)
48BC_FIELD(CF_GWS_WORD0,  VAL_INDEX_MODE,     VIM,        27, 26)
49BC_FIELD(CF_GWS_WORD0,  RSRC_INDEX_MODE,    RIM,        29, 28)
50BC_FIELD(CF_GWS_WORD0,  GWS_OPCODE,         GWS_OP,     31, 30)
51BC_FORMAT_END(CF_GWS_WORD0)
52
53
54BC_FORMAT_BEGIN_HW(CF_WORD1, R6R7)
55BC_FIELD(CF_WORD1,      POP_COUNT,          PC,         2,  0)
56BC_FIELD(CF_WORD1,      CF_CONST,           CF_CONST,   7,  3)
57BC_FIELD(CF_WORD1,      COND,               COND,       9,  8)
58BC_FIELD(CF_WORD1,      COUNT,              COUNT,      12, 10)
59BC_FIELD(CF_WORD1,      CALL_COUNT,         CALL_CNT,   18, 13)
60BC_FIELD(CF_WORD1,      COUNT_3,            COUNT_3,    19, 19)
61BC_RSRVD(CF_WORD1,                                      20, 20)
62BC_FIELD(CF_WORD1,      END_OF_PROGRAM,     EOP,        21, 21)
63BC_FIELD(CF_WORD1,      VALID_PIXEL_MODE,   VPM,        22, 22)
64BC_FIELD(CF_WORD1,      CF_INST,            CF_INST,    29, 23)
65BC_FIELD(CF_WORD1,      WHOLE_QUAD_MODE,    WQM,        30, 30)
66BC_FIELD(CF_WORD1,      BARRIER,            B,          31, 31)
67BC_FORMAT_END(CF_WORD1)
68
69BC_FORMAT_BEGIN_HW(CF_WORD1, EG)
70BC_FIELD(CF_WORD1,      POP_COUNT,          PC,         2,  0)
71BC_FIELD(CF_WORD1,      CF_CONST,           CF_CONST,   7,  3)
72BC_FIELD(CF_WORD1,      COND,               COND,       9,  8)
73BC_FIELD(CF_WORD1,      COUNT,              COUNT,      15, 10)
74BC_RSRVD(CF_WORD1,                                      19, 16)
75BC_FIELD(CF_WORD1,      VALID_PIXEL_MODE,   VPM,        20, 20)
76BC_FIELD(CF_WORD1,      END_OF_PROGRAM,     EOP,        21, 21)
77BC_FIELD(CF_WORD1,      CF_INST,            CF_INST,    29, 22)
78BC_FIELD(CF_WORD1,      WHOLE_QUAD_MODE,    WQM,        30, 30)
79BC_FIELD(CF_WORD1,      BARRIER,            B,          31, 31)
80BC_FORMAT_END(CF_WORD1)
81
82BC_FORMAT_BEGIN_HW(CF_WORD1, CM)
83BC_FIELD(CF_WORD1,      POP_COUNT,          PC,         2,  0)
84BC_FIELD(CF_WORD1,      CF_CONST,           CF_CONST,   7,  3)
85BC_FIELD(CF_WORD1,      COND,               COND,       9,  8)
86BC_FIELD(CF_WORD1,      COUNT,              COUNT,      15, 10)
87BC_RSRVD(CF_WORD1,                                      19, 16)
88BC_FIELD(CF_WORD1,      VALID_PIXEL_MODE,   VPM,        20, 20)
89BC_RSRVD(CF_WORD1,                                      21, 21)
90BC_FIELD(CF_WORD1,      CF_INST,            CF_INST,    29, 22)
91BC_RSRVD(CF_WORD1,                                      30, 30)
92BC_FIELD(CF_WORD1,      BARRIER,            B,          31, 31)
93BC_FORMAT_END(CF_WORD1)
94
95
96BC_FORMAT_BEGIN(CF_ALU_WORD0)
97BC_FIELD(CF_ALU_WORD0,  ADDR,               ADDR,       21, 0)
98BC_FIELD(CF_ALU_WORD0,  KCACHE_BANK0,       KB0,        25, 22)
99BC_FIELD(CF_ALU_WORD0,  KCACHE_BANK1,       KB1,        29, 26)
100BC_FIELD(CF_ALU_WORD0,  KCACHE_MODE0,       KM0,        31, 30)
101BC_FORMAT_END(CF_ALU_WORD0)
102
103BC_FORMAT_BEGIN_HW(CF_ALU_WORD1, R6)
104BC_FIELD(CF_ALU_WORD1,  KCACHE_MODE1,       KM1,        1,  0)
105BC_FIELD(CF_ALU_WORD1,  KCACHE_ADDR0,       KA0,        9,  2)
106BC_FIELD(CF_ALU_WORD1,  KCACHE_ADDR1,       KA1,        17, 10)
107BC_FIELD(CF_ALU_WORD1,  COUNT,              COUNT,      24, 18)
108BC_FIELD(CF_ALU_WORD1,  USES_WATERFALL,     UW,         25, 25)
109BC_FIELD(CF_ALU_WORD1,  CF_INST,            CF_INST,    29, 26)
110BC_FIELD(CF_ALU_WORD1,  WHOLE_QUAD_MODE,    WQM,        30, 30)
111BC_FIELD(CF_ALU_WORD1,  BARRIER,            B,          31, 31)
112BC_FORMAT_END(CF_ALU_WORD1)
113
114BC_FORMAT_BEGIN_HW(CF_ALU_WORD1, R7EGCM)
115BC_FIELD(CF_ALU_WORD1,  KCACHE_MODE1,       KM1,        1,  0)
116BC_FIELD(CF_ALU_WORD1,  KCACHE_ADDR0,       KA0,        9,  2)
117BC_FIELD(CF_ALU_WORD1,  KCACHE_ADDR1,       KA1,        17, 10)
118BC_FIELD(CF_ALU_WORD1,  COUNT,              COUNT,      24, 18)
119BC_FIELD(CF_ALU_WORD1,  ALT_CONST,          ALT_C,      25, 25)
120BC_FIELD(CF_ALU_WORD1,  CF_INST,            CF_INST,    29, 26)
121BC_FIELD(CF_ALU_WORD1,  WHOLE_QUAD_MODE,    WQM,        30, 30)
122BC_FIELD(CF_ALU_WORD1,  BARRIER,            B,          31, 31)
123BC_FORMAT_END(CF_ALU_WORD1)
124
125
126BC_FORMAT_BEGIN_HW(CF_ALU_WORD0_EXT, EGCM)
127BC_RSRVD(CF_ALU_WORD0_EXT,                                          3,  0)
128BC_FIELD(CF_ALU_WORD0_EXT,  KCACHE_BANK_INDEX_MODE0,    KBIM0,      5,  4)
129BC_FIELD(CF_ALU_WORD0_EXT,  KCACHE_BANK_INDEX_MODE1,    KBIM1,      7,  6)
130BC_FIELD(CF_ALU_WORD0_EXT,  KCACHE_BANK_INDEX_MODE2,    KBIM2,      9,  8)
131BC_FIELD(CF_ALU_WORD0_EXT,  KCACHE_BANK_INDEX_MODE3,    KBIM3,      11, 10)
132BC_RSRVD(CF_ALU_WORD0_EXT,                                          21, 12)
133BC_FIELD(CF_ALU_WORD0_EXT,  KCACHE_BANK2,               KB2,        25, 22)
134BC_FIELD(CF_ALU_WORD0_EXT,  KCACHE_BANK3,               KB3,        29, 26)
135BC_FIELD(CF_ALU_WORD0_EXT,  KCACHE_MODE2,               KM2,        31, 30)
136BC_FORMAT_END(CF_ALU_WORD0_EXT)
137
138BC_FORMAT_BEGIN_HW(CF_ALU_WORD1_EXT, EGCM)
139BC_FIELD(CF_ALU_WORD1_EXT,  KCACHE_MODE3,       KM3,        1,  0)
140BC_FIELD(CF_ALU_WORD1_EXT,  KCACHE_ADDR2,       KA2,        9,  2)
141BC_FIELD(CF_ALU_WORD1_EXT,  KCACHE_ADDR3,       KA3,        17, 10)
142BC_RSRVD(CF_ALU_WORD1_EXT,                                  25, 18)
143BC_FIELD(CF_ALU_WORD1_EXT,  CF_INST,            CF_INST,    29, 26)
144BC_RSRVD(CF_ALU_WORD1_EXT,                                  30, 30)
145BC_FIELD(CF_ALU_WORD1_EXT,  BARRIER,            B,          31, 31)
146BC_FORMAT_END(CF_ALU_WORD1_EXT)
147
148
149BC_FORMAT_BEGIN(CF_ALLOC_EXPORT_WORD0)
150BC_FIELD(CF_ALLOC_EXPORT_WORD0, ARRAY_BASE,     ARR_BS,     12, 0)
151BC_FIELD(CF_ALLOC_EXPORT_WORD0, TYPE,           TYPE,       14, 13)
152BC_FIELD(CF_ALLOC_EXPORT_WORD0, RW_GPR,         RW_GPR,     21, 15)
153BC_FIELD(CF_ALLOC_EXPORT_WORD0, RW_REL,         RW_REL,     22, 22)
154BC_FIELD(CF_ALLOC_EXPORT_WORD0, INDEX_GPR,      IND_GPR,    29, 23)
155BC_FIELD(CF_ALLOC_EXPORT_WORD0, ELEM_SIZE,      ES,         31, 30)
156BC_FORMAT_END(CF_ALLOC_EXPORT_WORD0)
157
158BC_FORMAT_BEGIN_HW(CF_ALLOC_EXPORT_WORD0_RAT, EGCM)
159BC_FIELD(CF_ALLOC_EXPORT_WORD0_RAT, RAT_ID,         R_ID,       3,  0)
160BC_FIELD(CF_ALLOC_EXPORT_WORD0_RAT, RAT_INST,       R_INST,     9,  4)
161BC_RSRVD(CF_ALLOC_EXPORT_WORD0_RAT,                             10, 10)
162BC_FIELD(CF_ALLOC_EXPORT_WORD0_RAT, RAT_INDEX_MODE, RIM,        12, 11)
163BC_FIELD(CF_ALLOC_EXPORT_WORD0_RAT, TYPE,           TYPE,       14, 13)
164BC_FIELD(CF_ALLOC_EXPORT_WORD0_RAT, RW_GPR,         RW_GPR,     21, 15)
165BC_FIELD(CF_ALLOC_EXPORT_WORD0_RAT, RW_REL,         RW_REL,     22, 22)
166BC_FIELD(CF_ALLOC_EXPORT_WORD0_RAT, INDEX_GPR,      IND_GPR,    29, 23)
167BC_FIELD(CF_ALLOC_EXPORT_WORD0_RAT, ELEM_SIZE,      ES,         31, 30)
168BC_FORMAT_END(CF_ALLOC_EXPORT_WORD0_RAT)
169
170BC_FORMAT_BEGIN_HW(CF_ALLOC_EXPORT_WORD1_BUF, R6R7)
171BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, ARR_SIZE,           ARR_SZ,     11, 0)
172BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, COMP_MASK,          MASK,       15, 12)
173BC_RSRVD(CF_ALLOC_EXPORT_WORD1_BUF,                                 16, 16)
174BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, BURST_COUNT,        BURST,      20, 17)
175BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, END_OF_PROGRAM,     EOP,        21, 21)
176BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, VALID_PIXEL_MODE,   VPM,        22, 22)
177BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, CF_INST,            CF_INST,    29, 23)
178BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, WHOLE_QUAD_MODE,    WQM,        30, 30)
179BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, BARRIER,            B,          31, 31)
180BC_FORMAT_END(CF_ALLOC_EXPORT_WORD1_BUF)
181
182BC_FORMAT_BEGIN_HW(CF_ALLOC_EXPORT_WORD1_BUF, EG)
183BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, ARR_SIZE,           ARR_SZ,     11, 0)
184BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, COMP_MASK,          MASK,       15, 12)
185BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, BURST_COUNT,        BURST,      19, 16)
186BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, VALID_PIXEL_MODE,   VPM,        20, 20)
187BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, END_OF_PROGRAM,     EOP,        21, 21)
188BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, CF_INST,            CF_INST,    29, 22)
189BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, MARK,               MARK,       30, 30)
190BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, BARRIER,            B,          31, 31)
191BC_FORMAT_END(CF_ALLOC_EXPORT_WORD1_BUF)
192
193BC_FORMAT_BEGIN_HW(CF_ALLOC_EXPORT_WORD1_BUF, CM)
194BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, ARR_SIZE,           ARR_SZ,     11, 0)
195BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, COMP_MASK,          MASK,       15, 12)
196BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, BURST_COUNT,        BURST,      19, 16)
197BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, VALID_PIXEL_MODE,   VPM,        20, 20)
198BC_RSRVD(CF_ALLOC_EXPORT_WORD1_BUF,                                 21, 21)
199BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, CF_INST,            CF_INST,    29, 22)
200BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, MARK,               MARK,       30, 30)
201BC_FIELD(CF_ALLOC_EXPORT_WORD1_BUF, BARRIER,            B,          31, 31)
202BC_FORMAT_END(CF_ALLOC_EXPORT_WORD1_BUF)
203
204BC_FORMAT_BEGIN_HW(CF_ALLOC_EXPORT_WORD1_SWIZ, R6R7)
205BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    SEL_X,              SEL_X,      2,  0)
206BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    SEL_Y,              SEL_Y,      5,  3)
207BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    SEL_Z,              SEL_Z,      8,  6)
208BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    SEL_W,              SEL_W,      11, 9)
209BC_RSRVD(CF_ALLOC_EXPORT_WORD1_SWIZ,                                    16, 12)
210BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    BURST_COUNT,        BURST,      20, 17)
211BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    END_OF_PROGRAM,     EOP,        21, 21)
212BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    VALID_PIXEL_MODE,   VPM,        22, 22)
213BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    CF_INST,            CF_INST,    29, 23)
214BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    WHOLE_QUAD_MODE,    WQM,        30, 30)
215BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    BARRIER,            B,          31, 31)
216BC_FORMAT_END(CF_ALLOC_EXPORT_WORD1_SWIZ)
217
218BC_FORMAT_BEGIN_HW(CF_ALLOC_EXPORT_WORD1_SWIZ, EG)
219BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    SEL_X,              SEL_X,      2,  0)
220BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    SEL_Y,              SEL_Y,      5,  3)
221BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    SEL_Z,              SEL_Z,      8,  6)
222BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    SEL_W,              SEL_W,      11, 9)
223BC_RSRVD(CF_ALLOC_EXPORT_WORD1_SWIZ,                                    15, 12)
224BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    BURST_COUNT,        BURST,      19, 16)
225BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    VALID_PIXEL_MODE,   VPM,        20, 20)
226BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    END_OF_PROGRAM,     EOP,        21, 21)
227BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    CF_INST,            CF_INST,    29, 22)
228BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    MARK,               M,          30, 30)
229BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    BARRIER,            B,          31, 31)
230BC_FORMAT_END(CF_ALLOC_EXPORT_WORD1_SWIZ)
231
232BC_FORMAT_BEGIN_HW(CF_ALLOC_EXPORT_WORD1_SWIZ, CM)
233BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    SEL_X,              SEL_X,      2,  0)
234BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    SEL_Y,              SEL_Y,      5,  3)
235BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    SEL_Z,              SEL_Z,      8,  6)
236BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    SEL_W,              SEL_W,      11, 9)
237BC_RSRVD(CF_ALLOC_EXPORT_WORD1_SWIZ,                                    15, 12)
238BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    BURST_COUNT,        BURST,      19, 16)
239BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    VALID_PIXEL_MODE,   VPM,        20, 20)
240BC_RSRVD(CF_ALLOC_EXPORT_WORD1_SWIZ,                                    21, 21)
241BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    CF_INST,            CF_INST,    29, 22)
242BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    MARK,               M,          30, 30)
243BC_FIELD(CF_ALLOC_EXPORT_WORD1_SWIZ,    BARRIER,            B,          31, 31)
244BC_FORMAT_END(CF_ALLOC_EXPORT_WORD1_SWIZ)
245
246// ALU
247
248BC_FORMAT_BEGIN(ALU_WORD0)
249BC_FIELD(ALU_WORD0,     SRC0_SEL,               S0S,        8,  0)
250BC_FIELD(ALU_WORD0,     SRC0_REL,               S0R,        9,  9)
251BC_FIELD(ALU_WORD0,     SRC0_CHAN,              S0C,        11, 10)
252BC_FIELD(ALU_WORD0,     SRC0_NEG,               S0N,        12, 12)
253BC_FIELD(ALU_WORD0,     SRC1_SEL,               S1S,        21, 13)
254BC_FIELD(ALU_WORD0,     SRC1_REL,               S1R,        22, 22)
255BC_FIELD(ALU_WORD0,     SRC1_CHAN,              S1C,        24, 23)
256BC_FIELD(ALU_WORD0,     SRC1_NEG,               S1N,        25, 25)
257BC_FIELD(ALU_WORD0,     INDEX_MODE,             IM,         28, 26)
258BC_FIELD(ALU_WORD0,     PRED_SEL,               PS,         30, 29)
259BC_FIELD(ALU_WORD0,     LAST,                   L,          31, 31)
260BC_FORMAT_END(ALU_WORD0)
261
262BC_FORMAT_BEGIN_HW(ALU_WORD1_OP2, R6)
263BC_FIELD(ALU_WORD1_OP2,     SRC0_ABS,               S0A,        0,  0)
264BC_FIELD(ALU_WORD1_OP2,     SRC1_ABS,               S1A,        1,  1)
265BC_FIELD(ALU_WORD1_OP2,     UPDATE_EXEC_MASK,       UEM,        2,  2)
266BC_FIELD(ALU_WORD1_OP2,     UPDATE_PRED,            UP,         3,  3)
267BC_FIELD(ALU_WORD1_OP2,     WRITE_MASK,             WM,         4,  4)
268BC_FIELD(ALU_WORD1_OP2,     FOG_MERGE,              FM,         5,  5)
269BC_FIELD(ALU_WORD1_OP2,     OMOD,                   OMOD,       7,  6)
270BC_FIELD(ALU_WORD1_OP2,     ALU_INST,               INST,       17, 8)
271BC_FIELD(ALU_WORD1_OP2,     BANK_SWIZZLE,           BS,         20, 18)
272BC_FIELD(ALU_WORD1_OP2,     DST_GPR,                DGPR,       27, 21)
273BC_FIELD(ALU_WORD1_OP2,     DST_REL,                DR,         28, 28)
274BC_FIELD(ALU_WORD1_OP2,     DST_CHAN,               DC,         30, 29)
275BC_FIELD(ALU_WORD1_OP2,     CLAMP,                  C,          31, 31)
276BC_FORMAT_END(ALU_WORD1_OP2)
277
278BC_FORMAT_BEGIN_HW(ALU_WORD1_OP2, R7EGCM)
279BC_FIELD(ALU_WORD1_OP2,     SRC0_ABS,               S0A,        0,  0)
280BC_FIELD(ALU_WORD1_OP2,     SRC1_ABS,               S1A,        1,  1)
281BC_FIELD(ALU_WORD1_OP2,     UPDATE_EXEC_MASK,       UEM,        2,  2)
282BC_FIELD(ALU_WORD1_OP2,     UPDATE_PRED,            UP,         3,  3)
283BC_FIELD(ALU_WORD1_OP2,     WRITE_MASK,             WM,         4,  4)
284BC_FIELD(ALU_WORD1_OP2,     OMOD,                   OMOD,       6,  5)
285BC_FIELD(ALU_WORD1_OP2,     ALU_INST,               INST,       17, 7)
286BC_FIELD(ALU_WORD1_OP2,     BANK_SWIZZLE,           BS,         20, 18)
287BC_FIELD(ALU_WORD1_OP2,     DST_GPR,                DGPR,       27, 21)
288BC_FIELD(ALU_WORD1_OP2,     DST_REL,                DR,         28, 28)
289BC_FIELD(ALU_WORD1_OP2,     DST_CHAN,               DC,         30, 29)
290BC_FIELD(ALU_WORD1_OP2,     CLAMP,                  C,          31, 31)
291BC_FORMAT_END(ALU_WORD1_OP2)
292
293BC_FORMAT_BEGIN_HW(ALU_WORD1_OP2_MOVA, CM)
294BC_FIELD(ALU_WORD1_OP2_MOVA,     SRC0_ABS,               S0A,        0,  0)
295BC_FIELD(ALU_WORD1_OP2_MOVA,     SRC1_ABS,               S1A,        1,  1)
296BC_FIELD(ALU_WORD1_OP2_MOVA,     UPDATE_EXEC_MASK,       UEM,        2,  2)
297BC_FIELD(ALU_WORD1_OP2_MOVA,     UPDATE_PRED,            UP,         3,  3)
298BC_FIELD(ALU_WORD1_OP2_MOVA,     WRITE_MASK,             WM,         4,  4)
299BC_FIELD(ALU_WORD1_OP2_MOVA,     OMOD,                   OMOD,       6,  5)
300BC_FIELD(ALU_WORD1_OP2_MOVA,     ALU_INST,               INST,       17, 7)
301BC_FIELD(ALU_WORD1_OP2_MOVA,     BANK_SWIZZLE,           BS,         20, 18)
302BC_FIELD(ALU_WORD1_OP2_MOVA,     MOVA_DST,               MOVA_DST,   27, 21)
303BC_FIELD(ALU_WORD1_OP2_MOVA,     DST_REL,                DR,         28, 28)
304BC_FIELD(ALU_WORD1_OP2_MOVA,     DST_CHAN,               DC,         30, 29)
305BC_FIELD(ALU_WORD1_OP2_MOVA,     CLAMP,                  C,          31, 31)
306BC_FORMAT_END(ALU_WORD1_OP2_MOVA)
307
308BC_FORMAT_BEGIN_HW(ALU_WORD1_OP2_EXEC_MASK, CM)
309BC_FIELD(ALU_WORD1_OP2_EXEC_MASK,     SRC0_ABS,               S0A,        0,  0)
310BC_FIELD(ALU_WORD1_OP2_EXEC_MASK,     SRC1_ABS,               S1A,        1,  1)
311BC_FIELD(ALU_WORD1_OP2_EXEC_MASK,     UPDATE_EXEC_MASK,       UEM,        2,  2)
312BC_FIELD(ALU_WORD1_OP2_EXEC_MASK,     UPDATE_PRED,            UP,         3,  3)
313BC_FIELD(ALU_WORD1_OP2_EXEC_MASK,     WRITE_MASK,             WM,         4,  4)
314BC_FIELD(ALU_WORD1_OP2_EXEC_MASK,     EXECUTE_MASK_OP,        EMO,        6,  5)
315BC_FIELD(ALU_WORD1_OP2_EXEC_MASK,     ALU_INST,               INST,       17, 7)
316BC_FIELD(ALU_WORD1_OP2_EXEC_MASK,     BANK_SWIZZLE,           BS,         20, 18)
317BC_FIELD(ALU_WORD1_OP2_EXEC_MASK,     DST_GPR,                DGPR,       27, 21)
318BC_FIELD(ALU_WORD1_OP2_EXEC_MASK,     DST_REL,                DR,         28, 28)
319BC_FIELD(ALU_WORD1_OP2_EXEC_MASK,     DST_CHAN,               DC,         30, 29)
320BC_FIELD(ALU_WORD1_OP2_EXEC_MASK,     CLAMP,                  C,          31, 31)
321BC_FORMAT_END(ALU_WORD1_OP2_EXEC_MASK)
322
323BC_FORMAT_BEGIN(ALU_WORD1_OP3)
324BC_FIELD(ALU_WORD1_OP3,     SRC2_SEL,               S2S,        8,  0)
325BC_FIELD(ALU_WORD1_OP3,     SRC2_REL,               S2R,        9,  9)
326BC_FIELD(ALU_WORD1_OP3,     SRC2_CHAN,              S2C,        11, 10)
327BC_FIELD(ALU_WORD1_OP3,     SRC2_NEG,               S2N,        12, 12)
328BC_FIELD(ALU_WORD1_OP3,     ALU_INST,               INST,       17, 13)
329BC_FIELD(ALU_WORD1_OP3,     BANK_SWIZZLE,           BS,         20, 18)
330BC_FIELD(ALU_WORD1_OP3,     DST_GPR,                DGPR,       27, 21)
331BC_FIELD(ALU_WORD1_OP3,     DST_REL,                DR,         28, 28)
332BC_FIELD(ALU_WORD1_OP3,     DST_CHAN,               DC,         30, 29)
333BC_FIELD(ALU_WORD1_OP3,     CLAMP,                  C,          31, 31)
334BC_FORMAT_END(ALU_WORD1_OP3)
335
336
337BC_FORMAT_BEGIN_HW(ALU_WORD0_LDS_IDX_OP, EGCM)
338BC_FIELD(ALU_WORD0_LDS_IDX_OP,      SRC0_SEL,               S0S,        8,  0)
339BC_FIELD(ALU_WORD0_LDS_IDX_OP,      SRC0_REL,               S0R,        9,  9)
340BC_FIELD(ALU_WORD0_LDS_IDX_OP,      SRC0_CHAN,              S0C,        11, 10)
341BC_FIELD(ALU_WORD0_LDS_IDX_OP,      IDX_OFFSET_4,           IO4,        12, 12)
342BC_FIELD(ALU_WORD0_LDS_IDX_OP,      SRC1_SEL,               S1S,        21, 13)
343BC_FIELD(ALU_WORD0_LDS_IDX_OP,      SRC1_REL,               S1R,        22, 22)
344BC_FIELD(ALU_WORD0_LDS_IDX_OP,      SRC1_CHAN,              S1C,        24, 23)
345BC_FIELD(ALU_WORD0_LDS_IDX_OP,      IDX_OFFSET_5,           IO5,        25, 25)
346BC_FIELD(ALU_WORD0_LDS_IDX_OP,      INDEX_MODE,             IM,         28, 26)
347BC_FIELD(ALU_WORD0_LDS_IDX_OP,      PRED_SEL,               PS,         30, 29)
348BC_FIELD(ALU_WORD0_LDS_IDX_OP,      LAST,                   L,          31, 31)
349BC_FORMAT_END(ALU_WORD0_LDS_IDX_OP)
350
351BC_FORMAT_BEGIN_HW(ALU_WORD1_LDS_IDX_OP, EGCM)
352BC_FIELD(ALU_WORD1_LDS_IDX_OP,      SRC2_SEL,               S2S,        8,  0)
353BC_FIELD(ALU_WORD1_LDS_IDX_OP,      SRC2_REL,               S2R,        9,  9)
354BC_FIELD(ALU_WORD1_LDS_IDX_OP,      SRC2_CHAN,              S2C,        11, 10)
355BC_FIELD(ALU_WORD1_LDS_IDX_OP,      IDX_OFFSET_1,           IO1,        12, 12)
356BC_FIELD(ALU_WORD1_LDS_IDX_OP,      ALU_INST,               INST,       17, 13)
357BC_FIELD(ALU_WORD1_LDS_IDX_OP,      BANK_SWIZZLE,           BS,         20, 18)
358BC_FIELD(ALU_WORD1_LDS_IDX_OP,      LDS_OP,                 LDS_OP,     26, 21)
359BC_FIELD(ALU_WORD1_LDS_IDX_OP,      IDX_OFFSET_0,           IO0,        27, 27)
360BC_FIELD(ALU_WORD1_LDS_IDX_OP,      IDX_OFFSET_2,           IO2,        28, 28)
361BC_FIELD(ALU_WORD1_LDS_IDX_OP,      DST_CHAN,               DC,         30, 29)
362BC_FIELD(ALU_WORD1_LDS_IDX_OP,      IDX_OFFSET_3,           IO3,        31, 31)
363BC_FORMAT_END(ALU_WORD1_LDS_IDX_OP)
364
365
366BC_FORMAT_BEGIN_HW(ALU_WORD1_LDS_DIRECT_LITERAL_LO, EGCM)
367BC_FIELD(ALU_WORD1_LDS_DIRECT_LITERAL_LO,       OFFSET_A,       OFS_A,  12, 0)
368BC_FIELD(ALU_WORD1_LDS_DIRECT_LITERAL_LO,       STRIDE_A,       STR_A,  19, 13)
369BC_RSRVD(ALU_WORD1_LDS_DIRECT_LITERAL_LO,                               21, 20)
370BC_FIELD(ALU_WORD1_LDS_DIRECT_LITERAL_LO,       THREAD_REL_A,   THR_A,  22, 22)
371BC_RSRVD(ALU_WORD1_LDS_DIRECT_LITERAL_LO,                               31, 22)
372BC_FORMAT_END(ALU_WORD1_LDS_DIRECT_LITERAL_LO)
373
374BC_FORMAT_BEGIN_HW(ALU_WORD1_LDS_DIRECT_LITERAL_HI, EGCM)
375BC_FIELD(ALU_WORD1_LDS_DIRECT_LITERAL_HI,       OFFSET_B,       OFS_B,  12, 0)
376BC_FIELD(ALU_WORD1_LDS_DIRECT_LITERAL_HI,       STRIDE_B,       STR_B,  19, 13)
377BC_RSRVD(ALU_WORD1_LDS_DIRECT_LITERAL_HI,                               21, 20)
378BC_FIELD(ALU_WORD1_LDS_DIRECT_LITERAL_HI,       THREAD_REL_B,   THR_B,  22, 22)
379BC_RSRVD(ALU_WORD1_LDS_DIRECT_LITERAL_HI,                               30, 22)
380BC_FIELD(ALU_WORD1_LDS_DIRECT_LITERAL_HI,       DIRECT_READ_32, DR32,   31, 31)
381BC_FORMAT_END(ALU_WORD1_LDS_DIRECT_LITERAL_HI)
382
383
384// VTX
385
386BC_FORMAT_BEGIN_HW(VTX_WORD0, R6R7EG)
387BC_FIELD(VTX_WORD0,     VC_INST,                INST,       4,  0)
388BC_FIELD(VTX_WORD0,     FETCH_TYPE,             FT,         6,  5)
389BC_FIELD(VTX_WORD0,     FETCH_WHOLE_QUAD,       FWQ,        7,  7)
390BC_FIELD(VTX_WORD0,     BUFFER_ID,              BUF_ID,     15, 8)
391BC_FIELD(VTX_WORD0,     SRC_GPR,                S_GPR,      22, 16)
392BC_FIELD(VTX_WORD0,     SRC_REL,                SR,         23, 23)
393BC_FIELD(VTX_WORD0,     SRC_SEL_X,              SSX,        25, 24)
394BC_FIELD(VTX_WORD0,     MEGA_FETCH_COUNT,       MFC,        31, 26)
395BC_FORMAT_END(VTX_WORD0)
396
397BC_FORMAT_BEGIN_HW(VTX_WORD0, CM)
398BC_FIELD(VTX_WORD0,     VC_INST,                INST,       4,  0)
399BC_FIELD(VTX_WORD0,     FETCH_TYPE,             FT,         6,  5)
400BC_FIELD(VTX_WORD0,     FETCH_WHOLE_QUAD,       FWQ,        7,  7)
401BC_FIELD(VTX_WORD0,     BUFFER_ID,              BUF_ID,     15, 8)
402BC_FIELD(VTX_WORD0,     SRC_GPR,                S_GPR,      22, 16)
403BC_FIELD(VTX_WORD0,     SRC_REL,                SR,         23, 23)
404BC_FIELD(VTX_WORD0,     SRC_SEL_X,              SSX,        25, 24)
405BC_FIELD(VTX_WORD0,     SRC_SEL_Y,              SSY,        27, 26)
406BC_FIELD(VTX_WORD0,     STRUCTURED_READ,        SR,         29, 28)
407BC_FIELD(VTX_WORD0,     LDS_REQ,                LR,         30, 30)
408BC_FIELD(VTX_WORD0,     COALESCED_READ,         CR,         31, 31)
409BC_FORMAT_END(VTX_WORD0)
410
411
412BC_FORMAT_BEGIN(VTX_WORD1_GPR)
413BC_FIELD(VTX_WORD1_GPR,     DST_GPR,                D_GPR,      6,  0)
414BC_FIELD(VTX_WORD1_GPR,     DST_REL,                DR,         7,  7)
415BC_RSRVD(VTX_WORD1_GPR,                                         8,  8)
416BC_FIELD(VTX_WORD1_GPR,     DST_SEL_X,              DSX,        11, 9)
417BC_FIELD(VTX_WORD1_GPR,     DST_SEL_Y,              DSY,        14, 12)
418BC_FIELD(VTX_WORD1_GPR,     DST_SEL_Z,              DSZ,        17, 15)
419BC_FIELD(VTX_WORD1_GPR,     DST_SEL_W,              DSW,        20, 18)
420BC_FIELD(VTX_WORD1_GPR,     USE_CONST_FIELDS,       UCF,        21, 21)
421BC_FIELD(VTX_WORD1_GPR,     DATA_FORMAT,            DFMT,       27, 22)
422BC_FIELD(VTX_WORD1_GPR,     NUM_FORMAT_ALL,         NFA,        29, 28)
423BC_FIELD(VTX_WORD1_GPR,     FORMAT_COMP_ALL,        FCA,        30, 30)
424BC_FIELD(VTX_WORD1_GPR,     SRF_MODE_ALL,           SMA,        31, 31)
425BC_FORMAT_END(VTX_WORD1_GPR)
426
427BC_FORMAT_BEGIN(VTX_WORD1_SEM)
428BC_FIELD(VTX_WORD1_SEM,     SEMANTIC_ID,            SID,        7,  0)
429BC_RSRVD(VTX_WORD1_SEM,                                         8,  8)
430BC_FIELD(VTX_WORD1_SEM,     DST_SEL_X,              DSX,        11, 9)
431BC_FIELD(VTX_WORD1_SEM,     DST_SEL_Y,              DSY,        14, 12)
432BC_FIELD(VTX_WORD1_SEM,     DST_SEL_Z,              DSZ,        17, 15)
433BC_FIELD(VTX_WORD1_SEM,     DST_SEL_W,              DSW,        20, 18)
434BC_FIELD(VTX_WORD1_SEM,     USE_CONST_FIELDS,       UCF,        21, 21)
435BC_FIELD(VTX_WORD1_SEM,     DATA_FORMAT,            DFMT,       27, 22)
436BC_FIELD(VTX_WORD1_SEM,     NUM_FORMAT_ALL,         NFA,        29, 28)
437BC_FIELD(VTX_WORD1_SEM,     FORMAT_COMP_ALL,        FCA,        30, 30)
438BC_FIELD(VTX_WORD1_SEM,     SRF_MODE_ALL,           SMA,        31, 31)
439BC_FORMAT_END(VTX_WORD1_SEM)
440
441
442BC_FORMAT_BEGIN_HW(VTX_WORD2, R6)
443BC_FIELD(VTX_WORD2,     OFFSET,                 OFS,        15, 0)
444BC_FIELD(VTX_WORD2,     ENDIAN_SWAP,            ES,         17, 16)
445BC_FIELD(VTX_WORD2,     CONST_BUF_NO_STRIDE,    CBNS,       18, 18)
446BC_FIELD(VTX_WORD2,     MEGA_FETCH,             MF,         19, 19)
447BC_RSRVD(VTX_WORD2,                                         31, 20)
448BC_FORMAT_END(VTX_WORD2)
449
450BC_FORMAT_BEGIN_HW(VTX_WORD2, R7)
451BC_FIELD(VTX_WORD2,     OFFSET,                 OFS,        15, 0)
452BC_FIELD(VTX_WORD2,     ENDIAN_SWAP,            ES,         17, 16)
453BC_FIELD(VTX_WORD2,     CONST_BUF_NO_STRIDE,    CBNS,       18, 18)
454BC_FIELD(VTX_WORD2,     MEGA_FETCH,             MF,         19, 19)
455BC_FIELD(VTX_WORD2,     ALT_CONST,              ALT_C,      20, 20)
456BC_RSRVD(VTX_WORD2,                                         31, 21)
457BC_FORMAT_END(VTX_WORD2)
458
459BC_FORMAT_BEGIN_HW(VTX_WORD2, EG)
460BC_FIELD(VTX_WORD2,     OFFSET,                 OFS,        15, 0)
461BC_FIELD(VTX_WORD2,     ENDIAN_SWAP,            ES,         17, 16)
462BC_FIELD(VTX_WORD2,     CONST_BUF_NO_STRIDE,    CBNS,       18, 18)
463BC_FIELD(VTX_WORD2,     MEGA_FETCH,             MF,         19, 19)
464BC_FIELD(VTX_WORD2,     ALT_CONST,              ALT_C,      20, 20)
465BC_FIELD(VTX_WORD2,     BUFFER_INDEX_MODE,      BIM,        22, 21)
466BC_RSRVD(VTX_WORD2,                                         31, 23)
467BC_FORMAT_END(VTX_WORD2)
468
469BC_FORMAT_BEGIN_HW(VTX_WORD2, CM)
470BC_FIELD(VTX_WORD2,     OFFSET,                 OFS,        15, 0)
471BC_FIELD(VTX_WORD2,     ENDIAN_SWAP,            ES,         17, 16)
472BC_FIELD(VTX_WORD2,     CONST_BUF_NO_STRIDE,    CBNS,       18, 18)
473BC_RSRVD(VTX_WORD2,                                         19, 19)
474BC_FIELD(VTX_WORD2,     ALT_CONST,              ALT_C,      20, 20)
475BC_FIELD(VTX_WORD2,     BUFFER_INDEX_MODE,      BIM,        22, 21)
476BC_RSRVD(VTX_WORD2,                                         31, 23)
477BC_FORMAT_END(VTX_WORD2)
478
479// TEX
480
481BC_FORMAT_BEGIN_HW(TEX_WORD0, R6)
482BC_FIELD(TEX_WORD0,     TEX_INST,               T_INST,     4,  0)
483BC_FIELD(TEX_WORD0,     BC_FRAC_MODE,           BFM,        5,  5)
484BC_RSRVD(TEX_WORD0,                                         6,  6)
485BC_FIELD(TEX_WORD0,     FETCH_WHOLE_QUAD,       FWQ,        7,  7)
486BC_FIELD(TEX_WORD0,     RESOURCE_ID,            RSRC_ID,    15, 8)
487BC_FIELD(TEX_WORD0,     SRC_GPR,                S_GPR,      22, 16)
488BC_FIELD(TEX_WORD0,     SRC_REL,                SR,         23, 23)
489BC_RSRVD(TEX_WORD0,                                         31, 24)
490BC_FORMAT_END(TEX_WORD0)
491
492BC_FORMAT_BEGIN_HW(TEX_WORD0, R7)
493BC_FIELD(TEX_WORD0,     TEX_INST,               T_INST,     4,  0)
494BC_FIELD(TEX_WORD0,     BC_FRAC_MODE,           BFM,        5,  5)
495BC_RSRVD(TEX_WORD0,                                         6,  6)
496BC_FIELD(TEX_WORD0,     FETCH_WHOLE_QUAD,       FWQ,        7,  7)
497BC_FIELD(TEX_WORD0,     RESOURCE_ID,            RSRC_ID,    15, 8)
498BC_FIELD(TEX_WORD0,     SRC_GPR,                S_GPR,      22, 16)
499BC_FIELD(TEX_WORD0,     SRC_REL,                SR,         23, 23)
500BC_FIELD(TEX_WORD0,     ALT_CONST,              ALT_C,      24, 24)
501BC_RSRVD(TEX_WORD0,                                         31, 25)
502BC_FORMAT_END(TEX_WORD0)
503
504BC_FORMAT_BEGIN_HW(TEX_WORD0, EGCM)
505BC_FIELD(TEX_WORD0,     TEX_INST,               T_INST,     4,  0)
506BC_FIELD(TEX_WORD0,     INST_MOD,               IMOD,       6,  5)
507BC_FIELD(TEX_WORD0,     FETCH_WHOLE_QUAD,       FWQ,        7,  7)
508BC_FIELD(TEX_WORD0,     RESOURCE_ID,            RSRC_ID,    15, 8)
509BC_FIELD(TEX_WORD0,     SRC_GPR,                S_GPR,      22, 16)
510BC_FIELD(TEX_WORD0,     SRC_REL,                SR,         23, 23)
511BC_FIELD(TEX_WORD0,     ALT_CONST,              ALT_C,      24, 24)
512BC_FIELD(TEX_WORD0,     RESOURCE_INDEX_MODE,    RIM,        26, 25)
513BC_FIELD(TEX_WORD0,     SAMPLER_INDEX_MODE,     SIM,        28, 27)
514BC_RSRVD(TEX_WORD0,                                         31, 29)
515BC_FORMAT_END(TEX_WORD0)
516
517
518BC_FORMAT_BEGIN(TEX_WORD1)
519BC_FIELD(TEX_WORD1,     DST_GPR,                D_GPR,      6,  0)
520BC_FIELD(TEX_WORD1,     DST_REL,                DR,         7,  7)
521BC_RSRVD(TEX_WORD1,                                         8,  8)
522BC_FIELD(TEX_WORD1,     DST_SEL_X,              DSX,        11, 9)
523BC_FIELD(TEX_WORD1,     DST_SEL_Y,              DSY,        14, 12)
524BC_FIELD(TEX_WORD1,     DST_SEL_Z,              DSZ,        17, 15)
525BC_FIELD(TEX_WORD1,     DST_SEL_W,              DSW,        20, 18)
526BC_FIELD(TEX_WORD1,     LOD_BIAS,               LBIAS,      27, 21)
527BC_FIELD(TEX_WORD1,     COORD_TYPE_X,           CTX,        28, 28)
528BC_FIELD(TEX_WORD1,     COORD_TYPE_Y,           CTY,        29, 29)
529BC_FIELD(TEX_WORD1,     COORD_TYPE_Z,           CTZ,        30, 30)
530BC_FIELD(TEX_WORD1,     COORD_TYPE_W,           CTW,        31, 31)
531BC_FORMAT_END(TEX_WORD1)
532
533
534BC_FORMAT_BEGIN(TEX_WORD2)
535BC_FIELD(TEX_WORD2,     OFFSET_X,               OFS_X,      4,  0)
536BC_FIELD(TEX_WORD2,     OFFSET_Y,               OFS_Y,      9,  5)
537BC_FIELD(TEX_WORD2,     OFFSET_Z,               OFS_Z,      14, 10)
538BC_FIELD(TEX_WORD2,     SAMPLER_ID,             SAMP_ID,    19, 15)
539BC_FIELD(TEX_WORD2,     SRC_SEL_X,              SSX,        22, 20)
540BC_FIELD(TEX_WORD2,     SRC_SEL_Y,              SSY,        25, 23)
541BC_FIELD(TEX_WORD2,     SRC_SEL_Z,              SSZ,        28, 26)
542BC_FIELD(TEX_WORD2,     SRC_SEL_W,              SSW,        31, 29)
543BC_FORMAT_END(TEX_WORD2)
544
545BC_FORMAT_BEGIN_HW(MEM_GDS_WORD0, EGCM)
546BC_FIELD(MEM_GDS_WORD0,  MEM_INST,               M_INST,     4, 0)
547BC_FIELD(MEM_GDS_WORD0,  MEM_OP,  		 M_OP,      10, 8)
548BC_FIELD(MEM_GDS_WORD0,  SRC_GPR,                S_GPR,     17, 11)
549BC_FIELD(MEM_GDS_WORD0,  SRC_REL_MODE,           SRM,       19, 18)
550BC_FIELD(MEM_GDS_WORD0,  SRC_SEL_X,              SSX,       22, 20)
551BC_FIELD(MEM_GDS_WORD0,  SRC_SEL_Y,              SSY,       25, 23)
552BC_FIELD(MEM_GDS_WORD0,  SRC_SEL_Z,              SSZ,       28, 26)
553BC_FORMAT_END(MEM_GDS_WORD0)
554
555BC_FORMAT_BEGIN_HW(MEM_GDS_WORD1, EGCM)
556BC_FIELD(MEM_GDS_WORD1,     DST_GPR,                D_GPR,      6,  0)
557BC_FIELD(MEM_GDS_WORD1,     DST_REL_MODE,           DRM,        8,  7)
558BC_FIELD(MEM_GDS_WORD1,     GDS_OP,                 G_OP,      14,  9)
559BC_FIELD(MEM_GDS_WORD1,     SRC_GPR,                S_GPR,     22, 16)
560BC_FIELD(MEM_GDS_WORD1,     UAV_INDEX_MODE,         U_IM,      25, 24)
561BC_FIELD(MEM_GDS_WORD1,     UAV_ID,                 U_ID,      29, 26)
562BC_FIELD(MEM_GDS_WORD1,     ALLOC_CONSUME,          AC,        30, 30)
563BC_FIELD(MEM_GDS_WORD1,     BCAST_FIRST_REQ,        BFR,       31, 31)
564BC_FORMAT_END(MEM_GDS_WORD1)
565
566BC_FORMAT_BEGIN_HW(MEM_GDS_WORD2, EGCM)
567BC_FIELD(MEM_GDS_WORD2,     DST_SEL_X,              DSX,        2, 0)
568BC_FIELD(MEM_GDS_WORD2,     DST_SEL_Y,              DSY,        5, 3)
569BC_FIELD(MEM_GDS_WORD2,     DST_SEL_Z,              DSZ,        8, 6)
570BC_FIELD(MEM_GDS_WORD2,     DST_SEL_W,              DSW,       11, 9)
571BC_FORMAT_END(MEM_GDS_WORD2)
572
573// MEM_RD_
574BC_FORMAT_BEGIN_HW(MEM_RD_WORD0, R7EGCM)
575BC_FIELD(MEM_RD_WORD0,  MEM_INST,         M_INST,    4, 0)
576BC_FIELD(MEM_RD_WORD0,  ELEM_SIZE,        ES,        6, 5)
577BC_FIELD(MEM_RD_WORD0,  FETCH_WHOLE_QUAD, FWQ,       7, 7)
578BC_FIELD(MEM_RD_WORD0,  MEM_OP,           M_OP,      10, 8)
579BC_FIELD(MEM_RD_WORD0,  UNCACHED,         UC,        11, 11)
580BC_FIELD(MEM_RD_WORD0,  INDEXED,          INDEXED,   12, 12)
581BC_FIELD(MEM_RD_WORD0,  SRC_SEL_Y,        SSY,       14, 13)
582BC_FIELD(MEM_RD_WORD0,  SRC_GPR,          S_GPR,     22, 16)
583BC_FIELD(MEM_RD_WORD0,  SRC_REL,          SR,        23, 23)
584BC_FIELD(MEM_RD_WORD0,  SRC_SEL_X,        SSX,       25, 24)
585BC_FIELD(MEM_RD_WORD0,  BURST_COUNT,      BURST,     29, 26)
586BC_FIELD(MEM_RD_WORD0,  LDS_REQ,          LDS_REQ,   30, 30)
587BC_FIELD(MEM_RD_WORD0,  COALESCED_READ,   COALESCED, 31, 31)
588BC_FORMAT_END(MEM_RD_WORD0)
589
590BC_FORMAT_BEGIN_HW(MEM_RD_WORD1, R7EGCM)
591BC_FIELD(MEM_RD_WORD1,  DST_GPR,          D_GPR,  6, 0)
592BC_FIELD(MEM_RD_WORD1,  DST_REL,          DR,     7, 7)
593BC_FIELD(MEM_RD_WORD1,  DST_SEL_X,        DSX,    11, 9)
594BC_FIELD(MEM_RD_WORD1,  DST_SEL_Y,        DSY,    14, 12)
595BC_FIELD(MEM_RD_WORD1,  DST_SEL_Z,        DSZ,    17, 15)
596BC_FIELD(MEM_RD_WORD1,  DST_SEL_W,        DSW,    20, 18)
597BC_FIELD(MEM_RD_WORD1,  DATA_FORMAT,      DFMT,   27, 22)
598BC_FIELD(MEM_RD_WORD1,  NUM_FORMAT_ALL,   NFA,    29, 28)
599BC_FIELD(MEM_RD_WORD1,  FORMAT_COMP_ALL,  FCA,    30, 30)
600BC_FIELD(MEM_RD_WORD1,  SRF_MODE_ALL,     SMA,    31, 31)
601BC_FORMAT_END(MEM_RD_WORD1)
602
603BC_FORMAT_BEGIN_HW(MEM_RD_WORD2, R7EGCM)
604BC_FIELD(MEM_RD_WORD1,  ARRAY_BASE,       ARR_BS, 12, 0)
605BC_FIELD(MEM_RD_WORD1,  ENDIAN_SWAP,      ES,     17, 16)
606BC_FIELD(MEM_RD_WORD1,  ARR_SIZE,       ARR_SZ, 31, 20)
607BC_FORMAT_END(MEM_RD_WORD2)
608