xref: /llvm-project/flang/test/Semantics/rshift.f90 (revision 93196654f526026f9f751784454cb72f829e39cb)
1*93196654SKelvin Li! RUN: %flang_fc1 -fdebug-unparse %s 2>&1 | FileCheck %s
2*93196654SKelvin Li! Check that a call to RSHIFT is transformed to SHIFTA.
3*93196654SKelvin Li
4*93196654SKelvin Lisubroutine test_default_integer()
5*93196654SKelvin Li  integer :: i, j, k
6*93196654SKelvin Li  k = rshift(i, j)
7*93196654SKelvin Li!CHECK: k=shifta(i,j)
8*93196654SKelvin Li  k = rshift(16, 2)
9*93196654SKelvin Li!CHECK: k=4_4
10*93196654SKelvin Liend
11*93196654SKelvin Li
12*93196654SKelvin Lisubroutine test_integer1()
13*93196654SKelvin Li  integer(1) :: i, j, k
14*93196654SKelvin Li  k = rshift(i, j)
15*93196654SKelvin Li!CHECK: k=shifta(i,int(j,kind=4))
16*93196654SKelvin Li  print *, rshift(8_1, 2)
17*93196654SKelvin Li!CHECK: PRINT *, 2_1
18*93196654SKelvin Liend
19*93196654SKelvin Li
20*93196654SKelvin Lisubroutine test_integer2()
21*93196654SKelvin Li  integer(2) :: i, j, k
22*93196654SKelvin Li  k = rshift(i, j)
23*93196654SKelvin Li!CHECK: k=shifta(i,int(j,kind=4))
24*93196654SKelvin Li  print *, rshift(8_2, 2)
25*93196654SKelvin Li!CHECK: PRINT *, 2_2
26*93196654SKelvin Liend
27*93196654SKelvin Li
28*93196654SKelvin Lisubroutine test_integer4()
29*93196654SKelvin Li  integer(4) :: i, j, k
30*93196654SKelvin Li  k = rshift(i, j)
31*93196654SKelvin Li!CHECK: k=shifta(i,j)
32*93196654SKelvin Li  print *, rshift(8_4, 2)
33*93196654SKelvin Li!CHECK: PRINT *, 2_4
34*93196654SKelvin Liend
35*93196654SKelvin Li
36*93196654SKelvin Lisubroutine test_integer8()
37*93196654SKelvin Li  integer(8) :: i, j, k
38*93196654SKelvin Li  k = rshift(i, j)
39*93196654SKelvin Li!CHECK: k=shifta(i,int(j,kind=4))
40*93196654SKelvin Li  print *, rshift(-16_8, 2)
41*93196654SKelvin Li!CHECK: PRINT *, -4_8
42*93196654SKelvin Liend
43*93196654SKelvin Li
44*93196654SKelvin Lisubroutine test_integer16()
45*93196654SKelvin Li  integer(16) :: i, j, k
46*93196654SKelvin Li  k = rshift(i, j)
47*93196654SKelvin Li!CHECK: k=shifta(i,int(j,kind=4))
48*93196654SKelvin Li  print *, rshift(8_16, 2)
49*93196654SKelvin Li!CHECK: PRINT *, 2_16
50*93196654SKelvin Liend
51