2 ! { dg-require-effective-target fortran_large_int }
3 ! Program to test the eoshift intrinsic for kind=16_k integers
5 program intrinsic_eoshift
6 integer, parameter :: k
=16
7 integer(kind
=k
), dimension(3_k
, 3_k
) :: a
8 integer(kind
=k
), dimension(3_k
, 3_k
, 2_k
) :: b
9 integer(kind
=k
), dimension(3_k
) :: bo
, sh
11 ! Scalar shift and scalar bound.
12 a
= reshape ((/1_k
, 2_k
, 3_k
, 4_k
, 5_k
, 6_k
, 7_k
, 8_k
, 9_k
/), (/3_k
, 3_k
/))
13 a
= eoshift (a
, 1_k
, 99_k
, 1_k
)
14 if (any (a
.ne
. reshape ((/2_k
, 3_k
, 99_k
, 5_k
, 6_k
, 99_k
, 8_k
, 9_k
, 99_k
/), (/3_k
, 3_k
/)))) &
17 a
= reshape ((/1_k
, 2_k
, 3_k
, 4_k
, 5_k
, 6_k
, 7_k
, 8_k
, 9_k
/), (/3_k
, 3_k
/))
18 a
= eoshift (a
, 9999_k
, 99_k
, 1_k
)
19 if (any (a
.ne
. 99_k
)) call abort
21 a
= reshape ((/1_k
, 2_k
, 3_k
, 4_k
, 5_k
, 6_k
, 7_k
, 8_k
, 9_k
/), (/3_k
, 3_k
/))
22 a
= eoshift (a
, -2_k
, dim
= 2_k
)
23 if (any (a
.ne
. reshape ((/0_k
, 0_k
, 0_k
, 0_k
, 0_k
, 0_k
, 1_k
, 2_k
, 3_k
/), (/3_k
, 3_k
/)))) &
26 a
= reshape ((/1_k
, 2_k
, 3_k
, 4_k
, 5_k
, 6_k
, 7_k
, 8_k
, 9_k
/), (/3_k
, 3_k
/))
27 a
= eoshift (a
, -9999_k
, 99_k
, 1_k
)
28 if (any (a
.ne
. 99_k
)) call abort
30 ! Array shift and scalar bound.
31 a
= reshape ((/1_k
, 2_k
, 3_k
, 4_k
, 5_k
, 6_k
, 7_k
, 8_k
, 9_k
/), (/3_k
, 3_k
/))
32 a
= eoshift (a
, (/1_k
, 0_k
, -1_k
/), 99_k
, 1_k
)
33 if (any (a
.ne
. reshape ((/2_k
, 3_k
, 99_k
, 4_k
, 5_k
, 6_k
, 99_k
, 7_k
, 8_k
/), (/3_k
, 3_k
/)))) &
36 a
= reshape ((/1_k
, 2_k
, 3_k
, 4_k
, 5_k
, 6_k
, 7_k
, 8_k
, 9_k
/), (/3_k
, 3_k
/))
37 a
= eoshift (a
, (/9999_k
, 0_k
, -9999_k
/), 99_k
, 1_k
)
38 if (any (a
.ne
. reshape ((/99_k
, 99_k
, 99_k
, 4_k
, 5_k
, 6_k
, 99_k
, 99_k
, 99_k
/), (/3_k
, 3_k
/)))) &
41 a
= reshape ((/1_k
, 2_k
, 3_k
, 4_k
, 5_k
, 6_k
, 7_k
, 8_k
, 9_k
/), (/3_k
, 3_k
/))
42 a
= eoshift (a
, (/2_k
, -2_k
, 0_k
/), dim
= 2_k
)
43 if (any (a
.ne
. reshape ((/7_k
, 0_k
, 3_k
, 0_k
, 0_k
, 6_k
, 0_k
, 2_k
, 9_k
/), (/3_k
, 3_k
/)))) &
46 ! Scalar shift and array bound.
47 a
= reshape ((/1_k
, 2_k
, 3_k
, 4_k
, 5_k
, 6_k
, 7_k
, 8_k
, 9_k
/), (/3_k
, 3_k
/))
48 a
= eoshift (a
, 1_k
, (/99_k
, -1_k
, 42_k
/), 1_k
)
49 if (any (a
.ne
. reshape ((/2_k
, 3_k
, 99_k
, 5_k
, 6_k
, -1_k
, 8_k
, 9_k
, 42_k
/), (/3_k
, 3_k
/)))) &
52 a
= reshape ((/1_k
, 2_k
, 3_k
, 4_k
, 5_k
, 6_k
, 7_k
, 8_k
, 9_k
/), (/3_k
, 3_k
/))
53 a
= eoshift (a
, 9999_k
, (/99_k
, -1_k
, 42_k
/), 1_k
)
54 if (any (a
.ne
. reshape ((/99_k
, 99_k
, 99_k
, -1_k
, -1_k
, -1_k
, 42_k
, 42_k
, 42_k
/), &
55 (/3_k
, 3_k
/)))) call abort
57 a
= reshape ((/1_k
, 2_k
, 3_k
, 4_k
, 5_k
, 6_k
, 7_k
, 8_k
, 9_k
/), (/3_k
, 3_k
/))
58 a
= eoshift (a
, -9999_k
, (/99_k
, -1_k
, 42_k
/), 1_k
)
59 if (any (a
.ne
. reshape ((/99_k
, 99_k
, 99_k
, -1_k
, -1_k
, -1_k
, 42_k
, 42_k
, 42_k
/), &
60 (/3_k
, 3_k
/)))) call abort
62 a
= reshape ((/1_k
, 2_k
, 3_k
, 4_k
, 5_k
, 6_k
, 7_k
, 8_k
, 9_k
/), (/3_k
, 3_k
/))
63 a
= eoshift (a
, -2_k
, (/99_k
, -1_k
, 42_k
/), 2_k
)
64 if (any (a
.ne
. reshape ((/99_k
, -1_k
, 42_k
, 99_k
, -1_k
, 42_k
, 1_k
, 2_k
, 3_k
/), (/3_k
, 3_k
/)))) &
67 a
= reshape ((/1_k
, 2_k
, 3_k
, 4_k
, 5_k
, 6_k
, 7_k
, 8_k
, 9_k
/), (/3_k
, 3_k
/))
68 bo
= (/99_k
, -1_k
, 42_k
/)
69 a
= eoshift (a
, -2_k
, bo
, 2_k
)
70 if (any (a
.ne
. reshape ((/99_k
, -1_k
, 42_k
, 99_k
, -1_k
, 42_k
, 1_k
, 2_k
, 3_k
/), (/3_k
, 3_k
/)))) &
73 ! Array shift and array bound.
74 a
= reshape ((/1_k
, 2_k
, 3_k
, 4_k
, 5_k
, 6_k
, 7_k
, 8_k
, 9_k
/), (/3_k
, 3_k
/))
75 a
= eoshift (a
, (/1_k
, 0_k
, -1_k
/), (/99_k
, -1_k
, 42_k
/), 1_k
)
76 if (any (a
.ne
. reshape ((/2_k
, 3_k
, 99_k
, 4_k
, 5_k
, 6_k
, 42_k
, 7_k
, 8_k
/), (/3_k
, 3_k
/)))) &
79 a
= reshape ((/1_k
, 2_k
, 3_k
, 4_k
, 5_k
, 6_k
, 7_k
, 8_k
, 9_k
/), (/3_k
, 3_k
/))
80 a
= eoshift (a
, (/2_k
, -2_k
, 0_k
/), (/99_k
, -1_k
, 42_k
/), 2_k
)
81 if (any (a
.ne
. reshape ((/7_k
, -1_k
, 3_k
, 99_k
, -1_k
, 6_k
, 99_k
, 2_k
, 9_k
/), (/3_k
, 3_k
/)))) &
84 a
= reshape ((/1_k
, 2_k
, 3_k
, 4_k
, 5_k
, 6_k
, 7_k
, 8_k
, 9_k
/), (/3_k
, 3_k
/))
85 sh
= (/ 3_k
, -1_k
, -3_k
/)
86 bo
= (/-999_k
, -99_k
, -9_k
/)
87 a
= eoshift(a
, shift
=sh
, boundary
=bo
)
88 if (any (a
.ne
. reshape ((/ -999_k
, -999_k
, -999_k
, -99_k
, 4_k
, 5_k
, -9_k
, -9_k
, -9_k
/), &
89 shape(a
)))) call abort
91 a
= reshape ((/1_k
, 2_k
, 3_k
, 4_k
, 5_k
, 6_k
, 7_k
, 8_k
, 9_k
/), (/3_k
, 3_k
/))
92 a
= eoshift (a
, (/9999_k
, -9999_k
, 0_k
/), (/99_k
, -1_k
, 42_k
/), 2_k
)
93 if (any (a
.ne
. reshape ((/99_k
, -1_k
, 3_k
, 99_k
, -1_k
, 6_k
, 99_k
, -1_k
, 9_k
/), (/3_k
, 3_k
/)))) &
96 ! Test arrays > rank 2
97 b(:, :, 1_k
) = reshape ((/1_k
, 2_k
, 3_k
, 4_k
, 5_k
, 6_k
, 7_k
, 8_k
, 9_k
/), (/3_k
, 3_k
/))
98 b(:, :, 2_k
) = 10_k
+ reshape ((/1_k
, 2_k
, 3_k
, 4_k
, 5_k
, 6_k
, 7_k
, 8_k
, 9_k
/), (/3_k
, 3_k
/))
99 b
= eoshift (b
, 1_k
, 99_k
, 1_k
)
100 if (any (b(:, :, 1_k
) .ne
. reshape ((/2_k
, 3_k
, 99_k
, 5_k
, 6_k
, 99_k
, 8_k
, 9_k
, 99_k
/), (/3_k
, 3_k
/)))) &
102 if (any (b(:, :, 2_k
) .ne
. reshape ((/12_k
, 13_k
, 99_k
, 15_k
, 16_k
, 99_k
, 18_k
, 19_k
, 99_k
/), (/3_k
, 3_k
/)))) &
105 ! TODO: Test array sections