| #ifndef COMMON_D_H |
| #define COMMON_D_H |
|
|
| #ifndef DYNAMIC_ARCH |
|
|
| #define DAMAX_K damax_k |
| #define DAMIN_K damin_k |
| #define DMAX_K dmax_k |
| #define DMIN_K dmin_k |
| #define IDAMAX_K idamax_k |
| #define IDAMIN_K idamin_k |
| #define IDMAX_K idmax_k |
| #define IDMIN_K idmin_k |
| #define DASUM_K dasum_k |
| #define DAXPYU_K daxpy_k |
| #define DAXPYC_K daxpy_k |
| #define DCOPY_K dcopy_k |
| #define DDOTU_K ddot_k |
| #define DDOTC_K ddot_k |
| #define DNRM2_K dnrm2_k |
| #define DSCAL_K dscal_k |
| #define DSWAP_K dswap_k |
| #define DROT_K drot_k |
|
|
| #define DGEMV_N dgemv_n |
| #define DGEMV_T dgemv_t |
| #define DGEMV_R dgemv_n |
| #define DGEMV_C dgemv_t |
| #define DGEMV_O dgemv_n |
| #define DGEMV_U dgemv_t |
| #define DGEMV_S dgemv_n |
| #define DGEMV_D dgemv_t |
|
|
| #define DGERU_K dger_k |
| #define DGERC_K dger_k |
| #define DGERV_K dger_k |
| #define DGERD_K dger_k |
|
|
| #define DSYMV_U dsymv_U |
| #define DSYMV_L dsymv_L |
|
|
| #define DSYMV_THREAD_U dsymv_thread_U |
| #define DSYMV_THREAD_L dsymv_thread_L |
|
|
| #define DGEMM_ONCOPY dgemm_oncopy |
| #define DGEMM_OTCOPY dgemm_otcopy |
|
|
| #if DGEMM_DEFAULT_UNROLL_M == DGEMM_DEFAULT_UNROLL_N |
| #define DGEMM_INCOPY dgemm_oncopy |
| #define DGEMM_ITCOPY dgemm_otcopy |
| #else |
| #define DGEMM_INCOPY dgemm_incopy |
| #define DGEMM_ITCOPY dgemm_itcopy |
| #endif |
|
|
| #define DTRMM_OUNUCOPY dtrmm_ounucopy |
| #define DTRMM_OUNNCOPY dtrmm_ounncopy |
| #define DTRMM_OUTUCOPY dtrmm_outucopy |
| #define DTRMM_OUTNCOPY dtrmm_outncopy |
| #define DTRMM_OLNUCOPY dtrmm_olnucopy |
| #define DTRMM_OLNNCOPY dtrmm_olnncopy |
| #define DTRMM_OLTUCOPY dtrmm_oltucopy |
| #define DTRMM_OLTNCOPY dtrmm_oltncopy |
|
|
| #define DTRSM_OUNUCOPY dtrsm_ounucopy |
| #define DTRSM_OUNNCOPY dtrsm_ounncopy |
| #define DTRSM_OUTUCOPY dtrsm_outucopy |
| #define DTRSM_OUTNCOPY dtrsm_outncopy |
| #define DTRSM_OLNUCOPY dtrsm_olnucopy |
| #define DTRSM_OLNNCOPY dtrsm_olnncopy |
| #define DTRSM_OLTUCOPY dtrsm_oltucopy |
| #define DTRSM_OLTNCOPY dtrsm_oltncopy |
|
|
| #if DGEMM_DEFAULT_UNROLL_M == DGEMM_DEFAULT_UNROLL_N |
| #define DTRMM_IUNUCOPY dtrmm_ounucopy |
| #define DTRMM_IUNNCOPY dtrmm_ounncopy |
| #define DTRMM_IUTUCOPY dtrmm_outucopy |
| #define DTRMM_IUTNCOPY dtrmm_outncopy |
| #define DTRMM_ILNUCOPY dtrmm_olnucopy |
| #define DTRMM_ILNNCOPY dtrmm_olnncopy |
| #define DTRMM_ILTUCOPY dtrmm_oltucopy |
| #define DTRMM_ILTNCOPY dtrmm_oltncopy |
|
|
| #define DTRSM_IUNUCOPY dtrsm_ounucopy |
| #define DTRSM_IUNNCOPY dtrsm_ounncopy |
| #define DTRSM_IUTUCOPY dtrsm_outucopy |
| #define DTRSM_IUTNCOPY dtrsm_outncopy |
| #define DTRSM_ILNUCOPY dtrsm_olnucopy |
| #define DTRSM_ILNNCOPY dtrsm_olnncopy |
| #define DTRSM_ILTUCOPY dtrsm_oltucopy |
| #define DTRSM_ILTNCOPY dtrsm_oltncopy |
| #else |
| #define DTRMM_IUNUCOPY dtrmm_iunucopy |
| #define DTRMM_IUNNCOPY dtrmm_iunncopy |
| #define DTRMM_IUTUCOPY dtrmm_iutucopy |
| #define DTRMM_IUTNCOPY dtrmm_iutncopy |
| #define DTRMM_ILNUCOPY dtrmm_ilnucopy |
| #define DTRMM_ILNNCOPY dtrmm_ilnncopy |
| #define DTRMM_ILTUCOPY dtrmm_iltucopy |
| #define DTRMM_ILTNCOPY dtrmm_iltncopy |
|
|
| #define DTRSM_IUNUCOPY dtrsm_iunucopy |
| #define DTRSM_IUNNCOPY dtrsm_iunncopy |
| #define DTRSM_IUTUCOPY dtrsm_iutucopy |
| #define DTRSM_IUTNCOPY dtrsm_iutncopy |
| #define DTRSM_ILNUCOPY dtrsm_ilnucopy |
| #define DTRSM_ILNNCOPY dtrsm_ilnncopy |
| #define DTRSM_ILTUCOPY dtrsm_iltucopy |
| #define DTRSM_ILTNCOPY dtrsm_iltncopy |
| #endif |
|
|
| #define DGEMM_BETA dgemm_beta |
|
|
| #define DGEMM_KERNEL dgemm_kernel |
|
|
| #define DTRMM_KERNEL_LN dtrmm_kernel_LN |
| #define DTRMM_KERNEL_LT dtrmm_kernel_LT |
| #define DTRMM_KERNEL_LR dtrmm_kernel_LN |
| #define DTRMM_KERNEL_LC dtrmm_kernel_LT |
| #define DTRMM_KERNEL_RN dtrmm_kernel_RN |
| #define DTRMM_KERNEL_RT dtrmm_kernel_RT |
| #define DTRMM_KERNEL_RR dtrmm_kernel_RN |
| #define DTRMM_KERNEL_RC dtrmm_kernel_RT |
|
|
| #define DTRSM_KERNEL_LN dtrsm_kernel_LN |
| #define DTRSM_KERNEL_LT dtrsm_kernel_LT |
| #define DTRSM_KERNEL_LR dtrsm_kernel_LN |
| #define DTRSM_KERNEL_LC dtrsm_kernel_LT |
| #define DTRSM_KERNEL_RN dtrsm_kernel_RN |
| #define DTRSM_KERNEL_RT dtrsm_kernel_RT |
| #define DTRSM_KERNEL_RR dtrsm_kernel_RN |
| #define DTRSM_KERNEL_RC dtrsm_kernel_RT |
|
|
| #define DSYMM_OUTCOPY dsymm_outcopy |
| #define DSYMM_OLTCOPY dsymm_oltcopy |
| #if DGEMM_DEFAULT_UNROLL_M == DGEMM_DEFAULT_UNROLL_N |
| #define DSYMM_IUTCOPY dsymm_outcopy |
| #define DSYMM_ILTCOPY dsymm_oltcopy |
| #else |
| #define DSYMM_IUTCOPY dsymm_iutcopy |
| #define DSYMM_ILTCOPY dsymm_iltcopy |
| #endif |
|
|
| #define DNEG_TCOPY dneg_tcopy |
| #define DLASWP_NCOPY dlaswp_ncopy |
|
|
| #else |
|
|
| #define DAMAX_K gotoblas -> damax_k |
| #define DAMIN_K gotoblas -> damin_k |
| #define DMAX_K gotoblas -> dmax_k |
| #define DMIN_K gotoblas -> dmin_k |
| #define IDAMAX_K gotoblas -> idamax_k |
| #define IDAMIN_K gotoblas -> idamin_k |
| #define IDMAX_K gotoblas -> idmax_k |
| #define IDMIN_K gotoblas -> idmin_k |
| #define DASUM_K gotoblas -> dasum_k |
| #define DAXPYU_K gotoblas -> daxpy_k |
| #define DAXPYC_K gotoblas -> daxpy_k |
| #define DCOPY_K gotoblas -> dcopy_k |
| #define DDOTU_K gotoblas -> ddot_k |
| #define DDOTC_K gotoblas -> ddot_k |
| #define DNRM2_K gotoblas -> dnrm2_k |
| #define DSCAL_K gotoblas -> dscal_k |
| #define DSWAP_K gotoblas -> dswap_k |
| #define DROT_K gotoblas -> drot_k |
|
|
| #define DGEMV_N gotoblas -> dgemv_n |
| #define DGEMV_T gotoblas -> dgemv_t |
| #define DGEMV_R gotoblas -> dgemv_n |
| #define DGEMV_C gotoblas -> dgemv_t |
| #define DGEMV_O gotoblas -> dgemv_n |
| #define DGEMV_U gotoblas -> dgemv_t |
| #define DGEMV_S gotoblas -> dgemv_n |
| #define DGEMV_D gotoblas -> dgemv_t |
|
|
| #define DGERU_K gotoblas -> dger_k |
| #define DGERC_K gotoblas -> dger_k |
| #define DGERV_K gotoblas -> dger_k |
| #define DGERD_K gotoblas -> dger_k |
|
|
| #define DSYMV_U gotoblas -> dsymv_U |
| #define DSYMV_L gotoblas -> dsymv_L |
|
|
| #define DSYMV_THREAD_U dsymv_thread_U |
| #define DSYMV_THREAD_L dsymv_thread_L |
|
|
| #define DGEMM_ONCOPY gotoblas -> dgemm_oncopy |
| #define DGEMM_OTCOPY gotoblas -> dgemm_otcopy |
| #define DGEMM_INCOPY gotoblas -> dgemm_incopy |
| #define DGEMM_ITCOPY gotoblas -> dgemm_itcopy |
|
|
| #define DTRMM_OUNUCOPY gotoblas -> dtrmm_ounucopy |
| #define DTRMM_OUTUCOPY gotoblas -> dtrmm_outucopy |
| #define DTRMM_OLNUCOPY gotoblas -> dtrmm_olnucopy |
| #define DTRMM_OLTUCOPY gotoblas -> dtrmm_oltucopy |
| #define DTRSM_OUNUCOPY gotoblas -> dtrsm_ounucopy |
| #define DTRSM_OUTUCOPY gotoblas -> dtrsm_outucopy |
| #define DTRSM_OLNUCOPY gotoblas -> dtrsm_olnucopy |
| #define DTRSM_OLTUCOPY gotoblas -> dtrsm_oltucopy |
|
|
| #define DTRMM_IUNUCOPY gotoblas -> dtrmm_iunucopy |
| #define DTRMM_IUTUCOPY gotoblas -> dtrmm_iutucopy |
| #define DTRMM_ILNUCOPY gotoblas -> dtrmm_ilnucopy |
| #define DTRMM_ILTUCOPY gotoblas -> dtrmm_iltucopy |
| #define DTRSM_IUNUCOPY gotoblas -> dtrsm_iunucopy |
| #define DTRSM_IUTUCOPY gotoblas -> dtrsm_iutucopy |
| #define DTRSM_ILNUCOPY gotoblas -> dtrsm_ilnucopy |
| #define DTRSM_ILTUCOPY gotoblas -> dtrsm_iltucopy |
|
|
| #define DTRMM_OUNNCOPY gotoblas -> dtrmm_ounncopy |
| #define DTRMM_OUTNCOPY gotoblas -> dtrmm_outncopy |
| #define DTRMM_OLNNCOPY gotoblas -> dtrmm_olnncopy |
| #define DTRMM_OLTNCOPY gotoblas -> dtrmm_oltncopy |
| #define DTRSM_OUNNCOPY gotoblas -> dtrsm_ounncopy |
| #define DTRSM_OUTNCOPY gotoblas -> dtrsm_outncopy |
| #define DTRSM_OLNNCOPY gotoblas -> dtrsm_olnncopy |
| #define DTRSM_OLTNCOPY gotoblas -> dtrsm_oltncopy |
|
|
| #define DTRMM_IUNNCOPY gotoblas -> dtrmm_iunncopy |
| #define DTRMM_IUTNCOPY gotoblas -> dtrmm_iutncopy |
| #define DTRMM_ILNNCOPY gotoblas -> dtrmm_ilnncopy |
| #define DTRMM_ILTNCOPY gotoblas -> dtrmm_iltncopy |
| #define DTRSM_IUNNCOPY gotoblas -> dtrsm_iunncopy |
| #define DTRSM_IUTNCOPY gotoblas -> dtrsm_iutncopy |
| #define DTRSM_ILNNCOPY gotoblas -> dtrsm_ilnncopy |
| #define DTRSM_ILTNCOPY gotoblas -> dtrsm_iltncopy |
|
|
| #define DGEMM_BETA gotoblas -> dgemm_beta |
| #define DGEMM_KERNEL gotoblas -> dgemm_kernel |
|
|
| #define DTRMM_KERNEL_LN gotoblas -> dtrmm_kernel_LN |
| #define DTRMM_KERNEL_LT gotoblas -> dtrmm_kernel_LT |
| #define DTRMM_KERNEL_LR gotoblas -> dtrmm_kernel_LN |
| #define DTRMM_KERNEL_LC gotoblas -> dtrmm_kernel_LT |
| #define DTRMM_KERNEL_RN gotoblas -> dtrmm_kernel_RN |
| #define DTRMM_KERNEL_RT gotoblas -> dtrmm_kernel_RT |
| #define DTRMM_KERNEL_RR gotoblas -> dtrmm_kernel_RN |
| #define DTRMM_KERNEL_RC gotoblas -> dtrmm_kernel_RT |
|
|
| #define DTRSM_KERNEL_LN gotoblas -> dtrsm_kernel_LN |
| #define DTRSM_KERNEL_LT gotoblas -> dtrsm_kernel_LT |
| #define DTRSM_KERNEL_LR gotoblas -> dtrsm_kernel_LN |
| #define DTRSM_KERNEL_LC gotoblas -> dtrsm_kernel_LT |
| #define DTRSM_KERNEL_RN gotoblas -> dtrsm_kernel_RN |
| #define DTRSM_KERNEL_RT gotoblas -> dtrsm_kernel_RT |
| #define DTRSM_KERNEL_RR gotoblas -> dtrsm_kernel_RN |
| #define DTRSM_KERNEL_RC gotoblas -> dtrsm_kernel_RT |
|
|
| #define DSYMM_IUTCOPY gotoblas -> dsymm_iutcopy |
| #define DSYMM_ILTCOPY gotoblas -> dsymm_iltcopy |
| #define DSYMM_OUTCOPY gotoblas -> dsymm_outcopy |
| #define DSYMM_OLTCOPY gotoblas -> dsymm_oltcopy |
|
|
| #define DNEG_TCOPY gotoblas -> dneg_tcopy |
| #define DLASWP_NCOPY gotoblas -> dlaswp_ncopy |
|
|
| #endif |
|
|
| #define DGEMM_NN dgemm_nn |
| #define DGEMM_CN dgemm_tn |
| #define DGEMM_TN dgemm_tn |
| #define DGEMM_NC dgemm_nt |
| #define DGEMM_NT dgemm_nt |
| #define DGEMM_CC dgemm_tt |
| #define DGEMM_CT dgemm_tt |
| #define DGEMM_TC dgemm_tt |
| #define DGEMM_TT dgemm_tt |
| #define DGEMM_NR dgemm_nn |
| #define DGEMM_TR dgemm_tn |
| #define DGEMM_CR dgemm_tn |
| #define DGEMM_RN dgemm_nn |
| #define DGEMM_RT dgemm_nt |
| #define DGEMM_RC dgemm_nt |
| #define DGEMM_RR dgemm_nn |
|
|
| #define DSYMM_LU dsymm_LU |
| #define DSYMM_LL dsymm_LL |
| #define DSYMM_RU dsymm_RU |
| #define DSYMM_RL dsymm_RL |
|
|
| #define DHEMM_LU dhemm_LU |
| #define DHEMM_LL dhemm_LL |
| #define DHEMM_RU dhemm_RU |
| #define DHEMM_RL dhemm_RL |
|
|
| #define DSYRK_UN dsyrk_UN |
| #define DSYRK_UT dsyrk_UT |
| #define DSYRK_LN dsyrk_LN |
| #define DSYRK_LT dsyrk_LT |
| #define DSYRK_UR dsyrk_UN |
| #define DSYRK_UC dsyrk_UT |
| #define DSYRK_LR dsyrk_LN |
| #define DSYRK_LC dsyrk_LT |
|
|
| #define DSYRK_KERNEL_U dsyrk_kernel_U |
| #define DSYRK_KERNEL_L dsyrk_kernel_L |
|
|
| #define DHERK_UN dsyrk_UN |
| #define DHERK_LN dsyrk_LN |
| #define DHERK_UC dsyrk_UT |
| #define DHERK_LC dsyrk_LT |
|
|
| #define DHER2K_UN dsyr2k_UN |
| #define DHER2K_LN dsyr2k_LN |
| #define DHER2K_UC dsyr2k_UT |
| #define DHER2K_LC dsyr2k_LT |
|
|
| #define DSYR2K_UN dsyr2k_UN |
| #define DSYR2K_UT dsyr2k_UT |
| #define DSYR2K_LN dsyr2k_LN |
| #define DSYR2K_LT dsyr2k_LT |
| #define DSYR2K_UR dsyr2k_UN |
| #define DSYR2K_UC dsyr2k_UT |
| #define DSYR2K_LR dsyr2k_LN |
| #define DSYR2K_LC dsyr2k_LT |
|
|
| #define DSYR2K_KERNEL_U dsyr2k_kernel_U |
| #define DSYR2K_KERNEL_L dsyr2k_kernel_L |
|
|
| #define DTRMM_LNUU dtrmm_LNUU |
| #define DTRMM_LNUN dtrmm_LNUN |
| #define DTRMM_LNLU dtrmm_LNLU |
| #define DTRMM_LNLN dtrmm_LNLN |
| #define DTRMM_LTUU dtrmm_LTUU |
| #define DTRMM_LTUN dtrmm_LTUN |
| #define DTRMM_LTLU dtrmm_LTLU |
| #define DTRMM_LTLN dtrmm_LTLN |
| #define DTRMM_LRUU dtrmm_LNUU |
| #define DTRMM_LRUN dtrmm_LNUN |
| #define DTRMM_LRLU dtrmm_LNLU |
| #define DTRMM_LRLN dtrmm_LNLN |
| #define DTRMM_LCUU dtrmm_LTUU |
| #define DTRMM_LCUN dtrmm_LTUN |
| #define DTRMM_LCLU dtrmm_LTLU |
| #define DTRMM_LCLN dtrmm_LTLN |
| #define DTRMM_RNUU dtrmm_RNUU |
| #define DTRMM_RNUN dtrmm_RNUN |
| #define DTRMM_RNLU dtrmm_RNLU |
| #define DTRMM_RNLN dtrmm_RNLN |
| #define DTRMM_RTUU dtrmm_RTUU |
| #define DTRMM_RTUN dtrmm_RTUN |
| #define DTRMM_RTLU dtrmm_RTLU |
| #define DTRMM_RTLN dtrmm_RTLN |
| #define DTRMM_RRUU dtrmm_RNUU |
| #define DTRMM_RRUN dtrmm_RNUN |
| #define DTRMM_RRLU dtrmm_RNLU |
| #define DTRMM_RRLN dtrmm_RNLN |
| #define DTRMM_RCUU dtrmm_RTUU |
| #define DTRMM_RCUN dtrmm_RTUN |
| #define DTRMM_RCLU dtrmm_RTLU |
| #define DTRMM_RCLN dtrmm_RTLN |
|
|
| #define DTRSM_LNUU dtrsm_LNUU |
| #define DTRSM_LNUN dtrsm_LNUN |
| #define DTRSM_LNLU dtrsm_LNLU |
| #define DTRSM_LNLN dtrsm_LNLN |
| #define DTRSM_LTUU dtrsm_LTUU |
| #define DTRSM_LTUN dtrsm_LTUN |
| #define DTRSM_LTLU dtrsm_LTLU |
| #define DTRSM_LTLN dtrsm_LTLN |
| #define DTRSM_LRUU dtrsm_LNUU |
| #define DTRSM_LRUN dtrsm_LNUN |
| #define DTRSM_LRLU dtrsm_LNLU |
| #define DTRSM_LRLN dtrsm_LNLN |
| #define DTRSM_LCUU dtrsm_LTUU |
| #define DTRSM_LCUN dtrsm_LTUN |
| #define DTRSM_LCLU dtrsm_LTLU |
| #define DTRSM_LCLN dtrsm_LTLN |
| #define DTRSM_RNUU dtrsm_RNUU |
| #define DTRSM_RNUN dtrsm_RNUN |
| #define DTRSM_RNLU dtrsm_RNLU |
| #define DTRSM_RNLN dtrsm_RNLN |
| #define DTRSM_RTUU dtrsm_RTUU |
| #define DTRSM_RTUN dtrsm_RTUN |
| #define DTRSM_RTLU dtrsm_RTLU |
| #define DTRSM_RTLN dtrsm_RTLN |
| #define DTRSM_RRUU dtrsm_RNUU |
| #define DTRSM_RRUN dtrsm_RNUN |
| #define DTRSM_RRLU dtrsm_RNLU |
| #define DTRSM_RRLN dtrsm_RNLN |
| #define DTRSM_RCUU dtrsm_RTUU |
| #define DTRSM_RCUN dtrsm_RTUN |
| #define DTRSM_RCLU dtrsm_RTLU |
| #define DTRSM_RCLN dtrsm_RTLN |
|
|
| #define DGEMM_THREAD_NN dgemm_thread_nn |
| #define DGEMM_THREAD_CN dgemm_thread_tn |
| #define DGEMM_THREAD_TN dgemm_thread_tn |
| #define DGEMM_THREAD_NC dgemm_thread_nt |
| #define DGEMM_THREAD_NT dgemm_thread_nt |
| #define DGEMM_THREAD_CC dgemm_thread_tt |
| #define DGEMM_THREAD_CT dgemm_thread_tt |
| #define DGEMM_THREAD_TC dgemm_thread_tt |
| #define DGEMM_THREAD_TT dgemm_thread_tt |
| #define DGEMM_THREAD_NR dgemm_thread_nn |
| #define DGEMM_THREAD_TR dgemm_thread_tn |
| #define DGEMM_THREAD_CR dgemm_thread_tn |
| #define DGEMM_THREAD_RN dgemm_thread_nn |
| #define DGEMM_THREAD_RT dgemm_thread_nt |
| #define DGEMM_THREAD_RC dgemm_thread_nt |
| #define DGEMM_THREAD_RR dgemm_thread_nn |
|
|
| #define DSYMM_THREAD_LU dsymm_thread_LU |
| #define DSYMM_THREAD_LL dsymm_thread_LL |
| #define DSYMM_THREAD_RU dsymm_thread_RU |
| #define DSYMM_THREAD_RL dsymm_thread_RL |
|
|
| #define DHEMM_THREAD_LU dhemm_thread_LU |
| #define DHEMM_THREAD_LL dhemm_thread_LL |
| #define DHEMM_THREAD_RU dhemm_thread_RU |
| #define DHEMM_THREAD_RL dhemm_thread_RL |
|
|
| #define DSYRK_THREAD_UN dsyrk_thread_UN |
| #define DSYRK_THREAD_UT dsyrk_thread_UT |
| #define DSYRK_THREAD_LN dsyrk_thread_LN |
| #define DSYRK_THREAD_LT dsyrk_thread_LT |
| #define DSYRK_THREAD_UR dsyrk_thread_UN |
| #define DSYRK_THREAD_UC dsyrk_thread_UT |
| #define DSYRK_THREAD_LR dsyrk_thread_LN |
| #define DSYRK_THREAD_LC dsyrk_thread_LT |
|
|
| #define DHERK_THREAD_UN dsyrk_thread_UN |
| #define DHERK_THREAD_UT dsyrk_thread_UT |
| #define DHERK_THREAD_LN dsyrk_thread_LN |
| #define DHERK_THREAD_LT dsyrk_thread_LT |
| #define DHERK_THREAD_UR dsyrk_thread_UN |
| #define DHERK_THREAD_UC dsyrk_thread_UT |
| #define DHERK_THREAD_LR dsyrk_thread_LN |
| #define DHERK_THREAD_LC dsyrk_thread_LT |
|
|
| #endif |