-- GENERATED by C->Haskell Compiler, version 0.28.6 Switcheroo, 25 November 2017 (Haskell)
-- Edit the ORIGNAL .chs file instead!


{-# LINE 1 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}
--
-- This module is auto-generated. Do not edit directly.
--

{-# LANGUAGE CPP #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
-- |
-- Module      : Foreign.CUDA.BLAS.Sparse.Level2
-- Copyright   : [2017] Trevor L. McDonell
-- License     : BSD3
--
-- Maintainer  : Trevor L. McDonell <tmcdonell@cse.unsw.edu.au>
-- Stability   : experimental
-- Portability : non-portable (GHC extensions)
--
-- For more information see the cuSPARSE Level-2 function reference:
--
-- <http://docs.nvidia.com/cuda/cusparse/index.html#cusparse-level-2-function-reference>
--

module Foreign.CUDA.BLAS.Sparse.Level2 (

  Operation(..),
  Direction(..),
  Type(..),
  Algorithm(..),
  Policy(..),
  MatrixDescriptor,
  Hybrid,
  Info,
  Info_bsrsv2,
  Info_csrsv2,
  sbsrmv,
  dbsrmv,
  cbsrmv,
  zbsrmv,
  sbsrxmv,
  dbsrxmv,
  cbsrxmv,
  zbsrxmv,
  scsrmv,
  dcsrmv,
  ccsrmv,
  zcsrmv,
  sbsrsv2_bufferSize,
  dbsrsv2_bufferSize,
  cbsrsv2_bufferSize,
  zbsrsv2_bufferSize,
  sbsrsv2_analysis,
  dbsrsv2_analysis,
  cbsrsv2_analysis,
  zbsrsv2_analysis,
  sbsrsv2_solve,
  dbsrsv2_solve,
  cbsrsv2_solve,
  zbsrsv2_solve,
  xbsrsv2_zeroPivot,
  scsrsv_analysis,
  dcsrsv_analysis,
  ccsrsv_analysis,
  zcsrsv_analysis,
  scsrsv_solve,
  dcsrsv_solve,
  ccsrsv_solve,
  zcsrsv_solve,
  scsrsv2_bufferSize,
  dcsrsv2_bufferSize,
  ccsrsv2_bufferSize,
  zcsrsv2_bufferSize,
  scsrsv2_analysis,
  dcsrsv2_analysis,
  ccsrsv2_analysis,
  zcsrsv2_analysis,
  scsrsv2_solve,
  dcsrsv2_solve,
  ccsrsv2_solve,
  zcsrsv2_solve,
  xcsrsv2_zeroPivot,
  shybmv,
  dhybmv,
  chybmv,
  zhybmv,
  shybsv_analysis,
  dhybsv_analysis,
  chybsv_analysis,
  zhybsv_analysis,
  shybsv_solve,
  dhybsv_solve,
  chybsv_solve,
  zhybsv_solve,
  sgemvi,
  dgemvi,
  cgemvi,
  zgemvi,
  sgemvi_bufferSize,
  dgemvi_bufferSize,
  cgemvi_bufferSize,
  zgemvi_bufferSize,
  csrmvEx,
  csrmvEx_bufferSize,
  scsrmv_mp,
  dcsrmv_mp,
  ccsrmv_mp,
  zcsrmv_mp,
  csrsv_analysisEx,
  csrsv_solveEx,

) where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.Ptr as C2HSImp



import Data.Complex
import Numeric.Half
import Foreign
import Foreign.C
import Foreign.Storable.Complex ()
import Foreign.CUDA.Ptr
import Foreign.CUDA.BLAS.Sparse.Analysis
import Foreign.CUDA.BLAS.Sparse.Context
import Foreign.CUDA.BLAS.Sparse.Error
import Foreign.CUDA.BLAS.Sparse.Internal.C2HS
import Foreign.CUDA.BLAS.Sparse.Internal.Types
import Foreign.CUDA.BLAS.Sparse.Matrix.Descriptor
import Foreign.CUDA.BLAS.Sparse.Matrix.Hybrid



{-# LINE 127 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINE useDevP #-}
useDevP :: DevicePtr a -> Ptr b
useDevP = useDevicePtr . castDevPtr

{-# INLINE useHostP #-}
useHostP :: HostPtr a -> Ptr b
useHostP = useHostPtr . castHostPtr


{-# INLINEABLE sbsrmv #-}
sbsrmv :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Float) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (DevicePtr Float) -> (Ptr Float) -> (DevicePtr Float) -> IO ()
sbsrmv a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useMatDescr a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  let {a13' = useDevP a13} in
  let {a14' = castPtr a14} in
  let {a15' = useDevP a15} in
  sbsrmv'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 139 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE dbsrmv #-}
dbsrmv :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Double) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (DevicePtr Double) -> (Ptr Double) -> (DevicePtr Double) -> IO ()
dbsrmv a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useMatDescr a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  let {a13' = useDevP a13} in
  let {a14' = castPtr a14} in
  let {a15' = useDevP a15} in
  dbsrmv'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 142 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE cbsrmv #-}
cbsrmv :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (DevicePtr (Complex Float)) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> IO ()
cbsrmv a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useMatDescr a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  let {a13' = useDevP a13} in
  let {a14' = castPtr a14} in
  let {a15' = useDevP a15} in
  cbsrmv'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 145 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE zbsrmv #-}
zbsrmv :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (DevicePtr (Complex Double)) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> IO ()
zbsrmv a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = useMatDescr a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  let {a12' = fromIntegral a12} in
  let {a13' = useDevP a13} in
  let {a14' = castPtr a14} in
  let {a15' = useDevP a15} in
  zbsrmv'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 148 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE sbsrxmv #-}
sbsrxmv :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Int) -> (Ptr Float) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (DevicePtr Float) -> (Ptr Float) -> (DevicePtr Float) -> IO ()
sbsrxmv a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = castPtr a8} in
  let {a9' = useMatDescr a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  let {a12' = useDevP a12} in
  let {a13' = useDevP a13} in
  let {a14' = useDevP a14} in
  let {a15' = fromIntegral a15} in
  let {a16' = useDevP a16} in
  let {a17' = castPtr a17} in
  let {a18' = useDevP a18} in
  sbsrxmv'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 151 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE dbsrxmv #-}
dbsrxmv :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Int) -> (Ptr Double) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (DevicePtr Double) -> (Ptr Double) -> (DevicePtr Double) -> IO ()
dbsrxmv a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = castPtr a8} in
  let {a9' = useMatDescr a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  let {a12' = useDevP a12} in
  let {a13' = useDevP a13} in
  let {a14' = useDevP a14} in
  let {a15' = fromIntegral a15} in
  let {a16' = useDevP a16} in
  let {a17' = castPtr a17} in
  let {a18' = useDevP a18} in
  dbsrxmv'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 154 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE cbsrxmv #-}
cbsrxmv :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (DevicePtr (Complex Float)) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> IO ()
cbsrxmv a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = castPtr a8} in
  let {a9' = useMatDescr a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  let {a12' = useDevP a12} in
  let {a13' = useDevP a13} in
  let {a14' = useDevP a14} in
  let {a15' = fromIntegral a15} in
  let {a16' = useDevP a16} in
  let {a17' = castPtr a17} in
  let {a18' = useDevP a18} in
  cbsrxmv'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 157 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE zbsrxmv #-}
zbsrxmv :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (DevicePtr (Complex Double)) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> IO ()
zbsrxmv a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = castPtr a8} in
  let {a9' = useMatDescr a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  let {a12' = useDevP a12} in
  let {a13' = useDevP a13} in
  let {a14' = useDevP a14} in
  let {a15' = fromIntegral a15} in
  let {a16' = useDevP a16} in
  let {a17' = castPtr a17} in
  let {a18' = useDevP a18} in
  zbsrxmv'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 160 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE scsrmv #-}
scsrmv :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Float) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Float) -> (Ptr Float) -> (DevicePtr Float) -> IO ()
scsrmv a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useMatDescr a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  let {a12' = castPtr a12} in
  let {a13' = useDevP a13} in
  scsrmv'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 163 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE dcsrmv #-}
dcsrmv :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Double) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Double) -> (Ptr Double) -> (DevicePtr Double) -> IO ()
dcsrmv a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useMatDescr a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  let {a12' = castPtr a12} in
  let {a13' = useDevP a13} in
  dcsrmv'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 166 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE ccsrmv #-}
ccsrmv :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Float)) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> IO ()
ccsrmv a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useMatDescr a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  let {a12' = castPtr a12} in
  let {a13' = useDevP a13} in
  ccsrmv'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 169 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE zcsrmv #-}
zcsrmv :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Double)) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> IO ()
zcsrmv a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useMatDescr a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  let {a12' = castPtr a12} in
  let {a13' = useDevP a13} in
  zcsrmv'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 172 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE sbsrsv2_bufferSize #-}
sbsrsv2_bufferSize :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsv2) -> IO ((Int))
sbsrsv2_bufferSize a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = useMatDescr a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useInfo_bsrsv2 a11} in
  alloca $ \a12' ->
  sbsrsv2_bufferSize'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>
  peekIntConv  a12'>>= \a12'' ->
  return (a12'')

{-# LINE 175 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE dbsrsv2_bufferSize #-}
dbsrsv2_bufferSize :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsv2) -> IO ((Int))
dbsrsv2_bufferSize a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = useMatDescr a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useInfo_bsrsv2 a11} in
  alloca $ \a12' ->
  dbsrsv2_bufferSize'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>
  peekIntConv  a12'>>= \a12'' ->
  return (a12'')

{-# LINE 178 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE cbsrsv2_bufferSize #-}
cbsrsv2_bufferSize :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsv2) -> IO ((Int))
cbsrsv2_bufferSize a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = useMatDescr a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useInfo_bsrsv2 a11} in
  alloca $ \a12' ->
  cbsrsv2_bufferSize'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>
  peekIntConv  a12'>>= \a12'' ->
  return (a12'')

{-# LINE 181 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE zbsrsv2_bufferSize #-}
zbsrsv2_bufferSize :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsv2) -> IO ((Int))
zbsrsv2_bufferSize a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = useMatDescr a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useInfo_bsrsv2 a11} in
  alloca $ \a12' ->
  zbsrsv2_bufferSize'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' >>= \res ->
  checkStatus res >>
  peekIntConv  a12'>>= \a12'' ->
  return (a12'')

{-# LINE 184 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE sbsrsv2_analysis #-}
sbsrsv2_analysis :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsv2) -> (Policy) -> (DevicePtr ()) -> IO ()
sbsrsv2_analysis a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = useMatDescr a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useInfo_bsrsv2 a11} in
  let {a12' = cFromEnum a12} in
  let {a13' = useDevP a13} in
  sbsrsv2_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 187 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE dbsrsv2_analysis #-}
dbsrsv2_analysis :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsv2) -> (Policy) -> (DevicePtr ()) -> IO ()
dbsrsv2_analysis a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = useMatDescr a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useInfo_bsrsv2 a11} in
  let {a12' = cFromEnum a12} in
  let {a13' = useDevP a13} in
  dbsrsv2_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 190 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE cbsrsv2_analysis #-}
cbsrsv2_analysis :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsv2) -> (Policy) -> (DevicePtr ()) -> IO ()
cbsrsv2_analysis a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = useMatDescr a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useInfo_bsrsv2 a11} in
  let {a12' = cFromEnum a12} in
  let {a13' = useDevP a13} in
  cbsrsv2_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 193 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE zbsrsv2_analysis #-}
zbsrsv2_analysis :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsv2) -> (Policy) -> (DevicePtr ()) -> IO ()
zbsrsv2_analysis a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = useMatDescr a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = fromIntegral a10} in
  let {a11' = useInfo_bsrsv2 a11} in
  let {a12' = cFromEnum a12} in
  let {a13' = useDevP a13} in
  zbsrsv2_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 196 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE sbsrsv2_solve #-}
sbsrsv2_solve :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (Ptr Float) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsv2) -> (DevicePtr Float) -> (DevicePtr Float) -> (Policy) -> (DevicePtr ()) -> IO ()
sbsrsv2_solve a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useMatDescr a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = useInfo_bsrsv2 a12} in
  let {a13' = useDevP a13} in
  let {a14' = useDevP a14} in
  let {a15' = cFromEnum a15} in
  let {a16' = useDevP a16} in
  sbsrsv2_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 199 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE dbsrsv2_solve #-}
dbsrsv2_solve :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (Ptr Double) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsv2) -> (DevicePtr Double) -> (DevicePtr Double) -> (Policy) -> (DevicePtr ()) -> IO ()
dbsrsv2_solve a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useMatDescr a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = useInfo_bsrsv2 a12} in
  let {a13' = useDevP a13} in
  let {a14' = useDevP a14} in
  let {a15' = cFromEnum a15} in
  let {a16' = useDevP a16} in
  dbsrsv2_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 202 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE cbsrsv2_solve #-}
cbsrsv2_solve :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsv2) -> (DevicePtr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Policy) -> (DevicePtr ()) -> IO ()
cbsrsv2_solve a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useMatDescr a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = useInfo_bsrsv2 a12} in
  let {a13' = useDevP a13} in
  let {a14' = useDevP a14} in
  let {a15' = cFromEnum a15} in
  let {a16' = useDevP a16} in
  cbsrsv2_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 205 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE zbsrsv2_solve #-}
zbsrsv2_solve :: (Handle) -> (Direction) -> (Operation) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsv2) -> (DevicePtr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Policy) -> (DevicePtr ()) -> IO ()
zbsrsv2_solve a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useMatDescr a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = fromIntegral a11} in
  let {a12' = useInfo_bsrsv2 a12} in
  let {a13' = useDevP a13} in
  let {a14' = useDevP a14} in
  let {a15' = cFromEnum a15} in
  let {a16' = useDevP a16} in
  zbsrsv2_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 208 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE xbsrsv2_zeroPivot #-}
xbsrsv2_zeroPivot :: (Handle) -> (Info_bsrsv2) -> (Ptr Int32) -> IO ()
xbsrsv2_zeroPivot a1 a2 a3 =
  let {a1' = useHandle a1} in
  let {a2' = useInfo_bsrsv2 a2} in
  let {a3' = castPtr a3} in
  xbsrsv2_zeroPivot'_ a1' a2' a3' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 211 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE scsrsv_analysis #-}
scsrsv_analysis :: (Handle) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info) -> IO ()
scsrsv_analysis a1 a2 a3 a4 a5 a6 a7 a8 a9 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useInfo a9} in
  scsrsv_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 214 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE dcsrsv_analysis #-}
dcsrsv_analysis :: (Handle) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info) -> IO ()
dcsrsv_analysis a1 a2 a3 a4 a5 a6 a7 a8 a9 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useInfo a9} in
  dcsrsv_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 217 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE ccsrsv_analysis #-}
ccsrsv_analysis :: (Handle) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info) -> IO ()
ccsrsv_analysis a1 a2 a3 a4 a5 a6 a7 a8 a9 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useInfo a9} in
  ccsrsv_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 220 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE zcsrsv_analysis #-}
zcsrsv_analysis :: (Handle) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info) -> IO ()
zcsrsv_analysis a1 a2 a3 a4 a5 a6 a7 a8 a9 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useInfo a9} in
  zcsrsv_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 223 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE scsrsv_solve #-}
scsrsv_solve :: (Handle) -> (Operation) -> (Int) -> (Ptr Float) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info) -> (DevicePtr Float) -> (DevicePtr Float) -> IO ()
scsrsv_solve a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = castPtr a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useInfo a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  scsrsv_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 226 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE dcsrsv_solve #-}
dcsrsv_solve :: (Handle) -> (Operation) -> (Int) -> (Ptr Double) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info) -> (DevicePtr Double) -> (DevicePtr Double) -> IO ()
dcsrsv_solve a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = castPtr a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useInfo a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  dcsrsv_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 229 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE ccsrsv_solve #-}
ccsrsv_solve :: (Handle) -> (Operation) -> (Int) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info) -> (DevicePtr (Complex Float)) -> (DevicePtr (Complex Float)) -> IO ()
ccsrsv_solve a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = castPtr a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useInfo a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  ccsrsv_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 232 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE zcsrsv_solve #-}
zcsrsv_solve :: (Handle) -> (Operation) -> (Int) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info) -> (DevicePtr (Complex Double)) -> (DevicePtr (Complex Double)) -> IO ()
zcsrsv_solve a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = castPtr a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useInfo a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  zcsrsv_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 235 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE scsrsv2_bufferSize #-}
scsrsv2_bufferSize :: (Handle) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrsv2) -> IO ((Int))
scsrsv2_bufferSize a1 a2 a3 a4 a5 a6 a7 a8 a9 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useInfo_csrsv2 a9} in
  alloca $ \a10' ->
  scsrsv2_bufferSize'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' >>= \res ->
  checkStatus res >>
  peekIntConv  a10'>>= \a10'' ->
  return (a10'')

{-# LINE 238 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE dcsrsv2_bufferSize #-}
dcsrsv2_bufferSize :: (Handle) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrsv2) -> IO ((Int))
dcsrsv2_bufferSize a1 a2 a3 a4 a5 a6 a7 a8 a9 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useInfo_csrsv2 a9} in
  alloca $ \a10' ->
  dcsrsv2_bufferSize'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' >>= \res ->
  checkStatus res >>
  peekIntConv  a10'>>= \a10'' ->
  return (a10'')

{-# LINE 241 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE ccsrsv2_bufferSize #-}
ccsrsv2_bufferSize :: (Handle) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrsv2) -> IO ((Int))
ccsrsv2_bufferSize a1 a2 a3 a4 a5 a6 a7 a8 a9 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useInfo_csrsv2 a9} in
  alloca $ \a10' ->
  ccsrsv2_bufferSize'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' >>= \res ->
  checkStatus res >>
  peekIntConv  a10'>>= \a10'' ->
  return (a10'')

{-# LINE 244 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE zcsrsv2_bufferSize #-}
zcsrsv2_bufferSize :: (Handle) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrsv2) -> IO ((Int))
zcsrsv2_bufferSize a1 a2 a3 a4 a5 a6 a7 a8 a9 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useInfo_csrsv2 a9} in
  alloca $ \a10' ->
  zcsrsv2_bufferSize'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' >>= \res ->
  checkStatus res >>
  peekIntConv  a10'>>= \a10'' ->
  return (a10'')

{-# LINE 247 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE scsrsv2_analysis #-}
scsrsv2_analysis :: (Handle) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrsv2) -> (Policy) -> (DevicePtr ()) -> IO ()
scsrsv2_analysis a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useInfo_csrsv2 a9} in
  let {a10' = cFromEnum a10} in
  let {a11' = useDevP a11} in
  scsrsv2_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 250 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE dcsrsv2_analysis #-}
dcsrsv2_analysis :: (Handle) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrsv2) -> (Policy) -> (DevicePtr ()) -> IO ()
dcsrsv2_analysis a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useInfo_csrsv2 a9} in
  let {a10' = cFromEnum a10} in
  let {a11' = useDevP a11} in
  dcsrsv2_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 253 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE ccsrsv2_analysis #-}
ccsrsv2_analysis :: (Handle) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrsv2) -> (Policy) -> (DevicePtr ()) -> IO ()
ccsrsv2_analysis a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useInfo_csrsv2 a9} in
  let {a10' = cFromEnum a10} in
  let {a11' = useDevP a11} in
  ccsrsv2_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 256 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE zcsrsv2_analysis #-}
zcsrsv2_analysis :: (Handle) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrsv2) -> (Policy) -> (DevicePtr ()) -> IO ()
zcsrsv2_analysis a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useInfo_csrsv2 a9} in
  let {a10' = cFromEnum a10} in
  let {a11' = useDevP a11} in
  zcsrsv2_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 259 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE scsrsv2_solve #-}
scsrsv2_solve :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Ptr Float) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrsv2) -> (DevicePtr Float) -> (DevicePtr Float) -> (Policy) -> (DevicePtr ()) -> IO ()
scsrsv2_solve a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = castPtr a5} in
  let {a6' = useMatDescr a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useInfo_csrsv2 a10} in
  let {a11' = useDevP a11} in
  let {a12' = useDevP a12} in
  let {a13' = cFromEnum a13} in
  let {a14' = useDevP a14} in
  scsrsv2_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 262 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE dcsrsv2_solve #-}
dcsrsv2_solve :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Ptr Double) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrsv2) -> (DevicePtr Double) -> (DevicePtr Double) -> (Policy) -> (DevicePtr ()) -> IO ()
dcsrsv2_solve a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = castPtr a5} in
  let {a6' = useMatDescr a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useInfo_csrsv2 a10} in
  let {a11' = useDevP a11} in
  let {a12' = useDevP a12} in
  let {a13' = cFromEnum a13} in
  let {a14' = useDevP a14} in
  dcsrsv2_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 265 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE ccsrsv2_solve #-}
ccsrsv2_solve :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrsv2) -> (DevicePtr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Policy) -> (DevicePtr ()) -> IO ()
ccsrsv2_solve a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = castPtr a5} in
  let {a6' = useMatDescr a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useInfo_csrsv2 a10} in
  let {a11' = useDevP a11} in
  let {a12' = useDevP a12} in
  let {a13' = cFromEnum a13} in
  let {a14' = useDevP a14} in
  ccsrsv2_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 268 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE zcsrsv2_solve #-}
zcsrsv2_solve :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrsv2) -> (DevicePtr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Policy) -> (DevicePtr ()) -> IO ()
zcsrsv2_solve a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = castPtr a5} in
  let {a6' = useMatDescr a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useInfo_csrsv2 a10} in
  let {a11' = useDevP a11} in
  let {a12' = useDevP a12} in
  let {a13' = cFromEnum a13} in
  let {a14' = useDevP a14} in
  zcsrsv2_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 271 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE xcsrsv2_zeroPivot #-}
xcsrsv2_zeroPivot :: (Handle) -> (Info_csrsv2) -> (Ptr Int32) -> IO ()
xcsrsv2_zeroPivot a1 a2 a3 =
  let {a1' = useHandle a1} in
  let {a2' = useInfo_csrsv2 a2} in
  let {a3' = castPtr a3} in
  xcsrsv2_zeroPivot'_ a1' a2' a3' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 274 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE shybmv #-}
shybmv :: (Handle) -> (Operation) -> (Ptr Float) -> (MatrixDescriptor) -> (Hybrid) -> (DevicePtr Float) -> (Ptr Float) -> (DevicePtr Float) -> IO ()
shybmv a1 a2 a3 a4 a5 a6 a7 a8 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = castPtr a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useHYB a5} in
  let {a6' = useDevP a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  shybmv'_ a1' a2' a3' a4' a5' a6' a7' a8' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 277 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE dhybmv #-}
dhybmv :: (Handle) -> (Operation) -> (Ptr Double) -> (MatrixDescriptor) -> (Hybrid) -> (DevicePtr Double) -> (Ptr Double) -> (DevicePtr Double) -> IO ()
dhybmv a1 a2 a3 a4 a5 a6 a7 a8 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = castPtr a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useHYB a5} in
  let {a6' = useDevP a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  dhybmv'_ a1' a2' a3' a4' a5' a6' a7' a8' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 280 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE chybmv #-}
chybmv :: (Handle) -> (Operation) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (Hybrid) -> (DevicePtr (Complex Float)) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> IO ()
chybmv a1 a2 a3 a4 a5 a6 a7 a8 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = castPtr a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useHYB a5} in
  let {a6' = useDevP a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  chybmv'_ a1' a2' a3' a4' a5' a6' a7' a8' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 283 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE zhybmv #-}
zhybmv :: (Handle) -> (Operation) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (Hybrid) -> (DevicePtr (Complex Double)) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> IO ()
zhybmv a1 a2 a3 a4 a5 a6 a7 a8 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = castPtr a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useHYB a5} in
  let {a6' = useDevP a6} in
  let {a7' = castPtr a7} in
  let {a8' = useDevP a8} in
  zhybmv'_ a1' a2' a3' a4' a5' a6' a7' a8' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 286 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE shybsv_analysis #-}
shybsv_analysis :: (Handle) -> (Operation) -> (MatrixDescriptor) -> (Hybrid) -> (Info) -> IO ()
shybsv_analysis a1 a2 a3 a4 a5 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = useMatDescr a3} in
  let {a4' = useHYB a4} in
  let {a5' = useInfo a5} in
  shybsv_analysis'_ a1' a2' a3' a4' a5' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 289 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE dhybsv_analysis #-}
dhybsv_analysis :: (Handle) -> (Operation) -> (MatrixDescriptor) -> (Hybrid) -> (Info) -> IO ()
dhybsv_analysis a1 a2 a3 a4 a5 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = useMatDescr a3} in
  let {a4' = useHYB a4} in
  let {a5' = useInfo a5} in
  dhybsv_analysis'_ a1' a2' a3' a4' a5' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 292 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE chybsv_analysis #-}
chybsv_analysis :: (Handle) -> (Operation) -> (MatrixDescriptor) -> (Hybrid) -> (Info) -> IO ()
chybsv_analysis a1 a2 a3 a4 a5 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = useMatDescr a3} in
  let {a4' = useHYB a4} in
  let {a5' = useInfo a5} in
  chybsv_analysis'_ a1' a2' a3' a4' a5' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 295 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE zhybsv_analysis #-}
zhybsv_analysis :: (Handle) -> (Operation) -> (MatrixDescriptor) -> (Hybrid) -> (Info) -> IO ()
zhybsv_analysis a1 a2 a3 a4 a5 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = useMatDescr a3} in
  let {a4' = useHYB a4} in
  let {a5' = useInfo a5} in
  zhybsv_analysis'_ a1' a2' a3' a4' a5' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 298 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE shybsv_solve #-}
shybsv_solve :: (Handle) -> (Operation) -> (Ptr Float) -> (MatrixDescriptor) -> (Hybrid) -> (Info) -> (DevicePtr Float) -> (DevicePtr Float) -> IO ()
shybsv_solve a1 a2 a3 a4 a5 a6 a7 a8 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = castPtr a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useHYB a5} in
  let {a6' = useInfo a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  shybsv_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 301 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE dhybsv_solve #-}
dhybsv_solve :: (Handle) -> (Operation) -> (Ptr Double) -> (MatrixDescriptor) -> (Hybrid) -> (Info) -> (DevicePtr Double) -> (DevicePtr Double) -> IO ()
dhybsv_solve a1 a2 a3 a4 a5 a6 a7 a8 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = castPtr a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useHYB a5} in
  let {a6' = useInfo a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  dhybsv_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 304 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE chybsv_solve #-}
chybsv_solve :: (Handle) -> (Operation) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (Hybrid) -> (Info) -> (DevicePtr (Complex Float)) -> (DevicePtr (Complex Float)) -> IO ()
chybsv_solve a1 a2 a3 a4 a5 a6 a7 a8 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = castPtr a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useHYB a5} in
  let {a6' = useInfo a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  chybsv_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 307 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE zhybsv_solve #-}
zhybsv_solve :: (Handle) -> (Operation) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (Hybrid) -> (Info) -> (DevicePtr (Complex Double)) -> (DevicePtr (Complex Double)) -> IO ()
zhybsv_solve a1 a2 a3 a4 a5 a6 a7 a8 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = castPtr a3} in
  let {a4' = useMatDescr a4} in
  let {a5' = useHYB a5} in
  let {a6' = useInfo a6} in
  let {a7' = useDevP a7} in
  let {a8' = useDevP a8} in
  zhybsv_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 311 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE sgemvi #-}
sgemvi :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> (Int) -> (DevicePtr Float) -> (DevicePtr Int32) -> (Ptr Float) -> (DevicePtr Float) -> (IndexBase) -> (DevicePtr ()) -> IO ()
sgemvi a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = castPtr a5} in
  let {a6' = useDevP a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = cFromEnum a13} in
  let {a14' = useDevP a14} in
  sgemvi'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 314 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE dgemvi #-}
dgemvi :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> (Int) -> (DevicePtr Double) -> (DevicePtr Int32) -> (Ptr Double) -> (DevicePtr Double) -> (IndexBase) -> (DevicePtr ()) -> IO ()
dgemvi a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = castPtr a5} in
  let {a6' = useDevP a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = cFromEnum a13} in
  let {a14' = useDevP a14} in
  dgemvi'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 317 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE cgemvi #-}
cgemvi :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> (Int) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (IndexBase) -> (DevicePtr ()) -> IO ()
cgemvi a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = castPtr a5} in
  let {a6' = useDevP a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = cFromEnum a13} in
  let {a14' = useDevP a14} in
  cgemvi'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 320 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE zgemvi #-}
zgemvi :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> (Int) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (IndexBase) -> (DevicePtr ()) -> IO ()
zgemvi a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = castPtr a5} in
  let {a6' = useDevP a6} in
  let {a7' = fromIntegral a7} in
  let {a8' = fromIntegral a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = castPtr a11} in
  let {a12' = useDevP a12} in
  let {a13' = cFromEnum a13} in
  let {a14' = useDevP a14} in
  zgemvi'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 323 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE sgemvi_bufferSize #-}
sgemvi_bufferSize :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> IO ((Int))
sgemvi_bufferSize a1 a2 a3 a4 a5 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  alloca $ \a6' ->
  sgemvi_bufferSize'_ a1' a2' a3' a4' a5' a6' >>= \res ->
  checkStatus res >>
  peekIntConv  a6'>>= \a6'' ->
  return (a6'')

{-# LINE 326 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE dgemvi_bufferSize #-}
dgemvi_bufferSize :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> IO ((Int))
dgemvi_bufferSize a1 a2 a3 a4 a5 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  alloca $ \a6' ->
  dgemvi_bufferSize'_ a1' a2' a3' a4' a5' a6' >>= \res ->
  checkStatus res >>
  peekIntConv  a6'>>= \a6'' ->
  return (a6'')

{-# LINE 329 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE cgemvi_bufferSize #-}
cgemvi_bufferSize :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> IO ((Int))
cgemvi_bufferSize a1 a2 a3 a4 a5 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  alloca $ \a6' ->
  cgemvi_bufferSize'_ a1' a2' a3' a4' a5' a6' >>= \res ->
  checkStatus res >>
  peekIntConv  a6'>>= \a6'' ->
  return (a6'')

{-# LINE 332 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE zgemvi_bufferSize #-}
zgemvi_bufferSize :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> IO ((Int))
zgemvi_bufferSize a1 a2 a3 a4 a5 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  alloca $ \a6' ->
  zgemvi_bufferSize'_ a1' a2' a3' a4' a5' a6' >>= \res ->
  checkStatus res >>
  peekIntConv  a6'>>= \a6'' ->
  return (a6'')

{-# LINE 362 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE csrmvEx #-}
csrmvEx :: (Handle) -> (Algorithm) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr ()) -> (Type) -> (MatrixDescriptor) -> (DevicePtr ()) -> (Type) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr ()) -> (Type) -> (Ptr ()) -> (Type) -> (DevicePtr ()) -> (Type) -> (Type) -> (DevicePtr ()) -> IO ()
csrmvEx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 a21 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = cFromEnum a8} in
  let {a9' = useMatDescr a9} in
  let {a10' = useDevP a10} in
  let {a11' = cFromEnum a11} in
  let {a12' = useDevP a12} in
  let {a13' = useDevP a13} in
  let {a14' = useDevP a14} in
  let {a15' = cFromEnum a15} in
  let {a16' = castPtr a16} in
  let {a17' = cFromEnum a17} in
  let {a18' = useDevP a18} in
  let {a19' = cFromEnum a19} in
  let {a20' = cFromEnum a20} in
  let {a21' = useDevP a21} in
  csrmvEx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' a21' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 365 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE csrmvEx_bufferSize #-}
csrmvEx_bufferSize :: (Handle) -> (Algorithm) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr ()) -> (Type) -> (MatrixDescriptor) -> (DevicePtr ()) -> (Type) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr ()) -> (Type) -> (Ptr ()) -> (Type) -> (DevicePtr ()) -> (Type) -> (Type) -> IO ((Int))
csrmvEx_bufferSize a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = cFromEnum a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = fromIntegral a6} in
  let {a7' = castPtr a7} in
  let {a8' = cFromEnum a8} in
  let {a9' = useMatDescr a9} in
  let {a10' = useDevP a10} in
  let {a11' = cFromEnum a11} in
  let {a12' = useDevP a12} in
  let {a13' = useDevP a13} in
  let {a14' = useDevP a14} in
  let {a15' = cFromEnum a15} in
  let {a16' = castPtr a16} in
  let {a17' = cFromEnum a17} in
  let {a18' = useDevP a18} in
  let {a19' = cFromEnum a19} in
  let {a20' = cFromEnum a20} in
  alloca $ \a21' ->
  csrmvEx_bufferSize'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' a21' >>= \res ->
  checkStatus res >>
  peekIntConv  a21'>>= \a21'' ->
  return (a21'')

{-# LINE 368 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE scsrmv_mp #-}
scsrmv_mp :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Float) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Float) -> (Ptr Float) -> (DevicePtr Float) -> IO ()
scsrmv_mp a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useMatDescr a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  let {a12' = castPtr a12} in
  let {a13' = useDevP a13} in
  scsrmv_mp'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 371 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE dcsrmv_mp #-}
dcsrmv_mp :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Double) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Double) -> (Ptr Double) -> (DevicePtr Double) -> IO ()
dcsrmv_mp a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useMatDescr a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  let {a12' = castPtr a12} in
  let {a13' = useDevP a13} in
  dcsrmv_mp'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 374 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE ccsrmv_mp #-}
ccsrmv_mp :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Float)) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> IO ()
ccsrmv_mp a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useMatDescr a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  let {a12' = castPtr a12} in
  let {a13' = useDevP a13} in
  ccsrmv_mp'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 377 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE zcsrmv_mp #-}
zcsrmv_mp :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Double)) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> IO ()
zcsrmv_mp a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = fromIntegral a5} in
  let {a6' = castPtr a6} in
  let {a7' = useMatDescr a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = useDevP a11} in
  let {a12' = castPtr a12} in
  let {a13' = useDevP a13} in
  zcsrmv_mp'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 380 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE csrsv_analysisEx #-}
csrsv_analysisEx :: (Handle) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr ()) -> (Type) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info) -> (Type) -> IO ()
csrsv_analysisEx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = fromIntegral a4} in
  let {a5' = useMatDescr a5} in
  let {a6' = useDevP a6} in
  let {a7' = cFromEnum a7} in
  let {a8' = useDevP a8} in
  let {a9' = useDevP a9} in
  let {a10' = useInfo a10} in
  let {a11' = cFromEnum a11} in
  csrsv_analysisEx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 383 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


{-# INLINEABLE csrsv_solveEx #-}
csrsv_solveEx :: (Handle) -> (Operation) -> (Int) -> (Ptr ()) -> (Type) -> (MatrixDescriptor) -> (DevicePtr ()) -> (Type) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info) -> (DevicePtr ()) -> (Type) -> (DevicePtr ()) -> (Type) -> (Type) -> IO ()
csrsv_solveEx a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 =
  let {a1' = useHandle a1} in
  let {a2' = cFromEnum a2} in
  let {a3' = fromIntegral a3} in
  let {a4' = castPtr a4} in
  let {a5' = cFromEnum a5} in
  let {a6' = useMatDescr a6} in
  let {a7' = useDevP a7} in
  let {a8' = cFromEnum a8} in
  let {a9' = useDevP a9} in
  let {a10' = useDevP a10} in
  let {a11' = useInfo a11} in
  let {a12' = useDevP a12} in
  let {a13' = cFromEnum a13} in
  let {a14' = useDevP a14} in
  let {a15' = cFromEnum a15} in
  let {a16' = cFromEnum a16} in
  csrsv_solveEx'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' >>= \res ->
  checkStatus res >>
  return ()

{-# LINE 412 "./Foreign/CUDA/BLAS/Sparse/Level2.chs" #-}


foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseSbsrmv"
  sbsrmv'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (IO C2HSImp.CInt))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseDbsrmv"
  dbsrmv'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (IO C2HSImp.CInt))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseCbsrmv"
  cbsrmv'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseZbsrmv"
  zbsrmv'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseSbsrxmv"
  sbsrxmv'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (IO C2HSImp.CInt)))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseDbsrxmv"
  dbsrxmv'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (IO C2HSImp.CInt)))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseCbsrxmv"
  cbsrxmv'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseZbsrxmv"
  zbsrxmv'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseScsrmv"
  scsrmv'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseDcsrmv"
  dcsrmv'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseCcsrmv"
  ccsrmv'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseZcsrmv"
  zcsrmv'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseSbsrsv2_bufferSize"
  sbsrsv2_bufferSize'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseDbsrsv2_bufferSize"
  dbsrsv2_bufferSize'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseCbsrsv2_bufferSize"
  cbsrsv2_bufferSize'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseZbsrsv2_bufferSize"
  zbsrsv2_bufferSize'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseSbsrsv2_analysis"
  sbsrsv2_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseDbsrsv2_analysis"
  dbsrsv2_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseCbsrsv2_analysis"
  cbsrsv2_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseZbsrsv2_analysis"
  zbsrsv2_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseSbsrsv2_solve"
  sbsrsv2_solve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseDbsrsv2_solve"
  dbsrsv2_solve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseCbsrsv2_solve"
  cbsrsv2_solve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseZbsrsv2_solve"
  zbsrsv2_solve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseXbsrsv2_zeroPivot"
  xbsrsv2_zeroPivot'_ :: ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseScsrsv_analysis"
  scsrsv_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseDcsrsv_analysis"
  dcsrsv_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseCcsrsv_analysis"
  ccsrsv_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseZcsrsv_analysis"
  zcsrsv_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseScsrsv_solve"
  scsrsv_solve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseDcsrsv_solve"
  dcsrsv_solve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseCcsrsv_solve"
  ccsrsv_solve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseZcsrsv_solve"
  zcsrsv_solve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseScsrsv2_bufferSize"
  scsrsv2_bufferSize'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseDcsrsv2_bufferSize"
  dcsrsv2_bufferSize'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseCcsrsv2_bufferSize"
  ccsrsv2_bufferSize'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseZcsrsv2_bufferSize"
  zcsrsv2_bufferSize'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseScsrsv2_analysis"
  scsrsv2_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseDcsrsv2_analysis"
  dcsrsv2_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseCcsrsv2_analysis"
  ccsrsv2_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseZcsrsv2_analysis"
  zcsrsv2_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseScsrsv2_solve"
  scsrsv2_solve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseDcsrsv2_solve"
  dcsrsv2_solve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseCcsrsv2_solve"
  ccsrsv2_solve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseZcsrsv2_solve"
  zcsrsv2_solve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseXcsrsv2_zeroPivot"
  xcsrsv2_zeroPivot'_ :: ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseShybmv"
  shybmv'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseDhybmv"
  dhybmv'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseChybmv"
  chybmv'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseZhybmv"
  zhybmv'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseShybsv_analysis"
  shybsv_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseDhybsv_analysis"
  dhybsv_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseChybsv_analysis"
  chybsv_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseZhybsv_analysis"
  zhybsv_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseShybsv_solve"
  shybsv_solve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseDhybsv_solve"
  dhybsv_solve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseChybsv_solve"
  chybsv_solve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseZhybsv_solve"
  zhybsv_solve'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseSgemvi"
  sgemvi'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseDgemvi"
  dgemvi'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseCgemvi"
  cgemvi'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseZgemvi"
  zgemvi'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseSgemvi_bufferSize"
  sgemvi_bufferSize'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseDgemvi_bufferSize"
  dgemvi_bufferSize'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseCgemvi_bufferSize"
  cgemvi_bufferSize'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseZgemvi_bufferSize"
  zgemvi_bufferSize'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseCsrmvEx"
  csrmvEx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseCsrmvEx_bufferSize"
  csrmvEx_bufferSize'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt))))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseScsrmv_mp"
  scsrmv_mp'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseDcsrmv_mp"
  dcsrmv_mp'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseCcsrmv_mp"
  ccsrmv_mp'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseZcsrmv_mp"
  zcsrmv_mp'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseCsrsv_analysisEx"
  csrsv_analysisEx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level2.chs.h cusparseCsrsv_solveEx"
  csrsv_solveEx'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))))