39{
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156 char * Calph, * one, type;
157 Int i1, j1, m1, mn, n1, size;
161
162
163
164
165 if( ( M <= 0 ) || ( N <= 0 ) ) return;
166
168
170 { Calph = ( (
char *)(Calph8 ) );
PB_Cconjg(
TYPE, ALPHA, Calph ); }
171 else if( type ==
DCPLX )
172 { Calph = ( (
char *)(Calph16) );
PB_Cconjg(
TYPE, ALPHA, Calph ); }
173 else
174 { Calph = ALPHA; }
175
177 {
179 mn =
MAX( 0, -IOFFD );
180 if( ( n1 =
MIN( mn, N ) ) > 0 )
181 {
183 &LDAC, BR, &LDBR, one, C, &LDC );
185 &LDBC, AR, &LDAR, one, C, &LDC );
186 }
187 n1 = M - IOFFD;
188 if( ( n1 =
MIN( n1, N ) - mn ) > 0 )
189 {
190 i1 = ( j1 = mn ) + IOFFD;
192 Mptr( AC, i1, 0, LDAC, size ), &LDAC,
Mptr( BC, i1, 0,
193 LDBC, size ), &LDBC, one,
Mptr( C, i1, j1, LDC, size ),
194 &LDC );
195 if( ( m1 = M - mn - n1 - IOFFD ) > 0 )
196 {
197 i1 += n1;
199 Mptr( AC, i1, 0, LDAC, size ), &LDAC,
Mptr( BR, 0, j1, LDBR,
200 size ), &LDBR, one,
Mptr( C, i1, j1, LDC, size ), &LDC );
202 Mptr( BC, i1, 0, LDBC, size ), &LDBC,
Mptr( AR, 0, j1, LDAR,
203 size ), &LDAR, one,
Mptr( C, i1, j1, LDC, size ), &LDC );
204 }
205 }
206 }
208 {
210 mn = M - IOFFD; mn =
MIN( mn, N );
211 if( ( n1 = mn -
MAX( 0, -IOFFD ) ) > 0 )
212 {
213 j1 = mn - n1;
214 if( ( m1 =
MAX( 0, IOFFD ) ) > 0 )
215 {
217 AC, &LDAC, BR, &LDBR, one, C, &LDC );
219 BC, &LDBC, AR, &LDAR, one, C, &LDC );
220 }
222 Mptr( AC, m1, 0, LDAC, size ), &LDAC,
Mptr( BC, m1, 0,
223 LDBC, size ), &LDBC, one,
Mptr( C, m1, j1, LDC, size ),
224 &LDC );
225 }
226 if( ( n1 = N -
MAX( 0, mn ) ) > 0 )
227 {
228 j1 = N - n1;
230 &LDAC,
Mptr( BR, 0, j1, LDBR, size ), &LDBR, one,
Mptr( C, 0, j1,
231 LDC, size ), &LDC );
233 &LDBC,
Mptr( AR, 0, j1, LDAR, size ), &LDAR, one,
Mptr( C, 0, j1,
234 LDC, size ), &LDC );
235 }
236 }
237 else
238 {
239 one =
TYPE->one; gemm =
TYPE->Fgemm;
241 &LDAC, BR, &LDBR, one, C, &LDC );
243 &LDBC, AR, &LDAR, one, C, &LDC );
244 }
245
246
247
248}