3 ! Test shift intrinsics when the SHIFT argument equals BIT_SIZE(arg1).
7 ! Test compile-time simplifications
8 if (ishft (-1, 32) /= 0) stop 1 ! 0 -> simplify_shift OK
9 if (ishft (-1,-32) /= 0) stop 2 ! 0 -> simplify_shift OK
10 if (shiftl (-1, 32) /= 0) stop 3 ! 0 -> simplify_shift OK
11 if (shiftr (-1, 32) /= 0) stop 4 ! 0 -> simplify_shift OK
12 if (shifta (-1, 32) /= -1) stop 5 ! -1 -> simplify_shift OK
13 if (rshift (-1, 32) /= -1) stop 6 ! -1 -> simplify_shift OK
14 if (lshift (-1, 32) /= 0) stop 7 ! 0 -> simplify_shift OK
19 integer(4) :: i
, j
, k
, n
20 integer, parameter :: bb
= bit_size (n
)
21 ! Test code generated by gfc_conv_intrinsic_ishft
22 i
= ishft (n
, bb
) ! Logical (left) shift (Fortran 2008)
23 j
= ishft (n
,-bb
) ! Logical (right) shift (Fortran 2008)
26 ! Test code generated by gfc_conv_intrinsic_shift:
27 i
= shiftl (n
, bb
) ! Logical left shift (Fortran 2008)
28 j
= shiftr (n
, bb
) ! Logical right shift (Fortran 2008)
29 k
= shifta (n
, bb
) ! Arithmetic right shift (Fortran 2008)
33 i
= lshift (n
, bb
) ! Logical left shift (GNU extension)
34 j
= rshift (n
, bb
) ! Arithmetic right shift (GNU extension)
38 if (shifta (n
, i
) /= -1) stop 18
39 if (rshift (n
, i
) /= -1) stop 19