aarch64: Add vector floating point extend pattern [PR113880, PR113869]
[official-gcc.git] / gcc / testsuite / gfortran.dg / inline_matmul_7.f90
blob34716bc5daa4a6ac996ead4dc82bee3e95355cb3
1 ! { dg-do run }
2 ! { dg-options "-ffrontend-optimize -fdump-tree-original" }
4 program main
5 implicit none
6 real(kind=8), ALLOCATABLE :: a(:,:), b(:,:), v1(:), v2(:)
7 real(kind=8), dimension(3,3) :: v1res, v2res
8 integer :: n, i
10 data v1res/ 442.d0, -492.d0, 586.d0, &
11 -4834.d0, 5694.d0, -7066.d0, &
12 13042.d0, -15450.d0, 19306.d0 /
14 data v2res/ 5522.d0, -6310.d0, 7754.d0, &
15 -7794.d0, 8982.d0, -11034.d0, &
16 10490.d0, -12160.d0, 14954.d0 /
17 n = 3
19 ALLOCATE(a(N,N),b(N,N),v1(N), v2(N))
21 a = reshape([((-1)**i*(-i-5)*(i+3)+5,i=1,n**2)], shape(a))
22 b = reshape([((-1)**i*(-i-1)*(i-2),i=1,n**2)], shape(a))
24 DO i=1,N
25 v1 = MATMUL(a,b(:,i))
26 if (any(abs(v1-v1res(:,i)) > 1e-10)) STOP 1
28 v2 = MATMUL(a,b(i,:))
29 if (any(abs(v2-v2res(:,i)) > 1e-10)) STOP 2
31 ENDDO
33 END program main
34 ! { dg-final { scan-tree-dump-times "_gfortran_matmul" 0 "original" } }