Warning, /include/llvm/Frontend/OpenACC/ACC.inc is written in an unsupported language. File is not indexed.
0001 #ifdef GEN_FLANG_DIRECTIVE_CLAUSE_SETS
0002 #undef GEN_FLANG_DIRECTIVE_CLAUSE_SETS
0003
0004 namespace llvm {
0005 namespace acc {
0006
0007 // Sets for atomic
0008
0009 static AccClauseSet allowedClauses_ACCD_atomic {
0010 };
0011
0012 static AccClauseSet allowedOnceClauses_ACCD_atomic {
0013 };
0014
0015 static AccClauseSet allowedExclusiveClauses_ACCD_atomic {
0016 };
0017
0018 static AccClauseSet requiredClauses_ACCD_atomic {
0019 };
0020
0021 // Sets for cache
0022
0023 static AccClauseSet allowedClauses_ACCD_cache {
0024 };
0025
0026 static AccClauseSet allowedOnceClauses_ACCD_cache {
0027 };
0028
0029 static AccClauseSet allowedExclusiveClauses_ACCD_cache {
0030 };
0031
0032 static AccClauseSet requiredClauses_ACCD_cache {
0033 };
0034
0035 // Sets for data
0036
0037 static AccClauseSet allowedClauses_ACCD_data {
0038 llvm::acc::Clause::ACCC_device_type,
0039 llvm::acc::Clause::ACCC_wait,
0040 };
0041
0042 static AccClauseSet allowedOnceClauses_ACCD_data {
0043 llvm::acc::Clause::ACCC_async,
0044 llvm::acc::Clause::ACCC_if,
0045 llvm::acc::Clause::ACCC_default,
0046 };
0047
0048 static AccClauseSet allowedExclusiveClauses_ACCD_data {
0049 };
0050
0051 static AccClauseSet requiredClauses_ACCD_data {
0052 llvm::acc::Clause::ACCC_attach,
0053 llvm::acc::Clause::ACCC_copy,
0054 llvm::acc::Clause::ACCC_copyin,
0055 llvm::acc::Clause::ACCC_copyout,
0056 llvm::acc::Clause::ACCC_create,
0057 llvm::acc::Clause::ACCC_default,
0058 llvm::acc::Clause::ACCC_deviceptr,
0059 llvm::acc::Clause::ACCC_no_create,
0060 llvm::acc::Clause::ACCC_present,
0061 };
0062
0063 // Sets for declare
0064
0065 static AccClauseSet allowedClauses_ACCD_declare {
0066 llvm::acc::Clause::ACCC_copy,
0067 llvm::acc::Clause::ACCC_copyin,
0068 llvm::acc::Clause::ACCC_copyout,
0069 llvm::acc::Clause::ACCC_create,
0070 llvm::acc::Clause::ACCC_present,
0071 llvm::acc::Clause::ACCC_deviceptr,
0072 llvm::acc::Clause::ACCC_device_resident,
0073 llvm::acc::Clause::ACCC_link,
0074 };
0075
0076 static AccClauseSet allowedOnceClauses_ACCD_declare {
0077 };
0078
0079 static AccClauseSet allowedExclusiveClauses_ACCD_declare {
0080 };
0081
0082 static AccClauseSet requiredClauses_ACCD_declare {
0083 };
0084
0085 // Sets for enter data
0086
0087 static AccClauseSet allowedClauses_ACCD_enter_data {
0088 llvm::acc::Clause::ACCC_wait,
0089 };
0090
0091 static AccClauseSet allowedOnceClauses_ACCD_enter_data {
0092 llvm::acc::Clause::ACCC_async,
0093 llvm::acc::Clause::ACCC_if,
0094 };
0095
0096 static AccClauseSet allowedExclusiveClauses_ACCD_enter_data {
0097 };
0098
0099 static AccClauseSet requiredClauses_ACCD_enter_data {
0100 llvm::acc::Clause::ACCC_attach,
0101 llvm::acc::Clause::ACCC_create,
0102 llvm::acc::Clause::ACCC_copyin,
0103 };
0104
0105 // Sets for exit data
0106
0107 static AccClauseSet allowedClauses_ACCD_exit_data {
0108 llvm::acc::Clause::ACCC_wait,
0109 };
0110
0111 static AccClauseSet allowedOnceClauses_ACCD_exit_data {
0112 llvm::acc::Clause::ACCC_async,
0113 llvm::acc::Clause::ACCC_if,
0114 llvm::acc::Clause::ACCC_finalize,
0115 };
0116
0117 static AccClauseSet allowedExclusiveClauses_ACCD_exit_data {
0118 };
0119
0120 static AccClauseSet requiredClauses_ACCD_exit_data {
0121 llvm::acc::Clause::ACCC_copyout,
0122 llvm::acc::Clause::ACCC_delete,
0123 llvm::acc::Clause::ACCC_detach,
0124 };
0125
0126 // Sets for host_data
0127
0128 static AccClauseSet allowedClauses_ACCD_host_data {
0129 };
0130
0131 static AccClauseSet allowedOnceClauses_ACCD_host_data {
0132 llvm::acc::Clause::ACCC_if,
0133 llvm::acc::Clause::ACCC_if_present,
0134 };
0135
0136 static AccClauseSet allowedExclusiveClauses_ACCD_host_data {
0137 };
0138
0139 static AccClauseSet requiredClauses_ACCD_host_data {
0140 llvm::acc::Clause::ACCC_use_device,
0141 };
0142
0143 // Sets for init
0144
0145 static AccClauseSet allowedClauses_ACCD_init {
0146 };
0147
0148 static AccClauseSet allowedOnceClauses_ACCD_init {
0149 llvm::acc::Clause::ACCC_device_num,
0150 llvm::acc::Clause::ACCC_device_type,
0151 llvm::acc::Clause::ACCC_if,
0152 };
0153
0154 static AccClauseSet allowedExclusiveClauses_ACCD_init {
0155 };
0156
0157 static AccClauseSet requiredClauses_ACCD_init {
0158 };
0159
0160 // Sets for kernels
0161
0162 static AccClauseSet allowedClauses_ACCD_kernels {
0163 llvm::acc::Clause::ACCC_attach,
0164 llvm::acc::Clause::ACCC_copy,
0165 llvm::acc::Clause::ACCC_copyin,
0166 llvm::acc::Clause::ACCC_copyout,
0167 llvm::acc::Clause::ACCC_create,
0168 llvm::acc::Clause::ACCC_device_type,
0169 llvm::acc::Clause::ACCC_no_create,
0170 llvm::acc::Clause::ACCC_present,
0171 llvm::acc::Clause::ACCC_deviceptr,
0172 llvm::acc::Clause::ACCC_wait,
0173 };
0174
0175 static AccClauseSet allowedOnceClauses_ACCD_kernels {
0176 llvm::acc::Clause::ACCC_async,
0177 llvm::acc::Clause::ACCC_default,
0178 llvm::acc::Clause::ACCC_if,
0179 llvm::acc::Clause::ACCC_num_gangs,
0180 llvm::acc::Clause::ACCC_num_workers,
0181 llvm::acc::Clause::ACCC_self,
0182 llvm::acc::Clause::ACCC_vector_length,
0183 };
0184
0185 static AccClauseSet allowedExclusiveClauses_ACCD_kernels {
0186 };
0187
0188 static AccClauseSet requiredClauses_ACCD_kernels {
0189 };
0190
0191 // Sets for kernels loop
0192
0193 static AccClauseSet allowedClauses_ACCD_kernels_loop {
0194 llvm::acc::Clause::ACCC_attach,
0195 llvm::acc::Clause::ACCC_collapse,
0196 llvm::acc::Clause::ACCC_copy,
0197 llvm::acc::Clause::ACCC_copyin,
0198 llvm::acc::Clause::ACCC_copyout,
0199 llvm::acc::Clause::ACCC_create,
0200 llvm::acc::Clause::ACCC_deviceptr,
0201 llvm::acc::Clause::ACCC_device_type,
0202 llvm::acc::Clause::ACCC_gang,
0203 llvm::acc::Clause::ACCC_no_create,
0204 llvm::acc::Clause::ACCC_num_gangs,
0205 llvm::acc::Clause::ACCC_num_workers,
0206 llvm::acc::Clause::ACCC_present,
0207 llvm::acc::Clause::ACCC_private,
0208 llvm::acc::Clause::ACCC_reduction,
0209 llvm::acc::Clause::ACCC_shortloop,
0210 llvm::acc::Clause::ACCC_tile,
0211 llvm::acc::Clause::ACCC_vector,
0212 llvm::acc::Clause::ACCC_vector_length,
0213 llvm::acc::Clause::ACCC_wait,
0214 llvm::acc::Clause::ACCC_worker,
0215 };
0216
0217 static AccClauseSet allowedOnceClauses_ACCD_kernels_loop {
0218 llvm::acc::Clause::ACCC_async,
0219 llvm::acc::Clause::ACCC_default,
0220 llvm::acc::Clause::ACCC_if,
0221 llvm::acc::Clause::ACCC_self,
0222 };
0223
0224 static AccClauseSet allowedExclusiveClauses_ACCD_kernels_loop {
0225 llvm::acc::Clause::ACCC_auto,
0226 llvm::acc::Clause::ACCC_independent,
0227 llvm::acc::Clause::ACCC_seq,
0228 };
0229
0230 static AccClauseSet requiredClauses_ACCD_kernels_loop {
0231 };
0232
0233 // Sets for loop
0234
0235 static AccClauseSet allowedClauses_ACCD_loop {
0236 llvm::acc::Clause::ACCC_device_type,
0237 llvm::acc::Clause::ACCC_private,
0238 llvm::acc::Clause::ACCC_reduction,
0239 llvm::acc::Clause::ACCC_collapse,
0240 llvm::acc::Clause::ACCC_gang,
0241 llvm::acc::Clause::ACCC_shortloop,
0242 llvm::acc::Clause::ACCC_tile,
0243 llvm::acc::Clause::ACCC_vector,
0244 llvm::acc::Clause::ACCC_worker,
0245 };
0246
0247 static AccClauseSet allowedOnceClauses_ACCD_loop {
0248 };
0249
0250 static AccClauseSet allowedExclusiveClauses_ACCD_loop {
0251 llvm::acc::Clause::ACCC_auto,
0252 llvm::acc::Clause::ACCC_independent,
0253 llvm::acc::Clause::ACCC_seq,
0254 };
0255
0256 static AccClauseSet requiredClauses_ACCD_loop {
0257 };
0258
0259 // Sets for parallel
0260
0261 static AccClauseSet allowedClauses_ACCD_parallel {
0262 llvm::acc::Clause::ACCC_attach,
0263 llvm::acc::Clause::ACCC_async,
0264 llvm::acc::Clause::ACCC_copy,
0265 llvm::acc::Clause::ACCC_copyin,
0266 llvm::acc::Clause::ACCC_copyout,
0267 llvm::acc::Clause::ACCC_create,
0268 llvm::acc::Clause::ACCC_deviceptr,
0269 llvm::acc::Clause::ACCC_device_type,
0270 llvm::acc::Clause::ACCC_no_create,
0271 llvm::acc::Clause::ACCC_num_gangs,
0272 llvm::acc::Clause::ACCC_num_workers,
0273 llvm::acc::Clause::ACCC_present,
0274 llvm::acc::Clause::ACCC_private,
0275 llvm::acc::Clause::ACCC_firstprivate,
0276 llvm::acc::Clause::ACCC_reduction,
0277 llvm::acc::Clause::ACCC_wait,
0278 llvm::acc::Clause::ACCC_vector_length,
0279 };
0280
0281 static AccClauseSet allowedOnceClauses_ACCD_parallel {
0282 llvm::acc::Clause::ACCC_default,
0283 llvm::acc::Clause::ACCC_if,
0284 llvm::acc::Clause::ACCC_self,
0285 };
0286
0287 static AccClauseSet allowedExclusiveClauses_ACCD_parallel {
0288 };
0289
0290 static AccClauseSet requiredClauses_ACCD_parallel {
0291 };
0292
0293 // Sets for parallel loop
0294
0295 static AccClauseSet allowedClauses_ACCD_parallel_loop {
0296 llvm::acc::Clause::ACCC_attach,
0297 llvm::acc::Clause::ACCC_collapse,
0298 llvm::acc::Clause::ACCC_copy,
0299 llvm::acc::Clause::ACCC_copyin,
0300 llvm::acc::Clause::ACCC_copyout,
0301 llvm::acc::Clause::ACCC_create,
0302 llvm::acc::Clause::ACCC_deviceptr,
0303 llvm::acc::Clause::ACCC_device_type,
0304 llvm::acc::Clause::ACCC_firstprivate,
0305 llvm::acc::Clause::ACCC_gang,
0306 llvm::acc::Clause::ACCC_no_create,
0307 llvm::acc::Clause::ACCC_num_gangs,
0308 llvm::acc::Clause::ACCC_num_workers,
0309 llvm::acc::Clause::ACCC_present,
0310 llvm::acc::Clause::ACCC_private,
0311 llvm::acc::Clause::ACCC_reduction,
0312 llvm::acc::Clause::ACCC_shortloop,
0313 llvm::acc::Clause::ACCC_tile,
0314 llvm::acc::Clause::ACCC_vector,
0315 llvm::acc::Clause::ACCC_vector_length,
0316 llvm::acc::Clause::ACCC_wait,
0317 llvm::acc::Clause::ACCC_worker,
0318 };
0319
0320 static AccClauseSet allowedOnceClauses_ACCD_parallel_loop {
0321 llvm::acc::Clause::ACCC_async,
0322 llvm::acc::Clause::ACCC_default,
0323 llvm::acc::Clause::ACCC_if,
0324 llvm::acc::Clause::ACCC_self,
0325 };
0326
0327 static AccClauseSet allowedExclusiveClauses_ACCD_parallel_loop {
0328 llvm::acc::Clause::ACCC_auto,
0329 llvm::acc::Clause::ACCC_independent,
0330 llvm::acc::Clause::ACCC_seq,
0331 };
0332
0333 static AccClauseSet requiredClauses_ACCD_parallel_loop {
0334 };
0335
0336 // Sets for routine
0337
0338 static AccClauseSet allowedClauses_ACCD_routine {
0339 llvm::acc::Clause::ACCC_bind,
0340 llvm::acc::Clause::ACCC_device_type,
0341 llvm::acc::Clause::ACCC_gang,
0342 llvm::acc::Clause::ACCC_seq,
0343 llvm::acc::Clause::ACCC_vector,
0344 llvm::acc::Clause::ACCC_worker,
0345 };
0346
0347 static AccClauseSet allowedOnceClauses_ACCD_routine {
0348 llvm::acc::Clause::ACCC_nohost,
0349 };
0350
0351 static AccClauseSet allowedExclusiveClauses_ACCD_routine {
0352 };
0353
0354 static AccClauseSet requiredClauses_ACCD_routine {
0355 };
0356
0357 // Sets for serial
0358
0359 static AccClauseSet allowedClauses_ACCD_serial {
0360 llvm::acc::Clause::ACCC_attach,
0361 llvm::acc::Clause::ACCC_copy,
0362 llvm::acc::Clause::ACCC_copyin,
0363 llvm::acc::Clause::ACCC_copyout,
0364 llvm::acc::Clause::ACCC_create,
0365 llvm::acc::Clause::ACCC_deviceptr,
0366 llvm::acc::Clause::ACCC_device_type,
0367 llvm::acc::Clause::ACCC_no_create,
0368 llvm::acc::Clause::ACCC_present,
0369 llvm::acc::Clause::ACCC_private,
0370 llvm::acc::Clause::ACCC_firstprivate,
0371 llvm::acc::Clause::ACCC_reduction,
0372 llvm::acc::Clause::ACCC_wait,
0373 };
0374
0375 static AccClauseSet allowedOnceClauses_ACCD_serial {
0376 llvm::acc::Clause::ACCC_async,
0377 llvm::acc::Clause::ACCC_default,
0378 llvm::acc::Clause::ACCC_if,
0379 llvm::acc::Clause::ACCC_self,
0380 };
0381
0382 static AccClauseSet allowedExclusiveClauses_ACCD_serial {
0383 };
0384
0385 static AccClauseSet requiredClauses_ACCD_serial {
0386 };
0387
0388 // Sets for serial loop
0389
0390 static AccClauseSet allowedClauses_ACCD_serial_loop {
0391 llvm::acc::Clause::ACCC_attach,
0392 llvm::acc::Clause::ACCC_collapse,
0393 llvm::acc::Clause::ACCC_copy,
0394 llvm::acc::Clause::ACCC_copyin,
0395 llvm::acc::Clause::ACCC_copyout,
0396 llvm::acc::Clause::ACCC_create,
0397 llvm::acc::Clause::ACCC_deviceptr,
0398 llvm::acc::Clause::ACCC_device_type,
0399 llvm::acc::Clause::ACCC_firstprivate,
0400 llvm::acc::Clause::ACCC_gang,
0401 llvm::acc::Clause::ACCC_no_create,
0402 llvm::acc::Clause::ACCC_present,
0403 llvm::acc::Clause::ACCC_private,
0404 llvm::acc::Clause::ACCC_reduction,
0405 llvm::acc::Clause::ACCC_shortloop,
0406 llvm::acc::Clause::ACCC_tile,
0407 llvm::acc::Clause::ACCC_vector,
0408 llvm::acc::Clause::ACCC_wait,
0409 llvm::acc::Clause::ACCC_worker,
0410 };
0411
0412 static AccClauseSet allowedOnceClauses_ACCD_serial_loop {
0413 llvm::acc::Clause::ACCC_async,
0414 llvm::acc::Clause::ACCC_default,
0415 llvm::acc::Clause::ACCC_if,
0416 llvm::acc::Clause::ACCC_self,
0417 };
0418
0419 static AccClauseSet allowedExclusiveClauses_ACCD_serial_loop {
0420 llvm::acc::Clause::ACCC_auto,
0421 llvm::acc::Clause::ACCC_independent,
0422 llvm::acc::Clause::ACCC_seq,
0423 };
0424
0425 static AccClauseSet requiredClauses_ACCD_serial_loop {
0426 };
0427
0428 // Sets for set
0429
0430 static AccClauseSet allowedClauses_ACCD_set {
0431 };
0432
0433 static AccClauseSet allowedOnceClauses_ACCD_set {
0434 llvm::acc::Clause::ACCC_default_async,
0435 llvm::acc::Clause::ACCC_device_num,
0436 llvm::acc::Clause::ACCC_device_type,
0437 llvm::acc::Clause::ACCC_if,
0438 };
0439
0440 static AccClauseSet allowedExclusiveClauses_ACCD_set {
0441 };
0442
0443 static AccClauseSet requiredClauses_ACCD_set {
0444 llvm::acc::Clause::ACCC_default_async,
0445 llvm::acc::Clause::ACCC_device_num,
0446 llvm::acc::Clause::ACCC_device_type,
0447 };
0448
0449 // Sets for shutdown
0450
0451 static AccClauseSet allowedClauses_ACCD_shutdown {
0452 };
0453
0454 static AccClauseSet allowedOnceClauses_ACCD_shutdown {
0455 llvm::acc::Clause::ACCC_device_num,
0456 llvm::acc::Clause::ACCC_device_type,
0457 llvm::acc::Clause::ACCC_if,
0458 };
0459
0460 static AccClauseSet allowedExclusiveClauses_ACCD_shutdown {
0461 };
0462
0463 static AccClauseSet requiredClauses_ACCD_shutdown {
0464 };
0465
0466 // Sets for unknown
0467
0468 static AccClauseSet allowedClauses_ACCD_unknown {
0469 };
0470
0471 static AccClauseSet allowedOnceClauses_ACCD_unknown {
0472 };
0473
0474 static AccClauseSet allowedExclusiveClauses_ACCD_unknown {
0475 };
0476
0477 static AccClauseSet requiredClauses_ACCD_unknown {
0478 };
0479
0480 // Sets for update
0481
0482 static AccClauseSet allowedClauses_ACCD_update {
0483 llvm::acc::Clause::ACCC_device_type,
0484 llvm::acc::Clause::ACCC_wait,
0485 };
0486
0487 static AccClauseSet allowedOnceClauses_ACCD_update {
0488 llvm::acc::Clause::ACCC_async,
0489 llvm::acc::Clause::ACCC_if,
0490 llvm::acc::Clause::ACCC_if_present,
0491 };
0492
0493 static AccClauseSet allowedExclusiveClauses_ACCD_update {
0494 };
0495
0496 static AccClauseSet requiredClauses_ACCD_update {
0497 llvm::acc::Clause::ACCC_device,
0498 llvm::acc::Clause::ACCC_host,
0499 llvm::acc::Clause::ACCC_self,
0500 };
0501
0502 // Sets for wait
0503
0504 static AccClauseSet allowedClauses_ACCD_wait {
0505 };
0506
0507 static AccClauseSet allowedOnceClauses_ACCD_wait {
0508 llvm::acc::Clause::ACCC_async,
0509 llvm::acc::Clause::ACCC_if,
0510 };
0511
0512 static AccClauseSet allowedExclusiveClauses_ACCD_wait {
0513 };
0514
0515 static AccClauseSet requiredClauses_ACCD_wait {
0516 };
0517 } // namespace acc
0518 } // namespace llvm
0519
0520 #endif // GEN_FLANG_DIRECTIVE_CLAUSE_SETS
0521
0522 #ifdef GEN_FLANG_DIRECTIVE_CLAUSE_MAP
0523 #undef GEN_FLANG_DIRECTIVE_CLAUSE_MAP
0524
0525 {
0526 {llvm::acc::Directive::ACCD_atomic,
0527 {
0528 llvm::acc::allowedClauses_ACCD_atomic,
0529 llvm::acc::allowedOnceClauses_ACCD_atomic,
0530 llvm::acc::allowedExclusiveClauses_ACCD_atomic,
0531 llvm::acc::requiredClauses_ACCD_atomic,
0532 }
0533 },
0534 {llvm::acc::Directive::ACCD_cache,
0535 {
0536 llvm::acc::allowedClauses_ACCD_cache,
0537 llvm::acc::allowedOnceClauses_ACCD_cache,
0538 llvm::acc::allowedExclusiveClauses_ACCD_cache,
0539 llvm::acc::requiredClauses_ACCD_cache,
0540 }
0541 },
0542 {llvm::acc::Directive::ACCD_data,
0543 {
0544 llvm::acc::allowedClauses_ACCD_data,
0545 llvm::acc::allowedOnceClauses_ACCD_data,
0546 llvm::acc::allowedExclusiveClauses_ACCD_data,
0547 llvm::acc::requiredClauses_ACCD_data,
0548 }
0549 },
0550 {llvm::acc::Directive::ACCD_declare,
0551 {
0552 llvm::acc::allowedClauses_ACCD_declare,
0553 llvm::acc::allowedOnceClauses_ACCD_declare,
0554 llvm::acc::allowedExclusiveClauses_ACCD_declare,
0555 llvm::acc::requiredClauses_ACCD_declare,
0556 }
0557 },
0558 {llvm::acc::Directive::ACCD_enter_data,
0559 {
0560 llvm::acc::allowedClauses_ACCD_enter_data,
0561 llvm::acc::allowedOnceClauses_ACCD_enter_data,
0562 llvm::acc::allowedExclusiveClauses_ACCD_enter_data,
0563 llvm::acc::requiredClauses_ACCD_enter_data,
0564 }
0565 },
0566 {llvm::acc::Directive::ACCD_exit_data,
0567 {
0568 llvm::acc::allowedClauses_ACCD_exit_data,
0569 llvm::acc::allowedOnceClauses_ACCD_exit_data,
0570 llvm::acc::allowedExclusiveClauses_ACCD_exit_data,
0571 llvm::acc::requiredClauses_ACCD_exit_data,
0572 }
0573 },
0574 {llvm::acc::Directive::ACCD_host_data,
0575 {
0576 llvm::acc::allowedClauses_ACCD_host_data,
0577 llvm::acc::allowedOnceClauses_ACCD_host_data,
0578 llvm::acc::allowedExclusiveClauses_ACCD_host_data,
0579 llvm::acc::requiredClauses_ACCD_host_data,
0580 }
0581 },
0582 {llvm::acc::Directive::ACCD_init,
0583 {
0584 llvm::acc::allowedClauses_ACCD_init,
0585 llvm::acc::allowedOnceClauses_ACCD_init,
0586 llvm::acc::allowedExclusiveClauses_ACCD_init,
0587 llvm::acc::requiredClauses_ACCD_init,
0588 }
0589 },
0590 {llvm::acc::Directive::ACCD_kernels,
0591 {
0592 llvm::acc::allowedClauses_ACCD_kernels,
0593 llvm::acc::allowedOnceClauses_ACCD_kernels,
0594 llvm::acc::allowedExclusiveClauses_ACCD_kernels,
0595 llvm::acc::requiredClauses_ACCD_kernels,
0596 }
0597 },
0598 {llvm::acc::Directive::ACCD_kernels_loop,
0599 {
0600 llvm::acc::allowedClauses_ACCD_kernels_loop,
0601 llvm::acc::allowedOnceClauses_ACCD_kernels_loop,
0602 llvm::acc::allowedExclusiveClauses_ACCD_kernels_loop,
0603 llvm::acc::requiredClauses_ACCD_kernels_loop,
0604 }
0605 },
0606 {llvm::acc::Directive::ACCD_loop,
0607 {
0608 llvm::acc::allowedClauses_ACCD_loop,
0609 llvm::acc::allowedOnceClauses_ACCD_loop,
0610 llvm::acc::allowedExclusiveClauses_ACCD_loop,
0611 llvm::acc::requiredClauses_ACCD_loop,
0612 }
0613 },
0614 {llvm::acc::Directive::ACCD_parallel,
0615 {
0616 llvm::acc::allowedClauses_ACCD_parallel,
0617 llvm::acc::allowedOnceClauses_ACCD_parallel,
0618 llvm::acc::allowedExclusiveClauses_ACCD_parallel,
0619 llvm::acc::requiredClauses_ACCD_parallel,
0620 }
0621 },
0622 {llvm::acc::Directive::ACCD_parallel_loop,
0623 {
0624 llvm::acc::allowedClauses_ACCD_parallel_loop,
0625 llvm::acc::allowedOnceClauses_ACCD_parallel_loop,
0626 llvm::acc::allowedExclusiveClauses_ACCD_parallel_loop,
0627 llvm::acc::requiredClauses_ACCD_parallel_loop,
0628 }
0629 },
0630 {llvm::acc::Directive::ACCD_routine,
0631 {
0632 llvm::acc::allowedClauses_ACCD_routine,
0633 llvm::acc::allowedOnceClauses_ACCD_routine,
0634 llvm::acc::allowedExclusiveClauses_ACCD_routine,
0635 llvm::acc::requiredClauses_ACCD_routine,
0636 }
0637 },
0638 {llvm::acc::Directive::ACCD_serial,
0639 {
0640 llvm::acc::allowedClauses_ACCD_serial,
0641 llvm::acc::allowedOnceClauses_ACCD_serial,
0642 llvm::acc::allowedExclusiveClauses_ACCD_serial,
0643 llvm::acc::requiredClauses_ACCD_serial,
0644 }
0645 },
0646 {llvm::acc::Directive::ACCD_serial_loop,
0647 {
0648 llvm::acc::allowedClauses_ACCD_serial_loop,
0649 llvm::acc::allowedOnceClauses_ACCD_serial_loop,
0650 llvm::acc::allowedExclusiveClauses_ACCD_serial_loop,
0651 llvm::acc::requiredClauses_ACCD_serial_loop,
0652 }
0653 },
0654 {llvm::acc::Directive::ACCD_set,
0655 {
0656 llvm::acc::allowedClauses_ACCD_set,
0657 llvm::acc::allowedOnceClauses_ACCD_set,
0658 llvm::acc::allowedExclusiveClauses_ACCD_set,
0659 llvm::acc::requiredClauses_ACCD_set,
0660 }
0661 },
0662 {llvm::acc::Directive::ACCD_shutdown,
0663 {
0664 llvm::acc::allowedClauses_ACCD_shutdown,
0665 llvm::acc::allowedOnceClauses_ACCD_shutdown,
0666 llvm::acc::allowedExclusiveClauses_ACCD_shutdown,
0667 llvm::acc::requiredClauses_ACCD_shutdown,
0668 }
0669 },
0670 {llvm::acc::Directive::ACCD_unknown,
0671 {
0672 llvm::acc::allowedClauses_ACCD_unknown,
0673 llvm::acc::allowedOnceClauses_ACCD_unknown,
0674 llvm::acc::allowedExclusiveClauses_ACCD_unknown,
0675 llvm::acc::requiredClauses_ACCD_unknown,
0676 }
0677 },
0678 {llvm::acc::Directive::ACCD_update,
0679 {
0680 llvm::acc::allowedClauses_ACCD_update,
0681 llvm::acc::allowedOnceClauses_ACCD_update,
0682 llvm::acc::allowedExclusiveClauses_ACCD_update,
0683 llvm::acc::requiredClauses_ACCD_update,
0684 }
0685 },
0686 {llvm::acc::Directive::ACCD_wait,
0687 {
0688 llvm::acc::allowedClauses_ACCD_wait,
0689 llvm::acc::allowedOnceClauses_ACCD_wait,
0690 llvm::acc::allowedExclusiveClauses_ACCD_wait,
0691 llvm::acc::requiredClauses_ACCD_wait,
0692 }
0693 },
0694 }
0695
0696 #endif // GEN_FLANG_DIRECTIVE_CLAUSE_MAP
0697
0698 #ifdef GEN_FLANG_CLAUSE_PARSER_CLASSES
0699 #undef GEN_FLANG_CLAUSE_PARSER_CLASSES
0700
0701 WRAPPER_CLASS(Async, std::optional<ScalarIntExpr>);
0702 WRAPPER_CLASS(Attach, AccObjectList);
0703 EMPTY_CLASS(Auto);
0704 WRAPPER_CLASS(Bind, AccBindClause);
0705 EMPTY_CLASS(Capture);
0706 WRAPPER_CLASS(Collapse, AccCollapseArg);
0707 WRAPPER_CLASS(Copy, AccObjectList);
0708 WRAPPER_CLASS(Copyin, AccObjectListWithModifier);
0709 WRAPPER_CLASS(Copyout, AccObjectListWithModifier);
0710 WRAPPER_CLASS(Create, AccObjectListWithModifier);
0711 WRAPPER_CLASS(Default, AccDefaultClause);
0712 WRAPPER_CLASS(DefaultAsync, ScalarIntExpr);
0713 WRAPPER_CLASS(Delete, AccObjectList);
0714 WRAPPER_CLASS(Detach, AccObjectList);
0715 WRAPPER_CLASS(Device, AccObjectList);
0716 WRAPPER_CLASS(DeviceNum, ScalarIntExpr);
0717 WRAPPER_CLASS(Deviceptr, AccObjectList);
0718 WRAPPER_CLASS(DeviceResident, AccObjectList);
0719 WRAPPER_CLASS(DeviceType, AccDeviceTypeExprList);
0720 EMPTY_CLASS(Finalize);
0721 WRAPPER_CLASS(Firstprivate, AccObjectList);
0722 WRAPPER_CLASS(Gang, std::optional<AccGangArgList>);
0723 WRAPPER_CLASS(Host, AccObjectList);
0724 WRAPPER_CLASS(If, ScalarExpr);
0725 EMPTY_CLASS(IfPresent);
0726 EMPTY_CLASS(Independent);
0727 WRAPPER_CLASS(Link, AccObjectList);
0728 WRAPPER_CLASS(NoCreate, AccObjectList);
0729 EMPTY_CLASS(Nohost);
0730 WRAPPER_CLASS(NumGangs, std::list<ScalarIntExpr>);
0731 WRAPPER_CLASS(NumWorkers, ScalarIntExpr);
0732 WRAPPER_CLASS(Present, AccObjectList);
0733 WRAPPER_CLASS(Private, AccObjectList);
0734 EMPTY_CLASS(Read);
0735 WRAPPER_CLASS(Reduction, AccObjectListWithReduction);
0736 WRAPPER_CLASS(Self, std::optional<AccSelfClause>);
0737 EMPTY_CLASS(Seq);
0738 EMPTY_CLASS(Shortloop);
0739 WRAPPER_CLASS(Tile, AccTileExprList);
0740 EMPTY_CLASS(Unknown);
0741 WRAPPER_CLASS(UseDevice, AccObjectList);
0742 WRAPPER_CLASS(Vector, std::optional<ScalarIntExpr>);
0743 WRAPPER_CLASS(VectorLength, ScalarIntExpr);
0744 WRAPPER_CLASS(Wait, std::optional<AccWaitArgument>);
0745 WRAPPER_CLASS(Worker, std::optional<ScalarIntExpr>);
0746 EMPTY_CLASS(Write);
0747
0748 #endif // GEN_FLANG_CLAUSE_PARSER_CLASSES
0749
0750 #ifdef GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST
0751 #undef GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST
0752
0753 Async
0754 , Attach
0755 , Auto
0756 , Bind
0757 , Capture
0758 , Collapse
0759 , Copy
0760 , Copyin
0761 , Copyout
0762 , Create
0763 , Default
0764 , DefaultAsync
0765 , Delete
0766 , Detach
0767 , Device
0768 , DeviceNum
0769 , Deviceptr
0770 , DeviceResident
0771 , DeviceType
0772 , Finalize
0773 , Firstprivate
0774 , Gang
0775 , Host
0776 , If
0777 , IfPresent
0778 , Independent
0779 , Link
0780 , NoCreate
0781 , Nohost
0782 , NumGangs
0783 , NumWorkers
0784 , Present
0785 , Private
0786 , Read
0787 , Reduction
0788 , Self
0789 , Seq
0790 , Shortloop
0791 , Tile
0792 , Unknown
0793 , UseDevice
0794 , Vector
0795 , VectorLength
0796 , Wait
0797 , Worker
0798 , Write
0799
0800 #endif // GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST
0801
0802 #ifdef GEN_FLANG_DUMP_PARSE_TREE_CLAUSES
0803 #undef GEN_FLANG_DUMP_PARSE_TREE_CLAUSES
0804
0805 NODE(AccClause, Async)
0806 NODE(AccClause, Attach)
0807 NODE(AccClause, Auto)
0808 NODE(AccClause, Bind)
0809 NODE(AccClause, Capture)
0810 NODE(AccClause, Collapse)
0811 NODE(AccClause, Copy)
0812 NODE(AccClause, Copyin)
0813 NODE(AccClause, Copyout)
0814 NODE(AccClause, Create)
0815 NODE(AccClause, Default)
0816 NODE(AccClause, DefaultAsync)
0817 NODE(AccClause, Delete)
0818 NODE(AccClause, Detach)
0819 NODE(AccClause, Device)
0820 NODE(AccClause, DeviceNum)
0821 NODE(AccClause, Deviceptr)
0822 NODE(AccClause, DeviceResident)
0823 NODE(AccClause, DeviceType)
0824 NODE(AccClause, Finalize)
0825 NODE(AccClause, Firstprivate)
0826 NODE(AccClause, Gang)
0827 NODE(AccClause, Host)
0828 NODE(AccClause, If)
0829 NODE(AccClause, IfPresent)
0830 NODE(AccClause, Independent)
0831 NODE(AccClause, Link)
0832 NODE(AccClause, NoCreate)
0833 NODE(AccClause, Nohost)
0834 NODE(AccClause, NumGangs)
0835 NODE(AccClause, NumWorkers)
0836 NODE(AccClause, Present)
0837 NODE(AccClause, Private)
0838 NODE(AccClause, Read)
0839 NODE(AccClause, Reduction)
0840 NODE(AccClause, Self)
0841 NODE(AccClause, Seq)
0842 NODE(AccClause, Shortloop)
0843 NODE(AccClause, Tile)
0844 NODE(AccClause, Unknown)
0845 NODE(AccClause, UseDevice)
0846 NODE(AccClause, Vector)
0847 NODE(AccClause, VectorLength)
0848 NODE(AccClause, Wait)
0849 NODE(AccClause, Worker)
0850 NODE(AccClause, Write)
0851
0852 #endif // GEN_FLANG_DUMP_PARSE_TREE_CLAUSES
0853
0854 #ifdef GEN_FLANG_CLAUSE_UNPARSE
0855 #undef GEN_FLANG_CLAUSE_UNPARSE
0856
0857 void Unparse(const AccClause::Async &x) {
0858 Word("ASYNC");
0859 Walk("(", x.v, ")");
0860 }
0861 void Unparse(const AccClause::Attach &x) {
0862 Word("ATTACH");
0863 Put("(");
0864 Walk(x.v);
0865 Put(")");
0866 }
0867 void Before(const AccClause::Auto &) { Word("AUTO"); }
0868 void Unparse(const AccClause::Bind &x) {
0869 Word("BIND");
0870 Put("(");
0871 Walk(x.v);
0872 Put(")");
0873 }
0874 void Before(const AccClause::Capture &) { Word("CAPTURE"); }
0875 void Unparse(const AccClause::Collapse &x) {
0876 Word("COLLAPSE");
0877 Put("(");
0878 Walk(x.v);
0879 Put(")");
0880 }
0881 void Unparse(const AccClause::Copy &x) {
0882 Word("COPY");
0883 Put("(");
0884 Walk(x.v);
0885 Put(")");
0886 }
0887 void Unparse(const AccClause::Copyin &x) {
0888 Word("COPYIN");
0889 Put("(");
0890 Walk(x.v);
0891 Put(")");
0892 }
0893 void Unparse(const AccClause::Copyout &x) {
0894 Word("COPYOUT");
0895 Put("(");
0896 Walk(x.v);
0897 Put(")");
0898 }
0899 void Unparse(const AccClause::Create &x) {
0900 Word("CREATE");
0901 Put("(");
0902 Walk(x.v);
0903 Put(")");
0904 }
0905 void Unparse(const AccClause::Default &x) {
0906 Word("DEFAULT");
0907 Put("(");
0908 Walk(x.v);
0909 Put(")");
0910 }
0911 void Unparse(const AccClause::DefaultAsync &x) {
0912 Word("DEFAULT_ASYNC");
0913 Put("(");
0914 Walk(x.v);
0915 Put(")");
0916 }
0917 void Unparse(const AccClause::Delete &x) {
0918 Word("DELETE");
0919 Put("(");
0920 Walk(x.v);
0921 Put(")");
0922 }
0923 void Unparse(const AccClause::Detach &x) {
0924 Word("DETACH");
0925 Put("(");
0926 Walk(x.v);
0927 Put(")");
0928 }
0929 void Unparse(const AccClause::Device &x) {
0930 Word("DEVICE");
0931 Put("(");
0932 Walk(x.v);
0933 Put(")");
0934 }
0935 void Unparse(const AccClause::DeviceNum &x) {
0936 Word("DEVICE_NUM");
0937 Put("(");
0938 Walk(x.v);
0939 Put(")");
0940 }
0941 void Unparse(const AccClause::Deviceptr &x) {
0942 Word("DEVICEPTR");
0943 Put("(");
0944 Walk(x.v);
0945 Put(")");
0946 }
0947 void Unparse(const AccClause::DeviceResident &x) {
0948 Word("DEVICE_RESIDENT");
0949 Put("(");
0950 Walk(x.v);
0951 Put(")");
0952 }
0953 void Unparse(const AccClause::DeviceType &x) {
0954 Word("DEVICE_TYPE");
0955 Put("(");
0956 Walk(x.v);
0957 Put(")");
0958 }
0959 void Before(const AccClause::Finalize &) { Word("FINALIZE"); }
0960 void Unparse(const AccClause::Firstprivate &x) {
0961 Word("FIRSTPRIVATE");
0962 Put("(");
0963 Walk(x.v);
0964 Put(")");
0965 }
0966 void Unparse(const AccClause::Gang &x) {
0967 Word("GANG");
0968 Walk("(", x.v, ")");
0969 }
0970 void Unparse(const AccClause::Host &x) {
0971 Word("HOST");
0972 Put("(");
0973 Walk(x.v);
0974 Put(")");
0975 }
0976 void Unparse(const AccClause::If &x) {
0977 Word("IF");
0978 Put("(");
0979 Walk(x.v);
0980 Put(")");
0981 }
0982 void Before(const AccClause::IfPresent &) { Word("IF_PRESENT"); }
0983 void Before(const AccClause::Independent &) { Word("INDEPENDENT"); }
0984 void Unparse(const AccClause::Link &x) {
0985 Word("LINK");
0986 Put("(");
0987 Walk(x.v);
0988 Put(")");
0989 }
0990 void Unparse(const AccClause::NoCreate &x) {
0991 Word("NO_CREATE");
0992 Put("(");
0993 Walk(x.v);
0994 Put(")");
0995 }
0996 void Before(const AccClause::Nohost &) { Word("NOHOST"); }
0997 void Unparse(const AccClause::NumGangs &x) {
0998 Word("NUM_GANGS");
0999 Put("(");
1000 Walk(x.v, ",");
1001 Put(")");
1002 }
1003 void Unparse(const AccClause::NumWorkers &x) {
1004 Word("NUM_WORKERS");
1005 Put("(");
1006 Walk(x.v);
1007 Put(")");
1008 }
1009 void Unparse(const AccClause::Present &x) {
1010 Word("PRESENT");
1011 Put("(");
1012 Walk(x.v);
1013 Put(")");
1014 }
1015 void Unparse(const AccClause::Private &x) {
1016 Word("PRIVATE");
1017 Put("(");
1018 Walk(x.v);
1019 Put(")");
1020 }
1021 void Before(const AccClause::Read &) { Word("READ"); }
1022 void Unparse(const AccClause::Reduction &x) {
1023 Word("REDUCTION");
1024 Put("(");
1025 Walk(x.v);
1026 Put(")");
1027 }
1028 void Unparse(const AccClause::Self &x) {
1029 Word("SELF");
1030 Walk("(", x.v, ")");
1031 }
1032 void Before(const AccClause::Seq &) { Word("SEQ"); }
1033 void Before(const AccClause::Shortloop &) { Word("SHORTLOOP"); }
1034 void Unparse(const AccClause::Tile &x) {
1035 Word("TILE");
1036 Put("(");
1037 Walk(x.v);
1038 Put(")");
1039 }
1040 void Before(const AccClause::Unknown &) { Word("UNKNOWN"); }
1041 void Unparse(const AccClause::UseDevice &x) {
1042 Word("USE_DEVICE");
1043 Put("(");
1044 Walk(x.v);
1045 Put(")");
1046 }
1047 void Unparse(const AccClause::Vector &x) {
1048 Word("VECTOR");
1049 Walk("(", x.v, ")");
1050 }
1051 void Unparse(const AccClause::VectorLength &x) {
1052 Word("VECTOR_LENGTH");
1053 Put("(");
1054 Walk(x.v);
1055 Put(")");
1056 }
1057 void Unparse(const AccClause::Wait &x) {
1058 Word("WAIT");
1059 Walk("(", x.v, ")");
1060 }
1061 void Unparse(const AccClause::Worker &x) {
1062 Word("WORKER");
1063 Walk("(", x.v, ")");
1064 }
1065 void Before(const AccClause::Write &) { Word("WRITE"); }
1066
1067 #endif // GEN_FLANG_CLAUSE_UNPARSE
1068
1069 #ifdef GEN_FLANG_CLAUSE_CHECK_ENTER
1070 #undef GEN_FLANG_CLAUSE_CHECK_ENTER
1071
1072 void Enter(const parser::AccClause::Async &);
1073 void Enter(const parser::AccClause::Attach &);
1074 void Enter(const parser::AccClause::Auto &);
1075 void Enter(const parser::AccClause::Bind &);
1076 void Enter(const parser::AccClause::Capture &);
1077 void Enter(const parser::AccClause::Collapse &);
1078 void Enter(const parser::AccClause::Copy &);
1079 void Enter(const parser::AccClause::Copyin &);
1080 void Enter(const parser::AccClause::Copyout &);
1081 void Enter(const parser::AccClause::Create &);
1082 void Enter(const parser::AccClause::Default &);
1083 void Enter(const parser::AccClause::DefaultAsync &);
1084 void Enter(const parser::AccClause::Delete &);
1085 void Enter(const parser::AccClause::Detach &);
1086 void Enter(const parser::AccClause::Device &);
1087 void Enter(const parser::AccClause::DeviceNum &);
1088 void Enter(const parser::AccClause::Deviceptr &);
1089 void Enter(const parser::AccClause::DeviceResident &);
1090 void Enter(const parser::AccClause::DeviceType &);
1091 void Enter(const parser::AccClause::Finalize &);
1092 void Enter(const parser::AccClause::Firstprivate &);
1093 void Enter(const parser::AccClause::Gang &);
1094 void Enter(const parser::AccClause::Host &);
1095 void Enter(const parser::AccClause::If &);
1096 void Enter(const parser::AccClause::IfPresent &);
1097 void Enter(const parser::AccClause::Independent &);
1098 void Enter(const parser::AccClause::Link &);
1099 void Enter(const parser::AccClause::NoCreate &);
1100 void Enter(const parser::AccClause::Nohost &);
1101 void Enter(const parser::AccClause::NumGangs &);
1102 void Enter(const parser::AccClause::NumWorkers &);
1103 void Enter(const parser::AccClause::Present &);
1104 void Enter(const parser::AccClause::Private &);
1105 void Enter(const parser::AccClause::Read &);
1106 void Enter(const parser::AccClause::Reduction &);
1107 void Enter(const parser::AccClause::Self &);
1108 void Enter(const parser::AccClause::Seq &);
1109 void Enter(const parser::AccClause::Shortloop &);
1110 void Enter(const parser::AccClause::Tile &);
1111 void Enter(const parser::AccClause::Unknown &);
1112 void Enter(const parser::AccClause::UseDevice &);
1113 void Enter(const parser::AccClause::Vector &);
1114 void Enter(const parser::AccClause::VectorLength &);
1115 void Enter(const parser::AccClause::Wait &);
1116 void Enter(const parser::AccClause::Worker &);
1117 void Enter(const parser::AccClause::Write &);
1118
1119 #endif // GEN_FLANG_CLAUSE_CHECK_ENTER
1120
1121 #ifdef GEN_FLANG_CLAUSE_PARSER_KIND_MAP
1122 #undef GEN_FLANG_CLAUSE_PARSER_KIND_MAP
1123
1124 if constexpr (std::is_same_v<A, parser::AccClause::Async>)
1125 return llvm::acc::Clause::ACCC_async;
1126 if constexpr (std::is_same_v<A, parser::AccClause::Attach>)
1127 return llvm::acc::Clause::ACCC_attach;
1128 if constexpr (std::is_same_v<A, parser::AccClause::Auto>)
1129 return llvm::acc::Clause::ACCC_auto;
1130 if constexpr (std::is_same_v<A, parser::AccClause::Bind>)
1131 return llvm::acc::Clause::ACCC_bind;
1132 if constexpr (std::is_same_v<A, parser::AccClause::Capture>)
1133 return llvm::acc::Clause::ACCC_capture;
1134 if constexpr (std::is_same_v<A, parser::AccClause::Collapse>)
1135 return llvm::acc::Clause::ACCC_collapse;
1136 if constexpr (std::is_same_v<A, parser::AccClause::Copy>)
1137 return llvm::acc::Clause::ACCC_copy;
1138 if constexpr (std::is_same_v<A, parser::AccClause::Copyin>)
1139 return llvm::acc::Clause::ACCC_copyin;
1140 if constexpr (std::is_same_v<A, parser::AccClause::Copyout>)
1141 return llvm::acc::Clause::ACCC_copyout;
1142 if constexpr (std::is_same_v<A, parser::AccClause::Create>)
1143 return llvm::acc::Clause::ACCC_create;
1144 if constexpr (std::is_same_v<A, parser::AccClause::Default>)
1145 return llvm::acc::Clause::ACCC_default;
1146 if constexpr (std::is_same_v<A, parser::AccClause::DefaultAsync>)
1147 return llvm::acc::Clause::ACCC_default_async;
1148 if constexpr (std::is_same_v<A, parser::AccClause::Delete>)
1149 return llvm::acc::Clause::ACCC_delete;
1150 if constexpr (std::is_same_v<A, parser::AccClause::Detach>)
1151 return llvm::acc::Clause::ACCC_detach;
1152 if constexpr (std::is_same_v<A, parser::AccClause::Device>)
1153 return llvm::acc::Clause::ACCC_device;
1154 if constexpr (std::is_same_v<A, parser::AccClause::DeviceNum>)
1155 return llvm::acc::Clause::ACCC_device_num;
1156 if constexpr (std::is_same_v<A, parser::AccClause::Deviceptr>)
1157 return llvm::acc::Clause::ACCC_deviceptr;
1158 if constexpr (std::is_same_v<A, parser::AccClause::DeviceResident>)
1159 return llvm::acc::Clause::ACCC_device_resident;
1160 if constexpr (std::is_same_v<A, parser::AccClause::DeviceType>)
1161 return llvm::acc::Clause::ACCC_device_type;
1162 if constexpr (std::is_same_v<A, parser::AccClause::Finalize>)
1163 return llvm::acc::Clause::ACCC_finalize;
1164 if constexpr (std::is_same_v<A, parser::AccClause::Firstprivate>)
1165 return llvm::acc::Clause::ACCC_firstprivate;
1166 if constexpr (std::is_same_v<A, parser::AccClause::Gang>)
1167 return llvm::acc::Clause::ACCC_gang;
1168 if constexpr (std::is_same_v<A, parser::AccClause::Host>)
1169 return llvm::acc::Clause::ACCC_host;
1170 if constexpr (std::is_same_v<A, parser::AccClause::If>)
1171 return llvm::acc::Clause::ACCC_if;
1172 if constexpr (std::is_same_v<A, parser::AccClause::IfPresent>)
1173 return llvm::acc::Clause::ACCC_if_present;
1174 if constexpr (std::is_same_v<A, parser::AccClause::Independent>)
1175 return llvm::acc::Clause::ACCC_independent;
1176 if constexpr (std::is_same_v<A, parser::AccClause::Link>)
1177 return llvm::acc::Clause::ACCC_link;
1178 if constexpr (std::is_same_v<A, parser::AccClause::NoCreate>)
1179 return llvm::acc::Clause::ACCC_no_create;
1180 if constexpr (std::is_same_v<A, parser::AccClause::Nohost>)
1181 return llvm::acc::Clause::ACCC_nohost;
1182 if constexpr (std::is_same_v<A, parser::AccClause::NumGangs>)
1183 return llvm::acc::Clause::ACCC_num_gangs;
1184 if constexpr (std::is_same_v<A, parser::AccClause::NumWorkers>)
1185 return llvm::acc::Clause::ACCC_num_workers;
1186 if constexpr (std::is_same_v<A, parser::AccClause::Present>)
1187 return llvm::acc::Clause::ACCC_present;
1188 if constexpr (std::is_same_v<A, parser::AccClause::Private>)
1189 return llvm::acc::Clause::ACCC_private;
1190 if constexpr (std::is_same_v<A, parser::AccClause::Read>)
1191 return llvm::acc::Clause::ACCC_read;
1192 if constexpr (std::is_same_v<A, parser::AccClause::Reduction>)
1193 return llvm::acc::Clause::ACCC_reduction;
1194 if constexpr (std::is_same_v<A, parser::AccClause::Self>)
1195 return llvm::acc::Clause::ACCC_self;
1196 if constexpr (std::is_same_v<A, parser::AccClause::Seq>)
1197 return llvm::acc::Clause::ACCC_seq;
1198 if constexpr (std::is_same_v<A, parser::AccClause::Shortloop>)
1199 return llvm::acc::Clause::ACCC_shortloop;
1200 if constexpr (std::is_same_v<A, parser::AccClause::Tile>)
1201 return llvm::acc::Clause::ACCC_tile;
1202 if constexpr (std::is_same_v<A, parser::AccClause::Unknown>)
1203 return llvm::acc::Clause::ACCC_unknown;
1204 if constexpr (std::is_same_v<A, parser::AccClause::UseDevice>)
1205 return llvm::acc::Clause::ACCC_use_device;
1206 if constexpr (std::is_same_v<A, parser::AccClause::Vector>)
1207 return llvm::acc::Clause::ACCC_vector;
1208 if constexpr (std::is_same_v<A, parser::AccClause::VectorLength>)
1209 return llvm::acc::Clause::ACCC_vector_length;
1210 if constexpr (std::is_same_v<A, parser::AccClause::Wait>)
1211 return llvm::acc::Clause::ACCC_wait;
1212 if constexpr (std::is_same_v<A, parser::AccClause::Worker>)
1213 return llvm::acc::Clause::ACCC_worker;
1214 if constexpr (std::is_same_v<A, parser::AccClause::Write>)
1215 return llvm::acc::Clause::ACCC_write;
1216 llvm_unreachable("Invalid OpenACC Parser clause");
1217
1218 #endif // GEN_FLANG_CLAUSE_PARSER_KIND_MAP
1219
1220 #ifdef GEN_FLANG_CLAUSES_PARSER
1221 #undef GEN_FLANG_CLAUSES_PARSER
1222
1223 TYPE_PARSER(
1224 "write" >> construct<AccClause>(construct<AccClause::Write>()) ||
1225 "worker" >> construct<AccClause>(construct<AccClause::Worker>(maybe(parenthesized("num:" >> scalarIntExpr || scalarIntExpr)))) ||
1226 "wait" >> construct<AccClause>(construct<AccClause::Wait>(maybe(parenthesized(Parser<AccWaitArgument>{})))) ||
1227 "vector_length" >> construct<AccClause>(construct<AccClause::VectorLength>(parenthesized(scalarIntExpr))) ||
1228 "vector" >> construct<AccClause>(construct<AccClause::Vector>(maybe(parenthesized("length:" >> scalarIntExpr || scalarIntExpr)))) ||
1229 "use_device" >> construct<AccClause>(construct<AccClause::UseDevice>(parenthesized(Parser<AccObjectList>{}))) ||
1230 "unknown" >> construct<AccClause>(construct<AccClause::Unknown>()) ||
1231 "tile" >> construct<AccClause>(construct<AccClause::Tile>(parenthesized(Parser<AccTileExprList>{}))) ||
1232 "shortloop" >> construct<AccClause>(construct<AccClause::Shortloop>()) ||
1233 "seq" >> construct<AccClause>(construct<AccClause::Seq>()) ||
1234 "self" >> construct<AccClause>(construct<AccClause::Self>(maybe(parenthesized(Parser<AccSelfClause>{})))) ||
1235 "reduction" >> construct<AccClause>(construct<AccClause::Reduction>(parenthesized(Parser<AccObjectListWithReduction>{}))) ||
1236 "read" >> construct<AccClause>(construct<AccClause::Read>()) ||
1237 "private" >> construct<AccClause>(construct<AccClause::Private>(parenthesized(Parser<AccObjectList>{}))) ||
1238 "present" >> construct<AccClause>(construct<AccClause::Present>(parenthesized(Parser<AccObjectList>{}))) ||
1239 "num_workers" >> construct<AccClause>(construct<AccClause::NumWorkers>(parenthesized(scalarIntExpr))) ||
1240 "num_gangs" >> construct<AccClause>(construct<AccClause::NumGangs>(parenthesized(nonemptyList(scalarIntExpr)))) ||
1241 "nohost" >> construct<AccClause>(construct<AccClause::Nohost>()) ||
1242 "no_create" >> construct<AccClause>(construct<AccClause::NoCreate>(parenthesized(Parser<AccObjectList>{}))) ||
1243 "link" >> construct<AccClause>(construct<AccClause::Link>(parenthesized(Parser<AccObjectList>{}))) ||
1244 "independent" >> construct<AccClause>(construct<AccClause::Independent>()) ||
1245 "if_present" >> construct<AccClause>(construct<AccClause::IfPresent>()) ||
1246 "if" >> construct<AccClause>(construct<AccClause::If>(parenthesized(scalarExpr))) ||
1247 "host" >> construct<AccClause>(construct<AccClause::Host>(parenthesized(Parser<AccObjectList>{}))) ||
1248 "gang" >> construct<AccClause>(construct<AccClause::Gang>(maybe(parenthesized(Parser<AccGangArgList>{})))) ||
1249 "firstprivate" >> construct<AccClause>(construct<AccClause::Firstprivate>(parenthesized(Parser<AccObjectList>{}))) ||
1250 "finalize" >> construct<AccClause>(construct<AccClause::Finalize>()) ||
1251 "deviceptr" >> construct<AccClause>(construct<AccClause::Deviceptr>(parenthesized(Parser<AccObjectList>{}))) ||
1252 ("device_type"_tok || "dtype"_tok) >> construct<AccClause>(construct<AccClause::DeviceType>(parenthesized(Parser<AccDeviceTypeExprList>{}))) ||
1253 "device_resident" >> construct<AccClause>(construct<AccClause::DeviceResident>(parenthesized(Parser<AccObjectList>{}))) ||
1254 "device_num" >> construct<AccClause>(construct<AccClause::DeviceNum>(parenthesized(scalarIntExpr))) ||
1255 "device" >> construct<AccClause>(construct<AccClause::Device>(parenthesized(Parser<AccObjectList>{}))) ||
1256 "detach" >> construct<AccClause>(construct<AccClause::Detach>(parenthesized(Parser<AccObjectList>{}))) ||
1257 "delete" >> construct<AccClause>(construct<AccClause::Delete>(parenthesized(Parser<AccObjectList>{}))) ||
1258 "default_async" >> construct<AccClause>(construct<AccClause::DefaultAsync>(parenthesized(scalarIntExpr))) ||
1259 "default" >> construct<AccClause>(construct<AccClause::Default>(parenthesized(Parser<AccDefaultClause>{}))) ||
1260 ("create"_tok || "present_or_create"_tok || "pcreate"_tok) >> construct<AccClause>(construct<AccClause::Create>(parenthesized(Parser<AccObjectListWithModifier>{}))) ||
1261 ("copyout"_tok || "present_or_copyout"_tok || "pcopyout"_tok) >> construct<AccClause>(construct<AccClause::Copyout>(parenthesized(Parser<AccObjectListWithModifier>{}))) ||
1262 ("copyin"_tok || "present_or_copyin"_tok || "pcopyin"_tok) >> construct<AccClause>(construct<AccClause::Copyin>(parenthesized(Parser<AccObjectListWithModifier>{}))) ||
1263 ("copy"_tok || "present_or_copy"_tok || "pcopy"_tok) >> construct<AccClause>(construct<AccClause::Copy>(parenthesized(Parser<AccObjectList>{}))) ||
1264 "collapse" >> construct<AccClause>(construct<AccClause::Collapse>(parenthesized(Parser<AccCollapseArg>{}))) ||
1265 "capture" >> construct<AccClause>(construct<AccClause::Capture>()) ||
1266 "bind" >> construct<AccClause>(construct<AccClause::Bind>(parenthesized(Parser<AccBindClause>{}))) ||
1267 "auto" >> construct<AccClause>(construct<AccClause::Auto>()) ||
1268 "attach" >> construct<AccClause>(construct<AccClause::Attach>(parenthesized(Parser<AccObjectList>{}))) ||
1269 "async" >> construct<AccClause>(construct<AccClause::Async>(maybe(parenthesized(scalarIntExpr))))
1270 )
1271
1272 #endif // GEN_FLANG_CLAUSES_PARSER
1273
1274 #ifdef GEN_CLANG_CLAUSE_CLASS
1275 #undef GEN_CLANG_CLAUSE_CLASS
1276
1277 #ifndef CLAUSE
1278 #define CLAUSE(Enum, Str, Implicit)
1279 #endif
1280 #ifndef CLAUSE_CLASS
1281 #define CLAUSE_CLASS(Enum, Str, Class)
1282 #endif
1283 #ifndef CLAUSE_NO_CLASS
1284 #define CLAUSE_NO_CLASS(Enum, Str)
1285 #endif
1286
1287 #define __CLAUSE(Name, Class) \
1288 CLAUSE(ACCC_##Name, #Name, /* Implicit */ false) \
1289 CLAUSE_CLASS(ACCC_##Name, #Name, Class)
1290 #define __CLAUSE_NO_CLASS(Name) \
1291 CLAUSE(ACCC_##Name, #Name, /* Implicit */ false) \
1292 CLAUSE_NO_CLASS(ACCC_##Name, #Name)
1293 #define __IMPLICIT_CLAUSE_CLASS(Name, Str, Class) \
1294 CLAUSE(ACCC_##Name, Str, /* Implicit */ true) \
1295 CLAUSE_CLASS(ACCC_##Name, Str, Class)
1296 #define __IMPLICIT_CLAUSE_NO_CLASS(Name, Str) \
1297 CLAUSE(ACCC_##Name, Str, /* Implicit */ true) \
1298 CLAUSE_NO_CLASS(ACCC_##Name, Str)
1299
1300 __CLAUSE_NO_CLASS(async)
1301 __CLAUSE_NO_CLASS(attach)
1302 __CLAUSE_NO_CLASS(auto)
1303 __CLAUSE_NO_CLASS(bind)
1304 __CLAUSE_NO_CLASS(capture)
1305 __CLAUSE_NO_CLASS(collapse)
1306 __CLAUSE_NO_CLASS(copy)
1307 __CLAUSE_NO_CLASS(copyin)
1308 __CLAUSE_NO_CLASS(copyout)
1309 __CLAUSE_NO_CLASS(create)
1310 __CLAUSE_NO_CLASS(default)
1311 __CLAUSE_NO_CLASS(default_async)
1312 __CLAUSE_NO_CLASS(delete)
1313 __CLAUSE_NO_CLASS(detach)
1314 __CLAUSE_NO_CLASS(device)
1315 __CLAUSE_NO_CLASS(device_num)
1316 __CLAUSE_NO_CLASS(deviceptr)
1317 __CLAUSE_NO_CLASS(device_resident)
1318 __CLAUSE_NO_CLASS(device_type)
1319 __CLAUSE_NO_CLASS(finalize)
1320 __CLAUSE_NO_CLASS(firstprivate)
1321 __CLAUSE_NO_CLASS(gang)
1322 __CLAUSE_NO_CLASS(host)
1323 __CLAUSE_NO_CLASS(if)
1324 __CLAUSE_NO_CLASS(if_present)
1325 __CLAUSE_NO_CLASS(independent)
1326 __CLAUSE_NO_CLASS(link)
1327 __CLAUSE_NO_CLASS(no_create)
1328 __CLAUSE_NO_CLASS(nohost)
1329 __CLAUSE_NO_CLASS(num_gangs)
1330 __CLAUSE_NO_CLASS(num_workers)
1331 __CLAUSE_NO_CLASS(present)
1332 __CLAUSE_NO_CLASS(private)
1333 __CLAUSE_NO_CLASS(read)
1334 __CLAUSE_NO_CLASS(reduction)
1335 __CLAUSE_NO_CLASS(self)
1336 __CLAUSE_NO_CLASS(seq)
1337 __CLAUSE_NO_CLASS(shortloop)
1338 __CLAUSE_NO_CLASS(tile)
1339 __CLAUSE_NO_CLASS(unknown)
1340 __CLAUSE_NO_CLASS(use_device)
1341 __CLAUSE_NO_CLASS(vector)
1342 __CLAUSE_NO_CLASS(vector_length)
1343 __CLAUSE_NO_CLASS(wait)
1344 __CLAUSE_NO_CLASS(worker)
1345 __CLAUSE_NO_CLASS(write)
1346
1347 #undef __IMPLICIT_CLAUSE_NO_CLASS
1348 #undef __IMPLICIT_CLAUSE_CLASS
1349 #undef __CLAUSE_NO_CLASS
1350 #undef __CLAUSE
1351 #undef CLAUSE_NO_CLASS
1352 #undef CLAUSE_CLASS
1353 #undef CLAUSE
1354
1355 #endif // GEN_CLANG_CLAUSE_CLASS
1356
1357 #ifdef GEN_DIRECTIVES_IMPL
1358 #undef GEN_DIRECTIVES_IMPL
1359
1360 #include "llvm/Support/ErrorHandling.h"
1361
1362 Directive llvm::acc::getOpenACCDirectiveKind(llvm::StringRef Str) {
1363 return llvm::StringSwitch<Directive>(Str)
1364 .Case("atomic",ACCD_atomic)
1365 .Case("cache",ACCD_cache)
1366 .Case("data",ACCD_data)
1367 .Case("declare",ACCD_declare)
1368 .Case("enter data",ACCD_enter_data)
1369 .Case("exit data",ACCD_exit_data)
1370 .Case("host_data",ACCD_host_data)
1371 .Case("init",ACCD_init)
1372 .Case("kernels",ACCD_kernels)
1373 .Case("kernels loop",ACCD_kernels_loop)
1374 .Case("loop",ACCD_loop)
1375 .Case("parallel",ACCD_parallel)
1376 .Case("parallel loop",ACCD_parallel_loop)
1377 .Case("routine",ACCD_routine)
1378 .Case("serial",ACCD_serial)
1379 .Case("serial loop",ACCD_serial_loop)
1380 .Case("set",ACCD_set)
1381 .Case("shutdown",ACCD_shutdown)
1382 .Case("unknown",ACCD_unknown)
1383 .Case("update",ACCD_update)
1384 .Case("wait",ACCD_wait)
1385 .Default(ACCD_unknown);
1386 }
1387
1388 llvm::StringRef llvm::acc::getOpenACCDirectiveName(Directive Kind) {
1389 switch (Kind) {
1390 case ACCD_atomic:
1391 return "atomic";
1392 case ACCD_cache:
1393 return "cache";
1394 case ACCD_data:
1395 return "data";
1396 case ACCD_declare:
1397 return "declare";
1398 case ACCD_enter_data:
1399 return "enter data";
1400 case ACCD_exit_data:
1401 return "exit data";
1402 case ACCD_host_data:
1403 return "host_data";
1404 case ACCD_init:
1405 return "init";
1406 case ACCD_kernels:
1407 return "kernels";
1408 case ACCD_kernels_loop:
1409 return "kernels loop";
1410 case ACCD_loop:
1411 return "loop";
1412 case ACCD_parallel:
1413 return "parallel";
1414 case ACCD_parallel_loop:
1415 return "parallel loop";
1416 case ACCD_routine:
1417 return "routine";
1418 case ACCD_serial:
1419 return "serial";
1420 case ACCD_serial_loop:
1421 return "serial loop";
1422 case ACCD_set:
1423 return "set";
1424 case ACCD_shutdown:
1425 return "shutdown";
1426 case ACCD_unknown:
1427 return "unknown";
1428 case ACCD_update:
1429 return "update";
1430 case ACCD_wait:
1431 return "wait";
1432 }
1433 llvm_unreachable("Invalid OpenACC Directive kind");
1434 }
1435
1436 Clause llvm::acc::getOpenACCClauseKind(llvm::StringRef Str) {
1437 return llvm::StringSwitch<Clause>(Str)
1438 .Case("async",ACCC_async)
1439 .Case("attach",ACCC_attach)
1440 .Case("auto",ACCC_auto)
1441 .Case("bind",ACCC_bind)
1442 .Case("capture",ACCC_capture)
1443 .Case("collapse",ACCC_collapse)
1444 .Case("copy",ACCC_copy)
1445 .Case("copyin",ACCC_copyin)
1446 .Case("copyout",ACCC_copyout)
1447 .Case("create",ACCC_create)
1448 .Case("default",ACCC_default)
1449 .Case("default_async",ACCC_default_async)
1450 .Case("delete",ACCC_delete)
1451 .Case("detach",ACCC_detach)
1452 .Case("device",ACCC_device)
1453 .Case("device_num",ACCC_device_num)
1454 .Case("deviceptr",ACCC_deviceptr)
1455 .Case("device_resident",ACCC_device_resident)
1456 .Case("device_type",ACCC_device_type)
1457 .Case("finalize",ACCC_finalize)
1458 .Case("firstprivate",ACCC_firstprivate)
1459 .Case("gang",ACCC_gang)
1460 .Case("host",ACCC_host)
1461 .Case("if",ACCC_if)
1462 .Case("if_present",ACCC_if_present)
1463 .Case("independent",ACCC_independent)
1464 .Case("link",ACCC_link)
1465 .Case("no_create",ACCC_no_create)
1466 .Case("nohost",ACCC_nohost)
1467 .Case("num_gangs",ACCC_num_gangs)
1468 .Case("num_workers",ACCC_num_workers)
1469 .Case("present",ACCC_present)
1470 .Case("private",ACCC_private)
1471 .Case("read",ACCC_read)
1472 .Case("reduction",ACCC_reduction)
1473 .Case("self",ACCC_self)
1474 .Case("seq",ACCC_seq)
1475 .Case("shortloop",ACCC_shortloop)
1476 .Case("tile",ACCC_tile)
1477 .Case("unknown",ACCC_unknown)
1478 .Case("use_device",ACCC_use_device)
1479 .Case("vector",ACCC_vector)
1480 .Case("vector_length",ACCC_vector_length)
1481 .Case("wait",ACCC_wait)
1482 .Case("worker",ACCC_worker)
1483 .Case("write",ACCC_write)
1484 .Default(ACCC_unknown);
1485 }
1486
1487 llvm::StringRef llvm::acc::getOpenACCClauseName(Clause Kind) {
1488 switch (Kind) {
1489 case ACCC_async:
1490 return "async";
1491 case ACCC_attach:
1492 return "attach";
1493 case ACCC_auto:
1494 return "auto";
1495 case ACCC_bind:
1496 return "bind";
1497 case ACCC_capture:
1498 return "capture";
1499 case ACCC_collapse:
1500 return "collapse";
1501 case ACCC_copy:
1502 return "copy";
1503 case ACCC_copyin:
1504 return "copyin";
1505 case ACCC_copyout:
1506 return "copyout";
1507 case ACCC_create:
1508 return "create";
1509 case ACCC_default:
1510 return "default";
1511 case ACCC_default_async:
1512 return "default_async";
1513 case ACCC_delete:
1514 return "delete";
1515 case ACCC_detach:
1516 return "detach";
1517 case ACCC_device:
1518 return "device";
1519 case ACCC_device_num:
1520 return "device_num";
1521 case ACCC_deviceptr:
1522 return "deviceptr";
1523 case ACCC_device_resident:
1524 return "device_resident";
1525 case ACCC_device_type:
1526 return "device_type";
1527 case ACCC_finalize:
1528 return "finalize";
1529 case ACCC_firstprivate:
1530 return "firstprivate";
1531 case ACCC_gang:
1532 return "gang";
1533 case ACCC_host:
1534 return "host";
1535 case ACCC_if:
1536 return "if";
1537 case ACCC_if_present:
1538 return "if_present";
1539 case ACCC_independent:
1540 return "independent";
1541 case ACCC_link:
1542 return "link";
1543 case ACCC_no_create:
1544 return "no_create";
1545 case ACCC_nohost:
1546 return "nohost";
1547 case ACCC_num_gangs:
1548 return "num_gangs";
1549 case ACCC_num_workers:
1550 return "num_workers";
1551 case ACCC_present:
1552 return "present";
1553 case ACCC_private:
1554 return "private";
1555 case ACCC_read:
1556 return "read";
1557 case ACCC_reduction:
1558 return "reduction";
1559 case ACCC_self:
1560 return "self";
1561 case ACCC_seq:
1562 return "seq";
1563 case ACCC_shortloop:
1564 return "shortloop";
1565 case ACCC_tile:
1566 return "tile";
1567 case ACCC_unknown:
1568 return "unknown";
1569 case ACCC_use_device:
1570 return "use_device";
1571 case ACCC_vector:
1572 return "vector";
1573 case ACCC_vector_length:
1574 return "vector_length";
1575 case ACCC_wait:
1576 return "wait";
1577 case ACCC_worker:
1578 return "worker";
1579 case ACCC_write:
1580 return "write";
1581 }
1582 llvm_unreachable("Invalid OpenACC Clause kind");
1583 }
1584
1585 DefaultValue llvm::acc::getDefaultValue(llvm::StringRef Str) {
1586 return llvm::StringSwitch<DefaultValue>(Str)
1587 .Case("present",ACC_Default_present)
1588 .Case("none",ACC_Default_none)
1589 .Default(ACC_Default_none);
1590 }
1591
1592 llvm::StringRef llvm::acc::getOpenACCDefaultValueName(llvm::acc::DefaultValue x) {
1593 switch (x) {
1594 case ACC_Default_present:
1595 return "present";
1596 case ACC_Default_none:
1597 return "none";
1598 }
1599 llvm_unreachable("Invalid OpenACC DefaultValue kind");
1600 }
1601
1602 bool llvm::acc::isAllowedClauseForDirective(Directive D, Clause C, unsigned Version) {
1603 assert(unsigned(D) <= llvm::acc::Directive_enumSize);
1604 assert(unsigned(C) <= llvm::acc::Clause_enumSize);
1605 switch (D) {
1606 case ACCD_atomic:
1607 return false;
1608 break;
1609 case ACCD_cache:
1610 return false;
1611 break;
1612 case ACCD_data:
1613 switch (C) {
1614 case ACCC_device_type:
1615 return 32 <= Version && 2147483647 >= Version;
1616 case ACCC_wait:
1617 return 32 <= Version && 2147483647 >= Version;
1618 case ACCC_async:
1619 return 32 <= Version && 2147483647 >= Version;
1620 case ACCC_if:
1621 return 1 <= Version && 2147483647 >= Version;
1622 case ACCC_default:
1623 return 1 <= Version && 2147483647 >= Version;
1624 case ACCC_attach:
1625 return 1 <= Version && 2147483647 >= Version;
1626 case ACCC_copy:
1627 return 1 <= Version && 2147483647 >= Version;
1628 case ACCC_copyin:
1629 return 1 <= Version && 2147483647 >= Version;
1630 case ACCC_copyout:
1631 return 1 <= Version && 2147483647 >= Version;
1632 case ACCC_create:
1633 return 1 <= Version && 2147483647 >= Version;
1634 case ACCC_deviceptr:
1635 return 1 <= Version && 2147483647 >= Version;
1636 case ACCC_no_create:
1637 return 1 <= Version && 2147483647 >= Version;
1638 case ACCC_present:
1639 return 1 <= Version && 2147483647 >= Version;
1640 default:
1641 return false;
1642 }
1643 break;
1644 case ACCD_declare:
1645 switch (C) {
1646 case ACCC_copy:
1647 return 1 <= Version && 2147483647 >= Version;
1648 case ACCC_copyin:
1649 return 1 <= Version && 2147483647 >= Version;
1650 case ACCC_copyout:
1651 return 1 <= Version && 2147483647 >= Version;
1652 case ACCC_create:
1653 return 1 <= Version && 2147483647 >= Version;
1654 case ACCC_present:
1655 return 1 <= Version && 2147483647 >= Version;
1656 case ACCC_deviceptr:
1657 return 1 <= Version && 2147483647 >= Version;
1658 case ACCC_device_resident:
1659 return 1 <= Version && 2147483647 >= Version;
1660 case ACCC_link:
1661 return 1 <= Version && 2147483647 >= Version;
1662 default:
1663 return false;
1664 }
1665 break;
1666 case ACCD_enter_data:
1667 switch (C) {
1668 case ACCC_wait:
1669 return 1 <= Version && 2147483647 >= Version;
1670 case ACCC_async:
1671 return 1 <= Version && 2147483647 >= Version;
1672 case ACCC_if:
1673 return 1 <= Version && 2147483647 >= Version;
1674 case ACCC_attach:
1675 return 1 <= Version && 2147483647 >= Version;
1676 case ACCC_create:
1677 return 1 <= Version && 2147483647 >= Version;
1678 case ACCC_copyin:
1679 return 1 <= Version && 2147483647 >= Version;
1680 default:
1681 return false;
1682 }
1683 break;
1684 case ACCD_exit_data:
1685 switch (C) {
1686 case ACCC_wait:
1687 return 1 <= Version && 2147483647 >= Version;
1688 case ACCC_async:
1689 return 1 <= Version && 2147483647 >= Version;
1690 case ACCC_if:
1691 return 1 <= Version && 2147483647 >= Version;
1692 case ACCC_finalize:
1693 return 1 <= Version && 2147483647 >= Version;
1694 case ACCC_copyout:
1695 return 1 <= Version && 2147483647 >= Version;
1696 case ACCC_delete:
1697 return 1 <= Version && 2147483647 >= Version;
1698 case ACCC_detach:
1699 return 1 <= Version && 2147483647 >= Version;
1700 default:
1701 return false;
1702 }
1703 break;
1704 case ACCD_host_data:
1705 switch (C) {
1706 case ACCC_if:
1707 return 1 <= Version && 2147483647 >= Version;
1708 case ACCC_if_present:
1709 return 1 <= Version && 2147483647 >= Version;
1710 case ACCC_use_device:
1711 return 1 <= Version && 2147483647 >= Version;
1712 default:
1713 return false;
1714 }
1715 break;
1716 case ACCD_init:
1717 switch (C) {
1718 case ACCC_device_num:
1719 return 1 <= Version && 2147483647 >= Version;
1720 case ACCC_device_type:
1721 return 1 <= Version && 2147483647 >= Version;
1722 case ACCC_if:
1723 return 1 <= Version && 2147483647 >= Version;
1724 default:
1725 return false;
1726 }
1727 break;
1728 case ACCD_kernels:
1729 switch (C) {
1730 case ACCC_attach:
1731 return 1 <= Version && 2147483647 >= Version;
1732 case ACCC_copy:
1733 return 1 <= Version && 2147483647 >= Version;
1734 case ACCC_copyin:
1735 return 1 <= Version && 2147483647 >= Version;
1736 case ACCC_copyout:
1737 return 1 <= Version && 2147483647 >= Version;
1738 case ACCC_create:
1739 return 1 <= Version && 2147483647 >= Version;
1740 case ACCC_device_type:
1741 return 1 <= Version && 2147483647 >= Version;
1742 case ACCC_no_create:
1743 return 1 <= Version && 2147483647 >= Version;
1744 case ACCC_present:
1745 return 1 <= Version && 2147483647 >= Version;
1746 case ACCC_deviceptr:
1747 return 1 <= Version && 2147483647 >= Version;
1748 case ACCC_wait:
1749 return 1 <= Version && 2147483647 >= Version;
1750 case ACCC_async:
1751 return 1 <= Version && 2147483647 >= Version;
1752 case ACCC_default:
1753 return 1 <= Version && 2147483647 >= Version;
1754 case ACCC_if:
1755 return 1 <= Version && 2147483647 >= Version;
1756 case ACCC_num_gangs:
1757 return 1 <= Version && 2147483647 >= Version;
1758 case ACCC_num_workers:
1759 return 1 <= Version && 2147483647 >= Version;
1760 case ACCC_self:
1761 return 1 <= Version && 2147483647 >= Version;
1762 case ACCC_vector_length:
1763 return 1 <= Version && 2147483647 >= Version;
1764 default:
1765 return false;
1766 }
1767 break;
1768 case ACCD_kernels_loop:
1769 switch (C) {
1770 case ACCC_attach:
1771 return 1 <= Version && 2147483647 >= Version;
1772 case ACCC_collapse:
1773 return 1 <= Version && 2147483647 >= Version;
1774 case ACCC_copy:
1775 return 1 <= Version && 2147483647 >= Version;
1776 case ACCC_copyin:
1777 return 1 <= Version && 2147483647 >= Version;
1778 case ACCC_copyout:
1779 return 1 <= Version && 2147483647 >= Version;
1780 case ACCC_create:
1781 return 1 <= Version && 2147483647 >= Version;
1782 case ACCC_deviceptr:
1783 return 1 <= Version && 2147483647 >= Version;
1784 case ACCC_device_type:
1785 return 1 <= Version && 2147483647 >= Version;
1786 case ACCC_gang:
1787 return 1 <= Version && 2147483647 >= Version;
1788 case ACCC_no_create:
1789 return 1 <= Version && 2147483647 >= Version;
1790 case ACCC_num_gangs:
1791 return 1 <= Version && 2147483647 >= Version;
1792 case ACCC_num_workers:
1793 return 1 <= Version && 2147483647 >= Version;
1794 case ACCC_present:
1795 return 1 <= Version && 2147483647 >= Version;
1796 case ACCC_private:
1797 return 1 <= Version && 2147483647 >= Version;
1798 case ACCC_reduction:
1799 return 1 <= Version && 2147483647 >= Version;
1800 case ACCC_shortloop:
1801 return 1 <= Version && 2147483647 >= Version;
1802 case ACCC_tile:
1803 return 1 <= Version && 2147483647 >= Version;
1804 case ACCC_vector:
1805 return 1 <= Version && 2147483647 >= Version;
1806 case ACCC_vector_length:
1807 return 1 <= Version && 2147483647 >= Version;
1808 case ACCC_wait:
1809 return 1 <= Version && 2147483647 >= Version;
1810 case ACCC_worker:
1811 return 1 <= Version && 2147483647 >= Version;
1812 case ACCC_async:
1813 return 1 <= Version && 2147483647 >= Version;
1814 case ACCC_default:
1815 return 1 <= Version && 2147483647 >= Version;
1816 case ACCC_if:
1817 return 1 <= Version && 2147483647 >= Version;
1818 case ACCC_self:
1819 return 1 <= Version && 2147483647 >= Version;
1820 case ACCC_auto:
1821 return 1 <= Version && 2147483647 >= Version;
1822 case ACCC_independent:
1823 return 1 <= Version && 2147483647 >= Version;
1824 case ACCC_seq:
1825 return 1 <= Version && 2147483647 >= Version;
1826 default:
1827 return false;
1828 }
1829 break;
1830 case ACCD_loop:
1831 switch (C) {
1832 case ACCC_device_type:
1833 return 1 <= Version && 2147483647 >= Version;
1834 case ACCC_private:
1835 return 1 <= Version && 2147483647 >= Version;
1836 case ACCC_reduction:
1837 return 1 <= Version && 2147483647 >= Version;
1838 case ACCC_collapse:
1839 return 1 <= Version && 2147483647 >= Version;
1840 case ACCC_gang:
1841 return 1 <= Version && 2147483647 >= Version;
1842 case ACCC_shortloop:
1843 return 1 <= Version && 2147483647 >= Version;
1844 case ACCC_tile:
1845 return 1 <= Version && 2147483647 >= Version;
1846 case ACCC_vector:
1847 return 1 <= Version && 2147483647 >= Version;
1848 case ACCC_worker:
1849 return 1 <= Version && 2147483647 >= Version;
1850 case ACCC_auto:
1851 return 1 <= Version && 2147483647 >= Version;
1852 case ACCC_independent:
1853 return 1 <= Version && 2147483647 >= Version;
1854 case ACCC_seq:
1855 return 1 <= Version && 2147483647 >= Version;
1856 default:
1857 return false;
1858 }
1859 break;
1860 case ACCD_parallel:
1861 switch (C) {
1862 case ACCC_attach:
1863 return 1 <= Version && 2147483647 >= Version;
1864 case ACCC_async:
1865 return 1 <= Version && 2147483647 >= Version;
1866 case ACCC_copy:
1867 return 1 <= Version && 2147483647 >= Version;
1868 case ACCC_copyin:
1869 return 1 <= Version && 2147483647 >= Version;
1870 case ACCC_copyout:
1871 return 1 <= Version && 2147483647 >= Version;
1872 case ACCC_create:
1873 return 1 <= Version && 2147483647 >= Version;
1874 case ACCC_deviceptr:
1875 return 1 <= Version && 2147483647 >= Version;
1876 case ACCC_device_type:
1877 return 1 <= Version && 2147483647 >= Version;
1878 case ACCC_no_create:
1879 return 1 <= Version && 2147483647 >= Version;
1880 case ACCC_num_gangs:
1881 return 1 <= Version && 2147483647 >= Version;
1882 case ACCC_num_workers:
1883 return 1 <= Version && 2147483647 >= Version;
1884 case ACCC_present:
1885 return 1 <= Version && 2147483647 >= Version;
1886 case ACCC_private:
1887 return 1 <= Version && 2147483647 >= Version;
1888 case ACCC_firstprivate:
1889 return 1 <= Version && 2147483647 >= Version;
1890 case ACCC_reduction:
1891 return 1 <= Version && 2147483647 >= Version;
1892 case ACCC_wait:
1893 return 1 <= Version && 2147483647 >= Version;
1894 case ACCC_vector_length:
1895 return 1 <= Version && 2147483647 >= Version;
1896 case ACCC_default:
1897 return 1 <= Version && 2147483647 >= Version;
1898 case ACCC_if:
1899 return 1 <= Version && 2147483647 >= Version;
1900 case ACCC_self:
1901 return 1 <= Version && 2147483647 >= Version;
1902 default:
1903 return false;
1904 }
1905 break;
1906 case ACCD_parallel_loop:
1907 switch (C) {
1908 case ACCC_attach:
1909 return 1 <= Version && 2147483647 >= Version;
1910 case ACCC_collapse:
1911 return 1 <= Version && 2147483647 >= Version;
1912 case ACCC_copy:
1913 return 1 <= Version && 2147483647 >= Version;
1914 case ACCC_copyin:
1915 return 1 <= Version && 2147483647 >= Version;
1916 case ACCC_copyout:
1917 return 1 <= Version && 2147483647 >= Version;
1918 case ACCC_create:
1919 return 1 <= Version && 2147483647 >= Version;
1920 case ACCC_deviceptr:
1921 return 1 <= Version && 2147483647 >= Version;
1922 case ACCC_device_type:
1923 return 1 <= Version && 2147483647 >= Version;
1924 case ACCC_firstprivate:
1925 return 1 <= Version && 2147483647 >= Version;
1926 case ACCC_gang:
1927 return 1 <= Version && 2147483647 >= Version;
1928 case ACCC_no_create:
1929 return 1 <= Version && 2147483647 >= Version;
1930 case ACCC_num_gangs:
1931 return 1 <= Version && 2147483647 >= Version;
1932 case ACCC_num_workers:
1933 return 1 <= Version && 2147483647 >= Version;
1934 case ACCC_present:
1935 return 1 <= Version && 2147483647 >= Version;
1936 case ACCC_private:
1937 return 1 <= Version && 2147483647 >= Version;
1938 case ACCC_reduction:
1939 return 1 <= Version && 2147483647 >= Version;
1940 case ACCC_shortloop:
1941 return 1 <= Version && 2147483647 >= Version;
1942 case ACCC_tile:
1943 return 1 <= Version && 2147483647 >= Version;
1944 case ACCC_vector:
1945 return 1 <= Version && 2147483647 >= Version;
1946 case ACCC_vector_length:
1947 return 1 <= Version && 2147483647 >= Version;
1948 case ACCC_wait:
1949 return 1 <= Version && 2147483647 >= Version;
1950 case ACCC_worker:
1951 return 1 <= Version && 2147483647 >= Version;
1952 case ACCC_async:
1953 return 1 <= Version && 2147483647 >= Version;
1954 case ACCC_default:
1955 return 1 <= Version && 2147483647 >= Version;
1956 case ACCC_if:
1957 return 1 <= Version && 2147483647 >= Version;
1958 case ACCC_self:
1959 return 1 <= Version && 2147483647 >= Version;
1960 case ACCC_auto:
1961 return 1 <= Version && 2147483647 >= Version;
1962 case ACCC_independent:
1963 return 1 <= Version && 2147483647 >= Version;
1964 case ACCC_seq:
1965 return 1 <= Version && 2147483647 >= Version;
1966 default:
1967 return false;
1968 }
1969 break;
1970 case ACCD_routine:
1971 switch (C) {
1972 case ACCC_bind:
1973 return 1 <= Version && 2147483647 >= Version;
1974 case ACCC_device_type:
1975 return 1 <= Version && 2147483647 >= Version;
1976 case ACCC_gang:
1977 return 1 <= Version && 2147483647 >= Version;
1978 case ACCC_seq:
1979 return 1 <= Version && 2147483647 >= Version;
1980 case ACCC_vector:
1981 return 1 <= Version && 2147483647 >= Version;
1982 case ACCC_worker:
1983 return 1 <= Version && 2147483647 >= Version;
1984 case ACCC_nohost:
1985 return 1 <= Version && 2147483647 >= Version;
1986 default:
1987 return false;
1988 }
1989 break;
1990 case ACCD_serial:
1991 switch (C) {
1992 case ACCC_attach:
1993 return 1 <= Version && 2147483647 >= Version;
1994 case ACCC_copy:
1995 return 1 <= Version && 2147483647 >= Version;
1996 case ACCC_copyin:
1997 return 1 <= Version && 2147483647 >= Version;
1998 case ACCC_copyout:
1999 return 1 <= Version && 2147483647 >= Version;
2000 case ACCC_create:
2001 return 1 <= Version && 2147483647 >= Version;
2002 case ACCC_deviceptr:
2003 return 1 <= Version && 2147483647 >= Version;
2004 case ACCC_device_type:
2005 return 1 <= Version && 2147483647 >= Version;
2006 case ACCC_no_create:
2007 return 1 <= Version && 2147483647 >= Version;
2008 case ACCC_present:
2009 return 1 <= Version && 2147483647 >= Version;
2010 case ACCC_private:
2011 return 1 <= Version && 2147483647 >= Version;
2012 case ACCC_firstprivate:
2013 return 1 <= Version && 2147483647 >= Version;
2014 case ACCC_reduction:
2015 return 1 <= Version && 2147483647 >= Version;
2016 case ACCC_wait:
2017 return 1 <= Version && 2147483647 >= Version;
2018 case ACCC_async:
2019 return 1 <= Version && 2147483647 >= Version;
2020 case ACCC_default:
2021 return 1 <= Version && 2147483647 >= Version;
2022 case ACCC_if:
2023 return 1 <= Version && 2147483647 >= Version;
2024 case ACCC_self:
2025 return 1 <= Version && 2147483647 >= Version;
2026 default:
2027 return false;
2028 }
2029 break;
2030 case ACCD_serial_loop:
2031 switch (C) {
2032 case ACCC_attach:
2033 return 1 <= Version && 2147483647 >= Version;
2034 case ACCC_collapse:
2035 return 1 <= Version && 2147483647 >= Version;
2036 case ACCC_copy:
2037 return 1 <= Version && 2147483647 >= Version;
2038 case ACCC_copyin:
2039 return 1 <= Version && 2147483647 >= Version;
2040 case ACCC_copyout:
2041 return 1 <= Version && 2147483647 >= Version;
2042 case ACCC_create:
2043 return 1 <= Version && 2147483647 >= Version;
2044 case ACCC_deviceptr:
2045 return 1 <= Version && 2147483647 >= Version;
2046 case ACCC_device_type:
2047 return 1 <= Version && 2147483647 >= Version;
2048 case ACCC_firstprivate:
2049 return 1 <= Version && 2147483647 >= Version;
2050 case ACCC_gang:
2051 return 1 <= Version && 2147483647 >= Version;
2052 case ACCC_no_create:
2053 return 1 <= Version && 2147483647 >= Version;
2054 case ACCC_present:
2055 return 1 <= Version && 2147483647 >= Version;
2056 case ACCC_private:
2057 return 1 <= Version && 2147483647 >= Version;
2058 case ACCC_reduction:
2059 return 1 <= Version && 2147483647 >= Version;
2060 case ACCC_shortloop:
2061 return 1 <= Version && 2147483647 >= Version;
2062 case ACCC_tile:
2063 return 1 <= Version && 2147483647 >= Version;
2064 case ACCC_vector:
2065 return 1 <= Version && 2147483647 >= Version;
2066 case ACCC_wait:
2067 return 1 <= Version && 2147483647 >= Version;
2068 case ACCC_worker:
2069 return 1 <= Version && 2147483647 >= Version;
2070 case ACCC_async:
2071 return 1 <= Version && 2147483647 >= Version;
2072 case ACCC_default:
2073 return 1 <= Version && 2147483647 >= Version;
2074 case ACCC_if:
2075 return 1 <= Version && 2147483647 >= Version;
2076 case ACCC_self:
2077 return 1 <= Version && 2147483647 >= Version;
2078 case ACCC_auto:
2079 return 1 <= Version && 2147483647 >= Version;
2080 case ACCC_independent:
2081 return 1 <= Version && 2147483647 >= Version;
2082 case ACCC_seq:
2083 return 1 <= Version && 2147483647 >= Version;
2084 default:
2085 return false;
2086 }
2087 break;
2088 case ACCD_set:
2089 switch (C) {
2090 case ACCC_default_async:
2091 return 1 <= Version && 2147483647 >= Version;
2092 case ACCC_device_num:
2093 return 1 <= Version && 2147483647 >= Version;
2094 case ACCC_device_type:
2095 return 1 <= Version && 2147483647 >= Version;
2096 case ACCC_if:
2097 return 1 <= Version && 2147483647 >= Version;
2098 default:
2099 return false;
2100 }
2101 break;
2102 case ACCD_shutdown:
2103 switch (C) {
2104 case ACCC_device_num:
2105 return 1 <= Version && 2147483647 >= Version;
2106 case ACCC_device_type:
2107 return 1 <= Version && 2147483647 >= Version;
2108 case ACCC_if:
2109 return 1 <= Version && 2147483647 >= Version;
2110 default:
2111 return false;
2112 }
2113 break;
2114 case ACCD_unknown:
2115 return false;
2116 break;
2117 case ACCD_update:
2118 switch (C) {
2119 case ACCC_device_type:
2120 return 1 <= Version && 2147483647 >= Version;
2121 case ACCC_wait:
2122 return 1 <= Version && 2147483647 >= Version;
2123 case ACCC_async:
2124 return 1 <= Version && 2147483647 >= Version;
2125 case ACCC_if:
2126 return 1 <= Version && 2147483647 >= Version;
2127 case ACCC_if_present:
2128 return 1 <= Version && 2147483647 >= Version;
2129 case ACCC_device:
2130 return 1 <= Version && 2147483647 >= Version;
2131 case ACCC_host:
2132 return 1 <= Version && 2147483647 >= Version;
2133 case ACCC_self:
2134 return 1 <= Version && 2147483647 >= Version;
2135 default:
2136 return false;
2137 }
2138 break;
2139 case ACCD_wait:
2140 switch (C) {
2141 case ACCC_async:
2142 return 1 <= Version && 2147483647 >= Version;
2143 case ACCC_if:
2144 return 1 <= Version && 2147483647 >= Version;
2145 default:
2146 return false;
2147 }
2148 break;
2149 }
2150 llvm_unreachable("Invalid OpenACC Directive kind");
2151 }
2152
2153 llvm::acc::Association llvm::acc::getDirectiveAssociation(llvm::acc::Directive Dir) {
2154 switch (Dir) {
2155 case llvm::acc::Directive::ACCD_atomic:
2156 return llvm::acc::Association::Block;
2157 case llvm::acc::Directive::ACCD_cache:
2158 return llvm::acc::Association::None;
2159 case llvm::acc::Directive::ACCD_data:
2160 return llvm::acc::Association::Block;
2161 case llvm::acc::Directive::ACCD_declare:
2162 return llvm::acc::Association::None;
2163 case llvm::acc::Directive::ACCD_enter_data:
2164 return llvm::acc::Association::None;
2165 case llvm::acc::Directive::ACCD_exit_data:
2166 return llvm::acc::Association::None;
2167 case llvm::acc::Directive::ACCD_host_data:
2168 return llvm::acc::Association::Block;
2169 case llvm::acc::Directive::ACCD_init:
2170 return llvm::acc::Association::None;
2171 case llvm::acc::Directive::ACCD_kernels:
2172 return llvm::acc::Association::Block;
2173 case llvm::acc::Directive::ACCD_kernels_loop:
2174 return llvm::acc::Association::Loop;
2175 case llvm::acc::Directive::ACCD_loop:
2176 return llvm::acc::Association::Loop;
2177 case llvm::acc::Directive::ACCD_parallel:
2178 return llvm::acc::Association::Block;
2179 case llvm::acc::Directive::ACCD_parallel_loop:
2180 return llvm::acc::Association::Loop;
2181 case llvm::acc::Directive::ACCD_routine:
2182 return llvm::acc::Association::Declaration;
2183 case llvm::acc::Directive::ACCD_serial:
2184 return llvm::acc::Association::Block;
2185 case llvm::acc::Directive::ACCD_serial_loop:
2186 return llvm::acc::Association::Loop;
2187 case llvm::acc::Directive::ACCD_set:
2188 return llvm::acc::Association::None;
2189 case llvm::acc::Directive::ACCD_shutdown:
2190 return llvm::acc::Association::None;
2191 case llvm::acc::Directive::ACCD_unknown:
2192 return llvm::acc::Association::None;
2193 case llvm::acc::Directive::ACCD_update:
2194 return llvm::acc::Association::None;
2195 case llvm::acc::Directive::ACCD_wait:
2196 return llvm::acc::Association::None;
2197 } // switch (Dir)
2198 llvm_unreachable("Unexpected directive");
2199 }
2200
2201 llvm::acc::Category llvm::acc::getDirectiveCategory(llvm::acc::Directive Dir) {
2202 switch (Dir) {
2203 case llvm::acc::ACCD_atomic:
2204 return llvm::acc::Category::Executable;
2205 case llvm::acc::ACCD_cache:
2206 return llvm::acc::Category::Executable;
2207 case llvm::acc::ACCD_data:
2208 return llvm::acc::Category::Executable;
2209 case llvm::acc::ACCD_declare:
2210 return llvm::acc::Category::Declarative;
2211 case llvm::acc::ACCD_enter_data:
2212 return llvm::acc::Category::Executable;
2213 case llvm::acc::ACCD_exit_data:
2214 return llvm::acc::Category::Executable;
2215 case llvm::acc::ACCD_host_data:
2216 return llvm::acc::Category::Executable;
2217 case llvm::acc::ACCD_init:
2218 return llvm::acc::Category::Executable;
2219 case llvm::acc::ACCD_kernels:
2220 return llvm::acc::Category::Executable;
2221 case llvm::acc::ACCD_kernels_loop:
2222 return llvm::acc::Category::Executable;
2223 case llvm::acc::ACCD_loop:
2224 return llvm::acc::Category::Executable;
2225 case llvm::acc::ACCD_parallel:
2226 return llvm::acc::Category::Executable;
2227 case llvm::acc::ACCD_parallel_loop:
2228 return llvm::acc::Category::Executable;
2229 case llvm::acc::ACCD_routine:
2230 return llvm::acc::Category::Declarative;
2231 case llvm::acc::ACCD_serial:
2232 return llvm::acc::Category::Executable;
2233 case llvm::acc::ACCD_serial_loop:
2234 return llvm::acc::Category::Executable;
2235 case llvm::acc::ACCD_set:
2236 return llvm::acc::Category::Executable;
2237 case llvm::acc::ACCD_shutdown:
2238 return llvm::acc::Category::Executable;
2239 case llvm::acc::ACCD_unknown:
2240 return llvm::acc::Category::Utility;
2241 case llvm::acc::ACCD_update:
2242 return llvm::acc::Category::Executable;
2243 case llvm::acc::ACCD_wait:
2244 return llvm::acc::Category::Executable;
2245 } // switch (Dir)
2246 llvm_unreachable("Unexpected directive");
2247 }
2248
2249 static_assert(sizeof(llvm::acc::Directive) == sizeof(int));
2250 [[maybe_unused]] static const llvm::acc::Directive LeafConstructTable[][4] = {
2251 {llvm::acc::ACCD_atomic, static_cast<llvm::acc::Directive>(0), static_cast<llvm::acc::Directive>(-1), static_cast<llvm::acc::Directive>(-1),},
2252 {llvm::acc::ACCD_cache, static_cast<llvm::acc::Directive>(0), static_cast<llvm::acc::Directive>(-1), static_cast<llvm::acc::Directive>(-1),},
2253 {llvm::acc::ACCD_data, static_cast<llvm::acc::Directive>(0), static_cast<llvm::acc::Directive>(-1), static_cast<llvm::acc::Directive>(-1),},
2254 {llvm::acc::ACCD_declare, static_cast<llvm::acc::Directive>(0), static_cast<llvm::acc::Directive>(-1), static_cast<llvm::acc::Directive>(-1),},
2255 {llvm::acc::ACCD_enter_data, static_cast<llvm::acc::Directive>(0), static_cast<llvm::acc::Directive>(-1), static_cast<llvm::acc::Directive>(-1),},
2256 {llvm::acc::ACCD_exit_data, static_cast<llvm::acc::Directive>(0), static_cast<llvm::acc::Directive>(-1), static_cast<llvm::acc::Directive>(-1),},
2257 {llvm::acc::ACCD_host_data, static_cast<llvm::acc::Directive>(0), static_cast<llvm::acc::Directive>(-1), static_cast<llvm::acc::Directive>(-1),},
2258 {llvm::acc::ACCD_init, static_cast<llvm::acc::Directive>(0), static_cast<llvm::acc::Directive>(-1), static_cast<llvm::acc::Directive>(-1),},
2259 {llvm::acc::ACCD_kernels, static_cast<llvm::acc::Directive>(0), static_cast<llvm::acc::Directive>(-1), static_cast<llvm::acc::Directive>(-1),},
2260 {llvm::acc::ACCD_loop, static_cast<llvm::acc::Directive>(0), static_cast<llvm::acc::Directive>(-1), static_cast<llvm::acc::Directive>(-1),},
2261 {llvm::acc::ACCD_parallel, static_cast<llvm::acc::Directive>(0), static_cast<llvm::acc::Directive>(-1), static_cast<llvm::acc::Directive>(-1),},
2262 {llvm::acc::ACCD_routine, static_cast<llvm::acc::Directive>(0), static_cast<llvm::acc::Directive>(-1), static_cast<llvm::acc::Directive>(-1),},
2263 {llvm::acc::ACCD_serial, static_cast<llvm::acc::Directive>(0), static_cast<llvm::acc::Directive>(-1), static_cast<llvm::acc::Directive>(-1),},
2264 {llvm::acc::ACCD_set, static_cast<llvm::acc::Directive>(0), static_cast<llvm::acc::Directive>(-1), static_cast<llvm::acc::Directive>(-1),},
2265 {llvm::acc::ACCD_shutdown, static_cast<llvm::acc::Directive>(0), static_cast<llvm::acc::Directive>(-1), static_cast<llvm::acc::Directive>(-1),},
2266 {llvm::acc::ACCD_unknown, static_cast<llvm::acc::Directive>(0), static_cast<llvm::acc::Directive>(-1), static_cast<llvm::acc::Directive>(-1),},
2267 {llvm::acc::ACCD_update, static_cast<llvm::acc::Directive>(0), static_cast<llvm::acc::Directive>(-1), static_cast<llvm::acc::Directive>(-1),},
2268 {llvm::acc::ACCD_wait, static_cast<llvm::acc::Directive>(0), static_cast<llvm::acc::Directive>(-1), static_cast<llvm::acc::Directive>(-1),},
2269 {llvm::acc::ACCD_kernels_loop, static_cast<llvm::acc::Directive>(2), llvm::acc::ACCD_kernels, llvm::acc::ACCD_loop,},
2270 {llvm::acc::ACCD_parallel_loop, static_cast<llvm::acc::Directive>(2), llvm::acc::ACCD_parallel, llvm::acc::ACCD_loop,},
2271 {llvm::acc::ACCD_serial_loop, static_cast<llvm::acc::Directive>(2), llvm::acc::ACCD_serial, llvm::acc::ACCD_loop,},
2272 };
2273
2274 [[maybe_unused]] static auto LeafConstructTableEndDirective = LeafConstructTable + 21;
2275
2276 [[maybe_unused]] static const int LeafConstructTableOrdering[] = {
2277 0, 1, 2, 3, 4, 5, 6, 7, 8, 18, 9, 10, 19, 11, 12, 20, 13, 14, 15, 16, 17,
2278 };
2279
2280 #endif // GEN_DIRECTIVES_IMPL
2281