forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Fortran
		
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Fortran
		
	
	
	
| <ompts:test>
 | |
| <ompts:testdescription>Test which checks the omp single private directive.</ompts:testdescription>
 | |
| <ompts:ompversion>2.0</ompts:ompversion>
 | |
| <ompts:directive>omp singel private</ompts:directive>
 | |
| <ompts:dependences>omp critical,omp flush,omp single nowait</ompts:dependences>
 | |
| <ompts:testcode>
 | |
|         INTEGER FUNCTION <ompts:testcode:functionname>single_private</ompts:testcode:functionname>()
 | |
|         IMPLICIT NONE
 | |
|         INTEGER nr_iterations, i
 | |
| 		<ompts:orphan:vars>
 | |
|         INTEGER result
 | |
|         INTEGER nr_threads_in_single, myresult, myit
 | |
|         COMMON /orphvars/ result,nr_iterations
 | |
| 		</ompts:orphan:vars>
 | |
|         INCLUDE "omp_testsuite.f"
 | |
|         nr_threads_in_single=0
 | |
|         result=0
 | |
|         myresult=0
 | |
|         myit=0
 | |
|         nr_iterations=0
 | |
| !$omp parallel private(i, myresult, myit)
 | |
| <ompts:orphan>
 | |
|         myresult = 0
 | |
|         myit = 0
 | |
|         nr_threads_in_single=0
 | |
| !$omp barrier
 | |
|         DO i=0, LOOPCOUNT -1
 | |
| !$omp single <ompts:check>private(nr_threads_in_single)</ompts:check>
 | |
|           nr_threads_in_single = 0
 | |
| !$omp flush
 | |
|           nr_threads_in_single = nr_threads_in_single + 1
 | |
| !$omp flush
 | |
|           myit = myit + 1
 | |
|           myresult = myresult + nr_threads_in_single
 | |
| !$omp end single nowait
 | |
|         END DO
 | |
| !$omp critical
 | |
|         result = result + nr_threads_in_single
 | |
|         nr_iterations = nr_iterations + myit
 | |
| !$omp end critical
 | |
| </ompts:orphan>
 | |
| !$omp end parallel
 | |
|         WRITE(1,*) "result is",result,"nr_it is",nr_iterations
 | |
|         IF ( result .EQ. 0 .AND. nr_iterations .EQ. LOOPCOUNT) THEN
 | |
|           <testfunctionname></testfunctionname> = 1
 | |
|         ELSE
 | |
|           <testfunctionname></testfunctionname> = 0
 | |
|         END IF
 | |
|       END
 | |
| </ompts:testcode>
 | |
| </ompts:test>
 |