]>
Commit | Line | Data |
---|---|---|
b8d89b03 | 1 | /* HSA Extensions API 1.0.1 representation description. |
8d9254fc | 2 | Copyright (C) 2016-2020 Free Software Foundation, Inc. |
b8d89b03 ML |
3 | |
4 | This file is part of GCC. | |
5 | ||
6 | GCC is free software; you can redistribute it and/or modify | |
7 | it under the terms of the GNU General Public License as published by | |
8 | the Free Software Foundation; either version 3, or (at your option) | |
9 | any later version. | |
10 | ||
11 | GCC is distributed in the hope that it will be useful, | |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | GNU General Public License for more details. | |
15 | ||
d190d5c0 JJ |
16 | Under Section 7 of GPL version 3, you are granted additional |
17 | permissions described in the GCC Runtime Library Exception, version | |
18 | 3.1, as published by the Free Software Foundation. | |
19 | ||
20 | You should have received a copy of the GNU General Public License and | |
21 | a copy of the GCC Runtime Library Exception along with this program; | |
22 | see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
b8d89b03 ML |
23 | <http://www.gnu.org/licenses/>. |
24 | ||
25 | The contents of the file was created by extracting data structures, enum, | |
26 | typedef and other definitions from HSA Runtime Programmer’s Reference Manual | |
27 | Version 1.0 (http://www.hsafoundation.com/standards/). | |
28 | ||
29 | HTML version is provided on the following link: | |
30 | http://www.hsafoundation.com/html/Content/Runtime/Topics/Runtime_title_page.htm | |
31 | */ | |
32 | ||
33 | ||
34 | #ifndef _HSA_EXT_FINALIZE_H | |
35 | #define _HSA_EXT_FINALIZE_H 1 | |
36 | ||
37 | struct BrigModuleHeader; | |
38 | typedef struct BrigModuleHeader *BrigModule_t; | |
39 | ||
40 | typedef enum { | |
41 | HSA_EXT_IMAGE_GEOMETRY_1D = 0, | |
42 | HSA_EXT_IMAGE_GEOMETRY_2D = 1, | |
43 | HSA_EXT_IMAGE_GEOMETRY_3D = 2, | |
44 | HSA_EXT_IMAGE_GEOMETRY_1DA = 3, | |
45 | HSA_EXT_IMAGE_GEOMETRY_2DA = 4, | |
46 | HSA_EXT_IMAGE_GEOMETRY_1DB = 5, | |
47 | HSA_EXT_IMAGE_GEOMETRY_2DDEPTH = 6, | |
48 | HSA_EXT_IMAGE_GEOMETRY_2DADEPTH = 7 | |
49 | } hsa_ext_image_geometry_t; | |
50 | ||
51 | typedef enum { | |
52 | HSA_EXT_IMAGE_CHANNEL_TYPE_SNORM_INT8 = 0, | |
53 | HSA_EXT_IMAGE_CHANNEL_TYPE_SNORM_INT16 = 1, | |
54 | HSA_EXT_IMAGE_CHANNEL_TYPE_UNORM_INT8 = 2, | |
55 | HSA_EXT_IMAGE_CHANNEL_TYPE_UNORM_INT16 = 3, | |
56 | HSA_EXT_IMAGE_CHANNEL_TYPE_UNORM_INT24 = 4, | |
57 | HSA_EXT_IMAGE_CHANNEL_TYPE_UNORM_SHORT_555 = 5, | |
58 | HSA_EXT_IMAGE_CHANNEL_TYPE_UNORM_SHORT_565 = 6, | |
59 | HSA_EXT_IMAGE_CHANNEL_TYPE_UNORM_SHORT_101010 = 7, | |
60 | HSA_EXT_IMAGE_CHANNEL_TYPE_SIGNED_INT8 = 8, | |
61 | HSA_EXT_IMAGE_CHANNEL_TYPE_SIGNED_INT16 = 9, | |
62 | HSA_EXT_IMAGE_CHANNEL_TYPE_SIGNED_INT32 = 10, | |
63 | HSA_EXT_IMAGE_CHANNEL_TYPE_UNSIGNED_INT8 = 11, | |
64 | HSA_EXT_IMAGE_CHANNEL_TYPE_UNSIGNED_INT16 = 12, | |
65 | HSA_EXT_IMAGE_CHANNEL_TYPE_UNSIGNED_INT32 = 13, | |
66 | HSA_EXT_IMAGE_CHANNEL_TYPE_HALF_FLOAT = 14, | |
67 | HSA_EXT_IMAGE_CHANNEL_TYPE_FLOAT = 15 | |
68 | } hsa_ext_image_channel_type_t; | |
69 | ||
70 | typedef enum { | |
71 | HSA_EXT_IMAGE_CHANNEL_ORDER_A = 0, | |
72 | HSA_EXT_IMAGE_CHANNEL_ORDER_R = 1, | |
73 | HSA_EXT_IMAGE_CHANNEL_ORDER_RX = 2, | |
74 | HSA_EXT_IMAGE_CHANNEL_ORDER_RG = 3, | |
75 | HSA_EXT_IMAGE_CHANNEL_ORDER_RGX = 4, | |
76 | HSA_EXT_IMAGE_CHANNEL_ORDER_RA = 5, | |
77 | HSA_EXT_IMAGE_CHANNEL_ORDER_RGB = 6, | |
78 | HSA_EXT_IMAGE_CHANNEL_ORDER_RGBX = 7, | |
79 | HSA_EXT_IMAGE_CHANNEL_ORDER_RGBA = 8, | |
80 | HSA_EXT_IMAGE_CHANNEL_ORDER_BGRA = 9, | |
81 | HSA_EXT_IMAGE_CHANNEL_ORDER_ARGB = 10, | |
82 | HSA_EXT_IMAGE_CHANNEL_ORDER_ABGR = 11, | |
83 | HSA_EXT_IMAGE_CHANNEL_ORDER_SRGB = 12, | |
84 | HSA_EXT_IMAGE_CHANNEL_ORDER_SRGBX = 13, | |
85 | HSA_EXT_IMAGE_CHANNEL_ORDER_SRGBA = 14, | |
86 | HSA_EXT_IMAGE_CHANNEL_ORDER_SBGRA = 15, | |
87 | HSA_EXT_IMAGE_CHANNEL_ORDER_INTENSITY = 16, | |
88 | HSA_EXT_IMAGE_CHANNEL_ORDER_LUMINANCE = 17, | |
89 | HSA_EXT_IMAGE_CHANNEL_ORDER_DEPTH = 18, | |
90 | HSA_EXT_IMAGE_CHANNEL_ORDER_DEPTH_STENCIL = 19 | |
91 | } hsa_ext_image_channel_order_t; | |
92 | ||
93 | typedef struct hsa_ext_image_format_s | |
94 | { | |
95 | hsa_ext_image_channel_type_t channel_type; | |
96 | hsa_ext_image_channel_order_t channel_order; | |
97 | } hsa_ext_image_format_t; | |
98 | ||
99 | typedef struct hsa_ext_sampler_s | |
100 | { | |
101 | uint64_t handle; | |
102 | } hsa_ext_sampler_t; | |
103 | typedef struct hsa_ext_image_data_info_s | |
104 | { | |
105 | size_t size; | |
106 | size_t alignment; | |
107 | } hsa_ext_image_data_info_t; | |
108 | typedef enum { | |
109 | HSA_EXT_SAMPLER_ADDRESSING_MODE_UNDEFINED = 0, | |
110 | HSA_EXT_SAMPLER_ADDRESSING_MODE_CLAMP_TO_EDGE = 1, | |
111 | HSA_EXT_SAMPLER_ADDRESSING_MODE_CLAMP_TO_BORDER = 2, | |
112 | HSA_EXT_SAMPLER_ADDRESSING_MODE_REPEAT = 3, | |
113 | HSA_EXT_SAMPLER_ADDRESSING_MODE_MIRRORED_REPEAT = 4 | |
114 | } hsa_ext_sampler_addressing_mode_t; | |
115 | typedef struct hsa_ext_image_s | |
116 | { | |
117 | uint64_t handle; | |
118 | } hsa_ext_image_t; | |
119 | typedef enum { | |
120 | HSA_EXT_IMAGE_CAPABILITY_NOT_SUPPORTED = 0x0, | |
121 | HSA_EXT_IMAGE_CAPABILITY_READ_ONLY = 0x1, | |
122 | HSA_EXT_IMAGE_CAPABILITY_WRITE_ONLY = 0x2, | |
123 | HSA_EXT_IMAGE_CAPABILITY_READ_WRITE = 0x4, | |
124 | HSA_EXT_IMAGE_CAPABILITY_READ_MODIFY_WRITE = 0x8, | |
125 | HSA_EXT_IMAGE_CAPABILITY_ACCESS_INVARIANT_DATA_LAYOUT = 0x10 | |
126 | } hsa_ext_image_capability_t; | |
127 | typedef struct hsa_ext_control_directives_s | |
128 | { | |
129 | uint64_t control_directives_mask; | |
130 | uint16_t break_exceptions_mask; | |
131 | uint16_t detect_exceptions_mask; | |
132 | uint32_t max_dynamic_group_size; | |
133 | uint64_t max_flat_grid_size; | |
134 | uint32_t max_flat_workgroup_size; | |
135 | uint32_t reserved1; | |
136 | uint64_t required_grid_size[3]; | |
137 | hsa_dim3_t required_workgroup_size; | |
138 | uint8_t required_dim; | |
139 | uint8_t reserved2[75]; | |
140 | } hsa_ext_control_directives_t; | |
141 | typedef enum { | |
142 | HSA_EXT_SAMPLER_FILTER_MODE_NEAREST = 0, | |
143 | HSA_EXT_SAMPLER_FILTER_MODE_LINEAR = 1 | |
144 | } hsa_ext_sampler_filter_mode_t; | |
145 | ||
146 | typedef enum { | |
147 | HSA_EXT_SAMPLER_COORDINATE_MODE_UNNORMALIZED = 0, | |
148 | HSA_EXT_SAMPLER_COORDINATE_MODE_NORMALIZED = 1 | |
149 | } hsa_ext_sampler_coordinate_mode_t; | |
150 | typedef enum { | |
151 | HSA_EXT_FINALIZER_CALL_CONVENTION_AUTO = -1 | |
152 | } hsa_ext_finalizer_call_convention_t; | |
153 | typedef struct hsa_ext_program_s | |
154 | { | |
155 | uint64_t handle; | |
156 | } hsa_ext_program_t; | |
157 | typedef struct hsa_ext_image_descriptor_s | |
158 | { | |
159 | hsa_ext_image_geometry_t geometry; | |
160 | size_t width; | |
161 | size_t height; | |
162 | size_t depth; | |
163 | size_t array_size; | |
164 | hsa_ext_image_format_t format; | |
165 | } hsa_ext_image_descriptor_t; | |
166 | typedef enum { | |
167 | HSA_EXT_PROGRAM_INFO_MACHINE_MODEL = 0, | |
168 | HSA_EXT_PROGRAM_INFO_PROFILE = 1, | |
169 | HSA_EXT_PROGRAM_INFO_DEFAULT_FLOAT_ROUNDING_MODE = 2 | |
170 | } hsa_ext_program_info_t; | |
171 | typedef BrigModule_t hsa_ext_module_t; | |
172 | typedef struct hsa_ext_sampler_descriptor_s | |
173 | { | |
174 | hsa_ext_sampler_coordinate_mode_t coordinate_mode; | |
175 | hsa_ext_sampler_filter_mode_t filter_mode; | |
176 | hsa_ext_sampler_addressing_mode_t address_mode; | |
177 | } hsa_ext_sampler_descriptor_t; | |
178 | ||
179 | typedef struct hsa_ext_image_region_s | |
180 | { | |
181 | hsa_dim3_t offset; | |
182 | hsa_dim3_t range; | |
183 | } hsa_ext_image_region_t; | |
184 | hsa_status_t hsa_ext_image_export (hsa_agent_t agent, hsa_ext_image_t src_image, | |
185 | void *dst_memory, size_t dst_row_pitch, | |
186 | size_t dst_slice_pitch, | |
187 | const hsa_ext_image_region_t *image_region); | |
188 | hsa_status_t hsa_ext_program_add_module (hsa_ext_program_t program, | |
189 | hsa_ext_module_t module); | |
190 | hsa_status_t hsa_ext_program_iterate_modules ( | |
191 | hsa_ext_program_t program, | |
192 | hsa_status_t (*callback) (hsa_ext_program_t program, hsa_ext_module_t module, | |
193 | void *data), | |
194 | void *data); | |
195 | hsa_status_t hsa_ext_program_create ( | |
196 | hsa_machine_model_t machine_model, hsa_profile_t profile, | |
197 | hsa_default_float_rounding_mode_t default_float_rounding_mode, | |
198 | const char *options, hsa_ext_program_t *program); | |
199 | hsa_status_t | |
200 | hsa_ext_image_data_get_info (hsa_agent_t agent, | |
201 | const hsa_ext_image_descriptor_t *image_descriptor, | |
202 | hsa_access_permission_t access_permission, | |
203 | hsa_ext_image_data_info_t *image_data_info); | |
204 | ||
205 | hsa_status_t hsa_ext_image_import (hsa_agent_t agent, const void *src_memory, | |
206 | size_t src_row_pitch, size_t src_slice_pitch, | |
207 | hsa_ext_image_t dst_image, | |
208 | const hsa_ext_image_region_t *image_region); | |
209 | hsa_status_t hsa_ext_program_get_info (hsa_ext_program_t program, | |
210 | hsa_ext_program_info_t attribute, | |
211 | void *value); | |
212 | enum | |
213 | { | |
214 | HSA_EXT_STATUS_ERROR_IMAGE_FORMAT_UNSUPPORTED = 0x3000, | |
215 | HSA_EXT_STATUS_ERROR_IMAGE_SIZE_UNSUPPORTED = 0x3001 | |
216 | }; | |
217 | hsa_status_t hsa_ext_image_destroy (hsa_agent_t agent, hsa_ext_image_t image); | |
218 | hsa_status_t hsa_ext_image_get_capability ( | |
219 | hsa_agent_t agent, hsa_ext_image_geometry_t geometry, | |
220 | const hsa_ext_image_format_t *image_format, uint32_t *capability_mask); | |
221 | enum | |
222 | { | |
223 | HSA_EXT_STATUS_ERROR_INVALID_PROGRAM = 0x2000, | |
224 | HSA_EXT_STATUS_ERROR_INVALID_MODULE = 0x2001, | |
225 | HSA_EXT_STATUS_ERROR_INCOMPATIBLE_MODULE = 0x2002, | |
226 | HSA_EXT_STATUS_ERROR_MODULE_ALREADY_INCLUDED = 0x2003, | |
227 | HSA_EXT_STATUS_ERROR_SYMBOL_MISMATCH = 0x2004, | |
228 | HSA_EXT_STATUS_ERROR_FINALIZATION_FAILED = 0x2005, | |
229 | HSA_EXT_STATUS_ERROR_DIRECTIVE_MISMATCH = 0x2006 | |
230 | }; | |
231 | hsa_status_t hsa_ext_sampler_destroy (hsa_agent_t agent, | |
232 | hsa_ext_sampler_t sampler); | |
233 | hsa_status_t hsa_ext_program_finalize ( | |
234 | hsa_ext_program_t program, hsa_isa_t isa, int32_t call_convention, | |
235 | hsa_ext_control_directives_t control_directives, const char *options, | |
236 | hsa_code_object_type_t code_object_type, hsa_code_object_t *code_object); | |
237 | hsa_status_t hsa_ext_image_create ( | |
238 | hsa_agent_t agent, const hsa_ext_image_descriptor_t *image_descriptor, | |
239 | const void *image_data, hsa_access_permission_t access_permission, | |
240 | hsa_ext_image_t *image); | |
241 | hsa_status_t hsa_ext_program_destroy (hsa_ext_program_t program); | |
242 | hsa_status_t hsa_ext_image_copy (hsa_agent_t agent, hsa_ext_image_t src_image, | |
243 | const hsa_dim3_t *src_offset, | |
244 | hsa_ext_image_t dst_image, | |
245 | const hsa_dim3_t *dst_offset, | |
246 | const hsa_dim3_t *range); | |
247 | hsa_status_t hsa_ext_image_clear (hsa_agent_t agent, hsa_ext_image_t image, | |
248 | const void *data, | |
249 | const hsa_ext_image_region_t *image_region); | |
250 | enum | |
251 | { | |
252 | HSA_EXT_AGENT_INFO_IMAGE_1D_MAX_ELEMENTS = 0x3000, | |
253 | HSA_EXT_AGENT_INFO_IMAGE_1DA_MAX_ELEMENTS = 0x3001, | |
254 | HSA_EXT_AGENT_INFO_IMAGE_1DB_MAX_ELEMENTS = 0x3002, | |
255 | HSA_EXT_AGENT_INFO_IMAGE_2D_MAX_ELEMENTS = 0x3003, | |
256 | HSA_EXT_AGENT_INFO_IMAGE_2DA_MAX_ELEMENTS = 0x3004, | |
257 | HSA_EXT_AGENT_INFO_IMAGE_2DDEPTH_MAX_ELEMENTS = 0x3005, | |
258 | HSA_EXT_AGENT_INFO_IMAGE_2DADEPTH_MAX_ELEMENTS = 0x3006, | |
259 | HSA_EXT_AGENT_INFO_IMAGE_3D_MAX_ELEMENTS = 0x3007, | |
260 | HSA_EXT_AGENT_INFO_IMAGE_ARRAY_MAX_LAYERS = 0x3008, | |
261 | HSA_EXT_AGENT_INFO_MAX_IMAGE_RD_HANDLES = 0x3009, | |
262 | HSA_EXT_AGENT_INFO_MAX_IMAGE_RORW_HANDLES = 0x300A, | |
263 | HSA_EXT_AGENT_INFO_MAX_SAMPLER_HANDLERS = 0x300B | |
264 | }; | |
265 | hsa_status_t | |
266 | hsa_ext_sampler_create (hsa_agent_t agent, | |
267 | const hsa_ext_sampler_descriptor_t *sampler_descriptor, | |
268 | hsa_ext_sampler_t *sampler); | |
269 | ||
270 | #endif /* _HSA_EXT_FINALIZE_H */ |