! { 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