anchor.diff:  (is (cl-cuda::cffi-type 'void   ) :void                  )
   (is (cl-cuda::cffi-type 'int    ) :int                   )
   (is (cl-cuda::cffi-type 'float  ) :float                 )
  -(is (cl-cuda::cffi-type 'float3 ) 'float3                )
  -(is (cl-cuda::cffi-type 'float4 ) 'float4                )
  +(is (cl-cuda::cffi-type 'float3 ) '(:struct float3)      )
  +(is (cl-cuda::cffi-type 'float4 ) '(:struct float4)      )
   (is (cl-cuda::cffi-type 'float* ) 'cl-cuda::cu-device-ptr)
   (is (cl-cuda::cffi-type 'float3*) 'cl-cuda::cu-device-ptr)
   (is (cl-cuda::cffi-type 'float4*) 'cl-cuda::cu-device-ptr)
  
positive.code: (is       (expand-macro '(* 1 2))   '(cl-cuda::%mul 1 2))
  (is       (expand-macro '(* 1 2 3)) '(cl-cuda::%mul (cl-cuda::%mul 1 2) 3))
  (is-error (expand-macro '(/))       simple-error)
  (is       (expand-macro '(/ 1))     '(cl-cuda::%div 1 1))
  (is       (expand-macro '(/ 1 2))   '(cl-cuda::%div 1 2))
  (is       (expand-macro '(/ 1 2 3)) '(cl-cuda::%div (cl-cuda::%div 1 2) 3))
  
  
negative.code:   (cl-cuda::with-kernel-arguments (kargs ((x int) (y float3) (a float3*)))
      nil)
    (cffi:with-foreign-objects ((x-ptr :int)
                                (y-ptr '(:struct float3)))
      (setf (cffi:mem-ref x-ptr :int) x)
      (setf (cffi:foreign-slot-value y-ptr '(:struct float3) 'cl-cuda::x) (float3-x y)
            (cffi:foreign-slot-value y-ptr '(:struct float3) 'cl-cuda::y) (float3-y y)
            (cffi:foreign-slot-value y-ptr '(:struct float3) 'cl-cuda::z) (float3-z y))
      (cl-cuda::with-memory-block-device-ptrs ((a-ptr a))
        (cffi:with-foreign-object (kargs :pointer 3)
          (setf (cffi:mem-aref kargs :pointer 0) x-ptr)
  