blob: ac532f81000b3cd234ee9a134cee1ecebd4e781a [file] [log] [blame]
! { dg-do compile }
! { dg-options "-fopenmp" }
module m
implicit none
integer :: i
interface
integer function bar (x, y, z)
integer :: x, y
integer, value :: z
!$omp declare simd linear (x : ref, step (1)) linear (y : step (2), uval)
end
integer function baz (x, y, z)
integer :: x
integer, value :: y, z
!$omp declare simd linear (x : step (1), uval)
end
integer function qux (x, ref)
integer :: x
integer, value :: ref
!$omp declare simd linear (ref (x) : ref) uniform (ref)
end
integer function corge (x, ref)
integer :: x
integer, value :: ref
!$omp declare simd linear (x : ref, step (ref)) uniform (ref)
end
integer function grault (x)
integer :: x
!$omp declare simd linear (x : ref)
end
integer function waldo (x)
integer :: x
!$omp declare simd linear (x : uval)
end
end interface
contains
integer function step (x)
integer, value :: x
step = x
end
subroutine foo (x, y)
integer :: x, y
!$omp simd linear (x: step (y + 1))
do i = 0, 9
x = x + y + 1
end do
!$omp simd linear (x: val, step (y + 1))
do i = 0, 9
x = x + y + 1
end do
!$omp parallel do linear (x: step (y + 1))
do i = 0, 9
x = x + y + 1
end do
!$omp parallel do linear (x: step (y + 1), val)
do i = 0, 9
x = x + y + 1
end do
!$omp parallel do simd linear (x: step (y + 1))
do i = 0, 9
x = x + y + 1
end do
!$omp parallel do simd linear (x: val, step (y + 1))
do i = 0, 9
x = x + y + 1
end do
!$omp parallel do simd linear (x: step (1) + 0)
do i = 0, 9
x = x + step (1) + 0
end do
block
integer, parameter :: ref = 1, uval = 2
!$omp parallel do simd linear (x: ref + 0)
do i = 0, 9
x = x + ref + 0
end do
!$omp parallel do simd linear (x: uval * 1)
do i = 0, 9
x = x + uval
end do
end block
end
end