1+ /***************************************************************************
2+ * Copyright (c) 2022, The OpenBLAS Project
3+ * All rights reserved.
4+ * Redistribution and use in source and binary forms, with or without
5+ * modification, are permitted provided that the following conditions are
6+ * met:
7+ * 1. Redistributions of source code must retain the above copyright
8+ * notice, this list of conditions and the following disclaimer.
9+ * 2. Redistributions in binary form must reproduce the above copyright
10+ * notice, this list of conditions and the following disclaimer in
11+ * the documentation and/or other materials provided with the
12+ * distribution.
13+ * 3. Neither the name of the OpenBLAS project nor the names of
14+ * its contributors may be used to endorse or promote products
15+ * derived from this software without specific prior written permission.
16+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19+ * ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE
20+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26+ * POSSIBILITY OF SUCH DAMAGE.
27+ * *****************************************************************************/
28+
29+ #include "common.h"
30+
31+ int CNAME (BLASLONG m , BLASLONG n , BLASLONG dummy1 , FLOAT beta , IFLOAT * dummy2 ,
32+ BLASLONG dummy3 , IFLOAT * dummy4 , BLASLONG dummy5 , FLOAT * c ,
33+ BLASLONG ldc ) {
34+
35+ BLASLONG i , j ;
36+ BLASLONG chunk , remain ;
37+ FLOAT * c_offset1 , * c_offset ;
38+ c_offset = c ;
39+ chunk = m >> 3 ;
40+ remain = m & 7 ;
41+ if (beta == ZERO ) {
42+ for (j = n ; j > 0 ; j -- ) {
43+ c_offset1 = c_offset ;
44+ c_offset += ldc ;
45+ for (i = chunk ; i > 0 ; i -- ) {
46+ * (c_offset1 + 0 ) = ZERO ;
47+ * (c_offset1 + 1 ) = ZERO ;
48+ * (c_offset1 + 2 ) = ZERO ;
49+ * (c_offset1 + 3 ) = ZERO ;
50+ * (c_offset1 + 4 ) = ZERO ;
51+ * (c_offset1 + 5 ) = ZERO ;
52+ * (c_offset1 + 6 ) = ZERO ;
53+ * (c_offset1 + 7 ) = ZERO ;
54+ c_offset1 += 8 ;
55+ }
56+ for (i = remain ; i > 0 ; i -- ) {
57+ * c_offset1 = ZERO ;
58+ c_offset1 ++ ;
59+ }
60+ }
61+ } else {
62+ for (j = n ; j > 0 ; j -- ) {
63+ c_offset1 = c_offset ;
64+ c_offset += ldc ;
65+ for (i = chunk ; i > 0 ; i -- ) {
66+ * (c_offset1 + 0 ) *= beta ;
67+ * (c_offset1 + 1 ) *= beta ;
68+ * (c_offset1 + 2 ) *= beta ;
69+ * (c_offset1 + 3 ) *= beta ;
70+ * (c_offset1 + 4 ) *= beta ;
71+ * (c_offset1 + 5 ) *= beta ;
72+ * (c_offset1 + 6 ) *= beta ;
73+ * (c_offset1 + 7 ) *= beta ;
74+ c_offset1 += 8 ;
75+ }
76+ for (i = remain ; i > 0 ; i -- ) {
77+ * c_offset1 *= beta ;
78+ c_offset1 ++ ;
79+ }
80+ }
81+ }
82+ return 0 ;
83+ };
0 commit comments