-- 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/Level3.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.Level3
-- 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-3 function reference:
--
-- <http://docs.nvidia.com/cuda/cusparse/index.html#cusparse-level-3-function-reference>
--

module Foreign.CUDA.BLAS.Sparse.Level3 (

  Operation(..),
  Policy(..),
  MatrixDescriptor,
  Info,
  Info_bsrsm2,
  Info_csrgemm2,
  Info_csrsm2,
  scsrmm,
  dcsrmm,
  ccsrmm,
  zcsrmm,
  scsrmm2,
  dcsrmm2,
  ccsrmm2,
  zcsrmm2,
  scsrsm_analysis,
  dcsrsm_analysis,
  ccsrsm_analysis,
  zcsrsm_analysis,
  scsrsm_solve,
  dcsrsm_solve,
  ccsrsm_solve,
  zcsrsm_solve,
  sbsrmm,
  dbsrmm,
  cbsrmm,
  zbsrmm,
  sbsrsm2_bufferSize,
  dbsrsm2_bufferSize,
  cbsrsm2_bufferSize,
  zbsrsm2_bufferSize,
  sbsrsm2_analysis,
  dbsrsm2_analysis,
  cbsrsm2_analysis,
  zbsrsm2_analysis,
  sbsrsm2_solve,
  dbsrsm2_solve,
  cbsrsm2_solve,
  zbsrsm2_solve,
  xbsrsm2_zeroPivot,
  xcsrgeamNnz,
  scsrgeam,
  dcsrgeam,
  ccsrgeam,
  zcsrgeam,
  xcsrgemmNnz,
  scsrgemm,
  dcsrgemm,
  ccsrgemm,
  zcsrgemm,
  scsrgemm2_bufferSizeExt,
  dcsrgemm2_bufferSizeExt,
  ccsrgemm2_bufferSizeExt,
  zcsrgemm2_bufferSizeExt,
  xcsrgemm2Nnz,
  scsrgemm2,
  dcsrgemm2,
  ccsrgemm2,
  zcsrgemm2,
  scsrsm2_bufferSizeExt,
  dcsrsm2_bufferSizeExt,
  ccsrsm2_bufferSizeExt,
  zcsrsm2_bufferSizeExt,
  scsrsm2_analysis,
  dcsrsm2_analysis,
  ccsrsm2_analysis,
  zcsrsm2_analysis,
  scsrsm2_solve,
  dcsrsm2_solve,
  ccsrsm2_solve,
  zcsrsm2_solve,
  xcsrsm2_zeroPivot,
  sgemmi,
  dgemmi,
  cgemmi,
  zgemmi,
  xcsrgeam2Nnz,
  scsrgeam2_bufferSizeExt,
  dcsrgeam2_bufferSizeExt,
  ccsrgeam2_bufferSizeExt,
  zcsrgeam2_bufferSizeExt,
  scsrgeam2,
  dcsrgeam2,
  ccsrgeam2,
  zcsrgeam2,

) 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 128 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

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


{-# INLINEABLE scsrmm #-}
scsrmm :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Int) -> (Ptr Float) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Float) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> IO ()
scsrmm 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' = 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' = useDevP a12} in 
  let {a13' = fromIntegral a13} in 
  let {a14' = castPtr a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = fromIntegral a16} in 
  scsrmm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 140 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE dcsrmm #-}
dcsrmm :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Int) -> (Ptr Double) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Double) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> IO ()
dcsrmm 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' = 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' = useDevP a12} in 
  let {a13' = fromIntegral a13} in 
  let {a14' = castPtr a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = fromIntegral a16} in 
  dcsrmm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 143 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE ccsrmm #-}
ccsrmm :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Float)) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> IO ()
ccsrmm 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' = 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' = useDevP a12} in 
  let {a13' = fromIntegral a13} in 
  let {a14' = castPtr a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = fromIntegral a16} in 
  ccsrmm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 146 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE zcsrmm #-}
zcsrmm :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Double)) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> IO ()
zcsrmm 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' = 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' = useDevP a12} in 
  let {a13' = fromIntegral a13} in 
  let {a14' = castPtr a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = fromIntegral a16} in 
  zcsrmm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 149 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE scsrmm2 #-}
scsrmm2 :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Int) -> (Ptr Float) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Float) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> IO ()
scsrmm2 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 =
  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' = fromIntegral a14} in 
  let {a15' = castPtr a15} in 
  let {a16' = useDevP a16} in 
  let {a17' = fromIntegral a17} in 
  scsrmm2'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 152 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE dcsrmm2 #-}
dcsrmm2 :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Int) -> (Ptr Double) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Double) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> IO ()
dcsrmm2 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 =
  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' = fromIntegral a14} in 
  let {a15' = castPtr a15} in 
  let {a16' = useDevP a16} in 
  let {a17' = fromIntegral a17} in 
  dcsrmm2'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 155 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE ccsrmm2 #-}
ccsrmm2 :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Float)) -> (Int) -> (Ptr (Complex Float)) -> (DevicePtr (Complex Float)) -> (Int) -> IO ()
ccsrmm2 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 =
  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' = fromIntegral a14} in 
  let {a15' = castPtr a15} in 
  let {a16' = useDevP a16} in 
  let {a17' = fromIntegral a17} in 
  ccsrmm2'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 158 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE zcsrmm2 #-}
zcsrmm2 :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Double)) -> (Int) -> (Ptr (Complex Double)) -> (DevicePtr (Complex Double)) -> (Int) -> IO ()
zcsrmm2 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 =
  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' = fromIntegral a14} in 
  let {a15' = castPtr a15} in 
  let {a16' = useDevP a16} in 
  let {a17' = fromIntegral a17} in 
  zcsrmm2'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 161 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE scsrsm_analysis #-}
scsrsm_analysis :: (Handle) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info) -> IO ()
scsrsm_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 
  scsrsm_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 164 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE dcsrsm_analysis #-}
dcsrsm_analysis :: (Handle) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info) -> IO ()
dcsrsm_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 
  dcsrsm_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 167 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE ccsrsm_analysis #-}
ccsrsm_analysis :: (Handle) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info) -> IO ()
ccsrsm_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 
  ccsrsm_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 170 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE zcsrsm_analysis #-}
zcsrsm_analysis :: (Handle) -> (Operation) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info) -> IO ()
zcsrsm_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 
  zcsrsm_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 173 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE scsrsm_solve #-}
scsrsm_solve :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Ptr Float) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info) -> (DevicePtr Float) -> (Int) -> (DevicePtr Float) -> (Int) -> IO ()
scsrsm_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 a10} in 
  let {a11' = useDevP a11} in 
  let {a12' = fromIntegral a12} in 
  let {a13' = useDevP a13} in 
  let {a14' = fromIntegral a14} in 
  scsrsm_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 176 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE dcsrsm_solve #-}
dcsrsm_solve :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Ptr Double) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info) -> (DevicePtr Double) -> (Int) -> (DevicePtr Double) -> (Int) -> IO ()
dcsrsm_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 a10} in 
  let {a11' = useDevP a11} in 
  let {a12' = fromIntegral a12} in 
  let {a13' = useDevP a13} in 
  let {a14' = fromIntegral a14} in 
  dcsrsm_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 179 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE ccsrsm_solve #-}
ccsrsm_solve :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info) -> (DevicePtr (Complex Float)) -> (Int) -> (DevicePtr (Complex Float)) -> (Int) -> IO ()
ccsrsm_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 a10} in 
  let {a11' = useDevP a11} in 
  let {a12' = fromIntegral a12} in 
  let {a13' = useDevP a13} in 
  let {a14' = fromIntegral a14} in 
  ccsrsm_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 182 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE zcsrsm_solve #-}
zcsrsm_solve :: (Handle) -> (Operation) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info) -> (DevicePtr (Complex Double)) -> (Int) -> (DevicePtr (Complex Double)) -> (Int) -> IO ()
zcsrsm_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 a10} in 
  let {a11' = useDevP a11} in 
  let {a12' = fromIntegral a12} in 
  let {a13' = useDevP a13} in 
  let {a14' = fromIntegral a14} in 
  zcsrsm_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 185 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 188 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 191 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 194 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 197 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE sbsrsm2_bufferSize #-}
sbsrsm2_bufferSize :: (Handle) -> (Direction) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsm2) -> IO ((Int))
sbsrsm2_bufferSize 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' = cFromEnum a4} in 
  let {a5' = fromIntegral a5} in 
  let {a6' = fromIntegral a6} in 
  let {a7' = fromIntegral 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' = useInfo_bsrsm2 a13} in 
  alloca $ \a14' -> 
  sbsrsm2_bufferSize'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >> 
  peekIntConv  a14'>>= \a14'' -> 
  return (a14'')

{-# LINE 200 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE dbsrsm2_bufferSize #-}
dbsrsm2_bufferSize :: (Handle) -> (Direction) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsm2) -> IO ((Int))
dbsrsm2_bufferSize 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' = cFromEnum a4} in 
  let {a5' = fromIntegral a5} in 
  let {a6' = fromIntegral a6} in 
  let {a7' = fromIntegral 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' = useInfo_bsrsm2 a13} in 
  alloca $ \a14' -> 
  dbsrsm2_bufferSize'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >> 
  peekIntConv  a14'>>= \a14'' -> 
  return (a14'')

{-# LINE 203 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE cbsrsm2_bufferSize #-}
cbsrsm2_bufferSize :: (Handle) -> (Direction) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsm2) -> IO ((Int))
cbsrsm2_bufferSize 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' = cFromEnum a4} in 
  let {a5' = fromIntegral a5} in 
  let {a6' = fromIntegral a6} in 
  let {a7' = fromIntegral 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' = useInfo_bsrsm2 a13} in 
  alloca $ \a14' -> 
  cbsrsm2_bufferSize'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >> 
  peekIntConv  a14'>>= \a14'' -> 
  return (a14'')

{-# LINE 206 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE zbsrsm2_bufferSize #-}
zbsrsm2_bufferSize :: (Handle) -> (Direction) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsm2) -> IO ((Int))
zbsrsm2_bufferSize 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' = cFromEnum a4} in 
  let {a5' = fromIntegral a5} in 
  let {a6' = fromIntegral a6} in 
  let {a7' = fromIntegral 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' = useInfo_bsrsm2 a13} in 
  alloca $ \a14' -> 
  zbsrsm2_bufferSize'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >> 
  peekIntConv  a14'>>= \a14'' -> 
  return (a14'')

{-# LINE 209 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE sbsrsm2_analysis #-}
sbsrsm2_analysis :: (Handle) -> (Direction) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsm2) -> (Policy) -> (DevicePtr ()) -> IO ()
sbsrsm2_analysis 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' = cFromEnum a4} in 
  let {a5' = fromIntegral a5} in 
  let {a6' = fromIntegral a6} in 
  let {a7' = fromIntegral 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' = useInfo_bsrsm2 a13} in 
  let {a14' = cFromEnum a14} in 
  let {a15' = useDevP a15} in 
  sbsrsm2_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 212 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE dbsrsm2_analysis #-}
dbsrsm2_analysis :: (Handle) -> (Direction) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsm2) -> (Policy) -> (DevicePtr ()) -> IO ()
dbsrsm2_analysis 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' = cFromEnum a4} in 
  let {a5' = fromIntegral a5} in 
  let {a6' = fromIntegral a6} in 
  let {a7' = fromIntegral 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' = useInfo_bsrsm2 a13} in 
  let {a14' = cFromEnum a14} in 
  let {a15' = useDevP a15} in 
  dbsrsm2_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 215 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE cbsrsm2_analysis #-}
cbsrsm2_analysis :: (Handle) -> (Direction) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsm2) -> (Policy) -> (DevicePtr ()) -> IO ()
cbsrsm2_analysis 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' = cFromEnum a4} in 
  let {a5' = fromIntegral a5} in 
  let {a6' = fromIntegral a6} in 
  let {a7' = fromIntegral 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' = useInfo_bsrsm2 a13} in 
  let {a14' = cFromEnum a14} in 
  let {a15' = useDevP a15} in 
  cbsrsm2_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 218 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE zbsrsm2_analysis #-}
zbsrsm2_analysis :: (Handle) -> (Direction) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsm2) -> (Policy) -> (DevicePtr ()) -> IO ()
zbsrsm2_analysis 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' = cFromEnum a4} in 
  let {a5' = fromIntegral a5} in 
  let {a6' = fromIntegral a6} in 
  let {a7' = fromIntegral 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' = useInfo_bsrsm2 a13} in 
  let {a14' = cFromEnum a14} in 
  let {a15' = useDevP a15} in 
  zbsrsm2_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 221 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE sbsrsm2_solve #-}
sbsrsm2_solve :: (Handle) -> (Direction) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Float) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsm2) -> (DevicePtr Float) -> (Int) -> (DevicePtr Float) -> (Int) -> (Policy) -> (Ptr ()) -> IO ()
sbsrsm2_solve 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' = cFromEnum 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' = fromIntegral a13} in 
  let {a14' = useInfo_bsrsm2 a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = fromIntegral a16} in 
  let {a17' = useDevP a17} in 
  let {a18' = fromIntegral a18} in 
  let {a19' = cFromEnum a19} in 
  let {a20' = castPtr a20} in 
  sbsrsm2_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 224 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE dbsrsm2_solve #-}
dbsrsm2_solve :: (Handle) -> (Direction) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Double) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsm2) -> (DevicePtr Double) -> (Int) -> (DevicePtr Double) -> (Int) -> (Policy) -> (Ptr ()) -> IO ()
dbsrsm2_solve 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' = cFromEnum 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' = fromIntegral a13} in 
  let {a14' = useInfo_bsrsm2 a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = fromIntegral a16} in 
  let {a17' = useDevP a17} in 
  let {a18' = fromIntegral a18} in 
  let {a19' = cFromEnum a19} in 
  let {a20' = castPtr a20} in 
  dbsrsm2_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 227 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE cbsrsm2_solve #-}
cbsrsm2_solve :: (Handle) -> (Direction) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsm2) -> (DevicePtr (Complex Float)) -> (Int) -> (DevicePtr (Complex Float)) -> (Int) -> (Policy) -> (Ptr ()) -> IO ()
cbsrsm2_solve 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' = cFromEnum 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' = fromIntegral a13} in 
  let {a14' = useInfo_bsrsm2 a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = fromIntegral a16} in 
  let {a17' = useDevP a17} in 
  let {a18' = fromIntegral a18} in 
  let {a19' = cFromEnum a19} in 
  let {a20' = castPtr a20} in 
  cbsrsm2_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 230 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE zbsrsm2_solve #-}
zbsrsm2_solve :: (Handle) -> (Direction) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Int) -> (Info_bsrsm2) -> (DevicePtr (Complex Double)) -> (Int) -> (DevicePtr (Complex Double)) -> (Int) -> (Policy) -> (Ptr ()) -> IO ()
zbsrsm2_solve 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' = cFromEnum 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' = fromIntegral a13} in 
  let {a14' = useInfo_bsrsm2 a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = fromIntegral a16} in 
  let {a17' = useDevP a17} in 
  let {a18' = fromIntegral a18} in 
  let {a19' = cFromEnum a19} in 
  let {a20' = castPtr a20} in 
  zbsrsm2_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 233 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 236 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 239 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 242 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 245 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 248 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 251 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE xcsrgemmNnz #-}
xcsrgemmNnz :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (Int) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (Int) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (DevicePtr Int32) -> (Ptr Int32) -> IO ()
xcsrgemmNnz a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 =
  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' = useMatDescr a7} in 
  let {a8' = fromIntegral a8} in 
  let {a9' = useDevP a9} in 
  let {a10' = useDevP a10} in 
  let {a11' = useMatDescr a11} in 
  let {a12' = fromIntegral a12} in 
  let {a13' = useDevP a13} in 
  let {a14' = useDevP a14} in 
  let {a15' = useMatDescr a15} in 
  let {a16' = useDevP a16} in 
  let {a17' = castPtr a17} in 
  xcsrgemmNnz'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 254 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE scsrgemm #-}
scsrgemm :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (Int) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (Int) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> IO ()
scsrgemm 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' = useMatDescr a7} in 
  let {a8' = fromIntegral a8} in 
  let {a9' = useDevP a9} in 
  let {a10' = useDevP a10} in 
  let {a11' = useDevP a11} in 
  let {a12' = useMatDescr a12} in 
  let {a13' = fromIntegral a13} in 
  let {a14' = useDevP a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = useDevP a16} in 
  let {a17' = useMatDescr a17} in 
  let {a18' = useDevP a18} in 
  let {a19' = useDevP a19} in 
  let {a20' = useDevP a20} in 
  scsrgemm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 257 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE dcsrgemm #-}
dcsrgemm :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (Int) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (Int) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> IO ()
dcsrgemm 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' = useMatDescr a7} in 
  let {a8' = fromIntegral a8} in 
  let {a9' = useDevP a9} in 
  let {a10' = useDevP a10} in 
  let {a11' = useDevP a11} in 
  let {a12' = useMatDescr a12} in 
  let {a13' = fromIntegral a13} in 
  let {a14' = useDevP a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = useDevP a16} in 
  let {a17' = useMatDescr a17} in 
  let {a18' = useDevP a18} in 
  let {a19' = useDevP a19} in 
  let {a20' = useDevP a20} in 
  dcsrgemm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 260 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE ccsrgemm #-}
ccsrgemm :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (Int) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (Int) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> IO ()
ccsrgemm 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' = useMatDescr a7} in 
  let {a8' = fromIntegral a8} in 
  let {a9' = useDevP a9} in 
  let {a10' = useDevP a10} in 
  let {a11' = useDevP a11} in 
  let {a12' = useMatDescr a12} in 
  let {a13' = fromIntegral a13} in 
  let {a14' = useDevP a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = useDevP a16} in 
  let {a17' = useMatDescr a17} in 
  let {a18' = useDevP a18} in 
  let {a19' = useDevP a19} in 
  let {a20' = useDevP a20} in 
  ccsrgemm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 263 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE zcsrgemm #-}
zcsrgemm :: (Handle) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (Int) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (Int) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> IO ()
zcsrgemm 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' = useMatDescr a7} in 
  let {a8' = fromIntegral a8} in 
  let {a9' = useDevP a9} in 
  let {a10' = useDevP a10} in 
  let {a11' = useDevP a11} in 
  let {a12' = useMatDescr a12} in 
  let {a13' = fromIntegral a13} in 
  let {a14' = useDevP a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = useDevP a16} in 
  let {a17' = useMatDescr a17} in 
  let {a18' = useDevP a18} in 
  let {a19' = useDevP a19} in 
  let {a20' = useDevP a20} in 
  zcsrgemm'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 267 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 270 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 273 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 276 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 279 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE xcsrgemm2Nnz #-}
xcsrgemm2Nnz :: (Handle) -> (Int) -> (Int) -> (Int) -> (MatrixDescriptor) -> (Int) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (Int) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (Int) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (DevicePtr Int32) -> (Ptr Int32) -> (Info_csrgemm2) -> (DevicePtr ()) -> IO ()
xcsrgemm2Nnz 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' = fromIntegral a2} in 
  let {a3' = fromIntegral a3} in 
  let {a4' = fromIntegral a4} in 
  let {a5' = useMatDescr a5} in 
  let {a6' = fromIntegral a6} in 
  let {a7' = useDevP a7} in 
  let {a8' = useDevP a8} in 
  let {a9' = useMatDescr a9} in 
  let {a10' = fromIntegral a10} in 
  let {a11' = useDevP a11} in 
  let {a12' = useDevP a12} in 
  let {a13' = useMatDescr a13} in 
  let {a14' = fromIntegral a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = useDevP a16} in 
  let {a17' = useMatDescr a17} in 
  let {a18' = useDevP a18} in 
  let {a19' = castPtr a19} in 
  let {a20' = useInfo_csrgemm2 a20} in 
  let {a21' = useDevP a21} in 
  xcsrgemm2Nnz'_ 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 282 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE scsrgemm2 #-}
scsrgemm2 :: (Handle) -> (Int) -> (Int) -> (Int) -> (Ptr Float) -> (MatrixDescriptor) -> (Int) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (Int) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Ptr Float) -> (MatrixDescriptor) -> (Int) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrgemm2) -> (DevicePtr ()) -> IO ()
scsrgemm2 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 a21 a22 a23 a24 a25 a26 a27 =
  let {a1' = useHandle a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = fromIntegral a3} in 
  let {a4' = fromIntegral a4} in 
  let {a5' = castPtr a5} in 
  let {a6' = useMatDescr a6} in 
  let {a7' = fromIntegral a7} in 
  let {a8' = useDevP a8} in 
  let {a9' = useDevP a9} in 
  let {a10' = useDevP a10} in 
  let {a11' = useMatDescr a11} in 
  let {a12' = fromIntegral a12} in 
  let {a13' = useDevP a13} in 
  let {a14' = useDevP a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = castPtr a16} in 
  let {a17' = useMatDescr a17} in 
  let {a18' = fromIntegral a18} in 
  let {a19' = useDevP a19} in 
  let {a20' = useDevP a20} in 
  let {a21' = useDevP a21} in 
  let {a22' = useMatDescr a22} in 
  let {a23' = useDevP a23} in 
  let {a24' = useDevP a24} in 
  let {a25' = useDevP a25} in 
  let {a26' = useInfo_csrgemm2 a26} in 
  let {a27' = useDevP a27} in 
  scsrgemm2'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' a21' a22' a23' a24' a25' a26' a27' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 285 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE dcsrgemm2 #-}
dcsrgemm2 :: (Handle) -> (Int) -> (Int) -> (Int) -> (Ptr Double) -> (MatrixDescriptor) -> (Int) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (Int) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Ptr Double) -> (MatrixDescriptor) -> (Int) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrgemm2) -> (DevicePtr ()) -> IO ()
dcsrgemm2 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 a21 a22 a23 a24 a25 a26 a27 =
  let {a1' = useHandle a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = fromIntegral a3} in 
  let {a4' = fromIntegral a4} in 
  let {a5' = castPtr a5} in 
  let {a6' = useMatDescr a6} in 
  let {a7' = fromIntegral a7} in 
  let {a8' = useDevP a8} in 
  let {a9' = useDevP a9} in 
  let {a10' = useDevP a10} in 
  let {a11' = useMatDescr a11} in 
  let {a12' = fromIntegral a12} in 
  let {a13' = useDevP a13} in 
  let {a14' = useDevP a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = castPtr a16} in 
  let {a17' = useMatDescr a17} in 
  let {a18' = fromIntegral a18} in 
  let {a19' = useDevP a19} in 
  let {a20' = useDevP a20} in 
  let {a21' = useDevP a21} in 
  let {a22' = useMatDescr a22} in 
  let {a23' = useDevP a23} in 
  let {a24' = useDevP a24} in 
  let {a25' = useDevP a25} in 
  let {a26' = useInfo_csrgemm2 a26} in 
  let {a27' = useDevP a27} in 
  dcsrgemm2'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' a21' a22' a23' a24' a25' a26' a27' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 288 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE ccsrgemm2 #-}
ccsrgemm2 :: (Handle) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (Int) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (Int) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (Int) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrgemm2) -> (DevicePtr ()) -> IO ()
ccsrgemm2 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 a21 a22 a23 a24 a25 a26 a27 =
  let {a1' = useHandle a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = fromIntegral a3} in 
  let {a4' = fromIntegral a4} in 
  let {a5' = castPtr a5} in 
  let {a6' = useMatDescr a6} in 
  let {a7' = fromIntegral a7} in 
  let {a8' = useDevP a8} in 
  let {a9' = useDevP a9} in 
  let {a10' = useDevP a10} in 
  let {a11' = useMatDescr a11} in 
  let {a12' = fromIntegral a12} in 
  let {a13' = useDevP a13} in 
  let {a14' = useDevP a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = castPtr a16} in 
  let {a17' = useMatDescr a17} in 
  let {a18' = fromIntegral a18} in 
  let {a19' = useDevP a19} in 
  let {a20' = useDevP a20} in 
  let {a21' = useDevP a21} in 
  let {a22' = useMatDescr a22} in 
  let {a23' = useDevP a23} in 
  let {a24' = useDevP a24} in 
  let {a25' = useDevP a25} in 
  let {a26' = useInfo_csrgemm2 a26} in 
  let {a27' = useDevP a27} in 
  ccsrgemm2'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' a21' a22' a23' a24' a25' a26' a27' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 291 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE zcsrgemm2 #-}
zcsrgemm2 :: (Handle) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (Int) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (Int) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (Int) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Info_csrgemm2) -> (DevicePtr ()) -> IO ()
zcsrgemm2 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 a21 a22 a23 a24 a25 a26 a27 =
  let {a1' = useHandle a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = fromIntegral a3} in 
  let {a4' = fromIntegral a4} in 
  let {a5' = castPtr a5} in 
  let {a6' = useMatDescr a6} in 
  let {a7' = fromIntegral a7} in 
  let {a8' = useDevP a8} in 
  let {a9' = useDevP a9} in 
  let {a10' = useDevP a10} in 
  let {a11' = useMatDescr a11} in 
  let {a12' = fromIntegral a12} in 
  let {a13' = useDevP a13} in 
  let {a14' = useDevP a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = castPtr a16} in 
  let {a17' = useMatDescr a17} in 
  let {a18' = fromIntegral a18} in 
  let {a19' = useDevP a19} in 
  let {a20' = useDevP a20} in 
  let {a21' = useDevP a21} in 
  let {a22' = useMatDescr a22} in 
  let {a23' = useDevP a23} in 
  let {a24' = useDevP a24} in 
  let {a25' = useDevP a25} in 
  let {a26' = useInfo_csrgemm2 a26} in 
  let {a27' = useDevP a27} in 
  zcsrgemm2'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' a21' a22' a23' a24' a25' a26' a27' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 324 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE scsrsm2_bufferSizeExt #-}
scsrsm2_bufferSizeExt :: (Handle) -> (Int) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Float) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Float) -> (Int) -> (Info_csrsm2) -> (Policy) -> IO ((Int))
scsrsm2_bufferSizeExt a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 =
  let {a1' = useHandle a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = cFromEnum a3} in 
  let {a4' = cFromEnum 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' = fromIntegral a14} in 
  let {a15' = useInfo_csrsm2 a15} in 
  let {a16' = cFromEnum a16} in 
  alloca $ \a17' -> 
  scsrsm2_bufferSizeExt'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
  checkStatus res >> 
  peekIntConv  a17'>>= \a17'' -> 
  return (a17'')

{-# LINE 327 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE dcsrsm2_bufferSizeExt #-}
dcsrsm2_bufferSizeExt :: (Handle) -> (Int) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Double) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Double) -> (Int) -> (Info_csrsm2) -> (Policy) -> IO ((Int))
dcsrsm2_bufferSizeExt a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 =
  let {a1' = useHandle a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = cFromEnum a3} in 
  let {a4' = cFromEnum 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' = fromIntegral a14} in 
  let {a15' = useInfo_csrsm2 a15} in 
  let {a16' = cFromEnum a16} in 
  alloca $ \a17' -> 
  dcsrsm2_bufferSizeExt'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
  checkStatus res >> 
  peekIntConv  a17'>>= \a17'' -> 
  return (a17'')

{-# LINE 330 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE ccsrsm2_bufferSizeExt #-}
ccsrsm2_bufferSizeExt :: (Handle) -> (Int) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Float)) -> (Int) -> (Info_csrsm2) -> (Policy) -> IO ((Int))
ccsrsm2_bufferSizeExt a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 =
  let {a1' = useHandle a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = cFromEnum a3} in 
  let {a4' = cFromEnum 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' = fromIntegral a14} in 
  let {a15' = useInfo_csrsm2 a15} in 
  let {a16' = cFromEnum a16} in 
  alloca $ \a17' -> 
  ccsrsm2_bufferSizeExt'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
  checkStatus res >> 
  peekIntConv  a17'>>= \a17'' -> 
  return (a17'')

{-# LINE 333 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE zcsrsm2_bufferSizeExt #-}
zcsrsm2_bufferSizeExt :: (Handle) -> (Int) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Double)) -> (Int) -> (Info_csrsm2) -> (Policy) -> IO ((Int))
zcsrsm2_bufferSizeExt a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 =
  let {a1' = useHandle a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = cFromEnum a3} in 
  let {a4' = cFromEnum 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' = fromIntegral a14} in 
  let {a15' = useInfo_csrsm2 a15} in 
  let {a16' = cFromEnum a16} in 
  alloca $ \a17' -> 
  zcsrsm2_bufferSizeExt'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
  checkStatus res >> 
  peekIntConv  a17'>>= \a17'' -> 
  return (a17'')

{-# LINE 336 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE scsrsm2_analysis #-}
scsrsm2_analysis :: (Handle) -> (Int) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Float) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Float) -> (Int) -> (Info_csrsm2) -> (Policy) -> (DevicePtr ()) -> IO ()
scsrsm2_analysis a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 =
  let {a1' = useHandle a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = cFromEnum a3} in 
  let {a4' = cFromEnum 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' = fromIntegral a14} in 
  let {a15' = useInfo_csrsm2 a15} in 
  let {a16' = cFromEnum a16} in 
  let {a17' = useDevP a17} in 
  scsrsm2_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 339 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE dcsrsm2_analysis #-}
dcsrsm2_analysis :: (Handle) -> (Int) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Double) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Double) -> (Int) -> (Info_csrsm2) -> (Policy) -> (DevicePtr ()) -> IO ()
dcsrsm2_analysis a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 =
  let {a1' = useHandle a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = cFromEnum a3} in 
  let {a4' = cFromEnum 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' = fromIntegral a14} in 
  let {a15' = useInfo_csrsm2 a15} in 
  let {a16' = cFromEnum a16} in 
  let {a17' = useDevP a17} in 
  dcsrsm2_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 342 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE ccsrsm2_analysis #-}
ccsrsm2_analysis :: (Handle) -> (Int) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Float)) -> (Int) -> (Info_csrsm2) -> (Policy) -> (DevicePtr ()) -> IO ()
ccsrsm2_analysis a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 =
  let {a1' = useHandle a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = cFromEnum a3} in 
  let {a4' = cFromEnum 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' = fromIntegral a14} in 
  let {a15' = useInfo_csrsm2 a15} in 
  let {a16' = cFromEnum a16} in 
  let {a17' = useDevP a17} in 
  ccsrsm2_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 345 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE zcsrsm2_analysis #-}
zcsrsm2_analysis :: (Handle) -> (Int) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Double)) -> (Int) -> (Info_csrsm2) -> (Policy) -> (DevicePtr ()) -> IO ()
zcsrsm2_analysis a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 =
  let {a1' = useHandle a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = cFromEnum a3} in 
  let {a4' = cFromEnum 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' = fromIntegral a14} in 
  let {a15' = useInfo_csrsm2 a15} in 
  let {a16' = cFromEnum a16} in 
  let {a17' = useDevP a17} in 
  zcsrsm2_analysis'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 348 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE scsrsm2_solve #-}
scsrsm2_solve :: (Handle) -> (Int) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Float) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Float) -> (Int) -> (Info_csrsm2) -> (Policy) -> (DevicePtr ()) -> IO ()
scsrsm2_solve a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 =
  let {a1' = useHandle a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = cFromEnum a3} in 
  let {a4' = cFromEnum 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' = fromIntegral a14} in 
  let {a15' = useInfo_csrsm2 a15} in 
  let {a16' = cFromEnum a16} in 
  let {a17' = useDevP a17} in 
  scsrsm2_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 351 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE dcsrsm2_solve #-}
dcsrsm2_solve :: (Handle) -> (Int) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr Double) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr Double) -> (Int) -> (Info_csrsm2) -> (Policy) -> (DevicePtr ()) -> IO ()
dcsrsm2_solve a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 =
  let {a1' = useHandle a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = cFromEnum a3} in 
  let {a4' = cFromEnum 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' = fromIntegral a14} in 
  let {a15' = useInfo_csrsm2 a15} in 
  let {a16' = cFromEnum a16} in 
  let {a17' = useDevP a17} in 
  dcsrsm2_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 354 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE ccsrsm2_solve #-}
ccsrsm2_solve :: (Handle) -> (Int) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Float)) -> (Int) -> (Info_csrsm2) -> (Policy) -> (DevicePtr ()) -> IO ()
ccsrsm2_solve a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 =
  let {a1' = useHandle a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = cFromEnum a3} in 
  let {a4' = cFromEnum 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' = fromIntegral a14} in 
  let {a15' = useInfo_csrsm2 a15} in 
  let {a16' = cFromEnum a16} in 
  let {a17' = useDevP a17} in 
  ccsrsm2_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 357 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE zcsrsm2_solve #-}
zcsrsm2_solve :: (Handle) -> (Int) -> (Operation) -> (Operation) -> (Int) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr (Complex Double)) -> (Int) -> (Info_csrsm2) -> (Policy) -> (DevicePtr ()) -> IO ()
zcsrsm2_solve a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 =
  let {a1' = useHandle a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = cFromEnum a3} in 
  let {a4' = cFromEnum 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' = fromIntegral a14} in 
  let {a15' = useInfo_csrsm2 a15} in 
  let {a16' = cFromEnum a16} in 
  let {a17' = useDevP a17} in 
  zcsrsm2_solve'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 360 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 363 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE sgemmi #-}
sgemmi :: (Handle) -> (Int) -> (Int) -> (Int) -> (Int) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Ptr Float) -> (DevicePtr Float) -> (Int) -> IO ()
sgemmi a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = fromIntegral a3} in 
  let {a4' = fromIntegral a4} in 
  let {a5' = fromIntegral a5} in 
  let {a6' = castPtr a6} in 
  let {a7' = useDevP a7} in 
  let {a8' = fromIntegral 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 
  let {a14' = fromIntegral a14} in 
  sgemmi'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 366 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE dgemmi #-}
dgemmi :: (Handle) -> (Int) -> (Int) -> (Int) -> (Int) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Ptr Double) -> (DevicePtr Double) -> (Int) -> IO ()
dgemmi a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 =
  let {a1' = useHandle a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = fromIntegral a3} in 
  let {a4' = fromIntegral a4} in 
  let {a5' = fromIntegral a5} in 
  let {a6' = castPtr a6} in 
  let {a7' = useDevP a7} in 
  let {a8' = fromIntegral 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 
  let {a14' = fromIntegral a14} in 
  dgemmi'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 369 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 372 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 375 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 378 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 381 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 384 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 387 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


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

{-# LINE 390 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE scsrgeam2 #-}
scsrgeam2 :: (Handle) -> (Int) -> (Int) -> (Ptr Float) -> (MatrixDescriptor) -> (Int) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Ptr Float) -> (MatrixDescriptor) -> (Int) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (DevicePtr Float) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr ()) -> IO ()
scsrgeam2 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' = fromIntegral a2} in 
  let {a3' = fromIntegral a3} in 
  let {a4' = castPtr a4} in 
  let {a5' = useMatDescr a5} in 
  let {a6' = fromIntegral a6} in 
  let {a7' = useDevP a7} in 
  let {a8' = useDevP a8} in 
  let {a9' = useDevP a9} in 
  let {a10' = castPtr a10} in 
  let {a11' = useMatDescr a11} in 
  let {a12' = fromIntegral a12} in 
  let {a13' = useDevP a13} in 
  let {a14' = useDevP a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = useMatDescr a16} in 
  let {a17' = useDevP a17} in 
  let {a18' = useDevP a18} in 
  let {a19' = useDevP a19} in 
  let {a20' = useDevP a20} in 
  scsrgeam2'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 393 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE dcsrgeam2 #-}
dcsrgeam2 :: (Handle) -> (Int) -> (Int) -> (Ptr Double) -> (MatrixDescriptor) -> (Int) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Ptr Double) -> (MatrixDescriptor) -> (Int) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (DevicePtr Double) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr ()) -> IO ()
dcsrgeam2 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' = fromIntegral a2} in 
  let {a3' = fromIntegral a3} in 
  let {a4' = castPtr a4} in 
  let {a5' = useMatDescr a5} in 
  let {a6' = fromIntegral a6} in 
  let {a7' = useDevP a7} in 
  let {a8' = useDevP a8} in 
  let {a9' = useDevP a9} in 
  let {a10' = castPtr a10} in 
  let {a11' = useMatDescr a11} in 
  let {a12' = fromIntegral a12} in 
  let {a13' = useDevP a13} in 
  let {a14' = useDevP a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = useMatDescr a16} in 
  let {a17' = useDevP a17} in 
  let {a18' = useDevP a18} in 
  let {a19' = useDevP a19} in 
  let {a20' = useDevP a20} in 
  dcsrgeam2'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 396 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE ccsrgeam2 #-}
ccsrgeam2 :: (Handle) -> (Int) -> (Int) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (Int) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Ptr (Complex Float)) -> (MatrixDescriptor) -> (Int) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (DevicePtr (Complex Float)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr ()) -> IO ()
ccsrgeam2 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' = fromIntegral a2} in 
  let {a3' = fromIntegral a3} in 
  let {a4' = castPtr a4} in 
  let {a5' = useMatDescr a5} in 
  let {a6' = fromIntegral a6} in 
  let {a7' = useDevP a7} in 
  let {a8' = useDevP a8} in 
  let {a9' = useDevP a9} in 
  let {a10' = castPtr a10} in 
  let {a11' = useMatDescr a11} in 
  let {a12' = fromIntegral a12} in 
  let {a13' = useDevP a13} in 
  let {a14' = useDevP a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = useMatDescr a16} in 
  let {a17' = useDevP a17} in 
  let {a18' = useDevP a18} in 
  let {a19' = useDevP a19} in 
  let {a20' = useDevP a20} in 
  ccsrgeam2'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 399 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


{-# INLINEABLE zcsrgeam2 #-}
zcsrgeam2 :: (Handle) -> (Int) -> (Int) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (Int) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (Ptr (Complex Double)) -> (MatrixDescriptor) -> (Int) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (MatrixDescriptor) -> (DevicePtr (Complex Double)) -> (DevicePtr Int32) -> (DevicePtr Int32) -> (DevicePtr ()) -> IO ()
zcsrgeam2 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' = fromIntegral a2} in 
  let {a3' = fromIntegral a3} in 
  let {a4' = castPtr a4} in 
  let {a5' = useMatDescr a5} in 
  let {a6' = fromIntegral a6} in 
  let {a7' = useDevP a7} in 
  let {a8' = useDevP a8} in 
  let {a9' = useDevP a9} in 
  let {a10' = castPtr a10} in 
  let {a11' = useMatDescr a11} in 
  let {a12' = fromIntegral a12} in 
  let {a13' = useDevP a13} in 
  let {a14' = useDevP a14} in 
  let {a15' = useDevP a15} in 
  let {a16' = useMatDescr a16} in 
  let {a17' = useDevP a17} in 
  let {a18' = useDevP a18} in 
  let {a19' = useDevP a19} in 
  let {a20' = useDevP a20} in 
  zcsrgeam2'_ a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15' a16' a17' a18' a19' a20' >>= \res ->
  checkStatus res >> 
  return ()

{-# LINE 482 "./Foreign/CUDA/BLAS/Sparse/Level3.chs" #-}


foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseScsrmm"
  scsrmm'_ :: ((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.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseDcsrmm"
  dcsrmm'_ :: ((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.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseCcsrmm"
  ccsrmm'_ :: ((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.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseZcsrmm"
  zcsrmm'_ :: ((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.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseScsrmm2"
  scsrmm2'_ :: ((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.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseDcsrmm2"
  dcsrmm2'_ :: ((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.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseCcsrmm2"
  ccsrmm2'_ :: ((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.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseZcsrmm2"
  zcsrmm2'_ :: ((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.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseScsrsm_analysis"
  scsrsm_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/Level3.chs.h cusparseDcsrsm_analysis"
  dcsrsm_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/Level3.chs.h cusparseCcsrsm_analysis"
  ccsrsm_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/Level3.chs.h cusparseZcsrsm_analysis"
  zcsrsm_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/Level3.chs.h cusparseScsrsm_solve"
  scsrsm_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.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseDcsrsm_solve"
  dcsrsm_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.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseCcsrsm_solve"
  ccsrsm_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.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseZcsrsm_solve"
  zcsrsm_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.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseSbsrmm"
  sbsrmm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (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.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseDbsrmm"
  dbsrmm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (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.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseCbsrmm"
  cbsrmm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (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.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseZbsrmm"
  zbsrmm'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (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.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseSbsrsm2_bufferSize"
  sbsrsm2_bufferSize'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (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/Level3.chs.h cusparseDbsrsm2_bufferSize"
  dbsrsm2_bufferSize'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (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/Level3.chs.h cusparseCbsrsm2_bufferSize"
  cbsrsm2_bufferSize'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (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/Level3.chs.h cusparseZbsrsm2_bufferSize"
  zbsrsm2_bufferSize'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (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/Level3.chs.h cusparseSbsrsm2_analysis"
  sbsrsm2_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (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/Level3.chs.h cusparseDbsrsm2_analysis"
  dbsrsm2_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (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/Level3.chs.h cusparseCbsrsm2_analysis"
  cbsrsm2_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (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/Level3.chs.h cusparseZbsrsm2_analysis"
  zbsrsm2_analysis'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (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/Level3.chs.h cusparseSbsrsm2_solve"
  sbsrsm2_solve'_ :: ((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.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseDbsrsm2_solve"
  dbsrsm2_solve'_ :: ((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.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseCbsrsm2_solve"
  cbsrsm2_solve'_ :: ((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.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseZbsrsm2_solve"
  zbsrsm2_solve'_ :: ((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.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))))))))))))

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

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseXcsrgeamNnz"
  xcsrgeamNnz'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((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.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))))))))))

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

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

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

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

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseXcsrgemmNnz"
  xcsrgemmNnz'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((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.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt))))))))))))))))))

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

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

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseCcsrgemm"
  ccsrgemm'_ :: ((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.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseZcsrgemm"
  zcsrgemm'_ :: ((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.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseScsrgemm2_bufferSizeExt"
  scsrgemm2_bufferSizeExt'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((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.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt)))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseDcsrgemm2_bufferSizeExt"
  dcsrgemm2_bufferSizeExt'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((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.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt)))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseCcsrgemm2_bufferSizeExt"
  ccsrgemm2_bufferSizeExt'_ :: ((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 -> ((C2HSImp.Ptr 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.CULong) -> (IO C2HSImp.CInt)))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseZcsrgemm2_bufferSizeExt"
  zcsrgemm2_bufferSizeExt'_ :: ((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 -> ((C2HSImp.Ptr 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.CULong) -> (IO C2HSImp.CInt)))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseXcsrgemm2Nnz"
  xcsrgemm2Nnz'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((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.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))))))))))

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

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

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseCcsrgemm2"
  ccsrgemm2'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((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.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseZcsrgemm2"
  zcsrgemm2'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((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.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseScsrsm2_bufferSizeExt"
  scsrsm2_bufferSizeExt'_ :: ((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.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseDcsrsm2_bufferSizeExt"
  dcsrsm2_bufferSizeExt'_ :: ((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.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseCcsrsm2_bufferSizeExt"
  ccsrsm2_bufferSizeExt'_ :: ((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.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseZcsrsm2_bufferSizeExt"
  zcsrsm2_bufferSizeExt'_ :: ((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.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseScsrsm2_analysis"
  scsrsm2_analysis'_ :: ((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.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseDcsrsm2_analysis"
  dcsrsm2_analysis'_ :: ((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.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseCcsrsm2_analysis"
  ccsrsm2_analysis'_ :: ((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.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseZcsrsm2_analysis"
  zcsrsm2_analysis'_ :: ((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.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseScsrsm2_solve"
  scsrsm2_solve'_ :: ((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.CFloat) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseDcsrsm2_solve"
  dcsrsm2_solve'_ :: ((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.CDouble) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseCcsrsm2_solve"
  ccsrsm2_solve'_ :: ((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.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseZcsrsm2_solve"
  zcsrsm2_solve'_ :: ((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.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))))))

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

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

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

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseCgemmi"
  cgemmi'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((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/Level3.chs.h cusparseZgemmi"
  zgemmi'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((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/Level3.chs.h cusparseXcsrgeam2Nnz"
  xcsrgeam2Nnz'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((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.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseScsrgeam2_bufferSizeExt"
  scsrgeam2_bufferSizeExt'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt)))))))))))))))))))))

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseDcsrgeam2_bufferSizeExt"
  dcsrgeam2_bufferSizeExt'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CULong) -> (IO C2HSImp.CInt)))))))))))))))))))))

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

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

foreign import ccall unsafe "Foreign/CUDA/BLAS/Sparse/Level3.chs.h cusparseScsrgeam2"
  scsrgeam2'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CFloat) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr 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/Level3.chs.h cusparseDcsrgeam2"
  dcsrgeam2'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CDouble) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr 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/Level3.chs.h cusparseCcsrgeam2"
  ccsrgeam2'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr 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/Level3.chs.h cusparseZcsrgeam2"
  zcsrgeam2'_ :: ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> (C2HSImp.CInt -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr ()) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr C2HSImp.CInt) -> ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt)))))))))))))))))))))