Comment 3 for bug 20132

Revision history for this message
In , Russ Allbery (rra-debian) wrote : Re: Bug#315908: atlas3: FTBFS with gcc-4.0 [i386, amd64]

The following patch fixes the basic FTBFS problem with gcc 4.0.
Unfortunately, after this patch, I still get the following test suite
failure:

bin/Linux_base_shared/xsl2blastst -R all -n 1019 -m 1019 -F 200

---------------------------------- GBMV -----------------------------------
TST# T M N KL KU ALPHA LDA INCX BETA INCY TIME MFLOP SpUp TEST
==== = ==== ==== ==== ==== ===== ==== ==== ===== ==== ===== ===== ==== ====
   0 N 1019 1019 1 1 1.0 3 1 1.0 1 0.00 112.1 1.00 ----
   0 N 1019 1019 1 1 1.0 3 1 1.0 1 0.00 112.4 1.00 PASS

------------------------------- GEMV --------------------------------
TST# TR M N ALPHA LDA INCX BETA INCY TIME MFLOP SpUp TEST
==== == ==== ==== ===== ==== ==== ===== ==== ====== ===== ===== =====
   1 N 1019 1019 1.0 1019 1 1.0 1 0.01 181.9 1.00 -----
   1 N 1019 1019 1.0 1019 1 1.0 1 0.01 182.2 1.00 PASS

------------------------------- SBMV --------------------------------
TST# UP N K ALPHA LDA INCX BETA INCY TIME MFLOP SpUp TEST
==== == ==== ==== ===== ==== ==== ===== ==== ====== ===== ===== =====
   2 L 1019 1 1.0 2 1 1.0 1 0.00 91.9 1.00 -----
   2 L 1019 1 1.0 2 1 1.0 1 0.00 92.3 1.00 PASS

-------------------------- SPMV ---------------------------
TST# UP N ALPHA INCX BETA INCY TIME MFLOP SpUp TEST
==== == ==== ===== ==== ===== ==== ====== ===== ===== =====
   3 L 1019 1.0 1 1.0 1 0.01 255.8 1.00 -----
   3 L 1019 1.0 1 1.0 1 0.01 256.1 1.00 PASS

----------------------------- SYMV -----------------------------
TST# UP N ALPHA LDA INCX BETA INCY TIME MFLOP SpUp TEST
==== == ==== ===== ==== ==== ===== ==== ====== ===== ===== =====
   4 L 1019 1.0 1019 1 1.0 1 0.01 340.4 1.00 -----
   4 L 1019 1.0 1019 1 1.0 1 0.01 341.0 1.00 PASS

----------------------------- TBMV ------------------------------
TST# UPLO TRAN DIAG N K LDA INCX TIME MFLOP SpUp TEST
==== ==== ==== ==== ==== ==== ==== ==== ====== ====== ===== =====
   5 L N N 1019 1 2 1 0.00 25.8 1.00 -----
   5 L N N 1019 1 2 1 0.00 25.7 1.00 PASS

------------------------ TPMV -------------------------
TST# UPLO TRAN DIAG N INCX TIME MFLOP SpUp TEST
==== ==== ==== ==== ==== ==== ====== ====== ===== =====
   6 L N N 1019 1 0.00 291.9 1.00 -----
   6 L N N 1019 1 0.00 293.7 1.01 PASS

-------------------------- TRMV ----------------------------
ERROR: resid=392.406769, normD=12.385225, normA=259.826324, normX=0.499337, eps=1.192093e-07
   resid=392.406769
TST# UPLO TRAN DIAG N LDA INCX TIME MFLOP SpUp TEST
==== ==== ==== ==== ==== ==== ==== ====== ====== ===== =====
   7 L N N 1019 1019 1 0.00 591.7 1.00 -----
   7 L N N 1019 1019 1 0.01 175.5 0.30 FAIL

----------------------------- TBSV ------------------------------
TST# UPLO TRAN DIAG N K LDA INCX TIME MFLOP SpUp TEST
==== ==== ==== ==== ==== ==== ==== ==== ====== ====== ===== =====
   8 L N N 1019 1 2 1 0.00 44.1 1.00 -----
   8 L N N 1019 1 2 1 0.00 44.5 1.01 PASS

------------------------ TPSV -------------------------
TST# UPLO TRAN DIAG N INCX TIME MFLOP SpUp TEST
==== ==== ==== ==== ==== ==== ====== ====== ===== =====
   9 L N N 1019 1 0.00 283.2 1.00 -----
   9 L N N 1019 1 0.00 286.1 1.01 PASS

-------------------------- TRSV ----------------------------
ERROR: resid=nan, normD=nan, normA=1.739231, normX=0.499337, eps=1.192093e-07
TST# UPLO TRAN DIAG N LDA INCX TIME MFLOP SpUp TEST
==== ==== ==== ==== ==== ==== ==== ====== ====== ===== =====
  10 L N N 1019 1019 1 0.08 13.0 1.00 -----
  10 L N N 1019 1019 1 0.01 172.5 13.28 FAIL

------------------------------ GER -----------------------------
TST# M N ALPHA INCX INCY LDA TIME MFLOP SpUp TEST
==== ===== ===== ===== ==== ==== ===== ====== ====== ===== =====
  11 1019 1019 1.0 1 1 1019 0.02 98.2 1.00 -----
  11 1019 1019 1.0 1 1 1019 0.02 98.2 1.00 PASS

----------------------- SPR ------------------------
TST# UPLO N ALPHA INCX TIME MFLOP SpUp TEST
==== ==== ===== ===== ==== ====== ====== ===== =====
  12 L 1019 1.0 1 0.01 101.1 1.00 -----
  12 L 1019 1.0 1 0.01 101.1 1.00 PASS

--------------------------- SYR --------------------------
TST# UPLO N ALPHA INCX LDA TIME MFLOP SpUp TEST
==== ==== ===== ===== ==== ===== ====== ====== ===== =====
  13 L 1019 1.0 1 1019 0.01 96.5 1.00 -----
  13 L 1019 1.0 1 1019 0.01 96.5 1.00 PASS

-------------------------- SPR2 -------------------------
TST# UPLO N ALPHA INCX INCY TIME MFLOP SpUp TEST
==== ==== ===== ===== ==== ==== ====== ====== ===== =====
  14 L 1019 1.0 1 1 0.01 175.6 1.00 -----
  14 L 1019 1.0 1 1 0.01 175.6 1.00 PASS

---------------------------- SYR2 -----------------------------
TST# UPLO N ALPHA INCX INCY LDA TIME MFLOP SpUp TEST
==== ==== ===== ===== ==== ==== ===== ====== ====== ===== =====
  15 L 1019 1.0 1 1 1019 0.01 171.8 1.00 -----
  15 L 1019 1.0 1 1 1019 0.01 172.7 1.01 PASS

16 tests run, 14 passed

Unfortunately, it's beyond my knowledge of the package to figure out
what's going wrong here or how to fix it.

Anyway, here is the patch, which at least moves things a little bit
farther along. In the camm_dpa.h change, I removed the bx register
clobber because ebx was already being saved and restored in the assembly
and therefore I don't believe the register was actually being clobbered.

diff -ruNp atlas3-3.6.0/bin/uumtst.c atlas3-3.6.0.new/bin/uumtst.c
--- atlas3-3.6.0/bin/uumtst.c 2003-12-22 06:06:43.000000000 -0800
+++ atlas3-3.6.0.new/bin/uumtst.c 2005-08-16 16:14:21.000000000 -0700
@@ -59,13 +59,14 @@ static void test_lauum(const enum ATLAS_
       ATL_lauum(Maj_, Uplo_, N_, A_, lda_)
 #endif

+static void ATL_L2GE(const enum CBLAS_ORDER, const int, const TYPE*,
+ const int, TYPE*, const int);
+
 static void ATL_U2GE
    (const enum CBLAS_ORDER Order, const int N, const TYPE *U, const int ldu,
     TYPE *C, const int ldc)
 {
    int j;
- static void ATL_L2GE(const enum CBLAS_ORDER, const int, const TYPE*,
- const int, TYPE*, const int);

    if (Order == CblasRowMajor) ATL_L2GE(CblasColMajor, N, U, ldu, C, ldc);
    else
diff -ruNp atlas3-3.6.0/config.c atlas3-3.6.0.new/config.c
--- atlas3-3.6.0/config.c 2005-08-16 13:21:51.000000000 -0700
+++ atlas3-3.6.0.new/config.c 2005-08-16 10:59:45.000000000 -0700
@@ -694,7 +694,7 @@ int IsGoodGcc(enum OSTYPE OS, enum MACHT
       iret = 0;
    else if ( MachIsX86(mach) ) /* don't use gcc 2.96 - 3.0 */
    {
- if ((major == 2 && minor < 96) || (major == 3 && minor > 1))
+ if ((major == 2 && minor < 96) || (major == 3 && minor > 1) || major > 3)
          iret = 1;
    }
    else if (mach == IA64Itan || mach == IA64Itan2 || MachIsUS(mach) ||
Binary files atlas3-3.6.0/error_Linux_sse2_shared.tgz and atlas3-3.6.0.new/error_Linux_sse2_shared.tgz differ
diff -ruNp atlas3-3.6.0/include/contrib/camm_dpa.h atlas3-3.6.0.new/include/contrib/camm_dpa.h
--- atlas3-3.6.0/include/contrib/camm_dpa.h 2003-12-22 06:07:04.000000000 -0800
+++ atlas3-3.6.0.new/include/contrib/camm_dpa.h 2005-08-16 13:06:58.000000000 -0700
@@ -1619,7 +1619,7 @@ MY_FUNCTION(aconst TYPE *a,int lda,
 #if defined(SCPLX) || (defined(DCPLX) && defined(ATL_SSE2))
   ,"m" (w)
 #endif
- :"ax","bx","cx","dx","si","di");
+ :"ax","cx","dx","si","di");

 }

--
Russ Allbery (<email address hidden>) <http://www.eyrie.org/~eagle/>