--- atlas/ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c 2013-12-05 19:19:57.000000000 +0100 +++ atlas/ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c.new 2013-12-06 16:29:57.000000000 +0100 @@ -170,13 +170,21 @@ void ATL_USERMM(const int M, const int N const TYPE beta, TYPE *C, const int ldc) (r10) 8(r1) ******************************************************************************* -64 bit ABIs: +64 bit ABIv1s: r3 r4 r5 r6/f1 void ATL_USERMM(const int M, const int N, const int K, const TYPE alpha, r7 r8 r9 r10 const TYPE *A, const int lda, const TYPE *B, const int ldb, f2 120(r1) 128(r1) const TYPE beta, TYPE *C, const int ldc) + +64 bit ABIv2s: + r3 r4 r5 r6/f1 +void ATL_USERMM(const int M, const int N, const int K, const TYPE alpha, + r7 r8 r9 r10 + const TYPE *A, const int lda, const TYPE *B, const int ldb, + f2 104(r1) 112(r1) + const TYPE beta, TYPE *C, const int ldc) #endif #ifdef ATL_AS_AIX_PPC .csect .text[PR] @@ -202,7 +210,7 @@ Mjoin(.,ATL_USERMM): .globl Mjoin(_,ATL_USERMM) Mjoin(_,ATL_USERMM): #else - #if defined(ATL_USE64BITS) + #if defined(ATL_USE64BITS) && _CALL_ELF != 2 /* * Official Program Descripter section, seg fault w/o it on Linux/PPC64 */ @@ -217,6 +225,7 @@ ATL_USERMM: .globl Mjoin(.,ATL_USERMM) Mjoin(.,ATL_USERMM): #else +/* ppc64 have no longer function descriptors in ABIv2 */ .globl ATL_USERMM ATL_USERMM: #endif @@ -257,9 +266,17 @@ ATL_USERMM: #endif #endif + #if defined (ATL_USE64BITS) +#if _CALL_ELF == 2 +/* ABIv2 */ + ld pC0, 104(r1) + ld incCn, 112(r1) +#else +/* ABIv1 */ ld pC0, 120(r1) ld incCn, 128(r1) +#endif #elif defined(ATL_AS_OSX_PPC) || defined(ATL_AS_AIX_PPC) lwz pC0, 68(r1) lwz incCn, 72(r1)