/* --------------------------------------------------------------------- * * -- Automatically Tuned Linear Algebra Software (ATLAS) * (C) Copyright 2000 All Rights Reserved * * -- ATLAS routine -- Version 3.2 -- December 25, 2000 * * Author : Antoine P. Petitet * Contributor(s) : R. Clint Whaley * Originally developed at the University of Tennessee, * Innovative Computing Laboratory, Knoxville TN, 37996-1301, USA. * * --------------------------------------------------------------------- * * -- Copyright notice and Licensing terms: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions, and the following disclaimer in * the documentation and/or other materials provided with the distri- * bution. * 3. The name of the University, the ATLAS group, or the names of its * contributors may not be used to endorse or promote products deri- * ved from this software without specific written permission. * * -- Disclaimer: * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE- * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEO- * RY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (IN- * CLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * --------------------------------------------------------------------- */ #ifndef ATLAS_RBLAS3_H #define ATLAS_RBLAS3_H /* * ===================================================================== * Include files * ===================================================================== */ #include "atlas_misc.h" /* * ===================================================================== * #define macros definitions * ===================================================================== */ #define Mrc3( a_, i_, j_, lda_, siz_ ) \ ( (void*) ( (char*)(a_) + ( ( (i_)+(j_)*(lda_) )*(siz_) ) ) ) /* * ===================================================================== * #typedef definitions * ===================================================================== */ typedef void (*KR3_FUN_GEMM_T) ( const int, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); typedef void (*KR3_FUN_HEMM_T) ( const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); typedef int (*KR3_FUN_HER2K_T) ( const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); typedef void (*KR3_FUN_HERK_T) ( const int, const int, const void *, const void *, const int, const void *, void *, const int ); typedef void (*KR3_FUN_SYMM_T) ( const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); typedef int (*KR3_FUN_SYR2K_T) ( const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); typedef void (*KR3_FUN_SYRK_T) ( const int, const int, const void *, const void *, const int, const void *, void *, const int ); typedef void (*KR3_FUN_TRMM_T) ( const int, const int, const void *, const void *, const int, void *, const int ); typedef void (*KR3_FUN_TRSM_T) ( const int, const int, const void *, const void *, const int, void *, const int ); typedef struct { size_t size; void * one; KR3_FUN_GEMM_T TgemmNN; KR3_FUN_GEMM_T Tgemm; KR3_FUN_SYMM_T Tsymm; } RC3_SYMM_T; typedef struct { size_t size; void * one; KR3_FUN_GEMM_T TgemmNN; KR3_FUN_GEMM_T Tgemm; KR3_FUN_HEMM_T Themm; } RC3_HEMM_T; typedef struct { size_t size; KR3_FUN_GEMM_T Tgemm; KR3_FUN_SYRK_T Tsyrk; } RC3_SYRK_T; typedef struct { size_t size; KR3_FUN_GEMM_T Tgemm; KR3_FUN_HERK_T Therk; } RC3_HERK_T; typedef struct { size_t size; void * one; KR3_FUN_GEMM_T Tgemm; KR3_FUN_SYR2K_T Tsyr2k; } RC3_SYR2K_T; typedef struct { size_t size; void * one; KR3_FUN_GEMM_T Tgemm; KR3_FUN_HER2K_T Ther2k; } RC3_HER2K_T; typedef struct { size_t size; void * one; KR3_FUN_GEMM_T Tgemm; KR3_FUN_TRMM_T Ttrmm; } RC3_TRMM_T; typedef struct { size_t size; void * one, * negone; KR3_FUN_GEMM_T Tgemm; KR3_FUN_TRSM_T Ttrsm; } RC3_TRSM_T; typedef void (*RC3_FUN_HEMM_T) ( RC3_HEMM_T *, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); typedef void (*RC3_FUN_HER2K_T) ( RC3_HER2K_T *, const int, const int, const void *, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); typedef void (*RC3_FUN_HERK_T) ( RC3_HERK_T *, const int, const int, const void *, const void *, const int, const void *, void *, const int, const int ); typedef void (*RC3_FUN_SYMM_T) ( RC3_SYMM_T *, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); typedef void (*RC3_FUN_SYR2K_T) ( RC3_SYR2K_T *, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); typedef void (*RC3_FUN_SYRK_T) ( RC3_SYRK_T *, const int, const int, const void *, const void *, const int, const void *, void *, const int, const int ); typedef void (*RC3_FUN_TRMM_T) ( RC3_TRMM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); typedef void (*RC3_FUN_TRSM_T) ( RC3_TRSM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); /* * ===================================================================== * Level 3 recursive BLAS internal function prototypes * ===================================================================== */ void ATL_sgemmTN_RB ( const int, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); void ATL_sgemmNT_RB ( const int, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); void ATL_sgemmNN_RB ( const int, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); void ATL_dgemmTN_RB ( const int, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); void ATL_dgemmNT_RB ( const int, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); void ATL_dgemmNN_RB ( const int, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); void ATL_cgemmCN_RB ( const int, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); void ATL_cgemmNC_RB ( const int, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); void ATL_cgemmTN_RB ( const int, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); void ATL_cgemmNT_RB ( const int, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); void ATL_cgemmNN_RB ( const int, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); void ATL_zgemmCN_RB ( const int, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); void ATL_zgemmNC_RB ( const int, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); void ATL_zgemmTN_RB ( const int, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); void ATL_zgemmNT_RB ( const int, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); void ATL_zgemmNN_RB ( const int, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int ); /* * ===================================================================== * Recursive BLAS function prototypes * ===================================================================== */ void ATL_rsymmRU ( RC3_SYMM_T *, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); void ATL_rhemmRU ( RC3_HEMM_T *, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); void ATL_rsymmRL ( RC3_SYMM_T *, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); void ATL_rhemmRL ( RC3_HEMM_T *, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); void ATL_rsymmLU ( RC3_SYMM_T *, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); void ATL_rhemmLU ( RC3_HEMM_T *, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); void ATL_rsymmLL ( RC3_SYMM_T *, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); void ATL_rhemmLL ( RC3_HEMM_T *, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); void ATL_rsyrkUT ( RC3_SYRK_T *, const int, const int, const void *, const void *, const int, const void *, void *, const int, const int ); void ATL_rsyr2kUT ( RC3_SYR2K_T *, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); void ATL_rsyrkUN ( RC3_SYRK_T *, const int, const int, const void *, const void *, const int, const void *, void *, const int, const int ); void ATL_rsyr2kUN ( RC3_SYR2K_T *, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); void ATL_rsyrkLT ( RC3_SYRK_T *, const int, const int, const void *, const void *, const int, const void *, void *, const int, const int ); void ATL_rsyr2kLT ( RC3_SYR2K_T *, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); void ATL_rsyrkLN ( RC3_SYRK_T *, const int, const int, const void *, const void *, const int, const void *, void *, const int, const int ); void ATL_rsyr2kLN ( RC3_SYR2K_T *, const int, const int, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); void ATL_rherkUC ( RC3_HERK_T *, const int, const int, const void *, const void *, const int, const void *, void *, const int, const int ); void ATL_rher2kUC ( RC3_HER2K_T *, const int, const int, const void *, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); void ATL_rherkUN ( RC3_HERK_T *, const int, const int, const void *, const void *, const int, const void *, void *, const int, const int ); void ATL_rher2kUN ( RC3_HER2K_T *, const int, const int, const void *, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); void ATL_rherkLC ( RC3_HERK_T *, const int, const int, const void *, const void *, const int, const void *, void *, const int, const int ); void ATL_rher2kLC ( RC3_HER2K_T *, const int, const int, const void *, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); void ATL_rherkLN ( RC3_HERK_T *, const int, const int, const void *, const void *, const int, const void *, void *, const int, const int ); void ATL_rher2kLN ( RC3_HER2K_T *, const int, const int, const void *, const void *, const void *, const int, const void *, const int, const void *, void *, const int, const int ); void ATL_rtrmmRUC ( RC3_TRMM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrsmRUC ( RC3_TRSM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrmmRLC ( RC3_TRMM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrsmRLC ( RC3_TRSM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrmmRUT ( RC3_TRMM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrsmRUT ( RC3_TRSM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrmmRLT ( RC3_TRMM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrsmRLT ( RC3_TRSM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrmmRUN ( RC3_TRMM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrsmRUN ( RC3_TRSM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrmmRLN ( RC3_TRMM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrsmRLN ( RC3_TRSM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrmmLUC ( RC3_TRMM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrsmLUC ( RC3_TRSM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrmmLLC ( RC3_TRMM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrsmLLC ( RC3_TRSM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrmmLUT ( RC3_TRMM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrsmLUT ( RC3_TRSM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrmmLLT ( RC3_TRMM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrsmLLT ( RC3_TRSM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrmmLUN ( RC3_TRMM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrsmLUN ( RC3_TRSM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrmmLLN ( RC3_TRMM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); void ATL_rtrsmLLN ( RC3_TRSM_T *, const int, const int, const void *, const void *, const int, void *, const int, const int ); #endif /* * End of atlas_rblas3.h */