OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc4/] [libgomp/] [testsuite/] [libgomp.fortran/] [collapse3.f90] - Diff between revs 273 and 519

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

Rev 273 Rev 519
! { dg-do run }
! { dg-do run }
program collapse3
program collapse3
  call test1
  call test1
  call test2 (2, 6, -2, 4, 13, 18)
  call test2 (2, 6, -2, 4, 13, 18)
  call test3 (2, 6, -2, 4, 13, 18, 1, 1, 1)
  call test3 (2, 6, -2, 4, 13, 18, 1, 1, 1)
  call test4
  call test4
  call test5 (2, 6, -2, 4, 13, 18)
  call test5 (2, 6, -2, 4, 13, 18)
  call test6 (2, 6, -2, 4, 13, 18, 1, 1, 1)
  call test6 (2, 6, -2, 4, 13, 18, 1, 1, 1)
contains
contains
  subroutine test1
  subroutine test1
    integer :: i, j, k, a(1:7, -3:5, 12:19), m
    integer :: i, j, k, a(1:7, -3:5, 12:19), m
    logical :: l
    logical :: l
    l = .false.
    l = .false.
    a(:, :, :) = 0
    a(:, :, :) = 0
    !$omp parallel do collapse (3) lastprivate (i, j, k, m) reduction (.or.:l)
    !$omp parallel do collapse (3) lastprivate (i, j, k, m) reduction (.or.:l)
      do i = 2, 6
      do i = 2, 6
        do j = -2, 4
        do j = -2, 4
          do k = 13, 18
          do k = 13, 18
            l = l.or.i.lt.2.or.i.gt.6.or.j.lt.-2.or.j.gt.4
            l = l.or.i.lt.2.or.i.gt.6.or.j.lt.-2.or.j.gt.4
            l = l.or.k.lt.13.or.k.gt.18
            l = l.or.k.lt.13.or.k.gt.18
            if (.not.l) a(i, j, k) = a(i, j, k) + 1
            if (.not.l) a(i, j, k) = a(i, j, k) + 1
            m = i * 100 + j * 10 + k
            m = i * 100 + j * 10 + k
          end do
          end do
        end do
        end do
      end do
      end do
    if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
    if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
    if (m.ne.(600+40+18)) call abort
    if (m.ne.(600+40+18)) call abort
    do i = 1, 7
    do i = 1, 7
      do j = -3, 5
      do j = -3, 5
        do k = 12, 19
        do k = 12, 19
          if (i.eq.1.or.i.eq.7.or.j.eq.-3.or.j.eq.5.or.k.eq.12.or.k.eq.19) then
          if (i.eq.1.or.i.eq.7.or.j.eq.-3.or.j.eq.5.or.k.eq.12.or.k.eq.19) then
            if (a(i, j, k).ne.0) print *, i, j, k
            if (a(i, j, k).ne.0) print *, i, j, k
          else
          else
            if (a(i, j, k).ne.1) print *, 'kk', i, j, k, a(i, j, k)
            if (a(i, j, k).ne.1) print *, 'kk', i, j, k, a(i, j, k)
          end if
          end if
        end do
        end do
      end do
      end do
    end do
    end do
  end subroutine test1
  end subroutine test1
  subroutine test2(v1, v2, v3, v4, v5, v6)
  subroutine test2(v1, v2, v3, v4, v5, v6)
    integer :: i, j, k, a(1:7, -3:5, 12:19), m
    integer :: i, j, k, a(1:7, -3:5, 12:19), m
    integer :: v1, v2, v3, v4, v5, v6
    integer :: v1, v2, v3, v4, v5, v6
    logical :: l
    logical :: l
    l = .false.
    l = .false.
    a(:, :, :) = 0
    a(:, :, :) = 0
    !$omp parallel do collapse (3) lastprivate (i, j, k, m) reduction (.or.:l)
    !$omp parallel do collapse (3) lastprivate (i, j, k, m) reduction (.or.:l)
      do i = v1, v2
      do i = v1, v2
        do j = v3, v4
        do j = v3, v4
          do k = v5, v6
          do k = v5, v6
            l = l.or.i.lt.2.or.i.gt.6.or.j.lt.-2.or.j.gt.4
            l = l.or.i.lt.2.or.i.gt.6.or.j.lt.-2.or.j.gt.4
            l = l.or.k.lt.13.or.k.gt.18
            l = l.or.k.lt.13.or.k.gt.18
            if (.not.l) a(i, j, k) = a(i, j, k) + 1
            if (.not.l) a(i, j, k) = a(i, j, k) + 1
            m = i * 100 + j * 10 + k
            m = i * 100 + j * 10 + k
          end do
          end do
        end do
        end do
      end do
      end do
    if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
    if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
    if (m.ne.(600+40+18)) call abort
    if (m.ne.(600+40+18)) call abort
    do i = 1, 7
    do i = 1, 7
      do j = -3, 5
      do j = -3, 5
        do k = 12, 19
        do k = 12, 19
          if (i.eq.1.or.i.eq.7.or.j.eq.-3.or.j.eq.5.or.k.eq.12.or.k.eq.19) then
          if (i.eq.1.or.i.eq.7.or.j.eq.-3.or.j.eq.5.or.k.eq.12.or.k.eq.19) then
            if (a(i, j, k).ne.0) print *, i, j, k
            if (a(i, j, k).ne.0) print *, i, j, k
          else
          else
            if (a(i, j, k).ne.1) print *, 'kk', i, j, k, a(i, j, k)
            if (a(i, j, k).ne.1) print *, 'kk', i, j, k, a(i, j, k)
          end if
          end if
        end do
        end do
      end do
      end do
    end do
    end do
  end subroutine test2
  end subroutine test2
  subroutine test3(v1, v2, v3, v4, v5, v6, v7, v8, v9)
  subroutine test3(v1, v2, v3, v4, v5, v6, v7, v8, v9)
    integer :: i, j, k, a(1:7, -3:5, 12:19), m
    integer :: i, j, k, a(1:7, -3:5, 12:19), m
    integer :: v1, v2, v3, v4, v5, v6, v7, v8, v9
    integer :: v1, v2, v3, v4, v5, v6, v7, v8, v9
    logical :: l
    logical :: l
    l = .false.
    l = .false.
    a(:, :, :) = 0
    a(:, :, :) = 0
    !$omp parallel do collapse (3) lastprivate (i, j, k, m) reduction (.or.:l)
    !$omp parallel do collapse (3) lastprivate (i, j, k, m) reduction (.or.:l)
      do i = v1, v2, v7
      do i = v1, v2, v7
        do j = v3, v4, v8
        do j = v3, v4, v8
          do k = v5, v6, v9
          do k = v5, v6, v9
            l = l.or.i.lt.2.or.i.gt.6.or.j.lt.-2.or.j.gt.4
            l = l.or.i.lt.2.or.i.gt.6.or.j.lt.-2.or.j.gt.4
            l = l.or.k.lt.13.or.k.gt.18
            l = l.or.k.lt.13.or.k.gt.18
            if (.not.l) a(i, j, k) = a(i, j, k) + 1
            if (.not.l) a(i, j, k) = a(i, j, k) + 1
            m = i * 100 + j * 10 + k
            m = i * 100 + j * 10 + k
          end do
          end do
        end do
        end do
      end do
      end do
    if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
    if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
    if (m.ne.(600+40+18)) call abort
    if (m.ne.(600+40+18)) call abort
    do i = 1, 7
    do i = 1, 7
      do j = -3, 5
      do j = -3, 5
        do k = 12, 19
        do k = 12, 19
          if (i.eq.1.or.i.eq.7.or.j.eq.-3.or.j.eq.5.or.k.eq.12.or.k.eq.19) then
          if (i.eq.1.or.i.eq.7.or.j.eq.-3.or.j.eq.5.or.k.eq.12.or.k.eq.19) then
            if (a(i, j, k).ne.0) print *, i, j, k
            if (a(i, j, k).ne.0) print *, i, j, k
          else
          else
            if (a(i, j, k).ne.1) print *, 'kk', i, j, k, a(i, j, k)
            if (a(i, j, k).ne.1) print *, 'kk', i, j, k, a(i, j, k)
          end if
          end if
        end do
        end do
      end do
      end do
    end do
    end do
  end subroutine test3
  end subroutine test3
  subroutine test4
  subroutine test4
    integer :: i, j, k, a(1:7, -3:5, 12:19), m
    integer :: i, j, k, a(1:7, -3:5, 12:19), m
    logical :: l
    logical :: l
    l = .false.
    l = .false.
    a(:, :, :) = 0
    a(:, :, :) = 0
    !$omp parallel do collapse (3) lastprivate (i, j, k, m) reduction (.or.:l) &
    !$omp parallel do collapse (3) lastprivate (i, j, k, m) reduction (.or.:l) &
    !$omp& schedule (dynamic, 5)
    !$omp& schedule (dynamic, 5)
      do i = 2, 6
      do i = 2, 6
        do j = -2, 4
        do j = -2, 4
          do k = 13, 18
          do k = 13, 18
            l = l.or.i.lt.2.or.i.gt.6.or.j.lt.-2.or.j.gt.4
            l = l.or.i.lt.2.or.i.gt.6.or.j.lt.-2.or.j.gt.4
            l = l.or.k.lt.13.or.k.gt.18
            l = l.or.k.lt.13.or.k.gt.18
            if (.not.l) a(i, j, k) = a(i, j, k) + 1
            if (.not.l) a(i, j, k) = a(i, j, k) + 1
            m = i * 100 + j * 10 + k
            m = i * 100 + j * 10 + k
          end do
          end do
        end do
        end do
      end do
      end do
    if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
    if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
    if (m.ne.(600+40+18)) call abort
    if (m.ne.(600+40+18)) call abort
    do i = 1, 7
    do i = 1, 7
      do j = -3, 5
      do j = -3, 5
        do k = 12, 19
        do k = 12, 19
          if (i.eq.1.or.i.eq.7.or.j.eq.-3.or.j.eq.5.or.k.eq.12.or.k.eq.19) then
          if (i.eq.1.or.i.eq.7.or.j.eq.-3.or.j.eq.5.or.k.eq.12.or.k.eq.19) then
            if (a(i, j, k).ne.0) print *, i, j, k
            if (a(i, j, k).ne.0) print *, i, j, k
          else
          else
            if (a(i, j, k).ne.1) print *, 'kk', i, j, k, a(i, j, k)
            if (a(i, j, k).ne.1) print *, 'kk', i, j, k, a(i, j, k)
          end if
          end if
        end do
        end do
      end do
      end do
    end do
    end do
  end subroutine test4
  end subroutine test4
  subroutine test5(v1, v2, v3, v4, v5, v6)
  subroutine test5(v1, v2, v3, v4, v5, v6)
    integer :: i, j, k, a(1:7, -3:5, 12:19), m
    integer :: i, j, k, a(1:7, -3:5, 12:19), m
    integer :: v1, v2, v3, v4, v5, v6
    integer :: v1, v2, v3, v4, v5, v6
    logical :: l
    logical :: l
    l = .false.
    l = .false.
    a(:, :, :) = 0
    a(:, :, :) = 0
    !$omp parallel do collapse (3) lastprivate (i, j, k, m) reduction (.or.:l) &
    !$omp parallel do collapse (3) lastprivate (i, j, k, m) reduction (.or.:l) &
    !$omp & schedule (guided)
    !$omp & schedule (guided)
      do i = v1, v2
      do i = v1, v2
        do j = v3, v4
        do j = v3, v4
          do k = v5, v6
          do k = v5, v6
            l = l.or.i.lt.2.or.i.gt.6.or.j.lt.-2.or.j.gt.4
            l = l.or.i.lt.2.or.i.gt.6.or.j.lt.-2.or.j.gt.4
            l = l.or.k.lt.13.or.k.gt.18
            l = l.or.k.lt.13.or.k.gt.18
            if (.not.l) a(i, j, k) = a(i, j, k) + 1
            if (.not.l) a(i, j, k) = a(i, j, k) + 1
            m = i * 100 + j * 10 + k
            m = i * 100 + j * 10 + k
          end do
          end do
        end do
        end do
      end do
      end do
    if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
    if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
    if (m.ne.(600+40+18)) call abort
    if (m.ne.(600+40+18)) call abort
    do i = 1, 7
    do i = 1, 7
      do j = -3, 5
      do j = -3, 5
        do k = 12, 19
        do k = 12, 19
          if (i.eq.1.or.i.eq.7.or.j.eq.-3.or.j.eq.5.or.k.eq.12.or.k.eq.19) then
          if (i.eq.1.or.i.eq.7.or.j.eq.-3.or.j.eq.5.or.k.eq.12.or.k.eq.19) then
            if (a(i, j, k).ne.0) print *, i, j, k
            if (a(i, j, k).ne.0) print *, i, j, k
          else
          else
            if (a(i, j, k).ne.1) print *, 'kk', i, j, k, a(i, j, k)
            if (a(i, j, k).ne.1) print *, 'kk', i, j, k, a(i, j, k)
          end if
          end if
        end do
        end do
      end do
      end do
    end do
    end do
  end subroutine test5
  end subroutine test5
  subroutine test6(v1, v2, v3, v4, v5, v6, v7, v8, v9)
  subroutine test6(v1, v2, v3, v4, v5, v6, v7, v8, v9)
    integer :: i, j, k, a(1:7, -3:5, 12:19), m
    integer :: i, j, k, a(1:7, -3:5, 12:19), m
    integer :: v1, v2, v3, v4, v5, v6, v7, v8, v9
    integer :: v1, v2, v3, v4, v5, v6, v7, v8, v9
    logical :: l
    logical :: l
    l = .false.
    l = .false.
    a(:, :, :) = 0
    a(:, :, :) = 0
    !$omp parallel do collapse (3) lastprivate (i, j, k, m) reduction (.or.:l) &
    !$omp parallel do collapse (3) lastprivate (i, j, k, m) reduction (.or.:l) &
    !$omp & schedule (dynamic)
    !$omp & schedule (dynamic)
      do i = v1, v2, v7
      do i = v1, v2, v7
        do j = v3, v4, v8
        do j = v3, v4, v8
          do k = v5, v6, v9
          do k = v5, v6, v9
            l = l.or.i.lt.2.or.i.gt.6.or.j.lt.-2.or.j.gt.4
            l = l.or.i.lt.2.or.i.gt.6.or.j.lt.-2.or.j.gt.4
            l = l.or.k.lt.13.or.k.gt.18
            l = l.or.k.lt.13.or.k.gt.18
            if (.not.l) a(i, j, k) = a(i, j, k) + 1
            if (.not.l) a(i, j, k) = a(i, j, k) + 1
            m = i * 100 + j * 10 + k
            m = i * 100 + j * 10 + k
          end do
          end do
        end do
        end do
      end do
      end do
    if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
    if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
    if (m.ne.(600+40+18)) call abort
    if (m.ne.(600+40+18)) call abort
    do i = 1, 7
    do i = 1, 7
      do j = -3, 5
      do j = -3, 5
        do k = 12, 19
        do k = 12, 19
          if (i.eq.1.or.i.eq.7.or.j.eq.-3.or.j.eq.5.or.k.eq.12.or.k.eq.19) then
          if (i.eq.1.or.i.eq.7.or.j.eq.-3.or.j.eq.5.or.k.eq.12.or.k.eq.19) then
            if (a(i, j, k).ne.0) print *, i, j, k
            if (a(i, j, k).ne.0) print *, i, j, k
          else
          else
            if (a(i, j, k).ne.1) print *, 'kk', i, j, k, a(i, j, k)
            if (a(i, j, k).ne.1) print *, 'kk', i, j, k, a(i, j, k)
          end if
          end if
        end do
        end do
      end do
      end do
    end do
    end do
  end subroutine test6
  end subroutine test6
end program collapse3
end program collapse3
 
 

powered by: WebSVN 2.1.0

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