xref: /aosp_15_r20/external/mesa3d/src/amd/addrlib/src/gfx12/gfx12SwizzlePattern.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1 /*
2 ************************************************************************************************************************
3 *
4 *  Copyright (C) 2023 Advanced Micro Devices, Inc.  All rights reserved.
5 *  SPDX-License-Identifier: MIT
6 *
7 ***********************************************************************************************************************/
8 
9 /**
10 ************************************************************************************************************************
11 * @file  gfx12SwizzlePattern.h
12 * @brief swizzle pattern for gfx12.
13 ************************************************************************************************************************
14 */
15 
16 #ifndef __GFX12_SWIZZLE_PATTERN_H__
17 #define __GFX12_SWIZZLE_PATTERN_H__
18 
19 namespace Addr
20 {
21 namespace V3
22 {
23     const ADDR_SW_PATINFO GFX12_SW_256B_2D_1xAA_PATINFO[] =
24     {
25         {   0,    0,    0,    0, } , // 1 BPE @ SW_256B_2D_1xAA
26         {   1,    0,    0,    0, } , // 2 BPE @ SW_256B_2D_1xAA
27         {   2,    0,    0,    0, } , // 4 BPE @ SW_256B_2D_1xAA
28         {   3,    0,    0,    0, } , // 8 BPE @ SW_256B_2D_1xAA
29         {   4,    0,    0,    0, } , // 16 BPE @ SW_256B_2D_1xAA
30     };
31 
32     const ADDR_SW_PATINFO GFX12_SW_256B_2D_2xAA_PATINFO[] =
33     {
34         {   5,    0,    0,    0, } , // 1 BPE @ SW_256B_2D_2xAA
35         {   6,    0,    0,    0, } , // 2 BPE @ SW_256B_2D_2xAA
36         {   7,    0,    0,    0, } , // 4 BPE @ SW_256B_2D_2xAA
37         {   8,    0,    0,    0, } , // 8 BPE @ SW_256B_2D_2xAA
38         {   9,    0,    0,    0, } , // 16 BPE @ SW_256B_2D_2xAA
39     };
40 
41     const ADDR_SW_PATINFO GFX12_SW_256B_2D_4xAA_PATINFO[] =
42     {
43         {  10,    0,    0,    0, } , // 1 BPE @ SW_256B_2D_4xAA
44         {  11,    0,    0,    0, } , // 2 BPE @ SW_256B_2D_4xAA
45         {  12,    0,    0,    0, } , // 4 BPE @ SW_256B_2D_4xAA
46         {  13,    0,    0,    0, } , // 8 BPE @ SW_256B_2D_4xAA
47         {  14,    0,    0,    0, } , // 16 BPE @ SW_256B_2D_4xAA
48     };
49 
50     const ADDR_SW_PATINFO GFX12_SW_256B_2D_8xAA_PATINFO[] =
51     {
52         {  15,    0,    0,    0, } , // 1 BPE @ SW_256B_2D_8xAA
53         {  16,    0,    0,    0, } , // 2 BPE @ SW_256B_2D_8xAA
54         {  17,    0,    0,    0, } , // 4 BPE @ SW_256B_2D_8xAA
55         {  18,    0,    0,    0, } , // 8 BPE @ SW_256B_2D_8xAA
56         {  19,    0,    0,    0, } , // 16 BPE @ SW_256B_2D_8xAA
57     };
58 
59     const ADDR_SW_PATINFO GFX12_SW_4KB_2D_1xAA_PATINFO[] =
60     {
61         {   0,    1,    0,    0, } , // 1 BPE @ SW_4KB_2D_1xAA
62         {   1,    2,    0,    0, } , // 2 BPE @ SW_4KB_2D_1xAA
63         {   2,    3,    0,    0, } , // 4 BPE @ SW_4KB_2D_1xAA
64         {   3,    4,    0,    0, } , // 8 BPE @ SW_4KB_2D_1xAA
65         {   4,    5,    0,    0, } , // 16 BPE @ SW_4KB_2D_1xAA
66     };
67 
68     const ADDR_SW_PATINFO GFX12_SW_4KB_2D_2xAA_PATINFO[] =
69     {
70         {   5,    2,    0,    0, } , // 1 BPE @ SW_4KB_2D_2xAA
71         {   6,    3,    0,    0, } , // 2 BPE @ SW_4KB_2D_2xAA
72         {   7,    4,    0,    0, } , // 4 BPE @ SW_4KB_2D_2xAA
73         {   8,    5,    0,    0, } , // 8 BPE @ SW_4KB_2D_2xAA
74         {   9,    6,    0,    0, } , // 16 BPE @ SW_4KB_2D_2xAA
75     };
76 
77     const ADDR_SW_PATINFO GFX12_SW_4KB_2D_4xAA_PATINFO[] =
78     {
79         {  10,    3,    0,    0, } , // 1 BPE @ SW_4KB_2D_4xAA
80         {  11,    4,    0,    0, } , // 2 BPE @ SW_4KB_2D_4xAA
81         {  12,    5,    0,    0, } , // 4 BPE @ SW_4KB_2D_4xAA
82         {  13,    6,    0,    0, } , // 8 BPE @ SW_4KB_2D_4xAA
83         {  14,    7,    0,    0, } , // 16 BPE @ SW_4KB_2D_4xAA
84     };
85 
86     const ADDR_SW_PATINFO GFX12_SW_4KB_2D_8xAA_PATINFO[] =
87     {
88         {  15,    4,    0,    0, } , // 1 BPE @ SW_4KB_2D_8xAA
89         {  16,    5,    0,    0, } , // 2 BPE @ SW_4KB_2D_8xAA
90         {  17,    6,    0,    0, } , // 4 BPE @ SW_4KB_2D_8xAA
91         {  18,    7,    0,    0, } , // 8 BPE @ SW_4KB_2D_8xAA
92         {  19,    8,    0,    0, } , // 16 BPE @ SW_4KB_2D_8xAA
93     };
94 
95     const ADDR_SW_PATINFO GFX12_SW_64KB_2D_1xAA_PATINFO[] =
96     {
97         {   0,    1,    1,    0, } , // 1 BPE @ SW_64KB_2D_1xAA
98         {   1,    2,    2,    0, } , // 2 BPE @ SW_64KB_2D_1xAA
99         {   2,    3,    3,    0, } , // 4 BPE @ SW_64KB_2D_1xAA
100         {   3,    4,    4,    0, } , // 8 BPE @ SW_64KB_2D_1xAA
101         {   4,    5,    5,    0, } , // 16 BPE @ SW_64KB_2D_1xAA
102     };
103 
104     const ADDR_SW_PATINFO GFX12_SW_64KB_2D_2xAA_PATINFO[] =
105     {
106         {   5,    2,    2,    0, } , // 1 BPE @ SW_64KB_2D_2xAA
107         {   6,    3,    3,    0, } , // 2 BPE @ SW_64KB_2D_2xAA
108         {   7,    4,    4,    0, } , // 4 BPE @ SW_64KB_2D_2xAA
109         {   8,    5,    5,    0, } , // 8 BPE @ SW_64KB_2D_2xAA
110         {   9,    6,    6,    0, } , // 16 BPE @ SW_64KB_2D_2xAA
111     };
112 
113     const ADDR_SW_PATINFO GFX12_SW_64KB_2D_4xAA_PATINFO[] =
114     {
115         {  10,    3,    3,    0, } , // 1 BPE @ SW_64KB_2D_4xAA
116         {  11,    4,    4,    0, } , // 2 BPE @ SW_64KB_2D_4xAA
117         {  12,    5,    5,    0, } , // 4 BPE @ SW_64KB_2D_4xAA
118         {  13,    6,    6,    0, } , // 8 BPE @ SW_64KB_2D_4xAA
119         {  14,    7,    7,    0, } , // 16 BPE @ SW_64KB_2D_4xAA
120     };
121 
122     const ADDR_SW_PATINFO GFX12_SW_64KB_2D_8xAA_PATINFO[] =
123     {
124         {  15,    4,    4,    0, } , // 1 BPE @ SW_64KB_2D_8xAA
125         {  16,    5,    5,    0, } , // 2 BPE @ SW_64KB_2D_8xAA
126         {  17,    6,    6,    0, } , // 4 BPE @ SW_64KB_2D_8xAA
127         {  18,    7,    7,    0, } , // 8 BPE @ SW_64KB_2D_8xAA
128         {  19,    8,    8,    0, } , // 16 BPE @ SW_64KB_2D_8xAA
129     };
130 
131     const ADDR_SW_PATINFO GFX12_SW_256KB_2D_1xAA_PATINFO[] =
132     {
133         {   0,    1,    1,    1, } , // 1 BPE @ SW_256KB_2D_1xAA
134         {   1,    2,    2,    2, } , // 2 BPE @ SW_256KB_2D_1xAA
135         {   2,    3,    3,    3, } , // 4 BPE @ SW_256KB_2D_1xAA
136         {   3,    4,    4,    4, } , // 8 BPE @ SW_256KB_2D_1xAA
137         {   4,    5,    5,    5, } , // 16 BPE @ SW_256KB_2D_1xAA
138     };
139 
140     const ADDR_SW_PATINFO GFX12_SW_256KB_2D_2xAA_PATINFO[] =
141     {
142         {   5,    2,    2,    2, } , // 1 BPE @ SW_256KB_2D_2xAA
143         {   6,    3,    3,    3, } , // 2 BPE @ SW_256KB_2D_2xAA
144         {   7,    4,    4,    4, } , // 4 BPE @ SW_256KB_2D_2xAA
145         {   8,    5,    5,    5, } , // 8 BPE @ SW_256KB_2D_2xAA
146         {   9,    6,    6,    6, } , // 16 BPE @ SW_256KB_2D_2xAA
147     };
148 
149     const ADDR_SW_PATINFO GFX12_SW_256KB_2D_4xAA_PATINFO[] =
150     {
151         {  10,    3,    3,    3, } , // 1 BPE @ SW_256KB_2D_4xAA
152         {  11,    4,    4,    4, } , // 2 BPE @ SW_256KB_2D_4xAA
153         {  12,    5,    5,    5, } , // 4 BPE @ SW_256KB_2D_4xAA
154         {  13,    6,    6,    6, } , // 8 BPE @ SW_256KB_2D_4xAA
155         {  14,    7,    7,    7, } , // 16 BPE @ SW_256KB_2D_4xAA
156     };
157 
158     const ADDR_SW_PATINFO GFX12_SW_256KB_2D_8xAA_PATINFO[] =
159     {
160         {  15,    4,    4,    4, } , // 1 BPE @ SW_256KB_2D_8xAA
161         {  16,    5,    5,    5, } , // 2 BPE @ SW_256KB_2D_8xAA
162         {  17,    6,    6,    6, } , // 4 BPE @ SW_256KB_2D_8xAA
163         {  18,    7,    7,    7, } , // 8 BPE @ SW_256KB_2D_8xAA
164         {  19,    8,    8,    8, } , // 16 BPE @ SW_256KB_2D_8xAA
165     };
166 
167     const ADDR_SW_PATINFO GFX12_SW_4KB_3D_PATINFO[] =
168     {
169         {  20,    9,    0,    0, } , // 1 BPE @ SW_4KB_3D
170         {  21,   10,    0,    0, } , // 2 BPE @ SW_4KB_3D
171         {  22,   11,    0,    0, } , // 4 BPE @ SW_4KB_3D
172         {  23,   12,    0,    0, } , // 8 BPE @ SW_4KB_3D
173         {  24,   13,    0,    0, } , // 16 BPE @ SW_4KB_3D
174     };
175 
176     const ADDR_SW_PATINFO GFX12_SW_64KB_3D_PATINFO[] =
177     {
178         {  20,    9,    9,    0, } , // 1 BPE @ SW_64KB_3D
179         {  21,   10,   10,    0, } , // 2 BPE @ SW_64KB_3D
180         {  22,   11,   11,    0, } , // 4 BPE @ SW_64KB_3D
181         {  23,   12,   12,    0, } , // 8 BPE @ SW_64KB_3D
182         {  24,   13,   13,    0, } , // 16 BPE @ SW_64KB_3D
183     };
184 
185     const ADDR_SW_PATINFO GFX12_SW_256KB_3D_PATINFO[] =
186     {
187         {  20,    9,    9,    9, } , // 1 BPE @ SW_256KB_3D
188         {  21,   10,   10,    9, } , // 2 BPE @ SW_256KB_3D
189         {  22,   11,   11,   10, } , // 4 BPE @ SW_256KB_3D
190         {  23,   12,   12,   11, } , // 8 BPE @ SW_256KB_3D
191         {  24,   13,   13,   11, } , // 16 BPE @ SW_256KB_3D
192     };
193 
194 
195     const UINT_64 GFX12_SW_PATTERN_NIBBLE1[][8] =
196     {
197         {X0,            X1,            Y0,            X2,            Y1,            Y2,            X3,            Y3,            }, // 0
198         {0,             X0,            Y0,            X1,            Y1,            X2,            Y2,            X3,            }, // 1
199         {0,             0,             X0,            Y0,            X1,            Y1,            X2,            Y2,            }, // 2
200         {0,             0,             0,             X0,            Y0,            X1,            X2,            Y1,            }, // 3
201         {0,             0,             0,             0,             X0,            Y0,            X1,            Y1,            }, // 4
202         {S0,            X0,            Y0,            X1,            Y1,            X2,            Y2,            X3,            }, // 5
203         {0,             S0,            X0,            Y0,            X1,            Y1,            X2,            Y2,            }, // 6
204         {0,             0,             S0,            X0,            Y0,            X1,            Y1,            X2,            }, // 7
205         {0,             0,             0,             S0,            X0,            Y0,            X1,            Y1,            }, // 8
206         {0,             0,             0,             0,             S0,            X0,            Y0,            X1,            }, // 9
207         {S0,            S1,            X0,            Y0,            X1,            Y1,            X2,            Y2,            }, // 10
208         {0,             S0,            S1,            X0,            Y0,            X1,            Y1,            X2,            }, // 11
209         {0,             0,             S0,            S1,            X0,            Y0,            X1,            Y1,            }, // 12
210         {0,             0,             0,             S0,            S1,            X0,            Y0,            X1,            }, // 13
211         {0,             0,             0,             0,             S0,            S1,            X0,            Y0,            }, // 14
212         {S0,            S1,            S2,            X0,            Y0,            X1,            Y1,            X2,            }, // 15
213         {0,             S0,            S1,            S2,            X0,            Y0,            X1,            Y1,            }, // 16
214         {0,             0,             S0,            S1,            S2,            X0,            Y0,            X1,            }, // 17
215         {0,             0,             0,             S0,            S1,            S2,            X0,            Y0,            }, // 18
216         {0,             0,             0,             0,             S0,            S1,            S2,            X0,            }, // 19
217         {X0,            X1,            Z0,            Y0,            Y1,            Z1,            X2,            Z2,            }, // 20
218         {0,             X0,            Z0,            Y0,            X1,            Z1,            Y1,            Z2,            }, // 21
219         {0,             0,             X0,            Y0,            X1,            Z0,            Y1,            Z1,            }, // 22
220         {0,             0,             0,             X0,            Y0,            Z0,            X1,            Z1,            }, // 23
221         {0,             0,             0,             0,             X0,            Z0,            Y0,            Z1,            }, // 24
222     };
223 
224     const UINT_64 GFX12_SW_PATTERN_NIBBLE2[][4] =
225     {
226         {0,             0,             0,             0,             }, // 0
227         {Y4,            X4,            Y5,            X5,            }, // 1
228         {Y3,            X4,            Y4,            X5,            }, // 2
229         {Y3,            X3,            Y4,            X4,            }, // 3
230         {Y2,            X3,            Y3,            X4,            }, // 4
231         {Y2,            X2,            Y3,            X3,            }, // 5
232         {Y1,            X2,            Y2,            X3,            }, // 6
233         {Y1,            X1,            Y2,            X2,            }, // 7
234         {Y0,            X1,            Y1,            X2,            }, // 8
235         {Y2,            X3,            Z3,            Y3,            }, // 9
236         {Y2,            X2,            Z3,            Y3,            }, // 10
237         {Y2,            X2,            Z2,            Y3,            }, // 11
238         {Y1,            X2,            Z2,            Y2,            }, // 12
239         {Y1,            X1,            Z2,            Y2,            }, // 13
240     };
241 
242     const UINT_64 GFX12_SW_PATTERN_NIBBLE3[][4] =
243     {
244         {0,             0,             0,             0,             }, // 0
245         {Y6,            X6,            Y7,            X7,            }, // 1
246         {Y5,            X6,            Y6,            X7,            }, // 2
247         {Y5,            X5,            Y6,            X6,            }, // 3
248         {Y4,            X5,            Y5,            X6,            }, // 4
249         {Y4,            X4,            Y5,            X5,            }, // 5
250         {Y3,            X4,            Y4,            X5,            }, // 6
251         {Y3,            X3,            Y4,            X4,            }, // 7
252         {Y2,            X3,            Y3,            X4,            }, // 8
253         {X4,            Z4,            Y4,            X5,            }, // 9
254         {X3,            Z4,            Y4,            X4,            }, // 10
255         {X3,            Z3,            Y4,            X4,            }, // 11
256         {X3,            Z3,            Y3,            X4,            }, // 12
257         {X2,            Z3,            Y3,            X3,            }, // 13
258     };
259 
260     const UINT_64 GFX12_SW_PATTERN_NIBBLE4[][2] =
261     {
262         {0,             0,             }, // 0
263         {Y8,            X8,            }, // 1
264         {Y7,            X8,            }, // 2
265         {Y7,            X7,            }, // 3
266         {Y6,            X7,            }, // 4
267         {Y6,            X6,            }, // 5
268         {Y5,            X6,            }, // 6
269         {Y5,            X5,            }, // 7
270         {Y4,            X5,            }, // 8
271         {Z5,            Y5,            }, // 9
272         {Z4,            Y5,            }, // 10
273         {Z4,            Y4,            }, // 11
274     };
275 
276 } // V3
277 } // Addr
278 
279 #endif
280