]> gitweb.factorcode.org Git - factor.git/commitdiff
cuda.ffi: add CUDA versions of double, longlong, ulonglong that always 8-byte align...
authorJoe Groff <arcata@gmail.com>
Thu, 15 Apr 2010 21:46:13 +0000 (14:46 -0700)
committerJoe Groff <arcata@gmail.com>
Thu, 15 Apr 2010 21:46:13 +0000 (14:46 -0700)
extra/cuda/ffi/ffi.factor

index 3d41f1e4c5069bfeeba5a971dc788a43701fbeb3..b7efeff9fb173151092117087ed78a49790e5550 100644 (file)
@@ -1,6 +1,6 @@
 ! (c)2010 Joe Groff bsd license
-USING: alien alien.c-types alien.libraries alien.syntax
-classes.struct combinators system ;
+USING: accessors alien alien.c-types alien.libraries alien.syntax
+classes.struct combinators kernel system ;
 IN: cuda.ffi
 
 <<
@@ -24,6 +24,28 @@ TYPEDEF: void* CUevent
 TYPEDEF: void* CUstream
 TYPEDEF: void* CUgraphicsResource
 
+! versions of double and longlong that always 8-byte align
+
+SYMBOLS: CUdouble CUlonglong CUulonglong ;
+
+: >cuda-param-type ( c-type -- c-type' )
+    {
+        { CUdeviceptr [ void* ] }
+        { double      [ CUdouble ] }
+        { longlong    [ CUlonglong ] }
+        { ulonglong   [ CUulonglong ] }
+        [ ]
+    } case ;
+
+<<
+: always-8-byte-align ( c-type -- c-type )
+    8 >>align 8 >>align-first ;
+
+longlong  c-type clone always-8-byte-align \ CUlonglong  typedef
+ulonglong c-type clone always-8-byte-align \ CUulonglong typedef
+double    c-type clone always-8-byte-align \ CUdouble    typedef
+>>
+
 STRUCT: CUuuid
     { bytes char[16] } ;