[llvm] MCExpr-ify amd_kernel_code_t (PR #91587)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Mon May 20 06:37:11 PDT 2024
================
@@ -7,29 +7,84 @@
//===----------------------------------------------------------------------===//
//
/// \file AMDKernelCodeTUtils.h
+/// MC layer struct for AMDGPUMCKernelCodeT, provides MCExpr functionality where
+/// required.
+///
//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_LIB_TARGET_AMDGPU_UTILS_AMDKERNELCODETUTILS_H
-#define LLVM_LIB_TARGET_AMDGPU_UTILS_AMDKERNELCODETUTILS_H
+#ifndef LLVM_LIB_TARGET_AMDGPU_MCTARGETDESC_AMDGPUMCKERNELCODET_H
+#define LLVM_LIB_TARGET_AMDGPU_MCTARGETDESC_AMDGPUMCKERNELCODET_H
-struct amd_kernel_code_t;
+#include "AMDKernelCodeT.h"
+#include "llvm/ADT/ArrayRef.h"
+#include "llvm/ADT/StringRef.h"
namespace llvm {
-
class MCAsmParser;
+class MCContext;
+class MCExpr;
+class MCStreamer;
+class MCSubtargetInfo;
class raw_ostream;
-class StringRef;
+namespace AMDGPU {
+
+struct AMDGPUMCKernelCodeT {
+ AMDGPUMCKernelCodeT() = default;
+
+ uint32_t amd_kernel_code_version_major = 0;
+ uint32_t amd_kernel_code_version_minor = 0;
+ uint16_t amd_machine_kind = 0;
+ uint16_t amd_machine_version_major = 0;
+ uint16_t amd_machine_version_minor = 0;
+ uint16_t amd_machine_version_stepping = 0;
+ int64_t kernel_code_entry_byte_offset = 0;
+ int64_t kernel_code_prefetch_byte_offset = 0;
+ uint64_t kernel_code_prefetch_byte_size = 0;
+ uint64_t reserved0 = 0;
+ uint64_t compute_pgm_resource_registers = 0;
+ uint32_t code_properties = 0;
+ uint32_t workgroup_group_segment_byte_size = 0;
+ uint32_t gds_segment_byte_size = 0;
+ uint64_t kernarg_segment_byte_size = 0;
+ uint32_t workgroup_fbarrier_count = 0;
+ uint16_t reserved_vgpr_first = 0;
+ uint16_t reserved_vgpr_count = 0;
+ uint16_t reserved_sgpr_first = 0;
+ uint16_t reserved_sgpr_count = 0;
+ uint16_t debug_wavefront_private_segment_offset_sgpr = 0;
+ uint16_t debug_private_segment_buffer_sgpr = 0;
+ uint8_t kernarg_segment_alignment = 0;
+ uint8_t group_segment_alignment = 0;
+ uint8_t private_segment_alignment = 0;
+ uint8_t wavefront_size = 0;
+ int32_t call_convention = 0;
+ uint8_t reserved3[12] = {0};
+ uint64_t runtime_loader_kernel_symbol = 0;
+ uint64_t control_directives[16] = {0};
+
+ const MCExpr *compute_pgm_resource1_registers = nullptr;
+ const MCExpr *compute_pgm_resource2_registers = nullptr;
+
+ // Duplicated fields, but uses MCExpr instead.
+ // Name has to be the same as the ones used in AMDKernelCodeTInfo.h.
----------------
arsenm wrote:
Outdated comment?
https://github.com/llvm/llvm-project/pull/91587
More information about the llvm-commits
mailing list