1#ifdef GEN_FLANG_DIRECTIVE_CLAUSE_SETS 2#undef GEN_FLANG_DIRECTIVE_CLAUSE_SETS 3 4namespace llvm { 5namespace acc { 6 7 // Sets for atomic 8 9 static AccClauseSet allowedClauses_ACCD_atomic { 10 }; 11 12 static AccClauseSet allowedOnceClauses_ACCD_atomic { 13 }; 14 15 static AccClauseSet allowedExclusiveClauses_ACCD_atomic { 16 }; 17 18 static AccClauseSet requiredClauses_ACCD_atomic { 19 }; 20 21 // Sets for cache 22 23 static AccClauseSet allowedClauses_ACCD_cache { 24 }; 25 26 static AccClauseSet allowedOnceClauses_ACCD_cache { 27 }; 28 29 static AccClauseSet allowedExclusiveClauses_ACCD_cache { 30 }; 31 32 static AccClauseSet requiredClauses_ACCD_cache { 33 }; 34 35 // Sets for data 36 37 static AccClauseSet allowedClauses_ACCD_data { 38 llvm::acc::Clause::ACCC_device_type, 39 llvm::acc::Clause::ACCC_wait, 40 }; 41 42 static AccClauseSet allowedOnceClauses_ACCD_data { 43 llvm::acc::Clause::ACCC_async, 44 llvm::acc::Clause::ACCC_if, 45 llvm::acc::Clause::ACCC_default, 46 }; 47 48 static AccClauseSet allowedExclusiveClauses_ACCD_data { 49 }; 50 51 static AccClauseSet requiredClauses_ACCD_data { 52 llvm::acc::Clause::ACCC_attach, 53 llvm::acc::Clause::ACCC_copy, 54 llvm::acc::Clause::ACCC_copyin, 55 llvm::acc::Clause::ACCC_copyout, 56 llvm::acc::Clause::ACCC_create, 57 llvm::acc::Clause::ACCC_default, 58 llvm::acc::Clause::ACCC_deviceptr, 59 llvm::acc::Clause::ACCC_no_create, 60 llvm::acc::Clause::ACCC_present, 61 }; 62 63 // Sets for declare 64 65 static AccClauseSet allowedClauses_ACCD_declare { 66 llvm::acc::Clause::ACCC_copy, 67 llvm::acc::Clause::ACCC_copyin, 68 llvm::acc::Clause::ACCC_copyout, 69 llvm::acc::Clause::ACCC_create, 70 llvm::acc::Clause::ACCC_present, 71 llvm::acc::Clause::ACCC_deviceptr, 72 llvm::acc::Clause::ACCC_device_resident, 73 llvm::acc::Clause::ACCC_link, 74 }; 75 76 static AccClauseSet allowedOnceClauses_ACCD_declare { 77 }; 78 79 static AccClauseSet allowedExclusiveClauses_ACCD_declare { 80 }; 81 82 static AccClauseSet requiredClauses_ACCD_declare { 83 }; 84 85 // Sets for enter data 86 87 static AccClauseSet allowedClauses_ACCD_enter_data { 88 llvm::acc::Clause::ACCC_wait, 89 }; 90 91 static AccClauseSet allowedOnceClauses_ACCD_enter_data { 92 llvm::acc::Clause::ACCC_async, 93 llvm::acc::Clause::ACCC_if, 94 }; 95 96 static AccClauseSet allowedExclusiveClauses_ACCD_enter_data { 97 }; 98 99 static AccClauseSet requiredClauses_ACCD_enter_data { 100 llvm::acc::Clause::ACCC_attach, 101 llvm::acc::Clause::ACCC_create, 102 llvm::acc::Clause::ACCC_copyin, 103 }; 104 105 // Sets for exit data 106 107 static AccClauseSet allowedClauses_ACCD_exit_data { 108 llvm::acc::Clause::ACCC_wait, 109 }; 110 111 static AccClauseSet allowedOnceClauses_ACCD_exit_data { 112 llvm::acc::Clause::ACCC_async, 113 llvm::acc::Clause::ACCC_if, 114 llvm::acc::Clause::ACCC_finalize, 115 }; 116 117 static AccClauseSet allowedExclusiveClauses_ACCD_exit_data { 118 }; 119 120 static AccClauseSet requiredClauses_ACCD_exit_data { 121 llvm::acc::Clause::ACCC_copyout, 122 llvm::acc::Clause::ACCC_delete, 123 llvm::acc::Clause::ACCC_detach, 124 }; 125 126 // Sets for host_data 127 128 static AccClauseSet allowedClauses_ACCD_host_data { 129 }; 130 131 static AccClauseSet allowedOnceClauses_ACCD_host_data { 132 llvm::acc::Clause::ACCC_if, 133 llvm::acc::Clause::ACCC_if_present, 134 }; 135 136 static AccClauseSet allowedExclusiveClauses_ACCD_host_data { 137 }; 138 139 static AccClauseSet requiredClauses_ACCD_host_data { 140 llvm::acc::Clause::ACCC_use_device, 141 }; 142 143 // Sets for init 144 145 static AccClauseSet allowedClauses_ACCD_init { 146 }; 147 148 static AccClauseSet allowedOnceClauses_ACCD_init { 149 llvm::acc::Clause::ACCC_device_num, 150 llvm::acc::Clause::ACCC_device_type, 151 llvm::acc::Clause::ACCC_if, 152 }; 153 154 static AccClauseSet allowedExclusiveClauses_ACCD_init { 155 }; 156 157 static AccClauseSet requiredClauses_ACCD_init { 158 }; 159 160 // Sets for kernels 161 162 static AccClauseSet allowedClauses_ACCD_kernels { 163 llvm::acc::Clause::ACCC_attach, 164 llvm::acc::Clause::ACCC_copy, 165 llvm::acc::Clause::ACCC_copyin, 166 llvm::acc::Clause::ACCC_copyout, 167 llvm::acc::Clause::ACCC_create, 168 llvm::acc::Clause::ACCC_device_type, 169 llvm::acc::Clause::ACCC_no_create, 170 llvm::acc::Clause::ACCC_present, 171 llvm::acc::Clause::ACCC_deviceptr, 172 llvm::acc::Clause::ACCC_wait, 173 }; 174 175 static AccClauseSet allowedOnceClauses_ACCD_kernels { 176 llvm::acc::Clause::ACCC_async, 177 llvm::acc::Clause::ACCC_default, 178 llvm::acc::Clause::ACCC_if, 179 llvm::acc::Clause::ACCC_num_gangs, 180 llvm::acc::Clause::ACCC_num_workers, 181 llvm::acc::Clause::ACCC_self, 182 llvm::acc::Clause::ACCC_vector_length, 183 }; 184 185 static AccClauseSet allowedExclusiveClauses_ACCD_kernels { 186 }; 187 188 static AccClauseSet requiredClauses_ACCD_kernels { 189 }; 190 191 // Sets for kernels loop 192 193 static AccClauseSet allowedClauses_ACCD_kernels_loop { 194 llvm::acc::Clause::ACCC_copy, 195 llvm::acc::Clause::ACCC_copyin, 196 llvm::acc::Clause::ACCC_copyout, 197 llvm::acc::Clause::ACCC_create, 198 llvm::acc::Clause::ACCC_device_type, 199 llvm::acc::Clause::ACCC_no_create, 200 llvm::acc::Clause::ACCC_present, 201 llvm::acc::Clause::ACCC_private, 202 llvm::acc::Clause::ACCC_reduction, 203 llvm::acc::Clause::ACCC_deviceptr, 204 llvm::acc::Clause::ACCC_attach, 205 llvm::acc::Clause::ACCC_wait, 206 }; 207 208 static AccClauseSet allowedOnceClauses_ACCD_kernels_loop { 209 llvm::acc::Clause::ACCC_async, 210 llvm::acc::Clause::ACCC_collapse, 211 llvm::acc::Clause::ACCC_default, 212 llvm::acc::Clause::ACCC_gang, 213 llvm::acc::Clause::ACCC_if, 214 llvm::acc::Clause::ACCC_num_gangs, 215 llvm::acc::Clause::ACCC_num_workers, 216 llvm::acc::Clause::ACCC_self, 217 llvm::acc::Clause::ACCC_tile, 218 llvm::acc::Clause::ACCC_vector, 219 llvm::acc::Clause::ACCC_vector_length, 220 llvm::acc::Clause::ACCC_worker, 221 }; 222 223 static AccClauseSet allowedExclusiveClauses_ACCD_kernels_loop { 224 llvm::acc::Clause::ACCC_auto, 225 llvm::acc::Clause::ACCC_independent, 226 llvm::acc::Clause::ACCC_seq, 227 }; 228 229 static AccClauseSet requiredClauses_ACCD_kernels_loop { 230 }; 231 232 // Sets for loop 233 234 static AccClauseSet allowedClauses_ACCD_loop { 235 llvm::acc::Clause::ACCC_device_type, 236 llvm::acc::Clause::ACCC_private, 237 llvm::acc::Clause::ACCC_reduction, 238 }; 239 240 static AccClauseSet allowedOnceClauses_ACCD_loop { 241 llvm::acc::Clause::ACCC_collapse, 242 llvm::acc::Clause::ACCC_gang, 243 llvm::acc::Clause::ACCC_tile, 244 llvm::acc::Clause::ACCC_vector, 245 llvm::acc::Clause::ACCC_worker, 246 }; 247 248 static AccClauseSet allowedExclusiveClauses_ACCD_loop { 249 llvm::acc::Clause::ACCC_auto, 250 llvm::acc::Clause::ACCC_independent, 251 llvm::acc::Clause::ACCC_seq, 252 }; 253 254 static AccClauseSet requiredClauses_ACCD_loop { 255 }; 256 257 // Sets for parallel 258 259 static AccClauseSet allowedClauses_ACCD_parallel { 260 llvm::acc::Clause::ACCC_attach, 261 llvm::acc::Clause::ACCC_async, 262 llvm::acc::Clause::ACCC_copy, 263 llvm::acc::Clause::ACCC_copyin, 264 llvm::acc::Clause::ACCC_copyout, 265 llvm::acc::Clause::ACCC_create, 266 llvm::acc::Clause::ACCC_deviceptr, 267 llvm::acc::Clause::ACCC_device_type, 268 llvm::acc::Clause::ACCC_no_create, 269 llvm::acc::Clause::ACCC_num_gangs, 270 llvm::acc::Clause::ACCC_num_workers, 271 llvm::acc::Clause::ACCC_present, 272 llvm::acc::Clause::ACCC_private, 273 llvm::acc::Clause::ACCC_firstprivate, 274 llvm::acc::Clause::ACCC_reduction, 275 llvm::acc::Clause::ACCC_wait, 276 llvm::acc::Clause::ACCC_vector_length, 277 }; 278 279 static AccClauseSet allowedOnceClauses_ACCD_parallel { 280 llvm::acc::Clause::ACCC_default, 281 llvm::acc::Clause::ACCC_if, 282 llvm::acc::Clause::ACCC_self, 283 }; 284 285 static AccClauseSet allowedExclusiveClauses_ACCD_parallel { 286 }; 287 288 static AccClauseSet requiredClauses_ACCD_parallel { 289 }; 290 291 // Sets for parallel loop 292 293 static AccClauseSet allowedClauses_ACCD_parallel_loop { 294 llvm::acc::Clause::ACCC_attach, 295 llvm::acc::Clause::ACCC_copy, 296 llvm::acc::Clause::ACCC_copyin, 297 llvm::acc::Clause::ACCC_copyout, 298 llvm::acc::Clause::ACCC_create, 299 llvm::acc::Clause::ACCC_deviceptr, 300 llvm::acc::Clause::ACCC_device_type, 301 llvm::acc::Clause::ACCC_firstprivate, 302 llvm::acc::Clause::ACCC_no_create, 303 llvm::acc::Clause::ACCC_present, 304 llvm::acc::Clause::ACCC_private, 305 llvm::acc::Clause::ACCC_reduction, 306 llvm::acc::Clause::ACCC_tile, 307 llvm::acc::Clause::ACCC_wait, 308 }; 309 310 static AccClauseSet allowedOnceClauses_ACCD_parallel_loop { 311 llvm::acc::Clause::ACCC_async, 312 llvm::acc::Clause::ACCC_collapse, 313 llvm::acc::Clause::ACCC_default, 314 llvm::acc::Clause::ACCC_gang, 315 llvm::acc::Clause::ACCC_if, 316 llvm::acc::Clause::ACCC_num_gangs, 317 llvm::acc::Clause::ACCC_num_workers, 318 llvm::acc::Clause::ACCC_self, 319 llvm::acc::Clause::ACCC_vector, 320 llvm::acc::Clause::ACCC_vector_length, 321 llvm::acc::Clause::ACCC_worker, 322 }; 323 324 static AccClauseSet allowedExclusiveClauses_ACCD_parallel_loop { 325 llvm::acc::Clause::ACCC_auto, 326 llvm::acc::Clause::ACCC_independent, 327 llvm::acc::Clause::ACCC_seq, 328 }; 329 330 static AccClauseSet requiredClauses_ACCD_parallel_loop { 331 }; 332 333 // Sets for routine 334 335 static AccClauseSet allowedClauses_ACCD_routine { 336 }; 337 338 static AccClauseSet allowedOnceClauses_ACCD_routine { 339 llvm::acc::Clause::ACCC_bind, 340 llvm::acc::Clause::ACCC_device_type, 341 llvm::acc::Clause::ACCC_nohost, 342 llvm::acc::Clause::ACCC_gang, 343 llvm::acc::Clause::ACCC_seq, 344 llvm::acc::Clause::ACCC_vector, 345 llvm::acc::Clause::ACCC_worker, 346 }; 347 348 static AccClauseSet allowedExclusiveClauses_ACCD_routine { 349 }; 350 351 static AccClauseSet requiredClauses_ACCD_routine { 352 }; 353 354 // Sets for serial 355 356 static AccClauseSet allowedClauses_ACCD_serial { 357 llvm::acc::Clause::ACCC_attach, 358 llvm::acc::Clause::ACCC_copy, 359 llvm::acc::Clause::ACCC_copyin, 360 llvm::acc::Clause::ACCC_copyout, 361 llvm::acc::Clause::ACCC_create, 362 llvm::acc::Clause::ACCC_deviceptr, 363 llvm::acc::Clause::ACCC_device_type, 364 llvm::acc::Clause::ACCC_no_create, 365 llvm::acc::Clause::ACCC_present, 366 llvm::acc::Clause::ACCC_private, 367 llvm::acc::Clause::ACCC_firstprivate, 368 llvm::acc::Clause::ACCC_reduction, 369 llvm::acc::Clause::ACCC_wait, 370 }; 371 372 static AccClauseSet allowedOnceClauses_ACCD_serial { 373 llvm::acc::Clause::ACCC_async, 374 llvm::acc::Clause::ACCC_default, 375 llvm::acc::Clause::ACCC_if, 376 llvm::acc::Clause::ACCC_self, 377 }; 378 379 static AccClauseSet allowedExclusiveClauses_ACCD_serial { 380 }; 381 382 static AccClauseSet requiredClauses_ACCD_serial { 383 }; 384 385 // Sets for serial loop 386 387 static AccClauseSet allowedClauses_ACCD_serial_loop { 388 llvm::acc::Clause::ACCC_attach, 389 llvm::acc::Clause::ACCC_copy, 390 llvm::acc::Clause::ACCC_copyin, 391 llvm::acc::Clause::ACCC_copyout, 392 llvm::acc::Clause::ACCC_create, 393 llvm::acc::Clause::ACCC_deviceptr, 394 llvm::acc::Clause::ACCC_device_type, 395 llvm::acc::Clause::ACCC_firstprivate, 396 llvm::acc::Clause::ACCC_no_create, 397 llvm::acc::Clause::ACCC_present, 398 llvm::acc::Clause::ACCC_private, 399 llvm::acc::Clause::ACCC_reduction, 400 llvm::acc::Clause::ACCC_wait, 401 }; 402 403 static AccClauseSet allowedOnceClauses_ACCD_serial_loop { 404 llvm::acc::Clause::ACCC_async, 405 llvm::acc::Clause::ACCC_collapse, 406 llvm::acc::Clause::ACCC_default, 407 llvm::acc::Clause::ACCC_gang, 408 llvm::acc::Clause::ACCC_if, 409 llvm::acc::Clause::ACCC_self, 410 llvm::acc::Clause::ACCC_tile, 411 llvm::acc::Clause::ACCC_vector, 412 llvm::acc::Clause::ACCC_worker, 413 }; 414 415 static AccClauseSet allowedExclusiveClauses_ACCD_serial_loop { 416 llvm::acc::Clause::ACCC_auto, 417 llvm::acc::Clause::ACCC_independent, 418 llvm::acc::Clause::ACCC_seq, 419 }; 420 421 static AccClauseSet requiredClauses_ACCD_serial_loop { 422 }; 423 424 // Sets for set 425 426 static AccClauseSet allowedClauses_ACCD_set { 427 }; 428 429 static AccClauseSet allowedOnceClauses_ACCD_set { 430 llvm::acc::Clause::ACCC_default_async, 431 llvm::acc::Clause::ACCC_device_num, 432 llvm::acc::Clause::ACCC_device_type, 433 llvm::acc::Clause::ACCC_if, 434 }; 435 436 static AccClauseSet allowedExclusiveClauses_ACCD_set { 437 }; 438 439 static AccClauseSet requiredClauses_ACCD_set { 440 llvm::acc::Clause::ACCC_default_async, 441 llvm::acc::Clause::ACCC_device_num, 442 llvm::acc::Clause::ACCC_device_type, 443 }; 444 445 // Sets for shutdown 446 447 static AccClauseSet allowedClauses_ACCD_shutdown { 448 }; 449 450 static AccClauseSet allowedOnceClauses_ACCD_shutdown { 451 llvm::acc::Clause::ACCC_device_num, 452 llvm::acc::Clause::ACCC_device_type, 453 llvm::acc::Clause::ACCC_if, 454 }; 455 456 static AccClauseSet allowedExclusiveClauses_ACCD_shutdown { 457 }; 458 459 static AccClauseSet requiredClauses_ACCD_shutdown { 460 }; 461 462 // Sets for unknown 463 464 static AccClauseSet allowedClauses_ACCD_unknown { 465 }; 466 467 static AccClauseSet allowedOnceClauses_ACCD_unknown { 468 }; 469 470 static AccClauseSet allowedExclusiveClauses_ACCD_unknown { 471 }; 472 473 static AccClauseSet requiredClauses_ACCD_unknown { 474 }; 475 476 // Sets for update 477 478 static AccClauseSet allowedClauses_ACCD_update { 479 llvm::acc::Clause::ACCC_device_type, 480 llvm::acc::Clause::ACCC_wait, 481 }; 482 483 static AccClauseSet allowedOnceClauses_ACCD_update { 484 llvm::acc::Clause::ACCC_async, 485 llvm::acc::Clause::ACCC_if, 486 llvm::acc::Clause::ACCC_if_present, 487 }; 488 489 static AccClauseSet allowedExclusiveClauses_ACCD_update { 490 }; 491 492 static AccClauseSet requiredClauses_ACCD_update { 493 llvm::acc::Clause::ACCC_device, 494 llvm::acc::Clause::ACCC_host, 495 llvm::acc::Clause::ACCC_self, 496 }; 497 498 // Sets for wait 499 500 static AccClauseSet allowedClauses_ACCD_wait { 501 }; 502 503 static AccClauseSet allowedOnceClauses_ACCD_wait { 504 llvm::acc::Clause::ACCC_async, 505 llvm::acc::Clause::ACCC_if, 506 }; 507 508 static AccClauseSet allowedExclusiveClauses_ACCD_wait { 509 }; 510 511 static AccClauseSet requiredClauses_ACCD_wait { 512 }; 513} // namespace acc 514} // namespace llvm 515 516#endif // GEN_FLANG_DIRECTIVE_CLAUSE_SETS 517 518#ifdef GEN_FLANG_DIRECTIVE_CLAUSE_MAP 519#undef GEN_FLANG_DIRECTIVE_CLAUSE_MAP 520 521{ 522 {llvm::acc::Directive::ACCD_atomic, 523 { 524 llvm::acc::allowedClauses_ACCD_atomic, 525 llvm::acc::allowedOnceClauses_ACCD_atomic, 526 llvm::acc::allowedExclusiveClauses_ACCD_atomic, 527 llvm::acc::requiredClauses_ACCD_atomic, 528 } 529 }, 530 {llvm::acc::Directive::ACCD_cache, 531 { 532 llvm::acc::allowedClauses_ACCD_cache, 533 llvm::acc::allowedOnceClauses_ACCD_cache, 534 llvm::acc::allowedExclusiveClauses_ACCD_cache, 535 llvm::acc::requiredClauses_ACCD_cache, 536 } 537 }, 538 {llvm::acc::Directive::ACCD_data, 539 { 540 llvm::acc::allowedClauses_ACCD_data, 541 llvm::acc::allowedOnceClauses_ACCD_data, 542 llvm::acc::allowedExclusiveClauses_ACCD_data, 543 llvm::acc::requiredClauses_ACCD_data, 544 } 545 }, 546 {llvm::acc::Directive::ACCD_declare, 547 { 548 llvm::acc::allowedClauses_ACCD_declare, 549 llvm::acc::allowedOnceClauses_ACCD_declare, 550 llvm::acc::allowedExclusiveClauses_ACCD_declare, 551 llvm::acc::requiredClauses_ACCD_declare, 552 } 553 }, 554 {llvm::acc::Directive::ACCD_enter_data, 555 { 556 llvm::acc::allowedClauses_ACCD_enter_data, 557 llvm::acc::allowedOnceClauses_ACCD_enter_data, 558 llvm::acc::allowedExclusiveClauses_ACCD_enter_data, 559 llvm::acc::requiredClauses_ACCD_enter_data, 560 } 561 }, 562 {llvm::acc::Directive::ACCD_exit_data, 563 { 564 llvm::acc::allowedClauses_ACCD_exit_data, 565 llvm::acc::allowedOnceClauses_ACCD_exit_data, 566 llvm::acc::allowedExclusiveClauses_ACCD_exit_data, 567 llvm::acc::requiredClauses_ACCD_exit_data, 568 } 569 }, 570 {llvm::acc::Directive::ACCD_host_data, 571 { 572 llvm::acc::allowedClauses_ACCD_host_data, 573 llvm::acc::allowedOnceClauses_ACCD_host_data, 574 llvm::acc::allowedExclusiveClauses_ACCD_host_data, 575 llvm::acc::requiredClauses_ACCD_host_data, 576 } 577 }, 578 {llvm::acc::Directive::ACCD_init, 579 { 580 llvm::acc::allowedClauses_ACCD_init, 581 llvm::acc::allowedOnceClauses_ACCD_init, 582 llvm::acc::allowedExclusiveClauses_ACCD_init, 583 llvm::acc::requiredClauses_ACCD_init, 584 } 585 }, 586 {llvm::acc::Directive::ACCD_kernels, 587 { 588 llvm::acc::allowedClauses_ACCD_kernels, 589 llvm::acc::allowedOnceClauses_ACCD_kernels, 590 llvm::acc::allowedExclusiveClauses_ACCD_kernels, 591 llvm::acc::requiredClauses_ACCD_kernels, 592 } 593 }, 594 {llvm::acc::Directive::ACCD_kernels_loop, 595 { 596 llvm::acc::allowedClauses_ACCD_kernels_loop, 597 llvm::acc::allowedOnceClauses_ACCD_kernels_loop, 598 llvm::acc::allowedExclusiveClauses_ACCD_kernels_loop, 599 llvm::acc::requiredClauses_ACCD_kernels_loop, 600 } 601 }, 602 {llvm::acc::Directive::ACCD_loop, 603 { 604 llvm::acc::allowedClauses_ACCD_loop, 605 llvm::acc::allowedOnceClauses_ACCD_loop, 606 llvm::acc::allowedExclusiveClauses_ACCD_loop, 607 llvm::acc::requiredClauses_ACCD_loop, 608 } 609 }, 610 {llvm::acc::Directive::ACCD_parallel, 611 { 612 llvm::acc::allowedClauses_ACCD_parallel, 613 llvm::acc::allowedOnceClauses_ACCD_parallel, 614 llvm::acc::allowedExclusiveClauses_ACCD_parallel, 615 llvm::acc::requiredClauses_ACCD_parallel, 616 } 617 }, 618 {llvm::acc::Directive::ACCD_parallel_loop, 619 { 620 llvm::acc::allowedClauses_ACCD_parallel_loop, 621 llvm::acc::allowedOnceClauses_ACCD_parallel_loop, 622 llvm::acc::allowedExclusiveClauses_ACCD_parallel_loop, 623 llvm::acc::requiredClauses_ACCD_parallel_loop, 624 } 625 }, 626 {llvm::acc::Directive::ACCD_routine, 627 { 628 llvm::acc::allowedClauses_ACCD_routine, 629 llvm::acc::allowedOnceClauses_ACCD_routine, 630 llvm::acc::allowedExclusiveClauses_ACCD_routine, 631 llvm::acc::requiredClauses_ACCD_routine, 632 } 633 }, 634 {llvm::acc::Directive::ACCD_serial, 635 { 636 llvm::acc::allowedClauses_ACCD_serial, 637 llvm::acc::allowedOnceClauses_ACCD_serial, 638 llvm::acc::allowedExclusiveClauses_ACCD_serial, 639 llvm::acc::requiredClauses_ACCD_serial, 640 } 641 }, 642 {llvm::acc::Directive::ACCD_serial_loop, 643 { 644 llvm::acc::allowedClauses_ACCD_serial_loop, 645 llvm::acc::allowedOnceClauses_ACCD_serial_loop, 646 llvm::acc::allowedExclusiveClauses_ACCD_serial_loop, 647 llvm::acc::requiredClauses_ACCD_serial_loop, 648 } 649 }, 650 {llvm::acc::Directive::ACCD_set, 651 { 652 llvm::acc::allowedClauses_ACCD_set, 653 llvm::acc::allowedOnceClauses_ACCD_set, 654 llvm::acc::allowedExclusiveClauses_ACCD_set, 655 llvm::acc::requiredClauses_ACCD_set, 656 } 657 }, 658 {llvm::acc::Directive::ACCD_shutdown, 659 { 660 llvm::acc::allowedClauses_ACCD_shutdown, 661 llvm::acc::allowedOnceClauses_ACCD_shutdown, 662 llvm::acc::allowedExclusiveClauses_ACCD_shutdown, 663 llvm::acc::requiredClauses_ACCD_shutdown, 664 } 665 }, 666 {llvm::acc::Directive::ACCD_unknown, 667 { 668 llvm::acc::allowedClauses_ACCD_unknown, 669 llvm::acc::allowedOnceClauses_ACCD_unknown, 670 llvm::acc::allowedExclusiveClauses_ACCD_unknown, 671 llvm::acc::requiredClauses_ACCD_unknown, 672 } 673 }, 674 {llvm::acc::Directive::ACCD_update, 675 { 676 llvm::acc::allowedClauses_ACCD_update, 677 llvm::acc::allowedOnceClauses_ACCD_update, 678 llvm::acc::allowedExclusiveClauses_ACCD_update, 679 llvm::acc::requiredClauses_ACCD_update, 680 } 681 }, 682 {llvm::acc::Directive::ACCD_wait, 683 { 684 llvm::acc::allowedClauses_ACCD_wait, 685 llvm::acc::allowedOnceClauses_ACCD_wait, 686 llvm::acc::allowedExclusiveClauses_ACCD_wait, 687 llvm::acc::requiredClauses_ACCD_wait, 688 } 689 }, 690} 691 692#endif // GEN_FLANG_DIRECTIVE_CLAUSE_MAP 693 694#ifdef GEN_FLANG_CLAUSE_PARSER_CLASSES 695#undef GEN_FLANG_CLAUSE_PARSER_CLASSES 696 697WRAPPER_CLASS(Async, std::optional<ScalarIntExpr>); 698WRAPPER_CLASS(Attach, AccObjectList); 699EMPTY_CLASS(Auto); 700WRAPPER_CLASS(Bind, AccBindClause); 701EMPTY_CLASS(Capture); 702WRAPPER_CLASS(Collapse, AccCollapseArg); 703WRAPPER_CLASS(Copy, AccObjectList); 704WRAPPER_CLASS(Copyin, AccObjectListWithModifier); 705WRAPPER_CLASS(Copyout, AccObjectListWithModifier); 706WRAPPER_CLASS(Create, AccObjectListWithModifier); 707WRAPPER_CLASS(Default, AccDefaultClause); 708WRAPPER_CLASS(DefaultAsync, ScalarIntExpr); 709WRAPPER_CLASS(Delete, AccObjectList); 710WRAPPER_CLASS(Detach, AccObjectList); 711WRAPPER_CLASS(Device, AccObjectList); 712WRAPPER_CLASS(DeviceNum, ScalarIntExpr); 713WRAPPER_CLASS(Deviceptr, AccObjectList); 714WRAPPER_CLASS(DeviceResident, AccObjectList); 715WRAPPER_CLASS(DeviceType, AccDeviceTypeExprList); 716EMPTY_CLASS(Finalize); 717WRAPPER_CLASS(Firstprivate, AccObjectList); 718WRAPPER_CLASS(Gang, std::optional<AccGangArgList>); 719WRAPPER_CLASS(Host, AccObjectList); 720WRAPPER_CLASS(If, ScalarExpr); 721EMPTY_CLASS(IfPresent); 722EMPTY_CLASS(Independent); 723WRAPPER_CLASS(Link, AccObjectList); 724WRAPPER_CLASS(NoCreate, AccObjectList); 725EMPTY_CLASS(Nohost); 726WRAPPER_CLASS(NumGangs, std::list<ScalarIntExpr>); 727WRAPPER_CLASS(NumWorkers, ScalarIntExpr); 728WRAPPER_CLASS(Present, AccObjectList); 729WRAPPER_CLASS(Private, AccObjectList); 730EMPTY_CLASS(Read); 731WRAPPER_CLASS(Reduction, AccObjectListWithReduction); 732WRAPPER_CLASS(Self, std::optional<AccSelfClause>); 733EMPTY_CLASS(Seq); 734WRAPPER_CLASS(Tile, AccTileExprList); 735EMPTY_CLASS(Unknown); 736WRAPPER_CLASS(UseDevice, AccObjectList); 737WRAPPER_CLASS(Vector, std::optional<ScalarIntExpr>); 738WRAPPER_CLASS(VectorLength, ScalarIntExpr); 739WRAPPER_CLASS(Wait, std::optional<AccWaitArgument>); 740WRAPPER_CLASS(Worker, std::optional<ScalarIntExpr>); 741EMPTY_CLASS(Write); 742 743#endif // GEN_FLANG_CLAUSE_PARSER_CLASSES 744 745#ifdef GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST 746#undef GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST 747 748Async 749, Attach 750, Auto 751, Bind 752, Capture 753, Collapse 754, Copy 755, Copyin 756, Copyout 757, Create 758, Default 759, DefaultAsync 760, Delete 761, Detach 762, Device 763, DeviceNum 764, Deviceptr 765, DeviceResident 766, DeviceType 767, Finalize 768, Firstprivate 769, Gang 770, Host 771, If 772, IfPresent 773, Independent 774, Link 775, NoCreate 776, Nohost 777, NumGangs 778, NumWorkers 779, Present 780, Private 781, Read 782, Reduction 783, Self 784, Seq 785, Tile 786, Unknown 787, UseDevice 788, Vector 789, VectorLength 790, Wait 791, Worker 792, Write 793 794#endif // GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST 795 796#ifdef GEN_FLANG_DUMP_PARSE_TREE_CLAUSES 797#undef GEN_FLANG_DUMP_PARSE_TREE_CLAUSES 798 799NODE(AccClause, Async) 800NODE(AccClause, Attach) 801NODE(AccClause, Auto) 802NODE(AccClause, Bind) 803NODE(AccClause, Capture) 804NODE(AccClause, Collapse) 805NODE(AccClause, Copy) 806NODE(AccClause, Copyin) 807NODE(AccClause, Copyout) 808NODE(AccClause, Create) 809NODE(AccClause, Default) 810NODE(AccClause, DefaultAsync) 811NODE(AccClause, Delete) 812NODE(AccClause, Detach) 813NODE(AccClause, Device) 814NODE(AccClause, DeviceNum) 815NODE(AccClause, Deviceptr) 816NODE(AccClause, DeviceResident) 817NODE(AccClause, DeviceType) 818NODE(AccClause, Finalize) 819NODE(AccClause, Firstprivate) 820NODE(AccClause, Gang) 821NODE(AccClause, Host) 822NODE(AccClause, If) 823NODE(AccClause, IfPresent) 824NODE(AccClause, Independent) 825NODE(AccClause, Link) 826NODE(AccClause, NoCreate) 827NODE(AccClause, Nohost) 828NODE(AccClause, NumGangs) 829NODE(AccClause, NumWorkers) 830NODE(AccClause, Present) 831NODE(AccClause, Private) 832NODE(AccClause, Read) 833NODE(AccClause, Reduction) 834NODE(AccClause, Self) 835NODE(AccClause, Seq) 836NODE(AccClause, Tile) 837NODE(AccClause, Unknown) 838NODE(AccClause, UseDevice) 839NODE(AccClause, Vector) 840NODE(AccClause, VectorLength) 841NODE(AccClause, Wait) 842NODE(AccClause, Worker) 843NODE(AccClause, Write) 844 845#endif // GEN_FLANG_DUMP_PARSE_TREE_CLAUSES 846 847#ifdef GEN_FLANG_CLAUSE_UNPARSE 848#undef GEN_FLANG_CLAUSE_UNPARSE 849 850void Unparse(const AccClause::Async &x) { 851 Word("ASYNC"); 852 Walk("(", x.v, ")"); 853} 854void Unparse(const AccClause::Attach &x) { 855 Word("ATTACH"); 856 Put("("); 857 Walk(x.v); 858 Put(")"); 859} 860void Before(const AccClause::Auto &) { Word("AUTO"); } 861void Unparse(const AccClause::Bind &x) { 862 Word("BIND"); 863 Put("("); 864 Walk(x.v); 865 Put(")"); 866} 867void Before(const AccClause::Capture &) { Word("CAPTURE"); } 868void Unparse(const AccClause::Collapse &x) { 869 Word("COLLAPSE"); 870 Put("("); 871 Walk(x.v); 872 Put(")"); 873} 874void Unparse(const AccClause::Copy &x) { 875 Word("COPY"); 876 Put("("); 877 Walk(x.v); 878 Put(")"); 879} 880void Unparse(const AccClause::Copyin &x) { 881 Word("COPYIN"); 882 Put("("); 883 Walk(x.v); 884 Put(")"); 885} 886void Unparse(const AccClause::Copyout &x) { 887 Word("COPYOUT"); 888 Put("("); 889 Walk(x.v); 890 Put(")"); 891} 892void Unparse(const AccClause::Create &x) { 893 Word("CREATE"); 894 Put("("); 895 Walk(x.v); 896 Put(")"); 897} 898void Unparse(const AccClause::Default &x) { 899 Word("DEFAULT"); 900 Put("("); 901 Walk(x.v); 902 Put(")"); 903} 904void Unparse(const AccClause::DefaultAsync &x) { 905 Word("DEFAULT_ASYNC"); 906 Put("("); 907 Walk(x.v); 908 Put(")"); 909} 910void Unparse(const AccClause::Delete &x) { 911 Word("DELETE"); 912 Put("("); 913 Walk(x.v); 914 Put(")"); 915} 916void Unparse(const AccClause::Detach &x) { 917 Word("DETACH"); 918 Put("("); 919 Walk(x.v); 920 Put(")"); 921} 922void Unparse(const AccClause::Device &x) { 923 Word("DEVICE"); 924 Put("("); 925 Walk(x.v); 926 Put(")"); 927} 928void Unparse(const AccClause::DeviceNum &x) { 929 Word("DEVICE_NUM"); 930 Put("("); 931 Walk(x.v); 932 Put(")"); 933} 934void Unparse(const AccClause::Deviceptr &x) { 935 Word("DEVICEPTR"); 936 Put("("); 937 Walk(x.v); 938 Put(")"); 939} 940void Unparse(const AccClause::DeviceResident &x) { 941 Word("DEVICE_RESIDENT"); 942 Put("("); 943 Walk(x.v); 944 Put(")"); 945} 946void Unparse(const AccClause::DeviceType &x) { 947 Word("DEVICE_TYPE"); 948 Put("("); 949 Walk(x.v); 950 Put(")"); 951} 952void Before(const AccClause::Finalize &) { Word("FINALIZE"); } 953void Unparse(const AccClause::Firstprivate &x) { 954 Word("FIRSTPRIVATE"); 955 Put("("); 956 Walk(x.v); 957 Put(")"); 958} 959void Unparse(const AccClause::Gang &x) { 960 Word("GANG"); 961 Walk("(", x.v, ")"); 962} 963void Unparse(const AccClause::Host &x) { 964 Word("HOST"); 965 Put("("); 966 Walk(x.v); 967 Put(")"); 968} 969void Unparse(const AccClause::If &x) { 970 Word("IF"); 971 Put("("); 972 Walk(x.v); 973 Put(")"); 974} 975void Before(const AccClause::IfPresent &) { Word("IF_PRESENT"); } 976void Before(const AccClause::Independent &) { Word("INDEPENDENT"); } 977void Unparse(const AccClause::Link &x) { 978 Word("LINK"); 979 Put("("); 980 Walk(x.v); 981 Put(")"); 982} 983void Unparse(const AccClause::NoCreate &x) { 984 Word("NO_CREATE"); 985 Put("("); 986 Walk(x.v); 987 Put(")"); 988} 989void Before(const AccClause::Nohost &) { Word("NOHOST"); } 990void Unparse(const AccClause::NumGangs &x) { 991 Word("NUM_GANGS"); 992 Put("("); 993 Walk(x.v, ","); 994 Put(")"); 995} 996void Unparse(const AccClause::NumWorkers &x) { 997 Word("NUM_WORKERS"); 998 Put("("); 999 Walk(x.v); 1000 Put(")"); 1001} 1002void Unparse(const AccClause::Present &x) { 1003 Word("PRESENT"); 1004 Put("("); 1005 Walk(x.v); 1006 Put(")"); 1007} 1008void Unparse(const AccClause::Private &x) { 1009 Word("PRIVATE"); 1010 Put("("); 1011 Walk(x.v); 1012 Put(")"); 1013} 1014void Before(const AccClause::Read &) { Word("READ"); } 1015void Unparse(const AccClause::Reduction &x) { 1016 Word("REDUCTION"); 1017 Put("("); 1018 Walk(x.v); 1019 Put(")"); 1020} 1021void Unparse(const AccClause::Self &x) { 1022 Word("SELF"); 1023 Walk("(", x.v, ")"); 1024} 1025void Before(const AccClause::Seq &) { Word("SEQ"); } 1026void Unparse(const AccClause::Tile &x) { 1027 Word("TILE"); 1028 Put("("); 1029 Walk(x.v); 1030 Put(")"); 1031} 1032void Before(const AccClause::Unknown &) { Word("UNKNOWN"); } 1033void Unparse(const AccClause::UseDevice &x) { 1034 Word("USE_DEVICE"); 1035 Put("("); 1036 Walk(x.v); 1037 Put(")"); 1038} 1039void Unparse(const AccClause::Vector &x) { 1040 Word("VECTOR"); 1041 Walk("(", x.v, ")"); 1042} 1043void Unparse(const AccClause::VectorLength &x) { 1044 Word("VECTOR_LENGTH"); 1045 Put("("); 1046 Walk(x.v); 1047 Put(")"); 1048} 1049void Unparse(const AccClause::Wait &x) { 1050 Word("WAIT"); 1051 Walk("(", x.v, ")"); 1052} 1053void Unparse(const AccClause::Worker &x) { 1054 Word("WORKER"); 1055 Walk("(", x.v, ")"); 1056} 1057void Before(const AccClause::Write &) { Word("WRITE"); } 1058 1059#endif // GEN_FLANG_CLAUSE_UNPARSE 1060 1061#ifdef GEN_FLANG_CLAUSE_CHECK_ENTER 1062#undef GEN_FLANG_CLAUSE_CHECK_ENTER 1063 1064void Enter(const parser::AccClause::Async &); 1065void Enter(const parser::AccClause::Attach &); 1066void Enter(const parser::AccClause::Auto &); 1067void Enter(const parser::AccClause::Bind &); 1068void Enter(const parser::AccClause::Capture &); 1069void Enter(const parser::AccClause::Collapse &); 1070void Enter(const parser::AccClause::Copy &); 1071void Enter(const parser::AccClause::Copyin &); 1072void Enter(const parser::AccClause::Copyout &); 1073void Enter(const parser::AccClause::Create &); 1074void Enter(const parser::AccClause::Default &); 1075void Enter(const parser::AccClause::DefaultAsync &); 1076void Enter(const parser::AccClause::Delete &); 1077void Enter(const parser::AccClause::Detach &); 1078void Enter(const parser::AccClause::Device &); 1079void Enter(const parser::AccClause::DeviceNum &); 1080void Enter(const parser::AccClause::Deviceptr &); 1081void Enter(const parser::AccClause::DeviceResident &); 1082void Enter(const parser::AccClause::DeviceType &); 1083void Enter(const parser::AccClause::Finalize &); 1084void Enter(const parser::AccClause::Firstprivate &); 1085void Enter(const parser::AccClause::Gang &); 1086void Enter(const parser::AccClause::Host &); 1087void Enter(const parser::AccClause::If &); 1088void Enter(const parser::AccClause::IfPresent &); 1089void Enter(const parser::AccClause::Independent &); 1090void Enter(const parser::AccClause::Link &); 1091void Enter(const parser::AccClause::NoCreate &); 1092void Enter(const parser::AccClause::Nohost &); 1093void Enter(const parser::AccClause::NumGangs &); 1094void Enter(const parser::AccClause::NumWorkers &); 1095void Enter(const parser::AccClause::Present &); 1096void Enter(const parser::AccClause::Private &); 1097void Enter(const parser::AccClause::Read &); 1098void Enter(const parser::AccClause::Reduction &); 1099void Enter(const parser::AccClause::Self &); 1100void Enter(const parser::AccClause::Seq &); 1101void Enter(const parser::AccClause::Tile &); 1102void Enter(const parser::AccClause::Unknown &); 1103void Enter(const parser::AccClause::UseDevice &); 1104void Enter(const parser::AccClause::Vector &); 1105void Enter(const parser::AccClause::VectorLength &); 1106void Enter(const parser::AccClause::Wait &); 1107void Enter(const parser::AccClause::Worker &); 1108void Enter(const parser::AccClause::Write &); 1109 1110#endif // GEN_FLANG_CLAUSE_CHECK_ENTER 1111 1112#ifdef GEN_FLANG_CLAUSE_PARSER_KIND_MAP 1113#undef GEN_FLANG_CLAUSE_PARSER_KIND_MAP 1114 1115if constexpr (std::is_same_v<A, parser::AccClause::Async>) 1116 return llvm::acc::Clause::ACCC_async; 1117if constexpr (std::is_same_v<A, parser::AccClause::Attach>) 1118 return llvm::acc::Clause::ACCC_attach; 1119if constexpr (std::is_same_v<A, parser::AccClause::Auto>) 1120 return llvm::acc::Clause::ACCC_auto; 1121if constexpr (std::is_same_v<A, parser::AccClause::Bind>) 1122 return llvm::acc::Clause::ACCC_bind; 1123if constexpr (std::is_same_v<A, parser::AccClause::Capture>) 1124 return llvm::acc::Clause::ACCC_capture; 1125if constexpr (std::is_same_v<A, parser::AccClause::Collapse>) 1126 return llvm::acc::Clause::ACCC_collapse; 1127if constexpr (std::is_same_v<A, parser::AccClause::Copy>) 1128 return llvm::acc::Clause::ACCC_copy; 1129if constexpr (std::is_same_v<A, parser::AccClause::Copyin>) 1130 return llvm::acc::Clause::ACCC_copyin; 1131if constexpr (std::is_same_v<A, parser::AccClause::Copyout>) 1132 return llvm::acc::Clause::ACCC_copyout; 1133if constexpr (std::is_same_v<A, parser::AccClause::Create>) 1134 return llvm::acc::Clause::ACCC_create; 1135if constexpr (std::is_same_v<A, parser::AccClause::Default>) 1136 return llvm::acc::Clause::ACCC_default; 1137if constexpr (std::is_same_v<A, parser::AccClause::DefaultAsync>) 1138 return llvm::acc::Clause::ACCC_default_async; 1139if constexpr (std::is_same_v<A, parser::AccClause::Delete>) 1140 return llvm::acc::Clause::ACCC_delete; 1141if constexpr (std::is_same_v<A, parser::AccClause::Detach>) 1142 return llvm::acc::Clause::ACCC_detach; 1143if constexpr (std::is_same_v<A, parser::AccClause::Device>) 1144 return llvm::acc::Clause::ACCC_device; 1145if constexpr (std::is_same_v<A, parser::AccClause::DeviceNum>) 1146 return llvm::acc::Clause::ACCC_device_num; 1147if constexpr (std::is_same_v<A, parser::AccClause::Deviceptr>) 1148 return llvm::acc::Clause::ACCC_deviceptr; 1149if constexpr (std::is_same_v<A, parser::AccClause::DeviceResident>) 1150 return llvm::acc::Clause::ACCC_device_resident; 1151if constexpr (std::is_same_v<A, parser::AccClause::DeviceType>) 1152 return llvm::acc::Clause::ACCC_device_type; 1153if constexpr (std::is_same_v<A, parser::AccClause::Finalize>) 1154 return llvm::acc::Clause::ACCC_finalize; 1155if constexpr (std::is_same_v<A, parser::AccClause::Firstprivate>) 1156 return llvm::acc::Clause::ACCC_firstprivate; 1157if constexpr (std::is_same_v<A, parser::AccClause::Gang>) 1158 return llvm::acc::Clause::ACCC_gang; 1159if constexpr (std::is_same_v<A, parser::AccClause::Host>) 1160 return llvm::acc::Clause::ACCC_host; 1161if constexpr (std::is_same_v<A, parser::AccClause::If>) 1162 return llvm::acc::Clause::ACCC_if; 1163if constexpr (std::is_same_v<A, parser::AccClause::IfPresent>) 1164 return llvm::acc::Clause::ACCC_if_present; 1165if constexpr (std::is_same_v<A, parser::AccClause::Independent>) 1166 return llvm::acc::Clause::ACCC_independent; 1167if constexpr (std::is_same_v<A, parser::AccClause::Link>) 1168 return llvm::acc::Clause::ACCC_link; 1169if constexpr (std::is_same_v<A, parser::AccClause::NoCreate>) 1170 return llvm::acc::Clause::ACCC_no_create; 1171if constexpr (std::is_same_v<A, parser::AccClause::Nohost>) 1172 return llvm::acc::Clause::ACCC_nohost; 1173if constexpr (std::is_same_v<A, parser::AccClause::NumGangs>) 1174 return llvm::acc::Clause::ACCC_num_gangs; 1175if constexpr (std::is_same_v<A, parser::AccClause::NumWorkers>) 1176 return llvm::acc::Clause::ACCC_num_workers; 1177if constexpr (std::is_same_v<A, parser::AccClause::Present>) 1178 return llvm::acc::Clause::ACCC_present; 1179if constexpr (std::is_same_v<A, parser::AccClause::Private>) 1180 return llvm::acc::Clause::ACCC_private; 1181if constexpr (std::is_same_v<A, parser::AccClause::Read>) 1182 return llvm::acc::Clause::ACCC_read; 1183if constexpr (std::is_same_v<A, parser::AccClause::Reduction>) 1184 return llvm::acc::Clause::ACCC_reduction; 1185if constexpr (std::is_same_v<A, parser::AccClause::Self>) 1186 return llvm::acc::Clause::ACCC_self; 1187if constexpr (std::is_same_v<A, parser::AccClause::Seq>) 1188 return llvm::acc::Clause::ACCC_seq; 1189if constexpr (std::is_same_v<A, parser::AccClause::Tile>) 1190 return llvm::acc::Clause::ACCC_tile; 1191if constexpr (std::is_same_v<A, parser::AccClause::Unknown>) 1192 return llvm::acc::Clause::ACCC_unknown; 1193if constexpr (std::is_same_v<A, parser::AccClause::UseDevice>) 1194 return llvm::acc::Clause::ACCC_use_device; 1195if constexpr (std::is_same_v<A, parser::AccClause::Vector>) 1196 return llvm::acc::Clause::ACCC_vector; 1197if constexpr (std::is_same_v<A, parser::AccClause::VectorLength>) 1198 return llvm::acc::Clause::ACCC_vector_length; 1199if constexpr (std::is_same_v<A, parser::AccClause::Wait>) 1200 return llvm::acc::Clause::ACCC_wait; 1201if constexpr (std::is_same_v<A, parser::AccClause::Worker>) 1202 return llvm::acc::Clause::ACCC_worker; 1203if constexpr (std::is_same_v<A, parser::AccClause::Write>) 1204 return llvm::acc::Clause::ACCC_write; 1205llvm_unreachable("Invalid OpenACC Parser clause"); 1206 1207#endif // GEN_FLANG_CLAUSE_PARSER_KIND_MAP 1208 1209#ifdef GEN_FLANG_CLAUSES_PARSER 1210#undef GEN_FLANG_CLAUSES_PARSER 1211 1212TYPE_PARSER( 1213 "write" >> construct<AccClause>(construct<AccClause::Write>()) || 1214 "worker" >> construct<AccClause>(construct<AccClause::Worker>(maybe(parenthesized("num:" >> scalarIntExpr || scalarIntExpr)))) || 1215 "wait" >> construct<AccClause>(construct<AccClause::Wait>(maybe(parenthesized(Parser<AccWaitArgument>{})))) || 1216 "vector_length" >> construct<AccClause>(construct<AccClause::VectorLength>(parenthesized(scalarIntExpr))) || 1217 "vector" >> construct<AccClause>(construct<AccClause::Vector>(maybe(parenthesized("length:" >> scalarIntExpr || scalarIntExpr)))) || 1218 "use_device" >> construct<AccClause>(construct<AccClause::UseDevice>(parenthesized(Parser<AccObjectList>{}))) || 1219 "unknown" >> construct<AccClause>(construct<AccClause::Unknown>()) || 1220 "tile" >> construct<AccClause>(construct<AccClause::Tile>(parenthesized(Parser<AccTileExprList>{}))) || 1221 "seq" >> construct<AccClause>(construct<AccClause::Seq>()) || 1222 "self" >> construct<AccClause>(construct<AccClause::Self>(maybe(parenthesized(Parser<AccSelfClause>{})))) || 1223 "reduction" >> construct<AccClause>(construct<AccClause::Reduction>(parenthesized(Parser<AccObjectListWithReduction>{}))) || 1224 "read" >> construct<AccClause>(construct<AccClause::Read>()) || 1225 "private" >> construct<AccClause>(construct<AccClause::Private>(parenthesized(Parser<AccObjectList>{}))) || 1226 "present" >> construct<AccClause>(construct<AccClause::Present>(parenthesized(Parser<AccObjectList>{}))) || 1227 "num_workers" >> construct<AccClause>(construct<AccClause::NumWorkers>(parenthesized(scalarIntExpr))) || 1228 "num_gangs" >> construct<AccClause>(construct<AccClause::NumGangs>(parenthesized(nonemptyList(scalarIntExpr)))) || 1229 "nohost" >> construct<AccClause>(construct<AccClause::Nohost>()) || 1230 "no_create" >> construct<AccClause>(construct<AccClause::NoCreate>(parenthesized(Parser<AccObjectList>{}))) || 1231 "link" >> construct<AccClause>(construct<AccClause::Link>(parenthesized(Parser<AccObjectList>{}))) || 1232 "independent" >> construct<AccClause>(construct<AccClause::Independent>()) || 1233 "if_present" >> construct<AccClause>(construct<AccClause::IfPresent>()) || 1234 "if" >> construct<AccClause>(construct<AccClause::If>(parenthesized(scalarExpr))) || 1235 "host" >> construct<AccClause>(construct<AccClause::Host>(parenthesized(Parser<AccObjectList>{}))) || 1236 "gang" >> construct<AccClause>(construct<AccClause::Gang>(maybe(parenthesized(Parser<AccGangArgList>{})))) || 1237 "firstprivate" >> construct<AccClause>(construct<AccClause::Firstprivate>(parenthesized(Parser<AccObjectList>{}))) || 1238 "finalize" >> construct<AccClause>(construct<AccClause::Finalize>()) || 1239 "deviceptr" >> construct<AccClause>(construct<AccClause::Deviceptr>(parenthesized(Parser<AccObjectList>{}))) || 1240 ("device_type"_tok || "dtype"_tok) >> construct<AccClause>(construct<AccClause::DeviceType>(parenthesized(Parser<AccDeviceTypeExprList>{}))) || 1241 "device_resident" >> construct<AccClause>(construct<AccClause::DeviceResident>(parenthesized(Parser<AccObjectList>{}))) || 1242 "device_num" >> construct<AccClause>(construct<AccClause::DeviceNum>(parenthesized(scalarIntExpr))) || 1243 "device" >> construct<AccClause>(construct<AccClause::Device>(parenthesized(Parser<AccObjectList>{}))) || 1244 "detach" >> construct<AccClause>(construct<AccClause::Detach>(parenthesized(Parser<AccObjectList>{}))) || 1245 "delete" >> construct<AccClause>(construct<AccClause::Delete>(parenthesized(Parser<AccObjectList>{}))) || 1246 "default_async" >> construct<AccClause>(construct<AccClause::DefaultAsync>(parenthesized(scalarIntExpr))) || 1247 "default" >> construct<AccClause>(construct<AccClause::Default>(parenthesized(Parser<AccDefaultClause>{}))) || 1248 ("create"_tok || "present_or_create"_tok || "pcreate"_tok) >> construct<AccClause>(construct<AccClause::Create>(parenthesized(Parser<AccObjectListWithModifier>{}))) || 1249 ("copyout"_tok || "present_or_copyout"_tok || "pcopyout"_tok) >> construct<AccClause>(construct<AccClause::Copyout>(parenthesized(Parser<AccObjectListWithModifier>{}))) || 1250 ("copyin"_tok || "present_or_copyin"_tok || "pcopyin"_tok) >> construct<AccClause>(construct<AccClause::Copyin>(parenthesized(Parser<AccObjectListWithModifier>{}))) || 1251 ("copy"_tok || "present_or_copy"_tok || "pcopy"_tok) >> construct<AccClause>(construct<AccClause::Copy>(parenthesized(Parser<AccObjectList>{}))) || 1252 "collapse" >> construct<AccClause>(construct<AccClause::Collapse>(parenthesized(Parser<AccCollapseArg>{}))) || 1253 "capture" >> construct<AccClause>(construct<AccClause::Capture>()) || 1254 "bind" >> construct<AccClause>(construct<AccClause::Bind>(parenthesized(Parser<AccBindClause>{}))) || 1255 "auto" >> construct<AccClause>(construct<AccClause::Auto>()) || 1256 "attach" >> construct<AccClause>(construct<AccClause::Attach>(parenthesized(Parser<AccObjectList>{}))) || 1257 "async" >> construct<AccClause>(construct<AccClause::Async>(maybe(parenthesized(scalarIntExpr)))) 1258) 1259 1260#endif // GEN_FLANG_CLAUSES_PARSER 1261 1262#ifdef GEN_CLANG_CLAUSE_CLASS 1263#undef GEN_CLANG_CLAUSE_CLASS 1264 1265#ifndef CLAUSE 1266#define CLAUSE(Enum, Str, Implicit) 1267#endif 1268#ifndef CLAUSE_CLASS 1269#define CLAUSE_CLASS(Enum, Str, Class) 1270#endif 1271#ifndef CLAUSE_NO_CLASS 1272#define CLAUSE_NO_CLASS(Enum, Str) 1273#endif 1274 1275#define __CLAUSE(Name, Class) \ 1276 CLAUSE(ACCC_##Name, #Name, /* Implicit */ false) \ 1277 CLAUSE_CLASS(ACCC_##Name, #Name, Class) 1278#define __CLAUSE_NO_CLASS(Name) \ 1279 CLAUSE(ACCC_##Name, #Name, /* Implicit */ false) \ 1280 CLAUSE_NO_CLASS(ACCC_##Name, #Name) 1281#define __IMPLICIT_CLAUSE_CLASS(Name, Str, Class) \ 1282 CLAUSE(ACCC_##Name, Str, /* Implicit */ true) \ 1283 CLAUSE_CLASS(ACCC_##Name, Str, Class) 1284#define __IMPLICIT_CLAUSE_NO_CLASS(Name, Str) \ 1285 CLAUSE(ACCC_##Name, Str, /* Implicit */ true) \ 1286 CLAUSE_NO_CLASS(ACCC_##Name, Str) 1287 1288__CLAUSE_NO_CLASS(async) 1289__CLAUSE_NO_CLASS(attach) 1290__CLAUSE_NO_CLASS(auto) 1291__CLAUSE_NO_CLASS(bind) 1292__CLAUSE_NO_CLASS(capture) 1293__CLAUSE_NO_CLASS(collapse) 1294__CLAUSE_NO_CLASS(copy) 1295__CLAUSE_NO_CLASS(copyin) 1296__CLAUSE_NO_CLASS(copyout) 1297__CLAUSE_NO_CLASS(create) 1298__CLAUSE_NO_CLASS(default) 1299__CLAUSE_NO_CLASS(default_async) 1300__CLAUSE_NO_CLASS(delete) 1301__CLAUSE_NO_CLASS(detach) 1302__CLAUSE_NO_CLASS(device) 1303__CLAUSE_NO_CLASS(device_num) 1304__CLAUSE_NO_CLASS(deviceptr) 1305__CLAUSE_NO_CLASS(device_resident) 1306__CLAUSE_NO_CLASS(device_type) 1307__CLAUSE_NO_CLASS(finalize) 1308__CLAUSE_NO_CLASS(firstprivate) 1309__CLAUSE_NO_CLASS(gang) 1310__CLAUSE_NO_CLASS(host) 1311__CLAUSE_NO_CLASS(if) 1312__CLAUSE_NO_CLASS(if_present) 1313__CLAUSE_NO_CLASS(independent) 1314__CLAUSE_NO_CLASS(link) 1315__CLAUSE_NO_CLASS(no_create) 1316__CLAUSE_NO_CLASS(nohost) 1317__CLAUSE_NO_CLASS(num_gangs) 1318__CLAUSE_NO_CLASS(num_workers) 1319__CLAUSE_NO_CLASS(present) 1320__CLAUSE_NO_CLASS(private) 1321__CLAUSE_NO_CLASS(read) 1322__CLAUSE_NO_CLASS(reduction) 1323__CLAUSE_NO_CLASS(self) 1324__CLAUSE_NO_CLASS(seq) 1325__CLAUSE_NO_CLASS(tile) 1326__CLAUSE_NO_CLASS(unknown) 1327__CLAUSE_NO_CLASS(use_device) 1328__CLAUSE_NO_CLASS(vector) 1329__CLAUSE_NO_CLASS(vector_length) 1330__CLAUSE_NO_CLASS(wait) 1331__CLAUSE_NO_CLASS(worker) 1332__CLAUSE_NO_CLASS(write) 1333 1334#undef __IMPLICIT_CLAUSE_NO_CLASS 1335#undef __IMPLICIT_CLAUSE_CLASS 1336#undef __CLAUSE 1337#undef CLAUSE_NO_CLASS 1338#undef CLAUSE_CLASS 1339#undef CLAUSE 1340 1341#endif // GEN_CLANG_CLAUSE_CLASS 1342 1343#ifdef GEN_DIRECTIVES_IMPL 1344#undef GEN_DIRECTIVES_IMPL 1345 1346Directive llvm::acc::getOpenACCDirectiveKind(llvm::StringRef Str) { 1347 return llvm::StringSwitch<Directive>(Str) 1348 .Case("atomic",ACCD_atomic) 1349 .Case("cache",ACCD_cache) 1350 .Case("data",ACCD_data) 1351 .Case("declare",ACCD_declare) 1352 .Case("enter data",ACCD_enter_data) 1353 .Case("exit data",ACCD_exit_data) 1354 .Case("host_data",ACCD_host_data) 1355 .Case("init",ACCD_init) 1356 .Case("kernels",ACCD_kernels) 1357 .Case("kernels loop",ACCD_kernels_loop) 1358 .Case("loop",ACCD_loop) 1359 .Case("parallel",ACCD_parallel) 1360 .Case("parallel loop",ACCD_parallel_loop) 1361 .Case("routine",ACCD_routine) 1362 .Case("serial",ACCD_serial) 1363 .Case("serial loop",ACCD_serial_loop) 1364 .Case("set",ACCD_set) 1365 .Case("shutdown",ACCD_shutdown) 1366 .Case("unknown",ACCD_unknown) 1367 .Case("update",ACCD_update) 1368 .Case("wait",ACCD_wait) 1369 .Default(ACCD_unknown); 1370} 1371 1372llvm::StringRef llvm::acc::getOpenACCDirectiveName(Directive Kind) { 1373 switch (Kind) { 1374 case ACCD_atomic: 1375 return "atomic"; 1376 case ACCD_cache: 1377 return "cache"; 1378 case ACCD_data: 1379 return "data"; 1380 case ACCD_declare: 1381 return "declare"; 1382 case ACCD_enter_data: 1383 return "enter data"; 1384 case ACCD_exit_data: 1385 return "exit data"; 1386 case ACCD_host_data: 1387 return "host_data"; 1388 case ACCD_init: 1389 return "init"; 1390 case ACCD_kernels: 1391 return "kernels"; 1392 case ACCD_kernels_loop: 1393 return "kernels loop"; 1394 case ACCD_loop: 1395 return "loop"; 1396 case ACCD_parallel: 1397 return "parallel"; 1398 case ACCD_parallel_loop: 1399 return "parallel loop"; 1400 case ACCD_routine: 1401 return "routine"; 1402 case ACCD_serial: 1403 return "serial"; 1404 case ACCD_serial_loop: 1405 return "serial loop"; 1406 case ACCD_set: 1407 return "set"; 1408 case ACCD_shutdown: 1409 return "shutdown"; 1410 case ACCD_unknown: 1411 return "unknown"; 1412 case ACCD_update: 1413 return "update"; 1414 case ACCD_wait: 1415 return "wait"; 1416 } 1417 llvm_unreachable("Invalid OpenACC Directive kind"); 1418} 1419 1420Clause llvm::acc::getOpenACCClauseKind(llvm::StringRef Str) { 1421 return llvm::StringSwitch<Clause>(Str) 1422 .Case("async",ACCC_async) 1423 .Case("attach",ACCC_attach) 1424 .Case("auto",ACCC_auto) 1425 .Case("bind",ACCC_bind) 1426 .Case("capture",ACCC_capture) 1427 .Case("collapse",ACCC_collapse) 1428 .Case("copy",ACCC_copy) 1429 .Case("copyin",ACCC_copyin) 1430 .Case("copyout",ACCC_copyout) 1431 .Case("create",ACCC_create) 1432 .Case("default",ACCC_default) 1433 .Case("default_async",ACCC_default_async) 1434 .Case("delete",ACCC_delete) 1435 .Case("detach",ACCC_detach) 1436 .Case("device",ACCC_device) 1437 .Case("device_num",ACCC_device_num) 1438 .Case("deviceptr",ACCC_deviceptr) 1439 .Case("device_resident",ACCC_device_resident) 1440 .Case("device_type",ACCC_device_type) 1441 .Case("finalize",ACCC_finalize) 1442 .Case("firstprivate",ACCC_firstprivate) 1443 .Case("gang",ACCC_gang) 1444 .Case("host",ACCC_host) 1445 .Case("if",ACCC_if) 1446 .Case("if_present",ACCC_if_present) 1447 .Case("independent",ACCC_independent) 1448 .Case("link",ACCC_link) 1449 .Case("no_create",ACCC_no_create) 1450 .Case("nohost",ACCC_nohost) 1451 .Case("num_gangs",ACCC_num_gangs) 1452 .Case("num_workers",ACCC_num_workers) 1453 .Case("present",ACCC_present) 1454 .Case("private",ACCC_private) 1455 .Case("read",ACCC_read) 1456 .Case("reduction",ACCC_reduction) 1457 .Case("self",ACCC_self) 1458 .Case("seq",ACCC_seq) 1459 .Case("tile",ACCC_tile) 1460 .Case("unknown",ACCC_unknown) 1461 .Case("use_device",ACCC_use_device) 1462 .Case("vector",ACCC_vector) 1463 .Case("vector_length",ACCC_vector_length) 1464 .Case("wait",ACCC_wait) 1465 .Case("worker",ACCC_worker) 1466 .Case("write",ACCC_write) 1467 .Default(ACCC_unknown); 1468} 1469 1470llvm::StringRef llvm::acc::getOpenACCClauseName(Clause Kind) { 1471 switch (Kind) { 1472 case ACCC_async: 1473 return "async"; 1474 case ACCC_attach: 1475 return "attach"; 1476 case ACCC_auto: 1477 return "auto"; 1478 case ACCC_bind: 1479 return "bind"; 1480 case ACCC_capture: 1481 return "capture"; 1482 case ACCC_collapse: 1483 return "collapse"; 1484 case ACCC_copy: 1485 return "copy"; 1486 case ACCC_copyin: 1487 return "copyin"; 1488 case ACCC_copyout: 1489 return "copyout"; 1490 case ACCC_create: 1491 return "create"; 1492 case ACCC_default: 1493 return "default"; 1494 case ACCC_default_async: 1495 return "default_async"; 1496 case ACCC_delete: 1497 return "delete"; 1498 case ACCC_detach: 1499 return "detach"; 1500 case ACCC_device: 1501 return "device"; 1502 case ACCC_device_num: 1503 return "device_num"; 1504 case ACCC_deviceptr: 1505 return "deviceptr"; 1506 case ACCC_device_resident: 1507 return "device_resident"; 1508 case ACCC_device_type: 1509 return "device_type"; 1510 case ACCC_finalize: 1511 return "finalize"; 1512 case ACCC_firstprivate: 1513 return "firstprivate"; 1514 case ACCC_gang: 1515 return "gang"; 1516 case ACCC_host: 1517 return "host"; 1518 case ACCC_if: 1519 return "if"; 1520 case ACCC_if_present: 1521 return "if_present"; 1522 case ACCC_independent: 1523 return "independent"; 1524 case ACCC_link: 1525 return "link"; 1526 case ACCC_no_create: 1527 return "no_create"; 1528 case ACCC_nohost: 1529 return "nohost"; 1530 case ACCC_num_gangs: 1531 return "num_gangs"; 1532 case ACCC_num_workers: 1533 return "num_workers"; 1534 case ACCC_present: 1535 return "present"; 1536 case ACCC_private: 1537 return "private"; 1538 case ACCC_read: 1539 return "read"; 1540 case ACCC_reduction: 1541 return "reduction"; 1542 case ACCC_self: 1543 return "self"; 1544 case ACCC_seq: 1545 return "seq"; 1546 case ACCC_tile: 1547 return "tile"; 1548 case ACCC_unknown: 1549 return "unknown"; 1550 case ACCC_use_device: 1551 return "use_device"; 1552 case ACCC_vector: 1553 return "vector"; 1554 case ACCC_vector_length: 1555 return "vector_length"; 1556 case ACCC_wait: 1557 return "wait"; 1558 case ACCC_worker: 1559 return "worker"; 1560 case ACCC_write: 1561 return "write"; 1562 } 1563 llvm_unreachable("Invalid OpenACC Clause kind"); 1564} 1565 1566DefaultValue llvm::acc::getDefaultValue(llvm::StringRef Str) { 1567 return llvm::StringSwitch<DefaultValue>(Str) 1568 .Case("present",ACC_Default_present) 1569 .Case("none",ACC_Default_none) 1570 .Default(ACC_Default_none); 1571} 1572 1573llvm::StringRef llvm::acc::getOpenACCDefaultValueName(llvm::acc::DefaultValue x) { 1574 switch (x) { 1575 case ACC_Default_present: 1576 return "present"; 1577 case ACC_Default_none: 1578 return "none"; 1579 } 1580 llvm_unreachable("Invalid OpenACC DefaultValue kind"); 1581} 1582 1583bool llvm::acc::isAllowedClauseForDirective(Directive D, Clause C, unsigned Version) { 1584 assert(unsigned(D) <= llvm::acc::Directive_enumSize); 1585 assert(unsigned(C) <= llvm::acc::Clause_enumSize); 1586 switch (D) { 1587 case ACCD_atomic: 1588 return false; 1589 break; 1590 case ACCD_cache: 1591 return false; 1592 break; 1593 case ACCD_data: 1594 switch (C) { 1595 case ACCC_device_type: 1596 return 32 <= Version && 2147483647 >= Version; 1597 case ACCC_wait: 1598 return 32 <= Version && 2147483647 >= Version; 1599 case ACCC_async: 1600 return 32 <= Version && 2147483647 >= Version; 1601 case ACCC_if: 1602 return 1 <= Version && 2147483647 >= Version; 1603 case ACCC_default: 1604 return 1 <= Version && 2147483647 >= Version; 1605 case ACCC_attach: 1606 return 1 <= Version && 2147483647 >= Version; 1607 case ACCC_copy: 1608 return 1 <= Version && 2147483647 >= Version; 1609 case ACCC_copyin: 1610 return 1 <= Version && 2147483647 >= Version; 1611 case ACCC_copyout: 1612 return 1 <= Version && 2147483647 >= Version; 1613 case ACCC_create: 1614 return 1 <= Version && 2147483647 >= Version; 1615 case ACCC_deviceptr: 1616 return 1 <= Version && 2147483647 >= Version; 1617 case ACCC_no_create: 1618 return 1 <= Version && 2147483647 >= Version; 1619 case ACCC_present: 1620 return 1 <= Version && 2147483647 >= Version; 1621 default: 1622 return false; 1623 } 1624 break; 1625 case ACCD_declare: 1626 switch (C) { 1627 case ACCC_copy: 1628 return 1 <= Version && 2147483647 >= Version; 1629 case ACCC_copyin: 1630 return 1 <= Version && 2147483647 >= Version; 1631 case ACCC_copyout: 1632 return 1 <= Version && 2147483647 >= Version; 1633 case ACCC_create: 1634 return 1 <= Version && 2147483647 >= Version; 1635 case ACCC_present: 1636 return 1 <= Version && 2147483647 >= Version; 1637 case ACCC_deviceptr: 1638 return 1 <= Version && 2147483647 >= Version; 1639 case ACCC_device_resident: 1640 return 1 <= Version && 2147483647 >= Version; 1641 case ACCC_link: 1642 return 1 <= Version && 2147483647 >= Version; 1643 default: 1644 return false; 1645 } 1646 break; 1647 case ACCD_enter_data: 1648 switch (C) { 1649 case ACCC_wait: 1650 return 1 <= Version && 2147483647 >= Version; 1651 case ACCC_async: 1652 return 1 <= Version && 2147483647 >= Version; 1653 case ACCC_if: 1654 return 1 <= Version && 2147483647 >= Version; 1655 case ACCC_attach: 1656 return 1 <= Version && 2147483647 >= Version; 1657 case ACCC_create: 1658 return 1 <= Version && 2147483647 >= Version; 1659 case ACCC_copyin: 1660 return 1 <= Version && 2147483647 >= Version; 1661 default: 1662 return false; 1663 } 1664 break; 1665 case ACCD_exit_data: 1666 switch (C) { 1667 case ACCC_wait: 1668 return 1 <= Version && 2147483647 >= Version; 1669 case ACCC_async: 1670 return 1 <= Version && 2147483647 >= Version; 1671 case ACCC_if: 1672 return 1 <= Version && 2147483647 >= Version; 1673 case ACCC_finalize: 1674 return 1 <= Version && 2147483647 >= Version; 1675 case ACCC_copyout: 1676 return 1 <= Version && 2147483647 >= Version; 1677 case ACCC_delete: 1678 return 1 <= Version && 2147483647 >= Version; 1679 case ACCC_detach: 1680 return 1 <= Version && 2147483647 >= Version; 1681 default: 1682 return false; 1683 } 1684 break; 1685 case ACCD_host_data: 1686 switch (C) { 1687 case ACCC_if: 1688 return 1 <= Version && 2147483647 >= Version; 1689 case ACCC_if_present: 1690 return 1 <= Version && 2147483647 >= Version; 1691 case ACCC_use_device: 1692 return 1 <= Version && 2147483647 >= Version; 1693 default: 1694 return false; 1695 } 1696 break; 1697 case ACCD_init: 1698 switch (C) { 1699 case ACCC_device_num: 1700 return 1 <= Version && 2147483647 >= Version; 1701 case ACCC_device_type: 1702 return 1 <= Version && 2147483647 >= Version; 1703 case ACCC_if: 1704 return 1 <= Version && 2147483647 >= Version; 1705 default: 1706 return false; 1707 } 1708 break; 1709 case ACCD_kernels: 1710 switch (C) { 1711 case ACCC_attach: 1712 return 1 <= Version && 2147483647 >= Version; 1713 case ACCC_copy: 1714 return 1 <= Version && 2147483647 >= Version; 1715 case ACCC_copyin: 1716 return 1 <= Version && 2147483647 >= Version; 1717 case ACCC_copyout: 1718 return 1 <= Version && 2147483647 >= Version; 1719 case ACCC_create: 1720 return 1 <= Version && 2147483647 >= Version; 1721 case ACCC_device_type: 1722 return 1 <= Version && 2147483647 >= Version; 1723 case ACCC_no_create: 1724 return 1 <= Version && 2147483647 >= Version; 1725 case ACCC_present: 1726 return 1 <= Version && 2147483647 >= Version; 1727 case ACCC_deviceptr: 1728 return 1 <= Version && 2147483647 >= Version; 1729 case ACCC_wait: 1730 return 1 <= Version && 2147483647 >= Version; 1731 case ACCC_async: 1732 return 1 <= Version && 2147483647 >= Version; 1733 case ACCC_default: 1734 return 1 <= Version && 2147483647 >= Version; 1735 case ACCC_if: 1736 return 1 <= Version && 2147483647 >= Version; 1737 case ACCC_num_gangs: 1738 return 1 <= Version && 2147483647 >= Version; 1739 case ACCC_num_workers: 1740 return 1 <= Version && 2147483647 >= Version; 1741 case ACCC_self: 1742 return 1 <= Version && 2147483647 >= Version; 1743 case ACCC_vector_length: 1744 return 1 <= Version && 2147483647 >= Version; 1745 default: 1746 return false; 1747 } 1748 break; 1749 case ACCD_kernels_loop: 1750 switch (C) { 1751 case ACCC_copy: 1752 return 1 <= Version && 2147483647 >= Version; 1753 case ACCC_copyin: 1754 return 1 <= Version && 2147483647 >= Version; 1755 case ACCC_copyout: 1756 return 1 <= Version && 2147483647 >= Version; 1757 case ACCC_create: 1758 return 1 <= Version && 2147483647 >= Version; 1759 case ACCC_device_type: 1760 return 1 <= Version && 2147483647 >= Version; 1761 case ACCC_no_create: 1762 return 1 <= Version && 2147483647 >= Version; 1763 case ACCC_present: 1764 return 1 <= Version && 2147483647 >= Version; 1765 case ACCC_private: 1766 return 1 <= Version && 2147483647 >= Version; 1767 case ACCC_reduction: 1768 return 1 <= Version && 2147483647 >= Version; 1769 case ACCC_deviceptr: 1770 return 1 <= Version && 2147483647 >= Version; 1771 case ACCC_attach: 1772 return 1 <= Version && 2147483647 >= Version; 1773 case ACCC_wait: 1774 return 1 <= Version && 2147483647 >= Version; 1775 case ACCC_async: 1776 return 1 <= Version && 2147483647 >= Version; 1777 case ACCC_collapse: 1778 return 1 <= Version && 2147483647 >= Version; 1779 case ACCC_default: 1780 return 1 <= Version && 2147483647 >= Version; 1781 case ACCC_gang: 1782 return 1 <= Version && 2147483647 >= Version; 1783 case ACCC_if: 1784 return 1 <= Version && 2147483647 >= Version; 1785 case ACCC_num_gangs: 1786 return 1 <= Version && 2147483647 >= Version; 1787 case ACCC_num_workers: 1788 return 1 <= Version && 2147483647 >= Version; 1789 case ACCC_self: 1790 return 1 <= Version && 2147483647 >= Version; 1791 case ACCC_tile: 1792 return 1 <= Version && 2147483647 >= Version; 1793 case ACCC_vector: 1794 return 1 <= Version && 2147483647 >= Version; 1795 case ACCC_vector_length: 1796 return 1 <= Version && 2147483647 >= Version; 1797 case ACCC_worker: 1798 return 1 <= Version && 2147483647 >= Version; 1799 case ACCC_auto: 1800 return 1 <= Version && 2147483647 >= Version; 1801 case ACCC_independent: 1802 return 1 <= Version && 2147483647 >= Version; 1803 case ACCC_seq: 1804 return 1 <= Version && 2147483647 >= Version; 1805 default: 1806 return false; 1807 } 1808 break; 1809 case ACCD_loop: 1810 switch (C) { 1811 case ACCC_device_type: 1812 return 1 <= Version && 2147483647 >= Version; 1813 case ACCC_private: 1814 return 1 <= Version && 2147483647 >= Version; 1815 case ACCC_reduction: 1816 return 1 <= Version && 2147483647 >= Version; 1817 case ACCC_collapse: 1818 return 1 <= Version && 2147483647 >= Version; 1819 case ACCC_gang: 1820 return 1 <= Version && 2147483647 >= Version; 1821 case ACCC_tile: 1822 return 1 <= Version && 2147483647 >= Version; 1823 case ACCC_vector: 1824 return 1 <= Version && 2147483647 >= Version; 1825 case ACCC_worker: 1826 return 1 <= Version && 2147483647 >= Version; 1827 case ACCC_auto: 1828 return 1 <= Version && 2147483647 >= Version; 1829 case ACCC_independent: 1830 return 1 <= Version && 2147483647 >= Version; 1831 case ACCC_seq: 1832 return 1 <= Version && 2147483647 >= Version; 1833 default: 1834 return false; 1835 } 1836 break; 1837 case ACCD_parallel: 1838 switch (C) { 1839 case ACCC_attach: 1840 return 1 <= Version && 2147483647 >= Version; 1841 case ACCC_async: 1842 return 1 <= Version && 2147483647 >= Version; 1843 case ACCC_copy: 1844 return 1 <= Version && 2147483647 >= Version; 1845 case ACCC_copyin: 1846 return 1 <= Version && 2147483647 >= Version; 1847 case ACCC_copyout: 1848 return 1 <= Version && 2147483647 >= Version; 1849 case ACCC_create: 1850 return 1 <= Version && 2147483647 >= Version; 1851 case ACCC_deviceptr: 1852 return 1 <= Version && 2147483647 >= Version; 1853 case ACCC_device_type: 1854 return 1 <= Version && 2147483647 >= Version; 1855 case ACCC_no_create: 1856 return 1 <= Version && 2147483647 >= Version; 1857 case ACCC_num_gangs: 1858 return 1 <= Version && 2147483647 >= Version; 1859 case ACCC_num_workers: 1860 return 1 <= Version && 2147483647 >= Version; 1861 case ACCC_present: 1862 return 1 <= Version && 2147483647 >= Version; 1863 case ACCC_private: 1864 return 1 <= Version && 2147483647 >= Version; 1865 case ACCC_firstprivate: 1866 return 1 <= Version && 2147483647 >= Version; 1867 case ACCC_reduction: 1868 return 1 <= Version && 2147483647 >= Version; 1869 case ACCC_wait: 1870 return 1 <= Version && 2147483647 >= Version; 1871 case ACCC_vector_length: 1872 return 1 <= Version && 2147483647 >= Version; 1873 case ACCC_default: 1874 return 1 <= Version && 2147483647 >= Version; 1875 case ACCC_if: 1876 return 1 <= Version && 2147483647 >= Version; 1877 case ACCC_self: 1878 return 1 <= Version && 2147483647 >= Version; 1879 default: 1880 return false; 1881 } 1882 break; 1883 case ACCD_parallel_loop: 1884 switch (C) { 1885 case ACCC_attach: 1886 return 1 <= Version && 2147483647 >= Version; 1887 case ACCC_copy: 1888 return 1 <= Version && 2147483647 >= Version; 1889 case ACCC_copyin: 1890 return 1 <= Version && 2147483647 >= Version; 1891 case ACCC_copyout: 1892 return 1 <= Version && 2147483647 >= Version; 1893 case ACCC_create: 1894 return 1 <= Version && 2147483647 >= Version; 1895 case ACCC_deviceptr: 1896 return 1 <= Version && 2147483647 >= Version; 1897 case ACCC_device_type: 1898 return 1 <= Version && 2147483647 >= Version; 1899 case ACCC_firstprivate: 1900 return 1 <= Version && 2147483647 >= Version; 1901 case ACCC_no_create: 1902 return 1 <= Version && 2147483647 >= Version; 1903 case ACCC_present: 1904 return 1 <= Version && 2147483647 >= Version; 1905 case ACCC_private: 1906 return 1 <= Version && 2147483647 >= Version; 1907 case ACCC_reduction: 1908 return 1 <= Version && 2147483647 >= Version; 1909 case ACCC_tile: 1910 return 1 <= Version && 2147483647 >= Version; 1911 case ACCC_wait: 1912 return 1 <= Version && 2147483647 >= Version; 1913 case ACCC_async: 1914 return 1 <= Version && 2147483647 >= Version; 1915 case ACCC_collapse: 1916 return 1 <= Version && 2147483647 >= Version; 1917 case ACCC_default: 1918 return 1 <= Version && 2147483647 >= Version; 1919 case ACCC_gang: 1920 return 1 <= Version && 2147483647 >= Version; 1921 case ACCC_if: 1922 return 1 <= Version && 2147483647 >= Version; 1923 case ACCC_num_gangs: 1924 return 1 <= Version && 2147483647 >= Version; 1925 case ACCC_num_workers: 1926 return 1 <= Version && 2147483647 >= Version; 1927 case ACCC_self: 1928 return 1 <= Version && 2147483647 >= Version; 1929 case ACCC_vector: 1930 return 1 <= Version && 2147483647 >= Version; 1931 case ACCC_vector_length: 1932 return 1 <= Version && 2147483647 >= Version; 1933 case ACCC_worker: 1934 return 1 <= Version && 2147483647 >= Version; 1935 case ACCC_auto: 1936 return 1 <= Version && 2147483647 >= Version; 1937 case ACCC_independent: 1938 return 1 <= Version && 2147483647 >= Version; 1939 case ACCC_seq: 1940 return 1 <= Version && 2147483647 >= Version; 1941 default: 1942 return false; 1943 } 1944 break; 1945 case ACCD_routine: 1946 switch (C) { 1947 case ACCC_bind: 1948 return 1 <= Version && 2147483647 >= Version; 1949 case ACCC_device_type: 1950 return 1 <= Version && 2147483647 >= Version; 1951 case ACCC_nohost: 1952 return 1 <= Version && 2147483647 >= Version; 1953 case ACCC_gang: 1954 return 1 <= Version && 2147483647 >= Version; 1955 case ACCC_seq: 1956 return 1 <= Version && 2147483647 >= Version; 1957 case ACCC_vector: 1958 return 1 <= Version && 2147483647 >= Version; 1959 case ACCC_worker: 1960 return 1 <= Version && 2147483647 >= Version; 1961 default: 1962 return false; 1963 } 1964 break; 1965 case ACCD_serial: 1966 switch (C) { 1967 case ACCC_attach: 1968 return 1 <= Version && 2147483647 >= Version; 1969 case ACCC_copy: 1970 return 1 <= Version && 2147483647 >= Version; 1971 case ACCC_copyin: 1972 return 1 <= Version && 2147483647 >= Version; 1973 case ACCC_copyout: 1974 return 1 <= Version && 2147483647 >= Version; 1975 case ACCC_create: 1976 return 1 <= Version && 2147483647 >= Version; 1977 case ACCC_deviceptr: 1978 return 1 <= Version && 2147483647 >= Version; 1979 case ACCC_device_type: 1980 return 1 <= Version && 2147483647 >= Version; 1981 case ACCC_no_create: 1982 return 1 <= Version && 2147483647 >= Version; 1983 case ACCC_present: 1984 return 1 <= Version && 2147483647 >= Version; 1985 case ACCC_private: 1986 return 1 <= Version && 2147483647 >= Version; 1987 case ACCC_firstprivate: 1988 return 1 <= Version && 2147483647 >= Version; 1989 case ACCC_reduction: 1990 return 1 <= Version && 2147483647 >= Version; 1991 case ACCC_wait: 1992 return 1 <= Version && 2147483647 >= Version; 1993 case ACCC_async: 1994 return 1 <= Version && 2147483647 >= Version; 1995 case ACCC_default: 1996 return 1 <= Version && 2147483647 >= Version; 1997 case ACCC_if: 1998 return 1 <= Version && 2147483647 >= Version; 1999 case ACCC_self: 2000 return 1 <= Version && 2147483647 >= Version; 2001 default: 2002 return false; 2003 } 2004 break; 2005 case ACCD_serial_loop: 2006 switch (C) { 2007 case ACCC_attach: 2008 return 1 <= Version && 2147483647 >= Version; 2009 case ACCC_copy: 2010 return 1 <= Version && 2147483647 >= Version; 2011 case ACCC_copyin: 2012 return 1 <= Version && 2147483647 >= Version; 2013 case ACCC_copyout: 2014 return 1 <= Version && 2147483647 >= Version; 2015 case ACCC_create: 2016 return 1 <= Version && 2147483647 >= Version; 2017 case ACCC_deviceptr: 2018 return 1 <= Version && 2147483647 >= Version; 2019 case ACCC_device_type: 2020 return 1 <= Version && 2147483647 >= Version; 2021 case ACCC_firstprivate: 2022 return 1 <= Version && 2147483647 >= Version; 2023 case ACCC_no_create: 2024 return 1 <= Version && 2147483647 >= Version; 2025 case ACCC_present: 2026 return 1 <= Version && 2147483647 >= Version; 2027 case ACCC_private: 2028 return 1 <= Version && 2147483647 >= Version; 2029 case ACCC_reduction: 2030 return 1 <= Version && 2147483647 >= Version; 2031 case ACCC_wait: 2032 return 1 <= Version && 2147483647 >= Version; 2033 case ACCC_async: 2034 return 1 <= Version && 2147483647 >= Version; 2035 case ACCC_collapse: 2036 return 1 <= Version && 2147483647 >= Version; 2037 case ACCC_default: 2038 return 1 <= Version && 2147483647 >= Version; 2039 case ACCC_gang: 2040 return 1 <= Version && 2147483647 >= Version; 2041 case ACCC_if: 2042 return 1 <= Version && 2147483647 >= Version; 2043 case ACCC_self: 2044 return 1 <= Version && 2147483647 >= Version; 2045 case ACCC_tile: 2046 return 1 <= Version && 2147483647 >= Version; 2047 case ACCC_vector: 2048 return 1 <= Version && 2147483647 >= Version; 2049 case ACCC_worker: 2050 return 1 <= Version && 2147483647 >= Version; 2051 case ACCC_auto: 2052 return 1 <= Version && 2147483647 >= Version; 2053 case ACCC_independent: 2054 return 1 <= Version && 2147483647 >= Version; 2055 case ACCC_seq: 2056 return 1 <= Version && 2147483647 >= Version; 2057 default: 2058 return false; 2059 } 2060 break; 2061 case ACCD_set: 2062 switch (C) { 2063 case ACCC_default_async: 2064 return 1 <= Version && 2147483647 >= Version; 2065 case ACCC_device_num: 2066 return 1 <= Version && 2147483647 >= Version; 2067 case ACCC_device_type: 2068 return 1 <= Version && 2147483647 >= Version; 2069 case ACCC_if: 2070 return 1 <= Version && 2147483647 >= Version; 2071 default: 2072 return false; 2073 } 2074 break; 2075 case ACCD_shutdown: 2076 switch (C) { 2077 case ACCC_device_num: 2078 return 1 <= Version && 2147483647 >= Version; 2079 case ACCC_device_type: 2080 return 1 <= Version && 2147483647 >= Version; 2081 case ACCC_if: 2082 return 1 <= Version && 2147483647 >= Version; 2083 default: 2084 return false; 2085 } 2086 break; 2087 case ACCD_unknown: 2088 return false; 2089 break; 2090 case ACCD_update: 2091 switch (C) { 2092 case ACCC_device_type: 2093 return 1 <= Version && 2147483647 >= Version; 2094 case ACCC_wait: 2095 return 1 <= Version && 2147483647 >= Version; 2096 case ACCC_async: 2097 return 1 <= Version && 2147483647 >= Version; 2098 case ACCC_if: 2099 return 1 <= Version && 2147483647 >= Version; 2100 case ACCC_if_present: 2101 return 1 <= Version && 2147483647 >= Version; 2102 case ACCC_device: 2103 return 1 <= Version && 2147483647 >= Version; 2104 case ACCC_host: 2105 return 1 <= Version && 2147483647 >= Version; 2106 case ACCC_self: 2107 return 1 <= Version && 2147483647 >= Version; 2108 default: 2109 return false; 2110 } 2111 break; 2112 case ACCD_wait: 2113 switch (C) { 2114 case ACCC_async: 2115 return 1 <= Version && 2147483647 >= Version; 2116 case ACCC_if: 2117 return 1 <= Version && 2147483647 >= Version; 2118 default: 2119 return false; 2120 } 2121 break; 2122 } 2123 llvm_unreachable("Invalid OpenACC Directive kind"); 2124} 2125 2126#endif // GEN_DIRECTIVES_IMPL 2127 2128