annotate gcc/brig/brigfrontend/phsa.h @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* phsa.h -- interfacing between the gcc BRIG FE and the phsa runtime
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2 Copyright (C) 2016-2018 Free Software Foundation, Inc.
111
kono
parents:
diff changeset
3 Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
kono
parents:
diff changeset
4 for General Processor Tech.
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 This file is part of GCC.
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 GCC is free software; you can redistribute it and/or modify it under
kono
parents:
diff changeset
9 the terms of the GNU General Public License as published by the Free
kono
parents:
diff changeset
10 Software Foundation; either version 3, or (at your option) any later
kono
parents:
diff changeset
11 version.
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
kono
parents:
diff changeset
14 WARRANTY; without even the implied warranty of MERCHANTABILITY or
kono
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
kono
parents:
diff changeset
16 for more details.
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
kono
parents:
diff changeset
19 along with GCC; see the file COPYING3. If not see
kono
parents:
diff changeset
20 <http://www.gnu.org/licenses/>. */
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 #ifndef PHSA_H
kono
parents:
diff changeset
23 #define PHSA_H
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 #include <stdint.h>
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 /* This struct is used to pass information from the BRIG FE to the
kono
parents:
diff changeset
28 runtime of the finalizer kernel, its control directives etc.
kono
parents:
diff changeset
29 The data is passed raw in a special ELF section named
kono
parents:
diff changeset
30 phsa.kerneldesc.kernel_function_name. */
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 typedef struct __attribute__((__packed__))
kono
parents:
diff changeset
33 {
kono
parents:
diff changeset
34 /* Set to 1 in case the function is a kernel. */
kono
parents:
diff changeset
35 uint8_t is_kernel;
kono
parents:
diff changeset
36 /* The size of the group segment used by the kernel. */
kono
parents:
diff changeset
37 uint32_t group_segment_size;
kono
parents:
diff changeset
38 /* Size of the private segment used by a single work-item. */
kono
parents:
diff changeset
39 uint32_t private_segment_size;
kono
parents:
diff changeset
40 /* Total size of the kernel arguments. */
kono
parents:
diff changeset
41 uint32_t kernarg_segment_size;
kono
parents:
diff changeset
42 /* Maximum alignment of a kernel argument variable. */
kono
parents:
diff changeset
43 uint16_t kernarg_max_align;
kono
parents:
diff changeset
44 /* Maximum size (in bytes) of dynamic group memory. */
kono
parents:
diff changeset
45 uint32_t max_dynamic_group_size;
kono
parents:
diff changeset
46 /* Max number of work-items used to launch the kernel. */
kono
parents:
diff changeset
47 uint64_t max_flat_grid_size;
kono
parents:
diff changeset
48 /* Max number of work-items in a work-group used to launch the kernel. */
kono
parents:
diff changeset
49 uint32_t max_flat_workgroup_size;
kono
parents:
diff changeset
50 /* The grid size required by the kernel. */
kono
parents:
diff changeset
51 uint64_t required_grid_size[3];
kono
parents:
diff changeset
52 /* The work group size required by the kernel. */
kono
parents:
diff changeset
53 uint32_t required_workgroup_size[3];
kono
parents:
diff changeset
54 /* The number of dimensions required by the kernel. */
kono
parents:
diff changeset
55 uint8_t required_dim;
kono
parents:
diff changeset
56
kono
parents:
diff changeset
57 } phsa_descriptor;
kono
parents:
diff changeset
58
kono
parents:
diff changeset
59 /* The prefix to use in the ELF section containing descriptor for
kono
parents:
diff changeset
60 a function. */
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
61
111
kono
parents:
diff changeset
62 #define PHSA_DESC_SECTION_PREFIX "phsa.desc."
kono
parents:
diff changeset
63 #define PHSA_HOST_DEF_PTR_PREFIX "__phsa.host_def."
kono
parents:
diff changeset
64
kono
parents:
diff changeset
65 /* The frontend error messages are parsed by the host runtime. Known
kono
parents:
diff changeset
66 prefix strings are used to separate the different runtime error
kono
parents:
diff changeset
67 codes. */
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
68
111
kono
parents:
diff changeset
69 #define PHSA_ERROR_PREFIX_INCOMPATIBLE_MODULE "Incompatible module: "
kono
parents:
diff changeset
70 #define PHSA_ERROR_PREFIX_CORRUPTED_MODULE "Corrupted module: "
kono
parents:
diff changeset
71
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
72 /* Offsets of attributes in the PHSA context structs.
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
73 Used by -fphsa-wi-context-opt. */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
74 #define PHSA_CONTEXT_OFFS_WI_IDS 0
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
75 #define PHSA_CONTEXT_OFFS_WG_IDS (PHSA_CONTEXT_OFFS_WI_IDS + 3 * 4)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
76 #define PHSA_CONTEXT_WG_SIZES (PHSA_CONTEXT_OFFS_WG_IDS + 3 * 4)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
77 #define PHSA_CONTEXT_CURRENT_WG_SIZES (PHSA_CONTEXT_WG_SIZES + 3 * 4)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
78
111
kono
parents:
diff changeset
79 #endif