blob: 9e731ed57be3d8f77012de9c790b791bcc83640b [file] [log] [blame]
! { dg-do run }
! { dg-options "-finline-matmul-limit=0" }
! Stress-test the matmul blocking code with sizes close to or
! equal to powers ot two.
program main
implicit none
integer, dimension(*), parameter :: nn = &
& [2,3,4,5, 7,8,9, 15,16,17, 31,32,33, 63,64,65, &
127 ,228,129, 255,256,257];
integer, parameter :: s = size(nn)
real, dimension(:,:),allocatable :: a, b, c
integer :: i1, i2, i3
integer :: nx, ny, count
real :: sm
sm = 0.0
do i1=1, s
nx = nn(i1)
do i2=1,s
ny = nn(i2)
do i3=1,s
count = nn(i3)
allocate (a(nx,ny), b(ny,count), c(nx,count))
call random_number(a)
call random_number(b)
c = matmul(a,b)
sm = sm + sum(c)
deallocate(a,b,c)
end do
end do
end do
end program main