hsa.h revision 1.1.1.2
1/* HSA runtime API 1.0.1 representation description. 2 Copyright (C) 2016-2018 Free Software Foundation, Inc. 3 4This file is part of GCC. 5 6GCC is free software; you can redistribute it and/or modify 7it under the terms of the GNU General Public License as published by 8the Free Software Foundation; either version 3, or (at your option) 9any later version. 10 11GCC is distributed in the hope that it will be useful, 12but WITHOUT ANY WARRANTY; without even the implied warranty of 13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14GNU General Public License for more details. 15 16Under Section 7 of GPL version 3, you are granted additional 17permissions described in the GCC Runtime Library Exception, version 183.1, as published by the Free Software Foundation. 19 20You should have received a copy of the GNU General Public License and 21a copy of the GCC Runtime Library Exception along with this program; 22see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23<http://www.gnu.org/licenses/>. 24 25The contents of the file was created by extracting data structures, enum, 26typedef and other definitions from HSA Runtime Programmer���s Reference Manual 27Version 1.0 (http://www.hsafoundation.com/standards/). 28 29HTML version is provided on the following link: 30http://www.hsafoundation.com/html/Content/Runtime/Topics/Runtime_title_page.htm 31*/ 32 33#ifndef _HSA_H 34#define _HSA_H 1 35 36#define HSA_LARGE_MODEL 1 37 38typedef struct hsa_signal_s { uint64_t handle; } hsa_signal_t; 39typedef enum { 40 HSA_QUEUE_TYPE_MULTI = 0, 41 HSA_QUEUE_TYPE_SINGLE = 1 42} hsa_queue_type_t; 43 44typedef enum { HSA_PROFILE_BASE = 0, HSA_PROFILE_FULL = 1 } hsa_profile_t; 45typedef struct hsa_region_s { uint64_t handle; } hsa_region_t; 46typedef enum { 47 HSA_EXECUTABLE_SYMBOL_INFO_TYPE = 0, 48 HSA_EXECUTABLE_SYMBOL_INFO_NAME_LENGTH = 1, 49 HSA_EXECUTABLE_SYMBOL_INFO_NAME = 2, 50 HSA_EXECUTABLE_SYMBOL_INFO_MODULE_NAME_LENGTH = 3, 51 HSA_EXECUTABLE_SYMBOL_INFO_MODULE_NAME = 4, 52 HSA_EXECUTABLE_SYMBOL_INFO_AGENT = 20, 53 HSA_EXECUTABLE_SYMBOL_INFO_VARIABLE_ADDRESS = 21, 54 HSA_EXECUTABLE_SYMBOL_INFO_LINKAGE = 5, 55 HSA_EXECUTABLE_SYMBOL_INFO_IS_DEFINITION = 17, 56 HSA_EXECUTABLE_SYMBOL_INFO_VARIABLE_ALLOCATION = 6, 57 HSA_EXECUTABLE_SYMBOL_INFO_VARIABLE_SEGMENT = 7, 58 HSA_EXECUTABLE_SYMBOL_INFO_VARIABLE_ALIGNMENT = 8, 59 HSA_EXECUTABLE_SYMBOL_INFO_VARIABLE_SIZE = 9, 60 HSA_EXECUTABLE_SYMBOL_INFO_VARIABLE_IS_CONST = 10, 61 HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_OBJECT = 22, 62 HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_KERNARG_SEGMENT_SIZE = 11, 63 HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_KERNARG_SEGMENT_ALIGNMENT = 12, 64 HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_GROUP_SEGMENT_SIZE = 13, 65 HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_PRIVATE_SEGMENT_SIZE = 14, 66 HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_DYNAMIC_CALLSTACK = 15, 67 HSA_EXECUTABLE_SYMBOL_INFO_INDIRECT_FUNCTION_OBJECT = 23, 68 HSA_EXECUTABLE_SYMBOL_INFO_INDIRECT_FUNCTION_CALL_CONVENTION = 16 69} hsa_executable_symbol_info_t; 70typedef enum { 71 HSA_REGION_GLOBAL_FLAG_KERNARG = 1, 72 HSA_REGION_GLOBAL_FLAG_FINE_GRAINED = 2, 73 HSA_REGION_GLOBAL_FLAG_COARSE_GRAINED = 4 74} hsa_region_global_flag_t; 75typedef struct hsa_code_object_s { uint64_t handle; } hsa_code_object_t; 76typedef enum { 77 HSA_KERNEL_DISPATCH_PACKET_SETUP_WIDTH_DIMENSIONS = 2 78} hsa_kernel_dispatch_packet_setup_width_t; 79typedef enum { 80 HSA_DEVICE_TYPE_CPU = 0, 81 HSA_DEVICE_TYPE_GPU = 1, 82 HSA_DEVICE_TYPE_DSP = 2 83} hsa_device_type_t; 84typedef enum { 85 HSA_STATUS_SUCCESS = 0x0, 86 HSA_STATUS_INFO_BREAK = 0x1, 87 HSA_STATUS_ERROR = 0x1000, 88 HSA_STATUS_ERROR_INVALID_ARGUMENT = 0x1001, 89 HSA_STATUS_ERROR_INVALID_QUEUE_CREATION = 0x1002, 90 HSA_STATUS_ERROR_INVALID_ALLOCATION = 0x1003, 91 HSA_STATUS_ERROR_INVALID_AGENT = 0x1004, 92 HSA_STATUS_ERROR_INVALID_REGION = 0x1005, 93 HSA_STATUS_ERROR_INVALID_SIGNAL = 0x1006, 94 HSA_STATUS_ERROR_INVALID_QUEUE = 0x1007, 95 HSA_STATUS_ERROR_OUT_OF_RESOURCES = 0x1008, 96 HSA_STATUS_ERROR_INVALID_PACKET_FORMAT = 0x1009, 97 HSA_STATUS_ERROR_RESOURCE_FREE = 0x100A, 98 HSA_STATUS_ERROR_NOT_INITIALIZED = 0x100B, 99 HSA_STATUS_ERROR_REFCOUNT_OVERFLOW = 0x100C, 100 HSA_STATUS_ERROR_INCOMPATIBLE_ARGUMENTS = 0x100D, 101 HSA_STATUS_ERROR_INVALID_INDEX = 0x100E, 102 HSA_STATUS_ERROR_INVALID_ISA = 0x100F, 103 HSA_STATUS_ERROR_INVALID_ISA_NAME = 0x1017, 104 HSA_STATUS_ERROR_INVALID_CODE_OBJECT = 0x1010, 105 HSA_STATUS_ERROR_INVALID_EXECUTABLE = 0x1011, 106 HSA_STATUS_ERROR_FROZEN_EXECUTABLE = 0x1012, 107 HSA_STATUS_ERROR_INVALID_SYMBOL_NAME = 0x1013, 108 HSA_STATUS_ERROR_VARIABLE_ALREADY_DEFINED = 0x1014, 109 HSA_STATUS_ERROR_VARIABLE_UNDEFINED = 0x1015, 110 HSA_STATUS_ERROR_EXCEPTION = 0x1016 111} hsa_status_t; 112typedef enum { 113 HSA_EXTENSION_FINALIZER = 0, 114 HSA_EXTENSION_IMAGES = 1 115} hsa_extension_t; 116typedef struct hsa_queue_s { 117 hsa_queue_type_t type; 118 uint32_t features; 119 120#ifdef HSA_LARGE_MODEL 121 void *base_address; 122#elif defined HSA_LITTLE_ENDIAN 123 void *base_address; 124 uint32_t reserved0; 125#else 126 uint32_t reserved0; 127 void *base_address; 128#endif 129 130 hsa_signal_t doorbell_signal; 131 uint32_t size; 132 uint32_t reserved1; 133 uint64_t id; 134} hsa_queue_t; 135typedef struct hsa_agent_dispatch_packet_s { 136 uint16_t header; 137 uint16_t type; 138 uint32_t reserved0; 139 140#ifdef HSA_LARGE_MODEL 141 void *return_address; 142#elif defined HSA_LITTLE_ENDIAN 143 void *return_address; 144 uint32_t reserved1; 145#else 146 uint32_t reserved1; 147 void *return_address; 148#endif 149 uint64_t arg[4]; 150 uint64_t reserved2; 151 hsa_signal_t completion_signal; 152} hsa_agent_dispatch_packet_t; 153typedef enum { 154 HSA_CODE_SYMBOL_INFO_TYPE = 0, 155 HSA_CODE_SYMBOL_INFO_NAME_LENGTH = 1, 156 HSA_CODE_SYMBOL_INFO_NAME = 2, 157 HSA_CODE_SYMBOL_INFO_MODULE_NAME_LENGTH = 3, 158 HSA_CODE_SYMBOL_INFO_MODULE_NAME = 4, 159 HSA_CODE_SYMBOL_INFO_LINKAGE = 5, 160 HSA_CODE_SYMBOL_INFO_IS_DEFINITION = 17, 161 HSA_CODE_SYMBOL_INFO_VARIABLE_ALLOCATION = 6, 162 HSA_CODE_SYMBOL_INFO_VARIABLE_SEGMENT = 7, 163 HSA_CODE_SYMBOL_INFO_VARIABLE_ALIGNMENT = 8, 164 HSA_CODE_SYMBOL_INFO_VARIABLE_SIZE = 9, 165 HSA_CODE_SYMBOL_INFO_VARIABLE_IS_CONST = 10, 166 HSA_CODE_SYMBOL_INFO_KERNEL_KERNARG_SEGMENT_SIZE = 11, 167 HSA_CODE_SYMBOL_INFO_KERNEL_KERNARG_SEGMENT_ALIGNMENT = 12, 168 HSA_CODE_SYMBOL_INFO_KERNEL_GROUP_SEGMENT_SIZE = 13, 169 HSA_CODE_SYMBOL_INFO_KERNEL_PRIVATE_SEGMENT_SIZE = 14, 170 HSA_CODE_SYMBOL_INFO_KERNEL_DYNAMIC_CALLSTACK = 15, 171 HSA_CODE_SYMBOL_INFO_INDIRECT_FUNCTION_CALL_CONVENTION = 16 172} hsa_code_symbol_info_t; 173typedef enum { 174 HSA_QUEUE_FEATURE_KERNEL_DISPATCH = 1, 175 HSA_QUEUE_FEATURE_AGENT_DISPATCH = 2 176} hsa_queue_feature_t; 177typedef enum { 178 HSA_VARIABLE_ALLOCATION_AGENT = 0, 179 HSA_VARIABLE_ALLOCATION_PROGRAM = 1 180} hsa_variable_allocation_t; 181typedef enum { 182 HSA_FENCE_SCOPE_NONE = 0, 183 HSA_FENCE_SCOPE_AGENT = 1, 184 HSA_FENCE_SCOPE_SYSTEM = 2 185} hsa_fence_scope_t; 186typedef struct hsa_agent_s { uint64_t handle; } hsa_agent_t; 187typedef enum { HSA_CODE_OBJECT_TYPE_PROGRAM = 0 } hsa_code_object_type_t; 188typedef enum { 189 HSA_SIGNAL_CONDITION_EQ = 0, 190 HSA_SIGNAL_CONDITION_NE = 1, 191 HSA_SIGNAL_CONDITION_LT = 2, 192 HSA_SIGNAL_CONDITION_GTE = 3 193} hsa_signal_condition_t; 194typedef enum { 195 HSA_EXECUTABLE_STATE_UNFROZEN = 0, 196 HSA_EXECUTABLE_STATE_FROZEN = 1 197} hsa_executable_state_t; 198typedef enum { 199 HSA_ENDIANNESS_LITTLE = 0, 200 HSA_ENDIANNESS_BIG = 1 201} hsa_endianness_t; 202typedef enum { 203 HSA_MACHINE_MODEL_SMALL = 0, 204 HSA_MACHINE_MODEL_LARGE = 1 205} hsa_machine_model_t; 206typedef enum { 207 HSA_AGENT_INFO_NAME = 0, 208 HSA_AGENT_INFO_VENDOR_NAME = 1, 209 HSA_AGENT_INFO_FEATURE = 2, 210 HSA_AGENT_INFO_MACHINE_MODEL = 3, 211 HSA_AGENT_INFO_PROFILE = 4, 212 HSA_AGENT_INFO_DEFAULT_FLOAT_ROUNDING_MODE = 5, 213 HSA_AGENT_INFO_BASE_PROFILE_DEFAULT_FLOAT_ROUNDING_MODES = 23, 214 HSA_AGENT_INFO_FAST_F16_OPERATION = 24, 215 HSA_AGENT_INFO_WAVEFRONT_SIZE = 6, 216 HSA_AGENT_INFO_WORKGROUP_MAX_DIM = 7, 217 HSA_AGENT_INFO_WORKGROUP_MAX_SIZE = 8, 218 HSA_AGENT_INFO_GRID_MAX_DIM = 9, 219 HSA_AGENT_INFO_GRID_MAX_SIZE = 10, 220 HSA_AGENT_INFO_FBARRIER_MAX_SIZE = 11, 221 HSA_AGENT_INFO_QUEUES_MAX = 12, 222 HSA_AGENT_INFO_QUEUE_MIN_SIZE = 13, 223 HSA_AGENT_INFO_QUEUE_MAX_SIZE = 14, 224 HSA_AGENT_INFO_QUEUE_TYPE = 15, 225 HSA_AGENT_INFO_NODE = 16, 226 HSA_AGENT_INFO_DEVICE = 17, 227 HSA_AGENT_INFO_CACHE_SIZE = 18, 228 HSA_AGENT_INFO_ISA = 19, 229 HSA_AGENT_INFO_EXTENSIONS = 20, 230 HSA_AGENT_INFO_VERSION_MAJOR = 21, 231 HSA_AGENT_INFO_VERSION_MINOR = 22 232} hsa_agent_info_t; 233typedef struct hsa_barrier_and_packet_s { 234 uint16_t header; 235 uint16_t reserved0; 236 uint32_t reserved1; 237 hsa_signal_t dep_signal[5]; 238 uint64_t reserved2; 239 hsa_signal_t completion_signal; 240} hsa_barrier_and_packet_t; 241typedef struct hsa_dim3_s { 242 uint32_t x; 243 uint32_t y; 244 uint32_t z; 245} hsa_dim3_t; 246typedef enum { 247 HSA_ACCESS_PERMISSION_RO = 1, 248 HSA_ACCESS_PERMISSION_WO = 2, 249 HSA_ACCESS_PERMISSION_RW = 3 250} hsa_access_permission_t; 251typedef enum { 252 HSA_AGENT_FEATURE_KERNEL_DISPATCH = 1, 253 HSA_AGENT_FEATURE_AGENT_DISPATCH = 2 254} hsa_agent_feature_t; 255typedef enum { 256 HSA_WAIT_STATE_BLOCKED = 0, 257 HSA_WAIT_STATE_ACTIVE = 1 258} hsa_wait_state_t; 259typedef struct hsa_executable_s { uint64_t handle; } hsa_executable_t; 260typedef enum { 261 HSA_REGION_SEGMENT_GLOBAL = 0, 262 HSA_REGION_SEGMENT_READONLY = 1, 263 HSA_REGION_SEGMENT_PRIVATE = 2, 264 HSA_REGION_SEGMENT_GROUP = 3 265} hsa_region_segment_t; 266typedef enum { 267 HSA_REGION_INFO_SEGMENT = 0, 268 HSA_REGION_INFO_GLOBAL_FLAGS = 1, 269 HSA_REGION_INFO_SIZE = 2, 270 HSA_REGION_INFO_ALLOC_MAX_SIZE = 4, 271 HSA_REGION_INFO_RUNTIME_ALLOC_ALLOWED = 5, 272 HSA_REGION_INFO_RUNTIME_ALLOC_GRANULE = 6, 273 HSA_REGION_INFO_RUNTIME_ALLOC_ALIGNMENT = 7 274} hsa_region_info_t; 275typedef enum { 276 HSA_ISA_INFO_NAME_LENGTH = 0, 277 HSA_ISA_INFO_NAME = 1, 278 HSA_ISA_INFO_CALL_CONVENTION_COUNT = 2, 279 HSA_ISA_INFO_CALL_CONVENTION_INFO_WAVEFRONT_SIZE = 3, 280 HSA_ISA_INFO_CALL_CONVENTION_INFO_WAVEFRONTS_PER_COMPUTE_UNIT = 4 281} hsa_isa_info_t; 282typedef enum { 283 HSA_VARIABLE_SEGMENT_GLOBAL = 0, 284 HSA_VARIABLE_SEGMENT_READONLY = 1 285} hsa_variable_segment_t; 286typedef struct hsa_callback_data_s { uint64_t handle; } hsa_callback_data_t; 287typedef enum { 288 HSA_SYMBOL_KIND_VARIABLE = 0, 289 HSA_SYMBOL_KIND_KERNEL = 1, 290 HSA_SYMBOL_KIND_INDIRECT_FUNCTION = 2 291} hsa_symbol_kind_t; 292typedef struct hsa_kernel_dispatch_packet_s { 293 uint16_t header; 294 uint16_t setup; 295 uint16_t workgroup_size_x; 296 uint16_t workgroup_size_y; 297 uint16_t workgroup_size_z; 298 uint16_t reserved0; 299 uint32_t grid_size_x; 300 uint32_t grid_size_y; 301 uint32_t grid_size_z; 302 uint32_t private_segment_size; 303 uint32_t group_segment_size; 304 uint64_t kernel_object; 305 306#ifdef HSA_LARGE_MODEL 307 void *kernarg_address; 308#elif defined HSA_LITTLE_ENDIAN 309 void *kernarg_address; 310 uint32_t reserved1; 311#else 312 uint32_t reserved1; 313 void *kernarg_address; 314#endif 315 uint64_t reserved2; 316 hsa_signal_t completion_signal; 317} hsa_kernel_dispatch_packet_t; 318typedef enum { 319 HSA_PACKET_TYPE_VENDOR_SPECIFIC = 0, 320 HSA_PACKET_TYPE_INVALID = 1, 321 HSA_PACKET_TYPE_KERNEL_DISPATCH = 2, 322 HSA_PACKET_TYPE_BARRIER_AND = 3, 323 HSA_PACKET_TYPE_AGENT_DISPATCH = 4, 324 HSA_PACKET_TYPE_BARRIER_OR = 5 325} hsa_packet_type_t; 326typedef enum { 327 HSA_PACKET_HEADER_TYPE = 0, 328 HSA_PACKET_HEADER_BARRIER = 8, 329 HSA_PACKET_HEADER_ACQUIRE_FENCE_SCOPE = 9, 330 HSA_PACKET_HEADER_RELEASE_FENCE_SCOPE = 11 331} hsa_packet_header_t; 332typedef struct hsa_isa_s { uint64_t handle; } hsa_isa_t; 333typedef enum { 334 HSA_DEFAULT_FLOAT_ROUNDING_MODE_DEFAULT = 0, 335 HSA_DEFAULT_FLOAT_ROUNDING_MODE_ZERO = 1, 336 HSA_DEFAULT_FLOAT_ROUNDING_MODE_NEAR = 2 337} hsa_default_float_rounding_mode_t; 338typedef struct hsa_code_symbol_s { uint64_t handle; } hsa_code_symbol_t; 339typedef struct hsa_executable_symbol_s { 340 uint64_t handle; 341} hsa_executable_symbol_t; 342#ifdef HSA_LARGE_MODEL 343typedef int64_t hsa_signal_value_t; 344#else 345typedef int32_t hsa_signal_value_t; 346#endif 347typedef enum { 348 HSA_EXCEPTION_POLICY_BREAK = 1, 349 HSA_EXCEPTION_POLICY_DETECT = 2 350} hsa_exception_policy_t; 351typedef enum { 352 HSA_SYSTEM_INFO_VERSION_MAJOR = 0, 353 HSA_SYSTEM_INFO_VERSION_MINOR = 1, 354 HSA_SYSTEM_INFO_TIMESTAMP = 2, 355 HSA_SYSTEM_INFO_TIMESTAMP_FREQUENCY = 3, 356 HSA_SYSTEM_INFO_SIGNAL_MAX_WAIT = 4, 357 HSA_SYSTEM_INFO_ENDIANNESS = 5, 358 HSA_SYSTEM_INFO_MACHINE_MODEL = 6, 359 HSA_SYSTEM_INFO_EXTENSIONS = 7 360} hsa_system_info_t; 361typedef enum { 362 HSA_EXECUTABLE_INFO_PROFILE = 1, 363 HSA_EXECUTABLE_INFO_STATE = 2 364} hsa_executable_info_t; 365typedef enum { 366 HSA_KERNEL_DISPATCH_PACKET_SETUP_DIMENSIONS = 0 367} hsa_kernel_dispatch_packet_setup_t; 368typedef enum { 369 HSA_PACKET_HEADER_WIDTH_TYPE = 8, 370 HSA_PACKET_HEADER_WIDTH_BARRIER = 1, 371 HSA_PACKET_HEADER_WIDTH_ACQUIRE_FENCE_SCOPE = 2, 372 HSA_PACKET_HEADER_WIDTH_RELEASE_FENCE_SCOPE = 2 373} hsa_packet_header_width_t; 374typedef enum { 375 HSA_CODE_OBJECT_INFO_VERSION = 0, 376 HSA_CODE_OBJECT_INFO_TYPE = 1, 377 HSA_CODE_OBJECT_INFO_ISA = 2, 378 HSA_CODE_OBJECT_INFO_MACHINE_MODEL = 3, 379 HSA_CODE_OBJECT_INFO_PROFILE = 4, 380 HSA_CODE_OBJECT_INFO_DEFAULT_FLOAT_ROUNDING_MODE = 5 381} hsa_code_object_info_t; 382typedef struct hsa_barrier_or_packet_s { 383 uint16_t header; 384 uint16_t reserved0; 385 uint32_t reserved1; 386 hsa_signal_t dep_signal[5]; 387 uint64_t reserved2; 388 hsa_signal_t completion_signal; 389} hsa_barrier_or_packet_t; 390typedef enum { 391 HSA_SYMBOL_KIND_LINKAGE_MODULE = 0, 392 HSA_SYMBOL_KIND_LINKAGE_PROGRAM = 1, 393} hsa_symbol_kind_linkage_t; 394hsa_status_t hsa_executable_validate(hsa_executable_t executable, 395 uint32_t *result); 396uint64_t hsa_queue_add_write_index_acq_rel(const hsa_queue_t *queue, 397 uint64_t value); 398 399uint64_t hsa_queue_add_write_index_acquire(const hsa_queue_t *queue, 400 uint64_t value); 401 402uint64_t hsa_queue_add_write_index_relaxed(const hsa_queue_t *queue, 403 uint64_t value); 404 405uint64_t hsa_queue_add_write_index_release(const hsa_queue_t *queue, 406 uint64_t value); 407hsa_status_t hsa_shut_down(); 408void hsa_signal_add_acq_rel(hsa_signal_t signal, hsa_signal_value_t value); 409 410void hsa_signal_add_acquire(hsa_signal_t signal, hsa_signal_value_t value); 411 412void hsa_signal_add_relaxed(hsa_signal_t signal, hsa_signal_value_t value); 413 414void hsa_signal_add_release(hsa_signal_t signal, hsa_signal_value_t value); 415hsa_status_t hsa_executable_readonly_variable_define( 416 hsa_executable_t executable, hsa_agent_t agent, const char *variable_name, 417 void *address); 418hsa_status_t hsa_agent_extension_supported(uint16_t extension, 419 hsa_agent_t agent, 420 uint16_t version_major, 421 uint16_t version_minor, 422 bool *result); 423hsa_signal_value_t hsa_signal_load_acquire(hsa_signal_t signal); 424 425hsa_signal_value_t hsa_signal_load_relaxed(hsa_signal_t signal); 426hsa_status_t hsa_executable_get_info(hsa_executable_t executable, 427 hsa_executable_info_t attribute, 428 void *value); 429hsa_status_t hsa_iterate_agents(hsa_status_t (*callback)(hsa_agent_t agent, 430 void *data), 431 void *data); 432void hsa_signal_subtract_acq_rel(hsa_signal_t signal, hsa_signal_value_t value); 433 434void hsa_signal_subtract_acquire(hsa_signal_t signal, hsa_signal_value_t value); 435 436void hsa_signal_subtract_relaxed(hsa_signal_t signal, hsa_signal_value_t value); 437 438void hsa_signal_subtract_release(hsa_signal_t signal, hsa_signal_value_t value); 439hsa_status_t 440hsa_executable_symbol_get_info(hsa_executable_symbol_t executable_symbol, 441 hsa_executable_symbol_info_t attribute, 442 void *value); 443void hsa_signal_xor_acq_rel(hsa_signal_t signal, hsa_signal_value_t value); 444 445void hsa_signal_xor_acquire(hsa_signal_t signal, hsa_signal_value_t value); 446 447void hsa_signal_xor_relaxed(hsa_signal_t signal, hsa_signal_value_t value); 448 449void hsa_signal_xor_release(hsa_signal_t signal, hsa_signal_value_t value); 450hsa_status_t hsa_code_object_get_info(hsa_code_object_t code_object, 451 hsa_code_object_info_t attribute, 452 void *value); 453hsa_status_t hsa_code_object_deserialize(void *serialized_code_object, 454 size_t serialized_code_object_size, 455 const char *options, 456 hsa_code_object_t *code_object); 457hsa_status_t hsa_status_string(hsa_status_t status, const char **status_string); 458hsa_status_t hsa_code_object_get_symbol(hsa_code_object_t code_object, 459 const char *symbol_name, 460 hsa_code_symbol_t *symbol); 461void hsa_signal_store_relaxed(hsa_signal_t signal, hsa_signal_value_t value); 462 463void hsa_signal_store_release(hsa_signal_t signal, hsa_signal_value_t value); 464hsa_status_t hsa_signal_destroy(hsa_signal_t signal); 465hsa_status_t hsa_system_get_extension_table(uint16_t extension, 466 uint16_t version_major, 467 uint16_t version_minor, 468 void *table); 469hsa_status_t hsa_agent_iterate_regions( 470 hsa_agent_t agent, 471 hsa_status_t (*callback)(hsa_region_t region, void *data), void *data); 472hsa_status_t hsa_executable_agent_global_variable_define( 473 hsa_executable_t executable, hsa_agent_t agent, const char *variable_name, 474 void *address); 475hsa_status_t hsa_queue_create(hsa_agent_t agent, uint32_t size, 476 hsa_queue_type_t type, 477 void (*callback)(hsa_status_t status, 478 hsa_queue_t *source, void *data), 479 void *data, uint32_t private_segment_size, 480 uint32_t group_segment_size, hsa_queue_t **queue); 481hsa_status_t hsa_isa_compatible(hsa_isa_t code_object_isa, hsa_isa_t agent_isa, 482 bool *result); 483hsa_status_t hsa_code_object_serialize( 484 hsa_code_object_t code_object, 485 hsa_status_t (*alloc_callback)(size_t size, hsa_callback_data_t data, 486 void **address), 487 hsa_callback_data_t callback_data, const char *options, 488 void **serialized_code_object, size_t *serialized_code_object_size); 489hsa_status_t hsa_region_get_info(hsa_region_t region, 490 hsa_region_info_t attribute, void *value); 491hsa_status_t hsa_executable_freeze(hsa_extension_t executable, 492 const char *options); 493hsa_status_t hsa_system_extension_supported(uint16_t extension, 494 uint16_t version_major, 495 uint16_t version_minor, 496 bool *result); 497hsa_signal_value_t hsa_signal_wait_acquire(hsa_signal_t signal, 498 hsa_signal_condition_t condition, 499 hsa_signal_value_t compare_value, 500 uint64_t timeout_hint, 501 hsa_wait_state_t wait_state_hint); 502 503hsa_signal_value_t hsa_signal_wait_relaxed(hsa_signal_t signal, 504 hsa_signal_condition_t condition, 505 hsa_signal_value_t compare_value, 506 uint64_t timeout_hint, 507 hsa_wait_state_t wait_state_hint); 508hsa_status_t hsa_memory_copy(void *dst, const void *src, size_t size); 509hsa_status_t hsa_memory_free(void *ptr); 510hsa_status_t hsa_queue_destroy(hsa_queue_t *queue); 511hsa_status_t hsa_isa_from_name(const char *name, hsa_isa_t *isa); 512hsa_status_t hsa_isa_get_info(hsa_isa_t isa, hsa_isa_info_t attribute, 513 uint32_t index, void *value); 514hsa_status_t hsa_signal_create(hsa_signal_value_t initial_value, 515 uint32_t num_consumers, 516 const hsa_agent_t *consumers, 517 hsa_signal_t *signal); 518hsa_status_t hsa_code_symbol_get_info(hsa_code_symbol_t code_symbol, 519 hsa_code_symbol_info_t attribute, 520 void *value); 521hsa_signal_value_t hsa_signal_cas_acq_rel(hsa_signal_t signal, 522 hsa_signal_value_t expected, 523 hsa_signal_value_t value); 524 525hsa_signal_value_t hsa_signal_cas_acquire(hsa_signal_t signal, 526 hsa_signal_value_t expected, 527 hsa_signal_value_t value); 528 529hsa_signal_value_t hsa_signal_cas_relaxed(hsa_signal_t signal, 530 hsa_signal_value_t expected, 531 hsa_signal_value_t value); 532 533hsa_signal_value_t hsa_signal_cas_release(hsa_signal_t signal, 534 hsa_signal_value_t expected, 535 hsa_signal_value_t value); 536hsa_status_t hsa_code_object_iterate_symbols( 537 hsa_code_object_t code_object, 538 hsa_status_t (*callback)(hsa_code_object_t code_object, 539 hsa_code_symbol_t symbol, void *data), 540 void *data); 541void hsa_queue_store_read_index_relaxed(const hsa_queue_t *queue, 542 uint64_t value); 543 544void hsa_queue_store_read_index_release(const hsa_queue_t *queue, 545 uint64_t value); 546hsa_status_t hsa_memory_assign_agent(void *ptr, hsa_agent_t agent, 547 hsa_access_permission_t access); 548hsa_status_t hsa_queue_inactivate(hsa_queue_t *queue); 549hsa_status_t hsa_executable_get_symbol(hsa_executable_t executable, 550 const char *module_name, 551 const char *symbol_name, 552 hsa_agent_t agent, 553 int32_t call_convention, 554 hsa_executable_symbol_t *symbol); 555uint64_t hsa_queue_cas_write_index_acq_rel(const hsa_queue_t *queue, 556 uint64_t expected, uint64_t value); 557 558uint64_t hsa_queue_cas_write_index_acquire(const hsa_queue_t *queue, 559 uint64_t expected, uint64_t value); 560 561uint64_t hsa_queue_cas_write_index_relaxed(const hsa_queue_t *queue, 562 uint64_t expected, uint64_t value); 563 564uint64_t hsa_queue_cas_write_index_release(const hsa_queue_t *queue, 565 uint64_t expected, uint64_t value); 566void hsa_signal_and_acq_rel(hsa_signal_t signal, hsa_signal_value_t value); 567 568void hsa_signal_and_acquire(hsa_signal_t signal, hsa_signal_value_t value); 569 570void hsa_signal_and_relaxed(hsa_signal_t signal, hsa_signal_value_t value); 571 572void hsa_signal_and_release(hsa_signal_t signal, hsa_signal_value_t value); 573uint64_t hsa_queue_load_read_index_acquire(const hsa_queue_t *queue); 574 575uint64_t hsa_queue_load_read_index_relaxed(const hsa_queue_t *queue); 576hsa_status_t hsa_executable_load_code_object(hsa_executable_t executable, 577 hsa_agent_t agent, 578 hsa_code_object_t code_object, 579 const char *options); 580uint64_t hsa_queue_load_write_index_acquire(const hsa_queue_t *queue); 581 582uint64_t hsa_queue_load_write_index_relaxed(const hsa_queue_t *queue); 583hsa_status_t hsa_agent_get_exception_policies(hsa_agent_t agent, 584 hsa_profile_t profile, 585 uint16_t *mask); 586hsa_status_t hsa_memory_deregister(void *ptr, size_t size); 587void hsa_signal_or_acq_rel(hsa_signal_t signal, hsa_signal_value_t value); 588 589void hsa_signal_or_acquire(hsa_signal_t signal, hsa_signal_value_t value); 590 591void hsa_signal_or_relaxed(hsa_signal_t signal, hsa_signal_value_t value); 592 593void hsa_signal_or_release(hsa_signal_t signal, hsa_signal_value_t value); 594hsa_status_t hsa_soft_queue_create(hsa_region_t region, uint32_t size, 595 hsa_queue_type_t type, uint32_t features, 596 hsa_signal_t doorbell_signal, 597 hsa_queue_t **queue); 598hsa_status_t hsa_executable_iterate_symbols( 599 hsa_executable_t executable, 600 hsa_status_t (*callback)(hsa_executable_t executable, 601 hsa_executable_symbol_t symbol, void *data), 602 void *data); 603hsa_status_t hsa_memory_register(void *ptr, size_t size); 604void hsa_queue_store_write_index_relaxed(const hsa_queue_t *queue, 605 uint64_t value); 606 607void hsa_queue_store_write_index_release(const hsa_queue_t *queue, 608 uint64_t value); 609hsa_status_t hsa_executable_global_variable_define(hsa_executable_t executable, 610 const char *variable_name, 611 void *address); 612hsa_status_t hsa_executable_destroy(hsa_executable_t executable); 613hsa_status_t hsa_code_object_destroy(hsa_code_object_t code_object); 614hsa_status_t hsa_memory_allocate(hsa_region_t region, size_t size, void **ptr); 615hsa_signal_value_t hsa_signal_exchange_acq_rel(hsa_signal_t signal, 616 hsa_signal_value_t value); 617 618hsa_signal_value_t hsa_signal_exchange_acquire(hsa_signal_t signal, 619 hsa_signal_value_t value); 620 621hsa_signal_value_t hsa_signal_exchange_relaxed(hsa_signal_t signal, 622 hsa_signal_value_t value); 623 624hsa_signal_value_t hsa_signal_exchange_release(hsa_signal_t signal, 625 hsa_signal_value_t value); 626hsa_status_t hsa_agent_get_info(hsa_agent_t agent, hsa_agent_info_t attribute, 627 void *value); 628hsa_status_t hsa_init(); 629hsa_status_t hsa_system_get_info(hsa_system_info_t attribute, void *value); 630hsa_status_t hsa_executable_create(hsa_profile_t profile, 631 hsa_executable_state_t executable_state, 632 const char *options, 633 hsa_executable_t *executable); 634 635#endif /* _HSA_H */ 636