summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/shiftalr_1.F90
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/gfortran.dg/shiftalr_1.F90
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'gcc/testsuite/gfortran.dg/shiftalr_1.F90')
-rw-r--r--gcc/testsuite/gfortran.dg/shiftalr_1.F90162
1 files changed, 162 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/shiftalr_1.F90 b/gcc/testsuite/gfortran.dg/shiftalr_1.F90
new file mode 100644
index 000000000..9f2707bd9
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/shiftalr_1.F90
@@ -0,0 +1,162 @@
+! Test the SHIFTA, SHIFTL and SHIFTR intrinsics.
+!
+! { dg-do run }
+! { dg-options "-ffree-line-length-none" }
+
+ interface run_shifta
+ procedure shifta_1
+ procedure shifta_2
+ procedure shifta_4
+ procedure shifta_8
+ end interface
+ interface run_shiftl
+ procedure shiftl_1
+ procedure shiftl_2
+ procedure shiftl_4
+ procedure shiftl_8
+ end interface
+ interface run_shiftr
+ procedure shiftr_1
+ procedure shiftr_2
+ procedure shiftr_4
+ procedure shiftr_8
+ end interface
+ interface run_ishft
+ procedure ishft_1
+ procedure ishft_2
+ procedure ishft_4
+ procedure ishft_8
+ end interface
+
+#define CHECK(I,SHIFT,RESA,RESL,RESR) \
+ if (shifta(I,SHIFT) /= RESA) call abort ; \
+ if (shiftr(I,SHIFT) /= RESR) call abort ; \
+ if (shiftl(I,SHIFT) /= RESL) call abort ; \
+ if (run_shifta(I,SHIFT) /= RESA) call abort ; \
+ if (run_shiftr(I,SHIFT) /= RESR) call abort ; \
+ if (run_shiftl(I,SHIFT) /= RESL) call abort ; \
+ if (ishft(I,SHIFT) /= RESL) call abort ; \
+ if (ishft(I,-SHIFT) /= RESR) call abort ; \
+ if (run_ishft(I,SHIFT) /= RESL) call abort ; \
+ if (run_ishft(I,-SHIFT) /= RESR) call abort
+
+ CHECK(0_1,0,0_1,0_1,0_1)
+ CHECK(11_1,0,11_1,11_1,11_1)
+ CHECK(-11_1,0,-11_1,-11_1,-11_1)
+ CHECK(0_1,1,0_1,0_1,0_1)
+ CHECK(11_1,1,5_1,22_1,5_1)
+ CHECK(11_1,2,2_1,44_1,2_1)
+ CHECK(-11_1,1,-6_1,-22_1,huge(0_1)-5_1)
+
+ CHECK(0_2,0,0_2,0_2,0_2)
+ CHECK(11_2,0,11_2,11_2,11_2)
+ CHECK(-11_2,0,-11_2,-11_2,-11_2)
+ CHECK(0_2,1,0_2,0_2,0_2)
+ CHECK(11_2,1,5_2,22_2,5_2)
+ CHECK(11_2,2,2_2,44_2,2_2)
+ CHECK(-11_2,1,-6_2,-22_2,huge(0_2)-5_2)
+
+ CHECK(0_4,0,0_4,0_4,0_4)
+ CHECK(11_4,0,11_4,11_4,11_4)
+ CHECK(-11_4,0,-11_4,-11_4,-11_4)
+ CHECK(0_4,1,0_4,0_4,0_4)
+ CHECK(11_4,1,5_4,22_4,5_4)
+ CHECK(11_4,2,2_4,44_4,2_4)
+ CHECK(-11_4,1,-6_4,-22_4,huge(0_4)-5_4)
+
+ CHECK(0_8,0,0_8,0_8,0_8)
+ CHECK(11_8,0,11_8,11_8,11_8)
+ CHECK(-11_8,0,-11_8,-11_8,-11_8)
+ CHECK(0_8,1,0_8,0_8,0_8)
+ CHECK(11_8,1,5_8,22_8,5_8)
+ CHECK(11_8,2,2_8,44_8,2_8)
+ CHECK(-11_8,1,-6_8,-22_8,huge(0_8)-5_8)
+
+contains
+
+ function shifta_1 (i, shift) result(res)
+ integer(kind=1) :: i, res
+ integer :: shift
+ res = shifta(i,shift)
+ end function
+ function shiftl_1 (i, shift) result(res)
+ integer(kind=1) :: i, res
+ integer :: shift
+ res = shiftl(i,shift)
+ end function
+ function shiftr_1 (i, shift) result(res)
+ integer(kind=1) :: i, res
+ integer :: shift
+ res = shiftr(i,shift)
+ end function
+
+ function shifta_2 (i, shift) result(res)
+ integer(kind=2) :: i, res
+ integer :: shift
+ res = shifta(i,shift)
+ end function
+ function shiftl_2 (i, shift) result(res)
+ integer(kind=2) :: i, res
+ integer :: shift
+ res = shiftl(i,shift)
+ end function
+ function shiftr_2 (i, shift) result(res)
+ integer(kind=2) :: i, res
+ integer :: shift
+ res = shiftr(i,shift)
+ end function
+
+ function shifta_4 (i, shift) result(res)
+ integer(kind=4) :: i, res
+ integer :: shift
+ res = shifta(i,shift)
+ end function
+ function shiftl_4 (i, shift) result(res)
+ integer(kind=4) :: i, res
+ integer :: shift
+ res = shiftl(i,shift)
+ end function
+ function shiftr_4 (i, shift) result(res)
+ integer(kind=4) :: i, res
+ integer :: shift
+ res = shiftr(i,shift)
+ end function
+
+ function shifta_8 (i, shift) result(res)
+ integer(kind=8) :: i, res
+ integer :: shift
+ res = shifta(i,shift)
+ end function
+ function shiftl_8 (i, shift) result(res)
+ integer(kind=8) :: i, res
+ integer :: shift
+ res = shiftl(i,shift)
+ end function
+ function shiftr_8 (i, shift) result(res)
+ integer(kind=8) :: i, res
+ integer :: shift
+ res = shiftr(i,shift)
+ end function
+
+ function ishft_1 (i, shift) result(res)
+ integer(kind=1) :: i, res
+ integer :: shift
+ res = ishft(i,shift)
+ end function
+ function ishft_2 (i, shift) result(res)
+ integer(kind=2) :: i, res
+ integer :: shift
+ res = ishft(i,shift)
+ end function
+ function ishft_4 (i, shift) result(res)
+ integer(kind=4) :: i, res
+ integer :: shift
+ res = ishft(i,shift)
+ end function
+ function ishft_8 (i, shift) result(res)
+ integer(kind=8) :: i, res
+ integer :: shift
+ res = ishft(i,shift)
+ end function
+
+end