diff --git a/kernel/mips/cscal_msa.c b/kernel/mips/cscal_msa.c index 451d0c921b..7a33d8601f 100644 --- a/kernel/mips/cscal_msa.c +++ b/kernel/mips/cscal_msa.c @@ -47,7 +47,7 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i, if (1 == inc_x) { - if ((0.0 == da_r) && (0.0 == da_i)) + if ((0.0 == da_r) && (0.0 == da_i) && !dummy2) { v4f32 zero_v = {0.0, 0.0, 0.0, 0.0}; @@ -508,7 +508,7 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i, { inc_x2 = 2 * inc_x; - if ((0.0 == da_r) && (0.0 == da_i)) + if ((0.0 == da_r) && (0.0 == da_i) && !dummy2) { for (i = n; i--;) { diff --git a/kernel/mips/zscal.c b/kernel/mips/zscal.c index ae1c87fcea..8a34180f53 100644 --- a/kernel/mips/zscal.c +++ b/kernel/mips/zscal.c @@ -39,7 +39,7 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r,FLOAT da_i, F { if ( da_r == 0.0 ) { - if ( da_i == 0.0 ) + if ( da_i == 0.0 && !dummy2) { temp = 0.0; x[ip+1] = 0.0 ; diff --git a/kernel/mips/zscal_msa.c b/kernel/mips/zscal_msa.c index a45c3cecde..f644cbbd51 100644 --- a/kernel/mips/zscal_msa.c +++ b/kernel/mips/zscal_msa.c @@ -47,7 +47,7 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i, if (1 == inc_x) { - if ((0.0 == da_r) && (0.0 == da_i)) + if ((0.0 == da_r) && (0.0 == da_i) && !dummy2) { v2f64 zero_v = {0.0, 0.0}; @@ -471,7 +471,7 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i, { inc_x2 = 2 * inc_x; - if ((0.0 == da_r) && (0.0 == da_i)) + if ((0.0 == da_r) && (0.0 == da_i) && !dummy2) { v2f64 zero_v = {0.0, 0.0}; diff --git a/kernel/mips64/zscal.S b/kernel/mips64/zscal.S index f11b1c8d09..25ef7e06f3 100644 --- a/kernel/mips64/zscal.S +++ b/kernel/mips64/zscal.S @@ -48,6 +48,7 @@ #define TEMP $3 #define XX $5 +#define DUMMY2 $6 #define ALPHA_R $f15 #define ALPHA_I $f16 @@ -74,6 +75,9 @@ blez N, .L999 dsll INCX, INCX, ZBASE_SHIFT + LDARG DUMMY2, 8($sp) + dsll DUMMY2, DUMMY2, ZBASE_SHIFT + CMPEQ $fcc0, ALPHA_R, a1 CMPEQ $fcc1, ALPHA_I, a1 @@ -83,6 +87,8 @@ bc1f $fcc1, .L50 NOP + beq DUMMY2, $1, .L50 + bne INCX, TEMP, .L20 dsra I, N, 2