Skip to content

Commit ec1ef6a

Browse files
authored
Merge pull request #2241 from martin-frbg/zdotfix
Make x86_64 zdot compile with PGI and Sun C again
2 parents db06615 + 11c59ac commit ec1ef6a

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

kernel/x86_64/zdot.c

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -181,11 +181,19 @@ OPENBLAS_COMPLEX_FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLA
181181
#if defined(SMP)
182182
int nthreads;
183183
FLOAT dummy_alpha;
184+
#if defined(C_PGI) || defined(C_SUN)
185+
FLOAT zdotr=0., zdoti=0.;
186+
#endif
184187
#endif
188+
185189
OPENBLAS_COMPLEX_FLOAT zdot;
186-
CREAL(zdot) = 0.0;
187-
CIMAG(zdot) = 0.0;
188-
190+
#if defined(C_PGI) || defined(C_SUN)
191+
zdot=OPENBLAS_MAKE_COMPLEX_FLOAT(0.0,0.0);
192+
#else
193+
CREAL(zdot) = 0.0;
194+
CIMAG(zdot) = 0.0;
195+
#endif
196+
189197
#if defined(SMP)
190198
if (inc_x == 0 || inc_y == 0 || n <= 10000)
191199
nthreads = 1;
@@ -211,15 +219,23 @@ OPENBLAS_COMPLEX_FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLA
211219

212220
ptr = (OPENBLAS_COMPLEX_FLOAT *)result;
213221
for (i = 0; i < nthreads; i++) {
222+
#if defined(C_PGI) || defined(C_SUN)
223+
zdotr += CREAL(*ptr);
224+
zdoti += CIMAG(*ptr);
225+
#else
214226
CREAL(zdot) = CREAL(zdot) + CREAL(*ptr);
215227
CIMAG(zdot) = CIMAG(zdot) + CIMAG(*ptr);
228+
#endif
216229
ptr = (void *)(((char *)ptr) + sizeof(double) * 2);
217230
}
231+
#if defined(C_PGI) || defined(C_SUN)
232+
zdot = OPENBLAS_MAKE_COMPLEX_FLOAT(zdotr,zdoti);
233+
#endif
218234
}
219235
#else
220236
zdot_compute(n, x, inc_x, y, inc_y, &zdot);
221237
#endif
222-
238+
223239
return zdot;
224240
}
225241

0 commit comments

Comments
 (0)