summaryrefslogtreecommitdiff
path: root/benchmarks/CUDA/WP/libmassv.F
diff options
context:
space:
mode:
Diffstat (limited to 'benchmarks/CUDA/WP/libmassv.F')
-rw-r--r--benchmarks/CUDA/WP/libmassv.F385
1 files changed, 385 insertions, 0 deletions
diff --git a/benchmarks/CUDA/WP/libmassv.F b/benchmarks/CUDA/WP/libmassv.F
new file mode 100644
index 0000000..344946b
--- /dev/null
+++ b/benchmarks/CUDA/WP/libmassv.F
@@ -0,0 +1,385 @@
+! IBM libmassv compatibility library
+!
+
+#ifndef NATIVE_MASSV
+ subroutine vdiv(z,x,y,n)
+ double precision x(*),y(*),z(*)
+ do 10 j=1,n
+ z(j)=x(j)/y(j)
+ 10 continue
+ return
+ end
+
+ subroutine vsdiv(z,x,y,n)
+ real x(*),y(*),z(*)
+ do 10 j=1,n
+ z(j)=x(j)/y(j)
+ 10 continue
+ return
+ end
+
+ subroutine vexp(y,x,n)
+ double precision x(*),y(*)
+ do 10 j=1,n
+ y(j)=exp(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vsexp(y,x,n)
+ real x(*),y(*)
+ do 10 j=1,n
+ y(j)=exp(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vlog(y,x,n)
+ double precision x(*),y(*)
+ do 10 j=1,n
+ y(j)=log(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vslog(y,x,n)
+ real x(*),y(*)
+ do 10 j=1,n
+ y(j)=log(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vrec(y,x,n)
+ double precision x(*),y(*)
+ do 10 j=1,n
+ y(j)=1.d0/x(j)
+ 10 continue
+ return
+ end
+
+ subroutine vsrec(y,x,n)
+ real x(*),y(*)
+ do 10 j=1,n
+ y(j)=1.d0/x(j)
+ 10 continue
+ return
+ end
+
+ subroutine vrsqrt(y,x,n)
+ double precision x(*),y(*)
+ do 10 j=1,n
+ y(j)=1.d0/sqrt(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vsrsqrt(y,x,n)
+ real x(*),y(*)
+ do 10 j=1,n
+ y(j)=1.d0/sqrt(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vsincos(x,y,z,n)
+ double precision x(*),y(*),z(*)
+ do 10 j=1,n
+ x(j)=sin(z(j))
+ y(j)=cos(z(j))
+ 10 continue
+ return
+ end
+
+ subroutine vssincos(x,y,z,n)
+ real x(*),y(*),z(*)
+ do 10 j=1,n
+ x(j)=sin(z(j))
+ y(j)=cos(z(j))
+ 10 continue
+ return
+ end
+
+ subroutine vsqrt(y,x,n)
+ double precision x(*),y(*)
+ do 10 j=1,n
+ y(j)=sqrt(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vssqrt(y,x,n)
+ real x(*),y(*)
+ do 10 j=1,n
+ y(j)=sqrt(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vtan(y,x,n)
+ double precision x(*),y(*)
+ do 10 j=1,n
+ y(j)=tan(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vstan(y,x,n)
+ real x(*),y(*)
+ do 10 j=1,n
+ y(j)=tan(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vatan2(z,y,x,n)
+ double precision x(*),y(*),z(*)
+ do 10 j=1,n
+ z(j)=atan2(y(j),x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vsatan2(z,y,x,n)
+ real x(*),y(*),z(*)
+ do 10 j=1,n
+ z(j)=atan2(y(j),x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vasin(y,x,n)
+ double precision x(*),y(*)
+ do 10 j=1,n
+ y(j)=asin(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vsin(y,x,n)
+ double precision x(*),y(*)
+ do 10 j=1,n
+ y(j)=sin(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vssin(y,x,n)
+ real x(*),y(*)
+ do 10 j=1,n
+ y(j)=sin(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vacos(y,x,n)
+ double precision x(*),y(*)
+ do 10 j=1,n
+ y(j)=acos(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vcos(y,x,n)
+ double precision x(*),y(*)
+ do 10 j=1,n
+ y(j)=cos(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vscos(y,x,n)
+ real x(*),y(*)
+ do 10 j=1,n
+ y(j)=cos(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vcosisin(y,x,n)
+ complex*16 y(*)
+ double precision x(*)
+ do 10 j=1,n
+ y(j)=dcmplx(cos(x(j)),sin(x(j)))
+ 10 continue
+ return
+ end
+
+ subroutine vscosisin(y,x,n)
+ complex*8 y(*)
+ real x(*)
+ do 10 j=1,n
+ y(j)= cmplx(cos(x(j)),sin(x(j)))
+ 10 continue
+ return
+ end
+
+ subroutine vdint(y,x,n)
+ double precision x(*),y(*)
+ do 10 j=1,n
+! y(j)=dint(x(j))
+ y(j)=int(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vdnint(y,x,n)
+ double precision x(*),y(*)
+ do 10 j=1,n
+! y(j)=dnint(x(j))
+ y(j)=nint(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vlog10(y,x,n)
+ double precision x(*),y(*)
+ do 10 j=1,n
+ y(j)=log10(x(j))
+ 10 continue
+ return
+ end
+
+! subroutine vlog1p(y,x,n)
+! double precision x(*),y(*)
+! interface
+! double precision function log1p(%val(x))
+! double precision x
+! end function log1p
+! end interface
+! do 10 j=1,n
+! y(j)=log1p(x(j))
+! 10 continue
+! return
+! end
+
+ subroutine vcosh(y,x,n)
+ double precision x(*),y(*)
+ do 10 j=1,n
+ y(j)=cosh(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vsinh(y,x,n)
+ double precision x(*),y(*)
+ do 10 j=1,n
+ y(j)=sinh(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vtanh(y,x,n)
+ double precision x(*),y(*)
+ do 10 j=1,n
+ y(j)=tanh(x(j))
+ 10 continue
+ return
+ end
+
+! subroutine vexpm1(y,x,n)
+! double precision x(*),y(*)
+! interface
+! double precision function expm1(%val(x))
+! double precision x
+! end function expm1
+! end interface
+! do 10 j=1,n
+! y(j)=expm1(x(j))
+! 10 continue
+! return
+! end
+
+
+ subroutine vsasin(y,x,n)
+ real x(*),y(*)
+ do 10 j=1,n
+ y(j)=asin(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vsacos(y,x,n)
+ real x(*),y(*)
+ do 10 j=1,n
+ y(j)=acos(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vscosh(y,x,n)
+ real x(*),y(*)
+ do 10 j=1,n
+ y(j)=cosh(x(j))
+ 10 continue
+ return
+ end
+
+! subroutine vsexpm1(y,x,n)
+! real x(*),y(*)
+! interface
+! double precision function expm1(%val(x))
+! double precision x
+! end function expm1
+! end interface
+! do 10 j=1,n
+! y(j)=expm1(real(x(j),8))
+! 10 continue
+! return
+! end
+
+ subroutine vslog10(y,x,n)
+ real x(*),y(*)
+ do 10 j=1,n
+ y(j)=log10(x(j))
+ 10 continue
+ return
+ end
+
+! subroutine vslog1p(y,x,n)
+! real x(*),y(*)
+! interface
+! double precision function log1p(%val(x))
+! double precision x
+! end function log1p
+! end interface
+! do 10 j=1,n
+! y(j)=log1p(real(x(j),8))
+! 10 continue
+! return
+! end
+
+
+ subroutine vssinh(y,x,n)
+ real x(*),y(*)
+ do 10 j=1,n
+ y(j)=sinh(x(j))
+ 10 continue
+ return
+ end
+
+ subroutine vstanh(y,x,n)
+ real x(*),y(*)
+ do 10 j=1,n
+ y(j)=tanh(x(j))
+ 10 continue
+ return
+ end
+#endif
+
+ subroutine vspow(z,y,x,n)
+ real x(*),y(*),z(*)
+ do 10 j=1,n
+ z(j)=y(j)**x(j)
+ 10 continue
+ return
+ end
+
+ subroutine vpow(z,y,x,n)
+ double precision x(*),y(*),z(*)
+ do 10 j=1,n
+ z(j)=y(j)**x(j)
+ 10 continue
+ return
+ end
+