Legion Runtime
Loading...
Searching...
No Matches
legion_config.h
Go to the documentation of this file.
1/* Copyright 2024 Stanford University, NVIDIA Corporation
2 *
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16
17#ifndef __LEGION_CONFIG_H__
18#define __LEGION_CONFIG_H__
19
20// legion_defines.h is auto-generated by both the make and cmake builds
21#include "legion_defines.h"
22
23#ifndef LEGION_USE_PYTHON_CFFI
24// for UINT_MAX, INT_MAX, INT_MIN
25#include <limits.h>
26#endif // LEGION_USE_PYTHON_CFFI
27
28// Define a prefix for annotating functions for CUDA compilation
29#if defined (__CUDACC__) || defined (__HIPCC__)
30#define __CUDA_HD__ __host__ __device__
31#else
32#define __CUDA_HD__
33#endif
34
39// ******************** IMPORTANT **************************
40//
41// This file is PURE C, **NOT** C++. Keep any C++-isms in
42// legion_types.h, or elsewhere.
43//
44// ******************** IMPORTANT **************************
45
46#include "realm/realm_c.h"
47
48//==========================================================================
49// Constants
50//==========================================================================
51
52#ifndef LEGION_AUTO_GENERATE_ID
53#define LEGION_AUTO_GENERATE_ID UINT_MAX
54#else
55#error "legion.h requires the ability to define the macro 'LEGION_AUTO_GENERATE_ID' but it has already been defined"
56#endif
57// This is for backwards compatibility
58// Try to be nice in case someone else defined this
59#ifndef LEGION_DISABLE_DEPRECATED_ENUMS
60#ifndef AUTO_GENERATE_ID
61#define AUTO_GENERATE_ID LEGION_AUTO_GENERATE_ID
62#endif
63#endif
64
65#ifndef LEGION_GC_MIN_PRIORITY
66#define LEGION_GC_MIN_PRIORITY INT_MIN
67#else
68#error "legion.h requires the ability to define the macro 'LEGION_GC_MIN_PRIORITY' but it has already been defined"
69#endif
70// This is for backwards compatibility
71// Try to be nice in case someone else defined this
72#ifndef LEGION_DISABLE_DEPRECATED_ENUMS
73#ifndef GC_MIN_PRIORITY
74#define GC_MIN_PRIORITY LEGION_GC_MIN_PRIORITY
75#endif
76#endif
77
78#ifndef LEGION_GC_MAX_PRIORITY
79#define LEGION_GC_MAX_PRIORITY (INT_MAX-1)
80#else
81#error "legion.h requires the ability to define the macro 'LEGION_GC_MAX_PRIORITY' but it has already been defined"
82#endif
83// This is for backwards compatibility
84// Try to be nice in case someone else defined this
85#ifndef LEGION_DISABLE_DEPRECATED_ENUMS
86#ifndef GC_MAX_PRIORITY
87#define GC_MAX_PRIORITY LEGION_GC_MAX_PRIORITY
88#endif
89#endif
90
91#ifndef LEGION_GC_NEVER_PRIORITY
92#define LEGION_GC_NEVER_PRIORITY LEGION_GC_MIN_PRIORITY
93#else
94#error "legion.h requires the ability to define the macro 'LEGION_GC_NEVER_PRIORITY' but it has already been defined"
95#endif
96
97#ifndef LEGION_GC_EAGER_PRIORITY
98#define LEGION_GC_EAGER_PRIORITY INT_MAX
99#else
100#error "legion.h requires the ability to define the macro 'LEGION_GC_EAGER_PRIORITY' but it has already been defined"
101#endif
102
103// This is for backwards compatibility
104// Try to be nice in case someone else defined this
105#ifndef LEGION_DISABLE_DEPRECATED_ENUMS
106#ifndef GC_NEVER_PRIORITY
107#define GC_NEVER_PRIORITY LEGION_GC_NEVER_PRIORITY
108#endif
109#endif
110// This is for backwards compatibility
111// Try to be nice in case someone else defined this
112#ifdef BOUNDS_CHECKS
113#ifndef LEGION_BOUNDS_CHECKS
114#define LEGION_BOUNDS_CHECKS
115#endif
116#endif
117// This is for backwards compatibility
118// Try to be nice in case someone else defined this
119#ifdef PRIVILEGE_CHECKS
120#ifndef LEGION_PRIVILEGE_CHECKS
121#define LEGION_PRIVILEGE_CHECKS
122#endif
123#endif
124
125#ifndef LEGION_GC_FIRST_PRIORITY
126#define LEGION_GC_FIRST_PRIORITY LEGION_GC_MAX_PRIORITY
127#endif
128#ifndef LEGION_GC_DEFAULT_PRIORITY
129#define LEGION_GC_DEFAULT_PRIORITY 0
130#endif
131#ifndef LEGION_GC_LAST_PRIORITY
132#define LEGION_GC_LAST_PRIORITY (LEGION_GC_MIN_PRIORITY+1)
133#endif
134// This is for backwards compatibility
135// Try to be nice in case someone else defined this
136#ifndef LEGION_DISABLE_DEPRECATED_ENUMS
137#ifndef GC_FIRST_PRIORITY
138#define GC_FIRST_PRIORITY LEGION_GC_FIRST_PRIORITY
139#endif
140#ifndef GC_DEFAULT_PRIORITY
141#define GC_DEFAULT_PRIORITY LEGION_GC_DEFAULT_PRIORITY
142#endif
143#ifndef GC_LAST_PRIORITY
144#define GC_LAST_PRIORITY LEGION_GC_LAST_PRIORITY
145#endif
146#endif
147
148#ifndef LEGION_MAX_DIM
149#define LEGION_MAX_DIM 3 // maximum number of dimensions for index spaces
150#endif
151
152// This value used to describe the maximum return size that Legion would
153// permit for future values. We've since relaxed this so futures could
154// return large opaque buffers. This value now specifies the maximum size
155// that Legion will all for future values to be passed by value without
156// the Realm DMA system being used for actually moving the data.
157#ifndef MAX_RETURN_SIZE // For backwards compatibility
158#ifndef LEGION_MAX_RETURN_SIZE
159#define LEGION_MAX_RETURN_SIZE 2048 // maximum return type size in bytes
160#endif
161#else
162#ifndef LEGION_MAX_RETURN_SIZE
163#define LEGION_MAX_RETURN_SIZE (MAX_RETURN_SIZE)
164#endif
165#endif
166
167#ifndef MAX_FIELDS // For backwards compatibility
168#ifndef LEGION_MAX_FIELDS
169#define LEGION_MAX_FIELDS 256 // must be a power of 2
170#endif
171#else
172#ifndef LEGION_MAX_FIELDS
173#define LEGION_MAX_FIELDS (MAX_FIELDS)
174#endif
175#endif
176
177// Some default values
178
179// The maximum number of nodes to be run on
180#ifndef MAX_NUM_NODES // For backwards compatibility
181#ifndef LEGION_MAX_NUM_NODES
182#define LEGION_MAX_NUM_NODES 1024 // must be a power of 2
183#endif
184#else
185#ifndef LEGION_MAX_NUM_NODES
186#define LEGION_MAX_NUM_NODES (MAX_NUM_NODES)
187#endif
188#endif
189// The maximum number of processors on a node
190#ifndef MAX_NUM_PROCS // For backwards compatibility
191#ifndef LEGION_MAX_NUM_PROCS
192#define LEGION_MAX_NUM_PROCS 64 // must be a power of 2
193#endif
194#else
195#ifndef LEGION_MAX_NUM_PROCS
196#define LEGION_MAX_NUM_PROCS (MAX_NUM_PROCS)
197#endif
198#endif
199// Maximum ID for an application task ID
200#ifndef MAX_APPLICATION_TASK_ID // For backwards compatibility
201#ifndef LEGION_MAX_APPLICATION_TASK_ID
202#define LEGION_MAX_APPLICATION_TASK_ID (1<<20)
203#endif
204#else
205#ifndef LEGION_MAX_APPLICATION_TASK_ID
206#define LEGION_MAX_APPLICATION_TASK_ID (MAX_APPLICATION_TASK_ID)
207#endif
208#endif
209// Maximum ID for an application field ID
210#ifndef MAX_APPLICATION_FIELD_ID // For backwards compatibility
211#ifndef LEGION_MAX_APPLICATION_FIELD_ID
212#define LEGION_MAX_APPLICATION_FIELD_ID (1<<20)
213#endif
214#else
215#ifndef LEGION_MAX_APPLICATION_FIELD_ID
216#define LEGION_MAX_APPLICATION_FIELD_ID (MAX_APPLICATION_FIELD_ID)
217#endif
218#endif
219// Maximum ID for an application mapper ID
220#ifndef MAX_APPLICATION_MAPPER_ID // For backwards compatibility
221#ifndef LEGION_MAX_APPLICATION_MAPPER_ID
222#define LEGION_MAX_APPLICATION_MAPPER_ID (1<<20)
223#endif
224#else
225#ifndef LEGION_MAX_APPLICATION_MAPPER_ID
226#define LEGION_MAX_APPLICATION_MAPPER_ID (MAX_APPLICATION_MAPPER_ID)
227#endif
228#endif
229// Maximum ID for an application reduction ID
230#ifndef MAX_APPLICATION_REDUCTION_ID
231#define MAX_APPLICATION_REDUCTION_ID (1<<20)
232#endif
233// Maximum ID for an application trace ID
234#ifndef LEGION_MAX_APPLICATION_TRACE_ID
235#define LEGION_MAX_APPLICATION_TRACE_ID (1<<20)
236#endif
237// Maximum ID for an application projection ID
238#ifndef MAX_APPLICATION_PROJECTION_ID // For backwards compatibility
239#ifndef LEGION_MAX_APPLICATION_PROJECTION_ID
240#define LEGION_MAX_APPLICATION_PROJECTION_ID (1<<20)
241#endif
242#else
243#ifndef LEGION_MAX_APPLICATION_PROJECTION_ID
244#define LEGION_MAX_APPLICATION_PROJECTION_ID (MAX_APPLICATION_PROJECTION_ID)
245#endif
246#endif
247// Maximum ID for an application sharding ID
248#ifndef MAX_APPLICATION_SHARDING_ID // For backwards compatibility
249#ifndef LEGION_MAX_APPLICATION_SHARDING_ID
250#define LEGION_MAX_APPLICATION_SHARDING_ID (1<<20)
251#endif
252#else
253#ifndef LEGION_MAX_APPLICATION_SHARDING_ID
254#define LEGION_MAX_APPLICATION_SHARDING_ID (MAX_APPLICATION_SHARDING_ID)
255#endif
256#endif
257#ifndef LEGION_MAX_APPLICATION_CONCURRENT_ID
258#define LEGION_MAX_APPLICATION_CONCURRENT_ID (1<<20)
259#endif
260// Maximum ID for an application reduction ID
261#ifndef LEGION_MAX_APPLICATION_REDOP_ID
262#ifdef LEGION_USE_PYTHON_CFFI
263#define LEGION_MAX_APPLICATION_REDOP_ID 1048576
264#else
265#define LEGION_MAX_APPLICATION_REDOP_ID (1<<20) // Python CFFI can't do this math
266#endif
267#endif
268// Maximum ID for an application serdez ID
269#ifndef LEGION_MAX_APPLICATION_SERDEZ_ID
270#define LEGION_MAX_APPLICATION_SERDEZ_ID (1<<20)
271#endif
272// Maximum ID for layout constraint ID
273#ifndef LEGION_MAX_APPLICATION_LAYOUT_ID
274#define LEGION_MAX_APPLICATION_LAYOUT_ID (1<<20)
275#endif
276// Default number of local fields per field space
277#ifndef DEFAULT_LOCAL_FIELDS // For backwards compatibility
278#ifndef LEGION_DEFAULT_LOCAL_FIELDS
279#define LEGION_DEFAULT_LOCAL_FIELDS 4
280#endif
281#else
282#ifndef LEGION_DEFAULT_LOCAL_FIELDS
283#define LEGION_DEFAULT_LOCAL_FIELDS (DEFAULT_LOCAL_FIELDS)
284#endif
285#endif
286// Default number of mapper slots
287#ifndef DEFAULT_MAPPER_SLOTS // For backwards compatibility
288#ifndef LEGION_DEFAULT_MAPPER_SLOTS
289#define LEGION_DEFAULT_MAPPER_SLOTS 8
290#endif
291#else
292#ifndef LEGION_DEFAULT_MAPPER_SLOTS
293#define LEGION_DEFAULT_MAPPER_SLOTS (DEFAULT_MAPPER_SLOTS)
294#endif
295#endif
296// Default number of contexts made for each runtime instance
297// Ideally this is a power of 2 (better for performance)
298#ifndef DEFAULT_CONTEXTS // For backwards compatibility
299#ifndef LEGION_DEFAULT_CONTEXTS
300#define LEGION_DEFAULT_CONTEXTS 8
301#endif
302#else
303#ifndef LEGION_DEFAULT_CONTEXTS
304#define LEGION_DEFAULT_CONTEXTS (DEFAULT_CONTEXTS)
305#endif
306#endif
307// Maximum number of sub-tasks per task at a time
308#ifndef DEFAULT_MAX_TASK_WINDOW // For backwards compatibility
309#ifndef LEGION_DEFAULT_MAX_TASK_WINDOW
310#define LEGION_DEFAULT_MAX_TASK_WINDOW 1024
311#endif
312#else
313#ifndef LEGION_DEFAULT_MAX_TASK_WINDOW
314#define LEGION_DEFAULT_MAX_TASK_WINDOW (DEFAULT_MAX_TASK_WINDOW)
315#endif
316#endif
317// Default amount of hysteresis on the task window in the
318// form of a percentage (must be between 0 and 100)
319#ifndef DEFAULT_TASK_WINDOW_HYSTERESIS // For backwards compatibility
320#ifndef LEGION_DEFAULT_TASK_WINDOW_HYSTERESIS
321#define LEGION_DEFAULT_TASK_WINDOW_HYSTERESIS 25
322#endif
323#else
324#ifndef LEGION_DEFAULT_TASK_WINDOW_HYSTERESIS
325#define LEGION_DEFAULT_TASK_WINDOW_HYSTERESIS (DEFAULT_TASK_WINDOW_HYSTERESIS)
326#endif
327#endif
328// Default number of tasks to have in flight before applying
329// back pressure to the mapping process for a context
330#ifndef DEFAULT_MIN_TASKS_TO_SCHEDULE // For backwards compatibility
331#ifndef LEGION_DEFAULT_MIN_TASKS_TO_SCHEDULE
332#define LEGION_DEFAULT_MIN_TASKS_TO_SCHEDULE 32
333#endif
334#else
335#ifndef LEGION_DEFAULT_MIN_TASKS_TO_SCHEDULE
336#define LEGION_DEFAULT_MIN_TASKS_TO_SCHEDULE (DEFAULT_MIN_TASKS_TO_SCHEDULE)
337#endif
338#endif
339// How many tasks to group together for runtime operations
340#ifndef DEFAULT_META_TASK_VECTOR_WIDTH // For backwards compatibility
341#ifndef LEGION_DEFAULT_META_TASK_VECTOR_WIDTH
342#define LEGION_DEFAULT_META_TASK_VECTOR_WIDTH 16
343#endif
344#else
345#ifndef LEGION_DEFAULT_META_TASK_VECTOR_WIDTH
346#define LEGION_DEFAULT_META_TASK_VECTOR_WIDTH (DEFAULT_META_TASK_VECTOR_WIDTH)
347#endif
348#endif
349// Maximum number of templates to keep around in traces
350#ifndef LEGION_DEFAULT_MAX_TEMPLATES_PER_TRACE
351#define LEGION_DEFAULT_MAX_TEMPLATES_PER_TRACE 16
352#endif
353// Default number of replay tasks to run in parallel
354#ifndef DEFAULT_MAX_REPLAY_PARALLELISM // For backwards compatibility
355#ifndef LEGION_DEFAULT_MAX_REPLAY_PARALLELISM
356#define LEGION_DEFAULT_MAX_REPLAY_PARALLELISM 2
357#endif
358#else
359#ifndef LEGION_DEFAULT_MAX_REPLAY_PARALLELISM
360#define LEGION_DEFAULT_MAX_REPLAY_PARALLELISM (DEFAULT_MAX_REPLAY_PARALLELISM)
361#endif
362#endif
363// The maximum size of active messages sent by the runtime in bytes
364// Note this value was picked based on making a tradeoff between
365// latency and bandwidth numbers on both Cray and Infiniband
366// interconnect networks.
367#ifndef DEFAULT_MAX_MESSAGE_SIZE // For backwards compatibility
368#ifndef LEGION_DEFAULT_MAX_MESSAGE_SIZE
369#define LEGION_DEFAULT_MAX_MESSAGE_SIZE 16384
370#endif
371#else
372#ifndef LEGION_DEFAULT_MAX_MESSAGE_SIZE
373#define LEGION_DEFAULT_MAX_MESSAGE_SIZE (DEFAULT_MAX_MESSAGE_SIZE)
374#endif
375#endif
376// Number of events to place in each GC epoch
377// Large counts improve efficiency but add latency to
378// garbage collection. Smaller count reduce efficiency
379// but improve latency of collection.
380#ifndef DEFAULT_GC_EPOCH_SIZE // For backwards compatibility
381#ifndef LEGION_DEFAULT_GC_EPOCH_SIZE
382#define LEGION_DEFAULT_GC_EPOCH_SIZE 64
383#endif
384#else
385#ifndef LEGION_DEFAULT_GC_EPOCH_SIZE
386#define LEGION_DEFAULT_GC_EPOCH_SIZE (DEFAULT_GC_EPOCH_SIZE)
387#endif
388#endif
389// Number of control replications to be supported
390#ifndef LEGION_DEFAULT_MAX_CONTROL_REPLICATION_CONTEXTS
391#define LEGION_DEFAULT_MAX_CONTROL_REPLICATION_CONTEXTS 1
392#endif
393// Number of phase barriers for communication of
394// close operation composite view meta data
395#ifndef LEGION_CONTROL_REPLICATION_COMMUNICATION_BARRIERS
396#define LEGION_CONTROL_REPLICATION_COMMUNICATION_BARRIERS 32
397#endif
398
399// Used for debugging memory leaks
400// How often tracing information is dumped
401// based on the number of scheduler invocations
402#ifndef TRACE_ALLOCATION_FREQUENCY // For backwards compatibility
403#ifndef LEGION_TRACE_ALLOCATION_FREQUENCY
404#define LEGION_TRACE_ALLOCATION_FREQUENCY 1024
405#endif
406#else
407#ifndef LEGION_TRACE_ALLOCATION_FREQUENCY
408#define LEGION_TRACE_ALLOCATION_FREQUENCY (TRACE_ALLOCATION_FREQUENCY)
409#endif
410#endif
411
412// The maximum alignment guaranteed on the target
413// machine in bytes. On linux systems, this is
414// (at least) twice the size of a pointer.
415#ifndef LEGION_MAX_ALIGNMENT
416#define LEGION_MAX_ALIGNMENT (2*sizeof(void *))
417#endif
418
419// Give an ideal upper bound on the maximum
420// number of operations Legion should keep
421// available for recycling. Where possible
422// the runtime will delete objects to keep
423// overall memory usage down.
424#ifndef LEGION_MAX_RECYCLABLE_OBJECTS
425#define LEGION_MAX_RECYCLABLE_OBJECTS 1024
426#endif
427
428// An initial seed for random numbers
429// generated by the high-level runtime.
430#ifndef LEGION_INIT_SEED
431#define LEGION_INIT_SEED 0x221B
432#endif
433
434// The radix for the runtime to use when
435// performing collective operations internally
436#ifndef LEGION_COLLECTIVE_RADIX
437#define LEGION_COLLECTIVE_RADIX 8
438#endif
439
440// The radix for the broadcast tree
441// when attempting to shutdown the runtime
442#ifndef LEGION_SHUTDOWN_RADIX
443#define LEGION_SHUTDOWN_RADIX 8
444#endif
445
446// Maximum number of equivalence subsets in the bounding volume hierarchy
447#ifndef LEGION_MAX_BVH_FANOUT
448#define LEGION_MAX_BVH_FANOUT 16
449#endif
450
451// Maximum number of non-replayable templates before warnings
452#ifndef LEGION_NON_REPLAYABLE_WARNING
453#define LEGION_NON_REPLAYABLE_WARNING 5
454#endif
455
456// Maximum number of new templates allowed
457#ifndef LEGION_NEW_TEMPLATE_WARNING_COUNT
458#define LEGION_NEW_TEMPLATE_WARNING_COUNT 8
459#endif
460
461// Initial offset for library IDs
462// Controls how many IDs are available for dynamic use
463#ifndef LEGION_INITIAL_LIBRARY_ID_OFFSET
464#define LEGION_INITIAL_LIBRARY_ID_OFFSET (1 << 30)
465#endif
466
467// Default percentage of the number of children in a
468// disjoint+complete partition that need to be accessed
469// before we consider the whole partition as accessed
470#ifndef LEGION_REFINEMENT_PARTITION_PERCENTAGE
471#define LEGION_REFINEMENT_PARTITION_PERCENTAGE 50
472#endif
473
474// Some helper macros
475
476// This statically computes an integer log base 2 for a number
477// which is guaranteed to be a power of 2. Adapted from
478// http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogDeBruijn
479#define STATIC_LOG2(x) (LOG2_LOOKUP(uint32_t(x * 0x077CB531U) >> 27))
480#define LOG2_LOOKUP(x) ((x==0) ? 0 : (x==1) ? 1 : (x==2) ? 28 : (x==3) ? 2 : \
481 (x==4) ? 29 : (x==5) ? 14 : (x==6) ? 24 : (x==7) ? 3 : \
482 (x==8) ? 30 : (x==9) ? 22 : (x==10) ? 20 : (x==11) ? 15 : \
483 (x==12) ? 25 : (x==13) ? 17 : (x==14) ? 4 : (x==15) ? 8 : \
484 (x==16) ? 31 : (x==17) ? 27 : (x==18) ? 13 : (x==19) ? 23 : \
485 (x==20) ? 21 : (x==21) ? 19 : (x==22) ? 16 : (x==23) ? 7 : \
486 (x==24) ? 26 : (x==25) ? 12 : (x==26) ? 18 : (x==27) ? 6 : \
487 (x==28) ? 11 : (x==29) ? 5 : (x==30) ? 10 : 9)
488
489// log2(LEGION_MAX_FIELDS)
490#ifndef LEGION_FIELD_LOG2
491#define LEGION_FIELD_LOG2 STATIC_LOG2(LEGION_MAX_FIELDS)
492#endif
493
494#define LEGION_STRINGIFY(x) #x
495#define LEGION_MACRO_TO_STRING(x) LEGION_STRINGIFY(x)
496
497#define LEGION_DISTRIBUTED_ID_MASK 0x00FFFFFFFFFFFFFFULL
498#define LEGION_DISTRIBUTED_ID_FILTER(x) ((x) & LEGION_DISTRIBUTED_ID_MASK)
499#define LEGION_DISTRIBUTED_HELP_DECODE(x) ((x) >> 56)
500#define LEGION_DISTRIBUTED_HELP_ENCODE(x,y) ((x) | (((long long)(y)) << 56))
501
502#if LEGION_MAX_DIM == 1
503
504#define LEGION_FOREACH_N(__func__) \
505 __func__(1)
506#define LEGION_FOREACH_NN(__func__) \
507 __func__(1,1)
508
509#elif LEGION_MAX_DIM == 2
510
511#define LEGION_FOREACH_N(__func__) \
512 __func__(1) \
513 __func__(2)
514#define LEGION_FOREACH_NN(__func__) \
515 __func__(1,1) \
516 __func__(1,2) \
517 __func__(2,1) \
518 __func__(2,2)
519
520#elif LEGION_MAX_DIM == 3
521
522#define LEGION_FOREACH_N(__func__) \
523 __func__(1) \
524 __func__(2) \
525 __func__(3)
526#define LEGION_FOREACH_NN(__func__) \
527 __func__(1,1) \
528 __func__(1,2) \
529 __func__(1,3) \
530 __func__(2,1) \
531 __func__(2,2) \
532 __func__(2,3) \
533 __func__(3,1) \
534 __func__(3,2) \
535 __func__(3,3)
536
537#elif LEGION_MAX_DIM == 4
538
539#define LEGION_FOREACH_N(__func__) \
540 __func__(1) \
541 __func__(2) \
542 __func__(3) \
543 __func__(4)
544#define LEGION_FOREACH_NN(__func__) \
545 __func__(1,1) \
546 __func__(1,2) \
547 __func__(1,3) \
548 __func__(1,4) \
549 __func__(2,1) \
550 __func__(2,2) \
551 __func__(2,3) \
552 __func__(2,4) \
553 __func__(3,1) \
554 __func__(3,2) \
555 __func__(3,3) \
556 __func__(3,4) \
557 __func__(4,1) \
558 __func__(4,2) \
559 __func__(4,3) \
560 __func__(4,4)
561
562#elif LEGION_MAX_DIM == 5
563
564#define LEGION_FOREACH_N(__func__) \
565 __func__(1) \
566 __func__(2) \
567 __func__(3) \
568 __func__(4) \
569 __func__(5)
570#define LEGION_FOREACH_NN(__func__) \
571 __func__(1,1) \
572 __func__(1,2) \
573 __func__(1,3) \
574 __func__(1,4) \
575 __func__(1,5) \
576 __func__(2,1) \
577 __func__(2,2) \
578 __func__(2,3) \
579 __func__(2,4) \
580 __func__(2,5) \
581 __func__(3,1) \
582 __func__(3,2) \
583 __func__(3,3) \
584 __func__(3,4) \
585 __func__(3,5) \
586 __func__(4,1) \
587 __func__(4,2) \
588 __func__(4,3) \
589 __func__(4,4) \
590 __func__(4,5) \
591 __func__(5,1) \
592 __func__(5,2) \
593 __func__(5,3) \
594 __func__(5,4) \
595 __func__(5,5)
596
597#elif LEGION_MAX_DIM == 6
598
599#define LEGION_FOREACH_N(__func__) \
600 __func__(1) \
601 __func__(2) \
602 __func__(3) \
603 __func__(4) \
604 __func__(5) \
605 __func__(6)
606#define LEGION_FOREACH_NN(__func__) \
607 __func__(1,1) \
608 __func__(1,2) \
609 __func__(1,3) \
610 __func__(1,4) \
611 __func__(1,5) \
612 __func__(1,6) \
613 __func__(2,1) \
614 __func__(2,2) \
615 __func__(2,3) \
616 __func__(2,4) \
617 __func__(2,5) \
618 __func__(2,6) \
619 __func__(3,1) \
620 __func__(3,2) \
621 __func__(3,3) \
622 __func__(3,4) \
623 __func__(3,5) \
624 __func__(3,6) \
625 __func__(4,1) \
626 __func__(4,2) \
627 __func__(4,3) \
628 __func__(4,4) \
629 __func__(4,5) \
630 __func__(4,6) \
631 __func__(5,1) \
632 __func__(5,2) \
633 __func__(5,3) \
634 __func__(5,4) \
635 __func__(5,5) \
636 __func__(5,6) \
637 __func__(6,1) \
638 __func__(6,2) \
639 __func__(6,3) \
640 __func__(6,4) \
641 __func__(6,5) \
642 __func__(6,6)
643
644#elif LEGION_MAX_DIM == 7
645
646#define LEGION_FOREACH_N(__func__) \
647 __func__(1) \
648 __func__(2) \
649 __func__(3) \
650 __func__(4) \
651 __func__(5) \
652 __func__(6) \
653 __func__(7)
654#define LEGION_FOREACH_NN(__func__) \
655 __func__(1,1) \
656 __func__(1,2) \
657 __func__(1,3) \
658 __func__(1,4) \
659 __func__(1,5) \
660 __func__(1,6) \
661 __func__(1,7) \
662 __func__(2,1) \
663 __func__(2,2) \
664 __func__(2,3) \
665 __func__(2,4) \
666 __func__(2,5) \
667 __func__(2,6) \
668 __func__(2,7) \
669 __func__(3,1) \
670 __func__(3,2) \
671 __func__(3,3) \
672 __func__(3,4) \
673 __func__(3,5) \
674 __func__(3,6) \
675 __func__(3,7) \
676 __func__(4,1) \
677 __func__(4,2) \
678 __func__(4,3) \
679 __func__(4,4) \
680 __func__(4,5) \
681 __func__(4,6) \
682 __func__(4,7) \
683 __func__(5,1) \
684 __func__(5,2) \
685 __func__(5,3) \
686 __func__(5,4) \
687 __func__(5,5) \
688 __func__(5,6) \
689 __func__(5,7) \
690 __func__(6,1) \
691 __func__(6,2) \
692 __func__(6,3) \
693 __func__(6,4) \
694 __func__(6,5) \
695 __func__(6,6) \
696 __func__(6,7) \
697 __func__(7,1) \
698 __func__(7,2) \
699 __func__(7,3) \
700 __func__(7,4) \
701 __func__(7,5) \
702 __func__(7,6) \
703 __func__(7,7)
704
705#elif LEGION_MAX_DIM == 8
706
707#define LEGION_FOREACH_N(__func__) \
708 __func__(1) \
709 __func__(2) \
710 __func__(3) \
711 __func__(4) \
712 __func__(5) \
713 __func__(6) \
714 __func__(7) \
715 __func__(8)
716#define LEGION_FOREACH_NN(__func__) \
717 __func__(1,1) \
718 __func__(1,2) \
719 __func__(1,3) \
720 __func__(1,4) \
721 __func__(1,5) \
722 __func__(1,6) \
723 __func__(1,7) \
724 __func__(1,8) \
725 __func__(2,1) \
726 __func__(2,2) \
727 __func__(2,3) \
728 __func__(2,4) \
729 __func__(2,5) \
730 __func__(2,6) \
731 __func__(2,7) \
732 __func__(2,8) \
733 __func__(3,1) \
734 __func__(3,2) \
735 __func__(3,3) \
736 __func__(3,4) \
737 __func__(3,5) \
738 __func__(3,6) \
739 __func__(3,7) \
740 __func__(3,8) \
741 __func__(4,1) \
742 __func__(4,2) \
743 __func__(4,3) \
744 __func__(4,4) \
745 __func__(4,5) \
746 __func__(4,6) \
747 __func__(4,7) \
748 __func__(4,8) \
749 __func__(5,1) \
750 __func__(5,2) \
751 __func__(5,3) \
752 __func__(5,4) \
753 __func__(5,5) \
754 __func__(5,6) \
755 __func__(5,7) \
756 __func__(5,8) \
757 __func__(6,1) \
758 __func__(6,2) \
759 __func__(6,3) \
760 __func__(6,4) \
761 __func__(6,5) \
762 __func__(6,6) \
763 __func__(6,7) \
764 __func__(6,8) \
765 __func__(7,1) \
766 __func__(7,2) \
767 __func__(7,3) \
768 __func__(7,4) \
769 __func__(7,5) \
770 __func__(7,6) \
771 __func__(7,7) \
772 __func__(7,8) \
773 __func__(8,1) \
774 __func__(8,2) \
775 __func__(8,3) \
776 __func__(8,4) \
777 __func__(8,5) \
778 __func__(8,6) \
779 __func__(8,7) \
780 __func__(8,8)
781
782#elif LEGION_MAX_DIM == 9
783
784#define LEGION_FOREACH_N(__func__) \
785 __func__(1) \
786 __func__(2) \
787 __func__(3) \
788 __func__(4) \
789 __func__(5) \
790 __func__(6) \
791 __func__(7) \
792 __func__(8) \
793 __func__(9)
794#define LEGION_FOREACH_NN(__func__) \
795 __func__(1,1) \
796 __func__(1,2) \
797 __func__(1,3) \
798 __func__(1,4) \
799 __func__(1,5) \
800 __func__(1,6) \
801 __func__(1,7) \
802 __func__(1,8) \
803 __func__(1,9) \
804 __func__(2,1) \
805 __func__(2,2) \
806 __func__(2,3) \
807 __func__(2,4) \
808 __func__(2,5) \
809 __func__(2,6) \
810 __func__(2,7) \
811 __func__(2,8) \
812 __func__(2,9) \
813 __func__(3,1) \
814 __func__(3,2) \
815 __func__(3,3) \
816 __func__(3,4) \
817 __func__(3,5) \
818 __func__(3,6) \
819 __func__(3,7) \
820 __func__(3,8) \
821 __func__(3,9) \
822 __func__(4,1) \
823 __func__(4,2) \
824 __func__(4,3) \
825 __func__(4,4) \
826 __func__(4,5) \
827 __func__(4,6) \
828 __func__(4,7) \
829 __func__(4,8) \
830 __func__(4,9) \
831 __func__(5,1) \
832 __func__(5,2) \
833 __func__(5,3) \
834 __func__(5,4) \
835 __func__(5,5) \
836 __func__(5,6) \
837 __func__(5,7) \
838 __func__(5,8) \
839 __func__(5,9) \
840 __func__(6,1) \
841 __func__(6,2) \
842 __func__(6,3) \
843 __func__(6,4) \
844 __func__(6,5) \
845 __func__(6,6) \
846 __func__(6,7) \
847 __func__(6,8) \
848 __func__(6,9) \
849 __func__(7,1) \
850 __func__(7,2) \
851 __func__(7,3) \
852 __func__(7,4) \
853 __func__(7,5) \
854 __func__(7,6) \
855 __func__(7,7) \
856 __func__(7,8) \
857 __func__(7,9) \
858 __func__(8,1) \
859 __func__(8,2) \
860 __func__(8,3) \
861 __func__(8,4) \
862 __func__(8,5) \
863 __func__(8,6) \
864 __func__(8,7) \
865 __func__(8,8) \
866 __func__(8,9) \
867 __func__(9,1) \
868 __func__(9,2) \
869 __func__(9,3) \
870 __func__(9,4) \
871 __func__(9,5) \
872 __func__(9,6) \
873 __func__(9,7) \
874 __func__(9,8) \
875 __func__(9,9)
876
877#else
878#error "Unsupported LEGION_MAX_DIM"
879#endif
880
881#ifdef LEGION_DISABLE_DEPRECATED_ENUMS
882#define LEGION_DEPRECATED_ENUM(x)
883#define LEGION_DEPRECATED_ENUM_REAL(x)
884#define LEGION_DEPRECATED_ENUM_FROM(x,y)
885#elif defined(LEGION_WARN_DEPRECATED_ENUMS)
886#if defined(__cplusplus) && __cplusplus >= 201402L
887// c++14 and higher has nice deprecated warnings
888#define LEGION_DEPRECATED_ENUM(x) \
889 x [[deprecated("use LEGION_" #x " instead")]] = LEGION_##x,
890#define LEGION_DEPRECATED_ENUM_REAL(x) \
891 x [[deprecated(#x " is no longer supported")]],
892#define LEGION_DEPRECATED_ENUM_FROM(x,y) \
893 x [[deprecated("use " #y " instead")]] = y,
894#else
895// C and older versions of c++
896#define LEGION_DEPRECATED_ENUM(x) \
897 x __attribute__ ((deprecated ("use LEGION_" #x " instead"))) = LEGION_##x,
898#define LEGION_DEPRECATED_ENUM_REAL(x) \
899 x __attribute__ ((deprecated (#x " is no longer supported")))
900#define LEGION_DEPRECATED_ENUM_FROM(x,y) \
901 x __attribute__ ((deprecated ("use " #y " instead"))) = y,
902#endif
903#else
904#define LEGION_DEPRECATED_ENUM(x) \
905 x = LEGION_##x,
906#define LEGION_DEPRECATED_ENUM_REAL(x) \
907 x,
908#define LEGION_DEPRECATED_ENUM_FROM(x,y) \
909 x = y,
910#endif
911
912// The following enums are all re-exported by
913// namespace Legion. These versions are here to facilitate the
914// C API. If you are writing C++ code, use the namespaced versions.
915
916typedef enum legion_error_t {
917 LEGION_NO_ERROR = 0,
918 ERROR_RESERVED_REDOP_ID = 1,
919 ERROR_DUPLICATE_REDOP_ID = 2,
920 ERROR_RESERVED_TYPE_HANDLE = 3,
921 ERROR_DUPLICATE_TYPE_HANDLE = 4,
922 ERROR_DUPLICATE_FIELD_ID = 5,
923 ERROR_PARENT_TYPE_HANDLE_NONEXISTENT = 6,
924 ERROR_MISSING_PARENT_FIELD_ID = 7,
925 ERROR_RESERVED_PROJECTION_ID = 8,
926 ERROR_DUPLICATE_PROJECTION_ID = 9,
927 ERROR_UNREGISTERED_VARIANT = 10,
928 ERROR_USE_REDUCTION_REGION_REQ = 11,
929 ERROR_INVALID_ACCESSOR_REQUESTED = 12,
930 ERROR_PHYSICAL_REGION_UNMAPPED = 13,
931 ERROR_RESERVED_TASK_ID = 14,
932 ERROR_INVALID_ARG_MAP_DESTRUCTION = 15,
933 ERROR_RESERVED_MAPPING_ID = 16,
934 ERROR_BAD_INDEX_PRIVILEGES = 17,
935 ERROR_BAD_FIELD_PRIVILEGES = 18,
936 ERROR_BAD_REGION_PRIVILEGES = 19,
937 ERROR_BAD_PARTITION_PRIVILEGES = 20,
938 ERROR_BAD_PARENT_INDEX = 21,
939 ERROR_BAD_INDEX_PATH = 22,
940 ERROR_BAD_PARENT_REGION = 23,
941 ERROR_BAD_REGION_PATH = 24,
942 ERROR_BAD_PARTITION_PATH = 25,
943 ERROR_BAD_FIELD = 26,
944 ERROR_BAD_REGION_TYPE = 27,
945 ERROR_INVALID_TYPE_HANDLE = 28,
946 ERROR_LEAF_TASK_VIOLATION = 29,
947 ERROR_INVALID_REDOP_ID = 30,
948 ERROR_REDUCTION_INITIAL_VALUE_MISMATCH = 31,
949 ERROR_INVALID_UNMAP_OP = 32,
950 ERROR_INVALID_DUPLICATE_MAPPING = 33,
951 ERROR_INVALID_REGION_ARGUMENT_INDEX = 34,
952 ERROR_INVALID_MAPPING_ACCESS = 35,
953 ERROR_STALE_INLINE_MAPPING_ACCESS = 36,
954 ERROR_INVALID_INDEX_SPACE_PARENT = 37,
955 ERROR_INVALID_INDEX_PART_PARENT = 38,
956 ERROR_INVALID_INDEX_SPACE_COLOR = 39,
957 ERROR_INVALID_INDEX_PART_COLOR = 40,
958 ERROR_INVALID_INDEX_SPACE_HANDLE = 41,
959 ERROR_INVALID_INDEX_PART_HANDLE = 42,
960 ERROR_FIELD_SPACE_FIELD_MISMATCH = 43,
961 ERROR_INVALID_INSTANCE_FIELD = 44,
962 ERROR_DUPLICATE_INSTANCE_FIELD = 45,
963 ERROR_TYPE_INST_MISMATCH = 46,
964 ERROR_TYPE_INST_MISSIZE = 47,
965 ERROR_INVALID_INDEX_SPACE_ENTRY = 48,
966 ERROR_INVALID_INDEX_PART_ENTRY = 49,
967 ERROR_INVALID_FIELD_SPACE_ENTRY = 50,
968 ERROR_INVALID_REGION_ENTRY = 51,
969 ERROR_INVALID_PARTITION_ENTRY = 52,
970 ERROR_ALIASED_INTRA_TASK_REGIONS = 53,
971 ERROR_MAX_FIELD_OVERFLOW = 54,
972 ERROR_MISSING_TASK_COLLECTION = 55,
973 ERROR_INVALID_IDENTITY_PROJECTION_USE = 56,
974 ERROR_INVALID_PROJECTION_ID = 57,
975 ERROR_NON_DISJOINT_PARTITION = 58,
976 ERROR_BAD_PROJECTION_USE = 59,
977 ERROR_INDEPENDENT_SLICES_VIOLATION = 60,
978 ERROR_INVALID_REGION_HANDLE = 61,
979 ERROR_INVALID_PARTITION_HANDLE = 62,
980 ERROR_VIRTUAL_MAP_IN_LEAF_TASK = 63,
981 ERROR_LEAF_MISMATCH = 64,
982 ERROR_INVALID_PROCESSOR_SELECTION = 65,
983 ERROR_INVALID_VARIANT_SELECTION = 66,
984 ERROR_INVALID_MAPPER_OUTPUT = 67,
985 ERROR_UNINITIALIZED_USE = 68,
986 ERROR_INVALID_INDEX_DOMAIN = 69,
987 ERROR_INVALID_INDEX_PART_DOMAIN = 70,
988 ERROR_PARTITION_VERIFICATION = 71,
989 ERROR_NON_DISJOINT_TASK_REGIONS = 72,
990 ERROR_INVALID_FIELD_ACCESSOR_PRIVILEGES = 73,
991 ERROR_INVALID_PREMAPPED_REGION_LOCATION = 74,
992 ERROR_IDEMPOTENT_MISMATCH = 75,
993 ERROR_INVALID_MAPPER_ID = 76,
994 ERROR_INVALID_TREE_ENTRY = 77,
995 ERROR_FUTURE_MAP_COUNT_MISMATCH = 78,
996 ERROR_MAXIMUM_NODES_EXCEEDED = 79,
997 ERROR_MAXIMUM_PROCS_EXCEEDED = 80,
998 ERROR_INVALID_TASK_ID = 81,
999 ERROR_INVALID_MAPPER_DOMAIN_SLICE = 82,
1000 ERROR_UNFOLDABLE_REDUCTION_OP = 83,
1001 ERROR_INVALID_INLINE_ID = 84,
1002 ERROR_ILLEGAL_MUST_PARALLEL_INLINE = 85,
1003 ERROR_ILLEGAL_MAPPER_PROCESSOR = 86,
1004 ERROR_FUTURE_SIZE_MISMATCH = 87,
1005 ERROR_ILLEGAL_PREDICATE_FUTURE = 88,
1006 ERROR_COPY_REQUIREMENTS_MISMATCH = 89,
1007 ERROR_INVALID_COPY_FIELDS_SIZE = 90,
1008 ERROR_COPY_SPACE_MISMATCH = 91,
1009 ERROR_INVALID_COPY_PRIVILEGE = 92,
1010 ERROR_INVALID_PARTITION_COLOR = 93,
1011 ERROR_EXCEEDED_MAX_CONTEXTS = 94,
1012 ERROR_ACQUIRE_MISMATCH = 95,
1013 ERROR_RELEASE_MISMATCH = 96,
1014 ERROR_INVALID_TASK_VARIANT_PROPERTIES = 97,
1015 ERROR_INVALID_FIELD_PRIVILEGES = 98,
1016 ERROR_ILLEGAL_NESTED_TRACE = 99,
1017 ERROR_UNMATCHED_END_TRACE = 100,
1018 ERROR_CONFLICTING_PARENT_MAPPING_DEADLOCK = 101,
1019 ERROR_CONFLICTING_SIBLING_MAPPING_DEADLOCK = 102,
1020 ERROR_INVALID_PARENT_REQUEST = 103,
1021 ERROR_INVALID_FIELD_ID = 104,
1022 ERROR_NESTED_MUST_EPOCH = 105,
1023 ERROR_UNMATCHED_MUST_EPOCH = 106,
1024 ERROR_MUST_EPOCH_FAILURE = 107,
1025 ERROR_DOMAIN_DIM_MISMATCH = 108,
1026 ERROR_INVALID_PROCESSOR_NAME = 109,
1027 ERROR_INVALID_INDEX_SUBSPACE_REQUEST = 110,
1028 ERROR_INVALID_INDEX_SUBPARTITION_REQUEST = 111,
1029 ERROR_INVALID_FIELD_SPACE_REQUEST = 112,
1030 ERROR_INVALID_LOGICAL_SUBREGION_REQUEST = 113,
1031 ERROR_INVALID_LOGICAL_SUBPARTITION_REQUEST = 114,
1032 ERROR_ALIASED_REGION_REQUIREMENTS = 115,
1033 ERROR_MISSING_DEFAULT_PREDICATE_RESULT = 116,
1034 ERROR_PREDICATE_RESULT_SIZE_MISMATCH = 117,
1035 ERROR_MPI_INTEROPERABILITY_NOT_CONFIGURED = 118,
1036 ERROR_NESTED_REGISTRATION_CALLBACKS = 119,
1037 ERROR_EMPTY_INDEX_PARTITION = 120,
1038 ERROR_INCONSISTENT_SEMANTIC_TAG = 121,
1039 ERROR_INVALID_SEMANTIC_TAG = 122,
1040 ERROR_DUMMY_CONTEXT_OPERATION = 123,
1041 ERROR_INVALID_CONTEXT_CONFIGURATION = 124,
1042 ERROR_INDEX_TREE_MISMATCH = 125,
1043 ERROR_INDEX_PARTITION_ANCESTOR = 126,
1044 ERROR_INVALID_PENDING_CHILD = 127,
1045 ERROR_ILLEGAL_FILE_ATTACH = 128,
1046 ERROR_ILLEGAL_ALLOCATOR_REQUEST = 129,
1047 ERROR_ILLEGAL_DETACH_OPERATION = 130,
1048 ERROR_NO_STARTUP_RESOURCES = 131,
1049 ERROR_ILLEGAL_REDUCTION_VIRTUAL_MAPPING = 132,
1050 ERROR_INVALID_MAPPED_REGION_LOCATION = 133,
1051 ERROR_RESERVED_SERDEZ_ID = 134,
1052 ERROR_DUPLICATE_SERDEZ_ID = 135,
1053 ERROR_INVALID_SERDEZ_ID = 136,
1054 ERROR_TRACE_VIOLATION = 137,
1055 ERROR_INVALID_TARGET_PROC = 138,
1056 ERROR_INCOMPLETE_TRACE = 139,
1057 ERROR_STATIC_CALL_POST_RUNTIME_START = 140,
1058 ERROR_ILLEGAL_GLOBAL_VARIANT_REGISTRATION = 141,
1059 ERROR_ILLEGAL_USE_OF_NON_GLOBAL_VARIANT = 142,
1060 ERROR_RESERVED_CONSTRAINT_ID = 143,
1061 ERROR_INVALID_CONSTRAINT_ID = 144,
1062 ERROR_DUPLICATE_CONSTRAINT_ID = 145,
1063 ERROR_ILLEGAL_WAIT_FOR_SHUTDOWN = 146,
1064 ERROR_DEPRECATED_METHOD_USE = 147,
1065 ERROR_MAX_APPLICATION_TASK_ID_EXCEEDED = 148,
1066 ERROR_MAX_APPLICATION_MAPPER_ID_EXCEEDED = 149,
1067 ERROR_INVALID_ARGUMENTS_TO_MAPPER_RUNTIME = 150,
1068 ERROR_INVALID_MAPPER_SYNCHRONIZATION = 151,
1069 ERROR_ILLEGAL_PARTIAL_ACQUISITION = 152,
1070 ERROR_ILLEGAL_INTERFERING_RESTRICTIONS = 153,
1071 ERROR_ILLEGAL_PARTIAL_RESTRICTION = 154,
1072 ERROR_ILLEGAL_INTERFERING_ACQUISITIONS = 155,
1073 ERROR_UNRESTRICTED_ACQUIRE = 156,
1074 ERROR_UNACQUIRED_RELEASE = 157,
1075 ERROR_UNATTACHED_DETACH = 158,
1076 ERROR_INVALID_PROJECTION_RESULT = 159,
1077 ERROR_ILLEGAL_IMPLICIT_MAPPING = 160,
1078 ERROR_INNER_TASK_VIOLATION = 161,
1079 ERROR_REQUEST_FOR_EMPTY_FUTURE = 162,
1080 ERROR_ILLEGAL_REMAP_IN_STATIC_TRACE = 163,
1081 ERROR_DYNAMIC_TYPE_MISMATCH = 164,
1082 ERROR_MISSING_LOCAL_VARIABLE = 165,
1083 ERROR_ACCESSOR_PRIVILEGE_CHECK = 166,
1084 ERROR_ACCESSOR_BOUNDS_CHECK = 167,
1085 ERROR_DUPLICATE_MPI_CONFIG = 168,
1086 ERROR_UNKNOWN_MAPPABLE = 169,
1087 ERROR_DEPRECATED_PROJECTION = 170,
1088 ERROR_ILLEGAL_PARTIAL_ACQUIRE = 171,
1089 ERROR_ILLEGAL_INTERFERING_RESTRICTON = 172,
1090 ERROR_ILLEGAL_INTERFERING_ACQUIRE = 173,
1091 ERROR_ILLEGAL_REDUCTION_REQUEST = 175,
1092 ERROR_PROJECTION_REGION_REQUIREMENTS = 180,
1093 ERROR_REQUIREMENTS_INVALID_REGION = 181,
1094 ERROR_FIELD_NOT_VALID_FIELD = 182,
1095 ERROR_INSTANCE_FIELD_PRIVILEGE = 183,
1096 ERROR_ILLEGAL_REQUEST_VIRTUAL_INSTANCE = 185,
1097 ERROR_PARENT_TASK_INLINE = 186,
1098 ERROR_REGION_NOT_SUBREGION = 189,
1099 ERROR_REGION_REQUIREMENT_INLINE = 190,
1100 ERROR_PRIVILEGES_FOR_REGION = 191,
1101 ERROR_MISSING_INSTANCE_FIELD = 195,
1102 ERROR_NUMBER_SOURCE_REQUIREMENTS = 204,
1103 ERROR_COPY_SOURCE_REQUIREMENTS = 205,
1104 ERROR_COPY_DESTINATION_REQUIREMENT = 206,
1105 ERROR_TYPE_MISMATCH = 208,
1106 ERROR_TYPE_FIELD_MISMATCH = 209,
1107 ERROR_ALIASED_REQION_REQUIREMENTS = 210,
1108 ERROR_FIELD_SIZE_MISMATCH = 211,
1109 ERROR_REQUEST_INVALID_REGION = 212,
1110 ERROR_FIELD_SERDEZ_MISMATCH = 213,
1111 ERROR_SERDEZ_FIELD_DISALLOWED = 214,
1112 ERROR_INSTANCE_FIELD_DUPLICATE = 215,
1113 ERROR_PARENT_TASK_COPY = 216,
1114 ERROR_ILLEGAL_HANDSHAKE = 217,
1115 ERROR_REGION_REQUIREMENT_COPY = 220,
1116 ERROR_SOURCE_REGION_REQUIREMENT = 232,
1117 ERROR_DESTINATION_REGION_REQUIREMENT = 233,
1118 ERROR_COPY_SOURCE_REQUIREMENT = 235,
1119 ERROR_INDEX_SPACE_COPY = 237,
1120 ERROR_DEPRECATED_SHARDING = 238,
1121 ERROR_IMPLICIT_REPLICATED_SHARDING = 239,
1122 ERROR_MIXED_PARTITION_COLOR_ALLOCATION_MODES = 240,
1123 ERROR_EXCEEDED_CONFIGURATION_LIMIT = 241,
1124 ERROR_INVALID_PADDED_ACCESSOR = 242,
1125 ERROR_MAPPER_FAILED_ACQUIRE = 245,
1126 ERROR_FIELD_NOT_VALID = 248,
1127 ERROR_PARENT_TASK_ACQUIRE = 249,
1128 ERROR_REGION_REQUIREMENT_ACQUIRE = 253,
1129 ERROR_PARENT_TASK_RELEASE = 257,
1130 ERROR_REGION_REQUIREMENT_RELEASE = 261,
1131 ERROR_MUST_EPOCH_DEPENDENCE = 267,
1132 ERROR_PARENT_TASK_PARTITION = 268,
1133 ERROR_PARENT_TASK_FILL = 273,
1134 ERROR_REGION_REQUIREMENT_DISCARD = 277,
1135 ERROR_REGION_REQUIREMENT_FILL = 278,
1136 ERROR_PRIVILEGES_REGION_SUBSET = 279,
1137 ERROR_INDEX_SPACE_FILL = 281,
1138 ERROR_ILLEGAL_FILE_ATTACHMENT = 284,
1139 ERROR_REGION_REQUIREMENT_ATTACH = 293,
1140 ERROR_PARENT_TASK_DETACH = 295,
1141 ERROR_ILLEGAL_TOP_LEVEL_TASK_CREATION = 296,
1142 ERROR_INVALID_DISCARD_QUALIFIER = 297,
1143 ERROR_PARENT_TASK_TASK = 298,
1144 ERROR_INDEX_SPACE_NOTSUBSPACE = 299,
1145 ERROR_PRIVILEGES_INDEX_SPACE = 300,
1146 ERROR_PROJECTION_REGION_REQUIREMENT = 303,
1147 ERROR_NONDISJOINT_PARTITION_SELECTED = 304,
1148 ERROR_PARTITION_NOT_SUBPARTITION = 312,
1149 ERROR_REGION_REQUIREMENT_TASK = 313,
1150 ERROR_PRIVILEGES_REGION_NOTSUBSET = 314,
1151 ERROR_PRIVILEGES_PARTITION_NOTSUBSET = 315,
1152 ERROR_INVALID_LOCATION_CONSTRAINT = 344,
1153 ERROR_ALIASED_INTERFERING_REGION = 356,
1154 ERROR_REDUCTION_OPERATION_INDEX = 357,
1155 ERROR_ILLEGAL_FUTURE_USE = 358,
1156 ERROR_INDEX_SPACE_TASK = 359,
1157 ERROR_TRACE_VIOLATION_RECORDED = 363,
1158 ERROR_TRACE_VIOLATION_OPERATION = 364,
1159 ERROR_INVALID_MAPPER_REQUEST = 366,
1160 ERROR_ILLEGAL_RUNTIME_REMAPPING = 377,
1161 ERROR_UNABLE_FIND_TASK_LOCAL = 378,
1162 ERROR_INDEXPARTITION_NOT_SAME_INDEX_TREE = 379,
1163 ERROR_EXCEEDED_MAXIMUM_NUMBER_LOCAL_FIELDS = 387,
1164 ERROR_UNABLE_ALLOCATE_LOCAL_FIELD = 388,
1165 ERROR_TASK_ATTEMPTED_ALLOCATE_FIELD = 389,
1166 ERROR_DEFERRED_BUFFER_DOUBLE_DELETE = 390,
1167 ERROR_MISMATCHED_PROFILING_RANGE = 391,
1168 ERROR_MISSING_PROFILING_PROVENANCE = 392,
1169 ERROR_PREDICATED_INDEX_TASK_LAUNCH = 393,
1170 ERROR_ATTEMPTED_INLINE_MAPPING_REGION = 395,
1171 ERROR_ATTEMPTED_EXTERNAL_ATTACH = 397,
1172 ERROR_ILLEGAL_PREDICATE_CREATION = 399,
1173 ERROR_ILLEGAL_END_TRACE_CALL = 402,
1174 ERROR_UNMATCHED_END_STATIC_TRACE = 403,
1175 ERROR_ILLEGAL_END_STATIC_TRACE = 404,
1176 ERROR_ILLEGAL_ACQUIRE_OPERATION = 405,
1177 ERROR_ILLEGAL_RELEASE_OPERATION = 406,
1178 ERROR_TASK_FAILED_END_TRACE = 408,
1179 ERROR_ILLEGAL_INDEX_SPACE_CREATION = 410,
1180 ERROR_UMATCHED_END_TRACE = 411,
1181 ERROR_ILLEGAL_NESTED_STATIC_TRACE = 412,
1182 ERROR_ILLEGAL_UNION_INDEX_SPACES = 414,
1183 ERROR_ILLEGAL_INTERSECT_INDEX_SPACES = 415,
1184 ERROR_ILLEGAL_SUBTRACT_INDEX_SPACES = 416,
1185 ERROR_ILLEGAL_INDEX_SPACE_DELETION = 417,
1186 ERROR_ILLEGAL_INDEX_PARTITION_DELETION = 418,
1187 ERROR_ILLEGAL_EQUAL_PARTITION_CREATION = 419,
1188 ERROR_ILLEGAL_UNION_PARTITION_CREATION = 420,
1189 ERROR_ILLEGAL_INTERSECTION_PARTITION_CREATION = 421,
1190 ERROR_ILLEGAL_DIFFERENCE_PARTITION_CREATION = 422,
1191 ERROR_ILLEGAL_CREATE_CROSS_PRODUCT_PARTITION = 423,
1192 ERROR_ILLEGAL_CREATE_ASSOCIATION = 424,
1193 ERROR_ILLEGAL_CREATE_RESTRICTED_PARTITION = 425,
1194 ERROR_ILLEGAL_PARTITION_FIELD = 426,
1195 ERROR_ILLEGAL_PARTITION_IMAGE = 427,
1196 ERROR_ILLEGAL_PARTITION_IMAGE_RANGE = 428,
1197 ERROR_ILLEGAL_PARTITION_PREIMAGE = 429,
1198 ERROR_ILLEGAL_PARTITION_PREIMAGE_RANGE = 430,
1199 ERROR_ILLEGAL_CREATE_PENDING_PARTITION = 431,
1200 ERROR_ILLEGAL_CREATE_INDEX_SPACE_UNION = 432,
1201 ERROR_ILLEGAL_CREATE_INDEX_SPACE_INTERSECTION = 434,
1202 ERROR_ILLEGAL_CREATE_INDEX_SPACE_DIFFERENCE = 436,
1203 ERROR_ILLEGAL_CREATE_FIELD_SPACE = 437,
1204 ERROR_ILLEGAL_DESTROY_FIELD_SPACE = 438,
1205 ERROR_ILLEGAL_NONLOCAL_FIELD_ALLOCATION = 439,
1206 ERROR_ILLEGAL_FIELD_DESTRUCTION = 440,
1207 ERROR_ILLEGAL_NONLOCAL_FIELD_ALLOCATION2 = 441,
1208 ERROR_ILLEGAL_FIELD_DESTRUCTION2 = 442,
1209 ERROR_ILLEGAL_REGION_CREATION = 443,
1210 ERROR_ILLEGAL_REGION_DESTRUCTION = 444,
1211 ERROR_ILLEGAL_PARTITION_DESTRUCTION = 445,
1212 ERROR_ILLEGAL_CREATE_FIELD_ALLOCATION = 447,
1213 ERROR_ILLEGAL_EXECUTE_TASK_CALL = 448,
1214 ERROR_ILLEGAL_EXECUTE_INDEX_SPACE = 449,
1215 ERROR_ILLEGAL_MAP_REGION = 451,
1216 ERROR_ILLEGAL_REMAP_OPERATION = 452,
1217 ERROR_ILLEGAL_UNMAP_OPERATION = 453,
1218 ERROR_ILLEGAL_FILL_OPERATION_CALL = 454,
1219 ERROR_ILLEGAL_INDEX_FILL_OPERATION_CALL = 455,
1220 ERROR_ILLEGAL_COPY_FILL_OPERATION_CALL = 456,
1221 ERROR_ILLEGAL_INDEX_COPY_OPERATION = 457,
1222 ERROR_ILLEGAL_ATTACH_RESOURCE_OPERATION = 460,
1223 ERROR_ILLEGAL_DETACH_RESOURCE_OPERATION = 461,
1224 ERROR_ILLEGAL_LEGION_EXECUTE_MUST_EPOCH = 462,
1225 ERROR_ILLEGAL_TIMING_MEASUREMENT = 463,
1226 ERROR_ILLEGAL_LEGION_MAPPING_FENCE_CALL = 464,
1227 ERROR_ILLEGAL_LEGION_EXECUTION_FENCE_CALL = 465,
1228 ERROR_ILLEGAL_LEGION_COMPLETE_FRAME_CALL = 466,
1229 ERROR_ILLEGAL_GET_PREDICATE_FUTURE = 469,
1230 ERROR_ILLEGAL_LEGION_BEGIN_TRACE = 470,
1231 ERROR_ILLEGAL_LEGION_END_TRACE = 471,
1232 ERROR_ILLEGAL_LEGION_BEGIN_STATIC_TRACE = 472,
1233 ERROR_ILLEGAL_LEGION_END_STATIC_TRACE = 473,
1234 ERROR_INVALID_PHYSICAL_TRACING = 474,
1235 ERROR_PARENT_TASK_DISCARD = 475,
1236 ERROR_PHYSICAL_TRACING_UNSUPPORTED_OP = 476,
1237 ERROR_DYNAMIC_CALL_PRE_RUNTIME_START = 477,
1238 ERROR_PARENT_INDEX_PARTITION_REQUESTED = 478,
1239 ERROR_FIELD_SPACE_HAS_NO_FIELD = 479,
1240 ERROR_PARENT_LOGICAL_PARTITION_REQUESTED = 480,
1241 ERROR_INVALID_REQUEST_FOR_INDEXSPACE = 481,
1242 ERROR_UNABLE_FIND_ENTRY = 482,
1243 ERROR_INVALID_REQUEST_INDEXPARTITION = 484,
1244 ERROR_INVALID_REQUEST_FIELDSPACE = 487,
1245 ERROR_INVALID_REQUEST_LOGICALREGION = 490,
1246 ERROR_INVALID_REQUEST_LOGICALPARTITION = 492,
1247 ERROR_INVALID_REQUEST_TREE_ID = 493,
1248 ERROR_UNABLE_FIND_TOPLEVEL_TREE = 495,
1249 ERROR_ILLEGAL_DUPLICATE_REQUEST_ALLOCATOR = 502,
1250 ERROR_ILLEGAL_DUPLICATE_FIELD_ID = 510,
1251 ERROR_EXCEEDED_MAXIMUM_NUMBER_ALLOCATED_FIELDS = 511,
1252 ERROR_ILLEGAL_NOT_PREDICATE_CREATION = 533,
1253 ERROR_PARENT_TASK_ATTACH = 534,
1254 ERROR_INVALID_REGION_ARGUMENTS = 535,
1255 ERROR_INVALID_MAPPER_CONTENT = 536,
1256 ERROR_INVALID_DUPLICATE_MAPPER = 537,
1257 ERROR_INVALID_UNLOCK_MAPPER = 538,
1258 ERROR_UNKNOWN_PROFILER_OPTION = 539,
1259 ERROR_MISSING_PROFILER_OPTION = 540,
1260 ERROR_INVALID_PROFILER_SERIALIZER = 541,
1261 ERROR_INVALID_PROFILER_FILE = 542,
1262 ERROR_ILLEGAL_LAYOUT_CONSTRAINT = 543,
1263 ERROR_UNSUPPORTED_LAYOUT_CONSTRAINT = 544,
1264 ERROR_ACCESSOR_FIELD_SIZE_CHECK = 545,
1265 ERROR_ATTACH_OPERATION_MISSING_POINTER = 546,
1266 ERROR_RESERVED_VARIANT_ID = 547,
1267 ERROR_NON_DENSE_RECTANGLE = 548,
1268 ERROR_LIBRARY_COUNT_MISMATCH = 549,
1269 ERROR_MPI_INTEROP_MISCONFIGURATION = 550,
1270 ERROR_NUMBER_SRC_INDIRECT_REQUIREMENTS = 551,
1271 ERROR_NUMBER_DST_INDIRECT_REQUIREMENTS = 552,
1272 ERROR_COPY_GATHER_REQUIREMENT = 553,
1273 ERROR_COPY_SCATTER_REQUIREMENT = 554,
1274 ERROR_MAPPER_SYNCHRONIZATION = 555,
1275 ERROR_DUPLICATE_VARIANT_REGISTRATION = 556,
1276 ERROR_ILLEGAL_IMPLICIT_TOP_LEVEL_TASK = 557,
1277 ERROR_ACCESSOR_COMPATIBILITY_CHECK = 558,
1278 ERROR_ILLEGAL_RESOURCE_DESTRUCTION = 559,
1279 ERROR_DUPLICATE_FUTURE_SET = 560,
1280 ERROR_ATTACH_HDF5 = 561,
1281 ERROR_ATTACH_HDF5_CONSTRAINT = 562,
1282 ERROR_ILLEGAL_PARTITION_BY_DOMAIN = 563,
1283 ERROR_INVALID_PARTITION_BY_DOMAIN_VALUE = 564,
1284 ERROR_FUTURE_MAP_REDOP_TYPE_MISMATCH = 565,
1285 ERROR_MISSING_PARTITION_BY_WEIGHT_COLOR = 566,
1286 ERROR_INVALID_PARTITION_BY_WEIGHT_VALUE = 567,
1287 ERROR_LEGION_CONFIGURATION = 568,
1288 ERROR_CREATION_FUTURE_TYPE_MISMATCH = 569,
1289 ERROR_ARGUMENT_MAP_DIMENSIONALITY = 570,
1290 ERROR_INVALID_FUTURE_MAP_POINT = 571,
1291 ERROR_ILLEGAL_LOCAL_FUNCTION_TASK_LAUNCH = 572,
1292 ERROR_ILLEGAL_SHARED_OWNERSHIP = 573,
1293 ERROR_ILLEGAL_PERFORM_REGISTRATION_CALLBACK = 574,
1294 ERROR_NON_PIECE_RECTANGLE = 575,
1295 ERROR_DEFERRED_ALLOCATION_FAILURE = 576,
1296 ERROR_INDEX_SPACE_ATTACH = 577,
1297 ERROR_INDEX_SPACE_DETACH = 578,
1298 ERROR_POST_EXECUTION_UNORDERED_OPERATION = 579,
1299 ERROR_COLOCATION_VIOLATION = 580,
1300 ERROR_RESERVED_SHARDING_ID = 601,
1301 ERROR_DUPLICATE_SHARDING_ID = 602,
1302 ERROR_INVALID_SHARDING_ID = 603,
1303 ERROR_REPLICATE_TASK_VIOLATION = 604,
1304 ERROR_ILLEGAL_SHARDING_FUNCTOR_OUTPUT = 605,
1305 ERROR_CONFUSED_USER = 606,
1306 ERROR_CONTROL_REPLICATION_VIOLATION = 607,
1307 ERROR_INVALID_OUTPUT_SIZE = 608,
1308 ERROR_INVALID_OUTPUT_REGION_DOMAIN = 609,
1309 ERROR_UNBOUND_OUTPUT_REGION = 610,
1310 ERROR_DUPLICATE_OUTPUTS = 611,
1311 ERROR_INVALID_GLOBAL_INDEXING = 612,
1312 ERROR_INVALID_OUTPUT_FIELD = 613,
1313 ERROR_OUTPUT_REGIONS_IN_PREDICATED_TASK = 614,
1314 ERROR_OUTPUT_REGIONS_IN_TRACE = 615,
1315 ERROR_PARENT_TASK_ADVISEMENT = 616,
1316 ERROR_LOGICAL_REGION_FROM_INVALID_OUTPUT_REGION = 617,
1317 ERROR_INVALID_FUTURE_MEMORY_KIND = 618,
1318 ERROR_UNALIGNED_OUTPUT_REGION = 619,
1319 ERROR_INVALID_OUTPUT_REGION_CONSTRAINTS = 620,
1320 ERROR_DUPLICATE_RETURN_REQUESTS = 621,
1321 ERROR_INVALID_OUTPUT_REGION_RETURN = 622,
1322 ERROR_INVALID_OUTPUT_REGION_PROJECTION = 623,
1323 ERROR_INVALID_OUTPUT_REGION_FIELD = 624,
1324 ERROR_FUTURE_SIZE_BOUNDS_EXCEEDED = 625,
1325 ERROR_ILLEGAL_CONCURRENT_EXECUTION = 626,
1326 ERROR_MISSING_FILL_VALUE = 627,
1327 ERROR_ILLEGAL_CONCURRENT_TASK_BARRIER = 628,
1328 ERROR_POOL_USE_AFTER_FREE = 629,
1329 ERROR_RESERVED_CONCURRENT_ID = 630,
1330 ERROR_INVALID_CONCURRENT_ID = 631,
1331 ERROR_DUPLICATE_CONCURRENT_ID = 632,
1332
1333
1334 LEGION_WARNING_FUTURE_NONLEAF = 1000,
1335 LEGION_WARNING_BLOCKING_EMPTY = 1001,
1336 LEGION_WARNING_WAITING_ALL_FUTURES = 1002,
1337 LEGION_WARNING_WAITING_REGION = 1003,
1338 LEGION_WARNING_MISSING_REGION_WAIT = 1004,
1339 LEGION_WARNING_NONLEAF_ACCESSOR = 1005,
1340 LEGION_WARNING_UNMAPPED_ACCESSOR = 1006,
1341 LEGION_WARNING_READ_DISCARD = 1007,
1342 LEGION_WARNING_MISSING_PROC_CONSTRAINT = 1008,
1343 LEGION_WARNING_DYNAMIC_PROJECTION_REG = 1009,
1344 LEGION_WARNING_DUPLICATE_MPI_CONFIG = 1010,
1345 LEGION_WARNING_NEW_PROJECTION_FUNCTORS = 1011,
1346 LEGION_WARNING_IGNORE_MEMORY_REQUEST = 1012,
1347 LEGION_WARNING_NOT_COPY = 1013,
1348 LEGION_WARNING_REGION_REQUIREMENT_INLINE = 1014,
1349 LEGION_WARNING_MAPPER_FAILED_ACQUIRE = 1015,
1350 LEGION_WARNING_SOURCE_REGION_REQUIREMENT = 1016,
1351 LEGION_WARNING_DESTINATION_REGION_REQUIREMENT = 1017,
1352 LEGION_WARNING_REGION_REQUIREMENTS_INDEX = 1019,
1353 LEGION_WARNING_PRIVILEGE_FIELDS_ACQUIRE = 1020,
1354 LEGION_WARNING_PRIVILEGE_FIELDS_RELEASE = 1021,
1355 LEGION_WARNING_FILE_ATTACH_OPERATION = 1022,
1356 LEGION_WARNING_HDF5_ATTACH_OPERATION = 1023,
1357 LEGION_WARNING_REGION_REQUIREMENT_TASK = 1024,
1358 LEGION_WARNING_EMPTY_FILL_FIELDS = 1025,
1359 LEGION_WARNING_EMPTY_OUTPUT_TARGET = 1026,
1360 LEGION_WARNING_IGNORING_SPURIOUS_TARGET = 1027,
1361 LEGION_WARNING_IGNORING_PROCESSOR_REQUEST = 1028,
1362 LEGION_WARNING_MAPPER_REQUESTED_COMPOSITE = 1030,
1363 LEGION_WARNING_MAPPER_REQUESTED_INLINE = 1031,
1364 LEGION_WARNING_REGION_REQUIREMENTS_INDIVIDUAL = 1032,
1365 LEGION_WARNING_IGNORING_ACQUIRE_REQUEST = 1035,
1366 LEGION_WARNING_WAITING_FUTURE_NONLEAF = 1047,
1367 LEGION_WARNING_RUNTIME_UNMAPPING_REMAPPING = 1050,
1368 LEGION_WARNING_IGNORING_EMPTY_INDEX_TASK_LAUNCH = 1058,
1369 LEGION_WARNING_UNINITIALIZED_USE = 1071,
1370 LEGION_WARNING_MAPPER_REQUESTED_PROFILING = 1082,
1371 LEGION_WARNING_REGION_TREE_STATE_LOGGING = 1083,
1372 LEGION_WARNING_DISJOINTNESS_VERIFICATION = 1084,
1373 LEGION_WARNING_IGNORING_EMPTY_INDEX_SPACE_FILL = 1085,
1374 LEGION_WARNING_IGNORING_EMPTY_INDEX_SPACE_COPY = 1086,
1375 LEGION_WARNING_VARIANT_TASK_NOT_MARKED = 1087,
1376 LEGION_WARNING_MAPPER_REQUESTED_POST = 1088,
1377 LEGION_WARNING_IGNORING_RELEASE_REQUEST = 1089,
1378 LEGION_WARNING_PRUNE_DEPTH_EXCEEDED = 1090,
1379 LEGION_WARNING_GENERIC_ACCESSOR = 1091,
1380 LEGION_WARNING_UNUSED_PROFILING_FILE_NAME = 1092,
1381 LEGION_WARNING_INVALID_PRIORITY_CHANGE = 1093,
1382 LEGION_WARNING_EXTERNAL_ATTACH_OPERATION = 1094,
1383 LEGION_WARNING_EXTERNAL_GARBAGE_PRIORITY = 1095,
1384 LEGION_WARNING_MAPPER_INVALID_INSTANCE = 1096,
1385 LEGION_WARNING_NON_REPLAYABLE_COUNT_EXCEEDED = 1097,
1386 LEGION_WARNING_LARGE_EQUIVALENCE_SET_NODE_USAGE = 1098,
1387 LEGION_WARNING_NON_READ_ONLY_UNTRACK_VALID = 1099,
1388 LEGION_WARNING_LEAKED_RESOURCE = 1100,
1389 LEGION_WARNING_DUPLICATE_DELETION = 1101,
1390 LEGION_WARNING_NEW_TEMPLATE_COUNT_EXCEEDED = 1102,
1391 LEGION_WARNING_NON_CALLBACK_REGISTRATION = 1103,
1392 LEGION_WARNING_NON_SCALABLE_IDENTITY_PROJECTION = 1104,
1393 LEGION_WARNING_FAILED_INLINING = 1105,
1394 LEGION_WARNING_DYNAMIC_SHARDING_REG = 1106,
1395 LEGION_WARNING_SLOW_NON_FUNCTIONAL_PROJECTION = 1107,
1396 LEGION_WARNING_MISMATCHED_REPLICATED_FUTURES = 1108,
1397 LEGION_WARNING_INLINING_NOT_SUPPORTED = 1109,
1398 LEGION_WARNING_IGNORING_EQUIVALENCE_SETS_RESET = 1110,
1399 LEGION_WARNING_MISMATCHED_UNORDERED_OPERATIONS = 1111,
1400 LEGION_WARNING_PARTITION_VERIFICATION = 1112,
1401 LEGION_WARNING_IMPRECISE_ATTACH_MEMORY = 1113,
1402 LEGION_WARNING_KDTREE_REFINEMENT_FAILED = 1114,
1403 LEGION_WARNING_COLLECTIVE_HAMMER_REDUCTION = 1115,
1404 LEGION_WARNING_WRITE_PRIVILEGE_COLLECTIVE = 1116,
1405 LEGION_WARNING_UNSUPPORTED_REPLICATION = 1117,
1406 LEGION_WARNING_UNUSED_CONCURRENCY = 1118,
1407 LEGION_WARNING_IGNORED_REPLICATION = 1119,
1408 LEGION_WARNING_MISSING_ALLOCATION_BOUNDS = 1120,
1409 LEGION_WARNING_UNBOUND_MEMORY_POOL = 1121,
1410 LEGION_WARNING_TRACING_UNBOUND_MEMORY_POOL = 1122,
1411 LEGION_WARNING_DYNAMIC_CONCURRENT_REG = 1123,
1412
1413
1414 LEGION_FATAL_MUST_EPOCH_NOADDRESS = 2000,
1415 LEGION_FATAL_MUST_EPOCH_NOTASKS = 2001,
1416 LEGION_FATAL_DEFAULT_MAPPER_ERROR = 2002,
1417 LEGION_FATAL_SHIM_MAPPER_SUPPORT = 2006,
1418 LEGION_FATAL_UNKNOWN_FIELD_ID = 2007,
1419 LEGION_FATAL_RESTRICTED_SIMULTANEOUS = 2008,
1420 LEGION_FATAL_UNIMPLEMENTED_FEATURE = 2009,
1421 LEGION_FATAL_INCONSISTENT_PHI_VIEW = 2010,
1422 LEGION_FATAL_EXCEEDED_LIBRARY_ID_OFFSET = 2011,
1423 LEGION_FATAL_SEPARATE_RUNTIME_INSTANCES = 2012,
1424 LEGION_FATAL_UNSUPPORTED_CONSENSUS_SIZE = 2013,
1425 LEGION_FATAL_CALLBACK_NOT_PORTABLE = 2014,
1426 LEGION_FATAL_REDUCTION_ABA_PROBLEM = 2015,
1427 LEGION_FATAL_COMPACT_SPARSE_PADDING = 2016,
1428 LEGION_FATAL_GARBAGE_COLLECTION_RACE = 2017,
1429 LEGION_FATAL_COLLECTIVE_PARTIAL_FIELD_OVERLAP = 2018,
1430 LEGION_FATAL_MORTON_TILING_FAILURE = 2019,
1431 LEGION_FATAL_NO_CRITICAL_PATH_DYNAMIC_COLLECTIVES = 2020,
1432 LEGION_FATAL_UNSUPPORTED_HANDSHAKE_PARTICIPANTS = 2021,
1433 LEGION_FATAL_UNSAFE_ALLOCATION_WITH_UNBOUNDED_POOLS = 2022,
1434
1435} legion_error_t;
1436
1437#ifdef __cplusplus
1438#include <cstdint>
1439#endif
1440
1441// enum and namepsaces don't really get along well
1442// We would like to make these associations explicit
1443// but the python cffi parser is stupid as hell
1444typedef enum legion_privilege_mode_t
1445#ifdef __cplusplus
1446: std::uint32_t
1447#endif
1448{
1449 LEGION_NO_ACCESS = 0x00000000,
1450 LEGION_READ_PRIV = 0x00000001,
1451 LEGION_READ_ONLY = 0x00000001, // READ_PRIV,
1452 LEGION_WRITE_PRIV = 0x00000002,
1453 LEGION_REDUCE_PRIV = 0x00000004,
1454 LEGION_REDUCE = 0x00000004, // REDUCE_PRIV,
1455 LEGION_READ_WRITE = 0x00000007, // READ_PRIV | WRITE_PRIV | REDUCE_PRIV,
1456 LEGION_DISCARD_MASK = 0x10000000, // For marking we don't need inputs
1457 LEGION_DISCARD_INPUT_MASK = 0x10000000, // Rename of the old discard mask
1458 LEGION_DISCARD_OUTPUT_MASK = 0x20000000, // For marking we don't need outputs
1459 LEGION_WRITE_ONLY = 0x10000002, // WRITE_PRIV | DISCARD_INPUT_MASK
1460 LEGION_WRITE_DISCARD = 0x10000007, // READ_WRITE | DISCARD_INPUT_MASK
1461 // for backwards compatibility
1462 LEGION_DEPRECATED_ENUM(NO_ACCESS)
1463 LEGION_DEPRECATED_ENUM(READ_PRIV)
1464 LEGION_DEPRECATED_ENUM(READ_ONLY)
1465 LEGION_DEPRECATED_ENUM(WRITE_PRIV)
1466 LEGION_DEPRECATED_ENUM(REDUCE_PRIV)
1467 LEGION_DEPRECATED_ENUM(REDUCE)
1468 LEGION_DEPRECATED_ENUM(READ_WRITE)
1469 LEGION_DEPRECATED_ENUM(DISCARD_MASK)
1470 LEGION_DEPRECATED_ENUM(WRITE_ONLY)
1471 LEGION_DEPRECATED_ENUM(WRITE_DISCARD)
1472} legion_privilege_mode_t;
1473
1474#ifdef __cplusplus
1475static_assert(sizeof(legion_privilege_mode_t) == sizeof(unsigned));
1476#endif
1477
1478typedef enum legion_allocate_mode_t {
1479 LEGION_NO_MEMORY = 0x00000000,
1480 LEGION_ALLOCABLE = 0x00000001,
1481 LEGION_FREEABLE = 0x00000002,
1482 LEGION_MUTABLE = 0x00000003,
1483 LEGION_REGION_CREATION = 0x00000004,
1484 LEGION_REGION_DELETION = 0x00000008,
1485 LEGION_ALL_MEMORY = 0x0000000F,
1486 // for backwards compatibility
1487 LEGION_DEPRECATED_ENUM(NO_MEMORY)
1488 LEGION_DEPRECATED_ENUM(ALLOCABLE)
1489 LEGION_DEPRECATED_ENUM(FREEABLE)
1490 LEGION_DEPRECATED_ENUM(MUTABLE)
1491 LEGION_DEPRECATED_ENUM(REGION_CREATION)
1492 LEGION_DEPRECATED_ENUM(REGION_DELETION)
1493 LEGION_DEPRECATED_ENUM(ALL_MEMORY)
1494} legion_allocate_mode_t;
1495
1496typedef enum legion_coherence_property_t {
1497 LEGION_EXCLUSIVE = 0x00000000,
1498 LEGION_ATOMIC = 0x00000001,
1499 LEGION_SIMULTANEOUS = 0x00000002,
1500 LEGION_RELAXED = 0x00000003,
1501 LEGION_COLLECTIVE_MASK = 0x10000000,
1502 // Can't make these associations explicit because the Python CFFI parser is stupid
1503 LEGION_COLLECTIVE_EXCLUSIVE = 0x10000000, // LEGION_EXCLUSIVE | LEGION_COLLECTIVE_MASK,
1504 LEGION_COLLECTIVE_ATOMIC = 0x10000001, // LEGION_ATOMIC | LEGION_COLLECTIVE_MASK,
1505 LEGION_COLLECTIVE_SIMULTANEOUS = 0x10000002, // LEGION_SIMULTANEOUS | LEGION_COLLECTIVE_MASK,
1506 LEGION_COLLECTIVE_RELAXED = 0x10000003, // LEGION_RELAXED | LEGION_COLLECTIVE_MASK,
1507 // for backwards compatibility
1508 LEGION_DEPRECATED_ENUM(EXCLUSIVE)
1509 LEGION_DEPRECATED_ENUM(ATOMIC)
1510 LEGION_DEPRECATED_ENUM(SIMULTANEOUS)
1511 LEGION_DEPRECATED_ENUM(RELAXED)
1512} legion_coherence_property_t;
1513
1514// Optional region requirement flags
1515typedef enum legion_region_flags_t {
1516 LEGION_NO_FLAG = 0x00000000,
1517 LEGION_VERIFIED_FLAG = 0x00000001,
1518 LEGION_NO_ACCESS_FLAG = 0x00000002, // Deprecated, user SpecializedConstraint
1519 LEGION_RESTRICTED_FLAG = 0x00000004,
1520 LEGION_MUST_PREMAP_FLAG = 0x00000008, // Deprecated, no longer used
1521 // For non-trivial projection functions:
1522 // tell the runtime the write is complete,
1523 // will be ignored for non-index space launches
1524 // and for privileges that aren't WRITE
1525 // Note that if you use this incorrectly it could
1526 // break the correctness of your code so be sure
1527 // you know what you are doing
1528 LEGION_COMPLETE_PROJECTION_WRITE_FLAG = 0x00000010,
1529 // for indicating created output region requirements
1530 LEGION_CREATED_OUTPUT_REQUIREMENT_FLAG = 0x00000020,
1531 // Suppress warnings on this region requirement
1532 LEGION_SUPPRESS_WARNINGS_FLAG = 0x00000040,
1533 // for backwards compatibility
1534 LEGION_DEPRECATED_ENUM(NO_FLAG)
1535 LEGION_DEPRECATED_ENUM(VERIFIED_FLAG)
1536 LEGION_DEPRECATED_ENUM(NO_ACCESS_FLAG)
1537 LEGION_DEPRECATED_ENUM(RESTRICTED_FLAG)
1538 LEGION_DEPRECATED_ENUM(MUST_PREMAP_FLAG)
1539 LEGION_DEPRECATED_ENUM(COMPLETE_PROJECTION_WRITE_FLAG)
1540} legion_region_flags_t;
1541
1542typedef enum legion_projection_type_t {
1543 LEGION_SINGULAR_PROJECTION, // a single logical region
1544 LEGION_PARTITION_PROJECTION, // projection from a partition
1545 LEGION_REGION_PROJECTION, // projection from a region
1546 // for backwards compatibility
1547 LEGION_DEPRECATED_ENUM_FROM(SINGULAR, LEGION_SINGULAR_PROJECTION)
1548 LEGION_DEPRECATED_ENUM_FROM(PART_PROJECTION, LEGION_PARTITION_PROJECTION)
1549 LEGION_DEPRECATED_ENUM_FROM(REG_PROJECTION, LEGION_REGION_PROJECTION)
1550} legion_projection_type_t;
1551// For backwards compatibility
1552typedef legion_projection_type_t legion_handle_type_t;
1553
1554typedef enum legion_partition_kind_t {
1555 LEGION_DISJOINT_KIND, // disjoint and unknown
1556 LEGION_ALIASED_KIND, // aliased and unknown
1557 LEGION_COMPUTE_KIND, // unknown and unknown
1558 LEGION_DISJOINT_COMPLETE_KIND, // disjoint and complete
1559 LEGION_ALIASED_COMPLETE_KIND, // aliased and complete
1560 LEGION_COMPUTE_COMPLETE_KIND, // unknown and complete
1561 LEGION_DISJOINT_INCOMPLETE_KIND, // disjoint and incomplete
1562 LEGION_ALIASED_INCOMPLETE_KIND, // aliased and incomplete
1563 LEGION_COMPUTE_INCOMPLETE_KIND, // unknown and incomplete
1564 // for backwards compatibility
1565 LEGION_DEPRECATED_ENUM(DISJOINT_KIND)
1566 LEGION_DEPRECATED_ENUM(ALIASED_KIND)
1567 LEGION_DEPRECATED_ENUM(COMPUTE_KIND)
1568 LEGION_DEPRECATED_ENUM(DISJOINT_COMPLETE_KIND)
1569 LEGION_DEPRECATED_ENUM(ALIASED_COMPLETE_KIND)
1570 LEGION_DEPRECATED_ENUM(COMPUTE_COMPLETE_KIND)
1571 LEGION_DEPRECATED_ENUM(DISJOINT_INCOMPLETE_KIND)
1572 LEGION_DEPRECATED_ENUM(ALIASED_INCOMPLETE_KIND)
1573 LEGION_DEPRECATED_ENUM(COMPUTE_INCOMPLETE_KIND)
1574} legion_partition_kind_t;
1575
1576typedef enum legion_external_resource_t {
1577 LEGION_EXTERNAL_POSIX_FILE,
1578 LEGION_EXTERNAL_HDF5_FILE,
1579 LEGION_EXTERNAL_INSTANCE,
1580 // for backwards compatibility
1581 LEGION_DEPRECATED_ENUM(EXTERNAL_POSIX_FILE)
1582 LEGION_DEPRECATED_ENUM(EXTERNAL_HDF5_FILE)
1583 LEGION_DEPRECATED_ENUM(EXTERNAL_INSTANCE)
1584} legion_external_resource_t;
1585
1586typedef enum legion_timing_measurement_t {
1587 LEGION_MEASURE_SECONDS,
1588 LEGION_MEASURE_MICRO_SECONDS,
1589 LEGION_MEASURE_NANO_SECONDS,
1590 // for backwards compatibility
1591 LEGION_DEPRECATED_ENUM(MEASURE_SECONDS)
1592 LEGION_DEPRECATED_ENUM(MEASURE_MICRO_SECONDS)
1593 LEGION_DEPRECATED_ENUM(MEASURE_NANO_SECONDS)
1594} legion_timing_measurement_t;
1595
1596typedef enum legion_dependence_type_t {
1597 LEGION_NO_DEPENDENCE = 0,
1598 LEGION_TRUE_DEPENDENCE = 1,
1599 LEGION_ANTI_DEPENDENCE = 2, // WAR or WAW with Write-Only privilege
1600 LEGION_ATOMIC_DEPENDENCE = 3,
1601 LEGION_SIMULTANEOUS_DEPENDENCE = 4,
1602 // for backwards compatibility
1603 LEGION_DEPRECATED_ENUM(NO_DEPENDENCE)
1604 LEGION_DEPRECATED_ENUM(TRUE_DEPENDENCE)
1605 LEGION_DEPRECATED_ENUM(ANTI_DEPENDENCE)
1606 LEGION_DEPRECATED_ENUM(ATOMIC_DEPENDENCE)
1607 LEGION_DEPRECATED_ENUM(SIMULTANEOUS_DEPENDENCE)
1608} legion_dependence_type_t;
1609
1610enum {
1611 LEGION_NAME_SEMANTIC_TAG = 0,
1612 LEGION_SOURCE_FILE_TAG = 1,
1613 LEGION_SOURCE_LINE_TAG = 2,
1614 LEGION_FIRST_AVAILABLE_SEMANTIC_TAG = 3,
1615 // for backwards compatibility
1616 LEGION_DEPRECATED_ENUM(NAME_SEMANTIC_TAG)
1617 LEGION_DEPRECATED_ENUM(SOURCE_FILE_TAG)
1618 LEGION_DEPRECATED_ENUM(SOURCE_LINE_TAG)
1619 LEGION_DEPRECATED_ENUM(FIRST_AVAILABLE_SEMANTIC_TAG)
1620};
1621
1622typedef enum legion_mappable_type_id_t {
1623 LEGION_TASK_MAPPABLE = 0,
1624 LEGION_COPY_MAPPABLE = 1,
1625 LEGION_INLINE_MAPPABLE = 2,
1626 LEGION_ACQUIRE_MAPPABLE = 3,
1627 LEGION_RELEASE_MAPPABLE = 4,
1628 LEGION_CLOSE_MAPPABLE = 5,
1629 LEGION_FILL_MAPPABLE = 6,
1630 LEGION_PARTITION_MAPPABLE = 7,
1631 LEGION_MUST_EPOCH_MAPPABLE = 9,
1632 // for backwards compatibility
1633 LEGION_DEPRECATED_ENUM(TASK_MAPPABLE)
1634 LEGION_DEPRECATED_ENUM(COPY_MAPPABLE)
1635 LEGION_DEPRECATED_ENUM(INLINE_MAPPABLE)
1636 LEGION_DEPRECATED_ENUM(ACQUIRE_MAPPABLE)
1637 LEGION_DEPRECATED_ENUM(RELEASE_MAPPABLE)
1638 LEGION_DEPRECATED_ENUM(CLOSE_MAPPABLE)
1639 LEGION_DEPRECATED_ENUM(FILL_MAPPABLE)
1640 LEGION_DEPRECATED_ENUM(PARTITION_MAPPABLE)
1641 LEGION_DEPRECATED_ENUM(MUST_EPOCH_MAPPABLE)
1642} legion_mappable_type_id;
1643
1644typedef enum legion_type_id_t {
1645 LEGION_TYPE_BOOL = 0,
1646 LEGION_TYPE_INT8 = 1,
1647 LEGION_TYPE_INT16 = 2,
1648 LEGION_TYPE_INT32 = 3,
1649 LEGION_TYPE_INT64 = 4,
1650 LEGION_TYPE_UINT8 = 5,
1651 LEGION_TYPE_UINT16 = 6,
1652 LEGION_TYPE_UINT32 = 7,
1653 LEGION_TYPE_UINT64 = 8,
1654 LEGION_TYPE_FLOAT16 = 9,
1655 LEGION_TYPE_FLOAT32 = 10,
1656 LEGION_TYPE_FLOAT64 = 11,
1657 LEGION_TYPE_COMPLEX32 = 12,
1658 LEGION_TYPE_COMPLEX64 = 13,
1659 LEGION_TYPE_COMPLEX128 = 14,
1660 LEGION_TYPE_TOTAL = 15, // must be last
1661} legion_type_id_t;
1662
1663// Do it like this because the Python CFFI parser is stupid
1664#define LEGION_REDOP_KIND_SUM_VALUE 0
1665#define LEGION_REDOP_KIND_DIFF_VALUE 1
1666#define LEGION_REDOP_KIND_PROD_VALUE 2
1667#define LEGION_REDOP_KIND_DIV_VALUE 3
1668#define LEGION_REDOP_KIND_MAX_VALUE 4
1669#define LEGION_REDOP_KIND_MIN_VALUE 5
1670#define LEGION_REDOP_KIND_OR_VALUE 6
1671#define LEGION_REDOP_KIND_AND_VALUE 7
1672#define LEGION_REDOP_KIND_XOR_VALUE 8
1673#define LEGION_REDOP_KIND_TOTAL_VALUE 9
1674// Don't forget to undef after the legion_builtin_redop_t enum
1675
1676typedef enum legion_redop_kind_t {
1677 LEGION_REDOP_KIND_SUM = LEGION_REDOP_KIND_SUM_VALUE,
1678 LEGION_REDOP_KIND_DIFF = LEGION_REDOP_KIND_DIFF_VALUE,
1679 LEGION_REDOP_KIND_PROD = LEGION_REDOP_KIND_PROD_VALUE,
1680 LEGION_REDOP_KIND_DIV = LEGION_REDOP_KIND_DIV_VALUE,
1681 LEGION_REDOP_KIND_MAX = LEGION_REDOP_KIND_MAX_VALUE,
1682 LEGION_REDOP_KIND_MIN = LEGION_REDOP_KIND_MIN_VALUE,
1683 LEGION_REDOP_KIND_OR = LEGION_REDOP_KIND_OR_VALUE,
1684 LEGION_REDOP_KIND_AND = LEGION_REDOP_KIND_AND_VALUE,
1685 LEGION_REDOP_KIND_XOR = LEGION_REDOP_KIND_XOR_VALUE,
1686 LEGION_REDOP_KIND_TOTAL = LEGION_REDOP_KIND_TOTAL_VALUE,
1687} legion_redop_kind_t;
1688
1689#ifndef LEGION_USE_PYTHON_CFFI
1690// Normal way of doing things for sane compilers
1691#define LEGION_REDOP_VALUE(kind, type) (LEGION_REDOP_BASE + \
1692 ((int)LEGION_REDOP_KIND_##kind * (int)LEGION_TYPE_TOTAL) + \
1693 (int)LEGION_TYPE_##type)
1694#else
1695// Dumb stuff for the Python CFFI parser which can't multiply
1696// so we'll do it the old-school way for them from a time
1697// before multiplication existed and all we had was addition
1698#define MULTIPLY0(x) 0
1699#define MULTIPLY1(x) (x)
1700#define MULTIPLY2(x) (x) + (x)
1701#define MULTIPLY3(x) (x) + MULTIPLY2(x)
1702#define MULTIPLY4(x) (x) + MULTIPLY3(x)
1703#define MULTIPLY5(x) (x) + MULTIPLY4(x)
1704#define MULTIPLY6(x) (x) + MULTIPLY5(x)
1705#define MULTIPLY7(x) (x) + MULTIPLY6(x)
1706#define MULTIPLY8(x) (x) + MULTIPLY7(x)
1707#define MULTIPLY9(x) (x) + MULTIPLY8(x)
1708
1709#define MULTIPLY_(x,y) MULTIPLY##x(y)
1710#define MULTIPLY(x,y) MULTIPLY_(x,y)
1711
1712#define LEGION_REDOP_VALUE(kind, type) LEGION_REDOP_BASE + \
1713 MULTIPLY(LEGION_REDOP_KIND_##kind##_VALUE, LEGION_TYPE_TOTAL) + \
1714 LEGION_TYPE_##type
1715#endif
1716typedef enum legion_builtin_redop_t {
1717 // LEGION_MAX_APPLICATION_REDOP_ID has been claimed by BarrierArrivalReduction
1718 LEGION_REDOP_BASE = LEGION_MAX_APPLICATION_REDOP_ID + 1,
1720 // Sum reductions
1722 LEGION_REDOP_OR_BOOL = LEGION_REDOP_VALUE(SUM,BOOL),
1723 LEGION_REDOP_SUM_INT8 = LEGION_REDOP_VALUE(SUM,INT8),
1724 LEGION_REDOP_SUM_INT16 = LEGION_REDOP_VALUE(SUM,INT16),
1725 LEGION_REDOP_SUM_INT32 = LEGION_REDOP_VALUE(SUM,INT32),
1726 LEGION_REDOP_SUM_INT64 = LEGION_REDOP_VALUE(SUM,INT64),
1727 LEGION_REDOP_SUM_UINT8 = LEGION_REDOP_VALUE(SUM,UINT8),
1728 LEGION_REDOP_SUM_UINT16 = LEGION_REDOP_VALUE(SUM,UINT16),
1729 LEGION_REDOP_SUM_UINT32 = LEGION_REDOP_VALUE(SUM,UINT32),
1730 LEGION_REDOP_SUM_UINT64 = LEGION_REDOP_VALUE(SUM,UINT64),
1731#ifdef LEGION_REDOP_HALF
1732 LEGION_REDOP_SUM_FLOAT16 = LEGION_REDOP_VALUE(SUM,FLOAT16),
1733#endif
1734 LEGION_REDOP_SUM_FLOAT32 = LEGION_REDOP_VALUE(SUM,FLOAT32),
1735 LEGION_REDOP_SUM_FLOAT64 = LEGION_REDOP_VALUE(SUM,FLOAT64),
1736#ifdef LEGION_REDOP_COMPLEX
1737#ifdef LEGION_REDOP_HALF
1738 LEGION_REDOP_SUM_COMPLEX32 = LEGION_REDOP_VALUE(SUM,COMPLEX32),
1739#endif
1740 LEGION_REDOP_SUM_COMPLEX64 = LEGION_REDOP_VALUE(SUM,COMPLEX64),
1741 LEGION_REDOP_SUM_COMPLEX128 = LEGION_REDOP_VALUE(SUM,COMPLEX128),
1742#endif
1744 // Difference reductions
1746 // No difference for bools
1747 LEGION_REDOP_DIFF_INT8 = LEGION_REDOP_VALUE(DIFF,INT8),
1748 LEGION_REDOP_DIFF_INT16 = LEGION_REDOP_VALUE(DIFF,INT16),
1749 LEGION_REDOP_DIFF_INT32 = LEGION_REDOP_VALUE(DIFF,INT32),
1750 LEGION_REDOP_DIFF_INT64 = LEGION_REDOP_VALUE(DIFF,INT64),
1751 LEGION_REDOP_DIFF_UINT8 = LEGION_REDOP_VALUE(DIFF,UINT8),
1752 LEGION_REDOP_DIFF_UINT16 = LEGION_REDOP_VALUE(DIFF,UINT16),
1753 LEGION_REDOP_DIFF_UINT32 = LEGION_REDOP_VALUE(DIFF,UINT32),
1754 LEGION_REDOP_DIFF_UINT64 = LEGION_REDOP_VALUE(DIFF,UINT64),
1755#ifdef LEGION_REDOP_HALF
1756 LEGION_REDOP_DIFF_FLOAT16 = LEGION_REDOP_VALUE(DIFF,FLOAT16),
1757#endif
1758 LEGION_REDOP_DIFF_FLOAT32 = LEGION_REDOP_VALUE(DIFF,FLOAT32),
1759 LEGION_REDOP_DIFF_FLOAT64 = LEGION_REDOP_VALUE(DIFF,FLOAT64),
1760#ifdef LEGION_REDOP_COMPLEX
1761#ifdef LEGION_REDOP_HALF
1762 LEGION_REDOP_DIFF_COMPLEX32 = LEGION_REDOP_VALUE(DIFF,COMPLEX32),
1763#endif
1764 LEGION_REDOP_DIFF_COMPLEX64 = LEGION_REDOP_VALUE(DIFF,COMPLEX64),
1765 // TODO: LEGION_REDOP_DIFF_COMPLEX128,
1766#endif
1768 // Product reductions
1770 LEGION_REDOP_AND_BOOL = LEGION_REDOP_VALUE(PROD,BOOL),
1771 LEGION_REDOP_PROD_INT8 = LEGION_REDOP_VALUE(PROD,INT8),
1772 LEGION_REDOP_PROD_INT16 = LEGION_REDOP_VALUE(PROD,INT16),
1773 LEGION_REDOP_PROD_INT32 = LEGION_REDOP_VALUE(PROD,INT32),
1774 LEGION_REDOP_PROD_INT64 = LEGION_REDOP_VALUE(PROD,INT64),
1775 LEGION_REDOP_PROD_UINT8 = LEGION_REDOP_VALUE(PROD,UINT8),
1776 LEGION_REDOP_PROD_UINT16 = LEGION_REDOP_VALUE(PROD,UINT16),
1777 LEGION_REDOP_PROD_UINT32 = LEGION_REDOP_VALUE(PROD,UINT32),
1778 LEGION_REDOP_PROD_UINT64 = LEGION_REDOP_VALUE(PROD,UINT64),
1779#ifdef LEGION_REDOP_HALF
1780 LEGION_REDOP_PROD_FLOAT16 = LEGION_REDOP_VALUE(PROD,FLOAT16),
1781#endif
1782 LEGION_REDOP_PROD_FLOAT32 = LEGION_REDOP_VALUE(PROD,FLOAT32),
1783 LEGION_REDOP_PROD_FLOAT64 = LEGION_REDOP_VALUE(PROD,FLOAT64),
1784#ifdef LEGION_REDOP_COMPLEX
1785#ifdef LEGION_REDOP_HALF
1786 LEGION_REDOP_PROD_COMPLEX32 = LEGION_REDOP_VALUE(PROD,COMPLEX32),
1787#endif
1788 LEGION_REDOP_PROD_COMPLEX64 = LEGION_REDOP_VALUE(PROD,COMPLEX64),
1789 // TODO: LEGION_REDOP_PROD_COMPLEX128,
1790#endif
1792 // Division reductions
1794 // No division for bools
1795 LEGION_REDOP_DIV_INT8 = LEGION_REDOP_VALUE(DIV,INT8),
1796 LEGION_REDOP_DIV_INT16 = LEGION_REDOP_VALUE(DIV,INT16),
1797 LEGION_REDOP_DIV_INT32 = LEGION_REDOP_VALUE(DIV,INT32),
1798 LEGION_REDOP_DIV_INT64 = LEGION_REDOP_VALUE(DIV,INT64),
1799 LEGION_REDOP_DIV_UINT8 = LEGION_REDOP_VALUE(DIV,UINT8),
1800 LEGION_REDOP_DIV_UINT16 = LEGION_REDOP_VALUE(DIV,UINT16),
1801 LEGION_REDOP_DIV_UINT32 = LEGION_REDOP_VALUE(DIV,UINT32),
1802 LEGION_REDOP_DIV_UINT64 = LEGION_REDOP_VALUE(DIV,UINT64),
1803#ifdef LEGION_REDOP_HALF
1804 LEGION_REDOP_DIV_FLOAT16 = LEGION_REDOP_VALUE(DIV,FLOAT16),
1805#endif
1806 LEGION_REDOP_DIV_FLOAT32 = LEGION_REDOP_VALUE(DIV,FLOAT32),
1807 LEGION_REDOP_DIV_FLOAT64 = LEGION_REDOP_VALUE(DIV,FLOAT64),
1808#ifdef LEGION_REDOP_COMPLEX
1809#ifdef LEGION_REDOP_HALF
1810 LEGION_REDOP_DIV_COMPLEX32 = LEGION_REDOP_VALUE(DIV,COMPLEX32),
1811#endif
1812 LEGION_REDOP_DIV_COMPLEX64 = LEGION_REDOP_VALUE(DIV,COMPLEX64),
1813 // TODO: LEGION_REDOP_DIV_COMPLEX128,
1814#endif
1816 // Max reductions
1818 LEGION_REDOP_MAX_BOOL = LEGION_REDOP_VALUE(MAX,BOOL),
1819 LEGION_REDOP_MAX_INT8 = LEGION_REDOP_VALUE(MAX,INT8),
1820 LEGION_REDOP_MAX_INT16 = LEGION_REDOP_VALUE(MAX,INT16),
1821 LEGION_REDOP_MAX_INT32 = LEGION_REDOP_VALUE(MAX,INT32),
1822 LEGION_REDOP_MAX_INT64 = LEGION_REDOP_VALUE(MAX,INT64),
1823 LEGION_REDOP_MAX_UINT8 = LEGION_REDOP_VALUE(MAX,UINT8),
1824 LEGION_REDOP_MAX_UINT16 = LEGION_REDOP_VALUE(MAX,UINT16),
1825 LEGION_REDOP_MAX_UINT32 = LEGION_REDOP_VALUE(MAX,UINT32),
1826 LEGION_REDOP_MAX_UINT64 = LEGION_REDOP_VALUE(MAX,UINT64),
1827#ifdef LEGION_REDOP_HALF
1828 LEGION_REDOP_MAX_FLOAT16 = LEGION_REDOP_VALUE(MAX,FLOAT16),
1829#endif
1830 LEGION_REDOP_MAX_FLOAT32 = LEGION_REDOP_VALUE(MAX,FLOAT32),
1831 LEGION_REDOP_MAX_FLOAT64 = LEGION_REDOP_VALUE(MAX,FLOAT64),
1832#ifdef LEGION_REDOP_COMPLEX
1833#ifdef LEGION_REDOP_HALF
1834 LEGION_REDOP_MAX_COMPLEX32 = LEGION_REDOP_VALUE(MAX,COMPLEX32),
1835#endif
1836 LEGION_REDOP_MAX_COMPLEX64 = LEGION_REDOP_VALUE(MAX,COMPLEX64),
1837 // TODO: LEGION_REDOP_MAX_COMPLEX128,
1838#endif
1840 // Min reductions
1842 LEGION_REDOP_MIN_BOOL = LEGION_REDOP_VALUE(MIN,BOOL),
1843 LEGION_REDOP_MIN_INT8 = LEGION_REDOP_VALUE(MIN,INT8),
1844 LEGION_REDOP_MIN_INT16 = LEGION_REDOP_VALUE(MIN,INT16),
1845 LEGION_REDOP_MIN_INT32 = LEGION_REDOP_VALUE(MIN,INT32),
1846 LEGION_REDOP_MIN_INT64 = LEGION_REDOP_VALUE(MIN,INT64),
1847 LEGION_REDOP_MIN_UINT8 = LEGION_REDOP_VALUE(MIN,UINT8),
1848 LEGION_REDOP_MIN_UINT16 = LEGION_REDOP_VALUE(MIN,UINT16),
1849 LEGION_REDOP_MIN_UINT32 = LEGION_REDOP_VALUE(MIN,UINT32),
1850 LEGION_REDOP_MIN_UINT64 = LEGION_REDOP_VALUE(MIN,UINT64),
1851#ifdef LEGION_REDOP_HALF
1852 LEGION_REDOP_MIN_FLOAT16 = LEGION_REDOP_VALUE(MIN,FLOAT16),
1853#endif
1854 LEGION_REDOP_MIN_FLOAT32 = LEGION_REDOP_VALUE(MIN,FLOAT32),
1855 LEGION_REDOP_MIN_FLOAT64 = LEGION_REDOP_VALUE(MIN,FLOAT64),
1856#ifdef LEGION_REDOP_COMPLEX
1857#ifdef LEGION_REDOP_HALF
1858 LEGION_REDOP_MIN_COMPLEX32 = LEGION_REDOP_VALUE(MIN,COMPLEX32),
1859#endif
1860 LEGION_REDOP_MIN_COMPLEX64 = LEGION_REDOP_VALUE(MIN,COMPLEX64),
1861 // TODO: LEGION_REDOP_MIN_COMPLEX128
1862#endif
1864 // Bitwise-OR reductions
1866 LEGION_REDOP_OR_INT8 = LEGION_REDOP_VALUE(OR,INT8),
1867 LEGION_REDOP_OR_INT16 = LEGION_REDOP_VALUE(OR,INT16),
1868 LEGION_REDOP_OR_INT32 = LEGION_REDOP_VALUE(OR,INT32),
1869 LEGION_REDOP_OR_INT64 = LEGION_REDOP_VALUE(OR,INT64),
1870 LEGION_REDOP_OR_UINT8 = LEGION_REDOP_VALUE(OR,UINT8),
1871 LEGION_REDOP_OR_UINT16 = LEGION_REDOP_VALUE(OR,UINT16),
1872 LEGION_REDOP_OR_UINT32 = LEGION_REDOP_VALUE(OR,UINT32),
1873 LEGION_REDOP_OR_UINT64 = LEGION_REDOP_VALUE(OR,UINT64),
1874 // No bitwise-or for float or complex types
1876 // Bitwise-AND reductions
1878 LEGION_REDOP_AND_INT8 = LEGION_REDOP_VALUE(AND,INT8),
1879 LEGION_REDOP_AND_INT16 = LEGION_REDOP_VALUE(AND,INT16),
1880 LEGION_REDOP_AND_INT32 = LEGION_REDOP_VALUE(AND,INT32),
1881 LEGION_REDOP_AND_INT64 = LEGION_REDOP_VALUE(AND,INT64),
1882 LEGION_REDOP_AND_UINT8 = LEGION_REDOP_VALUE(AND,UINT8),
1883 LEGION_REDOP_AND_UINT16 = LEGION_REDOP_VALUE(AND,UINT16),
1884 LEGION_REDOP_AND_UINT32 = LEGION_REDOP_VALUE(AND,UINT32),
1885 LEGION_REDOP_AND_UINT64 = LEGION_REDOP_VALUE(AND,UINT64),
1886 // No bitwise-and for float or complex types
1888 // Bitwise-XOR reductions
1890 LEGION_REDOP_XOR_BOOL = LEGION_REDOP_VALUE(XOR,BOOL),
1891 LEGION_REDOP_XOR_INT8 = LEGION_REDOP_VALUE(XOR,INT8),
1892 LEGION_REDOP_XOR_INT16 = LEGION_REDOP_VALUE(XOR,INT16),
1893 LEGION_REDOP_XOR_INT32 = LEGION_REDOP_VALUE(XOR,INT32),
1894 LEGION_REDOP_XOR_INT64 = LEGION_REDOP_VALUE(XOR,INT64),
1895 LEGION_REDOP_XOR_UINT8 = LEGION_REDOP_VALUE(XOR,UINT8),
1896 LEGION_REDOP_XOR_UINT16 = LEGION_REDOP_VALUE(XOR,UINT16),
1897 LEGION_REDOP_XOR_UINT32 = LEGION_REDOP_VALUE(XOR,UINT32),
1898 LEGION_REDOP_XOR_UINT64 = LEGION_REDOP_VALUE(XOR,UINT64),
1899 // No bitwise-xor for float or complex types
1900 LEGION_REDOP_LAST,
1901} legion_builtin_redop_t;
1902
1903#undef LEGION_REDOP_KIND_SUM_VALUE
1904#undef LEGION_REDOP_KIND_DIFF_VALUE
1905#undef LEGION_REDOP_KIND_PROD_VALUE
1906#undef LEGION_REDOP_KIND_DIV_VALUE
1907#undef LEGION_REDOP_KIND_MAX_VALUE
1908#undef LEGION_REDOP_KIND_MIN_VALUE
1909#undef LEGION_REDOP_KIND_TOTAL_VALUE
1910
1911#ifdef LEGION_USE_PYTHON_CFFI
1912#undef MULTIPLY0
1913#undef MULTIPLY1
1914#undef MULTIPLY2
1915#undef MULTIPLY3
1916#undef MULTIPLY4
1917#undef MULTIPLY5
1918#undef MULTIPLY6
1919#undef MULTIPLY7
1920#undef MULTIPLY8
1921#undef MULTIPLY9
1922#undef MULTIPLY_
1923#undef MULTIPLY
1924#endif
1925
1926typedef enum legion_execution_constraint_t {
1927 LEGION_ISA_CONSTRAINT = 0, // instruction set architecture
1928 LEGION_PROCESSOR_CONSTRAINT = 1, // processor kind constraint
1929 LEGION_RESOURCE_CONSTRAINT = 2, // physical resources
1930 LEGION_LAUNCH_CONSTRAINT = 3, // launch configuration
1931 LEGION_COLOCATION_CONSTRAINT = 4, // region requirements in same instance
1932 // for backwards compatibility
1933 LEGION_DEPRECATED_ENUM(ISA_CONSTRAINT)
1934 LEGION_DEPRECATED_ENUM(PROCESSOR_CONSTRAINT)
1935 LEGION_DEPRECATED_ENUM(RESOURCE_CONSTRAINT)
1936 LEGION_DEPRECATED_ENUM(LAUNCH_CONSTRAINT)
1937 LEGION_DEPRECATED_ENUM(COLOCATION_CONSTRAINT)
1938} legion_execution_constraint_t;
1939
1940typedef enum legion_layout_constraint_t {
1941 LEGION_SPECIALIZED_CONSTRAINT = 0, // normal or speicalized (e.g. reduction-fold)
1942 LEGION_MEMORY_CONSTRAINT = 1, // constraint on the kind of memory
1943 LEGION_FIELD_CONSTRAINT = 2, // ordering of fields
1944 LEGION_ORDERING_CONSTRAINT = 3, // ordering of dimensions
1945 LEGION_TILING_CONSTRAINT = 4, // splitting of dimensions
1946 LEGION_DIMENSION_CONSTRAINT = 5, // dimension size constraint
1947 LEGION_ALIGNMENT_CONSTRAINT = 6, // alignment of a field
1948 LEGION_OFFSET_CONSTRAINT = 7, // offset of a field
1949 LEGION_POINTER_CONSTRAINT = 8, // pointer of a field
1950 LEGION_PADDING_CONSTRAINT = 9, // scratch padding
1951 // for backwards compatibility
1952 LEGION_DEPRECATED_ENUM(SPECIALIZED_CONSTRAINT)
1953 LEGION_DEPRECATED_ENUM(MEMORY_CONSTRAINT)
1954 LEGION_DEPRECATED_ENUM(FIELD_CONSTRAINT)
1955 LEGION_DEPRECATED_ENUM(ORDERING_CONSTRAINT)
1956 LEGION_DEPRECATED_ENUM(DIMENSION_CONSTRAINT)
1957 LEGION_DEPRECATED_ENUM(ALIGNMENT_CONSTRAINT)
1958 LEGION_DEPRECATED_ENUM(OFFSET_CONSTRAINT)
1959 LEGION_DEPRECATED_ENUM(POINTER_CONSTRAINT)
1960} legion_layout_constraint_t;
1961
1962typedef enum legion_equality_kind_t {
1963 LEGION_LT_EK = 0, // <
1964 LEGION_LE_EK = 1, // <=
1965 LEGION_GT_EK = 2, // >
1966 LEGION_GE_EK = 3, // >=
1967 LEGION_EQ_EK = 4, // ==
1968 LEGION_NE_EK = 5, // !=
1969 // for backwards compatibility
1970 LEGION_DEPRECATED_ENUM(LT_EK)
1971 LEGION_DEPRECATED_ENUM(LE_EK)
1972 LEGION_DEPRECATED_ENUM(GT_EK)
1973 LEGION_DEPRECATED_ENUM(GE_EK)
1974 LEGION_DEPRECATED_ENUM(EQ_EK)
1975 LEGION_DEPRECATED_ENUM(NE_EK)
1976} legion_equality_kind_t;
1977
1978typedef enum legion_dimension_kind_t {
1979 LEGION_DIM_X = 0, // first logical index space dimension
1980 LEGION_DIM_Y = 1, // second logical index space dimension
1981 LEGION_DIM_Z = 2, // ...
1982 // field dimension (this is here for legacy reasons: Regent has hard coded it)
1983 LEGION_DIM_W = 3, // fourth logical index space dimension
1984 LEGION_DIM_V = 4, // fifth logical index space dimension
1985 LEGION_DIM_U = 5, // ...
1986 LEGION_DIM_T = 6,
1987 LEGION_DIM_S = 7,
1988 LEGION_DIM_R = 8,
1989 LEGION_DIM_F = 9,
1990 // Numerical names for users that want them
1991 LEGION_DIM_0 = LEGION_DIM_X,
1992 LEGION_DIM_1 = LEGION_DIM_Y,
1993 LEGION_DIM_2 = LEGION_DIM_Z,
1994 LEGION_DIM_3 = LEGION_DIM_W,
1995 LEGION_DIM_4 = LEGION_DIM_V,
1996 LEGION_DIM_5 = LEGION_DIM_U,
1997 LEGION_DIM_6 = LEGION_DIM_T,
1998 LEGION_DIM_7 = LEGION_DIM_S,
1999 LEGION_DIM_8 = LEGION_DIM_R,
2000 // for backwards compatibility
2001 LEGION_DEPRECATED_ENUM(DIM_X)
2002 LEGION_DEPRECATED_ENUM(DIM_Y)
2003 LEGION_DEPRECATED_ENUM(DIM_Z)
2004 LEGION_DEPRECATED_ENUM(DIM_W)
2005 LEGION_DEPRECATED_ENUM(DIM_V)
2006 LEGION_DEPRECATED_ENUM(DIM_U)
2007 LEGION_DEPRECATED_ENUM(DIM_T)
2008 LEGION_DEPRECATED_ENUM(DIM_S)
2009 LEGION_DEPRECATED_ENUM(DIM_R)
2010 LEGION_DEPRECATED_ENUM(DIM_F)
2011} legion_dimension_kind_t;
2012
2013// Make all flags 1-hot encoding so we can logically-or them together
2014typedef enum legion_isa_kind_t {
2015 // Top-level ISA Kinds
2016 LEGION_X86_ISA = 0x00000001,
2017 LEGION_ARM_ISA = 0x00000002,
2018 LEGION_PPC_ISA = 0x00000004, // Power PC
2019 LEGION_PTX_ISA = 0x00000008, // auto-launch by runtime
2020 LEGION_CUDA_ISA = 0x00000010, // run on CPU thread bound to CUDA context
2021 LEGION_LUA_ISA = 0x00000020, // run on Lua processor
2022 LEGION_TERRA_ISA = 0x00000040, // JIT to target processor kind
2023 LEGION_LLVM_ISA = 0x00000080, // JIT to target processor kind
2024 LEGION_GL_ISA = 0x00000100, // run on CPU thread with OpenGL context
2025 // x86 Vector Instructions
2026 LEGION_SSE_ISA = 0x00000200,
2027 LEGION_SSE2_ISA = 0x00000400,
2028 LEGION_SSE3_ISA = 0x00000800,
2029 LEGION_SSE4_ISA = 0x00001000,
2030 LEGION_AVX_ISA = 0x00002000,
2031 LEGION_AVX2_ISA = 0x00004000,
2032 LEGION_FMA_ISA = 0x00008000,
2033 // PowerPC Vector Insructions
2034 LEGION_VSX_ISA = 0x00010000,
2035 // GPU variants
2036 LEGION_SM_10_ISA = 0x00020000,
2037 LEGION_SM_20_ISA = 0x00040000,
2038 LEGION_SM_30_ISA = 0x00080000,
2039 LEGION_SM_35_ISA = 0x00100000,
2040 // ARM Vector Instructions
2041 LEGION_NEON_ISA = 0x00200000,
2042 // for backwards compatibility
2043 LEGION_DEPRECATED_ENUM(X86_ISA)
2044 LEGION_DEPRECATED_ENUM(ARM_ISA)
2045 LEGION_DEPRECATED_ENUM(PPC_ISA)
2046 LEGION_DEPRECATED_ENUM(PTX_ISA)
2047 LEGION_DEPRECATED_ENUM(CUDA_ISA)
2048 LEGION_DEPRECATED_ENUM(LUA_ISA)
2049 LEGION_DEPRECATED_ENUM(TERRA_ISA)
2050 LEGION_DEPRECATED_ENUM(LLVM_ISA)
2051 LEGION_DEPRECATED_ENUM(GL_ISA)
2052 LEGION_DEPRECATED_ENUM(SSE_ISA)
2053 LEGION_DEPRECATED_ENUM(SSE2_ISA)
2054 LEGION_DEPRECATED_ENUM(SSE3_ISA)
2055 LEGION_DEPRECATED_ENUM(SSE4_ISA)
2056 LEGION_DEPRECATED_ENUM(AVX_ISA)
2057 LEGION_DEPRECATED_ENUM(AVX2_ISA)
2058 LEGION_DEPRECATED_ENUM(FMA_ISA)
2059 LEGION_DEPRECATED_ENUM(VSX_ISA)
2060 LEGION_DEPRECATED_ENUM(SM_10_ISA)
2061 LEGION_DEPRECATED_ENUM(SM_20_ISA)
2062 LEGION_DEPRECATED_ENUM(SM_30_ISA)
2063 LEGION_DEPRECATED_ENUM(SM_35_ISA)
2064 LEGION_DEPRECATED_ENUM(NEON_ISA)
2065} legion_isa_kind_t;
2066
2067typedef enum legion_resource_constraint_t {
2068 LEGION_L1_CACHE_SIZE = 0,
2069 LEGION_L2_CACHE_SIZE = 1,
2070 LEGION_L3_CACHE_SIZE = 2,
2071 LEGION_L1_CACHE_ASSOCIATIVITY = 3,
2072 LEGION_L2_CACHE_ASSOCIATIVITY = 4,
2073 LEGION_L3_CACHE_ASSOCIATIVITY = 5,
2074 LEGION_REGISTER_FILE_SIZE = 6,
2075 LEGION_SHARED_MEMORY_SIZE = 7,
2076 LEGION_TEXTURE_CACHE_SIZE = 8,
2077 LEGION_CONSTANT_CACHE_SIZE = 9,
2078 LEGION_NAMED_BARRIERS = 10,
2079 LEGION_SM_COUNT = 11, // total SMs on the device
2080 LEGION_MAX_OCCUPANCY = 12, // max warps per SM
2081 // for backwards compatibility
2082 LEGION_DEPRECATED_ENUM(L1_CACHE_SIZE)
2083 LEGION_DEPRECATED_ENUM(L2_CACHE_SIZE)
2084 LEGION_DEPRECATED_ENUM(L3_CACHE_SIZE)
2085 LEGION_DEPRECATED_ENUM(L1_CACHE_ASSOCIATIVITY)
2086 LEGION_DEPRECATED_ENUM(L2_CACHE_ASSOCIATIVITY)
2087 LEGION_DEPRECATED_ENUM(L3_CACHE_ASSOCIATIVITY)
2088 LEGION_DEPRECATED_ENUM(REGISTER_FILE_SIZE)
2089 LEGION_DEPRECATED_ENUM(SHARED_MEMORY_SIZE)
2090 LEGION_DEPRECATED_ENUM(TEXTURE_CACHE_SIZE)
2091 LEGION_DEPRECATED_ENUM(CONSTANT_CACHE_SIZE)
2092 LEGION_DEPRECATED_ENUM(NAMED_BARRIERS)
2093 LEGION_DEPRECATED_ENUM(SM_COUNT)
2094 LEGION_DEPRECATED_ENUM(MAX_OCCUPANCY)
2095} legion_resource_constraint_t;
2096
2097typedef enum legion_launch_constraint_t {
2098 LEGION_CTA_SHAPE = 0,
2099 LEGION_GRID_SHAPE = 1,
2100 LEGION_DYNAMIC_SHARED_MEMORY = 2,
2101 LEGION_REGISTERS_PER_THREAD = 3,
2102 LEGION_CTAS_PER_SM = 4,
2103 LEGION_NAMED_BARRIERS_PER_CTA = 5,
2104} legion_launch_constraint_t;
2105
2106typedef enum legion_specialized_constraint_t {
2107 LEGION_NO_SPECIALIZE = 0,
2108 LEGION_AFFINE_SPECIALIZE = 1, // affine layout
2109 LEGION_COMPACT_SPECIALIZE = 2, // compacted sparsity
2110 LEGION_AFFINE_REDUCTION_SPECIALIZE = 3,
2111 LEGION_COMPACT_REDUCTION_SPECIALIZE = 4,
2112 LEGION_VIRTUAL_SPECIALIZE = 5,
2113 // All file types must go below here, everything else above
2114 LEGION_GENERIC_FILE_SPECIALIZE,
2115 LEGION_HDF5_FILE_SPECIALIZE,
2116 // for backards compatibility
2117 LEGION_DEPRECATED_ENUM(NO_SPECIALIZE)
2118 LEGION_DEPRECATED_ENUM(AFFINE_SPECIALIZE)
2119 LEGION_DEPRECATED_ENUM_FROM(NORMAL_SPECIALIZE,
2120 LEGION_AFFINE_SPECIALIZE)
2121 LEGION_DEPRECATED_ENUM(COMPACT_SPECIALIZE)
2122 LEGION_DEPRECATED_ENUM(AFFINE_REDUCTION_SPECIALIZE)
2123 LEGION_DEPRECATED_ENUM_FROM(REDUCTION_FOLD_SPECIALIZE,
2124 LEGION_AFFINE_REDUCTION_SPECIALIZE)
2125 LEGION_DEPRECATED_ENUM(COMPACT_REDUCTION_SPECIALIZE)
2126 LEGION_DEPRECATED_ENUM_FROM(REDUCTION_LIST_SPECIALIZE,
2127 LEGION_COMPACT_REDUCTION_SPECIALIZE)
2128 LEGION_DEPRECATED_ENUM(VIRTUAL_SPECIALIZE)
2129 LEGION_DEPRECATED_ENUM(GENERIC_FILE_SPECIALIZE)
2130 LEGION_DEPRECATED_ENUM(HDF5_FILE_SPECIALIZE)
2131} legion_specialized_constraint_t;
2132
2133// Keep this in sync with Domain::MAX_RECT_DIM in legion_domain.h
2134// these have to be macros for interacting with the preprocessor
2135#define LEGION_MAX_POINT_DIM (LEGION_MAX_DIM)
2136#define LEGION_MAX_RECT_DIM (LEGION_MAX_DIM)
2137typedef enum legion_domain_max_rect_dim_t {
2138 // for backwards compatibility
2139 LEGION_DEPRECATED_ENUM(MAX_POINT_DIM)
2140 LEGION_DEPRECATED_ENUM(MAX_RECT_DIM)
2141} legion_domain_max_rect_dim_t;
2142
2143#undef LEGION_DEPRECATED_ENUM
2144#undef LEGION_DEPRECATED_ENUM_FROM
2145
2146typedef enum legion_unbound_pool_scope_t {
2147 // Bounded pool so other allocations always permitted in parallel
2148 LEGION_BOUNDED_POOL,
2149 // Only allocations for the same task are permitted in parallel
2150 LEGION_STRICT_UNBOUNDED_POOL,
2151 // Only tasks in the same index space task launch
2152 // are allowed to allocate in parallel
2153 LEGION_INDEX_TASK_UNBOUNDED_POOL,
2154 // Anything else is allowed to allocate in parallel
2155 LEGION_PERMISSIVE_UNBOUNDED_POOL,
2156} legion_unbounded_pool_scope_t;
2157
2158//==========================================================================
2159// Types
2160//==========================================================================
2161
2162typedef realm_processor_kind_t legion_processor_kind_t;
2163typedef realm_memory_kind_t legion_memory_kind_t;
2164typedef realm_reduction_op_id_t legion_reduction_op_id_t;
2165typedef realm_custom_serdez_id_t legion_custom_serdez_id_t;
2166typedef realm_address_space_t legion_address_space_t;
2167typedef realm_file_mode_t legion_file_mode_t;
2168typedef realm_id_t legion_proc_id_t;
2169typedef realm_id_t legion_memory_id_t;
2170typedef int legion_task_priority_t;
2171typedef int legion_garbage_collection_priority_t;
2172typedef long long legion_coord_t;
2173typedef unsigned int legion_color_t;
2174typedef unsigned int legion_field_id_t;
2175typedef unsigned int legion_trace_id_t;
2176typedef unsigned int legion_mapper_id_t;
2177typedef unsigned int legion_context_id_t;
2178typedef unsigned int legion_instance_id_t;
2179typedef unsigned int legion_type_tag_t;
2180typedef unsigned int legion_index_space_id_t;
2181typedef unsigned int legion_index_partition_id_t;
2182typedef unsigned int legion_index_tree_id_t;
2183typedef unsigned int legion_field_space_id_t;
2184typedef unsigned int legion_generation_id_t;
2185typedef unsigned int legion_type_handle;
2186typedef unsigned int legion_projection_id_t;
2187typedef unsigned int legion_sharding_id_t;
2188typedef unsigned int legion_concurrent_id_t;
2189typedef unsigned int legion_region_tree_id_t;
2190typedef unsigned int legion_tunable_id_t;
2191typedef unsigned int legion_local_variable_id_t;
2192typedef unsigned int legion_shard_id_t;
2193typedef unsigned int legion_variant_id_t;
2194typedef unsigned long long legion_distributed_id_t;
2195typedef unsigned long legion_mapping_tag_id_t;
2196typedef unsigned long legion_code_descriptor_id_t;
2197typedef unsigned long legion_semantic_tag_t;
2198typedef unsigned long long legion_unique_id_t;
2199typedef unsigned long long legion_version_id_t;
2200typedef unsigned long long legion_projection_epoch_id_t;
2201typedef unsigned long long legion_provenance_id_t;
2202typedef realm_task_func_id_t legion_task_id_t;
2203typedef unsigned long legion_layout_constraint_id_t;
2204typedef long long legion_internal_color_t;
2205
2206#endif // __LEGION_CONFIG_H__
2207