Files
TheRock/rocm-systems/projects/clr/opencl/amdocl/cl_kernel.h
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

152 lines
2.8 KiB
C

/*
* Copyright (c) Advanced Micro Devices, Inc., or its affiliates.
*
* SPDX-License-Identifier: MIT
*/
#ifndef CL_KERNEL_H_
#define CL_KERNEL_H_
struct clk_builtins_t;
// This must be a multiple of sizeof(cl_ulong16)
#define __CPU_SCRATCH_SIZE 128
#define CLK_PRIVATE_MEMORY_SIZE (16 * 1024)
struct clk_thread_info_block_t {
// Warning! The size of this struct needs to be a multiple
// of 16 when compiling 64 bit
struct clk_builtins_t const* builtins;
void* local_mem_base;
void* local_scratch;
const void* table_base;
size_t pad;
uint work_dim;
size_t global_offset[4]; /*dim0,dim1,dim2,invalid(dim<0||dim>2)*/
size_t global_size[4]; /*dim0,dim1,dim2,invalid(dim<0||dim>2)*/
size_t enqueued_local_size[4];
size_t local_size[4]; /*dim0,dim1,dim2,invalid(dim<0||dim>2)*/
size_t local_id[4]; /*dim0,dim1,dim2,invalid(dim<0||dim>2)*/
size_t group_id[4]; /*dim0,dim1,dim2,invalid(dim<0||dim>2)*/
};
typedef enum clk_value_type_t {
T_VOID,
T_CHAR,
T_SHORT,
T_INT,
T_LONG,
T_FLOAT,
T_DOUBLE,
T_POINTER,
T_CHAR2,
T_CHAR3,
T_CHAR4,
T_CHAR8,
T_CHAR16,
T_SHORT2,
T_SHORT3,
T_SHORT4,
T_SHORT8,
T_SHORT16,
T_INT2,
T_INT3,
T_INT4,
T_INT8,
T_INT16,
T_LONG2,
T_LONG3,
T_LONG4,
T_LONG8,
T_LONG16,
T_FLOAT2,
T_FLOAT3,
T_FLOAT4,
T_FLOAT8,
T_FLOAT16,
T_DOUBLE2,
T_DOUBLE3,
T_DOUBLE4,
T_DOUBLE8,
T_DOUBLE16,
T_SAMPLER,
T_SEMA,
T_STRUCT,
T_QUEUE,
T_PAD
} clk_value_type_t;
typedef enum clk_address_space_t {
A_PRIVATE,
A_LOCAL,
A_CONSTANT,
A_GLOBAL,
A_REGION
} clk_address_space_t;
// kernel arg access qualifier and type qualifier
typedef enum clk_arg_qualifier_t {
Q_NONE = 0,
// for image type only, access qualifier
Q_READ = 1,
Q_WRITE = 2,
// for pointer type only
Q_CONST = 4, // pointee
Q_RESTRICT = 8,
Q_VOLATILE = 16, // pointee
Q_PIPE = 32 // pipe
} clk_arg_qualifier_t;
#pragma pack(push, 4)
struct clk_parameter_descriptor_t {
clk_value_type_t type;
clk_address_space_t space;
uint qualifier;
const char* name;
};
#pragma pack(pop)
// #define CLK_LOCAL_MEM_FENCE (1 << 0)
// #define CLK_GLOBAL_MEM_FENCE (1 << 1)
struct clk_builtins_t {
/* Synchronization functions */
void (*barrier_ptr)(cl_mem_fence_flags flags);
/* AMD Only builtins: FIXME_lmoriche (extension) */
void* reserved;
int (*printf_ptr)(const char* format, ...);
};
enum clk_natures_t { KN_HAS_BARRIER = 1 << 0, KN_WG_LEVEL = 1 << 1 };
#if defined(_MSC_VER)
#pragma warning(push)
#pragma warning(disable : 4200)
#endif
#if !defined(__OPENCL_VERSION__) || __OPENCL_VERSION__ >= 200
typedef struct clk_pipe_t {
size_t read_idx;
size_t write_idx;
size_t end_idx;
char padding[128 - 3 * sizeof(size_t)];
char packets[];
} clk_pipe_t;
#endif
#if defined(_MSC_VER)
#pragma warning(pop)
#endif
#endif /*CL_KERNEL_H_*/