summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXianyi <xianyi@iscas.ac.cn>2011-09-17 07:32:10 +0800
committerXianyi <xianyi@iscas.ac.cn>2011-09-17 07:32:10 +0800
commit74fa790354f86b9a9877309aa2c723a1364c6784 (patch)
tree2dbfe4d77b137eb563abfd7eaa138f3db2bac5b7
parent756477bfe3791f13ed270d1d75ad1dfccbf83bc1 (diff)
parent7b410b7f0e94edde2a606593086694ae6bb17be8 (diff)
downloadopenblas-74fa790354f86b9a9877309aa2c723a1364c6784.tar.gz
openblas-74fa790354f86b9a9877309aa2c723a1364c6784.tar.bz2
openblas-74fa790354f86b9a9877309aa2c723a1364c6784.zip
Merge branch 'develop' into hotfix-0.1alpha2.4
-rw-r--r--Makefile7
-rw-r--r--common_interface.h11
-rw-r--r--kernel/x86/xdot.S10
-rw-r--r--kernel/x86/zdot.S10
-rw-r--r--kernel/x86/zdot_sse2.S4
-rw-r--r--openblas_config_template.h20
6 files changed, 57 insertions, 5 deletions
diff --git a/Makefile b/Makefile
index 0c82d4a95..573c44c33 100644
--- a/Makefile
+++ b/Makefile
@@ -125,6 +125,13 @@ endif
#Save the config files for installation
cp Makefile.conf Makefile.conf_last
cp config.h config_last.h
+ifdef QUAD_PRECISION
+ echo "#define QUAD_PRECISION">> config_last.h
+endif
+ifeq ($(EXPRECISION), 1)
+ echo "#define EXPRECISION">> config_last.h
+endif
+##
ifdef DYNAMIC_ARCH
$(MAKE) -C kernel commonlibs || exit 1
for d in $(DYNAMIC_CORE) ; \
diff --git a/common_interface.h b/common_interface.h
index 36bf5aa48..898d91001 100644
--- a/common_interface.h
+++ b/common_interface.h
@@ -38,6 +38,11 @@
#ifndef ASSEMBLER
+#ifdef __cplusplus
+extern "C" {
+ /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
int BLASFUNC(xerbla)(char *, blasint *info, blasint);
FLOATRET BLASFUNC(sdot) (blasint *, float *, blasint *, float *, blasint *);
@@ -733,4 +738,10 @@ xdouble BLASFUNC(qlamch)(char *);
FLOATRET BLASFUNC(slamc3)(float *, float *);
double BLASFUNC(dlamc3)(double *, double *);
xdouble BLASFUNC(qlamc3)(xdouble *, xdouble *);
+
+#ifdef __cplusplus
+}
+
+#endif /* __cplusplus */
+
#endif
diff --git a/kernel/x86/xdot.S b/kernel/x86/xdot.S
index 4a5af4642..929763271 100644
--- a/kernel/x86/xdot.S
+++ b/kernel/x86/xdot.S
@@ -307,7 +307,11 @@
popl %ebx
popl %esi
popl %edi
+#if defined(F_INTERFACE) && defined(RETURN_BY_STACK)
+ ret $0x4
+#else
ret
+#endif
ALIGN_3
.L88:
@@ -326,6 +330,10 @@
popl %ebx
popl %esi
popl %edi
- ret
+#if defined(F_INTERFACE) && defined(RETURN_BY_STACK)
+ ret $0x4
+#else
+ ret
+#endif
EPILOGUE
diff --git a/kernel/x86/zdot.S b/kernel/x86/zdot.S
index aa4481f97..9d8866ad0 100644
--- a/kernel/x86/zdot.S
+++ b/kernel/x86/zdot.S
@@ -283,7 +283,11 @@
popl %ebx
popl %esi
popl %edi
+#if defined(DOUBLE) || defined(XDOUBLE)
+ ret $0x4
+#else
ret
+#endif
ALIGN_3
.L88:
@@ -305,6 +309,10 @@
popl %ebx
popl %esi
popl %edi
- ret
+#if defined(DOUBLE) || defined(XDOUBLE)
+ ret $0x4
+#else
+ ret
+#endif
EPILOGUE
diff --git a/kernel/x86/zdot_sse2.S b/kernel/x86/zdot_sse2.S
index 2a174fb5d..efebe637b 100644
--- a/kernel/x86/zdot_sse2.S
+++ b/kernel/x86/zdot_sse2.S
@@ -1542,7 +1542,5 @@
popl %esi
popl %edi
/*remove the hidden return value address from the stack.*/
- popl %ecx
- xchgl %ecx, 0(%esp)
- ret
+ ret $0x4
EPILOGUE
diff --git a/openblas_config_template.h b/openblas_config_template.h
index 9fb80aa4f..8bf972593 100644
--- a/openblas_config_template.h
+++ b/openblas_config_template.h
@@ -6,6 +6,16 @@
#define BLASFUNC(FUNC) FUNC
#endif
+#ifdef QUAD_PRECISION
+typedef struct {
+ unsigned long x[2];
+} xdouble;
+#elif defined EXPRECISION
+#define xdouble long double
+#else
+#define xdouble double
+#endif
+
#if defined(OS_WINDOWS) && defined(__64BIT__)
typedef long long BLASLONG;
typedef unsigned long long BLASULONG;
@@ -19,3 +29,13 @@ typedef BLASLONG blasint;
#else
typedef int blasint;
#endif
+
+#if defined(XDOUBLE) || defined(DOUBLE)
+#define FLOATRET FLOAT
+#else
+#ifdef NEED_F2CCONV
+#define FLOATRET double
+#else
+#define FLOATRET float
+#endif
+#endif