aarch64: Add vector floating point extend pattern [PR113880, PR113869]
[official-gcc.git] / gcc / testsuite / gfortran.dg / char_cshift_2.f90
blobb768b755cc9949184b15ce7f0bb8fbb968565783
1 ! Test cshift1 for character arrays.
2 ! { dg-do run }
3 program main
4 implicit none
5 integer, parameter :: n1 = 2, n2 = 3, n3 = 4, slen = 3
6 character (len = slen), dimension (n1, n2, n3) :: a
7 integer (kind = 1), dimension (2, 4) :: shift1
8 integer (kind = 2), dimension (2, 4) :: shift2
9 integer (kind = 4), dimension (2, 4) :: shift3
10 integer (kind = 8), dimension (2, 4) :: shift4
11 integer :: i1, i2, i3
13 do i3 = 1, n3
14 do i2 = 1, n2
15 do i1 = 1, n1
16 a (i1, i2, i3) = 'ab'(i1:i1) // 'cde'(i2:i2) // 'fghi'(i3:i3)
17 end do
18 end do
19 end do
21 shift1 (1, :) = (/ 4, 11, 19, 20 /)
22 shift1 (2, :) = (/ 55, 5, 1, 2 /)
23 shift2 = shift1
24 shift3 = shift1
25 shift4 = shift1
27 call test (cshift (a, shift1, 2))
28 call test (cshift (a, shift2, 2))
29 call test (cshift (a, shift3, 2))
30 call test (cshift (a, shift4, 2))
31 contains
32 subroutine test (b)
33 character (len = slen), dimension (n1, n2, n3) :: b
34 integer :: i2p
36 do i3 = 1, n3
37 do i2 = 1, n2
38 do i1 = 1, n1
39 i2p = mod (shift1 (i1, i3) + i2 - 1, n2) + 1
40 if (b (i1, i2, i3) .ne. a (i1, i2p, i3)) STOP 1
41 end do
42 end do
43 end do
44 end subroutine test
45 end program main