1! This test checks lowering of OpenMP IF clauses. 2 3! The "if" clause was added to the "simd" directive in OpenMP 5.0, and 4! to the "teams" directive in OpenMP 5.2. 5! RUN: bbc -fopenmp -fopenmp-version=52 -emit-hlfir %s -o - | FileCheck %s 6! RUN: %flang_fc1 -fopenmp -fopenmp-version=52 -emit-hlfir %s -o - | FileCheck %s 7 8program main 9 integer :: i 10 11 ! TODO When they are supported, add tests for: 12 ! - PARALLEL SECTIONS 13 ! - PARALLEL WORKSHARE 14 ! - TARGET UPDATE 15 ! - TASKLOOP 16 ! - TASKLOOP SIMD 17 18 ! ---------------------------------------------------------------------------- 19 ! DISTRIBUTE PARALLEL DO 20 ! ---------------------------------------------------------------------------- 21 !$omp teams 22 23 ! CHECK: omp.parallel 24 ! CHECK-NOT: if({{.*}}) 25 ! CHECK-SAME: { 26 ! CHECK: omp.distribute 27 ! CHECK-NOT: if({{.*}}) 28 ! CHECK-SAME: { 29 ! CHECK-NEXT: omp.wsloop 30 ! CHECK-NOT: if({{.*}}) 31 ! CHECK-SAME: { 32 ! CHECK-NEXT: omp.loop_nest 33 !$omp distribute parallel do 34 do i = 1, 10 35 end do 36 !$omp end distribute parallel do 37 38 ! CHECK: omp.parallel 39 ! CHECK-SAME: if({{.*}}) 40 ! CHECK: omp.distribute 41 ! CHECK-NOT: if({{.*}}) 42 ! CHECK-SAME: { 43 ! CHECK-NEXT: omp.wsloop 44 ! CHECK-NOT: if({{.*}}) 45 ! CHECK-SAME: { 46 ! CHECK-NEXT: omp.loop_nest 47 !$omp distribute parallel do if(.true.) 48 do i = 1, 10 49 end do 50 !$omp end distribute parallel do 51 52 ! CHECK: omp.parallel 53 ! CHECK-SAME: if({{.*}}) 54 ! CHECK: omp.distribute 55 ! CHECK-NOT: if({{.*}}) 56 ! CHECK-SAME: { 57 ! CHECK-NEXT: omp.wsloop 58 ! CHECK-NOT: if({{.*}}) 59 ! CHECK-SAME: { 60 ! CHECK-NEXT: omp.loop_nest 61 !$omp distribute parallel do if(parallel: .true.) 62 do i = 1, 10 63 end do 64 !$omp end distribute parallel do 65 66 !$omp end teams 67 68 ! ---------------------------------------------------------------------------- 69 ! DISTRIBUTE PARALLEL DO SIMD 70 ! ---------------------------------------------------------------------------- 71 !$omp teams 72 73 ! CHECK: omp.parallel 74 ! CHECK-NOT: if({{.*}}) 75 ! CHECK-SAME: { 76 ! CHECK: omp.distribute 77 ! CHECK-NOT: if({{.*}}) 78 ! CHECK-SAME: { 79 ! CHECK-NEXT: omp.wsloop 80 ! CHECK-NOT: if({{.*}}) 81 ! CHECK-SAME: { 82 ! CHECK-NEXT: omp.simd 83 ! CHECK-NOT: if({{.*}}) 84 ! CHECK-SAME: { 85 ! CHECK-NEXT: omp.loop_nest 86 !$omp distribute parallel do simd 87 do i = 1, 10 88 end do 89 !$omp end distribute parallel do simd 90 91 ! CHECK: omp.parallel 92 ! CHECK-SAME: if({{.*}}) 93 ! CHECK: omp.distribute 94 ! CHECK-NOT: if({{.*}}) 95 ! CHECK-SAME: { 96 ! CHECK-NEXT: omp.wsloop 97 ! CHECK-NOT: if({{.*}}) 98 ! CHECK-SAME: { 99 ! CHECK-NEXT: omp.simd 100 ! CHECK-SAME: if({{.*}}) 101 ! CHECK-NEXT: omp.loop_nest 102 !$omp distribute parallel do simd if(.true.) 103 do i = 1, 10 104 end do 105 !$omp end distribute parallel do simd 106 107 ! CHECK: omp.parallel 108 ! CHECK-SAME: if({{.*}}) 109 ! CHECK: omp.distribute 110 ! CHECK-NOT: if({{.*}}) 111 ! CHECK-SAME: { 112 ! CHECK-NEXT: omp.wsloop 113 ! CHECK-NOT: if({{.*}}) 114 ! CHECK-SAME: { 115 ! CHECK-NEXT: omp.simd 116 ! CHECK-SAME: if({{.*}}) 117 ! CHECK-NEXT: omp.loop_nest 118 !$omp distribute parallel do simd if(parallel: .true.) if(simd: .false.) 119 do i = 1, 10 120 end do 121 !$omp end distribute parallel do simd 122 123 ! CHECK: omp.parallel 124 ! CHECK-SAME: if({{.*}}) 125 ! CHECK: omp.distribute 126 ! CHECK-NOT: if({{.*}}) 127 ! CHECK-SAME: { 128 ! CHECK-NEXT: omp.wsloop 129 ! CHECK-NOT: if({{.*}}) 130 ! CHECK-SAME: { 131 ! CHECK-NEXT: omp.simd 132 ! CHECK-NOT: if({{.*}}) 133 ! CHECK-SAME: { 134 ! CHECK-NEXT: omp.loop_nest 135 !$omp distribute parallel do simd if(parallel: .true.) 136 do i = 1, 10 137 end do 138 !$omp end distribute parallel do simd 139 140 ! CHECK: omp.parallel 141 ! CHECK-NOT: if({{.*}}) 142 ! CHECK-SAME: { 143 ! CHECK: omp.distribute 144 ! CHECK-NOT: if({{.*}}) 145 ! CHECK-SAME: { 146 ! CHECK-NEXT: omp.wsloop 147 ! CHECK-NOT: if({{.*}}) 148 ! CHECK-SAME: { 149 ! CHECK-NEXT: omp.simd 150 ! CHECK-SAME: if({{.*}}) 151 ! CHECK-NEXT: omp.loop_nest 152 !$omp distribute parallel do simd if(simd: .true.) 153 do i = 1, 10 154 end do 155 !$omp end distribute parallel do simd 156 157 !$omp end teams 158 159 ! ---------------------------------------------------------------------------- 160 ! DISTRIBUTE SIMD 161 ! ---------------------------------------------------------------------------- 162 !$omp teams 163 164 ! CHECK: omp.distribute 165 ! CHECK-NOT: if({{.*}}) 166 ! CHECK-SAME: { 167 ! CHECK-NEXT: omp.simd 168 ! CHECK-NOT: if({{.*}}) 169 ! CHECK-SAME: { 170 ! CHECK-NEXT: omp.loop_nest 171 !$omp distribute simd 172 do i = 1, 10 173 end do 174 !$omp end distribute simd 175 176 ! CHECK: omp.distribute 177 ! CHECK-NOT: if({{.*}}) 178 ! CHECK-SAME: { 179 ! CHECK-NEXT: omp.simd 180 ! CHECK-SAME: if({{.*}}) 181 ! CHECK-NEXT: omp.loop_nest 182 !$omp distribute simd if(.true.) 183 do i = 1, 10 184 end do 185 !$omp end distribute simd 186 187 ! CHECK: omp.distribute 188 ! CHECK-NOT: if({{.*}}) 189 ! CHECK-SAME: { 190 ! CHECK-NEXT: omp.simd 191 ! CHECK-SAME: if({{.*}}) 192 ! CHECK-NEXT: omp.loop_nest 193 !$omp distribute simd if(simd: .true.) 194 do i = 1, 10 195 end do 196 !$omp end distribute simd 197 198 !$omp end teams 199 200 ! ---------------------------------------------------------------------------- 201 ! DO SIMD 202 ! ---------------------------------------------------------------------------- 203 ! CHECK: omp.wsloop 204 ! CHECK-NOT: if({{.*}}) 205 ! CHECK-SAME: { 206 ! CHECK-NEXT: omp.simd 207 ! CHECK-NOT: if({{.*}}) 208 ! CHECK-SAME: { 209 ! CHECK-NEXT: omp.loop_nest 210 !$omp do simd 211 do i = 1, 10 212 end do 213 !$omp end do simd 214 215 ! CHECK: omp.wsloop 216 ! CHECK-NOT: if({{.*}}) 217 ! CHECK-SAME: { 218 ! CHECK-NEXT: omp.simd 219 ! CHECK-SAME: if({{.*}}) 220 ! CHECK-NEXT: omp.loop_nest 221 !$omp do simd if(.true.) 222 do i = 1, 10 223 end do 224 !$omp end do simd 225 226 ! CHECK: omp.wsloop 227 ! CHECK-NOT: if({{.*}}) 228 ! CHECK-SAME: { 229 ! CHECK-NEXT: omp.simd 230 ! CHECK-SAME: if({{.*}}) 231 ! CHECK-NEXT: omp.loop_nest 232 !$omp do simd if(simd: .true.) 233 do i = 1, 10 234 end do 235 !$omp end do simd 236 237 ! ---------------------------------------------------------------------------- 238 ! PARALLEL 239 ! ---------------------------------------------------------------------------- 240 ! CHECK: omp.parallel 241 ! CHECK-NOT: if({{.*}}) 242 ! CHECK-SAME: { 243 !$omp parallel 244 i = 10 245 !$omp end parallel 246 247 ! CHECK: omp.parallel 248 ! CHECK-SAME: if({{.*}}) 249 !$omp parallel if(.true.) 250 i = 10 251 !$omp end parallel 252 253 ! CHECK: omp.parallel 254 ! CHECK-SAME: if({{.*}}) 255 !$omp parallel if(parallel: .true.) 256 i = 10 257 !$omp end parallel 258 259 ! ---------------------------------------------------------------------------- 260 ! PARALLEL DO 261 ! ---------------------------------------------------------------------------- 262 ! CHECK: omp.parallel 263 ! CHECK-NOT: if({{.*}}) 264 ! CHECK-SAME: { 265 ! CHECK: omp.wsloop 266 ! CHECK-NOT: if({{.*}}) 267 ! CHECK-SAME: { 268 ! CHECK-NEXT: omp.loop_nest 269 !$omp parallel do 270 do i = 1, 10 271 end do 272 !$omp end parallel do 273 274 ! CHECK: omp.parallel 275 ! CHECK-SAME: if({{.*}}) 276 ! CHECK: omp.wsloop 277 ! CHECK-NOT: if({{.*}}) 278 ! CHECK-SAME: { 279 ! CHECK-NEXT: omp.loop_nest 280 !$omp parallel do if(.true.) 281 do i = 1, 10 282 end do 283 !$omp end parallel do 284 285 ! CHECK: omp.parallel 286 ! CHECK-SAME: if({{.*}}) 287 ! CHECK: omp.wsloop 288 ! CHECK-NOT: if({{.*}}) 289 ! CHECK-SAME: { 290 ! CHECK-NEXT: omp.loop_nest 291 !$omp parallel do if(parallel: .true.) 292 do i = 1, 10 293 end do 294 !$omp end parallel do 295 296 ! ---------------------------------------------------------------------------- 297 ! PARALLEL DO SIMD 298 ! ---------------------------------------------------------------------------- 299 ! CHECK: omp.parallel 300 ! CHECK-NOT: if({{.*}}) 301 ! CHECK-SAME: { 302 ! CHECK: omp.wsloop 303 ! CHECK-NOT: if({{.*}}) 304 ! CHECK-SAME: { 305 ! CHECK-NEXT: omp.simd 306 ! CHECK-NOT: if({{.*}}) 307 ! CHECK-SAME: { 308 ! CHECK-NEXT: omp.loop_nest 309 !$omp parallel do simd 310 do i = 1, 10 311 end do 312 !$omp end parallel do simd 313 314 ! CHECK: omp.parallel 315 ! CHECK-SAME: if({{.*}}) 316 ! CHECK: omp.wsloop 317 ! CHECK-NOT: if({{.*}}) 318 ! CHECK-SAME: { 319 ! CHECK-NEXT: omp.simd 320 ! CHECK-SAME: if({{.*}}) 321 ! CHECK-NEXT: omp.loop_nest 322 !$omp parallel do simd if(.true.) 323 do i = 1, 10 324 end do 325 !$omp end parallel do simd 326 327 ! CHECK: omp.parallel 328 ! CHECK-SAME: if({{.*}}) 329 ! CHECK: omp.wsloop 330 ! CHECK-NOT: if({{.*}}) 331 ! CHECK-SAME: { 332 ! CHECK-NEXT: omp.simd 333 ! CHECK-SAME: if({{.*}}) 334 ! CHECK-NEXT: omp.loop_nest 335 !$omp parallel do simd if(parallel: .true.) if(simd: .false.) 336 do i = 1, 10 337 end do 338 !$omp end parallel do simd 339 340 ! CHECK: omp.parallel 341 ! CHECK-SAME: if({{.*}}) 342 ! CHECK: omp.wsloop 343 ! CHECK-NOT: if({{.*}}) 344 ! CHECK-SAME: { 345 ! CHECK-NEXT: omp.simd 346 ! CHECK-NOT: if({{.*}}) 347 ! CHECK-SAME: { 348 ! CHECK-NEXT: omp.loop_nest 349 !$omp parallel do simd if(parallel: .true.) 350 do i = 1, 10 351 end do 352 !$omp end parallel do simd 353 354 ! CHECK: omp.parallel 355 ! CHECK-NOT: if({{.*}}) 356 ! CHECK-SAME: { 357 ! CHECK: omp.wsloop 358 ! CHECK-NOT: if({{.*}}) 359 ! CHECK-SAME: { 360 ! CHECK-NEXT: omp.simd 361 ! CHECK-SAME: if({{.*}}) 362 ! CHECK-NEXT: omp.loop_nest 363 !$omp parallel do simd if(simd: .true.) 364 do i = 1, 10 365 end do 366 !$omp end parallel do simd 367 368 ! ---------------------------------------------------------------------------- 369 ! SIMD 370 ! ---------------------------------------------------------------------------- 371 ! CHECK: omp.simd 372 ! CHECK-NOT: if({{.*}}) 373 ! CHECK-SAME: { 374 ! CHECK-NEXT: omp.loop_nest 375 !$omp simd 376 do i = 1, 10 377 end do 378 !$omp end simd 379 380 ! CHECK: omp.simd 381 ! CHECK-SAME: if({{.*}}) 382 ! CHECK-NEXT: omp.loop_nest 383 !$omp simd if(.true.) 384 do i = 1, 10 385 end do 386 !$omp end simd 387 388 ! CHECK: omp.simd 389 ! CHECK-SAME: if({{.*}}) 390 ! CHECK-NEXT: omp.loop_nest 391 !$omp simd if(simd: .true.) 392 do i = 1, 10 393 end do 394 !$omp end simd 395 396 ! ---------------------------------------------------------------------------- 397 ! TARGET 398 ! ---------------------------------------------------------------------------- 399 ! CHECK: omp.target 400 ! CHECK-NOT: if({{.*}}) 401 ! CHECK-SAME: { 402 !$omp target 403 !$omp end target 404 405 ! CHECK: omp.target 406 ! CHECK-SAME: if({{.*}}) 407 !$omp target if(.true.) 408 !$omp end target 409 410 ! CHECK: omp.target 411 ! CHECK-SAME: if({{.*}}) 412 !$omp target if(target: .true.) 413 !$omp end target 414 415 ! ---------------------------------------------------------------------------- 416 ! TARGET DATA 417 ! ---------------------------------------------------------------------------- 418 ! CHECK: omp.target_data 419 ! CHECK-NOT: if({{.*}}) 420 ! CHECK-SAME: { 421 !$omp target data map(tofrom: i) 422 !$omp end target data 423 424 ! CHECK: omp.target_data 425 ! CHECK-SAME: if({{.*}}) 426 !$omp target data map(tofrom: i) if(.true.) 427 !$omp end target data 428 429 ! CHECK: omp.target_data 430 ! CHECK-SAME: if({{.*}}) 431 !$omp target data map(tofrom: i) if(target data: .true.) 432 !$omp end target data 433 434 ! ---------------------------------------------------------------------------- 435 ! TARGET ENTER DATA 436 ! ---------------------------------------------------------------------------- 437 ! CHECK: omp.target_enter_data 438 ! CHECK-NOT: if({{.*}}) 439 ! CHECK-SAME: map 440 !$omp target enter data map(to: i) 441 442 ! CHECK: omp.target_enter_data 443 ! CHECK-SAME: if({{.*}}) 444 !$omp target enter data map(to: i) if(.true.) 445 446 ! CHECK: omp.target_enter_data 447 ! CHECK-SAME: if({{.*}}) 448 !$omp target enter data map(to: i) if(target enter data: .true.) 449 450 ! ---------------------------------------------------------------------------- 451 ! TARGET EXIT DATA 452 ! ---------------------------------------------------------------------------- 453 ! CHECK: omp.target_exit_data 454 ! CHECK-NOT: if({{.*}}) 455 ! CHECK-SAME: map 456 !$omp target exit data map(from: i) 457 458 ! CHECK: omp.target_exit_data 459 ! CHECK-SAME: if({{.*}}) 460 !$omp target exit data map(from: i) if(.true.) 461 462 ! CHECK: omp.target_exit_data 463 ! CHECK-SAME: if({{.*}}) 464 !$omp target exit data map(from: i) if(target exit data: .true.) 465 466 ! ---------------------------------------------------------------------------- 467 ! TARGET PARALLEL DO 468 ! ---------------------------------------------------------------------------- 469 ! CHECK: omp.target 470 ! CHECK-NOT: if({{.*}}) 471 ! CHECK-SAME: { 472 ! CHECK: omp.parallel 473 ! CHECK-NOT: if({{.*}}) 474 ! CHECK-SAME: { 475 ! CHECK: omp.wsloop 476 ! CHECK-NOT: if({{.*}}) 477 ! CHECK-SAME: { 478 ! CHECK-NEXT: omp.loop_nest 479 !$omp target parallel do 480 do i = 1, 10 481 end do 482 !$omp end target parallel do 483 484 ! CHECK: omp.target 485 ! CHECK-SAME: if({{.*}}) 486 ! CHECK: omp.parallel 487 ! CHECK-SAME: if({{.*}}) 488 ! CHECK: omp.wsloop 489 ! CHECK-NOT: if({{.*}}) 490 ! CHECK-SAME: { 491 ! CHECK-NEXT: omp.loop_nest 492 !$omp target parallel do if(.true.) 493 do i = 1, 10 494 end do 495 !$omp end target parallel do 496 497 ! CHECK: omp.target 498 ! CHECK-SAME: if({{.*}}) 499 ! CHECK: omp.parallel 500 ! CHECK-SAME: if({{.*}}) 501 ! CHECK: omp.wsloop 502 ! CHECK-NOT: if({{.*}}) 503 ! CHECK-SAME: { 504 ! CHECK-NEXT: omp.loop_nest 505 !$omp target parallel do if(target: .true.) if(parallel: .false.) 506 do i = 1, 10 507 end do 508 !$omp end target parallel do 509 510 ! CHECK: omp.target 511 ! CHECK-SAME: if({{.*}}) 512 ! CHECK: omp.parallel 513 ! CHECK-NOT: if({{.*}}) 514 ! CHECK-SAME: { 515 ! CHECK: omp.wsloop 516 ! CHECK-NOT: if({{.*}}) 517 ! CHECK-SAME: { 518 ! CHECK-NEXT: omp.loop_nest 519 !$omp target parallel do if(target: .true.) 520 do i = 1, 10 521 end do 522 !$omp end target parallel do 523 524 ! CHECK: omp.target 525 ! CHECK-NOT: if({{.*}}) 526 ! CHECK-SAME: { 527 ! CHECK: omp.parallel 528 ! CHECK-SAME: if({{.*}}) 529 ! CHECK: omp.wsloop 530 ! CHECK-NOT: if({{.*}}) 531 ! CHECK-SAME: { 532 ! CHECK-NEXT: omp.loop_nest 533 !$omp target parallel do if(parallel: .true.) 534 do i = 1, 10 535 end do 536 !$omp end target parallel do 537 538 ! ---------------------------------------------------------------------------- 539 ! TARGET PARALLEL DO SIMD 540 ! ---------------------------------------------------------------------------- 541 ! CHECK: omp.target 542 ! CHECK-NOT: if({{.*}}) 543 ! CHECK-SAME: { 544 ! CHECK: omp.parallel 545 ! CHECK-NOT: if({{.*}}) 546 ! CHECK-SAME: { 547 ! CHECK: omp.wsloop 548 ! CHECK-NOT: if({{.*}}) 549 ! CHECK-SAME: { 550 ! CHECK-NEXT: omp.simd 551 ! CHECK-NOT: if({{.*}}) 552 ! CHECK-SAME: { 553 ! CHECK-NEXT: omp.loop_nest 554 !$omp target parallel do simd 555 do i = 1, 10 556 end do 557 !$omp end target parallel do simd 558 559 ! CHECK: omp.target 560 ! CHECK-SAME: if({{.*}}) 561 ! CHECK: omp.parallel 562 ! CHECK-SAME: if({{.*}}) 563 ! CHECK: omp.wsloop 564 ! CHECK-NOT: if({{.*}}) 565 ! CHECK-SAME: { 566 ! CHECK-NEXT: omp.simd 567 ! CHECK-SAME: if({{.*}}) 568 ! CHECK-NEXT: omp.loop_nest 569 !$omp target parallel do simd if(.true.) 570 do i = 1, 10 571 end do 572 !$omp end target parallel do simd 573 574 ! CHECK: omp.target 575 ! CHECK-SAME: if({{.*}}) 576 ! CHECK: omp.parallel 577 ! CHECK-SAME: if({{.*}}) 578 ! CHECK: omp.wsloop 579 ! CHECK-NOT: if({{.*}}) 580 ! CHECK-SAME: { 581 ! CHECK-NEXT: omp.simd 582 ! CHECK-SAME: if({{.*}}) 583 ! CHECK-NEXT: omp.loop_nest 584 !$omp target parallel do simd if(target: .true.) if(parallel: .false.) & 585 !$omp& if(simd: .true.) 586 do i = 1, 10 587 end do 588 !$omp end target parallel do simd 589 590 ! CHECK: omp.target 591 ! CHECK-SAME: if({{.*}}) 592 ! CHECK: omp.parallel 593 ! CHECK-NOT: if({{.*}}) 594 ! CHECK-SAME: { 595 ! CHECK: omp.wsloop 596 ! CHECK-NOT: if({{.*}}) 597 ! CHECK-SAME: { 598 ! CHECK-NEXT: omp.simd 599 ! CHECK-NOT: if({{.*}}) 600 ! CHECK-SAME: { 601 ! CHECK-NEXT: omp.loop_nest 602 !$omp target parallel do simd if(target: .true.) 603 do i = 1, 10 604 end do 605 !$omp end target parallel do simd 606 607 ! CHECK: omp.target 608 ! CHECK-NOT: if({{.*}}) 609 ! CHECK-SAME: { 610 ! CHECK: omp.parallel 611 ! CHECK-SAME: if({{.*}}) 612 ! CHECK: omp.wsloop 613 ! CHECK-NOT: if({{.*}}) 614 ! CHECK-SAME: { 615 ! CHECK-NEXT: omp.simd 616 ! CHECK-SAME: if({{.*}}) 617 ! CHECK-NEXT: omp.loop_nest 618 !$omp target parallel do simd if(parallel: .true.) if(simd: .false.) 619 do i = 1, 10 620 end do 621 !$omp end target parallel do simd 622 623 ! ---------------------------------------------------------------------------- 624 ! TARGET PARALLEL 625 ! ---------------------------------------------------------------------------- 626 ! CHECK: omp.target 627 ! CHECK-NOT: if({{.*}}) 628 ! CHECK-SAME: { 629 ! CHECK: omp.parallel 630 ! CHECK-NOT: if({{.*}}) 631 ! CHECK-SAME: { 632 !$omp target parallel 633 i = 1 634 !$omp end target parallel 635 636 ! CHECK: omp.target 637 ! CHECK-SAME: if({{.*}}) 638 ! CHECK: omp.parallel 639 ! CHECK-SAME: if({{.*}}) 640 !$omp target parallel if(.true.) 641 i = 1 642 !$omp end target parallel 643 644 ! CHECK: omp.target 645 ! CHECK-SAME: if({{.*}}) 646 ! CHECK: omp.parallel 647 ! CHECK-SAME: if({{.*}}) 648 !$omp target parallel if(target: .true.) if(parallel: .false.) 649 i = 1 650 !$omp end target parallel 651 652 ! CHECK: omp.target 653 ! CHECK-SAME: if({{.*}}) 654 ! CHECK: omp.parallel 655 ! CHECK-NOT: if({{.*}}) 656 ! CHECK-SAME: { 657 !$omp target parallel if(target: .true.) 658 i = 1 659 !$omp end target parallel 660 661 ! CHECK: omp.target 662 ! CHECK-NOT: if({{.*}}) 663 ! CHECK-SAME: { 664 ! CHECK: omp.parallel 665 ! CHECK-SAME: if({{.*}}) 666 !$omp target parallel if(parallel: .true.) 667 i = 1 668 !$omp end target parallel 669 670 ! ---------------------------------------------------------------------------- 671 ! TARGET SIMD 672 ! ---------------------------------------------------------------------------- 673 ! CHECK: omp.target 674 ! CHECK-NOT: if({{.*}}) 675 ! CHECK-SAME: { 676 ! CHECK: omp.simd 677 ! CHECK-NOT: if({{.*}}) 678 ! CHECK-SAME: { 679 ! CHECK-NEXT: omp.loop_nest 680 !$omp target simd 681 do i = 1, 10 682 end do 683 !$omp end target simd 684 685 ! CHECK: omp.target 686 ! CHECK-SAME: if({{.*}}) 687 ! CHECK: omp.simd 688 ! CHECK-SAME: if({{.*}}) 689 ! CHECK-NEXT: omp.loop_nest 690 !$omp target simd if(.true.) 691 do i = 1, 10 692 end do 693 !$omp end target simd 694 695 ! CHECK: omp.target 696 ! CHECK-SAME: if({{.*}}) 697 ! CHECK: omp.simd 698 ! CHECK-SAME: if({{.*}}) 699 ! CHECK-NEXT: omp.loop_nest 700 !$omp target simd if(target: .true.) if(simd: .false.) 701 do i = 1, 10 702 end do 703 !$omp end target simd 704 705 ! CHECK: omp.target 706 ! CHECK-SAME: if({{.*}}) 707 ! CHECK: omp.simd 708 ! CHECK-NOT: if({{.*}}) 709 ! CHECK-SAME: { 710 ! CHECK-NEXT: omp.loop_nest 711 !$omp target simd if(target: .true.) 712 do i = 1, 10 713 end do 714 !$omp end target simd 715 716 ! CHECK: omp.target 717 ! CHECK-NOT: if({{.*}}) 718 ! CHECK-SAME: { 719 ! CHECK: omp.simd 720 ! CHECK-SAME: if({{.*}}) 721 ! CHECK-NEXT: omp.loop_nest 722 !$omp target simd if(simd: .true.) 723 do i = 1, 10 724 end do 725 !$omp end target simd 726 727 ! ---------------------------------------------------------------------------- 728 ! TARGET TEAMS DISTRIBUTE 729 ! ---------------------------------------------------------------------------- 730 ! CHECK: omp.target 731 ! CHECK-NOT: if({{.*}}) 732 ! CHECK-SAME: { 733 ! CHECK: omp.teams 734 ! CHECK-NOT: if({{.*}}) 735 ! CHECK-SAME: { 736 ! CHECK: omp.distribute 737 ! CHECK-NOT: if({{.*}}) 738 ! CHECK-SAME: { 739 ! CHECK-NEXT: omp.loop_nest 740 !$omp target teams distribute 741 do i = 1, 10 742 end do 743 !$omp end target teams distribute 744 745 ! CHECK: omp.target 746 ! CHECK-SAME: if({{.*}}) 747 ! CHECK: omp.teams 748 ! CHECK-SAME: if({{.*}}) 749 ! CHECK: omp.distribute 750 ! CHECK-NOT: if({{.*}}) 751 ! CHECK-SAME: { 752 ! CHECK-NEXT: omp.loop_nest 753 !$omp target teams distribute if(.true.) 754 do i = 1, 10 755 end do 756 !$omp end target teams distribute 757 758 ! CHECK: omp.target 759 ! CHECK-SAME: if({{.*}}) 760 ! CHECK: omp.teams 761 ! CHECK-SAME: if({{.*}}) 762 ! CHECK: omp.distribute 763 ! CHECK-NOT: if({{.*}}) 764 ! CHECK-SAME: { 765 ! CHECK-NEXT: omp.loop_nest 766 !$omp target teams distribute if(target: .true.) if(teams: .false.) 767 do i = 1, 10 768 end do 769 !$omp end target teams distribute 770 771 ! CHECK: omp.target 772 ! CHECK-SAME: if({{.*}}) 773 ! CHECK: omp.teams 774 ! CHECK-NOT: if({{.*}}) 775 ! CHECK-SAME: { 776 ! CHECK: omp.distribute 777 ! CHECK-NOT: if({{.*}}) 778 ! CHECK-SAME: { 779 ! CHECK-NEXT: omp.loop_nest 780 !$omp target teams distribute if(target: .true.) 781 do i = 1, 10 782 end do 783 !$omp end target teams distribute 784 785 ! CHECK: omp.target 786 ! CHECK-NOT: if({{.*}}) 787 ! CHECK-SAME: { 788 ! CHECK: omp.teams 789 ! CHECK-SAME: if({{.*}}) 790 ! CHECK: omp.distribute 791 ! CHECK-NOT: if({{.*}}) 792 ! CHECK-SAME: { 793 ! CHECK-NEXT: omp.loop_nest 794 !$omp target teams distribute if(teams: .true.) 795 do i = 1, 10 796 end do 797 !$omp end target teams distribute 798 799 ! ---------------------------------------------------------------------------- 800 ! TARGET TEAMS DISTRIBUTE PARALLEL DO 801 ! ---------------------------------------------------------------------------- 802 ! CHECK: omp.target 803 ! CHECK-NOT: if({{.*}}) 804 ! CHECK-SAME: { 805 ! CHECK: omp.teams 806 ! CHECK-NOT: if({{.*}}) 807 ! CHECK-SAME: { 808 ! CHECK: omp.parallel 809 ! CHECK-NOT: if({{.*}}) 810 ! CHECK-SAME: { 811 ! CHECK: omp.distribute 812 ! CHECK-NOT: if({{.*}}) 813 ! CHECK-SAME: { 814 ! CHECK-NEXT: omp.wsloop 815 ! CHECK-NOT: if({{.*}}) 816 ! CHECK-SAME: { 817 ! CHECK-NEXT: omp.loop_nest 818 !$omp target teams distribute parallel do 819 do i = 1, 10 820 end do 821 !$omp end target teams distribute parallel do 822 823 ! CHECK: omp.target 824 ! CHECK-SAME: if({{.*}}) 825 ! CHECK: omp.teams 826 ! CHECK-SAME: if({{.*}}) 827 ! CHECK: omp.parallel 828 ! CHECK-SAME: if({{.*}}) 829 ! CHECK: omp.distribute 830 ! CHECK-NOT: if({{.*}}) 831 ! CHECK-SAME: { 832 ! CHECK-NEXT: omp.wsloop 833 ! CHECK-NOT: if({{.*}}) 834 ! CHECK-SAME: { 835 ! CHECK-NEXT: omp.loop_nest 836 !$omp target teams distribute parallel do if(.true.) 837 do i = 1, 10 838 end do 839 !$omp end target teams distribute parallel do 840 841 ! CHECK: omp.target 842 ! CHECK-SAME: if({{.*}}) 843 ! CHECK: omp.teams 844 ! CHECK-SAME: if({{.*}}) 845 ! CHECK: omp.parallel 846 ! CHECK-SAME: if({{.*}}) 847 ! CHECK: omp.distribute 848 ! CHECK-NOT: if({{.*}}) 849 ! CHECK-SAME: { 850 ! CHECK-NEXT: omp.wsloop 851 ! CHECK-NOT: if({{.*}}) 852 ! CHECK-SAME: { 853 ! CHECK-NEXT: omp.loop_nest 854 !$omp target teams distribute parallel do if(target: .true.) if(teams: .false.) if(parallel: .true.) 855 do i = 1, 10 856 end do 857 !$omp end target teams distribute parallel do 858 859 ! CHECK: omp.target 860 ! CHECK-SAME: if({{.*}}) 861 ! CHECK: omp.teams 862 ! CHECK-NOT: if({{.*}}) 863 ! CHECK-SAME: { 864 ! CHECK: omp.parallel 865 ! CHECK-NOT: if({{.*}}) 866 ! CHECK-SAME: { 867 ! CHECK: omp.distribute 868 ! CHECK-NOT: if({{.*}}) 869 ! CHECK-SAME: { 870 ! CHECK-NEXT: omp.wsloop 871 ! CHECK-NOT: if({{.*}}) 872 ! CHECK-SAME: { 873 ! CHECK-NEXT: omp.loop_nest 874 !$omp target teams distribute parallel do if(target: .true.) 875 do i = 1, 10 876 end do 877 !$omp end target teams distribute parallel do 878 879 ! CHECK: omp.target 880 ! CHECK-NOT: if({{.*}}) 881 ! CHECK-SAME: { 882 ! CHECK: omp.teams 883 ! CHECK-SAME: if({{.*}}) 884 ! CHECK: omp.parallel 885 ! CHECK-NOT: if({{.*}}) 886 ! CHECK-SAME: { 887 ! CHECK: omp.distribute 888 ! CHECK-NOT: if({{.*}}) 889 ! CHECK-SAME: { 890 ! CHECK-NEXT: omp.wsloop 891 ! CHECK-NOT: if({{.*}}) 892 ! CHECK-SAME: { 893 ! CHECK-NEXT: omp.loop_nest 894 !$omp target teams distribute parallel do if(teams: .true.) 895 do i = 1, 10 896 end do 897 !$omp end target teams distribute parallel do 898 899 ! CHECK: omp.target 900 ! CHECK-NOT: if({{.*}}) 901 ! CHECK-SAME: { 902 ! CHECK: omp.teams 903 ! CHECK-NOT: if({{.*}}) 904 ! CHECK-SAME: { 905 ! CHECK: omp.parallel 906 ! CHECK-SAME: if({{.*}}) 907 ! CHECK: omp.distribute 908 ! CHECK-NOT: if({{.*}}) 909 ! CHECK-SAME: { 910 ! CHECK-NEXT: omp.wsloop 911 ! CHECK-NOT: if({{.*}}) 912 ! CHECK-SAME: { 913 ! CHECK-NEXT: omp.loop_nest 914 !$omp target teams distribute parallel do if(parallel: .true.) 915 do i = 1, 10 916 end do 917 !$omp end target teams distribute parallel do 918 919 ! ---------------------------------------------------------------------------- 920 ! TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD 921 ! ---------------------------------------------------------------------------- 922 ! CHECK: omp.target 923 ! CHECK-NOT: if({{.*}}) 924 ! CHECK-SAME: { 925 ! CHECK: omp.teams 926 ! CHECK-NOT: if({{.*}}) 927 ! CHECK-SAME: { 928 ! CHECK: omp.parallel 929 ! CHECK-NOT: if({{.*}}) 930 ! CHECK-SAME: { 931 ! CHECK: omp.distribute 932 ! CHECK-NOT: if({{.*}}) 933 ! CHECK-SAME: { 934 ! CHECK-NEXT: omp.wsloop 935 ! CHECK-NOT: if({{.*}}) 936 ! CHECK-SAME: { 937 ! CHECK-NEXT: omp.simd 938 ! CHECK-NOT: if({{.*}}) 939 ! CHECK-SAME: { 940 ! CHECK-NEXT: omp.loop_nest 941 !$omp target teams distribute parallel do simd 942 do i = 1, 10 943 end do 944 !$omp end target teams distribute parallel do simd 945 946 ! CHECK: omp.target 947 ! CHECK-SAME: if({{.*}}) 948 ! CHECK: omp.teams 949 ! CHECK-SAME: if({{.*}}) 950 ! CHECK: omp.parallel 951 ! CHECK-SAME: if({{.*}}) 952 ! CHECK: omp.distribute 953 ! CHECK-NOT: if({{.*}}) 954 ! CHECK-SAME: { 955 ! CHECK-NEXT: omp.wsloop 956 ! CHECK-NOT: if({{.*}}) 957 ! CHECK-SAME: { 958 ! CHECK-NEXT: omp.simd 959 ! CHECK-SAME: if({{.*}}) 960 ! CHECK-NEXT: omp.loop_nest 961 !$omp target teams distribute parallel do simd if(.true.) 962 do i = 1, 10 963 end do 964 !$omp end target teams distribute parallel do simd 965 966 ! CHECK: omp.target 967 ! CHECK-SAME: if({{.*}}) 968 ! CHECK: omp.teams 969 ! CHECK-SAME: if({{.*}}) 970 ! CHECK: omp.parallel 971 ! CHECK-SAME: if({{.*}}) 972 ! CHECK: omp.distribute 973 ! CHECK-NOT: if({{.*}}) 974 ! CHECK-SAME: { 975 ! CHECK-NEXT: omp.wsloop 976 ! CHECK-NOT: if({{.*}}) 977 ! CHECK-SAME: { 978 ! CHECK-NEXT: omp.simd 979 ! CHECK-SAME: if({{.*}}) 980 ! CHECK-NEXT: omp.loop_nest 981 !$omp target teams distribute parallel do simd if(target: .true.) if(teams: .false.) if(parallel: .true.) if(simd: .false.) 982 do i = 1, 10 983 end do 984 !$omp end target teams distribute parallel do simd 985 986 ! CHECK: omp.target 987 ! CHECK-SAME: if({{.*}}) 988 ! CHECK: omp.teams 989 ! CHECK-NOT: if({{.*}}) 990 ! CHECK-SAME: { 991 ! CHECK: omp.parallel 992 ! CHECK-NOT: if({{.*}}) 993 ! CHECK-SAME: { 994 ! CHECK: omp.distribute 995 ! CHECK-NOT: if({{.*}}) 996 ! CHECK-SAME: { 997 ! CHECK-NEXT: omp.wsloop 998 ! CHECK-NOT: if({{.*}}) 999 ! CHECK-SAME: { 1000 ! CHECK-NEXT: omp.simd 1001 ! CHECK-NOT: if({{.*}}) 1002 ! CHECK-SAME: { 1003 ! CHECK-NEXT: omp.loop_nest 1004 !$omp target teams distribute parallel do simd if(target: .true.) 1005 do i = 1, 10 1006 end do 1007 !$omp end target teams distribute parallel do simd 1008 1009 ! CHECK: omp.target 1010 ! CHECK-NOT: if({{.*}}) 1011 ! CHECK-SAME: { 1012 ! CHECK: omp.teams 1013 ! CHECK-SAME: if({{.*}}) 1014 ! CHECK: omp.parallel 1015 ! CHECK-NOT: if({{.*}}) 1016 ! CHECK-SAME: { 1017 ! CHECK: omp.distribute 1018 ! CHECK-NOT: if({{.*}}) 1019 ! CHECK-SAME: { 1020 ! CHECK-NEXT: omp.wsloop 1021 ! CHECK-NOT: if({{.*}}) 1022 ! CHECK-SAME: { 1023 ! CHECK-NEXT: omp.simd 1024 ! CHECK-NOT: if({{.*}}) 1025 ! CHECK-SAME: { 1026 ! CHECK-NEXT: omp.loop_nest 1027 !$omp target teams distribute parallel do simd if(teams: .true.) 1028 do i = 1, 10 1029 end do 1030 !$omp end target teams distribute parallel do simd 1031 1032 ! CHECK: omp.target 1033 ! CHECK-NOT: if({{.*}}) 1034 ! CHECK-SAME: { 1035 ! CHECK: omp.teams 1036 ! CHECK-NOT: if({{.*}}) 1037 ! CHECK-SAME: { 1038 ! CHECK: omp.parallel 1039 ! CHECK-SAME: if({{.*}}) 1040 ! CHECK: omp.distribute 1041 ! CHECK-NOT: if({{.*}}) 1042 ! CHECK-SAME: { 1043 ! CHECK-NEXT: omp.wsloop 1044 ! CHECK-NOT: if({{.*}}) 1045 ! CHECK-SAME: { 1046 ! CHECK-NEXT: omp.simd 1047 ! CHECK-NOT: if({{.*}}) 1048 ! CHECK-SAME: { 1049 ! CHECK-NEXT: omp.loop_nest 1050 !$omp target teams distribute parallel do simd if(parallel: .true.) 1051 do i = 1, 10 1052 end do 1053 !$omp end target teams distribute parallel do simd 1054 1055 ! CHECK: omp.target 1056 ! CHECK-NOT: if({{.*}}) 1057 ! CHECK-SAME: { 1058 ! CHECK: omp.teams 1059 ! CHECK-NOT: if({{.*}}) 1060 ! CHECK-SAME: { 1061 ! CHECK: omp.parallel 1062 ! CHECK-NOT: if({{.*}}) 1063 ! CHECK-SAME: { 1064 ! CHECK: omp.distribute 1065 ! CHECK-NOT: if({{.*}}) 1066 ! CHECK-SAME: { 1067 ! CHECK-NEXT: omp.wsloop 1068 ! CHECK-NOT: if({{.*}}) 1069 ! CHECK-SAME: { 1070 ! CHECK-NEXT: omp.simd 1071 ! CHECK-SAME: if({{.*}}) 1072 ! CHECK-NEXT: omp.loop_nest 1073 !$omp target teams distribute parallel do simd if(simd: .true.) 1074 do i = 1, 10 1075 end do 1076 !$omp end target teams distribute parallel do simd 1077 1078 ! ---------------------------------------------------------------------------- 1079 ! TARGET TEAMS DISTRIBUTE SIMD 1080 ! ---------------------------------------------------------------------------- 1081 ! CHECK: omp.target 1082 ! CHECK-NOT: if({{.*}}) 1083 ! CHECK-SAME: { 1084 ! CHECK: omp.teams 1085 ! CHECK-NOT: if({{.*}}) 1086 ! CHECK-SAME: { 1087 ! CHECK: omp.distribute 1088 ! CHECK-NOT: if({{.*}}) 1089 ! CHECK-SAME: { 1090 ! CHECK-NEXT: omp.simd 1091 ! CHECK-NOT: if({{.*}}) 1092 ! CHECK-SAME: { 1093 ! CHECK-NEXT: omp.loop_nest 1094 !$omp target teams distribute simd 1095 do i = 1, 10 1096 end do 1097 !$omp end target teams distribute simd 1098 1099 ! CHECK: omp.target 1100 ! CHECK-SAME: if({{.*}}) 1101 ! CHECK: omp.teams 1102 ! CHECK-SAME: if({{.*}}) 1103 ! CHECK: omp.distribute 1104 ! CHECK-NOT: if({{.*}}) 1105 ! CHECK-SAME: { 1106 ! CHECK-NEXT: omp.simd 1107 ! CHECK-SAME: if({{.*}}) 1108 ! CHECK-NEXT: omp.loop_nest 1109 !$omp target teams distribute simd if(.true.) 1110 do i = 1, 10 1111 end do 1112 !$omp end target teams distribute simd 1113 1114 ! CHECK: omp.target 1115 ! CHECK-SAME: if({{.*}}) 1116 ! CHECK: omp.teams 1117 ! CHECK-SAME: if({{.*}}) 1118 ! CHECK: omp.distribute 1119 ! CHECK-NOT: if({{.*}}) 1120 ! CHECK-SAME: { 1121 ! CHECK-NEXT: omp.simd 1122 ! CHECK-SAME: if({{.*}}) 1123 ! CHECK-NEXT: omp.loop_nest 1124 !$omp target teams distribute simd if(target: .true.) if(teams: .false.) if(simd: .false.) 1125 do i = 1, 10 1126 end do 1127 !$omp end target teams distribute simd 1128 1129 ! CHECK: omp.target 1130 ! CHECK-SAME: if({{.*}}) 1131 ! CHECK: omp.teams 1132 ! CHECK-NOT: if({{.*}}) 1133 ! CHECK-SAME: { 1134 ! CHECK: omp.distribute 1135 ! CHECK-NOT: if({{.*}}) 1136 ! CHECK-SAME: { 1137 ! CHECK-NEXT: omp.simd 1138 ! CHECK-NOT: if({{.*}}) 1139 ! CHECK-SAME: { 1140 ! CHECK-NEXT: omp.loop_nest 1141 !$omp target teams distribute simd if(target: .true.) 1142 do i = 1, 10 1143 end do 1144 !$omp end target teams distribute simd 1145 1146 ! CHECK: omp.target 1147 ! CHECK-NOT: if({{.*}}) 1148 ! CHECK-SAME: { 1149 ! CHECK: omp.teams 1150 ! CHECK-SAME: if({{.*}}) 1151 ! CHECK: omp.distribute 1152 ! CHECK-NOT: if({{.*}}) 1153 ! CHECK-SAME: { 1154 ! CHECK-NEXT: omp.simd 1155 ! CHECK-NOT: if({{.*}}) 1156 ! CHECK-SAME: { 1157 ! CHECK-NEXT: omp.loop_nest 1158 !$omp target teams distribute simd if(teams: .true.) 1159 do i = 1, 10 1160 end do 1161 !$omp end target teams distribute simd 1162 1163 ! CHECK: omp.target 1164 ! CHECK-NOT: if({{.*}}) 1165 ! CHECK-SAME: { 1166 ! CHECK: omp.teams 1167 ! CHECK-NOT: if({{.*}}) 1168 ! CHECK-SAME: { 1169 ! CHECK: omp.distribute 1170 ! CHECK-NOT: if({{.*}}) 1171 ! CHECK-SAME: { 1172 ! CHECK-NEXT: omp.simd 1173 ! CHECK-SAME: if({{.*}}) 1174 ! CHECK-NEXT: omp.loop_nest 1175 !$omp target teams distribute simd if(simd: .true.) 1176 do i = 1, 10 1177 end do 1178 !$omp end target teams distribute simd 1179 1180 ! ---------------------------------------------------------------------------- 1181 ! TARGET TEAMS 1182 ! ---------------------------------------------------------------------------- 1183 ! CHECK: omp.target 1184 ! CHECK-NOT: if({{.*}}) 1185 ! CHECK-SAME: { 1186 ! CHECK: omp.teams 1187 ! CHECK-NOT: if({{.*}}) 1188 ! CHECK-SAME: { 1189 !$omp target teams 1190 i = 1 1191 !$omp end target teams 1192 1193 ! CHECK: omp.target 1194 ! CHECK-SAME: if({{.*}}) 1195 ! CHECK: omp.teams 1196 ! CHECK-SAME: if({{.*}}) 1197 !$omp target teams if(.true.) 1198 i = 1 1199 !$omp end target teams 1200 1201 ! CHECK: omp.target 1202 ! CHECK-SAME: if({{.*}}) 1203 ! CHECK: omp.teams 1204 ! CHECK-SAME: if({{.*}}) 1205 !$omp target teams if(target: .true.) if(teams: .false.) 1206 i = 1 1207 !$omp end target teams 1208 1209 ! CHECK: omp.target 1210 ! CHECK-SAME: if({{.*}}) 1211 ! CHECK: omp.teams 1212 ! CHECK-NOT: if({{.*}}) 1213 ! CHECK-SAME: { 1214 !$omp target teams if(target: .true.) 1215 i = 1 1216 !$omp end target teams 1217 1218 ! CHECK: omp.target 1219 ! CHECK-NOT: if({{.*}}) 1220 ! CHECK-SAME: { 1221 ! CHECK: omp.teams 1222 ! CHECK-SAME: if({{.*}}) 1223 !$omp target teams if(teams: .true.) 1224 i = 1 1225 !$omp end target teams 1226 1227 ! ---------------------------------------------------------------------------- 1228 ! TASK 1229 ! ---------------------------------------------------------------------------- 1230 ! CHECK: omp.task 1231 ! CHECK-NOT: if({{.*}}) 1232 ! CHECK-SAME: { 1233 !$omp task 1234 !$omp end task 1235 1236 ! CHECK: omp.task 1237 ! CHECK-SAME: if({{.*}}) 1238 !$omp task if(.true.) 1239 !$omp end task 1240 1241 ! CHECK: omp.task 1242 ! CHECK-SAME: if({{.*}}) 1243 !$omp task if(task: .true.) 1244 !$omp end task 1245 1246 ! ---------------------------------------------------------------------------- 1247 ! TEAMS DISTRIBUTE 1248 ! ---------------------------------------------------------------------------- 1249 ! CHECK: omp.teams 1250 ! CHECK-NOT: if({{.*}}) 1251 ! CHECK-SAME: { 1252 ! CHECK: omp.distribute 1253 ! CHECK-NOT: if({{.*}}) 1254 ! CHECK-SAME: { 1255 ! CHECK-NEXT: omp.loop_nest 1256 !$omp teams distribute 1257 do i = 1, 10 1258 end do 1259 !$omp end teams distribute 1260 1261 ! CHECK: omp.teams 1262 ! CHECK-SAME: if({{.*}}) 1263 ! CHECK: omp.distribute 1264 ! CHECK-NOT: if({{.*}}) 1265 ! CHECK-SAME: { 1266 ! CHECK-NEXT: omp.loop_nest 1267 !$omp teams distribute if(.true.) 1268 do i = 1, 10 1269 end do 1270 !$omp end teams distribute 1271 1272 ! CHECK: omp.teams 1273 ! CHECK-SAME: if({{.*}}) 1274 ! CHECK: omp.distribute 1275 ! CHECK-NOT: if({{.*}}) 1276 ! CHECK-SAME: { 1277 ! CHECK-NEXT: omp.loop_nest 1278 !$omp teams distribute if(teams: .true.) 1279 do i = 1, 10 1280 end do 1281 !$omp end teams distribute 1282 1283 ! ---------------------------------------------------------------------------- 1284 ! TEAMS DISTRIBUTE PARALLEL DO 1285 ! ---------------------------------------------------------------------------- 1286 ! CHECK: omp.teams 1287 ! CHECK-NOT: if({{.*}}) 1288 ! CHECK-SAME: { 1289 ! CHECK: omp.parallel 1290 ! CHECK-NOT: if({{.*}}) 1291 ! CHECK-SAME: { 1292 ! CHECK: omp.distribute 1293 ! CHECK-NOT: if({{.*}}) 1294 ! CHECK-SAME: { 1295 ! CHECK-NEXT: omp.wsloop 1296 ! CHECK-NOT: if({{.*}}) 1297 ! CHECK-SAME: { 1298 ! CHECK-NEXT: omp.loop_nest 1299 !$omp teams distribute parallel do 1300 do i = 1, 10 1301 end do 1302 !$omp end teams distribute parallel do 1303 1304 ! CHECK: omp.teams 1305 ! CHECK-SAME: if({{.*}}) 1306 ! CHECK: omp.parallel 1307 ! CHECK-SAME: if({{.*}}) 1308 ! CHECK: omp.distribute 1309 ! CHECK-NOT: if({{.*}}) 1310 ! CHECK-SAME: { 1311 ! CHECK-NEXT: omp.wsloop 1312 ! CHECK-NOT: if({{.*}}) 1313 ! CHECK-SAME: { 1314 ! CHECK-NEXT: omp.loop_nest 1315 !$omp teams distribute parallel do if(.true.) 1316 do i = 1, 10 1317 end do 1318 !$omp end teams distribute parallel do 1319 1320 ! CHECK: omp.teams 1321 ! CHECK-SAME: if({{.*}}) 1322 ! CHECK: omp.parallel 1323 ! CHECK-SAME: if({{.*}}) 1324 ! CHECK: omp.distribute 1325 ! CHECK-NOT: if({{.*}}) 1326 ! CHECK-SAME: { 1327 ! CHECK-NEXT: omp.wsloop 1328 ! CHECK-NOT: if({{.*}}) 1329 ! CHECK-SAME: { 1330 ! CHECK-NEXT: omp.loop_nest 1331 !$omp teams distribute parallel do if(teams: .true.) if(parallel: .false.) 1332 do i = 1, 10 1333 end do 1334 !$omp end teams distribute parallel do 1335 1336 ! CHECK: omp.teams 1337 ! CHECK-SAME: if({{.*}}) 1338 ! CHECK: omp.parallel 1339 ! CHECK-NOT: if({{.*}}) 1340 ! CHECK-SAME: { 1341 ! CHECK: omp.distribute 1342 ! CHECK-NOT: if({{.*}}) 1343 ! CHECK-SAME: { 1344 ! CHECK-NEXT: omp.wsloop 1345 ! CHECK-NOT: if({{.*}}) 1346 ! CHECK-SAME: { 1347 ! CHECK-NEXT: omp.loop_nest 1348 !$omp teams distribute parallel do if(teams: .true.) 1349 do i = 1, 10 1350 end do 1351 !$omp end teams distribute parallel do 1352 1353 ! CHECK: omp.teams 1354 ! CHECK-NOT: if({{.*}}) 1355 ! CHECK-SAME: { 1356 ! CHECK: omp.parallel 1357 ! CHECK-SAME: if({{.*}}) 1358 ! CHECK: omp.distribute 1359 ! CHECK-NOT: if({{.*}}) 1360 ! CHECK-SAME: { 1361 ! CHECK-NEXT: omp.wsloop 1362 ! CHECK-NOT: if({{.*}}) 1363 ! CHECK-SAME: { 1364 ! CHECK-NEXT: omp.loop_nest 1365 !$omp teams distribute parallel do if(parallel: .true.) 1366 do i = 1, 10 1367 end do 1368 !$omp end teams distribute parallel do 1369 1370 ! ---------------------------------------------------------------------------- 1371 ! TEAMS DISTRIBUTE PARALLEL DO SIMD 1372 ! ---------------------------------------------------------------------------- 1373 ! CHECK: omp.teams 1374 ! CHECK-NOT: if({{.*}}) 1375 ! CHECK-SAME: { 1376 ! CHECK: omp.parallel 1377 ! CHECK-NOT: if({{.*}}) 1378 ! CHECK-SAME: { 1379 ! CHECK: omp.distribute 1380 ! CHECK-NOT: if({{.*}}) 1381 ! CHECK-SAME: { 1382 ! CHECK-NEXT: omp.wsloop 1383 ! CHECK-NOT: if({{.*}}) 1384 ! CHECK-SAME: { 1385 ! CHECK-NEXT: omp.simd 1386 ! CHECK-NOT: if({{.*}}) 1387 ! CHECK-SAME: { 1388 ! CHECK-NEXT: omp.loop_nest 1389 !$omp teams distribute parallel do simd 1390 do i = 1, 10 1391 end do 1392 !$omp end teams distribute parallel do simd 1393 1394 ! CHECK: omp.teams 1395 ! CHECK-SAME: if({{.*}}) 1396 ! CHECK: omp.parallel 1397 ! CHECK-SAME: if({{.*}}) 1398 ! CHECK: omp.distribute 1399 ! CHECK-NOT: if({{.*}}) 1400 ! CHECK-SAME: { 1401 ! CHECK-NEXT: omp.wsloop 1402 ! CHECK-NOT: if({{.*}}) 1403 ! CHECK-SAME: { 1404 ! CHECK-NEXT: omp.simd 1405 ! CHECK-SAME: if({{.*}}) 1406 ! CHECK-NEXT: omp.loop_nest 1407 !$omp teams distribute parallel do simd if(.true.) 1408 do i = 1, 10 1409 end do 1410 !$omp end teams distribute parallel do simd 1411 1412 ! CHECK: omp.teams 1413 ! CHECK-SAME: if({{.*}}) 1414 ! CHECK: omp.parallel 1415 ! CHECK-SAME: if({{.*}}) 1416 ! CHECK: omp.distribute 1417 ! CHECK-NOT: if({{.*}}) 1418 ! CHECK-SAME: { 1419 ! CHECK-NEXT: omp.wsloop 1420 ! CHECK-NOT: if({{.*}}) 1421 ! CHECK-SAME: { 1422 ! CHECK-NEXT: omp.simd 1423 ! CHECK-SAME: if({{.*}}) 1424 ! CHECK-NEXT: omp.loop_nest 1425 !$omp teams distribute parallel do simd if(teams: .false.) if(parallel: .true.) if(simd: .false.) 1426 do i = 1, 10 1427 end do 1428 !$omp end teams distribute parallel do simd 1429 1430 ! CHECK: omp.teams 1431 ! CHECK-SAME: if({{.*}}) 1432 ! CHECK: omp.parallel 1433 ! CHECK-NOT: if({{.*}}) 1434 ! CHECK-SAME: { 1435 ! CHECK: omp.distribute 1436 ! CHECK-NOT: if({{.*}}) 1437 ! CHECK-SAME: { 1438 ! CHECK-NEXT: omp.wsloop 1439 ! CHECK-NOT: if({{.*}}) 1440 ! CHECK-SAME: { 1441 ! CHECK-NEXT: omp.simd 1442 ! CHECK-NOT: if({{.*}}) 1443 ! CHECK-SAME: { 1444 ! CHECK-NEXT: omp.loop_nest 1445 !$omp teams distribute parallel do simd if(teams: .true.) 1446 do i = 1, 10 1447 end do 1448 !$omp end teams distribute parallel do simd 1449 1450 ! CHECK: omp.teams 1451 ! CHECK-NOT: if({{.*}}) 1452 ! CHECK-SAME: { 1453 ! CHECK: omp.parallel 1454 ! CHECK-SAME: if({{.*}}) 1455 ! CHECK: omp.distribute 1456 ! CHECK-NOT: if({{.*}}) 1457 ! CHECK-SAME: { 1458 ! CHECK-NEXT: omp.wsloop 1459 ! CHECK-NOT: if({{.*}}) 1460 ! CHECK-SAME: { 1461 ! CHECK-NEXT: omp.simd 1462 ! CHECK-NOT: if({{.*}}) 1463 ! CHECK-SAME: { 1464 ! CHECK-NEXT: omp.loop_nest 1465 !$omp teams distribute parallel do simd if(parallel: .true.) 1466 do i = 1, 10 1467 end do 1468 !$omp end teams distribute parallel do simd 1469 1470 ! CHECK: omp.teams 1471 ! CHECK-NOT: if({{.*}}) 1472 ! CHECK-SAME: { 1473 ! CHECK: omp.parallel 1474 ! CHECK-NOT: if({{.*}}) 1475 ! CHECK-SAME: { 1476 ! CHECK: omp.distribute 1477 ! CHECK-NOT: if({{.*}}) 1478 ! CHECK-SAME: { 1479 ! CHECK-NEXT: omp.wsloop 1480 ! CHECK-NOT: if({{.*}}) 1481 ! CHECK-SAME: { 1482 ! CHECK-NEXT: omp.simd 1483 ! CHECK-SAME: if({{.*}}) 1484 ! CHECK-NEXT: omp.loop_nest 1485 !$omp teams distribute parallel do simd if(simd: .true.) 1486 do i = 1, 10 1487 end do 1488 !$omp end teams distribute parallel do simd 1489 1490 ! ---------------------------------------------------------------------------- 1491 ! TEAMS DISTRIBUTE SIMD 1492 ! ---------------------------------------------------------------------------- 1493 ! CHECK: omp.teams 1494 ! CHECK-NOT: if({{.*}}) 1495 ! CHECK-SAME: { 1496 ! CHECK: omp.distribute 1497 ! CHECK-NOT: if({{.*}}) 1498 ! CHECK-SAME: { 1499 ! CHECK-NEXT: omp.simd 1500 ! CHECK-NOT: if({{.*}}) 1501 ! CHECK-SAME: { 1502 ! CHECK-NEXT: omp.loop_nest 1503 !$omp teams distribute simd 1504 do i = 1, 10 1505 end do 1506 !$omp end teams distribute simd 1507 1508 ! CHECK: omp.teams 1509 ! CHECK-SAME: if({{.*}}) 1510 ! CHECK: omp.distribute 1511 ! CHECK-NOT: if({{.*}}) 1512 ! CHECK-SAME: { 1513 ! CHECK-NEXT: omp.simd 1514 ! CHECK-SAME: if({{.*}}) 1515 ! CHECK-NEXT: omp.loop_nest 1516 !$omp teams distribute simd if(.true.) 1517 do i = 1, 10 1518 end do 1519 !$omp end teams distribute simd 1520 1521 ! CHECK: omp.teams 1522 ! CHECK-SAME: if({{.*}}) 1523 ! CHECK: omp.distribute 1524 ! CHECK-NOT: if({{.*}}) 1525 ! CHECK-SAME: { 1526 ! CHECK-NEXT: omp.simd 1527 ! CHECK-SAME: if({{.*}}) 1528 ! CHECK-NEXT: omp.loop_nest 1529 !$omp teams distribute simd if(teams: .true.) if(simd: .false.) 1530 do i = 1, 10 1531 end do 1532 !$omp end teams distribute simd 1533 1534 ! CHECK: omp.teams 1535 ! CHECK-SAME: if({{.*}}) 1536 ! CHECK: omp.distribute 1537 ! CHECK-NOT: if({{.*}}) 1538 ! CHECK-SAME: { 1539 ! CHECK-NEXT: omp.simd 1540 ! CHECK-NOT: if({{.*}}) 1541 ! CHECK-SAME: { 1542 ! CHECK-NEXT: omp.loop_nest 1543 !$omp teams distribute simd if(teams: .true.) 1544 do i = 1, 10 1545 end do 1546 !$omp end teams distribute simd 1547 1548 ! CHECK: omp.teams 1549 ! CHECK-NOT: if({{.*}}) 1550 ! CHECK-SAME: { 1551 ! CHECK: omp.distribute 1552 ! CHECK-NOT: if({{.*}}) 1553 ! CHECK-SAME: { 1554 ! CHECK-NEXT: omp.simd 1555 ! CHECK-SAME: if({{.*}}) 1556 ! CHECK-NEXT: omp.loop_nest 1557 !$omp teams distribute simd if(simd: .true.) 1558 do i = 1, 10 1559 end do 1560 !$omp end teams distribute simd 1561 1562 ! ---------------------------------------------------------------------------- 1563 ! TEAMS 1564 ! ---------------------------------------------------------------------------- 1565 ! CHECK: omp.teams 1566 ! CHECK-NOT: if({{.*}}) 1567 ! CHECK-SAME: { 1568 !$omp teams 1569 i = 1 1570 !$omp end teams 1571 1572 ! CHECK: omp.teams 1573 ! CHECK-SAME: if({{.*}}) 1574 !$omp teams if(.true.) 1575 i = 1 1576 !$omp end teams 1577 1578 ! CHECK: omp.teams 1579 ! CHECK-SAME: if({{.*}}) 1580 !$omp teams if(teams: .true.) 1581 i = 1 1582 !$omp end teams 1583end program main 1584