xref: /aosp_15_r20/external/llvm/lib/Target/AMDGPU/Utils/AMDKernelCodeTInfo.h (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker //===--------------------- AMDKernelCodeTInfo.h ---------------------------===//
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 //===----------------------------------------------------------------------===//
9*9880d681SAndroid Build Coastguard Worker //
10*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
11*9880d681SAndroid Build Coastguard Worker //
12*9880d681SAndroid Build Coastguard Worker /// \file - specifies tables for amd_kernel_code_t structure parsing/printing
13*9880d681SAndroid Build Coastguard Worker //
14*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
15*9880d681SAndroid Build Coastguard Worker 
16*9880d681SAndroid Build Coastguard Worker #define QNAME(name) amd_kernel_code_t::name
17*9880d681SAndroid Build Coastguard Worker #define FLD_T(name) decltype(QNAME(name)), &QNAME(name)
18*9880d681SAndroid Build Coastguard Worker 
19*9880d681SAndroid Build Coastguard Worker #define FIELD2(sname, name) \
20*9880d681SAndroid Build Coastguard Worker   RECORD(sname, printField<FLD_T(name)>, parseField<FLD_T(name)>)
21*9880d681SAndroid Build Coastguard Worker 
22*9880d681SAndroid Build Coastguard Worker #define FIELD(name) FIELD2(name, name)
23*9880d681SAndroid Build Coastguard Worker 
24*9880d681SAndroid Build Coastguard Worker 
25*9880d681SAndroid Build Coastguard Worker #define PRINTCODEPROP(name) \
26*9880d681SAndroid Build Coastguard Worker   printBitField<FLD_T(code_properties),\
27*9880d681SAndroid Build Coastguard Worker                 AMD_CODE_PROPERTY_##name##_SHIFT,\
28*9880d681SAndroid Build Coastguard Worker                 AMD_CODE_PROPERTY_##name##_WIDTH>
29*9880d681SAndroid Build Coastguard Worker 
30*9880d681SAndroid Build Coastguard Worker #define PARSECODEPROP(name) \
31*9880d681SAndroid Build Coastguard Worker   parseBitField<FLD_T(code_properties),\
32*9880d681SAndroid Build Coastguard Worker                 AMD_CODE_PROPERTY_##name##_SHIFT,\
33*9880d681SAndroid Build Coastguard Worker                 AMD_CODE_PROPERTY_##name##_WIDTH>
34*9880d681SAndroid Build Coastguard Worker 
35*9880d681SAndroid Build Coastguard Worker #define CODEPROP(name, shift) \
36*9880d681SAndroid Build Coastguard Worker   RECORD(name, PRINTCODEPROP(shift), PARSECODEPROP(shift))
37*9880d681SAndroid Build Coastguard Worker 
38*9880d681SAndroid Build Coastguard Worker // have to define these lambdas because of Set/GetMacro
39*9880d681SAndroid Build Coastguard Worker #define PRINTCOMP(GetMacro, Shift) \
40*9880d681SAndroid Build Coastguard Worker [](StringRef Name, const amd_kernel_code_t &C, raw_ostream &OS) { \
41*9880d681SAndroid Build Coastguard Worker    printName(OS, Name) << \
42*9880d681SAndroid Build Coastguard Worker      (int)GetMacro(C.compute_pgm_resource_registers >> Shift); \
43*9880d681SAndroid Build Coastguard Worker }
44*9880d681SAndroid Build Coastguard Worker #define PARSECOMP(SetMacro, Shift) \
45*9880d681SAndroid Build Coastguard Worker [](amd_kernel_code_t &C, MCAsmParser &MCParser, raw_ostream &Err) { \
46*9880d681SAndroid Build Coastguard Worker    int64_t Value = 0; \
47*9880d681SAndroid Build Coastguard Worker    if (!expectAbsExpression(MCParser, Value, Err)) \
48*9880d681SAndroid Build Coastguard Worker      return false; \
49*9880d681SAndroid Build Coastguard Worker    C.compute_pgm_resource_registers |= SetMacro(Value) << Shift; \
50*9880d681SAndroid Build Coastguard Worker    return true; \
51*9880d681SAndroid Build Coastguard Worker }
52*9880d681SAndroid Build Coastguard Worker 
53*9880d681SAndroid Build Coastguard Worker #define COMPPGM(name, GetMacro, SetMacro, Shift) \
54*9880d681SAndroid Build Coastguard Worker   RECORD(name, PRINTCOMP(GetMacro, Shift), PARSECOMP(SetMacro, Shift))
55*9880d681SAndroid Build Coastguard Worker 
56*9880d681SAndroid Build Coastguard Worker #define COMPPGM1(name, AccMacro) \
57*9880d681SAndroid Build Coastguard Worker   COMPPGM(compute_pgm_rsrc1_##name, \
58*9880d681SAndroid Build Coastguard Worker           G_00B848_##AccMacro, S_00B848_##AccMacro, 0)
59*9880d681SAndroid Build Coastguard Worker 
60*9880d681SAndroid Build Coastguard Worker #define COMPPGM2(name, AccMacro) \
61*9880d681SAndroid Build Coastguard Worker   COMPPGM(compute_pgm_rsrc2_##name, \
62*9880d681SAndroid Build Coastguard Worker           G_00B84C_##AccMacro, S_00B84C_##AccMacro, 32)
63*9880d681SAndroid Build Coastguard Worker 
64*9880d681SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////
65*9880d681SAndroid Build Coastguard Worker // Begin of the table
66*9880d681SAndroid Build Coastguard Worker // Define RECORD(name, print, parse) in your code to get field definitions
67*9880d681SAndroid Build Coastguard Worker // and include this file
68*9880d681SAndroid Build Coastguard Worker 
69*9880d681SAndroid Build Coastguard Worker FIELD2(kernel_code_version_major, amd_kernel_code_version_major),
70*9880d681SAndroid Build Coastguard Worker FIELD2(kernel_code_version_minor, amd_kernel_code_version_minor),
71*9880d681SAndroid Build Coastguard Worker FIELD2(machine_kind,              amd_machine_kind),
72*9880d681SAndroid Build Coastguard Worker FIELD2(machine_version_major,     amd_machine_version_major),
73*9880d681SAndroid Build Coastguard Worker FIELD2(machine_version_minor,     amd_machine_version_minor),
74*9880d681SAndroid Build Coastguard Worker FIELD2(machine_version_stepping,  amd_machine_version_stepping),
75*9880d681SAndroid Build Coastguard Worker FIELD(kernel_code_entry_byte_offset),
76*9880d681SAndroid Build Coastguard Worker FIELD(kernel_code_prefetch_byte_size),
77*9880d681SAndroid Build Coastguard Worker FIELD(max_scratch_backing_memory_byte_size),
78*9880d681SAndroid Build Coastguard Worker FIELD(compute_pgm_resource_registers),
79*9880d681SAndroid Build Coastguard Worker FIELD(workitem_private_segment_byte_size),
80*9880d681SAndroid Build Coastguard Worker FIELD(workgroup_group_segment_byte_size),
81*9880d681SAndroid Build Coastguard Worker FIELD(gds_segment_byte_size),
82*9880d681SAndroid Build Coastguard Worker FIELD(kernarg_segment_byte_size),
83*9880d681SAndroid Build Coastguard Worker FIELD(workgroup_fbarrier_count),
84*9880d681SAndroid Build Coastguard Worker FIELD(wavefront_sgpr_count),
85*9880d681SAndroid Build Coastguard Worker FIELD(workitem_vgpr_count),
86*9880d681SAndroid Build Coastguard Worker FIELD(reserved_vgpr_first),
87*9880d681SAndroid Build Coastguard Worker FIELD(reserved_vgpr_count),
88*9880d681SAndroid Build Coastguard Worker FIELD(reserved_sgpr_first),
89*9880d681SAndroid Build Coastguard Worker FIELD(reserved_sgpr_count),
90*9880d681SAndroid Build Coastguard Worker FIELD(debug_wavefront_private_segment_offset_sgpr),
91*9880d681SAndroid Build Coastguard Worker FIELD(debug_private_segment_buffer_sgpr),
92*9880d681SAndroid Build Coastguard Worker FIELD(kernarg_segment_alignment),
93*9880d681SAndroid Build Coastguard Worker FIELD(group_segment_alignment),
94*9880d681SAndroid Build Coastguard Worker FIELD(private_segment_alignment),
95*9880d681SAndroid Build Coastguard Worker FIELD(wavefront_size),
96*9880d681SAndroid Build Coastguard Worker FIELD(call_convention),
97*9880d681SAndroid Build Coastguard Worker FIELD(runtime_loader_kernel_symbol),
98*9880d681SAndroid Build Coastguard Worker 
99*9880d681SAndroid Build Coastguard Worker COMPPGM1(vgprs,          VGPRS),
100*9880d681SAndroid Build Coastguard Worker COMPPGM1(sgprs,          SGPRS),
101*9880d681SAndroid Build Coastguard Worker COMPPGM1(priority,       PRIORITY),
102*9880d681SAndroid Build Coastguard Worker COMPPGM1(float_mode,     FLOAT_MODE),
103*9880d681SAndroid Build Coastguard Worker COMPPGM1(priv,           PRIV),
104*9880d681SAndroid Build Coastguard Worker COMPPGM1(dx10_clamp,     DX10_CLAMP),
105*9880d681SAndroid Build Coastguard Worker COMPPGM1(debug_mode,     DEBUG_MODE),
106*9880d681SAndroid Build Coastguard Worker COMPPGM1(ieee_mode,      IEEE_MODE),
107*9880d681SAndroid Build Coastguard Worker COMPPGM2(scratch_en,     SCRATCH_EN),
108*9880d681SAndroid Build Coastguard Worker COMPPGM2(user_sgpr,      USER_SGPR),
109*9880d681SAndroid Build Coastguard Worker COMPPGM2(tgid_x_en,      TGID_X_EN),
110*9880d681SAndroid Build Coastguard Worker COMPPGM2(tgid_y_en,      TGID_Y_EN),
111*9880d681SAndroid Build Coastguard Worker COMPPGM2(tgid_z_en,      TGID_Z_EN),
112*9880d681SAndroid Build Coastguard Worker COMPPGM2(tg_size_en,     TG_SIZE_EN),
113*9880d681SAndroid Build Coastguard Worker COMPPGM2(tidig_comp_cnt, TIDIG_COMP_CNT),
114*9880d681SAndroid Build Coastguard Worker COMPPGM2(excp_en_msb,    EXCP_EN_MSB),
115*9880d681SAndroid Build Coastguard Worker COMPPGM2(lds_size,       LDS_SIZE),
116*9880d681SAndroid Build Coastguard Worker COMPPGM2(excp_en,        EXCP_EN),
117*9880d681SAndroid Build Coastguard Worker 
118*9880d681SAndroid Build Coastguard Worker CODEPROP(enable_sgpr_private_segment_buffer,
119*9880d681SAndroid Build Coastguard Worker          ENABLE_SGPR_PRIVATE_SEGMENT_BUFFER),
120*9880d681SAndroid Build Coastguard Worker CODEPROP(enable_sgpr_dispatch_ptr,
121*9880d681SAndroid Build Coastguard Worker          ENABLE_SGPR_DISPATCH_PTR),
122*9880d681SAndroid Build Coastguard Worker CODEPROP(enable_sgpr_queue_ptr,
123*9880d681SAndroid Build Coastguard Worker          ENABLE_SGPR_QUEUE_PTR),
124*9880d681SAndroid Build Coastguard Worker CODEPROP(enable_sgpr_kernarg_segment_ptr,
125*9880d681SAndroid Build Coastguard Worker          ENABLE_SGPR_KERNARG_SEGMENT_PTR),
126*9880d681SAndroid Build Coastguard Worker CODEPROP(enable_sgpr_dispatch_id,
127*9880d681SAndroid Build Coastguard Worker          ENABLE_SGPR_DISPATCH_ID),
128*9880d681SAndroid Build Coastguard Worker CODEPROP(enable_sgpr_flat_scratch_init,
129*9880d681SAndroid Build Coastguard Worker          ENABLE_SGPR_FLAT_SCRATCH_INIT),
130*9880d681SAndroid Build Coastguard Worker CODEPROP(enable_sgpr_private_segment_size,
131*9880d681SAndroid Build Coastguard Worker          ENABLE_SGPR_PRIVATE_SEGMENT_SIZE),
132*9880d681SAndroid Build Coastguard Worker CODEPROP(enable_sgpr_grid_workgroup_count_x,
133*9880d681SAndroid Build Coastguard Worker          ENABLE_SGPR_GRID_WORKGROUP_COUNT_X),
134*9880d681SAndroid Build Coastguard Worker CODEPROP(enable_sgpr_grid_workgroup_count_y,
135*9880d681SAndroid Build Coastguard Worker          ENABLE_SGPR_GRID_WORKGROUP_COUNT_Y),
136*9880d681SAndroid Build Coastguard Worker CODEPROP(enable_sgpr_grid_workgroup_count_z,
137*9880d681SAndroid Build Coastguard Worker          ENABLE_SGPR_GRID_WORKGROUP_COUNT_Z),
138*9880d681SAndroid Build Coastguard Worker CODEPROP(enable_ordered_append_gds,
139*9880d681SAndroid Build Coastguard Worker          ENABLE_ORDERED_APPEND_GDS),
140*9880d681SAndroid Build Coastguard Worker CODEPROP(private_element_size,
141*9880d681SAndroid Build Coastguard Worker          PRIVATE_ELEMENT_SIZE),
142*9880d681SAndroid Build Coastguard Worker CODEPROP(is_ptr64,
143*9880d681SAndroid Build Coastguard Worker          IS_PTR64),
144*9880d681SAndroid Build Coastguard Worker CODEPROP(is_dynamic_callstack,
145*9880d681SAndroid Build Coastguard Worker          IS_DYNAMIC_CALLSTACK),
146*9880d681SAndroid Build Coastguard Worker CODEPROP(is_debug_enabled,
147*9880d681SAndroid Build Coastguard Worker          IS_DEBUG_SUPPORTED),
148*9880d681SAndroid Build Coastguard Worker CODEPROP(is_xnack_enabled,
149*9880d681SAndroid Build Coastguard Worker          IS_XNACK_SUPPORTED)
150*9880d681SAndroid Build Coastguard Worker 
151*9880d681SAndroid Build Coastguard Worker // end of the table
152*9880d681SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////
153*9880d681SAndroid Build Coastguard Worker 
154*9880d681SAndroid Build Coastguard Worker #undef QNAME
155*9880d681SAndroid Build Coastguard Worker #undef FLD_T
156*9880d681SAndroid Build Coastguard Worker #undef FIELD2
157*9880d681SAndroid Build Coastguard Worker #undef FIELD
158*9880d681SAndroid Build Coastguard Worker #undef PRINTCODEPROP
159*9880d681SAndroid Build Coastguard Worker #undef PARSECODEPROP
160*9880d681SAndroid Build Coastguard Worker #undef CODEPROP
161*9880d681SAndroid Build Coastguard Worker #undef PRINTCOMP
162*9880d681SAndroid Build Coastguard Worker #undef PAPSECOMP
163*9880d681SAndroid Build Coastguard Worker #undef COMPPGM
164*9880d681SAndroid Build Coastguard Worker #undef COMPPGM1
165*9880d681SAndroid Build Coastguard Worker #undef COMPPGM2
166