| @@ -11,8 +11,8 @@ endif | |||
| ifeq ($(CORE), ARMV7) | |||
| ifeq ($(OSNAME), Android) | |||
| CCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a | |||
| FCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a | |||
| CCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a -Wl,--no-warn-mismatch | |||
| FCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a -Wl,--no-warn-mismatch | |||
| else | |||
| CCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard -march=armv7-a | |||
| FCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard -march=armv7-a | |||
| @@ -29,5 +29,3 @@ ifeq ($(CORE), ARMV5) | |||
| CCOMMON_OPT += -marm -march=armv5 | |||
| FCOMMON_OPT += -marm -march=armv5 | |||
| endif | |||
| @@ -296,12 +296,14 @@ endif | |||
| ifneq ($(OSNAME), WINNT) | |||
| ifneq ($(OSNAME), CYGWIN_NT) | |||
| ifneq ($(OSNAME), Interix) | |||
| ifneq ($(OSNAME), Android) | |||
| ifdef SMP | |||
| EXTRALIB += -lpthread | |||
| endif | |||
| endif | |||
| endif | |||
| endif | |||
| endif | |||
| # ifeq logical or | |||
| ifeq ($(OSNAME), $(filter $(OSNAME),WINNT CYGWIN_NT Interix)) | |||
| @@ -379,7 +381,7 @@ FCOMMON_OPT += -m128bit-long-double | |||
| endif | |||
| ifeq ($(C_COMPILER), CLANG) | |||
| EXPRECISION = 1 | |||
| CCOMMON_OPT += -DEXPRECISION | |||
| CCOMMON_OPT += -DEXPRECISION | |||
| FCOMMON_OPT += -m128bit-long-double | |||
| endif | |||
| endif | |||
| @@ -393,7 +395,7 @@ endif | |||
| ifeq ($(USE_OPENMP), 1) | |||
| #check | |||
| #check | |||
| ifeq ($(USE_THREAD), 0) | |||
| $(error OpenBLAS: Cannot set both USE_OPENMP=1 and USE_THREAD=0. The USE_THREAD=0 is only for building single thread version.) | |||
| endif | |||
| @@ -1185,4 +1187,3 @@ SUNPATH = /opt/sunstudio12.1 | |||
| else | |||
| SUNPATH = /opt/SUNWspro | |||
| endif | |||
| @@ -34,6 +34,13 @@ | |||
| #ifndef _LAPACKE_CONFIG_H_ | |||
| #define _LAPACKE_CONFIG_H_ | |||
| // For Android prior to API 21 (no <complex> include) | |||
| #if defined(__ANDROID__) | |||
| #if __ANDROID_API__ < 21 | |||
| #define LAPACK_COMPLEX_STRUCTURE | |||
| #endif | |||
| #endif | |||
| #ifdef __cplusplus | |||
| #if defined(LAPACK_COMPLEX_CPP) | |||
| #include <complex> | |||
| @@ -46,7 +46,7 @@ blasint CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, | |||
| BLASLONG n, lda; | |||
| FLOAT *a; | |||
| FLOAT temp[2]; | |||
| FLOAT temp; | |||
| BLASLONG i; | |||
| n = args -> n; | |||
| @@ -64,12 +64,11 @@ blasint CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, | |||
| a + i * COMPSIZE, lda, NULL, 0, NULL, 0); | |||
| if (i < n - 1) { | |||
| temp[0] = DOTC_K(n - i - 1, | |||
| temp = CREAL(DOTC_K(n - i - 1, | |||
| a + (i + 1 + i * lda) * COMPSIZE, 1, | |||
| a + (i + 1 + i * lda) * COMPSIZE, 1); | |||
| GET_IMAGE(temp[1]); | |||
| a + (i + 1 + i * lda) * COMPSIZE, 1)); | |||
| *(a + (i + i * lda) * COMPSIZE + 0) += temp[0]; | |||
| *(a + (i + i * lda) * COMPSIZE + 0) += temp; | |||
| *(a + (i + i * lda) * COMPSIZE + 1) = ZERO; | |||
| GEMV_U(n - i - 1, i, 0, dp1, ZERO, | |||
| @@ -46,7 +46,7 @@ blasint CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, | |||
| BLASLONG n, lda; | |||
| FLOAT *a; | |||
| FLOAT temp[2]; | |||
| FLOAT temp; | |||
| BLASLONG i; | |||
| n = args -> n; | |||
| @@ -64,10 +64,9 @@ blasint CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, | |||
| a + i * lda * COMPSIZE, 1, NULL, 0, NULL, 0); | |||
| if (i < n - 1) { | |||
| temp[0] = DOTC_K(n - i - 1, a + (i + (i + 1) * lda) * COMPSIZE, lda, a + (i + (i + 1) * lda) * COMPSIZE, lda); | |||
| GET_IMAGE(temp[1]); | |||
| temp = CREAL(DOTC_K(n - i - 1, a + (i + (i + 1) * lda) * COMPSIZE, lda, a + (i + (i + 1) * lda) * COMPSIZE, lda)); | |||
| *(a + (i + i * lda) * COMPSIZE + 0) += temp[0]; | |||
| *(a + (i + i * lda) * COMPSIZE + 0) += temp; | |||
| *(a + (i + i * lda) * COMPSIZE + 1) = ZERO; | |||
| GEMV_O(i, n - i - 1, 0, dp1, ZERO, | |||
| @@ -51,7 +51,7 @@ blasint CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, | |||
| BLASLONG n, lda; | |||
| FLOAT *a; | |||
| FLOAT ajj[2]; | |||
| FLOAT ajj; | |||
| FLOAT *aoffset; | |||
| BLASLONG i, j; | |||
| @@ -68,18 +68,17 @@ blasint CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, | |||
| for (j = 0; j < n; j++) { | |||
| ajj[0] = DOTC_K(j, a + j * 2, lda, a + j * 2, lda); | |||
| GET_IMAGE(ajj[1]); | |||
| ajj = CREAL(DOTC_K(j, a + j * 2, lda, a + j * 2, lda)); | |||
| ajj[0] = *(aoffset + j * 2) - ajj[0]; | |||
| ajj = *(aoffset + j * 2) - ajj; | |||
| if (ajj[0] <= 0){ | |||
| *(aoffset + j * 2 + 0) = ajj[0]; | |||
| if (ajj <= 0){ | |||
| *(aoffset + j * 2 + 0) = ajj; | |||
| *(aoffset + j * 2 + 1) = ZERO; | |||
| return j + 1; | |||
| } | |||
| ajj[0] = SQRT(ajj[0]); | |||
| *(aoffset + j * 2 + 0) = ajj[0]; | |||
| ajj = SQRT(ajj); | |||
| *(aoffset + j * 2 + 0) = ajj; | |||
| *(aoffset + j * 2 + 1) = ZERO; | |||
| i = n - j - 1; | |||
| @@ -90,7 +89,7 @@ blasint CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, | |||
| a + j * 2, lda, | |||
| aoffset + (j + 1) * 2, 1, sb); | |||
| SCAL_K(i, 0, 0, ONE / ajj[0], ZERO, | |||
| SCAL_K(i, 0, 0, ONE / ajj, ZERO, | |||
| aoffset + (j + 1) * 2, 1, NULL, 0, NULL, 0); | |||
| } | |||
| @@ -51,7 +51,7 @@ blasint CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, | |||
| BLASLONG n, lda; | |||
| FLOAT *a; | |||
| FLOAT ajj[2]; | |||
| FLOAT ajj; | |||
| BLASLONG i, j; | |||
| n = args -> n; | |||
| @@ -65,19 +65,18 @@ blasint CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, | |||
| for (j = 0; j < n; j++) { | |||
| ajj[0] = DOTC_K(j, a, 1, a, 1); | |||
| GET_IMAGE(ajj[1]); | |||
| ajj = CREAL(DOTC_K(j, a, 1, a, 1)); | |||
| ajj[0] = *(a + j * 2) - ajj[0]; | |||
| ajj = *(a + j * 2) - ajj; | |||
| if (ajj[0] <= 0){ | |||
| *(a + j * 2 + 0) = ajj[0]; | |||
| if (ajj <= 0){ | |||
| *(a + j * 2 + 0) = ajj; | |||
| *(a + j * 2 + 1) = ZERO; | |||
| return j + 1; | |||
| } | |||
| ajj[0] = SQRT(ajj[0]); | |||
| *(a + j * 2 + 0) = ajj[0]; | |||
| ajj = SQRT(ajj); | |||
| *(a + j * 2 + 0) = ajj; | |||
| *(a + j * 2 + 1) = ZERO; | |||
| i = n - j - 1; | |||
| @@ -88,7 +87,7 @@ blasint CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, | |||
| a, 1, | |||
| a + (j + lda) * 2, lda, sb); | |||
| SCAL_K(i, 0, 0, ONE / ajj[0], ZERO, | |||
| SCAL_K(i, 0, 0, ONE / ajj, ZERO, | |||
| a + (j + lda) * 2, lda, NULL, 0, NULL, 0); | |||
| } | |||