16#ifndef __LEGION_CONFIG_H__
17#define __LEGION_CONFIG_H__
20#include "legion_defines.h"
22#ifndef LEGION_USE_PYTHON_CFFI
27#if defined(__CUDACC__) || defined(__HIPCC__)
28#define __LEGION_CUDA_HD__ __host__ __device__
30#define __LEGION_CUDA_HD__
44#include "realm/realm_c.h"
50#ifndef LEGION_AUTO_GENERATE_ID
51#define LEGION_AUTO_GENERATE_ID UINT_MAX
54 "legion.h requires the ability to define the macro 'LEGION_AUTO_GENERATE_ID' but it has already been defined"
58#ifndef LEGION_DISABLE_DEPRECATED_ENUMS
59#ifndef AUTO_GENERATE_ID
60#define AUTO_GENERATE_ID LEGION_AUTO_GENERATE_ID
64#ifndef LEGION_GC_MIN_PRIORITY
65#define LEGION_GC_MIN_PRIORITY INT_MIN
68 "legion.h requires the ability to define the macro 'LEGION_GC_MIN_PRIORITY' but it has already been defined"
72#ifndef LEGION_DISABLE_DEPRECATED_ENUMS
73#ifndef GC_MIN_PRIORITY
74#define GC_MIN_PRIORITY LEGION_GC_MIN_PRIORITY
78#ifndef LEGION_GC_MAX_PRIORITY
79#define LEGION_GC_MAX_PRIORITY (INT_MAX - 1)
82 "legion.h requires the ability to define the macro 'LEGION_GC_MAX_PRIORITY' but it has already been defined"
86#ifndef LEGION_DISABLE_DEPRECATED_ENUMS
87#ifndef GC_MAX_PRIORITY
88#define GC_MAX_PRIORITY LEGION_GC_MAX_PRIORITY
92#ifndef LEGION_GC_NEVER_PRIORITY
93#define LEGION_GC_NEVER_PRIORITY LEGION_GC_MIN_PRIORITY
96 "legion.h requires the ability to define the macro 'LEGION_GC_NEVER_PRIORITY' but it has already been defined"
99#ifndef LEGION_GC_EAGER_PRIORITY
100#define LEGION_GC_EAGER_PRIORITY INT_MAX
103 "legion.h requires the ability to define the macro 'LEGION_GC_EAGER_PRIORITY' but it has already been defined"
108#ifndef LEGION_DISABLE_DEPRECATED_ENUMS
109#ifndef GC_NEVER_PRIORITY
110#define GC_NEVER_PRIORITY LEGION_GC_NEVER_PRIORITY
116#ifndef LEGION_BOUNDS_CHECKS
117#define LEGION_BOUNDS_CHECKS
122#ifdef PRIVILEGE_CHECKS
123#ifndef LEGION_PRIVILEGE_CHECKS
124#define LEGION_PRIVILEGE_CHECKS
128#ifndef LEGION_GC_FIRST_PRIORITY
129#define LEGION_GC_FIRST_PRIORITY LEGION_GC_MAX_PRIORITY
131#ifndef LEGION_GC_DEFAULT_PRIORITY
132#define LEGION_GC_DEFAULT_PRIORITY 0
134#ifndef LEGION_GC_LAST_PRIORITY
135#define LEGION_GC_LAST_PRIORITY (LEGION_GC_MIN_PRIORITY + 1)
139#ifndef LEGION_DISABLE_DEPRECATED_ENUMS
140#ifndef GC_FIRST_PRIORITY
141#define GC_FIRST_PRIORITY LEGION_GC_FIRST_PRIORITY
143#ifndef GC_DEFAULT_PRIORITY
144#define GC_DEFAULT_PRIORITY LEGION_GC_DEFAULT_PRIORITY
146#ifndef GC_LAST_PRIORITY
147#define GC_LAST_PRIORITY LEGION_GC_LAST_PRIORITY
151#ifndef LEGION_MAX_DIM
152#define LEGION_MAX_DIM 3
160#ifndef MAX_RETURN_SIZE
161#ifndef LEGION_MAX_RETURN_SIZE
162#define LEGION_MAX_RETURN_SIZE 2048
165#ifndef LEGION_MAX_RETURN_SIZE
166#define LEGION_MAX_RETURN_SIZE (MAX_RETURN_SIZE)
171#ifndef LEGION_MAX_FIELDS
172#define LEGION_MAX_FIELDS 256
175#ifndef LEGION_MAX_FIELDS
176#define LEGION_MAX_FIELDS (MAX_FIELDS)
184#ifndef LEGION_MAX_NUM_NODES
185#define LEGION_MAX_NUM_NODES 1024
188#ifndef LEGION_MAX_NUM_NODES
189#define LEGION_MAX_NUM_NODES (MAX_NUM_NODES)
194#ifndef LEGION_MAX_NUM_PROCS
195#define LEGION_MAX_NUM_PROCS 64
198#ifndef LEGION_MAX_NUM_PROCS
199#define LEGION_MAX_NUM_PROCS (MAX_NUM_PROCS)
203#ifndef MAX_APPLICATION_TASK_ID
204#ifndef LEGION_MAX_APPLICATION_TASK_ID
205#define LEGION_MAX_APPLICATION_TASK_ID (1 << 20)
208#ifndef LEGION_MAX_APPLICATION_TASK_ID
209#define LEGION_MAX_APPLICATION_TASK_ID (MAX_APPLICATION_TASK_ID)
213#ifndef MAX_APPLICATION_FIELD_ID
214#ifndef LEGION_MAX_APPLICATION_FIELD_ID
215#define LEGION_MAX_APPLICATION_FIELD_ID (1 << 20)
218#ifndef LEGION_MAX_APPLICATION_FIELD_ID
219#define LEGION_MAX_APPLICATION_FIELD_ID (MAX_APPLICATION_FIELD_ID)
223#ifndef MAX_APPLICATION_MAPPER_ID
224#ifndef LEGION_MAX_APPLICATION_MAPPER_ID
225#define LEGION_MAX_APPLICATION_MAPPER_ID (1 << 20)
228#ifndef LEGION_MAX_APPLICATION_MAPPER_ID
229#define LEGION_MAX_APPLICATION_MAPPER_ID (MAX_APPLICATION_MAPPER_ID)
233#ifndef MAX_APPLICATION_REDUCTION_ID
234#define MAX_APPLICATION_REDUCTION_ID (1 << 20)
237#ifndef LEGION_MAX_APPLICATION_TRACE_ID
238#define LEGION_MAX_APPLICATION_TRACE_ID (1 << 20)
241#ifndef MAX_APPLICATION_PROJECTION_ID
242#ifndef LEGION_MAX_APPLICATION_PROJECTION_ID
243#define LEGION_MAX_APPLICATION_PROJECTION_ID (1 << 20)
246#ifndef LEGION_MAX_APPLICATION_PROJECTION_ID
247#define LEGION_MAX_APPLICATION_PROJECTION_ID (MAX_APPLICATION_PROJECTION_ID)
251#ifndef MAX_APPLICATION_SHARDING_ID
252#ifndef LEGION_MAX_APPLICATION_SHARDING_ID
253#define LEGION_MAX_APPLICATION_SHARDING_ID (1 << 20)
256#ifndef LEGION_MAX_APPLICATION_SHARDING_ID
257#define LEGION_MAX_APPLICATION_SHARDING_ID (MAX_APPLICATION_SHARDING_ID)
260#ifndef LEGION_MAX_APPLICATION_CONCURRENT_ID
261#define LEGION_MAX_APPLICATION_CONCURRENT_ID (1 << 20)
263#ifndef LEGION_MAX_APPLICATION_EXCEPTION_HANDLER_ID
264#define LEGION_MAX_APPLICATION_EXCEPTION_HANDLER_ID (1 << 20)
267#ifndef LEGION_MAX_APPLICATION_REDOP_ID
268#ifdef LEGION_USE_PYTHON_CFFI
269#define LEGION_MAX_APPLICATION_REDOP_ID 1048576
271#define LEGION_MAX_APPLICATION_REDOP_ID \
276#ifndef LEGION_MAX_APPLICATION_SERDEZ_ID
277#define LEGION_MAX_APPLICATION_SERDEZ_ID (1 << 20)
280#ifndef LEGION_MAX_APPLICATION_LAYOUT_ID
281#define LEGION_MAX_APPLICATION_LAYOUT_ID (1 << 20)
284#ifndef DEFAULT_LOCAL_FIELDS
285#ifndef LEGION_DEFAULT_LOCAL_FIELDS
286#define LEGION_DEFAULT_LOCAL_FIELDS 4
289#ifndef LEGION_DEFAULT_LOCAL_FIELDS
290#define LEGION_DEFAULT_LOCAL_FIELDS (DEFAULT_LOCAL_FIELDS)
294#ifndef DEFAULT_MAPPER_SLOTS
295#ifndef LEGION_DEFAULT_MAPPER_SLOTS
296#define LEGION_DEFAULT_MAPPER_SLOTS 8
299#ifndef LEGION_DEFAULT_MAPPER_SLOTS
300#define LEGION_DEFAULT_MAPPER_SLOTS (DEFAULT_MAPPER_SLOTS)
305#ifndef DEFAULT_CONTEXTS
306#ifndef LEGION_DEFAULT_CONTEXTS
307#define LEGION_DEFAULT_CONTEXTS 8
310#ifndef LEGION_DEFAULT_CONTEXTS
311#define LEGION_DEFAULT_CONTEXTS (DEFAULT_CONTEXTS)
315#ifndef DEFAULT_MAX_TASK_WINDOW
316#ifndef LEGION_DEFAULT_MAX_TASK_WINDOW
317#define LEGION_DEFAULT_MAX_TASK_WINDOW 1024
320#ifndef LEGION_DEFAULT_MAX_TASK_WINDOW
321#define LEGION_DEFAULT_MAX_TASK_WINDOW (DEFAULT_MAX_TASK_WINDOW)
326#ifndef DEFAULT_TASK_WINDOW_HYSTERESIS
327#ifndef LEGION_DEFAULT_TASK_WINDOW_HYSTERESIS
328#define LEGION_DEFAULT_TASK_WINDOW_HYSTERESIS 25
331#ifndef LEGION_DEFAULT_TASK_WINDOW_HYSTERESIS
332#define LEGION_DEFAULT_TASK_WINDOW_HYSTERESIS (DEFAULT_TASK_WINDOW_HYSTERESIS)
337#ifndef DEFAULT_MIN_TASKS_TO_SCHEDULE
338#ifndef LEGION_DEFAULT_MIN_TASKS_TO_SCHEDULE
339#define LEGION_DEFAULT_MIN_TASKS_TO_SCHEDULE 32
342#ifndef LEGION_DEFAULT_MIN_TASKS_TO_SCHEDULE
343#define LEGION_DEFAULT_MIN_TASKS_TO_SCHEDULE (DEFAULT_MIN_TASKS_TO_SCHEDULE)
347#ifndef DEFAULT_META_TASK_VECTOR_WIDTH
348#ifndef LEGION_DEFAULT_META_TASK_VECTOR_WIDTH
349#define LEGION_DEFAULT_META_TASK_VECTOR_WIDTH 16
352#ifndef LEGION_DEFAULT_META_TASK_VECTOR_WIDTH
353#define LEGION_DEFAULT_META_TASK_VECTOR_WIDTH (DEFAULT_META_TASK_VECTOR_WIDTH)
357#ifndef LEGION_DEFAULT_MAX_TEMPLATES_PER_TRACE
358#define LEGION_DEFAULT_MAX_TEMPLATES_PER_TRACE 16
361#ifndef DEFAULT_MAX_REPLAY_PARALLELISM
362#ifndef LEGION_DEFAULT_MAX_REPLAY_PARALLELISM
363#define LEGION_DEFAULT_MAX_REPLAY_PARALLELISM 2
366#ifndef LEGION_DEFAULT_MAX_REPLAY_PARALLELISM
367#define LEGION_DEFAULT_MAX_REPLAY_PARALLELISM (DEFAULT_MAX_REPLAY_PARALLELISM)
374#ifndef DEFAULT_MAX_MESSAGE_SIZE
375#ifndef LEGION_DEFAULT_MAX_MESSAGE_SIZE
376#define LEGION_DEFAULT_MAX_MESSAGE_SIZE 16384
379#ifndef LEGION_DEFAULT_MAX_MESSAGE_SIZE
380#define LEGION_DEFAULT_MAX_MESSAGE_SIZE (DEFAULT_MAX_MESSAGE_SIZE)
387#ifndef DEFAULT_GC_EPOCH_SIZE
388#ifndef LEGION_DEFAULT_GC_EPOCH_SIZE
389#define LEGION_DEFAULT_GC_EPOCH_SIZE 64
392#ifndef LEGION_DEFAULT_GC_EPOCH_SIZE
393#define LEGION_DEFAULT_GC_EPOCH_SIZE (DEFAULT_GC_EPOCH_SIZE)
397#ifndef LEGION_DEFAULT_MAX_CONTROL_REPLICATION_CONTEXTS
398#define LEGION_DEFAULT_MAX_CONTROL_REPLICATION_CONTEXTS 1
402#ifndef LEGION_CONTROL_REPLICATION_COMMUNICATION_BARRIERS
403#define LEGION_CONTROL_REPLICATION_COMMUNICATION_BARRIERS 32
409#ifndef TRACE_ALLOCATION_FREQUENCY
410#ifndef LEGION_TRACE_ALLOCATION_FREQUENCY
411#define LEGION_TRACE_ALLOCATION_FREQUENCY 1024
414#ifndef LEGION_TRACE_ALLOCATION_FREQUENCY
415#define LEGION_TRACE_ALLOCATION_FREQUENCY (TRACE_ALLOCATION_FREQUENCY)
422#ifndef LEGION_MAX_ALIGNMENT
423#define LEGION_MAX_ALIGNMENT (2 * sizeof(void*))
431#ifndef LEGION_MAX_RECYCLABLE_OBJECTS
432#define LEGION_MAX_RECYCLABLE_OBJECTS 1024
437#ifndef LEGION_INIT_SEED
438#define LEGION_INIT_SEED 0x221B
443#ifndef LEGION_COLLECTIVE_RADIX
444#define LEGION_COLLECTIVE_RADIX 8
449#ifndef LEGION_SHUTDOWN_RADIX
450#define LEGION_SHUTDOWN_RADIX 8
454#ifndef LEGION_MAX_BVH_FANOUT
455#define LEGION_MAX_BVH_FANOUT 16
459#ifndef LEGION_NON_REPLAYABLE_WARNING
460#define LEGION_NON_REPLAYABLE_WARNING 5
464#ifndef LEGION_NEW_TEMPLATE_WARNING_COUNT
465#define LEGION_NEW_TEMPLATE_WARNING_COUNT 8
470#ifndef LEGION_INITIAL_LIBRARY_ID_OFFSET
471#define LEGION_INITIAL_LIBRARY_ID_OFFSET (1 << 30)
477#ifndef LEGION_REFINEMENT_PARTITION_PERCENTAGE
478#define LEGION_REFINEMENT_PARTITION_PERCENTAGE 50
486#define STATIC_LOG2(x) (LOG2_LOOKUP(uint32_t(x * 0x077CB531U) >> 27))
487#define LOG2_LOOKUP(x) \
522#ifndef LEGION_FIELD_LOG2
523#define LEGION_FIELD_LOG2 STATIC_LOG2(LEGION_MAX_FIELDS)
526#define LEGION_STRINGIFY(x) #x
527#define LEGION_MACRO_TO_STRING(x) LEGION_STRINGIFY(x)
529#define LEGION_DISTRIBUTED_ID_MASK 0x00FFFFFFFFFFFFFFULL
530#define LEGION_DISTRIBUTED_ID_FILTER(x) ((x) & LEGION_DISTRIBUTED_ID_MASK)
531#define LEGION_DISTRIBUTED_HELP_DECODE(x) ((x) >> 56)
532#define LEGION_DISTRIBUTED_HELP_ENCODE(x, y) ((x) | (((long long)(y)) << 56))
535#if LEGION_MAX_DIM == 1
537#define LEGION_FOREACH_N(__func__) \
539#define LEGION_FOREACH_NN(__func__) \
542#elif LEGION_MAX_DIM == 2
544#define LEGION_FOREACH_N(__func__) \
547#define LEGION_FOREACH_NN(__func__) \
553#elif LEGION_MAX_DIM == 3
555#define LEGION_FOREACH_N(__func__) \
559#define LEGION_FOREACH_NN(__func__) \
570#elif LEGION_MAX_DIM == 4
572#define LEGION_FOREACH_N(__func__) \
577#define LEGION_FOREACH_NN(__func__) \
595#elif LEGION_MAX_DIM == 5
597#define LEGION_FOREACH_N(__func__) \
603#define LEGION_FOREACH_NN(__func__) \
630#elif LEGION_MAX_DIM == 6
632#define LEGION_FOREACH_N(__func__) \
639#define LEGION_FOREACH_NN(__func__) \
677#elif LEGION_MAX_DIM == 7
679#define LEGION_FOREACH_N(__func__) \
687#define LEGION_FOREACH_NN(__func__) \
738#elif LEGION_MAX_DIM == 8
740#define LEGION_FOREACH_N(__func__) \
749#define LEGION_FOREACH_NN(__func__) \
815#elif LEGION_MAX_DIM == 9
817#define LEGION_FOREACH_N(__func__) \
827#define LEGION_FOREACH_NN(__func__) \
911#error "Unsupported LEGION_MAX_DIM"
915#ifdef LEGION_DISABLE_DEPRECATED_ENUMS
916#define LEGION_DEPRECATED_ENUM(x)
917#define LEGION_DEPRECATED_ENUM_REAL(x)
918#define LEGION_DEPRECATED_ENUM_FROM(x, y)
919#elif defined(LEGION_WARN_DEPRECATED_ENUMS)
920#if defined(__cplusplus) && __cplusplus >= 201402L
922#define LEGION_DEPRECATED_ENUM(x) \
923 x [[deprecated("use LEGION_" #x " instead")]] = LEGION_##x,
924#define LEGION_DEPRECATED_ENUM_REAL(x) \
925 x [[deprecated(#x " is no longer supported")]],
926#define LEGION_DEPRECATED_ENUM_FROM(x, y) \
927 x [[deprecated("use " #y " instead")]] = y,
930#define LEGION_DEPRECATED_ENUM(x) \
931 x __attribute__((deprecated("use LEGION_" #x " instead"))) = LEGION_##x,
932#define LEGION_DEPRECATED_ENUM_REAL(x) \
933 x __attribute__((deprecated(#x " is no longer supported")))
934#define LEGION_DEPRECATED_ENUM_FROM(x, y) \
935 x __attribute__((deprecated("use " #y " instead"))) = y,
938#define LEGION_DEPRECATED_ENUM(x) x = LEGION_##x,
939#define LEGION_DEPRECATED_ENUM_REAL(x) x,
940#define LEGION_DEPRECATED_ENUM_FROM(x, y) x = y,
950typedef enum legion_privilege_mode_t
955 LEGION_NO_ACCESS = 0x00000000,
956 LEGION_READ_PRIV = 0x00000001,
957 LEGION_READ_ONLY = 0x00000001,
958 LEGION_WRITE_PRIV = 0x00000002,
959 LEGION_REDUCE_PRIV = 0x00000004,
960 LEGION_REDUCE = 0x00000004,
961 LEGION_READ_WRITE = 0x00000007,
962 LEGION_DISCARD_MASK = 0x10000000,
963 LEGION_DISCARD_INPUT_MASK = 0x10000000,
964 LEGION_DISCARD_OUTPUT_MASK = 0x20000000,
965 LEGION_WRITE_ONLY = 0x10000002,
966 LEGION_WRITE_DISCARD = 0x10000007,
967 LEGION_READ_DISCARD = 0x20000001,
970 LEGION_DEPRECATED_ENUM(NO_ACCESS)
971 LEGION_DEPRECATED_ENUM(READ_PRIV)
972 LEGION_DEPRECATED_ENUM(READ_ONLY)
973 LEGION_DEPRECATED_ENUM(WRITE_PRIV)
974 LEGION_DEPRECATED_ENUM(REDUCE_PRIV)
975 LEGION_DEPRECATED_ENUM(REDUCE)
976 LEGION_DEPRECATED_ENUM(READ_WRITE)
977 LEGION_DEPRECATED_ENUM(DISCARD_MASK)
978 LEGION_DEPRECATED_ENUM(WRITE_ONLY)
979 LEGION_DEPRECATED_ENUM(WRITE_DISCARD)
981} legion_privilege_mode_t;
984static_assert(
sizeof(legion_privilege_mode_t) ==
sizeof(
unsigned));
987typedef enum legion_allocate_mode_t {
988 LEGION_NO_MEMORY = 0x00000000,
989 LEGION_ALLOCABLE = 0x00000001,
990 LEGION_FREEABLE = 0x00000002,
991 LEGION_MUTABLE = 0x00000003,
992 LEGION_REGION_CREATION = 0x00000004,
993 LEGION_REGION_DELETION = 0x00000008,
994 LEGION_ALL_MEMORY = 0x0000000F,
997 LEGION_DEPRECATED_ENUM(NO_MEMORY)
998 LEGION_DEPRECATED_ENUM(ALLOCABLE)
999 LEGION_DEPRECATED_ENUM(FREEABLE)
1000 LEGION_DEPRECATED_ENUM(MUTABLE)
1001 LEGION_DEPRECATED_ENUM(REGION_CREATION)
1002 LEGION_DEPRECATED_ENUM(REGION_DELETION)
1003 LEGION_DEPRECATED_ENUM(ALL_MEMORY)
1005} legion_allocate_mode_t;
1007typedef enum legion_coherence_property_t {
1008 LEGION_EXCLUSIVE = 0x00000000,
1009 LEGION_ATOMIC = 0x00000001,
1010 LEGION_SIMULTANEOUS = 0x00000002,
1011 LEGION_RELAXED = 0x00000003,
1012 LEGION_COLLECTIVE_MASK = 0x10000000,
1015 LEGION_COLLECTIVE_EXCLUSIVE =
1017 LEGION_COLLECTIVE_ATOMIC =
1019 LEGION_COLLECTIVE_SIMULTANEOUS =
1021 LEGION_COLLECTIVE_RELAXED =
1025 LEGION_DEPRECATED_ENUM(EXCLUSIVE)
1026 LEGION_DEPRECATED_ENUM(ATOMIC)
1027 LEGION_DEPRECATED_ENUM(SIMULTANEOUS)
1028 LEGION_DEPRECATED_ENUM(RELAXED)
1030} legion_coherence_property_t;
1033typedef enum legion_region_flags_t {
1034 LEGION_NO_FLAG = 0x00000000,
1035 LEGION_VERIFIED_FLAG = 0x00000001,
1036 LEGION_NO_ACCESS_FLAG = 0x00000002,
1037 LEGION_RESTRICTED_FLAG = 0x00000004,
1038 LEGION_MUST_PREMAP_FLAG = 0x00000008,
1046 LEGION_COMPLETE_PROJECTION_WRITE_FLAG = 0x00000010,
1048 LEGION_CREATED_OUTPUT_REQUIREMENT_FLAG = 0x00000020,
1050 LEGION_SUPPRESS_WARNINGS_FLAG = 0x00000040,
1053 LEGION_DEPRECATED_ENUM(NO_FLAG)
1054 LEGION_DEPRECATED_ENUM(VERIFIED_FLAG)
1055 LEGION_DEPRECATED_ENUM(NO_ACCESS_FLAG)
1056 LEGION_DEPRECATED_ENUM(RESTRICTED_FLAG)
1057 LEGION_DEPRECATED_ENUM(MUST_PREMAP_FLAG)
1058 LEGION_DEPRECATED_ENUM(COMPLETE_PROJECTION_WRITE_FLAG)
1060} legion_region_flags_t;
1062typedef enum legion_projection_type_t {
1063 LEGION_SINGULAR_PROJECTION,
1064 LEGION_PARTITION_PROJECTION,
1065 LEGION_REGION_PROJECTION,
1068 LEGION_DEPRECATED_ENUM_FROM(SINGULAR, LEGION_SINGULAR_PROJECTION)
1069 LEGION_DEPRECATED_ENUM_FROM(PART_PROJECTION, LEGION_PARTITION_PROJECTION)
1070 LEGION_DEPRECATED_ENUM_FROM(REG_PROJECTION, LEGION_REGION_PROJECTION)
1072} legion_projection_type_t;
1074typedef legion_projection_type_t legion_handle_type_t;
1076typedef enum legion_partition_kind_t {
1077 LEGION_DISJOINT_KIND,
1078 LEGION_ALIASED_KIND,
1079 LEGION_COMPUTE_KIND,
1080 LEGION_DISJOINT_COMPLETE_KIND,
1081 LEGION_ALIASED_COMPLETE_KIND,
1082 LEGION_COMPUTE_COMPLETE_KIND,
1083 LEGION_DISJOINT_INCOMPLETE_KIND,
1084 LEGION_ALIASED_INCOMPLETE_KIND,
1085 LEGION_COMPUTE_INCOMPLETE_KIND,
1088 LEGION_DEPRECATED_ENUM(DISJOINT_KIND)
1089 LEGION_DEPRECATED_ENUM(ALIASED_KIND)
1090 LEGION_DEPRECATED_ENUM(COMPUTE_KIND)
1091 LEGION_DEPRECATED_ENUM(DISJOINT_COMPLETE_KIND)
1092 LEGION_DEPRECATED_ENUM(ALIASED_COMPLETE_KIND)
1093 LEGION_DEPRECATED_ENUM(COMPUTE_COMPLETE_KIND)
1094 LEGION_DEPRECATED_ENUM(DISJOINT_INCOMPLETE_KIND)
1095 LEGION_DEPRECATED_ENUM(ALIASED_INCOMPLETE_KIND)
1096 LEGION_DEPRECATED_ENUM(COMPUTE_INCOMPLETE_KIND)
1098} legion_partition_kind_t;
1100typedef enum legion_external_resource_t {
1101 LEGION_EXTERNAL_POSIX_FILE,
1102 LEGION_EXTERNAL_HDF5_FILE,
1103 LEGION_EXTERNAL_INSTANCE,
1106 LEGION_DEPRECATED_ENUM(EXTERNAL_POSIX_FILE)
1107 LEGION_DEPRECATED_ENUM(EXTERNAL_HDF5_FILE)
1108 LEGION_DEPRECATED_ENUM(EXTERNAL_INSTANCE)
1110} legion_external_resource_t;
1112typedef enum legion_timing_measurement_t {
1113 LEGION_MEASURE_SECONDS,
1114 LEGION_MEASURE_MICRO_SECONDS,
1115 LEGION_MEASURE_NANO_SECONDS,
1118 LEGION_DEPRECATED_ENUM(MEASURE_SECONDS)
1119 LEGION_DEPRECATED_ENUM(MEASURE_MICRO_SECONDS)
1120 LEGION_DEPRECATED_ENUM(MEASURE_NANO_SECONDS)
1122} legion_timing_measurement_t;
1124typedef enum legion_dependence_type_t {
1125 LEGION_NO_DEPENDENCE = 0,
1126 LEGION_TRUE_DEPENDENCE = 1,
1127 LEGION_ANTI_DEPENDENCE = 2,
1128 LEGION_ATOMIC_DEPENDENCE = 3,
1129 LEGION_SIMULTANEOUS_DEPENDENCE = 4,
1132 LEGION_DEPRECATED_ENUM(NO_DEPENDENCE)
1133 LEGION_DEPRECATED_ENUM(TRUE_DEPENDENCE)
1134 LEGION_DEPRECATED_ENUM(ANTI_DEPENDENCE)
1135 LEGION_DEPRECATED_ENUM(ATOMIC_DEPENDENCE)
1136 LEGION_DEPRECATED_ENUM(SIMULTANEOUS_DEPENDENCE)
1138} legion_dependence_type_t;
1141 LEGION_NAME_SEMANTIC_TAG = 0,
1142 LEGION_SOURCE_FILE_TAG = 1,
1143 LEGION_SOURCE_LINE_TAG = 2,
1144 LEGION_FIRST_AVAILABLE_SEMANTIC_TAG = 3,
1147 LEGION_DEPRECATED_ENUM(NAME_SEMANTIC_TAG)
1148 LEGION_DEPRECATED_ENUM(SOURCE_FILE_TAG)
1149 LEGION_DEPRECATED_ENUM(SOURCE_LINE_TAG)
1150 LEGION_DEPRECATED_ENUM(FIRST_AVAILABLE_SEMANTIC_TAG)
1154typedef enum legion_mappable_type_id_t {
1155 LEGION_TASK_MAPPABLE = 0,
1156 LEGION_COPY_MAPPABLE = 1,
1157 LEGION_INLINE_MAPPABLE = 2,
1158 LEGION_ACQUIRE_MAPPABLE = 3,
1159 LEGION_RELEASE_MAPPABLE = 4,
1160 LEGION_CLOSE_MAPPABLE = 5,
1161 LEGION_FILL_MAPPABLE = 6,
1162 LEGION_PARTITION_MAPPABLE = 7,
1163 LEGION_MUST_EPOCH_MAPPABLE = 9,
1166 LEGION_DEPRECATED_ENUM(TASK_MAPPABLE)
1167 LEGION_DEPRECATED_ENUM(COPY_MAPPABLE)
1168 LEGION_DEPRECATED_ENUM(INLINE_MAPPABLE)
1169 LEGION_DEPRECATED_ENUM(ACQUIRE_MAPPABLE)
1170 LEGION_DEPRECATED_ENUM(RELEASE_MAPPABLE)
1171 LEGION_DEPRECATED_ENUM(CLOSE_MAPPABLE)
1172 LEGION_DEPRECATED_ENUM(FILL_MAPPABLE)
1173 LEGION_DEPRECATED_ENUM(PARTITION_MAPPABLE)
1174 LEGION_DEPRECATED_ENUM(MUST_EPOCH_MAPPABLE)
1176} legion_mappable_type_id;
1178typedef enum legion_type_id_t {
1179 LEGION_TYPE_BOOL = 0,
1180 LEGION_TYPE_INT8 = 1,
1181 LEGION_TYPE_INT16 = 2,
1182 LEGION_TYPE_INT32 = 3,
1183 LEGION_TYPE_INT64 = 4,
1184 LEGION_TYPE_UINT8 = 5,
1185 LEGION_TYPE_UINT16 = 6,
1186 LEGION_TYPE_UINT32 = 7,
1187 LEGION_TYPE_UINT64 = 8,
1188 LEGION_TYPE_FLOAT16 = 9,
1189 LEGION_TYPE_FLOAT32 = 10,
1190 LEGION_TYPE_FLOAT64 = 11,
1191 LEGION_TYPE_COMPLEX32 = 12,
1192 LEGION_TYPE_COMPLEX64 = 13,
1193 LEGION_TYPE_COMPLEX128 = 14,
1194 LEGION_TYPE_TOTAL = 15,
1198#define LEGION_REDOP_KIND_SUM_VALUE 0
1199#define LEGION_REDOP_KIND_DIFF_VALUE 1
1200#define LEGION_REDOP_KIND_PROD_VALUE 2
1201#define LEGION_REDOP_KIND_DIV_VALUE 3
1202#define LEGION_REDOP_KIND_MAX_VALUE 4
1203#define LEGION_REDOP_KIND_MIN_VALUE 5
1204#define LEGION_REDOP_KIND_OR_VALUE 6
1205#define LEGION_REDOP_KIND_AND_VALUE 7
1206#define LEGION_REDOP_KIND_XOR_VALUE 8
1207#define LEGION_REDOP_KIND_TOTAL_VALUE 9
1210typedef enum legion_redop_kind_t {
1211 LEGION_REDOP_KIND_SUM = LEGION_REDOP_KIND_SUM_VALUE,
1212 LEGION_REDOP_KIND_DIFF = LEGION_REDOP_KIND_DIFF_VALUE,
1213 LEGION_REDOP_KIND_PROD = LEGION_REDOP_KIND_PROD_VALUE,
1214 LEGION_REDOP_KIND_DIV = LEGION_REDOP_KIND_DIV_VALUE,
1215 LEGION_REDOP_KIND_MAX = LEGION_REDOP_KIND_MAX_VALUE,
1216 LEGION_REDOP_KIND_MIN = LEGION_REDOP_KIND_MIN_VALUE,
1217 LEGION_REDOP_KIND_OR = LEGION_REDOP_KIND_OR_VALUE,
1218 LEGION_REDOP_KIND_AND = LEGION_REDOP_KIND_AND_VALUE,
1219 LEGION_REDOP_KIND_XOR = LEGION_REDOP_KIND_XOR_VALUE,
1220 LEGION_REDOP_KIND_TOTAL = LEGION_REDOP_KIND_TOTAL_VALUE,
1221} legion_redop_kind_t;
1223#ifndef LEGION_USE_PYTHON_CFFI
1225#define LEGION_REDOP_VALUE(kind, type) \
1226 (LEGION_REDOP_BASE + \
1227 ((int)LEGION_REDOP_KIND_##kind * (int)LEGION_TYPE_TOTAL) + \
1228 (int)LEGION_TYPE_##type)
1233#define MULTIPLY0(x) 0
1234#define MULTIPLY1(x) (x)
1235#define MULTIPLY2(x) (x) + (x)
1236#define MULTIPLY3(x) (x) + MULTIPLY2(x)
1237#define MULTIPLY4(x) (x) + MULTIPLY3(x)
1238#define MULTIPLY5(x) (x) + MULTIPLY4(x)
1239#define MULTIPLY6(x) (x) + MULTIPLY5(x)
1240#define MULTIPLY7(x) (x) + MULTIPLY6(x)
1241#define MULTIPLY8(x) (x) + MULTIPLY7(x)
1242#define MULTIPLY9(x) (x) + MULTIPLY8(x)
1244#define MULTIPLY_(x, y) MULTIPLY##x(y)
1245#define MULTIPLY(x, y) MULTIPLY_(x, y)
1247#define LEGION_REDOP_VALUE(kind, type) \
1248 LEGION_REDOP_BASE + \
1249 MULTIPLY(LEGION_REDOP_KIND_##kind##_VALUE, LEGION_TYPE_TOTAL) + \
1252typedef enum legion_builtin_redop_t {
1254 LEGION_REDOP_BASE = LEGION_MAX_APPLICATION_REDOP_ID + 1,
1258 LEGION_REDOP_OR_BOOL = LEGION_REDOP_VALUE(SUM, BOOL),
1259 LEGION_REDOP_SUM_INT8 = LEGION_REDOP_VALUE(SUM, INT8),
1260 LEGION_REDOP_SUM_INT16 = LEGION_REDOP_VALUE(SUM, INT16),
1261 LEGION_REDOP_SUM_INT32 = LEGION_REDOP_VALUE(SUM, INT32),
1262 LEGION_REDOP_SUM_INT64 = LEGION_REDOP_VALUE(SUM, INT64),
1263 LEGION_REDOP_SUM_UINT8 = LEGION_REDOP_VALUE(SUM, UINT8),
1264 LEGION_REDOP_SUM_UINT16 = LEGION_REDOP_VALUE(SUM, UINT16),
1265 LEGION_REDOP_SUM_UINT32 = LEGION_REDOP_VALUE(SUM, UINT32),
1266 LEGION_REDOP_SUM_UINT64 = LEGION_REDOP_VALUE(SUM, UINT64),
1267#ifdef LEGION_REDOP_HALF
1268 LEGION_REDOP_SUM_FLOAT16 = LEGION_REDOP_VALUE(SUM, FLOAT16),
1270 LEGION_REDOP_SUM_FLOAT32 = LEGION_REDOP_VALUE(SUM, FLOAT32),
1271 LEGION_REDOP_SUM_FLOAT64 = LEGION_REDOP_VALUE(SUM, FLOAT64),
1272#ifdef LEGION_REDOP_COMPLEX
1273#ifdef LEGION_REDOP_HALF
1274 LEGION_REDOP_SUM_COMPLEX32 = LEGION_REDOP_VALUE(SUM, COMPLEX32),
1276 LEGION_REDOP_SUM_COMPLEX64 = LEGION_REDOP_VALUE(SUM, COMPLEX64),
1277 LEGION_REDOP_SUM_COMPLEX128 = LEGION_REDOP_VALUE(SUM, COMPLEX128),
1283 LEGION_REDOP_DIFF_INT8 = LEGION_REDOP_VALUE(DIFF, INT8),
1284 LEGION_REDOP_DIFF_INT16 = LEGION_REDOP_VALUE(DIFF, INT16),
1285 LEGION_REDOP_DIFF_INT32 = LEGION_REDOP_VALUE(DIFF, INT32),
1286 LEGION_REDOP_DIFF_INT64 = LEGION_REDOP_VALUE(DIFF, INT64),
1287 LEGION_REDOP_DIFF_UINT8 = LEGION_REDOP_VALUE(DIFF, UINT8),
1288 LEGION_REDOP_DIFF_UINT16 = LEGION_REDOP_VALUE(DIFF, UINT16),
1289 LEGION_REDOP_DIFF_UINT32 = LEGION_REDOP_VALUE(DIFF, UINT32),
1290 LEGION_REDOP_DIFF_UINT64 = LEGION_REDOP_VALUE(DIFF, UINT64),
1291#ifdef LEGION_REDOP_HALF
1292 LEGION_REDOP_DIFF_FLOAT16 = LEGION_REDOP_VALUE(DIFF, FLOAT16),
1294 LEGION_REDOP_DIFF_FLOAT32 = LEGION_REDOP_VALUE(DIFF, FLOAT32),
1295 LEGION_REDOP_DIFF_FLOAT64 = LEGION_REDOP_VALUE(DIFF, FLOAT64),
1296#ifdef LEGION_REDOP_COMPLEX
1297#ifdef LEGION_REDOP_HALF
1298 LEGION_REDOP_DIFF_COMPLEX32 = LEGION_REDOP_VALUE(DIFF, COMPLEX32),
1300 LEGION_REDOP_DIFF_COMPLEX64 = LEGION_REDOP_VALUE(DIFF, COMPLEX64),
1306 LEGION_REDOP_AND_BOOL = LEGION_REDOP_VALUE(PROD, BOOL),
1307 LEGION_REDOP_PROD_INT8 = LEGION_REDOP_VALUE(PROD, INT8),
1308 LEGION_REDOP_PROD_INT16 = LEGION_REDOP_VALUE(PROD, INT16),
1309 LEGION_REDOP_PROD_INT32 = LEGION_REDOP_VALUE(PROD, INT32),
1310 LEGION_REDOP_PROD_INT64 = LEGION_REDOP_VALUE(PROD, INT64),
1311 LEGION_REDOP_PROD_UINT8 = LEGION_REDOP_VALUE(PROD, UINT8),
1312 LEGION_REDOP_PROD_UINT16 = LEGION_REDOP_VALUE(PROD, UINT16),
1313 LEGION_REDOP_PROD_UINT32 = LEGION_REDOP_VALUE(PROD, UINT32),
1314 LEGION_REDOP_PROD_UINT64 = LEGION_REDOP_VALUE(PROD, UINT64),
1315#ifdef LEGION_REDOP_HALF
1316 LEGION_REDOP_PROD_FLOAT16 = LEGION_REDOP_VALUE(PROD, FLOAT16),
1318 LEGION_REDOP_PROD_FLOAT32 = LEGION_REDOP_VALUE(PROD, FLOAT32),
1319 LEGION_REDOP_PROD_FLOAT64 = LEGION_REDOP_VALUE(PROD, FLOAT64),
1320#ifdef LEGION_REDOP_COMPLEX
1321#ifdef LEGION_REDOP_HALF
1322 LEGION_REDOP_PROD_COMPLEX32 = LEGION_REDOP_VALUE(PROD, COMPLEX32),
1324 LEGION_REDOP_PROD_COMPLEX64 = LEGION_REDOP_VALUE(PROD, COMPLEX64),
1331 LEGION_REDOP_DIV_INT8 = LEGION_REDOP_VALUE(DIV, INT8),
1332 LEGION_REDOP_DIV_INT16 = LEGION_REDOP_VALUE(DIV, INT16),
1333 LEGION_REDOP_DIV_INT32 = LEGION_REDOP_VALUE(DIV, INT32),
1334 LEGION_REDOP_DIV_INT64 = LEGION_REDOP_VALUE(DIV, INT64),
1335 LEGION_REDOP_DIV_UINT8 = LEGION_REDOP_VALUE(DIV, UINT8),
1336 LEGION_REDOP_DIV_UINT16 = LEGION_REDOP_VALUE(DIV, UINT16),
1337 LEGION_REDOP_DIV_UINT32 = LEGION_REDOP_VALUE(DIV, UINT32),
1338 LEGION_REDOP_DIV_UINT64 = LEGION_REDOP_VALUE(DIV, UINT64),
1339#ifdef LEGION_REDOP_HALF
1340 LEGION_REDOP_DIV_FLOAT16 = LEGION_REDOP_VALUE(DIV, FLOAT16),
1342 LEGION_REDOP_DIV_FLOAT32 = LEGION_REDOP_VALUE(DIV, FLOAT32),
1343 LEGION_REDOP_DIV_FLOAT64 = LEGION_REDOP_VALUE(DIV, FLOAT64),
1344#ifdef LEGION_REDOP_COMPLEX
1345#ifdef LEGION_REDOP_HALF
1346 LEGION_REDOP_DIV_COMPLEX32 = LEGION_REDOP_VALUE(DIV, COMPLEX32),
1348 LEGION_REDOP_DIV_COMPLEX64 = LEGION_REDOP_VALUE(DIV, COMPLEX64),
1354 LEGION_REDOP_MAX_BOOL = LEGION_REDOP_VALUE(MAX, BOOL),
1355 LEGION_REDOP_MAX_INT8 = LEGION_REDOP_VALUE(MAX, INT8),
1356 LEGION_REDOP_MAX_INT16 = LEGION_REDOP_VALUE(MAX, INT16),
1357 LEGION_REDOP_MAX_INT32 = LEGION_REDOP_VALUE(MAX, INT32),
1358 LEGION_REDOP_MAX_INT64 = LEGION_REDOP_VALUE(MAX, INT64),
1359 LEGION_REDOP_MAX_UINT8 = LEGION_REDOP_VALUE(MAX, UINT8),
1360 LEGION_REDOP_MAX_UINT16 = LEGION_REDOP_VALUE(MAX, UINT16),
1361 LEGION_REDOP_MAX_UINT32 = LEGION_REDOP_VALUE(MAX, UINT32),
1362 LEGION_REDOP_MAX_UINT64 = LEGION_REDOP_VALUE(MAX, UINT64),
1363#ifdef LEGION_REDOP_HALF
1364 LEGION_REDOP_MAX_FLOAT16 = LEGION_REDOP_VALUE(MAX, FLOAT16),
1366 LEGION_REDOP_MAX_FLOAT32 = LEGION_REDOP_VALUE(MAX, FLOAT32),
1367 LEGION_REDOP_MAX_FLOAT64 = LEGION_REDOP_VALUE(MAX, FLOAT64),
1368#ifdef LEGION_REDOP_COMPLEX
1369#ifdef LEGION_REDOP_HALF
1370 LEGION_REDOP_MAX_COMPLEX32 = LEGION_REDOP_VALUE(MAX, COMPLEX32),
1372 LEGION_REDOP_MAX_COMPLEX64 = LEGION_REDOP_VALUE(MAX, COMPLEX64),
1378 LEGION_REDOP_MIN_BOOL = LEGION_REDOP_VALUE(MIN, BOOL),
1379 LEGION_REDOP_MIN_INT8 = LEGION_REDOP_VALUE(MIN, INT8),
1380 LEGION_REDOP_MIN_INT16 = LEGION_REDOP_VALUE(MIN, INT16),
1381 LEGION_REDOP_MIN_INT32 = LEGION_REDOP_VALUE(MIN, INT32),
1382 LEGION_REDOP_MIN_INT64 = LEGION_REDOP_VALUE(MIN, INT64),
1383 LEGION_REDOP_MIN_UINT8 = LEGION_REDOP_VALUE(MIN, UINT8),
1384 LEGION_REDOP_MIN_UINT16 = LEGION_REDOP_VALUE(MIN, UINT16),
1385 LEGION_REDOP_MIN_UINT32 = LEGION_REDOP_VALUE(MIN, UINT32),
1386 LEGION_REDOP_MIN_UINT64 = LEGION_REDOP_VALUE(MIN, UINT64),
1387#ifdef LEGION_REDOP_HALF
1388 LEGION_REDOP_MIN_FLOAT16 = LEGION_REDOP_VALUE(MIN, FLOAT16),
1390 LEGION_REDOP_MIN_FLOAT32 = LEGION_REDOP_VALUE(MIN, FLOAT32),
1391 LEGION_REDOP_MIN_FLOAT64 = LEGION_REDOP_VALUE(MIN, FLOAT64),
1392#ifdef LEGION_REDOP_COMPLEX
1393#ifdef LEGION_REDOP_HALF
1394 LEGION_REDOP_MIN_COMPLEX32 = LEGION_REDOP_VALUE(MIN, COMPLEX32),
1396 LEGION_REDOP_MIN_COMPLEX64 = LEGION_REDOP_VALUE(MIN, COMPLEX64),
1402 LEGION_REDOP_OR_INT8 = LEGION_REDOP_VALUE(OR, INT8),
1403 LEGION_REDOP_OR_INT16 = LEGION_REDOP_VALUE(OR, INT16),
1404 LEGION_REDOP_OR_INT32 = LEGION_REDOP_VALUE(OR, INT32),
1405 LEGION_REDOP_OR_INT64 = LEGION_REDOP_VALUE(OR, INT64),
1406 LEGION_REDOP_OR_UINT8 = LEGION_REDOP_VALUE(OR, UINT8),
1407 LEGION_REDOP_OR_UINT16 = LEGION_REDOP_VALUE(OR, UINT16),
1408 LEGION_REDOP_OR_UINT32 = LEGION_REDOP_VALUE(OR, UINT32),
1409 LEGION_REDOP_OR_UINT64 = LEGION_REDOP_VALUE(OR, UINT64),
1414 LEGION_REDOP_AND_INT8 = LEGION_REDOP_VALUE(AND, INT8),
1415 LEGION_REDOP_AND_INT16 = LEGION_REDOP_VALUE(AND, INT16),
1416 LEGION_REDOP_AND_INT32 = LEGION_REDOP_VALUE(AND, INT32),
1417 LEGION_REDOP_AND_INT64 = LEGION_REDOP_VALUE(AND, INT64),
1418 LEGION_REDOP_AND_UINT8 = LEGION_REDOP_VALUE(AND, UINT8),
1419 LEGION_REDOP_AND_UINT16 = LEGION_REDOP_VALUE(AND, UINT16),
1420 LEGION_REDOP_AND_UINT32 = LEGION_REDOP_VALUE(AND, UINT32),
1421 LEGION_REDOP_AND_UINT64 = LEGION_REDOP_VALUE(AND, UINT64),
1426 LEGION_REDOP_XOR_BOOL = LEGION_REDOP_VALUE(XOR, BOOL),
1427 LEGION_REDOP_XOR_INT8 = LEGION_REDOP_VALUE(XOR, INT8),
1428 LEGION_REDOP_XOR_INT16 = LEGION_REDOP_VALUE(XOR, INT16),
1429 LEGION_REDOP_XOR_INT32 = LEGION_REDOP_VALUE(XOR, INT32),
1430 LEGION_REDOP_XOR_INT64 = LEGION_REDOP_VALUE(XOR, INT64),
1431 LEGION_REDOP_XOR_UINT8 = LEGION_REDOP_VALUE(XOR, UINT8),
1432 LEGION_REDOP_XOR_UINT16 = LEGION_REDOP_VALUE(XOR, UINT16),
1433 LEGION_REDOP_XOR_UINT32 = LEGION_REDOP_VALUE(XOR, UINT32),
1434 LEGION_REDOP_XOR_UINT64 = LEGION_REDOP_VALUE(XOR, UINT64),
1437} legion_builtin_redop_t;
1439#undef LEGION_REDOP_KIND_SUM_VALUE
1440#undef LEGION_REDOP_KIND_DIFF_VALUE
1441#undef LEGION_REDOP_KIND_PROD_VALUE
1442#undef LEGION_REDOP_KIND_DIV_VALUE
1443#undef LEGION_REDOP_KIND_MAX_VALUE
1444#undef LEGION_REDOP_KIND_MIN_VALUE
1445#undef LEGION_REDOP_KIND_TOTAL_VALUE
1447#ifdef LEGION_USE_PYTHON_CFFI
1462typedef enum legion_execution_constraint_t {
1463 LEGION_ISA_CONSTRAINT = 0,
1464 LEGION_PROCESSOR_CONSTRAINT = 1,
1465 LEGION_RESOURCE_CONSTRAINT = 2,
1466 LEGION_LAUNCH_CONSTRAINT = 3,
1467 LEGION_COLOCATION_CONSTRAINT = 4,
1470 LEGION_DEPRECATED_ENUM(ISA_CONSTRAINT)
1471 LEGION_DEPRECATED_ENUM(PROCESSOR_CONSTRAINT)
1472 LEGION_DEPRECATED_ENUM(RESOURCE_CONSTRAINT)
1473 LEGION_DEPRECATED_ENUM(LAUNCH_CONSTRAINT)
1474 LEGION_DEPRECATED_ENUM(COLOCATION_CONSTRAINT)
1476} legion_execution_constraint_t;
1478typedef enum legion_layout_constraint_t {
1479 LEGION_SPECIALIZED_CONSTRAINT =
1481 LEGION_MEMORY_CONSTRAINT = 1,
1482 LEGION_FIELD_CONSTRAINT = 2,
1483 LEGION_ORDERING_CONSTRAINT = 3,
1484 LEGION_TILING_CONSTRAINT = 4,
1485 LEGION_DIMENSION_CONSTRAINT = 5,
1486 LEGION_ALIGNMENT_CONSTRAINT = 6,
1487 LEGION_OFFSET_CONSTRAINT = 7,
1488 LEGION_POINTER_CONSTRAINT = 8,
1489 LEGION_PADDING_CONSTRAINT = 9,
1492 LEGION_DEPRECATED_ENUM(SPECIALIZED_CONSTRAINT)
1493 LEGION_DEPRECATED_ENUM(MEMORY_CONSTRAINT)
1494 LEGION_DEPRECATED_ENUM(FIELD_CONSTRAINT)
1495 LEGION_DEPRECATED_ENUM(ORDERING_CONSTRAINT)
1496 LEGION_DEPRECATED_ENUM(DIMENSION_CONSTRAINT)
1497 LEGION_DEPRECATED_ENUM(ALIGNMENT_CONSTRAINT)
1498 LEGION_DEPRECATED_ENUM(OFFSET_CONSTRAINT)
1499 LEGION_DEPRECATED_ENUM(POINTER_CONSTRAINT)
1501} legion_layout_constraint_t;
1503typedef enum legion_equality_kind_t {
1512 LEGION_DEPRECATED_ENUM(LT_EK)
1513 LEGION_DEPRECATED_ENUM(LE_EK)
1514 LEGION_DEPRECATED_ENUM(GT_EK)
1515 LEGION_DEPRECATED_ENUM(GE_EK)
1516 LEGION_DEPRECATED_ENUM(EQ_EK)
1517 LEGION_DEPRECATED_ENUM(NE_EK)
1519} legion_equality_kind_t;
1521typedef enum legion_dimension_kind_t {
1534 LEGION_DIM_0 = LEGION_DIM_X,
1535 LEGION_DIM_1 = LEGION_DIM_Y,
1536 LEGION_DIM_2 = LEGION_DIM_Z,
1537 LEGION_DIM_3 = LEGION_DIM_W,
1538 LEGION_DIM_4 = LEGION_DIM_V,
1539 LEGION_DIM_5 = LEGION_DIM_U,
1540 LEGION_DIM_6 = LEGION_DIM_T,
1541 LEGION_DIM_7 = LEGION_DIM_S,
1542 LEGION_DIM_8 = LEGION_DIM_R,
1545 LEGION_DEPRECATED_ENUM(DIM_X)
1546 LEGION_DEPRECATED_ENUM(DIM_Y)
1547 LEGION_DEPRECATED_ENUM(DIM_Z)
1548 LEGION_DEPRECATED_ENUM(DIM_W)
1549 LEGION_DEPRECATED_ENUM(DIM_V)
1550 LEGION_DEPRECATED_ENUM(DIM_U)
1551 LEGION_DEPRECATED_ENUM(DIM_T)
1552 LEGION_DEPRECATED_ENUM(DIM_S)
1553 LEGION_DEPRECATED_ENUM(DIM_R)
1554 LEGION_DEPRECATED_ENUM(DIM_F)
1556} legion_dimension_kind_t;
1559typedef enum legion_isa_kind_t {
1561 LEGION_X86_ISA = 0x00000001,
1562 LEGION_ARM_ISA = 0x00000002,
1563 LEGION_PPC_ISA = 0x00000004,
1564 LEGION_PTX_ISA = 0x00000008,
1565 LEGION_CUDA_ISA = 0x00000010,
1566 LEGION_LUA_ISA = 0x00000020,
1567 LEGION_TERRA_ISA = 0x00000040,
1568 LEGION_LLVM_ISA = 0x00000080,
1569 LEGION_GL_ISA = 0x00000100,
1571 LEGION_SSE_ISA = 0x00000200,
1572 LEGION_SSE2_ISA = 0x00000400,
1573 LEGION_SSE3_ISA = 0x00000800,
1574 LEGION_SSE4_ISA = 0x00001000,
1575 LEGION_AVX_ISA = 0x00002000,
1576 LEGION_AVX2_ISA = 0x00004000,
1577 LEGION_FMA_ISA = 0x00008000,
1579 LEGION_VSX_ISA = 0x00010000,
1581 LEGION_SM_10_ISA = 0x00020000,
1582 LEGION_SM_20_ISA = 0x00040000,
1583 LEGION_SM_30_ISA = 0x00080000,
1584 LEGION_SM_35_ISA = 0x00100000,
1586 LEGION_NEON_ISA = 0x00200000,
1589 LEGION_DEPRECATED_ENUM(X86_ISA)
1590 LEGION_DEPRECATED_ENUM(ARM_ISA)
1591 LEGION_DEPRECATED_ENUM(PPC_ISA)
1592 LEGION_DEPRECATED_ENUM(PTX_ISA)
1593 LEGION_DEPRECATED_ENUM(CUDA_ISA)
1594 LEGION_DEPRECATED_ENUM(LUA_ISA)
1595 LEGION_DEPRECATED_ENUM(TERRA_ISA)
1596 LEGION_DEPRECATED_ENUM(LLVM_ISA)
1597 LEGION_DEPRECATED_ENUM(GL_ISA)
1598 LEGION_DEPRECATED_ENUM(SSE_ISA)
1599 LEGION_DEPRECATED_ENUM(SSE2_ISA)
1600 LEGION_DEPRECATED_ENUM(SSE3_ISA)
1601 LEGION_DEPRECATED_ENUM(SSE4_ISA)
1602 LEGION_DEPRECATED_ENUM(AVX_ISA)
1603 LEGION_DEPRECATED_ENUM(AVX2_ISA)
1604 LEGION_DEPRECATED_ENUM(FMA_ISA)
1605 LEGION_DEPRECATED_ENUM(VSX_ISA)
1606 LEGION_DEPRECATED_ENUM(SM_10_ISA)
1607 LEGION_DEPRECATED_ENUM(SM_20_ISA)
1608 LEGION_DEPRECATED_ENUM(SM_30_ISA)
1609 LEGION_DEPRECATED_ENUM(SM_35_ISA)
1610 LEGION_DEPRECATED_ENUM(NEON_ISA)
1614typedef enum legion_resource_constraint_t {
1615 LEGION_L1_CACHE_SIZE = 0,
1616 LEGION_L2_CACHE_SIZE = 1,
1617 LEGION_L3_CACHE_SIZE = 2,
1618 LEGION_L1_CACHE_ASSOCIATIVITY = 3,
1619 LEGION_L2_CACHE_ASSOCIATIVITY = 4,
1620 LEGION_L3_CACHE_ASSOCIATIVITY = 5,
1621 LEGION_REGISTER_FILE_SIZE = 6,
1622 LEGION_SHARED_MEMORY_SIZE = 7,
1623 LEGION_TEXTURE_CACHE_SIZE = 8,
1624 LEGION_CONSTANT_CACHE_SIZE = 9,
1625 LEGION_NAMED_BARRIERS = 10,
1626 LEGION_SM_COUNT = 11,
1627 LEGION_MAX_OCCUPANCY = 12,
1630 LEGION_DEPRECATED_ENUM(L1_CACHE_SIZE)
1631 LEGION_DEPRECATED_ENUM(L2_CACHE_SIZE)
1632 LEGION_DEPRECATED_ENUM(L3_CACHE_SIZE)
1633 LEGION_DEPRECATED_ENUM(L1_CACHE_ASSOCIATIVITY)
1634 LEGION_DEPRECATED_ENUM(L2_CACHE_ASSOCIATIVITY)
1635 LEGION_DEPRECATED_ENUM(L3_CACHE_ASSOCIATIVITY)
1636 LEGION_DEPRECATED_ENUM(REGISTER_FILE_SIZE)
1637 LEGION_DEPRECATED_ENUM(SHARED_MEMORY_SIZE)
1638 LEGION_DEPRECATED_ENUM(TEXTURE_CACHE_SIZE)
1639 LEGION_DEPRECATED_ENUM(CONSTANT_CACHE_SIZE)
1640 LEGION_DEPRECATED_ENUM(NAMED_BARRIERS)
1641 LEGION_DEPRECATED_ENUM(SM_COUNT)
1642 LEGION_DEPRECATED_ENUM(MAX_OCCUPANCY)
1644} legion_resource_constraint_t;
1646typedef enum legion_launch_constraint_t {
1647 LEGION_CTA_SHAPE = 0,
1648 LEGION_GRID_SHAPE = 1,
1649 LEGION_DYNAMIC_SHARED_MEMORY = 2,
1650 LEGION_REGISTERS_PER_THREAD = 3,
1651 LEGION_CTAS_PER_SM = 4,
1652 LEGION_NAMED_BARRIERS_PER_CTA = 5,
1653} legion_launch_constraint_t;
1655typedef enum legion_specialized_constraint_t {
1656 LEGION_NO_SPECIALIZE = 0,
1657 LEGION_AFFINE_SPECIALIZE = 1,
1658 LEGION_COMPACT_SPECIALIZE = 2,
1659 LEGION_AFFINE_REDUCTION_SPECIALIZE = 3,
1660 LEGION_COMPACT_REDUCTION_SPECIALIZE = 4,
1661 LEGION_VIRTUAL_SPECIALIZE = 5,
1663 LEGION_GENERIC_FILE_SPECIALIZE,
1664 LEGION_HDF5_FILE_SPECIALIZE,
1667 LEGION_DEPRECATED_ENUM(NO_SPECIALIZE)
1668 LEGION_DEPRECATED_ENUM(AFFINE_SPECIALIZE)
1669 LEGION_DEPRECATED_ENUM_FROM(NORMAL_SPECIALIZE, LEGION_AFFINE_SPECIALIZE)
1670 LEGION_DEPRECATED_ENUM(COMPACT_SPECIALIZE)
1671 LEGION_DEPRECATED_ENUM(AFFINE_REDUCTION_SPECIALIZE)
1672 LEGION_DEPRECATED_ENUM_FROM(REDUCTION_FOLD_SPECIALIZE, LEGION_AFFINE_REDUCTION_SPECIALIZE)
1673 LEGION_DEPRECATED_ENUM(COMPACT_REDUCTION_SPECIALIZE)
1674 LEGION_DEPRECATED_ENUM_FROM(REDUCTION_LIST_SPECIALIZE, LEGION_COMPACT_REDUCTION_SPECIALIZE)
1675 LEGION_DEPRECATED_ENUM(VIRTUAL_SPECIALIZE)
1676 LEGION_DEPRECATED_ENUM(GENERIC_FILE_SPECIALIZE)
1677 LEGION_DEPRECATED_ENUM(HDF5_FILE_SPECIALIZE)
1679} legion_specialized_constraint_t;
1683#define LEGION_MAX_POINT_DIM (LEGION_MAX_DIM)
1684#define LEGION_MAX_RECT_DIM (LEGION_MAX_DIM)
1685typedef enum legion_domain_max_rect_dim_t {
1688 LEGION_DEPRECATED_ENUM(MAX_POINT_DIM)
1689 LEGION_DEPRECATED_ENUM(MAX_RECT_DIM)
1691} legion_domain_max_rect_dim_t;
1693#undef LEGION_DEPRECATED_ENUM
1694#undef LEGION_DEPRECATED_ENUM_FROM
1696typedef enum legion_unbound_pool_scope_t {
1698 LEGION_BOUNDED_POOL,
1700 LEGION_STRICT_UNBOUNDED_POOL,
1703 LEGION_INDEX_TASK_UNBOUNDED_POOL,
1705 LEGION_PERMISSIVE_UNBOUNDED_POOL,
1706} legion_unbounded_pool_scope_t;
1712typedef realm_processor_kind_t legion_processor_kind_t;
1713typedef realm_memory_kind_t legion_memory_kind_t;
1714typedef realm_reduction_op_id_t legion_reduction_op_id_t;
1715typedef realm_custom_serdez_id_t legion_custom_serdez_id_t;
1716typedef realm_address_space_t legion_address_space_t;
1717typedef realm_file_mode_t legion_file_mode_t;
1718typedef realm_id_t legion_proc_id_t;
1719typedef realm_id_t legion_memory_id_t;
1720typedef int legion_task_priority_t;
1721typedef int legion_garbage_collection_priority_t;
1722typedef long long legion_coord_t;
1723typedef unsigned int legion_color_t;
1724typedef unsigned int legion_field_id_t;
1725typedef unsigned int legion_trace_id_t;
1726typedef unsigned int legion_mapper_id_t;
1727typedef unsigned int legion_context_id_t;
1728typedef unsigned int legion_instance_id_t;
1729typedef unsigned int legion_type_tag_t;
1730typedef unsigned int legion_index_tree_id_t;
1731typedef unsigned int legion_generation_id_t;
1732typedef unsigned int legion_type_handle;
1733typedef unsigned int legion_projection_id_t;
1734typedef unsigned int legion_sharding_id_t;
1735typedef unsigned int legion_concurrent_id_t;
1736typedef unsigned int legion_exception_handler_id_t;
1737typedef unsigned int legion_tunable_id_t;
1738typedef unsigned int legion_local_variable_id_t;
1739typedef unsigned int legion_shard_id_t;
1740typedef unsigned int legion_variant_id_t;
1741typedef unsigned long long legion_distributed_id_t;
1742typedef unsigned long legion_mapping_tag_id_t;
1743typedef unsigned long legion_code_descriptor_id_t;
1744typedef unsigned long legion_semantic_tag_t;
1745typedef unsigned long long legion_unique_id_t;
1746typedef unsigned long long legion_version_id_t;
1747typedef unsigned long long legion_projection_epoch_id_t;
1748typedef unsigned long long legion_provenance_id_t;
1749typedef realm_task_func_id_t legion_task_id_t;
1750typedef unsigned long legion_layout_constraint_id_t;
1751typedef long long legion_internal_color_t;
1752typedef legion_distributed_id_t legion_region_tree_id_t;