OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [libgomp/] [testsuite/] [libgomp.fortran/] [appendix-a/] [a.16.1.f90] - Diff between revs 273 and 338

Only display areas with differences | Details | Blame | View Log

Rev 273 Rev 338
! { dg-do run }
! { dg-do run }
        REAL FUNCTION WORK1(I)
        REAL FUNCTION WORK1(I)
            INTEGER I
            INTEGER I
            WORK1 = 1.0 * I
            WORK1 = 1.0 * I
            RETURN
            RETURN
        END FUNCTION WORK1
        END FUNCTION WORK1
        REAL FUNCTION WORK2(I)
        REAL FUNCTION WORK2(I)
            INTEGER I
            INTEGER I
            WORK2 = 2.0 * I
            WORK2 = 2.0 * I
            RETURN
            RETURN
        END FUNCTION WORK2
        END FUNCTION WORK2
        SUBROUTINE SUBA16(X, Y, INDEX, N)
        SUBROUTINE SUBA16(X, Y, INDEX, N)
        REAL X(*), Y(*)
        REAL X(*), Y(*)
        INTEGER INDEX(*), N
        INTEGER INDEX(*), N
        INTEGER I
        INTEGER I
!$OMP PARALLEL DO SHARED(X, Y, INDEX, N)
!$OMP PARALLEL DO SHARED(X, Y, INDEX, N)
          DO I=1,N
          DO I=1,N
!$OMP ATOMIC
!$OMP ATOMIC
              X(INDEX(I)) = X(INDEX(I)) + WORK1(I)
              X(INDEX(I)) = X(INDEX(I)) + WORK1(I)
            Y(I) = Y(I) + WORK2(I)
            Y(I) = Y(I) + WORK2(I)
          ENDDO
          ENDDO
      END SUBROUTINE SUBA16
      END SUBROUTINE SUBA16
      PROGRAM A16
      PROGRAM A16
        REAL X(1000), Y(10000)
        REAL X(1000), Y(10000)
        INTEGER INDEX(10000)
        INTEGER INDEX(10000)
        INTEGER I
        INTEGER I
        DO I=1,10000
        DO I=1,10000
          INDEX(I) = MOD(I, 1000) + 1
          INDEX(I) = MOD(I, 1000) + 1
          Y(I) = 0.0
          Y(I) = 0.0
        ENDDO
        ENDDO
        DO I = 1,1000
        DO I = 1,1000
          X(I) = 0.0
          X(I) = 0.0
        ENDDO
        ENDDO
        CALL SUBA16(X, Y, INDEX, 10000)
        CALL SUBA16(X, Y, INDEX, 10000)
        DO I = 1,10
        DO I = 1,10
          PRINT *, "X(", I, ") = ", X(I), ", Y(", I, ") = ", Y(I)
          PRINT *, "X(", I, ") = ", X(I), ", Y(", I, ") = ", Y(I)
        ENDDO
        ENDDO
      END PROGRAM A16
      END PROGRAM A16
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.