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