
#ifndef _EXTNAME_H
#define _EXTNAME_H

#ifndef F_CAPS

#define PCRC_IARGC        pcrc_iargc@SUFFIX@
#define PCRC_GETARG       pcrc_getarg@SUFFIX@

#define AD_INIT_ADLIB     ad_init_adlib@SUFFIX@
#define AD_FINALIZE_ADLIB ad_finalize_adlib@SUFFIX@

#define AD_STACK_ERR      ad_stack_err@SUFFIX@
#define AD_C_STACK_ERR    ad_c_stack_err@SUFFIX@

#define AD_INIT_PROCS     ad_init_procs@SUFFIX@
#define AD_DELETE_PROCS   ad_delete_procs@SUFFIX@

#define AD_SPLIT          ad_split@SUFFIX@
#define AD_ON             ad_on@SUFFIX@
#define AD_NO             ad_no@SUFFIX@
#define AD_MYID           ad_myid@SUFFIX@

#define AD_PROC_COORD     ad_proc_coord@SUFFIX@
#define AD_SCALAR_PROC    ad_scalar_proc@SUFFIX@

#define AD_REMAP_II       ad_remap_ii@SUFFIX@
#define AD_REMAP_RR       ad_remap_rr@SUFFIX@
#define AD_REMAP_DD       ad_remap_dd@SUFFIX@
#define AD_REMAP_ZZ       ad_remap_zz@SUFFIX@
#define AD_REMAP_LL       ad_remap_ll@SUFFIX@

#define AD_GATHER_II      ad_gather_ii@SUFFIX@
#define AD_GATHER_RR      ad_gather_rr@SUFFIX@
#define AD_GATHER_DD      ad_gather_dd@SUFFIX@
#define AD_GATHER_ZZ      ad_gather_zz@SUFFIX@
#define AD_GATHER_LL      ad_gather_ll@SUFFIX@

#define AD_SCATTER_II     ad_scatter_ii@SUFFIX@
#define AD_SCATTER_RR     ad_scatter_rr@SUFFIX@
#define AD_SCATTER_DD     ad_scatter_dd@SUFFIX@
#define AD_SCATTER_ZZ     ad_scatter_zz@SUFFIX@
#define AD_SCATTER_LL     ad_scatter_ll@SUFFIX@

#define AD_SCATTER_MASK_II  ad_scatter_mask_ii@SUFFIX@
#define AD_SCATTER_MASK_RR  ad_scatter_mask_rr@SUFFIX@
#define AD_SCATTER_MASK_DD  ad_scatter_mask_dd@SUFFIX@
#define AD_SCATTER_MASK_ZZ  ad_scatter_mask_zz@SUFFIX@
#define AD_SCATTER_MASK_LL  ad_scatter_mask_ll@SUFFIX@

#define AD_SPREAD_I       ad_spread_i@SUFFIX@
#define AD_SPREAD_R       ad_spread_r@SUFFIX@
#define AD_SPREAD_D       ad_spread_d@SUFFIX@
#define AD_SPREAD_Z       ad_spread_z@SUFFIX@
#define AD_SPREAD_L       ad_spread_l@SUFFIX@

#define AD_TRANSPOSE_I    ad_transpose_i@SUFFIX@
#define AD_TRANSPOSE_R    ad_transpose_r@SUFFIX@
#define AD_TRANSPOSE_D    ad_transpose_d@SUFFIX@
#define AD_TRANSPOSE_Z    ad_transpose_z@SUFFIX@
#define AD_TRANSPOSE_L    ad_transpose_l@SUFFIX@

#define AD_CSHIFT_S_I     ad_cshift_s_i@SUFFIX@
#define AD_CSHIFT_S_R     ad_cshift_s_r@SUFFIX@
#define AD_CSHIFT_S_D     ad_cshift_s_d@SUFFIX@
#define AD_CSHIFT_S_Z     ad_cshift_s_z@SUFFIX@
#define AD_CSHIFT_S_L     ad_cshift_s_l@SUFFIX@

#define AD_CSHIFT_A_I     ad_cshift_a_i@SUFFIX@
#define AD_CSHIFT_A_R     ad_cshift_a_r@SUFFIX@
#define AD_CSHIFT_A_D     ad_cshift_a_d@SUFFIX@
#define AD_CSHIFT_A_Z     ad_cshift_a_z@SUFFIX@
#define AD_CSHIFT_A_L     ad_cshift_a_l@SUFFIX@

#define AD_EOSHIFT_SS_I   ad_eoshift_ss_i@SUFFIX@
#define AD_EOSHIFT_SS_R   ad_eoshift_ss_r@SUFFIX@
#define AD_EOSHIFT_SS_D   ad_eoshift_ss_d@SUFFIX@
#define AD_EOSHIFT_SS_Z   ad_eoshift_ss_z@SUFFIX@
#define AD_EOSHIFT_SS_L   ad_eoshift_ss_l@SUFFIX@

#define AD_EOSHIFT_SA_I   ad_eoshift_sa_i@SUFFIX@
#define AD_EOSHIFT_SA_R   ad_eoshift_sa_r@SUFFIX@
#define AD_EOSHIFT_SA_D   ad_eoshift_sa_d@SUFFIX@
#define AD_EOSHIFT_SA_Z   ad_eoshift_sa_z@SUFFIX@
#define AD_EOSHIFT_SA_L   ad_eoshift_sa_l@SUFFIX@

#define AD_EOSHIFT_AS_I   ad_eoshift_as_i@SUFFIX@
#define AD_EOSHIFT_AS_R   ad_eoshift_as_r@SUFFIX@
#define AD_EOSHIFT_AS_D   ad_eoshift_as_d@SUFFIX@
#define AD_EOSHIFT_AS_Z   ad_eoshift_as_z@SUFFIX@
#define AD_EOSHIFT_AS_L   ad_eoshift_as_l@SUFFIX@

#define AD_EOSHIFT_AA_I   ad_eoshift_aa_i@SUFFIX@
#define AD_EOSHIFT_AA_R   ad_eoshift_aa_r@SUFFIX@
#define AD_EOSHIFT_AA_D   ad_eoshift_aa_d@SUFFIX@
#define AD_EOSHIFT_AA_Z   ad_eoshift_aa_z@SUFFIX@
#define AD_EOSHIFT_AA_l   ad_eoshift_aa_l@SUFFIX@

#define AD_RESHAPE_I      ad_reshape_i@SUFFIX@
#define AD_RESHAPE_R      ad_reshape_r@SUFFIX@
#define AD_RESHAPE_D      ad_reshape_d@SUFFIX@
#define AD_RESHAPE_Z      ad_reshape_z@SUFFIX@
#define AD_RESHAPE_L      ad_reshape_l@SUFFIX@

#define AD_DOT_PRODUCT_II ad_dot_product_ii@SUFFIX@
#define AD_DOT_PRODUCT_IR ad_dot_product_ir@SUFFIX@
#define AD_DOT_PRODUCT_ID ad_dot_product_id@SUFFIX@
#define AD_DOT_PRODUCT_IZ ad_dot_product_iz@SUFFIX@
#define AD_DOT_PRODUCT_RI ad_dot_product_ri@SUFFIX@
#define AD_DOT_PRODUCT_RR ad_dot_product_rr@SUFFIX@
#define AD_DOT_PRODUCT_RD ad_dot_product_rd@SUFFIX@
#define AD_DOT_PRODUCT_RZ ad_dot_product_rz@SUFFIX@
#define AD_DOT_PRODUCT_DI ad_dot_product_di@SUFFIX@
#define AD_DOT_PRODUCT_DR ad_dot_product_dr@SUFFIX@
#define AD_DOT_PRODUCT_DD ad_dot_product_dd@SUFFIX@
#define AD_DOT_PRODUCT_DZ ad_dot_product_dz@SUFFIX@
#define AD_DOT_PRODUCT_ZI ad_dot_product_zi@SUFFIX@
#define AD_DOT_PRODUCT_ZR ad_dot_product_zr@SUFFIX@
#define AD_DOT_PRODUCT_ZD ad_dot_product_zd@SUFFIX@
#define AD_DOT_PRODUCT_ZZ ad_dot_product_zz@SUFFIX@
#define AD_DOT_PRODUCT_LL ad_dot_product_ll@SUFFIX@

#define AD_MATMUL_II      ad_matmul_ii@SUFFIX@
#define AD_MATMUL_IR      ad_matmul_ir@SUFFIX@
#define AD_MATMUL_ID      ad_matmul_id@SUFFIX@
#define AD_MATMUL_IZ      ad_matmul_iz@SUFFIX@
#define AD_MATMUL_RI      ad_matmul_ri@SUFFIX@
#define AD_MATMUL_RR      ad_matmul_rr@SUFFIX@
#define AD_MATMUL_RD      ad_matmul_rd@SUFFIX@
#define AD_MATMUL_RZ      ad_matmul_rz@SUFFIX@
#define AD_MATMUL_DI      ad_matmul_di@SUFFIX@
#define AD_MATMUL_DR      ad_matmul_dr@SUFFIX@
#define AD_MATMUL_DD      ad_matmul_dd@SUFFIX@
#define AD_MATMUL_DZ      ad_matmul_dz@SUFFIX@
#define AD_MATMUL_ZI      ad_matmul_zi@SUFFIX@
#define AD_MATMUL_ZR      ad_matmul_zr@SUFFIX@
#define AD_MATMUL_ZD      ad_matmul_zd@SUFFIX@
#define AD_MATMUL_ZZ      ad_matmul_zz@SUFFIX@
#define AD_MATMUL_LL      ad_matmul_ll@SUFFIX@

#define AD_ALL            ad_all@SUFFIX@
#define AD_ANY            ad_any@SUFFIX@
#define AD_COUNT          ad_count@SUFFIX@
#define AD_ALL_DIM        ad_all_dim@SUFFIX@
#define AD_ANY_DIM        ad_any_dim@SUFFIX@
#define AD_COUNT_DIM      ad_count_dim@SUFFIX@

#define AD_MAXVAL_I       ad_maxval_i@SUFFIX@
#define AD_MAXVAL_R       ad_maxval_r@SUFFIX@
#define AD_MAXVAL_D       ad_maxval_d@SUFFIX@

#define AD_MINVAL_I       ad_minval_i@SUFFIX@
#define AD_MINVAL_R       ad_minval_r@SUFFIX@
#define AD_MINVAL_D       ad_minval_d@SUFFIX@

#define AD_SUM_I          ad_sum_i@SUFFIX@
#define AD_SUM_R          ad_sum_r@SUFFIX@
#define AD_SUM_D          ad_sum_d@SUFFIX@
#define AD_SUM_Z          ad_sum_z@SUFFIX@

#define AD_PRODUCT_I      ad_product_i@SUFFIX@
#define AD_PRODUCT_R      ad_product_r@SUFFIX@
#define AD_PRODUCT_D      ad_product_d@SUFFIX@
#define AD_PRODUCT_Z      ad_product_z@SUFFIX@

#define AD_MAXVAL_DIM_I   ad_maxval_dim_i@SUFFIX@
#define AD_MAXVAL_DIM_R   ad_maxval_dim_r@SUFFIX@
#define AD_MAXVAL_DIM_D   ad_maxval_dim_d@SUFFIX@

#define AD_MINVAL_DIM_I   ad_minval_dim_i@SUFFIX@
#define AD_MINVAL_DIM_R   ad_minval_dim_r@SUFFIX@
#define AD_MINVAL_DIM_D   ad_minval_dim_d@SUFFIX@

#define AD_SUM_DIM_I      ad_sum_dim_i@SUFFIX@
#define AD_SUM_DIM_R      ad_sum_dim_r@SUFFIX@
#define AD_SUM_DIM_D      ad_sum_dim_d@SUFFIX@
#define AD_SUM_DIM_Z      ad_sum_dim_z@SUFFIX@

#define AD_PRODUCT_DIM_I  ad_product_dim_i@SUFFIX@
#define AD_PRODUCT_DIM_R  ad_product_dim_r@SUFFIX@
#define AD_PRODUCT_DIM_D  ad_product_dim_d@SUFFIX@
#define AD_PRODUCT_DIM_Z  ad_product_dim_z@SUFFIX@

#define AD_MAXLOC_I       ad_maxloc_i@SUFFIX@
#define AD_MAXLOC_R       ad_maxloc_r@SUFFIX@
#define AD_MAXLOC_D       ad_maxloc_d@SUFFIX@

#define AD_MINLOC_I       ad_minloc_i@SUFFIX@
#define AD_MINLOC_R       ad_minloc_r@SUFFIX@
#define AD_MINLOC_D       ad_minloc_d@SUFFIX@

#define AD_MAXLOC_DIM_I   ad_maxloc_dim_i@SUFFIX@
#define AD_MAXLOC_DIM_R   ad_maxloc_dim_r@SUFFIX@
#define AD_MAXLOC_DIM_D   ad_maxloc_dim_d@SUFFIX@

#define AD_MINLOC_DIM_I   ad_minloc_dim_i@SUFFIX@
#define AD_MINLOC_DIM_R   ad_minloc_dim_r@SUFFIX@
#define AD_MINLOC_DIM_D   ad_minloc_dim_d@SUFFIX@

#endif

#endif

