/*
 *   -- micMAGMA (version 0.1) --
 *      Univ. of Tennessee, Knoxville
 *      Univ. of California, Berkeley
 *      Univ. of Colorado, Denver
 *      April 2012
 *
 *   @author Azzam Haidar
 *   @author Khairul Kabir 
 *
 *   @generated c Fri Nov 22 14:21:23 2013
 */

#ifndef MAGMA_C_BINDINGS
#define MAGMA_C_BINDINGS
typedef struct {
    magma_int_t n;
    magmaFloatComplex_const_ptr x;
    magma_int_t incx;
    magmaFloatComplex_const_ptr y;
    magma_int_t incy;
} magma_mic_ccopy_param;

typedef struct {
    magma_trans_t transa;
    magma_trans_t transb;
    magma_int_t m;
    magma_int_t n;
    magma_int_t k;
    magmaFloatComplex alpha;
    magmaFloatComplex_const_ptr a;
    magma_int_t lda;
    magmaFloatComplex_const_ptr b;
    magma_int_t ldb;
    magmaFloatComplex beta;
    magmaFloatComplex_const_ptr c;
    magma_int_t ldc;
} magma_mic_cgemm_param;

typedef struct {
    magma_side_t side;
    magma_uplo_t uplo;
    magma_int_t m;
    magma_int_t n;
    magmaFloatComplex alpha;
    magmaFloatComplex_const_ptr a;
    magma_int_t lda;
    magmaFloatComplex_const_ptr b;
    magma_int_t ldb;
    magmaFloatComplex beta;
    magmaFloatComplex_const_ptr c;
    magma_int_t ldc;
    magma_int_t agboff;
} magma_mic_chemm_param;

typedef struct {
    magma_trans_t transa;
    magma_int_t m;
    magma_int_t n;
    magmaFloatComplex alpha;
    magmaFloatComplex_const_ptr a;
    magma_int_t lda;
    magmaFloatComplex_const_ptr x;
    magma_int_t incx;
    magmaFloatComplex beta;
    magmaFloatComplex_const_ptr y;
    magma_int_t incy;
} magma_mic_cgemv_param;

typedef struct {
    magma_trans_t uplo;
    magma_int_t n;
    magmaFloatComplex alpha;
    magmaFloatComplex_const_ptr a;
    magma_int_t lda;
    magmaFloatComplex_const_ptr x;
    magma_int_t incx;
    magmaFloatComplex beta;
    magmaFloatComplex_const_ptr y;
    magma_int_t incy;
} magma_mic_chemv_param;

typedef struct {
    magma_trans_t uplo;
    magma_int_t n;
    magmaFloatComplex alpha;
    magmaFloatComplex_const_ptr a;
    magma_int_t lda;
    magmaFloatComplex_const_ptr x;
    magma_int_t incx;
    magmaFloatComplex beta;
    magmaFloatComplex_const_ptr y;
    magma_int_t incy;
} magma_mic_csymv2_param;



typedef struct {
    magma_uplo_t uplo;
    magma_trans_t trans;
    magma_int_t n;
    magma_int_t k;
    float alpha;
    magmaFloatComplex_const_ptr a;
    magma_int_t lda;
    float beta;
    magmaFloatComplex_const_ptr c;
    magma_int_t ldc;
} magma_mic_cherk_param;

typedef struct {
    magma_uplo_t uplo;
    magma_trans_t trans;
    magma_int_t n;
    magma_int_t k;
    float alpha;
    magmaFloatComplex_const_ptr a;
    magma_int_t lda;
    magma_int_t aoff;
    float beta;
    magmaFloatComplex_const_ptr c;
    magma_int_t ldc;
    magma_int_t offset;
    magma_int_t nb;
    magma_int_t nmic;
    magma_int_t my_id;
} magma_mic_cherk_mmic_param;

typedef struct {
    magma_uplo_t uplo;
    magma_trans_t trans;
    magma_int_t n;
    magma_int_t k;
    magmaFloatComplex alpha;
    magmaFloatComplex_const_ptr a;
    magma_int_t lda;
    magmaFloatComplex_const_ptr b;
    magma_int_t ldb;
    float beta;
    magmaFloatComplex_const_ptr c;
    magma_int_t ldc;
    magma_int_t agboff;
} magma_mic_cher2k_param;

typedef struct {
    magma_uplo_t uplo;
    magma_trans_t trans;
    magma_int_t n;
    magma_int_t k;
    magmaFloatComplex alpha;
    magmaFloatComplex_const_ptr a;
    magma_int_t lda;
    magma_int_t aoff;
    magmaFloatComplex_const_ptr b;
    magma_int_t ldb;
    magma_int_t boff;
    float beta;
    magmaFloatComplex_const_ptr c;
    magma_int_t ldc;
    magma_int_t offset;
    magma_int_t nb;
    magma_int_t nmic;
    magma_int_t my_id;
} magma_mic_cher2k_mmic_param;

typedef struct {
    magma_side_t side;
    magma_uplo_t uplo;
    magma_trans_t transa;
    magma_diag_t diag;
    magma_int_t m;
    magma_int_t n;
    magmaFloatComplex alpha;
    magmaFloatComplex_const_ptr a;
    magma_int_t lda;
    magmaFloatComplex_const_ptr b;
    magma_int_t ldb;
} magma_mic_ctrsm_param;

typedef struct {
    magma_mic_ctrsm_param trsm_param;
    magma_mic_cgemm_param gemm_param;
} magma_mic_ctrsmgemm_param;

typedef struct {
  magma_uplo_t uplo;
  magma_trans_t trans;
  magma_diag_t diag;
  magma_int_t n;
  magmaFloatComplex alpha;
  magmaFloatComplex_const_ptr a;
  magma_int_t lda;
  magmaFloatComplex_const_ptr dx;
  magma_int_t incx;
} magma_mic_ctrsv_param;

typedef struct {
  magma_uplo_t uplo;
  magma_trans_t trans;
  magma_diag_t diag;
  magma_int_t n;
  magmaFloatComplex alpha;
  magmaFloatComplex_const_ptr a;
  magma_int_t lda;
  magmaFloatComplex_const_ptr dx;
  magma_int_t incx;
} magma_mic_ctrmv_param;
 
typedef struct {
    int direct;
    int storev;
    magma_int_t n;
    magma_int_t k;
    magmaFloatComplex_const_ptr v;
    magma_int_t ldv;
    magmaFloatComplex_const_ptr tau;
    magmaFloatComplex_const_ptr t;
    magma_int_t ldt;
} magma_mic_clarft_param;


typedef struct {
    magma_int_t side;
    magma_int_t trans;
    magma_int_t direct;
    magma_int_t storev;
    magma_int_t m;
    magma_int_t n;
    magma_int_t k;
    magmaFloatComplex_const_ptr v;
    magma_int_t ldv;
    magmaFloatComplex_const_ptr t;
    magma_int_t ldt;
    magmaFloatComplex_const_ptr c;
    magma_int_t ldc;
    magmaFloatComplex_const_ptr work;
    magma_int_t ldwork;
} magma_mic_clarfb_param;

typedef struct {
    magma_int_t side;
    magma_int_t trans;
    magma_int_t direct;
    magma_int_t storev;
    magma_int_t m;
    magma_int_t n;
    magma_int_t k;
    magmaFloatComplex_const_ptr v;
    magma_int_t ldv;
    magmaFloatComplex_const_ptr t;
    magma_int_t ldt;
    magmaFloatComplex_const_ptr c;
    magma_int_t ldc;
    magmaFloatComplex_const_ptr work;
    magma_int_t ldwork;
    magmaFloatComplex_const_ptr workvt;
    magma_int_t ldworkvt;
} magma_mic_clarfb_gemm_param;

typedef struct {
    magma_uplo_t uplo;
    magma_int_t m;
    magma_int_t n;
    magmaFloatComplex alpha;
    magmaFloatComplex beta;
    magmaFloatComplex_const_ptr dA;
    magma_int_t lda;
} magma_mic_claset_param;

typedef struct {
    magma_side_t side;
    magma_uplo_t uplo;
    magma_trans_t transa;
    magma_diag_t diag;
    magma_int_t m;
    magma_int_t n;
    magmaFloatComplex alpha;
    magmaFloatComplex_const_ptr a;
    magma_int_t lda;
    magmaFloatComplex_const_ptr b;
    magma_int_t ldb;
} magma_mic_ctrmm_param;


typedef struct {
    magmaFloatComplex_const_ptr odata;
    magma_int_t ldo;
    magmaFloatComplex_const_ptr idata;
    magma_int_t ldi;
    magma_int_t m;
    magma_int_t n;
} magma_mic_ctranspose_param;


/*
typedef struct {
    magmaFloatComplex_const_ptr d_AT;
    magma_int_t lda;
    magma_int_t *d_ipiv;
    magma_int_t nb;
    magma_int_t ind;
} magma_mic_claswp_param;
*/


typedef struct {
    magma_int_t n;
    magmaFloatComplex_const_ptr d_A;
    magma_int_t lda;
    magma_int_t k1;
    magma_int_t k2;
    magma_int_t *d_ipiv;
    magma_int_t incx;
} magma_mic_claswp_param;


typedef struct {
    magma_int_t n;
    magmaFloatComplex *dA1T;
    magma_int_t lda1;
    magmaFloatComplex *dA2T;
    magma_int_t lda2;
} magma_mic_cswap_param;

#endif  // MAGMA_C_BINDINGS
