1 |
302 |
jeremybenn |
! { dg-do run }
|
2 |
|
|
! { dg-require-effective-target fortran_large_int }
|
3 |
|
|
! Program to test the cshift intrinsic for kind=16 integers
|
4 |
|
|
program intrinsic_cshift
|
5 |
|
|
integer, parameter :: k=16
|
6 |
|
|
integer(kind=k), dimension(3_k, 3_k) :: a
|
7 |
|
|
integer(kind=k), dimension(3_k, 3_k, 2_k) :: b
|
8 |
|
|
|
9 |
|
|
! Scalar shift
|
10 |
|
|
a = reshape ((/1_k, 2_k, 3_k, 4_k, 5_k, 6_k, 7_k, 8_k, 9_k/), (/3_k, 3_k/))
|
11 |
|
|
a = cshift (a, 1_k, 1_k)
|
12 |
|
|
if (any (a .ne. reshape ((/2_k, 3_k, 1_k, 5_k, 6_k, 4_k, 8_k, 9_k, 7_k/), (/3_k, 3_k/)))) &
|
13 |
|
|
call abort
|
14 |
|
|
|
15 |
|
|
a = reshape ((/1_k, 2_k, 3_k, 4_k, 5_k, 6_k, 7_k, 8_k, 9_k/), (/3_k, 3_k/))
|
16 |
|
|
a = cshift (a, -2_k, dim = 2_k)
|
17 |
|
|
if (any (a .ne. reshape ((/4_k, 5_k, 6_k, 7_k, 8_k, 9_k, 1_k, 2_k, 3_k/), (/3_k, 3_k/)))) &
|
18 |
|
|
call abort
|
19 |
|
|
|
20 |
|
|
! Array shift
|
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 = cshift (a, (/1_k, 0_k, -1_k/))
|
23 |
|
|
if (any (a .ne. reshape ((/2_k, 3_k, 1_k, 4_k, 5_k, 6_k, 9_k, 7_k, 8_k/), (/3_k, 3_k/)))) &
|
24 |
|
|
call abort
|
25 |
|
|
|
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 = cshift (a, (/2_k, -2_k, 0_k/), dim = 2_k)
|
28 |
|
|
if (any (a .ne. reshape ((/7_k, 5_k, 3_k, 1_k, 8_k, 6_k, 4_k, 2_k, 9_k/), (/3_k, 3_k/)))) &
|
29 |
|
|
call abort
|
30 |
|
|
|
31 |
|
|
! Test arrays > rank 2
|
32 |
|
|
b = reshape ((/1_k, 2_k, 3_k, 4_k, 5_k, 6_k, 7_k, 8_k, 9_k, 11_k, 12_k, 13_k, 14_k, 15_k, 16_k, 17_k,&
|
33 |
|
|
18_k, 19_k/), (/3_k, 3_k, 2_k/))
|
34 |
|
|
b = cshift (b, 1_k)
|
35 |
|
|
if (any (b .ne. reshape ((/2_k, 3_k, 1_k, 5_k, 6_k, 4_k, 8_k, 9_k, 7_k, 12_k, 13_k, 11_k, 15_k,&
|
36 |
|
|
16_k, 14_k, 18_k, 19_k, 17_k/), (/3_k, 3_k, 2_k/)))) &
|
37 |
|
|
call abort
|
38 |
|
|
|
39 |
|
|
b = reshape ((/1_k, 2_k, 3_k, 4_k, 5_k, 6_k, 7_k, 8_k, 9_k, 11_k, 12_k, 13_k, 14_k, 15_k, 16_k, 17_k,&
|
40 |
|
|
18_k, 19_k/), (/3_k, 3_k, 2_k/))
|
41 |
|
|
b = cshift (b, reshape ((/1_k, 2_k, 3_k, 4_k, 5_k, 6_k, 7_k, 8_k, 9_k/), (/3_k, 3_k/)), 3_k)
|
42 |
|
|
if (any (b .ne. reshape ((/11_k, 2_k, 13_k, 4_k, 15_k, 6_k, 17_k, 8_k, 19_k, 1_k, 12_k, 3_k,&
|
43 |
|
|
14_k, 5_k, 16_k, 7_k, 18_k, 9_k/), (/3_k, 3_k, 2_k/)))) &
|
44 |
|
|
call abort
|
45 |
|
|
|
46 |
|
|
end program
|