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