| /* Data structures for OpenMP context selectors. This is in a separate file |
| from omp-general.h so that it may also be used in the Fortran parser |
| without reference to tree data structures. |
| |
| Copyright (C) 2023-2024 Free Software Foundation, Inc. |
| |
| This file is part of GCC. |
| |
| GCC is free software; you can redistribute it and/or modify it under |
| the terms of the GNU General Public License as published by the Free |
| Software Foundation; either version 3, or (at your option) any later |
| version. |
| |
| GCC is distributed in the hope that it will be useful, but WITHOUT ANY |
| WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with GCC; see the file COPYING3. If not see |
| <http://www.gnu.org/licenses/>. */ |
| |
| |
| #ifndef GCC_OMP_SELECTORS_H |
| #define GCC_OMP_SELECTORS_H |
| |
| /* Trait set selector keywords. */ |
| enum omp_tss_code { |
| OMP_TRAIT_SET_CONSTRUCT, |
| OMP_TRAIT_SET_DEVICE, |
| OMP_TRAIT_SET_TARGET_DEVICE, |
| OMP_TRAIT_SET_IMPLEMENTATION, |
| OMP_TRAIT_SET_USER, |
| OMP_TRAIT_SET_LAST, |
| OMP_TRAIT_SET_INVALID = -1 |
| }; |
| |
| /* Trait selector keywords. */ |
| enum omp_ts_code { |
| OMP_TRAIT_DEVICE_KIND, |
| OMP_TRAIT_DEVICE_ISA, |
| OMP_TRAIT_DEVICE_ARCH, |
| OMP_TRAIT_DEVICE_NUM, |
| OMP_TRAIT_IMPLEMENTATION_VENDOR, |
| OMP_TRAIT_IMPLEMENTATION_EXTENSION, |
| OMP_TRAIT_IMPLEMENTATION_ADMO, |
| OMP_TRAIT_IMPLEMENTATION_REQUIRES, |
| OMP_TRAIT_IMPLEMENTATION_UNIFIED_ADDRESS, |
| OMP_TRAIT_IMPLEMENTATION_UNIFIED_SHARED_MEMORY, |
| OMP_TRAIT_IMPLEMENTATION_DYNAMIC_ALLOCATORS, |
| OMP_TRAIT_IMPLEMENTATION_REVERSE_OFFLOAD, |
| OMP_TRAIT_USER_CONDITION, |
| OMP_TRAIT_CONSTRUCT_TARGET, |
| OMP_TRAIT_CONSTRUCT_TEAMS, |
| OMP_TRAIT_CONSTRUCT_PARALLEL, |
| OMP_TRAIT_CONSTRUCT_FOR, |
| OMP_TRAIT_CONSTRUCT_SIMD, |
| OMP_TRAIT_LAST, |
| OMP_TRAIT_INVALID = -1 |
| }; |
| |
| /* All trait property forms. */ |
| enum omp_tp_type { |
| OMP_TRAIT_PROPERTY_NONE, |
| OMP_TRAIT_PROPERTY_ID, |
| OMP_TRAIT_PROPERTY_NAME_LIST, |
| OMP_TRAIT_PROPERTY_DEV_NUM_EXPR, |
| OMP_TRAIT_PROPERTY_BOOL_EXPR, |
| OMP_TRAIT_PROPERTY_CLAUSE_LIST, |
| OMP_TRAIT_PROPERTY_EXTENSION |
| }; |
| |
| /* Map trait set selector name keywords onto strings. */ |
| extern const char *omp_tss_map []; |
| |
| /* Map trait selector keywords onto strings, allowed contexts, and |
| allowed property names for OMP_TRAIT_PROPERTY_NAME_LIST and |
| OMP_TRAIT_PROPERTY_ID properties. If valid_properties is null, |
| it means that any required checking has to be done explicitly |
| somewhere instead of being driven by the table. Otherwise it's a |
| null-terminated array of strings. */ |
| struct omp_ts_info { |
| const char *name; |
| unsigned int tss_mask; |
| enum omp_tp_type tp_type; |
| bool allow_score; |
| const char * const *valid_properties; |
| }; |
| extern struct omp_ts_info omp_ts_map[]; |
| |
| extern enum omp_tss_code omp_lookup_tss_code (const char *); |
| extern enum omp_ts_code omp_lookup_ts_code (enum omp_tss_code, const char *); |
| |
| #endif /* GCC_OMP_SELECTORS_H */ |