re PR libgomp/66950 (FAIL: libgomp.fortran/examples-4/simd-7.f90 -O0 execution test)
2015-07-22 Maxim Blumenthal <maxim.blumenthal@intel.com> 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. From-SVN: r226080
This commit is contained in:
parent
19e1890350
commit
27c4ac7db7
@ -1,3 +1,18 @@
|
||||
2015-07-22 Maxim Blumenthal <maxim.blumenthal@intel.com>
|
||||
|
||||
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 <nathan@codesourcery.com>
|
||||
|
||||
* target.c (gomp_offload_image_to_device): Rename to ...
|
||||
|
@ -5,17 +5,27 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#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])
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user