brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.8 KiB · 1d8f9e0 Raw
298 lines · plain
1! REQUIRES: plugins, examples, shell2 3! RUN: %flang_fc1 -load %llvmshlibdir/flangOmpReport%pluginext -plugin flang-omp-report -fopenmp %s -o - | FileCheck %s4 5subroutine sb(n)6implicit none7 8integer :: n9integer :: arr(n,n), brr(n,n), crr(n,n)10integer :: arr_single(n),arr_quad(n,n,n,n)11integer :: i,j,k,l,tmp,tmp1,tmp212 13! CHECK:---14 15!Simple check with nowait16!$omp do17do i = 1, n18    arr_single(i) = i19end do20!$omp end do nowait21! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'22! CHECK-NEXT:  line:            [[@LINE-6]]23! CHECK-NEXT:  construct:       do24! CHECK-NEXT:  clauses:25! CHECK-NEXT:    - clause:      nowait26! CHECK-NEXT:      details:     ''27 28!Check for no effects on loop without nowait29!$omp do30do i = 1, n31    arr_single(i) = i32end do33!$omp end do34! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'35! CHECK-NEXT:  line:            [[@LINE-6]]36! CHECK-NEXT:  construct:       do37! CHECK-NEXT:  clauses:         []38 39!Check with another construct nested inside loop with nowait40!$omp parallel shared(arr)41!$omp do42do i = 1, n43!$omp critical44    arr_single(i) = i45!$omp end critical46end do47!$omp end do nowait48!$omp end parallel49! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'50! CHECK-NEXT:  line:            [[@LINE-7]]51! CHECK-NEXT:  construct:       critical52! CHECK-NEXT:  clauses:         []53! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'54! CHECK-NEXT:  line:            [[@LINE-13]]55! CHECK-NEXT:  construct:       do56! CHECK-NEXT:  clauses:57! CHECK-NEXT:    - clause:      nowait58! CHECK-NEXT:      details:     ''59! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'60! CHECK-NEXT:  line:            [[@LINE-20]]61! CHECK-NEXT:  construct:       parallel62! CHECK-NEXT:  clauses:63! CHECK-NEXT:    - clause:      shared64! CHECK-NEXT:      details:     arr65 66!Check with back to back loops (one with nowait) inside a parallel construct67!$omp parallel shared(arr)68!$omp do69do i=1,1070    arr(i,j) = i+j71end do72!$omp end do nowait73!$omp do schedule(guided)74do j=1,1075end do76!$omp end do77!$omp end parallel78! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'79! CHECK-NEXT:  line:            [[@LINE-11]]80! CHECK-NEXT:  construct:       do81! CHECK-NEXT:  clauses:82! CHECK-NEXT:    - clause:      nowait83! CHECK-NEXT:      details:     ''84! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'85! CHECK-NEXT:  line:            [[@LINE-12]]86! CHECK-NEXT:  construct:       do87! CHECK-NEXT:  clauses:88! CHECK-NEXT:    - clause:      schedule89! CHECK-NEXT:      details:     guided90! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'91! CHECK-NEXT:  line:            [[@LINE-24]]92! CHECK-NEXT:  construct:       parallel93! CHECK-NEXT:  clauses:94! CHECK-NEXT:    - clause:      shared95! CHECK-NEXT:      details:     arr96 97 98!Check nested parallel do loops with a nowait outside99!$omp parallel shared(arr)100!$omp do101do i=1,10102    arr_single(i)=i103    !$omp parallel104    !$omp do105    do j=1,10106        !$omp critical107        arr(i,j) = i+j108        !$omp end critical109    end do110    !$omp end do111    !$omp end parallel112end do113!$omp end do nowait114!$omp end parallel115! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'116! CHECK-NEXT:  line:            [[@LINE-10]]117! CHECK-NEXT:  construct:       critical118! CHECK-NEXT:  clauses:         []119! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'120! CHECK-NEXT:  line:            [[@LINE-16]]121! CHECK-NEXT:  construct:       do122! CHECK-NEXT:  clauses:         []123! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'124! CHECK-NEXT:  line:            [[@LINE-21]]125! CHECK-NEXT:  construct:       parallel126! CHECK-NEXT:  clauses:         []127! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'128! CHECK-NEXT:  line:            [[@LINE-28]]129! CHECK-NEXT:  construct:       do130! CHECK-NEXT:  clauses:131! CHECK-NEXT:    - clause:      nowait132! CHECK-NEXT:      details:     ''133! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'134! CHECK-NEXT:  line:            [[@LINE-35]]135! CHECK-NEXT:  construct:       parallel136! CHECK-NEXT:  clauses:137! CHECK-NEXT:    - clause:      shared138! CHECK-NEXT:      details:     arr139 140!Check nested parallel do loops with a nowait inside141!$omp parallel shared(arr)142!$omp do143do i=1,10144    arr_single(i)=i145    !$omp parallel146    !$omp do147    do j=1,10148        !$omp critical149        arr(i,j) = i+j150        !$omp end critical151    end do152    !$omp end do nowait153    !$omp end parallel154end do155!$omp end do156!$omp end parallel157! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'158! CHECK-NEXT:  line:            [[@LINE-10]]159! CHECK-NEXT:  construct:       critical160! CHECK-NEXT:  clauses:         []161! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'162! CHECK-NEXT:  line:            [[@LINE-16]]163! CHECK-NEXT:  construct:       do164! CHECK-NEXT:  clauses:165! CHECK-NEXT:    - clause:      nowait166! CHECK-NEXT:      details:     ''167! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'168! CHECK-NEXT:  line:            [[@LINE-23]]169! CHECK-NEXT:  construct:       parallel170! CHECK-NEXT:  clauses:         []171! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'172! CHECK-NEXT:  line:            [[@LINE-30]]173! CHECK-NEXT:  construct:       do174! CHECK-NEXT:  clauses:         []175! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'176! CHECK-NEXT:  line:            [[@LINE-35]]177! CHECK-NEXT:  construct:       parallel178! CHECK-NEXT:  clauses:179! CHECK-NEXT:    - clause:      shared180! CHECK-NEXT:      details:     arr181 182!Check nested parallel do loops with a nowait inside183!$omp parallel184!$omp do185do i=1,10186    arr_single(i)=i187    !$omp parallel shared(arr_quad)188    !$omp do schedule(dynamic)189    do j=1,10190        !$omp parallel191        !$omp do192        do k=1,10193            !$omp parallel194            !$omp do195            do l=1,10196                arr_quad(i,j,k,l) = i+j+k+l197            end do198            !$omp end do nowait199            !$omp end parallel200        end do201        !$omp end do202        !$omp end parallel203    end do204    !$omp end do nowait205    !$omp end parallel206end do207!$omp end do208!$omp end parallel209! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'210! CHECK-NEXT:  line:            [[@LINE-16]]211! CHECK-NEXT:  construct:       do212! CHECK-NEXT:  clauses:213! CHECK-NEXT:    - clause:      nowait214! CHECK-NEXT:      details:     ''215! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'216! CHECK-NEXT:  line:            [[@LINE-23]]217! CHECK-NEXT:  construct:       parallel218! CHECK-NEXT:  clauses:         []219! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'220! CHECK-NEXT:  line:            [[@LINE-29]]221! CHECK-NEXT:  construct:       do222! CHECK-NEXT:  clauses:         []223! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'224! CHECK-NEXT:  line:            [[@LINE-34]]225! CHECK-NEXT:  construct:       parallel226! CHECK-NEXT:  clauses:         []227! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'228! CHECK-NEXT:  line:            [[@LINE-40]]229! CHECK-NEXT:  construct:       do230! CHECK-NEXT:  clauses:231! CHECK-NEXT:    - clause:      nowait232! CHECK-NEXT:      details:     ''233! CHECK-NEXT:    - clause:      schedule234! CHECK-NEXT:      details:     dynamic235! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'236! CHECK-NEXT:  line:            [[@LINE-49]]237! CHECK-NEXT:  construct:       parallel238! CHECK-NEXT:  clauses:239! CHECK-NEXT:    - clause:      shared240! CHECK-NEXT:      details:     arr_quad241! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'242! CHECK-NEXT:  line:            [[@LINE-58]]243! CHECK-NEXT:  construct:       do244! CHECK-NEXT:  clauses:         []245! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'246! CHECK-NEXT:  line:            [[@LINE-63]]247! CHECK-NEXT:  construct:       parallel248! CHECK-NEXT:  clauses:         []249 250 251!Check a do simd with nowait252!$omp do simd private(tmp)253do j = 1,n254    do i = 1,n255        tmp = arr(i,j) + brr(i,j)256        crr(i,j) = tmp257    end do258end do259!$omp end do simd nowait260! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'261! CHECK-NEXT:  line:            [[@LINE-9]]262! CHECK-NEXT:  construct:       do simd263! CHECK-NEXT:  clauses:264! CHECK-NEXT:    - clause:      nowait265! CHECK-NEXT:      details:     ''266! CHECK-NEXT:    - clause:      private267! CHECK-NEXT:      details:     tmp268 269 270!test nowait on non-do construct271!$omp parallel272!$omp single273tmp1 = i+j274!$omp end single275 276!$omp single277tmp2 = i-j278!$omp end single nowait279!$omp end parallel280! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'281! CHECK-NEXT:  line:            [[@LINE-9]]282! CHECK-NEXT:  construct:       single283! CHECK-NEXT:  clauses:         []284! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'285! CHECK-NEXT:  line:            [[@LINE-9]]286! CHECK-NEXT:  construct:       single287! CHECK-NEXT:  clauses:288! CHECK-NEXT:    - clause:      nowait289! CHECK-NEXT:      details:     ''290! CHECK-NEXT:- file:            '{{[^"]*}}omp-nowait.f90'291! CHECK-NEXT:  line:            [[@LINE-20]]292! CHECK-NEXT:  construct:       parallel293! CHECK-NEXT:  clauses:         []294 295end subroutine296 297! CHECK-NEXT:...298