Skip to content

Commit cacfb02

Browse files
Ronak ChauhanRonak Chauhan
authored andcommitted
[AMDGPU] Support disassembly for AMDGPU kernel descriptors
Decode AMDGPU Kernel descriptors as assembler directives. Reviewed By: scott.linder Differential Revision: https://reviews.llvm.org/D80713
1 parent 451dcfa commit cacfb02

File tree

11 files changed

+674
-50
lines changed

11 files changed

+674
-50
lines changed

llvm/include/llvm/Support/AMDHSAKernelDescriptor.h

Lines changed: 40 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -162,39 +162,49 @@ struct kernel_descriptor_t {
162162
uint8_t reserved2[6];
163163
};
164164

165+
enum : uint32_t {
166+
GROUP_SEGMENT_FIXED_SIZE_OFFSET = 0,
167+
PRIVATE_SEGMENT_FIXED_SIZE_OFFSET = 4,
168+
RESERVED0_OFFSET = 8,
169+
KERNEL_CODE_ENTRY_BYTE_OFFSET_OFFSET = 16,
170+
RESERVED1_OFFSET = 24,
171+
COMPUTE_PGM_RSRC3_OFFSET = 44,
172+
COMPUTE_PGM_RSRC1_OFFSET = 48,
173+
COMPUTE_PGM_RSRC2_OFFSET = 52,
174+
KERNEL_CODE_PROPERTIES_OFFSET = 56,
175+
RESERVED2_OFFSET = 58,
176+
};
177+
165178
static_assert(
166179
sizeof(kernel_descriptor_t) == 64,
167180
"invalid size for kernel_descriptor_t");
168-
static_assert(
169-
offsetof(kernel_descriptor_t, group_segment_fixed_size) == 0,
170-
"invalid offset for group_segment_fixed_size");
171-
static_assert(
172-
offsetof(kernel_descriptor_t, private_segment_fixed_size) == 4,
173-
"invalid offset for private_segment_fixed_size");
174-
static_assert(
175-
offsetof(kernel_descriptor_t, reserved0) == 8,
176-
"invalid offset for reserved0");
177-
static_assert(
178-
offsetof(kernel_descriptor_t, kernel_code_entry_byte_offset) == 16,
179-
"invalid offset for kernel_code_entry_byte_offset");
180-
static_assert(
181-
offsetof(kernel_descriptor_t, reserved1) == 24,
182-
"invalid offset for reserved1");
183-
static_assert(
184-
offsetof(kernel_descriptor_t, compute_pgm_rsrc3) == 44,
185-
"invalid offset for compute_pgm_rsrc3");
186-
static_assert(
187-
offsetof(kernel_descriptor_t, compute_pgm_rsrc1) == 48,
188-
"invalid offset for compute_pgm_rsrc1");
189-
static_assert(
190-
offsetof(kernel_descriptor_t, compute_pgm_rsrc2) == 52,
191-
"invalid offset for compute_pgm_rsrc2");
192-
static_assert(
193-
offsetof(kernel_descriptor_t, kernel_code_properties) == 56,
194-
"invalid offset for kernel_code_properties");
195-
static_assert(
196-
offsetof(kernel_descriptor_t, reserved2) == 58,
197-
"invalid offset for reserved2");
181+
static_assert(offsetof(kernel_descriptor_t, group_segment_fixed_size) ==
182+
GROUP_SEGMENT_FIXED_SIZE_OFFSET,
183+
"invalid offset for group_segment_fixed_size");
184+
static_assert(offsetof(kernel_descriptor_t, private_segment_fixed_size) ==
185+
PRIVATE_SEGMENT_FIXED_SIZE_OFFSET,
186+
"invalid offset for private_segment_fixed_size");
187+
static_assert(offsetof(kernel_descriptor_t, reserved0) == RESERVED0_OFFSET,
188+
"invalid offset for reserved0");
189+
static_assert(offsetof(kernel_descriptor_t, kernel_code_entry_byte_offset) ==
190+
KERNEL_CODE_ENTRY_BYTE_OFFSET_OFFSET,
191+
"invalid offset for kernel_code_entry_byte_offset");
192+
static_assert(offsetof(kernel_descriptor_t, reserved1) == RESERVED1_OFFSET,
193+
"invalid offset for reserved1");
194+
static_assert(offsetof(kernel_descriptor_t, compute_pgm_rsrc3) ==
195+
COMPUTE_PGM_RSRC3_OFFSET,
196+
"invalid offset for compute_pgm_rsrc3");
197+
static_assert(offsetof(kernel_descriptor_t, compute_pgm_rsrc1) ==
198+
COMPUTE_PGM_RSRC1_OFFSET,
199+
"invalid offset for compute_pgm_rsrc1");
200+
static_assert(offsetof(kernel_descriptor_t, compute_pgm_rsrc2) ==
201+
COMPUTE_PGM_RSRC2_OFFSET,
202+
"invalid offset for compute_pgm_rsrc2");
203+
static_assert(offsetof(kernel_descriptor_t, kernel_code_properties) ==
204+
KERNEL_CODE_PROPERTIES_OFFSET,
205+
"invalid offset for kernel_code_properties");
206+
static_assert(offsetof(kernel_descriptor_t, reserved2) == RESERVED2_OFFSET,
207+
"invalid offset for reserved2");
198208

199209
} // end namespace amdhsa
200210
} // end namespace llvm

0 commit comments

Comments
 (0)