Files
clang-p2996/flang/test/Semantics/lshift.f90
Kelvin Li 93196654f5 [flang] Add support for LSHIFT and RSHIFT intrinsics
The functionality of LSHIFT and RSHIFT intrinsics is the same as the
standard SHIFTL and SHIFTA intrinsics respectively. The patch is to
alias the two intrinsics to the standardized ones.

Differential Revision: https://reviews.llvm.org/D138839
2022-11-29 14:03:31 -05:00

51 lines
1.0 KiB
Fortran

! RUN: %flang_fc1 -fdebug-unparse %s 2>&1 | FileCheck %s
! Check that a call to LSHIFT is transformed to SHIFTL.
subroutine test_default_integer()
integer :: i, j, k
k = lshift(i, j)
!CHECK: k=shiftl(i,j)
k = lshift(16, 2)
!CHECK: k=64_4
end
subroutine test_integer1()
integer(1) :: i, j, k
k = lshift(i, j)
!CHECK: k=shiftl(i,int(j,kind=4))
print *, lshift(8_1, 2)
!CHECK: PRINT *, 32_1
end
subroutine test_integer2()
integer(2) :: i, j, k
k = lshift(i, j)
!CHECK: k=shiftl(i,int(j,kind=4))
print *, lshift(8_2, 2)
!CHECK: PRINT *, 32_2
end
subroutine test_integer4()
integer(4) :: i, j, k
k = lshift(i, j)
!CHECK: k=shiftl(i,j)
print *, lshift(8_4, 2)
!CHECK: PRINT *, 32_4
end
subroutine test_integer8()
integer(8) :: i, j, k
k = lshift(i, j)
!CHECK: k=shiftl(i,int(j,kind=4))
print *, lshift(-16_8, 2)
!CHECK: PRINT *, -64_8
end
subroutine test_integer16()
integer(16) :: i, j, k
k = lshift(i, j)
!CHECK: k=shiftl(i,int(j,kind=4))
print *, lshift(8_16, 2)
!CHECK: PRINT *, 32_16
end