xref: /aosp_15_r20/external/llvm/lib/Target/AMDGPU/SIDefines.h (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker //===-- SIDefines.h - SI Helper Macros ----------------------*- C++ -*-===//
2*9880d681SAndroid Build Coastguard Worker //
3*9880d681SAndroid Build Coastguard Worker //                     The LLVM Compiler Infrastructure
4*9880d681SAndroid Build Coastguard Worker //
5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source
6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details.
7*9880d681SAndroid Build Coastguard Worker //
8*9880d681SAndroid Build Coastguard Worker /// \file
9*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
10*9880d681SAndroid Build Coastguard Worker 
11*9880d681SAndroid Build Coastguard Worker #include "llvm/MC/MCInstrDesc.h"
12*9880d681SAndroid Build Coastguard Worker 
13*9880d681SAndroid Build Coastguard Worker #ifndef LLVM_LIB_TARGET_AMDGPU_SIDEFINES_H
14*9880d681SAndroid Build Coastguard Worker #define LLVM_LIB_TARGET_AMDGPU_SIDEFINES_H
15*9880d681SAndroid Build Coastguard Worker 
16*9880d681SAndroid Build Coastguard Worker namespace SIInstrFlags {
17*9880d681SAndroid Build Coastguard Worker // This needs to be kept in sync with the field bits in InstSI.
18*9880d681SAndroid Build Coastguard Worker enum {
19*9880d681SAndroid Build Coastguard Worker   SALU = 1 << 3,
20*9880d681SAndroid Build Coastguard Worker   VALU = 1 << 4,
21*9880d681SAndroid Build Coastguard Worker 
22*9880d681SAndroid Build Coastguard Worker   SOP1 = 1 << 5,
23*9880d681SAndroid Build Coastguard Worker   SOP2 = 1 << 6,
24*9880d681SAndroid Build Coastguard Worker   SOPC = 1 << 7,
25*9880d681SAndroid Build Coastguard Worker   SOPK = 1 << 8,
26*9880d681SAndroid Build Coastguard Worker   SOPP = 1 << 9,
27*9880d681SAndroid Build Coastguard Worker 
28*9880d681SAndroid Build Coastguard Worker   VOP1 = 1 << 10,
29*9880d681SAndroid Build Coastguard Worker   VOP2 = 1 << 11,
30*9880d681SAndroid Build Coastguard Worker   VOP3 = 1 << 12,
31*9880d681SAndroid Build Coastguard Worker   VOPC = 1 << 13,
32*9880d681SAndroid Build Coastguard Worker   SDWA = 1 << 14,
33*9880d681SAndroid Build Coastguard Worker   DPP = 1 << 15,
34*9880d681SAndroid Build Coastguard Worker 
35*9880d681SAndroid Build Coastguard Worker   MUBUF = 1 << 16,
36*9880d681SAndroid Build Coastguard Worker   MTBUF = 1 << 17,
37*9880d681SAndroid Build Coastguard Worker   SMRD = 1 << 18,
38*9880d681SAndroid Build Coastguard Worker   DS = 1 << 19,
39*9880d681SAndroid Build Coastguard Worker   MIMG = 1 << 20,
40*9880d681SAndroid Build Coastguard Worker   FLAT = 1 << 21,
41*9880d681SAndroid Build Coastguard Worker   WQM = 1 << 22,
42*9880d681SAndroid Build Coastguard Worker   VGPRSpill = 1 << 23,
43*9880d681SAndroid Build Coastguard Worker   VOPAsmPrefer32Bit = 1 << 24,
44*9880d681SAndroid Build Coastguard Worker   Gather4 = 1 << 25
45*9880d681SAndroid Build Coastguard Worker };
46*9880d681SAndroid Build Coastguard Worker }
47*9880d681SAndroid Build Coastguard Worker 
48*9880d681SAndroid Build Coastguard Worker namespace llvm {
49*9880d681SAndroid Build Coastguard Worker namespace AMDGPU {
50*9880d681SAndroid Build Coastguard Worker   enum OperandType {
51*9880d681SAndroid Build Coastguard Worker     /// Operand with register or 32-bit immediate
52*9880d681SAndroid Build Coastguard Worker     OPERAND_REG_IMM32 = MCOI::OPERAND_FIRST_TARGET,
53*9880d681SAndroid Build Coastguard Worker     /// Operand with register or inline constant
54*9880d681SAndroid Build Coastguard Worker     OPERAND_REG_INLINE_C,
55*9880d681SAndroid Build Coastguard Worker 
56*9880d681SAndroid Build Coastguard Worker     /// Operand with 32-bit immediate that uses the constant bus. The standard
57*9880d681SAndroid Build Coastguard Worker     /// OPERAND_IMMEDIATE should be used for special immediates such as source
58*9880d681SAndroid Build Coastguard Worker     /// modifiers.
59*9880d681SAndroid Build Coastguard Worker     OPERAND_KIMM32
60*9880d681SAndroid Build Coastguard Worker   };
61*9880d681SAndroid Build Coastguard Worker }
62*9880d681SAndroid Build Coastguard Worker }
63*9880d681SAndroid Build Coastguard Worker 
64*9880d681SAndroid Build Coastguard Worker namespace SIInstrFlags {
65*9880d681SAndroid Build Coastguard Worker   enum Flags {
66*9880d681SAndroid Build Coastguard Worker     // First 4 bits are the instruction encoding
67*9880d681SAndroid Build Coastguard Worker     VM_CNT = 1 << 0,
68*9880d681SAndroid Build Coastguard Worker     EXP_CNT = 1 << 1,
69*9880d681SAndroid Build Coastguard Worker     LGKM_CNT = 1 << 2
70*9880d681SAndroid Build Coastguard Worker   };
71*9880d681SAndroid Build Coastguard Worker 
72*9880d681SAndroid Build Coastguard Worker   // v_cmp_class_* etc. use a 10-bit mask for what operation is checked.
73*9880d681SAndroid Build Coastguard Worker   // The result is true if any of these tests are true.
74*9880d681SAndroid Build Coastguard Worker   enum ClassFlags {
75*9880d681SAndroid Build Coastguard Worker     S_NAN = 1 << 0,        // Signaling NaN
76*9880d681SAndroid Build Coastguard Worker     Q_NAN = 1 << 1,        // Quiet NaN
77*9880d681SAndroid Build Coastguard Worker     N_INFINITY = 1 << 2,   // Negative infinity
78*9880d681SAndroid Build Coastguard Worker     N_NORMAL = 1 << 3,     // Negative normal
79*9880d681SAndroid Build Coastguard Worker     N_SUBNORMAL = 1 << 4,  // Negative subnormal
80*9880d681SAndroid Build Coastguard Worker     N_ZERO = 1 << 5,       // Negative zero
81*9880d681SAndroid Build Coastguard Worker     P_ZERO = 1 << 6,       // Positive zero
82*9880d681SAndroid Build Coastguard Worker     P_SUBNORMAL = 1 << 7,  // Positive subnormal
83*9880d681SAndroid Build Coastguard Worker     P_NORMAL = 1 << 8,     // Positive normal
84*9880d681SAndroid Build Coastguard Worker     P_INFINITY = 1 << 9    // Positive infinity
85*9880d681SAndroid Build Coastguard Worker   };
86*9880d681SAndroid Build Coastguard Worker }
87*9880d681SAndroid Build Coastguard Worker 
88*9880d681SAndroid Build Coastguard Worker // Input operand modifiers bit-masks
89*9880d681SAndroid Build Coastguard Worker // NEG and SEXT share same bit-mask because they can't be set simultaneously.
90*9880d681SAndroid Build Coastguard Worker namespace SISrcMods {
91*9880d681SAndroid Build Coastguard Worker   enum {
92*9880d681SAndroid Build Coastguard Worker    NEG = 1 << 0,  // Floating-point negate modifier
93*9880d681SAndroid Build Coastguard Worker    ABS = 1 << 1,  // Floating-point absolute modifier
94*9880d681SAndroid Build Coastguard Worker    SEXT = 1 << 0  // Integer sign-extend modifier
95*9880d681SAndroid Build Coastguard Worker   };
96*9880d681SAndroid Build Coastguard Worker }
97*9880d681SAndroid Build Coastguard Worker 
98*9880d681SAndroid Build Coastguard Worker namespace SIOutMods {
99*9880d681SAndroid Build Coastguard Worker   enum {
100*9880d681SAndroid Build Coastguard Worker     NONE = 0,
101*9880d681SAndroid Build Coastguard Worker     MUL2 = 1,
102*9880d681SAndroid Build Coastguard Worker     MUL4 = 2,
103*9880d681SAndroid Build Coastguard Worker     DIV2 = 3
104*9880d681SAndroid Build Coastguard Worker   };
105*9880d681SAndroid Build Coastguard Worker }
106*9880d681SAndroid Build Coastguard Worker 
107*9880d681SAndroid Build Coastguard Worker namespace llvm {
108*9880d681SAndroid Build Coastguard Worker namespace AMDGPU {
109*9880d681SAndroid Build Coastguard Worker namespace EncValues { // Encoding values of enum9/8/7 operands
110*9880d681SAndroid Build Coastguard Worker 
111*9880d681SAndroid Build Coastguard Worker enum {
112*9880d681SAndroid Build Coastguard Worker   SGPR_MIN = 0,
113*9880d681SAndroid Build Coastguard Worker   SGPR_MAX = 101,
114*9880d681SAndroid Build Coastguard Worker   TTMP_MIN = 112,
115*9880d681SAndroid Build Coastguard Worker   TTMP_MAX = 123,
116*9880d681SAndroid Build Coastguard Worker   INLINE_INTEGER_C_MIN = 128,
117*9880d681SAndroid Build Coastguard Worker   INLINE_INTEGER_C_POSITIVE_MAX = 192, // 64
118*9880d681SAndroid Build Coastguard Worker   INLINE_INTEGER_C_MAX = 208,
119*9880d681SAndroid Build Coastguard Worker   INLINE_FLOATING_C_MIN = 240,
120*9880d681SAndroid Build Coastguard Worker   INLINE_FLOATING_C_MAX = 248,
121*9880d681SAndroid Build Coastguard Worker   LITERAL_CONST = 255,
122*9880d681SAndroid Build Coastguard Worker   VGPR_MIN = 256,
123*9880d681SAndroid Build Coastguard Worker   VGPR_MAX = 511
124*9880d681SAndroid Build Coastguard Worker };
125*9880d681SAndroid Build Coastguard Worker 
126*9880d681SAndroid Build Coastguard Worker } // namespace EncValues
127*9880d681SAndroid Build Coastguard Worker } // namespace AMDGPU
128*9880d681SAndroid Build Coastguard Worker } // namespace llvm
129*9880d681SAndroid Build Coastguard Worker 
130*9880d681SAndroid Build Coastguard Worker namespace llvm {
131*9880d681SAndroid Build Coastguard Worker namespace AMDGPU {
132*9880d681SAndroid Build Coastguard Worker namespace SendMsg { // Encoding of SIMM16 used in s_sendmsg* insns.
133*9880d681SAndroid Build Coastguard Worker 
134*9880d681SAndroid Build Coastguard Worker enum Id { // Message ID, width(4) [3:0].
135*9880d681SAndroid Build Coastguard Worker   ID_UNKNOWN_ = -1,
136*9880d681SAndroid Build Coastguard Worker   ID_INTERRUPT = 1,
137*9880d681SAndroid Build Coastguard Worker   ID_GS,
138*9880d681SAndroid Build Coastguard Worker   ID_GS_DONE,
139*9880d681SAndroid Build Coastguard Worker   ID_SYSMSG = 15,
140*9880d681SAndroid Build Coastguard Worker   ID_GAPS_LAST_, // Indicate that sequence has gaps.
141*9880d681SAndroid Build Coastguard Worker   ID_GAPS_FIRST_ = ID_INTERRUPT,
142*9880d681SAndroid Build Coastguard Worker   ID_SHIFT_ = 0,
143*9880d681SAndroid Build Coastguard Worker   ID_WIDTH_ = 4,
144*9880d681SAndroid Build Coastguard Worker   ID_MASK_ = (((1 << ID_WIDTH_) - 1) << ID_SHIFT_)
145*9880d681SAndroid Build Coastguard Worker };
146*9880d681SAndroid Build Coastguard Worker 
147*9880d681SAndroid Build Coastguard Worker enum Op { // Both GS and SYS operation IDs.
148*9880d681SAndroid Build Coastguard Worker   OP_UNKNOWN_ = -1,
149*9880d681SAndroid Build Coastguard Worker   OP_SHIFT_ = 4,
150*9880d681SAndroid Build Coastguard Worker   // width(2) [5:4]
151*9880d681SAndroid Build Coastguard Worker   OP_GS_NOP = 0,
152*9880d681SAndroid Build Coastguard Worker   OP_GS_CUT,
153*9880d681SAndroid Build Coastguard Worker   OP_GS_EMIT,
154*9880d681SAndroid Build Coastguard Worker   OP_GS_EMIT_CUT,
155*9880d681SAndroid Build Coastguard Worker   OP_GS_LAST_,
156*9880d681SAndroid Build Coastguard Worker   OP_GS_FIRST_ = OP_GS_NOP,
157*9880d681SAndroid Build Coastguard Worker   OP_GS_WIDTH_ = 2,
158*9880d681SAndroid Build Coastguard Worker   OP_GS_MASK_ = (((1 << OP_GS_WIDTH_) - 1) << OP_SHIFT_),
159*9880d681SAndroid Build Coastguard Worker   // width(3) [6:4]
160*9880d681SAndroid Build Coastguard Worker   OP_SYS_ECC_ERR_INTERRUPT = 1,
161*9880d681SAndroid Build Coastguard Worker   OP_SYS_REG_RD,
162*9880d681SAndroid Build Coastguard Worker   OP_SYS_HOST_TRAP_ACK,
163*9880d681SAndroid Build Coastguard Worker   OP_SYS_TTRACE_PC,
164*9880d681SAndroid Build Coastguard Worker   OP_SYS_LAST_,
165*9880d681SAndroid Build Coastguard Worker   OP_SYS_FIRST_ = OP_SYS_ECC_ERR_INTERRUPT,
166*9880d681SAndroid Build Coastguard Worker   OP_SYS_WIDTH_ = 3,
167*9880d681SAndroid Build Coastguard Worker   OP_SYS_MASK_ = (((1 << OP_SYS_WIDTH_) - 1) << OP_SHIFT_)
168*9880d681SAndroid Build Coastguard Worker };
169*9880d681SAndroid Build Coastguard Worker 
170*9880d681SAndroid Build Coastguard Worker enum StreamId { // Stream ID, (2) [9:8].
171*9880d681SAndroid Build Coastguard Worker   STREAM_ID_DEFAULT_ = 0,
172*9880d681SAndroid Build Coastguard Worker   STREAM_ID_LAST_ = 4,
173*9880d681SAndroid Build Coastguard Worker   STREAM_ID_FIRST_ = STREAM_ID_DEFAULT_,
174*9880d681SAndroid Build Coastguard Worker   STREAM_ID_SHIFT_ = 8,
175*9880d681SAndroid Build Coastguard Worker   STREAM_ID_WIDTH_=  2,
176*9880d681SAndroid Build Coastguard Worker   STREAM_ID_MASK_ = (((1 << STREAM_ID_WIDTH_) - 1) << STREAM_ID_SHIFT_)
177*9880d681SAndroid Build Coastguard Worker };
178*9880d681SAndroid Build Coastguard Worker 
179*9880d681SAndroid Build Coastguard Worker } // namespace SendMsg
180*9880d681SAndroid Build Coastguard Worker 
181*9880d681SAndroid Build Coastguard Worker namespace Hwreg { // Encoding of SIMM16 used in s_setreg/getreg* insns.
182*9880d681SAndroid Build Coastguard Worker 
183*9880d681SAndroid Build Coastguard Worker enum Id { // HwRegCode, (6) [5:0]
184*9880d681SAndroid Build Coastguard Worker   ID_UNKNOWN_ = -1,
185*9880d681SAndroid Build Coastguard Worker   ID_SYMBOLIC_FIRST_ = 1, // There are corresponding symbolic names defined.
186*9880d681SAndroid Build Coastguard Worker   ID_SYMBOLIC_LAST_ = 8,
187*9880d681SAndroid Build Coastguard Worker   ID_SHIFT_ = 0,
188*9880d681SAndroid Build Coastguard Worker   ID_WIDTH_ = 6,
189*9880d681SAndroid Build Coastguard Worker   ID_MASK_ = (((1 << ID_WIDTH_) - 1) << ID_SHIFT_)
190*9880d681SAndroid Build Coastguard Worker };
191*9880d681SAndroid Build Coastguard Worker 
192*9880d681SAndroid Build Coastguard Worker enum Offset { // Offset, (5) [10:6]
193*9880d681SAndroid Build Coastguard Worker   OFFSET_DEFAULT_ = 0,
194*9880d681SAndroid Build Coastguard Worker   OFFSET_SHIFT_ = 6,
195*9880d681SAndroid Build Coastguard Worker   OFFSET_WIDTH_ = 5,
196*9880d681SAndroid Build Coastguard Worker   OFFSET_MASK_ = (((1 << OFFSET_WIDTH_) - 1) << OFFSET_SHIFT_)
197*9880d681SAndroid Build Coastguard Worker };
198*9880d681SAndroid Build Coastguard Worker 
199*9880d681SAndroid Build Coastguard Worker enum WidthMinusOne { // WidthMinusOne, (5) [15:11]
200*9880d681SAndroid Build Coastguard Worker   WIDTH_M1_DEFAULT_ = 31,
201*9880d681SAndroid Build Coastguard Worker   WIDTH_M1_SHIFT_ = 11,
202*9880d681SAndroid Build Coastguard Worker   WIDTH_M1_WIDTH_ = 5,
203*9880d681SAndroid Build Coastguard Worker   WIDTH_M1_MASK_ = (((1 << WIDTH_M1_WIDTH_) - 1) << WIDTH_M1_SHIFT_)
204*9880d681SAndroid Build Coastguard Worker };
205*9880d681SAndroid Build Coastguard Worker 
206*9880d681SAndroid Build Coastguard Worker } // namespace Hwreg
207*9880d681SAndroid Build Coastguard Worker } // namespace AMDGPU
208*9880d681SAndroid Build Coastguard Worker } // namespace llvm
209*9880d681SAndroid Build Coastguard Worker 
210*9880d681SAndroid Build Coastguard Worker #define R_00B028_SPI_SHADER_PGM_RSRC1_PS                                0x00B028
211*9880d681SAndroid Build Coastguard Worker #define R_00B02C_SPI_SHADER_PGM_RSRC2_PS                                0x00B02C
212*9880d681SAndroid Build Coastguard Worker #define   S_00B02C_EXTRA_LDS_SIZE(x)                                  (((x) & 0xFF) << 8)
213*9880d681SAndroid Build Coastguard Worker #define R_00B128_SPI_SHADER_PGM_RSRC1_VS                                0x00B128
214*9880d681SAndroid Build Coastguard Worker #define R_00B228_SPI_SHADER_PGM_RSRC1_GS                                0x00B228
215*9880d681SAndroid Build Coastguard Worker #define R_00B848_COMPUTE_PGM_RSRC1                                      0x00B848
216*9880d681SAndroid Build Coastguard Worker #define   S_00B028_VGPRS(x)                                           (((x) & 0x3F) << 0)
217*9880d681SAndroid Build Coastguard Worker #define   S_00B028_SGPRS(x)                                           (((x) & 0x0F) << 6)
218*9880d681SAndroid Build Coastguard Worker 
219*9880d681SAndroid Build Coastguard Worker #define R_00B84C_COMPUTE_PGM_RSRC2                                      0x00B84C
220*9880d681SAndroid Build Coastguard Worker #define   S_00B84C_SCRATCH_EN(x)                                      (((x) & 0x1) << 0)
221*9880d681SAndroid Build Coastguard Worker #define   G_00B84C_SCRATCH_EN(x)                                      (((x) >> 0) & 0x1)
222*9880d681SAndroid Build Coastguard Worker #define   C_00B84C_SCRATCH_EN                                         0xFFFFFFFE
223*9880d681SAndroid Build Coastguard Worker #define   S_00B84C_USER_SGPR(x)                                       (((x) & 0x1F) << 1)
224*9880d681SAndroid Build Coastguard Worker #define   G_00B84C_USER_SGPR(x)                                       (((x) >> 1) & 0x1F)
225*9880d681SAndroid Build Coastguard Worker #define   C_00B84C_USER_SGPR                                          0xFFFFFFC1
226*9880d681SAndroid Build Coastguard Worker #define   S_00B84C_TGID_X_EN(x)                                       (((x) & 0x1) << 7)
227*9880d681SAndroid Build Coastguard Worker #define   G_00B84C_TGID_X_EN(x)                                       (((x) >> 7) & 0x1)
228*9880d681SAndroid Build Coastguard Worker #define   C_00B84C_TGID_X_EN                                          0xFFFFFF7F
229*9880d681SAndroid Build Coastguard Worker #define   S_00B84C_TGID_Y_EN(x)                                       (((x) & 0x1) << 8)
230*9880d681SAndroid Build Coastguard Worker #define   G_00B84C_TGID_Y_EN(x)                                       (((x) >> 8) & 0x1)
231*9880d681SAndroid Build Coastguard Worker #define   C_00B84C_TGID_Y_EN                                          0xFFFFFEFF
232*9880d681SAndroid Build Coastguard Worker #define   S_00B84C_TGID_Z_EN(x)                                       (((x) & 0x1) << 9)
233*9880d681SAndroid Build Coastguard Worker #define   G_00B84C_TGID_Z_EN(x)                                       (((x) >> 9) & 0x1)
234*9880d681SAndroid Build Coastguard Worker #define   C_00B84C_TGID_Z_EN                                          0xFFFFFDFF
235*9880d681SAndroid Build Coastguard Worker #define   S_00B84C_TG_SIZE_EN(x)                                      (((x) & 0x1) << 10)
236*9880d681SAndroid Build Coastguard Worker #define   G_00B84C_TG_SIZE_EN(x)                                      (((x) >> 10) & 0x1)
237*9880d681SAndroid Build Coastguard Worker #define   C_00B84C_TG_SIZE_EN                                         0xFFFFFBFF
238*9880d681SAndroid Build Coastguard Worker #define   S_00B84C_TIDIG_COMP_CNT(x)                                  (((x) & 0x03) << 11)
239*9880d681SAndroid Build Coastguard Worker #define   G_00B84C_TIDIG_COMP_CNT(x)                                  (((x) >> 11) & 0x03)
240*9880d681SAndroid Build Coastguard Worker #define   C_00B84C_TIDIG_COMP_CNT                                     0xFFFFE7FF
241*9880d681SAndroid Build Coastguard Worker /* CIK */
242*9880d681SAndroid Build Coastguard Worker #define   S_00B84C_EXCP_EN_MSB(x)                                     (((x) & 0x03) << 13)
243*9880d681SAndroid Build Coastguard Worker #define   G_00B84C_EXCP_EN_MSB(x)                                     (((x) >> 13) & 0x03)
244*9880d681SAndroid Build Coastguard Worker #define   C_00B84C_EXCP_EN_MSB                                        0xFFFF9FFF
245*9880d681SAndroid Build Coastguard Worker /*     */
246*9880d681SAndroid Build Coastguard Worker #define   S_00B84C_LDS_SIZE(x)                                        (((x) & 0x1FF) << 15)
247*9880d681SAndroid Build Coastguard Worker #define   G_00B84C_LDS_SIZE(x)                                        (((x) >> 15) & 0x1FF)
248*9880d681SAndroid Build Coastguard Worker #define   C_00B84C_LDS_SIZE                                           0xFF007FFF
249*9880d681SAndroid Build Coastguard Worker #define   S_00B84C_EXCP_EN(x)                                         (((x) & 0x7F) << 24)
250*9880d681SAndroid Build Coastguard Worker #define   G_00B84C_EXCP_EN(x)                                         (((x) >> 24) & 0x7F)
251*9880d681SAndroid Build Coastguard Worker #define   C_00B84C_EXCP_EN
252*9880d681SAndroid Build Coastguard Worker 
253*9880d681SAndroid Build Coastguard Worker #define R_0286CC_SPI_PS_INPUT_ENA                                       0x0286CC
254*9880d681SAndroid Build Coastguard Worker #define R_0286D0_SPI_PS_INPUT_ADDR                                      0x0286D0
255*9880d681SAndroid Build Coastguard Worker 
256*9880d681SAndroid Build Coastguard Worker #define R_00B848_COMPUTE_PGM_RSRC1                                      0x00B848
257*9880d681SAndroid Build Coastguard Worker #define   S_00B848_VGPRS(x)                                           (((x) & 0x3F) << 0)
258*9880d681SAndroid Build Coastguard Worker #define   G_00B848_VGPRS(x)                                           (((x) >> 0) & 0x3F)
259*9880d681SAndroid Build Coastguard Worker #define   C_00B848_VGPRS                                              0xFFFFFFC0
260*9880d681SAndroid Build Coastguard Worker #define   S_00B848_SGPRS(x)                                           (((x) & 0x0F) << 6)
261*9880d681SAndroid Build Coastguard Worker #define   G_00B848_SGPRS(x)                                           (((x) >> 6) & 0x0F)
262*9880d681SAndroid Build Coastguard Worker #define   C_00B848_SGPRS                                              0xFFFFFC3F
263*9880d681SAndroid Build Coastguard Worker #define   S_00B848_PRIORITY(x)                                        (((x) & 0x03) << 10)
264*9880d681SAndroid Build Coastguard Worker #define   G_00B848_PRIORITY(x)                                        (((x) >> 10) & 0x03)
265*9880d681SAndroid Build Coastguard Worker #define   C_00B848_PRIORITY                                           0xFFFFF3FF
266*9880d681SAndroid Build Coastguard Worker #define   S_00B848_FLOAT_MODE(x)                                      (((x) & 0xFF) << 12)
267*9880d681SAndroid Build Coastguard Worker #define   G_00B848_FLOAT_MODE(x)                                      (((x) >> 12) & 0xFF)
268*9880d681SAndroid Build Coastguard Worker #define   C_00B848_FLOAT_MODE                                         0xFFF00FFF
269*9880d681SAndroid Build Coastguard Worker #define   S_00B848_PRIV(x)                                            (((x) & 0x1) << 20)
270*9880d681SAndroid Build Coastguard Worker #define   G_00B848_PRIV(x)                                            (((x) >> 20) & 0x1)
271*9880d681SAndroid Build Coastguard Worker #define   C_00B848_PRIV                                               0xFFEFFFFF
272*9880d681SAndroid Build Coastguard Worker #define   S_00B848_DX10_CLAMP(x)                                      (((x) & 0x1) << 21)
273*9880d681SAndroid Build Coastguard Worker #define   G_00B848_DX10_CLAMP(x)                                      (((x) >> 21) & 0x1)
274*9880d681SAndroid Build Coastguard Worker #define   C_00B848_DX10_CLAMP                                         0xFFDFFFFF
275*9880d681SAndroid Build Coastguard Worker #define   S_00B848_DEBUG_MODE(x)                                      (((x) & 0x1) << 22)
276*9880d681SAndroid Build Coastguard Worker #define   G_00B848_DEBUG_MODE(x)                                      (((x) >> 22) & 0x1)
277*9880d681SAndroid Build Coastguard Worker #define   C_00B848_DEBUG_MODE                                         0xFFBFFFFF
278*9880d681SAndroid Build Coastguard Worker #define   S_00B848_IEEE_MODE(x)                                       (((x) & 0x1) << 23)
279*9880d681SAndroid Build Coastguard Worker #define   G_00B848_IEEE_MODE(x)                                       (((x) >> 23) & 0x1)
280*9880d681SAndroid Build Coastguard Worker #define   C_00B848_IEEE_MODE                                          0xFF7FFFFF
281*9880d681SAndroid Build Coastguard Worker 
282*9880d681SAndroid Build Coastguard Worker 
283*9880d681SAndroid Build Coastguard Worker // Helpers for setting FLOAT_MODE
284*9880d681SAndroid Build Coastguard Worker #define FP_ROUND_ROUND_TO_NEAREST 0
285*9880d681SAndroid Build Coastguard Worker #define FP_ROUND_ROUND_TO_INF 1
286*9880d681SAndroid Build Coastguard Worker #define FP_ROUND_ROUND_TO_NEGINF 2
287*9880d681SAndroid Build Coastguard Worker #define FP_ROUND_ROUND_TO_ZERO 3
288*9880d681SAndroid Build Coastguard Worker 
289*9880d681SAndroid Build Coastguard Worker // Bits 3:0 control rounding mode. 1:0 control single precision, 3:2 double
290*9880d681SAndroid Build Coastguard Worker // precision.
291*9880d681SAndroid Build Coastguard Worker #define FP_ROUND_MODE_SP(x) ((x) & 0x3)
292*9880d681SAndroid Build Coastguard Worker #define FP_ROUND_MODE_DP(x) (((x) & 0x3) << 2)
293*9880d681SAndroid Build Coastguard Worker 
294*9880d681SAndroid Build Coastguard Worker #define FP_DENORM_FLUSH_IN_FLUSH_OUT 0
295*9880d681SAndroid Build Coastguard Worker #define FP_DENORM_FLUSH_OUT 1
296*9880d681SAndroid Build Coastguard Worker #define FP_DENORM_FLUSH_IN 2
297*9880d681SAndroid Build Coastguard Worker #define FP_DENORM_FLUSH_NONE 3
298*9880d681SAndroid Build Coastguard Worker 
299*9880d681SAndroid Build Coastguard Worker 
300*9880d681SAndroid Build Coastguard Worker // Bits 7:4 control denormal handling. 5:4 control single precision, 6:7 double
301*9880d681SAndroid Build Coastguard Worker // precision.
302*9880d681SAndroid Build Coastguard Worker #define FP_DENORM_MODE_SP(x) (((x) & 0x3) << 4)
303*9880d681SAndroid Build Coastguard Worker #define FP_DENORM_MODE_DP(x) (((x) & 0x3) << 6)
304*9880d681SAndroid Build Coastguard Worker 
305*9880d681SAndroid Build Coastguard Worker #define R_00B860_COMPUTE_TMPRING_SIZE                                   0x00B860
306*9880d681SAndroid Build Coastguard Worker #define   S_00B860_WAVESIZE(x)                                        (((x) & 0x1FFF) << 12)
307*9880d681SAndroid Build Coastguard Worker 
308*9880d681SAndroid Build Coastguard Worker #define R_0286E8_SPI_TMPRING_SIZE                                       0x0286E8
309*9880d681SAndroid Build Coastguard Worker #define   S_0286E8_WAVESIZE(x)                                        (((x) & 0x1FFF) << 12)
310*9880d681SAndroid Build Coastguard Worker 
311*9880d681SAndroid Build Coastguard Worker #define R_SPILLED_SGPRS         0x4
312*9880d681SAndroid Build Coastguard Worker #define R_SPILLED_VGPRS         0x8
313*9880d681SAndroid Build Coastguard Worker 
314*9880d681SAndroid Build Coastguard Worker #endif
315