From 4bb2d1061a9118b2e0954006fd0160afb3c5fdfb Mon Sep 17 00:00:00 2001 From: iverbin Date: Wed, 22 Jul 2015 17:19:31 +0000 Subject: [PATCH] 2015-07-22 Maxim Blumenthal PR libgomp/66950 * testsuite/libgomp.c/examples-4/simd-7.c (N): Change to 30 from 45. (fib_ref): New function. (fib): Correct corner cases in the recursion. (main): Replace the non-simd loop with fib_ref call. * testsuite/libgomp.fortran/examples-4/simd-7.f90: (fib_ref): New subroutine. (fibonacci): Lower the parameter N to 30. Correct accordingly check for the last array element value. Replace the non-simd loop with fib_ref call. Remove redundant b_ref array. Remove the comparison of the last array element with according Fibonacci sequence element. (fib): Correct corner cases in the recursion. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@226080 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgomp/ChangeLog | 15 +++++++++++ libgomp/testsuite/libgomp.c/examples-4/simd-7.c | 25 ++++++++++++------ .../libgomp.fortran/examples-4/simd-7.f90 | 30 ++++++++++++---------- 3 files changed, 49 insertions(+), 21 deletions(-) diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 12c9e94..d8d37cf 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,18 @@ +2015-07-22 Maxim Blumenthal + + PR libgomp/66950 + * testsuite/libgomp.c/examples-4/simd-7.c (N): Change to 30 from 45. + (fib_ref): New function. + (fib): Correct corner cases in the recursion. + (main): Replace the non-simd loop with fib_ref call. + * testsuite/libgomp.fortran/examples-4/simd-7.f90: (fib_ref): New + subroutine. + (fibonacci): Lower the parameter N to 30. Correct accordingly check + for the last array element value. Replace the non-simd loop with + fib_ref call. Remove redundant b_ref array. Remove the comparison + of the last array element with according Fibonacci sequence element. + (fib): Correct corner cases in the recursion. + 2015-07-21 Nathan Sidwell * target.c (gomp_offload_image_to_device): Rename to ... diff --git a/libgomp/testsuite/libgomp.c/examples-4/simd-7.c b/libgomp/testsuite/libgomp.c/examples-4/simd-7.c index 4aab962..732cd91 100644 --- a/libgomp/testsuite/libgomp.c/examples-4/simd-7.c +++ b/libgomp/testsuite/libgomp.c/examples-4/simd-7.c @@ -5,17 +5,27 @@ #include #include -#define N 45 +#define N 30 int a[N], a_ref[N], b[N]; #pragma omp declare simd inbranch int fib( int n ) { - if (n <= 2) - return n; - else { - return fib(n-1) + fib(n-2); - } + if (n <= 1) + return n; + else + return fib(n-1) + fib(n-2); +} + +void fib_ref() +{ + int i; + + a_ref[0] = 0; + a_ref[1] = 1; + + for (i=2; i < N; i++) + a_ref[i] = a_ref[i-2] + a_ref[i-1]; } int main(void) @@ -30,8 +40,7 @@ int main(void) for (i=0; i < N; i++) a[i] = fib(b[i]); - for (i=0; i < N; i++) - a_ref[i] = fib(b[i]); + fib_ref (); for (i=0; i < N; i++) if (a[i] != a_ref[i]) diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/simd-7.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/simd-7.f90 index a61bb03..7560657 100644 --- a/libgomp/testsuite/libgomp.fortran/examples-4/simd-7.f90 +++ b/libgomp/testsuite/libgomp.fortran/examples-4/simd-7.f90 @@ -4,9 +4,9 @@ program fibonacci implicit none - integer,parameter :: N=45 + integer,parameter :: N=30 integer :: a(0:N-1), b(0:N-1) - integer :: a_ref(0:N-1), b_ref(0:N-1) + integer :: a_ref(0:N-1) integer :: i integer, external :: fib @@ -15,35 +15,39 @@ program fibonacci b(i) = i end do - do i = 0,N-1 - b_ref(i) = i - end do - !$omp simd do i=0,N-1 a(i) = fib(b(i)) end do - do i=0,N-1 - a_ref(i) = fib(b_ref(i)) - end do + call fib_ref (a_ref, N) do i = 0, N-1 if (a(i) .ne. a_ref(i)) call abort () end do - if (a(44) .ne. 1134903170) call abort() - end program recursive function fib(n) result(r) !$omp declare simd(fib) inbranch integer :: n, r - if (n <= 2) then - r = n + if (n <= 1) then + r = n else r = fib(n-1) + fib(n-2) endif end function fib + +subroutine fib_ref(a_ref, n) + integer :: n, a_ref(0:n-1) + + a_ref(0) = 0 + a_ref(1) = 1 + + do i = 2, n-1 + a_ref(i) = a_ref(i-1) + a_ref(i-2) + end do + +end subroutine fib_ref -- 2.7.4