1
1
/***************************************************************************
2
- Copyright (c) 2020, The OpenBLAS Project
2
+ Copyright (c) 2020,2025 The OpenBLAS Project
3
3
All rights reserved.
4
4
Redistribution and use in source and binary forms, with or without
5
5
modification, are permitted provided that the following conditions are
@@ -202,6 +202,8 @@ main (int argc, char *argv[])
202
202
return ret ;
203
203
}
204
204
205
+ for (beta = 0 ; beta < 3 ; beta += 1 ) {
206
+ for (alpha = 0 ; alpha < 3 ; alpha += 1 ) {
205
207
for (l = 0 ; l < 2 ; l ++ ) { // l = 1 to test inc_x & inc_y not equal to one.
206
208
for (x = 1 ; x <= loop ; x ++ )
207
209
{
@@ -230,7 +232,10 @@ main (int argc, char *argv[])
230
232
B [j << l ] = ((FLOAT ) rand () / (FLOAT ) RAND_MAX ) + 0.5 ;
231
233
sbstobf16_ (& one , & B [j << l ], & one , & btmp , & one );
232
234
BB [j << l ].v = btmp ;
235
+
236
+ CC [j << l ] = C [j << l ] = ((FLOAT ) rand () / (FLOAT ) RAND_MAX ) + 0.5 ;
233
237
}
238
+
234
239
for (y = 0 ; y < 2 ; y ++ )
235
240
{
236
241
if (y == 0 ) {
@@ -246,12 +251,14 @@ main (int argc, char *argv[])
246
251
SGEMV (& transA , & x , & x , & alpha , A , & x , B , & k , & beta , C , & k );
247
252
SBGEMV (& transA , & x , & x , & alpha , (bfloat16 * ) AA , & x , (bfloat16 * ) BB , & k , & beta , CC , & k );
248
253
254
+ for (int i = 0 ; i < x ; i ++ ) DD [i ] *= beta ;
255
+
249
256
for (j = 0 ; j < x ; j ++ )
250
257
for (i = 0 ; i < x ; i ++ )
251
258
if (transA == 'N' ) {
252
- DD [i ] += float16to32 (AA [j * x + i ]) * float16to32 (BB [j << l ]);
259
+ DD [i ] += alpha * float16to32 (AA [j * x + i ]) * float16to32 (BB [j << l ]);
253
260
} else if (transA == 'T' ) {
254
- DD [j ] += float16to32 (AA [j * x + i ]) * float16to32 (BB [i << l ]);
261
+ DD [j ] += alpha * float16to32 (AA [j * x + i ]) * float16to32 (BB [i << l ]);
255
262
}
256
263
257
264
for (j = 0 ; j < x ; j ++ ) {
@@ -268,8 +275,10 @@ main (int argc, char *argv[])
268
275
free (BB );
269
276
free (DD );
270
277
free (CC );
271
- }
272
- }
278
+ } // x
279
+ } // l
280
+ } // alpha
281
+ } // beta
273
282
274
283
if (ret != 0 )
275
284
fprintf (stderr , "FATAL ERROR SBGEMV - Return code: %d\n" , ret );
0 commit comments