pyomp 0.5.0__cp314-cp314t-macosx_11_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. numba/openmp/__init__.py +106 -0
  2. numba/openmp/_version.py +34 -0
  3. numba/openmp/analysis.py +251 -0
  4. numba/openmp/compiler.py +402 -0
  5. numba/openmp/config.py +27 -0
  6. numba/openmp/decorators.py +27 -0
  7. numba/openmp/exceptions.py +26 -0
  8. numba/openmp/ir_utils.py +4 -0
  9. numba/openmp/libs/openmp/lib/libgomp.1.dylib +0 -0
  10. numba/openmp/libs/openmp/lib/libgomp.dylib +0 -0
  11. numba/openmp/libs/openmp/lib/libiomp5.dylib +0 -0
  12. numba/openmp/libs/openmp/lib/libomp.dylib +0 -0
  13. numba/openmp/libs/openmp/patches/14.0.6/0001-BACKPORT-Fix-for-CUDA-OpenMP-RTL.patch +39 -0
  14. numba/openmp/libs/openmp/patches/14.0.6/0002-Fix-missing-includes.patch +12 -0
  15. numba/openmp/libs/openmp/patches/14.0.6/0003-Link-static-LLVM-libs.patch +13 -0
  16. numba/openmp/libs/openmp/patches/15.0.7/0001-Fix-missing-includes.patch +14 -0
  17. numba/openmp/libs/openmp/patches/15.0.7/0002-Link-LLVM-statically.patch +101 -0
  18. numba/openmp/libs/openmp/patches/15.0.7/0003-Disable-opaque-pointers-DeviceRTL-bitcode.patch +12 -0
  19. numba/openmp/libs/openmp/patches/16.0.6/0001-Load-plugins-from-install-directory.patch +53 -0
  20. numba/openmp/libs/openmp/patches/16.0.6/0002-Link-LLVM-statically.patch +218 -0
  21. numba/openmp/libs/openmp/patches/20.1.8/0001-Enable-standalone-build.patch +13 -0
  22. numba/openmp/libs/openmp/patches/20.1.8/0002-Link-statically-LLVM.patch +24 -0
  23. numba/openmp/libs/openmp/patches/20.1.8/0003-Do-not-build-liboffload.patch +12 -0
  24. numba/openmp/libs/pass/CGIntrinsicsOpenMP.cpp +2939 -0
  25. numba/openmp/libs/pass/CGIntrinsicsOpenMP.h +606 -0
  26. numba/openmp/libs/pass/CMakeLists.txt +57 -0
  27. numba/openmp/libs/pass/DebugOpenMP.cpp +17 -0
  28. numba/openmp/libs/pass/DebugOpenMP.h +28 -0
  29. numba/openmp/libs/pass/IntrinsicsOpenMP.cpp +837 -0
  30. numba/openmp/libs/pass/IntrinsicsOpenMP.h +13 -0
  31. numba/openmp/libs/pass/IntrinsicsOpenMP_CAPI.h +23 -0
  32. numba/openmp/libs/pass/libIntrinsicsOpenMP.dylib +0 -0
  33. numba/openmp/link_utils.py +126 -0
  34. numba/openmp/llvm_pass.py +48 -0
  35. numba/openmp/llvmlite_extensions.py +75 -0
  36. numba/openmp/omp_context.py +242 -0
  37. numba/openmp/omp_grammar.py +696 -0
  38. numba/openmp/omp_ir.py +2105 -0
  39. numba/openmp/omp_lower.py +3125 -0
  40. numba/openmp/omp_runtime.py +107 -0
  41. numba/openmp/overloads.py +53 -0
  42. numba/openmp/parser.py +6 -0
  43. numba/openmp/tags.py +532 -0
  44. numba/openmp/tests/test_openmp.py +5056 -0
  45. pyomp-0.5.0.dist-info/METADATA +193 -0
  46. pyomp-0.5.0.dist-info/RECORD +52 -0
  47. pyomp-0.5.0.dist-info/WHEEL +6 -0
  48. pyomp-0.5.0.dist-info/licenses/LICENSE +25 -0
  49. pyomp-0.5.0.dist-info/licenses/LICENSE-OPENMP.txt +361 -0
  50. pyomp-0.5.0.dist-info/top_level.txt +3 -0
  51. pyomp.dylibs/libc++.1.0.dylib +0 -0
  52. pyomp.dylibs/libzstd.1.5.7.dylib +0 -0
@@ -0,0 +1,696 @@
1
+ openmp_grammar = r"""
2
+ openmp_statement: openmp_construct
3
+ | openmp_directive
4
+ openmp_directive: barrier_directive
5
+ | taskwait_directive
6
+ | taskyield_directive
7
+ | flush_directive
8
+ barrier_directive: BARRIER
9
+ taskwait_directive: TASKWAIT
10
+ taskyield_directive: TASKYIELD
11
+ BARRIER: "barrier"
12
+ TASKWAIT: "taskwait"
13
+ TASKYIELD: "taskyield"
14
+ taskgroup_directive: TASKGROUP
15
+ taskgroup_construct: taskgroup_directive
16
+ TASKGROUP: "taskgroup"
17
+ openmp_construct: parallel_construct
18
+ | parallel_for_construct
19
+ | for_construct
20
+ | single_construct
21
+ | task_construct
22
+ | teams_construct
23
+ | teams_distribute_construct
24
+ | teams_distribute_simd_construct
25
+ | teams_distribute_parallel_for_construct
26
+ | teams_distribute_parallel_for_simd_construct
27
+ | loop_construct
28
+ | teams_loop_construct
29
+ | target_construct
30
+ | target_teams_construct
31
+ | target_teams_distribute_construct
32
+ | target_teams_distribute_simd_construct
33
+ | target_teams_distribute_parallel_for_simd_construct
34
+ | target_teams_distribute_parallel_for_construct
35
+ | target_loop_construct
36
+ | target_teams_loop_construct
37
+ | target_enter_data_construct
38
+ | target_exit_data_construct
39
+ | distribute_construct
40
+ | distribute_simd_construct
41
+ | distribute_parallel_for_construct
42
+ | distribute_parallel_for_simd_construct
43
+ | critical_construct
44
+ | atomic_construct
45
+ | sections_construct
46
+ | section_construct
47
+ | simd_construct
48
+ | for_simd_construct
49
+ | parallel_for_simd_construct
50
+ | target_data_construct
51
+ | target_update_construct
52
+ | parallel_sections_construct
53
+ | master_construct
54
+ | ordered_construct
55
+ for_simd_construct: for_simd_directive
56
+ for_simd_directive: FOR SIMD [for_simd_clause*]
57
+ for_simd_clause: for_clause
58
+ | simd_clause
59
+ parallel_for_simd_construct: parallel_for_simd_directive
60
+ parallel_for_simd_directive: PARALLEL FOR SIMD [parallel_for_simd_clause*]
61
+ parallel_for_simd_clause: parallel_for_clause
62
+ | simd_clause
63
+ distribute_construct: distribute_directive
64
+ distribute_simd_construct: distribute_simd_directive
65
+ distribute_directive: DISTRIBUTE [distribute_clause*]
66
+ distribute_simd_directive: DISTRIBUTE SIMD [distribute_simd_clause*]
67
+ distribute_clause: private_clause
68
+ | firstprivate_clause
69
+ // | lastprivate_distribute_clause
70
+ | collapse_clause
71
+ | dist_schedule_clause
72
+ | allocate_clause
73
+ distribute_simd_clause: private_clause
74
+ | firstprivate_clause
75
+ // | lastprivate_distribute_clause
76
+ | collapse_clause
77
+ | dist_schedule_clause
78
+ | allocate_clause
79
+ | if_clause
80
+ // | safelen_clause
81
+ // | simdlen_clause
82
+ | linear_clause
83
+ | aligned_clause
84
+ // | nontemporal_clause
85
+ | reduction_clause
86
+ // | order_clause
87
+
88
+ teams_distribute_clause: num_teams_clause
89
+ | thread_limit_clause
90
+ | data_default_clause
91
+ | private_clause
92
+ | firstprivate_clause
93
+ | data_sharing_clause
94
+ | reduction_clause
95
+ | allocate_clause
96
+ // | lastprivate_distribute_clause
97
+ | collapse_clause
98
+ | dist_schedule_clause
99
+ | ompx_attribute
100
+
101
+ teams_distribute_simd_clause: num_teams_clause
102
+ | thread_limit_clause
103
+ | data_default_clause
104
+ | private_clause
105
+ | firstprivate_clause
106
+ | data_sharing_clause
107
+ | reduction_clause
108
+ | allocate_clause
109
+ // | lastprivate_distribute_clause
110
+ | collapse_clause
111
+ | dist_schedule_clause
112
+ | if_clause
113
+ // | safelen_clause
114
+ // | simdlen_clause
115
+ | linear_clause
116
+ | aligned_clause
117
+ // | nontemporal_clause
118
+ // | order_clause
119
+ | ompx_attribute
120
+
121
+ distribute_parallel_for_construct: distribute_parallel_for_directive
122
+ distribute_parallel_for_directive: DISTRIBUTE PARALLEL FOR [distribute_parallel_for_clause*]
123
+ distribute_parallel_for_clause: if_clause
124
+ | num_threads_clause
125
+ | data_default_clause
126
+ | private_clause
127
+ | firstprivate_clause
128
+ | data_sharing_clause
129
+ | reduction_clause
130
+ | copyin_clause
131
+ // | proc_bind_clause
132
+ | allocate_clause
133
+ | lastprivate_clause
134
+ | linear_clause
135
+ | schedule_clause
136
+ | collapse_clause
137
+ | ORDERED
138
+ | NOWAIT
139
+ // | order_clause
140
+ | dist_schedule_clause
141
+
142
+ distribute_parallel_for_simd_construct: distribute_parallel_for_simd_directive
143
+ distribute_parallel_for_simd_directive: DISTRIBUTE PARALLEL FOR SIMD [distribute_parallel_for_simd_clause*]
144
+ distribute_parallel_for_simd_clause: if_clause
145
+ | num_threads_clause
146
+ | data_default_clause
147
+ | private_clause
148
+ | firstprivate_clause
149
+ | data_sharing_clause
150
+ | reduction_clause
151
+ | copyin_clause
152
+ // | proc_bind_clause
153
+ | allocate_clause
154
+ | lastprivate_clause
155
+ | linear_clause
156
+ | schedule_clause
157
+ | collapse_clause
158
+ | ORDERED
159
+ | NOWAIT
160
+ // | order_clause
161
+ | dist_schedule_clause
162
+ // | safelen_clause
163
+ // | simdlen_clause
164
+ | aligned_clause
165
+ // | nontemporal_clause
166
+
167
+ target_data_construct: target_data_directive
168
+ target_data_directive: TARGET DATA [target_data_clause*]
169
+ DATA: "data"
170
+ ENTER: "enter"
171
+ EXIT: "exit"
172
+ target_enter_data_construct: target_enter_data_directive
173
+ target_enter_data_directive: TARGET ENTER DATA [target_enter_data_clause*]
174
+ target_exit_data_construct: target_exit_data_directive
175
+ target_exit_data_directive: TARGET EXIT DATA [target_exit_data_clause*]
176
+ target_data_clause: device_clause
177
+ | map_clause
178
+ | if_clause
179
+ | NOWAIT
180
+ | depend_with_modifier_clause
181
+ target_enter_data_clause: device_clause
182
+ | map_enter_clause
183
+ | if_clause
184
+ | NOWAIT
185
+ | depend_with_modifier_clause
186
+ target_exit_data_clause: device_clause
187
+ | map_exit_clause
188
+ | if_clause
189
+ | NOWAIT
190
+ | depend_with_modifier_clause
191
+ device_clause: "device" "(" const_num_or_var ")"
192
+ map_clause: "map" "(" [map_type ":"] var_list ")"
193
+ map_type: ALLOC | TO | FROM | TOFROM
194
+ map_enter_clause: "map" "(" map_enter_type ":" var_list ")"
195
+ map_enter_type: ALLOC | TO
196
+ map_exit_clause: "map" "(" map_exit_type ":" var_list ")"
197
+ map_exit_type: FROM | RELEASE | DELETE
198
+ update_motion_type: TO | FROM
199
+ TO: "to"
200
+ FROM: "from"
201
+ ALLOC: "alloc"
202
+ TOFROM: "tofrom"
203
+ RELEASE: "release"
204
+ DELETE: "delete"
205
+ parallel_sections_construct: parallel_sections_directive
206
+ parallel_sections_directive: PARALLEL SECTIONS [parallel_sections_clause*]
207
+ parallel_sections_clause: unique_parallel_clause
208
+ | data_default_clause
209
+ | private_clause
210
+ | firstprivate_clause
211
+ | lastprivate_clause
212
+ | data_sharing_clause
213
+ | reduction_clause
214
+ sections_construct: sections_directive
215
+ sections_directive: SECTIONS [sections_clause*]
216
+ SECTIONS: "sections"
217
+ sections_clause: private_clause
218
+ | firstprivate_clause
219
+ | lastprivate_clause
220
+ | reduction_clause
221
+ | NOWAIT
222
+ section_construct: section_directive
223
+ section_directive: SECTION
224
+ SECTION: "section"
225
+ atomic_construct: atomic_directive
226
+ atomic_directive: ATOMIC [atomic_clause] [seq_cst_clause]
227
+ ATOMIC: "atomic"
228
+ atomic_clause: READ
229
+ | WRITE
230
+ | UPDATE
231
+ | CAPTURE
232
+ READ: "read"
233
+ WRITE: "write"
234
+ UPDATE: "update"
235
+ CAPTURE: "capture"
236
+ seq_cst_clause: "seq_cst"
237
+ critical_construct: critical_directive
238
+ critical_directive: CRITICAL
239
+ CRITICAL: "critical"
240
+ teams_construct: teams_directive
241
+ teams_directive: TEAMS [teams_clause*]
242
+ teams_distribute_directive: TEAMS DISTRIBUTE [teams_distribute_clause*]
243
+ teams_distribute_simd_directive: TEAMS DISTRIBUTE SIMD [teams_distribute_simd_clause*]
244
+ target_construct: target_directive
245
+ target_teams_distribute_parallel_for_simd_construct: target_teams_distribute_parallel_for_simd_directive
246
+ target_teams_distribute_parallel_for_construct: target_teams_distribute_parallel_for_directive
247
+ teams_distribute_parallel_for_construct: teams_distribute_parallel_for_directive
248
+ teams_distribute_parallel_for_simd_construct: teams_distribute_parallel_for_simd_directive
249
+ loop_construct: loop_directive
250
+ teams_loop_construct: teams_loop_directive
251
+ target_loop_construct: target_loop_directive
252
+ target_teams_loop_construct: target_teams_loop_directive
253
+ target_teams_construct: target_teams_directive
254
+ target_teams_distribute_construct: target_teams_distribute_directive
255
+ target_teams_distribute_simd_construct: target_teams_distribute_simd_directive
256
+ teams_distribute_construct: teams_distribute_directive
257
+ teams_distribute_simd_construct: teams_distribute_simd_directive
258
+ target_directive: TARGET [target_clause*]
259
+ HAS_DEVICE_ADDR: "has_device_addr"
260
+ has_device_addr_clause: HAS_DEVICE_ADDR "(" var_list ")"
261
+ target_clause: if_clause
262
+ | device_clause
263
+ | thread_limit_clause
264
+ | private_clause
265
+ | firstprivate_clause
266
+ // | in_reduction_clause
267
+ | map_clause
268
+ | is_device_ptr_clause
269
+ | has_device_addr_clause
270
+ // | defaultmap_clause
271
+ | NOWAIT
272
+ | allocate_clause
273
+ | depend_with_modifier_clause
274
+ // | uses_allocators_clause
275
+ | ompx_attribute
276
+ teams_clause: num_teams_clause
277
+ | thread_limit_clause
278
+ | data_default_clause
279
+ | private_clause
280
+ | firstprivate_clause
281
+ | data_sharing_clause
282
+ | reduction_clause
283
+ | allocate_clause
284
+ num_teams_clause: NUM_TEAMS "(" const_num_or_var ")"
285
+ NUM_TEAMS: "num_teams"
286
+ thread_limit_clause: THREAD_LIMIT "(" const_num_or_var ")"
287
+ THREAD_LIMIT: "thread_limit"
288
+
289
+ dist_schedule_expr: DIST_SCHEDULE "(" STATIC ")"
290
+ dist_schedule_no_expr: DIST_SCHEDULE "(" STATIC "," const_num_or_var ")"
291
+ dist_schedule_clause: dist_schedule_expr
292
+ | dist_schedule_no_expr
293
+ DIST_SCHEDULE: "dist_schedule"
294
+
295
+ target_teams_distribute_parallel_for_simd_directive: TARGET TEAMS DISTRIBUTE PARALLEL FOR SIMD [target_teams_distribute_parallel_for_simd_clause*]
296
+ target_teams_distribute_parallel_for_simd_clause: if_clause
297
+ | device_clause
298
+ | private_clause
299
+ | firstprivate_clause
300
+ // | in_reduction_clause
301
+ | map_clause
302
+ | is_device_ptr_clause
303
+ // | defaultmap_clause
304
+ | NOWAIT
305
+ | allocate_clause
306
+ | depend_with_modifier_clause
307
+ // | uses_allocators_clause
308
+ | num_teams_clause
309
+ | thread_limit_clause
310
+ | data_default_clause
311
+ | data_sharing_clause
312
+ | reduction_clause
313
+ | num_threads_clause
314
+ | copyin_clause
315
+ // | proc_bind_clause
316
+ | lastprivate_clause
317
+ | linear_clause
318
+ | schedule_clause
319
+ | collapse_clause
320
+ | ORDERED
321
+ // | order_clause
322
+ | dist_schedule_clause
323
+ // | safelen_clause
324
+ // | simdlen_clause
325
+ | aligned_clause
326
+ // | nontemporal_clause
327
+ | ompx_attribute
328
+
329
+ teams_distribute_parallel_for_simd_directive: TEAMS DISTRIBUTE PARALLEL FOR SIMD [teams_distribute_parallel_for_simd_clause*]
330
+ teams_distribute_parallel_for_simd_clause: num_teams_clause
331
+ | thread_limit_clause
332
+ // | default_clause
333
+ | private_clause
334
+ | firstprivate_clause
335
+ | data_sharing_clause
336
+ | reduction_clause
337
+ | if_clause
338
+ | num_threads_clause
339
+ | copyin_clause
340
+ // | proc_bind_clause
341
+ | lastprivate_clause
342
+ | linear_clause
343
+ | schedule_clause
344
+ | collapse_clause
345
+ | ORDERED
346
+ | NOWAIT
347
+ // | order_clause
348
+ | dist_schedule_clause
349
+ // | safelen_clause
350
+ // | simdlen_clause
351
+ | aligned_clause
352
+ // | nontemporal_clause
353
+ // | in_reduction_clause
354
+ | map_clause
355
+ | is_device_ptr_clause
356
+ // | defaultmap_clause
357
+ | allocate_clause
358
+ | depend_with_modifier_clause
359
+ // | uses_allocators_clause
360
+ | data_default_clause
361
+ | ompx_attribute
362
+
363
+ target_teams_distribute_parallel_for_directive: TARGET TEAMS DISTRIBUTE PARALLEL FOR [target_teams_distribute_parallel_for_clause*]
364
+ target_teams_distribute_parallel_for_clause: if_clause
365
+ | device_clause
366
+ | private_clause
367
+ | firstprivate_clause
368
+ // | in_reduction_clause
369
+ | map_clause
370
+ | is_device_ptr_clause
371
+ // | defaultmap_clause
372
+ | NOWAIT
373
+ | allocate_clause
374
+ | depend_with_modifier_clause
375
+ // | uses_allocators_clause
376
+ | num_teams_clause
377
+ | thread_limit_clause
378
+ | data_default_clause
379
+ | data_sharing_clause
380
+ | reduction_clause
381
+ | num_threads_clause
382
+ | copyin_clause
383
+ // | proc_bind_clause
384
+ | lastprivate_clause
385
+ | linear_clause
386
+ | schedule_clause
387
+ | collapse_clause
388
+ | ORDERED
389
+ // | order_clause
390
+ | dist_schedule_clause
391
+ | ompx_attribute
392
+
393
+ teams_distribute_parallel_for_directive: TEAMS DISTRIBUTE PARALLEL FOR [teams_distribute_parallel_for_clause*]
394
+ teams_distribute_parallel_for_clause: num_teams_clause
395
+ | thread_limit_clause
396
+ | data_default_clause
397
+ | private_clause
398
+ | firstprivate_clause
399
+ | data_sharing_clause
400
+ | reduction_clause
401
+ | allocate_clause
402
+ | if_clause
403
+ | num_threads_clause
404
+ | copyin_clause
405
+ // | proc_bind_clause
406
+ | lastprivate_clause
407
+ | linear_clause
408
+ | schedule_clause
409
+ | collapse_clause
410
+ | ORDERED
411
+ | NOWAIT
412
+ // | order_clause
413
+ | dist_schedule_clause
414
+ | ompx_attribute
415
+
416
+ LOOP: "loop"
417
+
418
+ ompx_attribute: OMPX_ATTRIBUTE "(" PYTHON_NAME "(" number_list ")" ")"
419
+ OMPX_ATTRIBUTE: "ompx_attribute"
420
+ loop_directive: LOOP [teams_distribute_parallel_for_clause*]
421
+ teams_loop_directive: TEAMS LOOP [teams_distribute_parallel_for_clause*]
422
+ target_loop_directive: TARGET LOOP [target_teams_distribute_parallel_for_clause*]
423
+ target_teams_loop_directive: TARGET TEAMS LOOP [target_teams_distribute_parallel_for_clause*]
424
+
425
+ target_teams_directive: TARGET TEAMS [target_teams_clause*]
426
+ target_teams_clause: if_clause
427
+ | device_clause
428
+ | private_clause
429
+ | firstprivate_clause
430
+ // | in_reduction_clause
431
+ | map_clause
432
+ | is_device_ptr_clause
433
+ // | defaultmap_clause
434
+ | NOWAIT
435
+ | allocate_clause
436
+ | depend_with_modifier_clause
437
+ // | uses_allocators_clause
438
+ | num_teams_clause
439
+ | thread_limit_clause
440
+ | data_default_clause
441
+ | data_sharing_clause
442
+ // | reduction_default_only_clause
443
+ | reduction_clause
444
+ | ompx_attribute
445
+
446
+ target_teams_distribute_simd_directive: TARGET TEAMS DISTRIBUTE SIMD [target_teams_distribute_simd_clause*]
447
+ target_teams_distribute_simd_clause: if_clause
448
+ | device_clause
449
+ | private_clause
450
+ | firstprivate_clause
451
+ // | in_reduction_clause
452
+ | map_clause
453
+ | is_device_ptr_clause
454
+ // | defaultmap_clause
455
+ | NOWAIT
456
+ | allocate_clause
457
+ | depend_with_modifier_clause
458
+ // | uses_allocators_clause
459
+ | num_teams_clause
460
+ | thread_limit_clause
461
+ | data_default_clause
462
+ | data_sharing_clause
463
+ | reduction_clause
464
+ // | reduction_default_only_clause
465
+ | lastprivate_clause
466
+ | collapse_clause
467
+ | dist_schedule_clause
468
+ // | safelen_clause
469
+ // | simdlen_clause
470
+ | linear_clause
471
+ | aligned_clause
472
+ // | nontemporal_clause
473
+ // | order_clause
474
+ | ompx_attribute
475
+
476
+ target_teams_distribute_directive: TARGET TEAMS DISTRIBUTE [target_teams_distribute_clause*]
477
+ target_teams_distribute_clause: if_clause
478
+ | device_clause
479
+ | private_clause
480
+ | firstprivate_clause
481
+ // | in_reduction_clause
482
+ | map_clause
483
+ | is_device_ptr_clause
484
+ // | defaultmap_clause
485
+ | NOWAIT
486
+ | allocate_clause
487
+ | depend_with_modifier_clause
488
+ // | uses_allocators_clause
489
+ | num_teams_clause
490
+ | thread_limit_clause
491
+ | data_default_clause
492
+ | data_sharing_clause
493
+ // | reduction_default_only_clause
494
+ | reduction_clause
495
+ | lastprivate_clause
496
+ | collapse_clause
497
+ | dist_schedule_clause
498
+ | ompx_attribute
499
+
500
+ IS_DEVICE_PTR: "is_device_ptr"
501
+ is_device_ptr_clause: IS_DEVICE_PTR "(" var_list ")"
502
+ allocate_clause: ALLOCATE "(" allocate_parameter ")"
503
+ ALLOCATE: "allocate"
504
+ allocate_parameter: [const_num_or_var] var_list
505
+
506
+ target_update_construct: target_update_directive
507
+ target_update_directive: TARGET UPDATE target_update_clause*
508
+ target_update_clause: motion_clause
509
+ | device_clause
510
+ | if_clause
511
+ motion_clause: update_motion_type "(" variable_array_section_list ")"
512
+ variable_array_section_list: PYTHON_NAME
513
+ // | array_section
514
+ | name_slice
515
+ | variable_array_section_list "," PYTHON_NAME
516
+ | variable_array_section_list "," name_slice
517
+ // | variable_array_section_list "," array_section
518
+ //array_section: PYTHON_NAME array_section_subscript
519
+ //array_section_subscript: array_section_subscript "[" [const_num_or_var] ":" [const_num_or_var] "]"
520
+ // | array_section_subscript "[" const_num_or_var "]"
521
+ // | "[" [const_num_or_var] ":" [const_num_or_var] "]"
522
+ // | "[" const_num_or_var "]"
523
+ TARGET: "target"
524
+ TEAMS: "teams"
525
+ DISTRIBUTE: "distribute"
526
+ single_construct: single_directive
527
+ single_directive: SINGLE [single_clause*]
528
+ SINGLE: "single"
529
+ single_clause: unique_single_clause
530
+ | private_clause
531
+ | firstprivate_clause
532
+ | NOWAIT
533
+ unique_single_clause: copyprivate_clause
534
+ NOWAIT: "nowait"
535
+ master_construct: master_directive
536
+ master_directive: "master"
537
+ simd_construct: simd_directive
538
+ simd_directive: SIMD [simd_clause*]
539
+ SIMD: "simd"
540
+ simd_clause: collapse_clause
541
+ | aligned_clause
542
+ | linear_clause
543
+ | uniform_clause
544
+ | reduction_clause
545
+ | inbranch_clause
546
+ aligned_clause: ALIGNED "(" var_list ")"
547
+ | ALIGNED "(" var_list ":" const_num_or_var ")"
548
+ declare_simd_construct: declare_simd_directive_seq
549
+ declare_simd_directive_seq: declare_simd_directive
550
+ | declare_simd_directive_seq declare_simd_directive
551
+ declare_simd_directive: SIMD [declare_simd_clause*]
552
+ declare_simd_clause: "simdlen" "(" const_num_or_var ")"
553
+ | aligned_clause
554
+ | linear_clause
555
+ | uniform_clause
556
+ | reduction_clause
557
+ | inbranch_clause
558
+ ALIGNED: "aligned"
559
+ inbranch_clause: INBRANCH | NOTINBRANCH
560
+ INBRANCH: "inbranch"
561
+ NOTINBRANCH: "notinbranch"
562
+ uniform_clause: UNIFORM "(" var_list ")"
563
+ UNIFORM: "uniform"
564
+ collapse_clause: COLLAPSE "(" const_num_or_var ")"
565
+ COLLAPSE: "collapse"
566
+ task_construct: task_directive
567
+ TASK: "task"
568
+ task_directive: TASK [task_clause*]
569
+ task_clause: unique_task_clause
570
+ | data_sharing_clause
571
+ | private_clause
572
+ | firstprivate_clause
573
+ | data_default_clause
574
+ unique_task_clause: if_clause
575
+ | UNTIED
576
+ | MERGEABLE
577
+ | FINAL "(" const_num_or_var ")"
578
+ | depend_with_modifier_clause
579
+ DEPEND: "depend"
580
+ FINAL: "final"
581
+ UNTIED: "untied"
582
+ MERGEABLE: "mergeable"
583
+ dependence_type: IN
584
+ | OUT
585
+ | INOUT
586
+ depend_with_modifier_clause: DEPEND "(" dependence_type ":" variable_array_section_list ")"
587
+ IN: "in"
588
+ OUT: "out"
589
+ INOUT: "inout"
590
+ data_default_clause: default_shared_clause
591
+ | default_none_clause
592
+ data_sharing_clause: shared_clause
593
+ data_clause: private_clause
594
+ | copyprivate_clause
595
+ | firstprivate_clause
596
+ | lastprivate_clause
597
+ | data_sharing_clause
598
+ | data_default_clause
599
+ | copyin_clause
600
+ | reduction_clause
601
+ private_clause: PRIVATE "(" var_list ")"
602
+ PRIVATE: "private"
603
+ copyprivate_clause: COPYPRIVATE "(" var_list ")"
604
+ COPYPRIVATE: "copyprivate"
605
+ firstprivate_clause: FIRSTPRIVATE "(" var_list ")"
606
+ FIRSTPRIVATE: "firstprivate"
607
+ lastprivate_clause: LASTPRIVATE "(" var_list ")"
608
+ LASTPRIVATE: "lastprivate"
609
+ shared_clause: SHARED "(" var_list ")"
610
+ SHARED: "shared"
611
+ copyin_clause: COPYIN "(" var_list ")"
612
+ COPYIN: "copyin"
613
+ REDUCTION: "reduction"
614
+ DEFAULT: "default"
615
+ reduction_clause: REDUCTION "(" reduction_operator ":" var_list ")"
616
+ default_shared_clause: DEFAULT "(" "shared" ")"
617
+ default_none_clause: DEFAULT "(" "none" ")"
618
+ const_num_or_var: NUMBER | PYTHON_NAME
619
+ parallel_construct: parallel_directive
620
+ parallel_directive: PARALLEL [parallel_clause*]
621
+ parallel_clause: unique_parallel_clause
622
+ | data_default_clause
623
+ | private_clause
624
+ | firstprivate_clause
625
+ | data_sharing_clause
626
+ | reduction_clause
627
+ unique_parallel_clause: if_clause | num_threads_clause
628
+ if_clause: IF "(" const_num_or_var ")"
629
+ IF: "if"
630
+ num_threads_clause: NUM_THREADS "(" const_num_or_var ")"
631
+ NUM_THREADS: "num_threads"
632
+ PARALLEL: "parallel"
633
+ FOR: "for"
634
+ parallel_for_construct: parallel_for_directive
635
+ parallel_for_directive: PARALLEL FOR [parallel_for_clause*]
636
+ parallel_for_clause: unique_parallel_clause
637
+ | unique_for_clause
638
+ | data_default_clause
639
+ | private_clause
640
+ | firstprivate_clause
641
+ | lastprivate_clause
642
+ | data_sharing_clause
643
+ | reduction_clause
644
+ for_construct: for_directive
645
+ for_directive: FOR [for_clause*]
646
+ for_clause: unique_for_clause | data_clause | NOWAIT
647
+ unique_for_clause: ORDERED
648
+ | schedule_clause
649
+ | collapse_clause
650
+ LINEAR: "linear"
651
+ linear_clause: LINEAR "(" var_list ":" const_num_or_var ")"
652
+ | LINEAR "(" var_list ")"
653
+ sched_no_expr: SCHEDULE "(" schedule_kind ")"
654
+ sched_expr: SCHEDULE "(" schedule_kind "," const_num_or_var ")"
655
+ schedule_clause: sched_no_expr
656
+ | sched_expr
657
+ SCHEDULE: "schedule"
658
+ schedule_kind: STATIC | DYNAMIC | GUIDED | RUNTIME | AUTO
659
+ STATIC: "static"
660
+ DYNAMIC: "dynamic"
661
+ GUIDED: "guided"
662
+ RUNTIME: "runtime"
663
+ AUTO: "auto"
664
+ COLON: ":"
665
+ oslice: [const_num_or_var] COLON [const_num_or_var]
666
+ slice_list: oslice | slice_list "," oslice
667
+ name_slice: PYTHON_NAME [ "[" slice_list "]" ]
668
+ var_list: name_slice | var_list "," name_slice
669
+ number_list: NUMBER | number_list "," NUMBER
670
+ PLUS: "+"
671
+ MINUS: "-"
672
+ STAR: "*"
673
+ reduction_operator: PLUS | "\\" | STAR | MINUS | "&" | "^" | "|" | "&&" | "||"
674
+ threadprivate_directive: "threadprivate" "(" var_list ")"
675
+ cancellation_point_directive: "cancellation point" construct_type_clause
676
+ construct_type_clause: PARALLEL
677
+ | SECTIONS
678
+ | FOR
679
+ | TASKGROUP
680
+ cancel_directive: "cancel" construct_type_clause [if_clause]
681
+ ordered_directive: ORDERED
682
+ ordered_construct: ordered_directive
683
+ ORDERED: "ordered"
684
+ flush_directive: "flush" "(" var_list ")"
685
+
686
+ region_phrase: "(" PYTHON_NAME ")"
687
+ PYTHON_NAME: /[a-zA-Z_]\w*/
688
+
689
+ %import common.NUMBER
690
+ %import common.WS
691
+ %ignore WS
692
+ """
693
+
694
+ """
695
+ name_slice: PYTHON_NAME [ "[" slice ["," slice]* "]" ]
696
+ """