Skip to content

Commit 25e148e

Browse files
authored
Merge pull request #4817 from martin-frbg/fix4807
Fix SCAL on x86 and RISCV_GENERIC
2 parents fb7c53c + a090011 commit 25e148e

File tree

3 files changed

+28
-24
lines changed

3 files changed

+28
-24
lines changed

kernel/riscv64/scal.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da, FLOAT *x, BLAS
4343
if ( (n <= 0) || (inc_x <= 0))
4444
return(0);
4545

46-
if (dummy2 == 0) {
46+
if (dummy2 == 1) {
4747
while(j < n)
4848
{
4949

kernel/x86/scal.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
#else
6666
movl 32(%esp),%edi
6767
movl 36(%esp),%esi
68-
movl 54(%esp),%ecx
68+
movl 52(%esp),%ecx
6969
#endif
7070

7171
ftst

utest/test_gemv.c

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,47 +12,49 @@
1212

1313
CTEST(sgemv, 0_nan_inf)
1414
{
15+
int i;
1516
blasint N = 17;
1617
blasint incX = 1;
1718
blasint incY = 1;
1819
float alpha = 0.0;
1920
float beta = 0.0;
2021
char trans = 'N';
21-
float A[N * N];
22-
float X[N];
23-
float Y[N];
22+
float A[17 * 17];
23+
float X[17];
24+
float Y[17];
2425

2526
memset(A, 0, sizeof(A));
2627
memset(X, 0, sizeof(X));
27-
for (int i = 0; i < (N - 1); i += 2)
28+
for (i = 0; i < (N - 1); i += 2)
2829
{
2930
Y[i] = NAN;
3031
Y[i + 1] = INFINITY;
3132
}
3233
Y[N - 1] = NAN;
3334
BLASFUNC(sgemv)(&trans, &N, &N, &alpha, A, &N, X, &incX, &beta, Y, &incY);
34-
for (int i = 0; i < N; i ++)
35+
for (i = 0; i < N; i ++)
3536
ASSERT_TRUE(Y[i] == 0.0);
3637
}
3738

3839
CTEST(sgemv, 0_nan_inf_incy_2)
3940
{
40-
blasint N = 17;
41+
int i;
42+
blasint N = 17;
4143
blasint Ny = 33;
4244
blasint incX = 1;
4345
blasint incY = 2;
4446
float alpha = 0.0;
4547
float beta = 0.0;
4648
char trans = 'N';
47-
float A[N * N];
48-
float X[N];
49-
float Y[Ny];
49+
float A[17 * 17];
50+
float X[17];
51+
float Y[33];
5052
float *ay = Y;
5153

5254
memset(A, 0, sizeof(A));
5355
memset(X, 0, sizeof(X));
5456
memset(Y, 0, sizeof(Y));
55-
for (int i = 0; i < (N - 1); i += 2)
57+
for (i = 0; i < (N - 1); i += 2)
5658
{
5759
ay[0] = NAN;
5860
ay += 2;
@@ -61,7 +63,7 @@ CTEST(sgemv, 0_nan_inf_incy_2)
6163
}
6264
Y[Ny - 1] = NAN;
6365
BLASFUNC(sgemv)(&trans, &N, &N, &alpha, A, &N, X, &incX, &beta, Y, &incY);
64-
for (int i = 0; i < Ny; i ++)
66+
for (i = 0; i < Ny; i ++)
6567
ASSERT_TRUE(Y[i] == 0.0);
6668
}
6769

@@ -70,47 +72,49 @@ CTEST(sgemv, 0_nan_inf_incy_2)
7072
#ifdef BUILD_DOUBLE
7173
CTEST(dgemv, 0_nan_inf)
7274
{
75+
int i;
7376
blasint N = 17;
7477
blasint incX = 1;
7578
blasint incY = 1;
7679
double alpha = 0.0;
7780
double beta = 0.0;
7881
char trans = 'N';
79-
double A[N * N];
80-
double X[N];
81-
double Y[N];
82+
double A[17 * 17];
83+
double X[17];
84+
double Y[17];
8285

8386
memset(A, 0, sizeof(A));
8487
memset(X, 0, sizeof(X));
85-
for (int i = 0; i < (N - 1); i += 2)
88+
for (i = 0; i < (N - 1); i += 2)
8689
{
8790
Y[i] = NAN;
8891
Y[i + 1] = INFINITY;
8992
}
9093
Y[N - 1] = NAN;
9194
BLASFUNC(dgemv)(&trans, &N, &N, &alpha, A, &N, X, &incX, &beta, Y, &incY);
92-
for (int i = 0; i < N; i ++)
95+
for (i = 0; i < N; i ++)
9396
ASSERT_TRUE(Y[i] == 0.0);
9497
}
9598

9699
CTEST(dgemv, 0_nan_inf_incy_2)
97100
{
98-
blasint N = 17;
101+
int i;
102+
blasint N = 17;
99103
blasint Ny = 33;
100104
blasint incX = 1;
101105
blasint incY = 2;
102106
double alpha = 0.0;
103107
double beta = 0.0;
104108
char trans = 'N';
105-
double A[N * N];
106-
double X[N];
107-
double Y[Ny];
109+
double A[17 * 17];
110+
double X[17];
111+
double Y[33];
108112
double *ay = Y;
109113

110114
memset(A, 0, sizeof(A));
111115
memset(X, 0, sizeof(X));
112116
memset(Y, 0, sizeof(Y));
113-
for (int i = 0; i < (N - 1); i += 2)
117+
for (i = 0; i < (N - 1); i += 2)
114118
{
115119
ay[0] = NAN;
116120
ay += 2;
@@ -119,7 +123,7 @@ CTEST(dgemv, 0_nan_inf_incy_2)
119123
}
120124
Y[Ny - 1] = NAN;
121125
BLASFUNC(dgemv)(&trans, &N, &N, &alpha, A, &N, X, &incX, &beta, Y, &incY);
122-
for (int i = 0; i < Ny; i ++)
126+
for (i = 0; i < Ny; i ++)
123127
ASSERT_TRUE(Y[i] == 0.0);
124128
}
125129

0 commit comments

Comments
 (0)