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