Browse Source

Merge pull request #1126 from martin-frbg/pgi

Fix compilation with PGI by replacing verbatim _real_, _imag_ extensions and updating macro definitions for modern, C99-capable versions of the PGI compiler
tags/v0.2.20^2
Martin Kroeker GitHub 9 years ago
parent
commit
ad124a5e8b
4 changed files with 27 additions and 17 deletions
  1. +7
    -2
      common.h
  2. +4
    -3
      interface/zdot.c
  3. +7
    -6
      kernel/x86_64/cdot.c
  4. +9
    -6
      kernel/x86_64/zdot.c

+ 7
- 2
common.h View File

@@ -556,8 +556,13 @@ static void __inline blas_lock(volatile BLASULONG *address){
#endif

#if defined(C_PGI) || defined(C_SUN)
#define CREAL(X) (*((FLOAT *)&X + 0))
#define CIMAG(X) (*((FLOAT *)&X + 1))
#if defined(__STDC_IEC_559_COMPLEX__)
#define CREAL(X) creal(X)
#define CIMAG(X) cimag(X)
#else
#define CREAL(X) (*((FLOAT *)&X + 0))
#define CIMAG(X) (*((FLOAT *)&X + 1))
#endif
#else
#ifdef OPENBLAS_COMPLEX_STRUCT
#define CREAL(Z) ((Z).real)


+ 4
- 3
interface/zdot.c View File

@@ -160,9 +160,10 @@ OPENBLAS_COMPLEX_FLOAT CNAME(blasint n, FLOAT *x, blasint incx, FLOAT *y, blasin

if (n <= 0) {
#ifdef FORCE_USE_STACK
//*result = OPENBLAS_MAKE_COMPLEX_FLOAT(0.0, 0.0);
CREAL(*result) = 0.0;
CIMAG(*result) = 0.0;
OPENBLAS_COMPLEX_FLOAT zero=OPENBLAS_MAKE_COMPLEX_FLOAT(0.0, 0.0);
*result = zero;
// CREAL(*result) = 0.0;
// CIMAG(*result) = 0.0;
return;
#else
return zero;


+ 7
- 6
kernel/x86_64/cdot.c View File

@@ -100,8 +100,7 @@ FLOAT _Complex CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG in

if ( n <= 0 )
{
__real__ result = 0.0 ;
__imag__ result = 0.0 ;
result = OPENBLAS_MAKE_COMPLEX_FLOAT (0.0, 0.0) ;
return(result);

}
@@ -161,11 +160,13 @@ FLOAT _Complex CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG in
}

#if !defined(CONJ)
__real__ result = dot[0] - dot[1];
__imag__ result = dot[4] + dot[5];
result = OPENBLAS_MAKE_COMPLEX_FLOAT (dot[0]-dot[1], dot[4]+dot[5]) ;
// CREAL(result) = dot[0] - dot[1];
// CIMAG(result) = dot[4] + dot[5];
#else
__real__ result = dot[0] + dot[1];
__imag__ result = dot[4] - dot[5];
result = OPENBLAS_MAKE_COMPLEX_FLOAT (dot[0]+dot[1], dot[4]-dot[5]) ;
// CREAL(result) = dot[0] + dot[1];
// CIMAG(result) = dot[4] - dot[5];

#endif



+ 9
- 6
kernel/x86_64/zdot.c View File

@@ -95,8 +95,9 @@ FLOAT _Complex CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG in

if ( n <= 0 )
{
__real__ result = 0.0 ;
__imag__ result = 0.0 ;
// CREAL(result) = 0.0 ;
// CIMAG(result) = 0.0 ;
result=OPENBLAS_MAKE_COMPLEX_FLOAT(0.0,0.0);
return(result);

}
@@ -150,11 +151,13 @@ FLOAT _Complex CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG in
}

#if !defined(CONJ)
__real__ result = dot[0] - dot[1];
__imag__ result = dot[2] + dot[3];
result=OPENBLAS_MAKE_COMPLEX_FLOAT(dot[0]-dot[1],dot[2]+dot[3]);
// CREAL(result) = dot[0] - dot[1];
// CIMAG(result) = dot[2] + dot[3];
#else
__real__ result = dot[0] + dot[1];
__imag__ result = dot[2] - dot[3];
result=OPENBLAS_MAKE_COMPLEX_FLOAT(dot[0]+dot[1],dot[2]-dot[3]);
// CREAL(result) = dot[0] + dot[1];
// CIMAG(result) = dot[2] - dot[3];

#endif



Loading…
Cancel
Save