| ! REQUIRES: plugins, examples, shell |
| |
| ! RUN: %flang_fc1 -load %llvmshlibdir/flangOmpReport.so -plugin flang-omp-report -fopenmp %s -o - | FileCheck %s |
| |
| subroutine sb(n) |
| implicit none |
| |
| integer :: n |
| integer :: arr(n,n), brr(n,n), crr(n,n) |
| integer :: arr_single(n),arr_quad(n,n,n,n) |
| integer :: i,j,k,l,tmp,tmp1,tmp2 |
| |
| ! CHECK:--- |
| |
| !Simple check with nowait |
| !$omp do |
| do i = 1, n |
| arr_single(i) = i |
| end do |
| !$omp end do nowait |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-6]] |
| ! CHECK-NEXT: construct: do |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: nowait |
| ! CHECK-NEXT: details: '' |
| |
| !Check for no effects on loop without nowait |
| !$omp do |
| do i = 1, n |
| arr_single(i) = i |
| end do |
| !$omp end do |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-6]] |
| ! CHECK-NEXT: construct: do |
| ! CHECK-NEXT: clauses: [] |
| |
| !Check with another construct nested inside loop with nowait |
| !$omp parallel shared(arr) |
| !$omp do |
| do i = 1, n |
| !$omp critical |
| arr_single(i) = i |
| !$omp end critical |
| end do |
| !$omp end do nowait |
| !$omp end parallel |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-7]] |
| ! CHECK-NEXT: construct: critical |
| ! CHECK-NEXT: clauses: [] |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-13]] |
| ! CHECK-NEXT: construct: do |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: nowait |
| ! CHECK-NEXT: details: '' |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-20]] |
| ! CHECK-NEXT: construct: parallel |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: shared |
| ! CHECK-NEXT: details: arr |
| |
| !Check with back to back loops (one with nowait) inside a parallel construct |
| !$omp parallel shared(arr) |
| !$omp do |
| do i=1,10 |
| arr(i,j) = i+j |
| end do |
| !$omp end do nowait |
| !$omp do schedule(guided) |
| do j=1,10 |
| end do |
| !$omp end do |
| !$omp end parallel |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-11]] |
| ! CHECK-NEXT: construct: do |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: nowait |
| ! CHECK-NEXT: details: '' |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-12]] |
| ! CHECK-NEXT: construct: do |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: schedule |
| ! CHECK-NEXT: details: guided |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-24]] |
| ! CHECK-NEXT: construct: parallel |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: shared |
| ! CHECK-NEXT: details: arr |
| |
| |
| !Check nested parallel do loops with a nowait outside |
| !$omp parallel shared(arr) |
| !$omp do |
| do i=1,10 |
| arr_single(i)=i |
| !$omp parallel |
| !$omp do |
| do j=1,10 |
| !$omp critical |
| arr(i,j) = i+j |
| !$omp end critical |
| end do |
| !$omp end do |
| !$omp end parallel |
| end do |
| !$omp end do nowait |
| !$omp end parallel |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-10]] |
| ! CHECK-NEXT: construct: critical |
| ! CHECK-NEXT: clauses: [] |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-16]] |
| ! CHECK-NEXT: construct: do |
| ! CHECK-NEXT: clauses: [] |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-21]] |
| ! CHECK-NEXT: construct: parallel |
| ! CHECK-NEXT: clauses: [] |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-28]] |
| ! CHECK-NEXT: construct: do |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: nowait |
| ! CHECK-NEXT: details: '' |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-35]] |
| ! CHECK-NEXT: construct: parallel |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: shared |
| ! CHECK-NEXT: details: arr |
| |
| !Check nested parallel do loops with a nowait inside |
| !$omp parallel shared(arr) |
| !$omp do |
| do i=1,10 |
| arr_single(i)=i |
| !$omp parallel |
| !$omp do |
| do j=1,10 |
| !$omp critical |
| arr(i,j) = i+j |
| !$omp end critical |
| end do |
| !$omp end do nowait |
| !$omp end parallel |
| end do |
| !$omp end do |
| !$omp end parallel |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-10]] |
| ! CHECK-NEXT: construct: critical |
| ! CHECK-NEXT: clauses: [] |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-16]] |
| ! CHECK-NEXT: construct: do |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: nowait |
| ! CHECK-NEXT: details: '' |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-23]] |
| ! CHECK-NEXT: construct: parallel |
| ! CHECK-NEXT: clauses: [] |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-30]] |
| ! CHECK-NEXT: construct: do |
| ! CHECK-NEXT: clauses: [] |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-35]] |
| ! CHECK-NEXT: construct: parallel |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: shared |
| ! CHECK-NEXT: details: arr |
| |
| !Check nested parallel do loops with a nowait inside |
| !$omp parallel |
| !$omp do |
| do i=1,10 |
| arr_single(i)=i |
| !$omp parallel shared(arr_quad) |
| !$omp do schedule(dynamic) |
| do j=1,10 |
| !$omp parallel |
| !$omp do |
| do k=1,10 |
| !$omp parallel |
| !$omp do |
| do l=1,10 |
| arr_quad(i,j,k,l) = i+j+k+l |
| end do |
| !$omp end do nowait |
| !$omp end parallel |
| end do |
| !$omp end do |
| !$omp end parallel |
| end do |
| !$omp end do nowait |
| !$omp end parallel |
| end do |
| !$omp end do |
| !$omp end parallel |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-16]] |
| ! CHECK-NEXT: construct: do |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: nowait |
| ! CHECK-NEXT: details: '' |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-23]] |
| ! CHECK-NEXT: construct: parallel |
| ! CHECK-NEXT: clauses: [] |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-29]] |
| ! CHECK-NEXT: construct: do |
| ! CHECK-NEXT: clauses: [] |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-34]] |
| ! CHECK-NEXT: construct: parallel |
| ! CHECK-NEXT: clauses: [] |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-40]] |
| ! CHECK-NEXT: construct: do |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: nowait |
| ! CHECK-NEXT: details: '' |
| ! CHECK-NEXT: - clause: schedule |
| ! CHECK-NEXT: details: dynamic |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-49]] |
| ! CHECK-NEXT: construct: parallel |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: shared |
| ! CHECK-NEXT: details: arr_quad |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-58]] |
| ! CHECK-NEXT: construct: do |
| ! CHECK-NEXT: clauses: [] |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-63]] |
| ! CHECK-NEXT: construct: parallel |
| ! CHECK-NEXT: clauses: [] |
| |
| |
| !Check a do simd with nowait |
| !$omp do simd private(tmp) |
| do j = 1,n |
| do i = 1,n |
| tmp = arr(i,j) + brr(i,j) |
| crr(i,j) = tmp |
| end do |
| end do |
| !$omp end do simd nowait |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-9]] |
| ! CHECK-NEXT: construct: do simd |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: nowait |
| ! CHECK-NEXT: details: '' |
| ! CHECK-NEXT: - clause: private |
| ! CHECK-NEXT: details: tmp |
| |
| |
| !test nowait on non-do construct |
| !$omp parallel |
| !$omp single |
| tmp1 = i+j |
| !$omp end single |
| |
| !$omp single |
| tmp2 = i-j |
| !$omp end single nowait |
| !$omp end parallel |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-9]] |
| ! CHECK-NEXT: construct: single |
| ! CHECK-NEXT: clauses: [] |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-9]] |
| ! CHECK-NEXT: construct: single |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: nowait |
| ! CHECK-NEXT: details: '' |
| ! CHECK-NEXT:- file: '{{[^"]*}}omp-nowait.f90' |
| ! CHECK-NEXT: line: [[@LINE-20]] |
| ! CHECK-NEXT: construct: parallel |
| ! CHECK-NEXT: clauses: [] |
| |
| end subroutine |
| |
| ! CHECK-NEXT:... |