111
|
1 /* HSA Extensions API 1.0.1 representation description.
|
145
|
2 Copyright (C) 2016-2020 Free Software Foundation, Inc.
|
111
|
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
|
|
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
|
|
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 */
|