Merge branch 'develop' into develop_arm_softfp
This commit is contained in:
commit
4239dd65ce
|
@ -236,7 +236,11 @@ install(TARGETS ${OpenBLAS_LIBNAME}
|
||||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/config.h
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/config.h
|
||||||
COMMAND ${GENCONFIG_BIN} ${CMAKE_CURRENT_SOURCE_DIR}/config.h ${CMAKE_CURRENT_SOURCE_DIR}/openblas_config_template.h > ${CMAKE_BINARY_DIR}/openblas_config.h
|
COMMAND ${GENCONFIG_BIN} ${CMAKE_CURRENT_SOURCE_DIR}/config.h ${CMAKE_CURRENT_SOURCE_DIR}/openblas_config_template.h > ${CMAKE_BINARY_DIR}/openblas_config.h
|
||||||
)
|
)
|
||||||
ADD_CUSTOM_TARGET(genconfig DEPENDS openblas_config.h)
|
|
||||||
|
ADD_CUSTOM_TARGET(genconfig
|
||||||
|
ALL
|
||||||
|
DEPENDS openblas_config.h
|
||||||
|
)
|
||||||
add_dependencies(genconfig ${OpenBLAS_LIBNAME})
|
add_dependencies(genconfig ${OpenBLAS_LIBNAME})
|
||||||
|
|
||||||
install (FILES ${CMAKE_BINARY_DIR}/openblas_config.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
install (FILES ${CMAKE_BINARY_DIR}/openblas_config.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
@ -244,6 +248,7 @@ install(TARGETS ${OpenBLAS_LIBNAME}
|
||||||
message(STATUS "Generating f77blas.h in ${CMAKE_INSTALL_INCLUDEDIR}")
|
message(STATUS "Generating f77blas.h in ${CMAKE_INSTALL_INCLUDEDIR}")
|
||||||
|
|
||||||
ADD_CUSTOM_TARGET(genf77blas
|
ADD_CUSTOM_TARGET(genf77blas
|
||||||
|
ALL
|
||||||
COMMAND ${AWK} 'BEGIN{print \"\#ifndef OPENBLAS_F77BLAS_H\" \; print \"\#define OPENBLAS_F77BLAS_H\" \; print \"\#include \\"openblas_config.h\\" \"}; NF {print}; END{print \"\#endif\"}' ${CMAKE_CURRENT_SOURCE_DIR}/common_interface.h > ${CMAKE_BINARY_DIR}/f77blas.h
|
COMMAND ${AWK} 'BEGIN{print \"\#ifndef OPENBLAS_F77BLAS_H\" \; print \"\#define OPENBLAS_F77BLAS_H\" \; print \"\#include \\"openblas_config.h\\" \"}; NF {print}; END{print \"\#endif\"}' ${CMAKE_CURRENT_SOURCE_DIR}/common_interface.h > ${CMAKE_BINARY_DIR}/f77blas.h
|
||||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/config.h
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/config.h
|
||||||
)
|
)
|
||||||
|
@ -255,11 +260,11 @@ if(NOT NO_CBLAS)
|
||||||
message (STATUS "Generating cblas.h in ${CMAKE_INSTALL_INCLUDEDIR}")
|
message (STATUS "Generating cblas.h in ${CMAKE_INSTALL_INCLUDEDIR}")
|
||||||
|
|
||||||
ADD_CUSTOM_TARGET(gencblas
|
ADD_CUSTOM_TARGET(gencblas
|
||||||
|
ALL
|
||||||
COMMAND ${SED} 's/common/openblas_config/g' ${CMAKE_CURRENT_SOURCE_DIR}/cblas.h > "${CMAKE_BINARY_DIR}/cblas.tmp"
|
COMMAND ${SED} 's/common/openblas_config/g' ${CMAKE_CURRENT_SOURCE_DIR}/cblas.h > "${CMAKE_BINARY_DIR}/cblas.tmp"
|
||||||
COMMAND cp "${CMAKE_BINARY_DIR}/cblas.tmp" "${CMAKE_BINARY_DIR}/cblas.h"
|
COMMAND cp "${CMAKE_BINARY_DIR}/cblas.tmp" "${CMAKE_BINARY_DIR}/cblas.h"
|
||||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/cblas.h
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/cblas.h
|
||||||
)
|
)
|
||||||
|
|
||||||
add_dependencies(gencblas ${OpenBLAS_LIBNAME})
|
add_dependencies(gencblas ${OpenBLAS_LIBNAME})
|
||||||
|
|
||||||
install (FILES ${CMAKE_BINARY_DIR}/cblas.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
install (FILES ${CMAKE_BINARY_DIR}/cblas.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
|
|
@ -20,6 +20,6 @@ FCOMMON_OPT += -mtune=thunderx -mcpu=thunderx
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CORE), THUNDERX2T99)
|
ifeq ($(CORE), THUNDERX2T99)
|
||||||
CCOMMON_OPT += -mtune=vulcan -mcpu=vulcan
|
CCOMMON_OPT += -mtune=thunderx2t99 -mcpu=thunderx2t99
|
||||||
FCOMMON_OPT += -mtune=vulcan -mcpu=vulcan
|
FCOMMON_OPT += -mtune=thunderx2t99 -mcpu=thunderx2t99
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -496,6 +496,13 @@ CCOMMON_OPT += -mfloat-abi=softfp
|
||||||
FCOMMON_OPT += -mfloat-abi=softfp
|
FCOMMON_OPT += -mfloat-abi=softfp
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(OSNAME), Android)
|
||||||
|
ifeq ($(ARM_SOFTFP_ABI), 1)
|
||||||
|
EXTRALIB += -lm
|
||||||
|
else
|
||||||
|
EXTRALIB += -Wl,-lm_hard
|
||||||
|
endif
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(ARCH), arm64)
|
ifeq ($(ARCH), arm64)
|
||||||
|
|
|
@ -91,3 +91,8 @@ file(WRITE ${TARGET_CONF}
|
||||||
"#define __${BINARY}BIT__\t1\n"
|
"#define __${BINARY}BIT__\t1\n"
|
||||||
"#define FUNDERSCORE\t${FU}\n")
|
"#define FUNDERSCORE\t${FU}\n")
|
||||||
|
|
||||||
|
if (${HOST_OS} STREQUAL "WINDOWSSTORE")
|
||||||
|
file(APPEND ${TARGET_CONF}
|
||||||
|
"#define OS_WINNT\t1\n")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
|
|
@ -77,7 +77,7 @@ if (CYGWIN)
|
||||||
set(NO_EXPRECISION 1)
|
set(NO_EXPRECISION 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Interix")
|
if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Interix" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Android")
|
||||||
if (SMP)
|
if (SMP)
|
||||||
set(EXTRALIB "${EXTRALIB} -lpthread")
|
set(EXTRALIB "${EXTRALIB} -lpthread")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
|
@ -72,20 +72,26 @@ if (MSVC)
|
||||||
set(GETARCH_FLAGS ${GETARCH_FLAGS} -DFORCE_GENERIC)
|
set(GETARCH_FLAGS ${GETARCH_FLAGS} -DFORCE_GENERIC)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
|
||||||
|
# disable WindowsStore strict CRT checks
|
||||||
|
set(GETARCH_FLAGS ${GETARCH_FLAGS} -D_CRT_SECURE_NO_WARNINGS)
|
||||||
|
endif ()
|
||||||
|
|
||||||
set(GETARCH_DIR "${PROJECT_BINARY_DIR}/getarch_build")
|
set(GETARCH_DIR "${PROJECT_BINARY_DIR}/getarch_build")
|
||||||
set(GETARCH_BIN "getarch${CMAKE_EXECUTABLE_SUFFIX}")
|
set(GETARCH_BIN "getarch${CMAKE_EXECUTABLE_SUFFIX}")
|
||||||
file(MAKE_DIRECTORY ${GETARCH_DIR})
|
file(MAKE_DIRECTORY ${GETARCH_DIR})
|
||||||
try_compile(GETARCH_RESULT ${GETARCH_DIR}
|
if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
|
||||||
|
try_compile(GETARCH_RESULT ${GETARCH_DIR}
|
||||||
SOURCES ${GETARCH_SRC}
|
SOURCES ${GETARCH_SRC}
|
||||||
COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} -I${PROJECT_SOURCE_DIR}
|
COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} -I${PROJECT_SOURCE_DIR}
|
||||||
OUTPUT_VARIABLE GETARCH_LOG
|
OUTPUT_VARIABLE GETARCH_LOG
|
||||||
COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH_BIN}
|
COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH_BIN}
|
||||||
)
|
)
|
||||||
|
|
||||||
if (NOT ${GETARCH_RESULT})
|
if (NOT ${GETARCH_RESULT})
|
||||||
MESSAGE(FATAL_ERROR "Compiling getarch failed ${GETARCH_LOG}")
|
MESSAGE(FATAL_ERROR "Compiling getarch failed ${GETARCH_LOG}")
|
||||||
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
message(STATUS "Running getarch")
|
message(STATUS "Running getarch")
|
||||||
|
|
||||||
# use the cmake binary w/ the -E param to run a shell command in a cross-platform way
|
# use the cmake binary w/ the -E param to run a shell command in a cross-platform way
|
||||||
|
@ -101,15 +107,17 @@ ParseGetArchVars(${GETARCH_MAKE_OUT})
|
||||||
set(GETARCH2_DIR "${PROJECT_BINARY_DIR}/getarch2_build")
|
set(GETARCH2_DIR "${PROJECT_BINARY_DIR}/getarch2_build")
|
||||||
set(GETARCH2_BIN "getarch_2nd${CMAKE_EXECUTABLE_SUFFIX}")
|
set(GETARCH2_BIN "getarch_2nd${CMAKE_EXECUTABLE_SUFFIX}")
|
||||||
file(MAKE_DIRECTORY ${GETARCH2_DIR})
|
file(MAKE_DIRECTORY ${GETARCH2_DIR})
|
||||||
try_compile(GETARCH2_RESULT ${GETARCH2_DIR}
|
if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
|
||||||
|
try_compile(GETARCH2_RESULT ${GETARCH2_DIR}
|
||||||
SOURCES ${PROJECT_SOURCE_DIR}/getarch_2nd.c
|
SOURCES ${PROJECT_SOURCE_DIR}/getarch_2nd.c
|
||||||
COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} ${GETARCH2_FLAGS} -I${PROJECT_SOURCE_DIR}
|
COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} ${GETARCH2_FLAGS} -I${PROJECT_SOURCE_DIR}
|
||||||
OUTPUT_VARIABLE GETARCH2_LOG
|
OUTPUT_VARIABLE GETARCH2_LOG
|
||||||
COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH2_BIN}
|
COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH2_BIN}
|
||||||
)
|
)
|
||||||
|
|
||||||
if (NOT ${GETARCH2_RESULT})
|
if (NOT ${GETARCH2_RESULT})
|
||||||
MESSAGE(FATAL_ERROR "Compiling getarch_2nd failed ${GETARCH2_LOG}")
|
MESSAGE(FATAL_ERROR "Compiling getarch_2nd failed ${GETARCH2_LOG}")
|
||||||
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# use the cmake binary w/ the -E param to run a shell command in a cross-platform way
|
# use the cmake binary w/ the -E param to run a shell command in a cross-platform way
|
||||||
|
@ -126,13 +134,15 @@ set(GEN_CONFIG_H_BIN "gen_config_h${CMAKE_EXECUTABLE_SUFFIX}")
|
||||||
set(GEN_CONFIG_H_FLAGS "-DVERSION=\"${OpenBLAS_VERSION}\"")
|
set(GEN_CONFIG_H_FLAGS "-DVERSION=\"${OpenBLAS_VERSION}\"")
|
||||||
file(MAKE_DIRECTORY ${GEN_CONFIG_H_DIR})
|
file(MAKE_DIRECTORY ${GEN_CONFIG_H_DIR})
|
||||||
|
|
||||||
try_compile(GEN_CONFIG_H_RESULT ${GEN_CONFIG_H_DIR}
|
if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
|
||||||
|
try_compile(GEN_CONFIG_H_RESULT ${GEN_CONFIG_H_DIR}
|
||||||
SOURCES ${PROJECT_SOURCE_DIR}/gen_config_h.c
|
SOURCES ${PROJECT_SOURCE_DIR}/gen_config_h.c
|
||||||
COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} ${GEN_CONFIG_H_FLAGS} -I${PROJECT_SOURCE_DIR}
|
COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} ${GEN_CONFIG_H_FLAGS} -I${PROJECT_SOURCE_DIR}
|
||||||
OUTPUT_VARIABLE GEN_CONFIG_H_LOG
|
OUTPUT_VARIABLE GEN_CONFIG_H_LOG
|
||||||
COPY_FILE ${PROJECT_BINARY_DIR}/${GEN_CONFIG_H_BIN}
|
COPY_FILE ${PROJECT_BINARY_DIR}/${GEN_CONFIG_H_BIN}
|
||||||
)
|
)
|
||||||
|
|
||||||
if (NOT ${GEN_CONFIG_H_RESULT})
|
if (NOT ${GEN_CONFIG_H_RESULT})
|
||||||
MESSAGE(FATAL_ERROR "Compiling gen_config_h failed ${GEN_CONFIG_H_LOG}")
|
MESSAGE(FATAL_ERROR "Compiling gen_config_h failed ${GEN_CONFIG_H_LOG}")
|
||||||
|
endif ()
|
||||||
endif ()
|
endif ()
|
13
common.h
13
common.h
|
@ -425,6 +425,10 @@ please https://github.com/xianyi/OpenBLAS/issues/246
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef ASSEMBLER
|
#ifndef ASSEMBLER
|
||||||
|
#ifdef OS_WINDOWSSTORE
|
||||||
|
typedef char env_var_t[MAX_PATH];
|
||||||
|
#define readenv(p, n) 0
|
||||||
|
#else
|
||||||
#ifdef OS_WINDOWS
|
#ifdef OS_WINDOWS
|
||||||
typedef char env_var_t[MAX_PATH];
|
typedef char env_var_t[MAX_PATH];
|
||||||
#define readenv(p, n) GetEnvironmentVariable((LPCTSTR)(n), (LPTSTR)(p), sizeof(p))
|
#define readenv(p, n) GetEnvironmentVariable((LPCTSTR)(n), (LPTSTR)(p), sizeof(p))
|
||||||
|
@ -432,6 +436,7 @@ typedef char env_var_t[MAX_PATH];
|
||||||
typedef char* env_var_t;
|
typedef char* env_var_t;
|
||||||
#define readenv(p, n) ((p)=getenv(n))
|
#define readenv(p, n) ((p)=getenv(n))
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !defined(RPCC_DEFINED) && !defined(OS_WINDOWS)
|
#if !defined(RPCC_DEFINED) && !defined(OS_WINDOWS)
|
||||||
#ifdef _POSIX_MONOTONIC_CLOCK
|
#ifdef _POSIX_MONOTONIC_CLOCK
|
||||||
|
@ -654,7 +659,11 @@ static __inline void blas_unlock(volatile BLASULONG *address){
|
||||||
*address = 0;
|
*address = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef OS_WINDOWSSTORE
|
||||||
|
static __inline int readenv_atoi(char *env) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#else
|
||||||
#ifdef OS_WINDOWS
|
#ifdef OS_WINDOWS
|
||||||
static __inline int readenv_atoi(char *env) {
|
static __inline int readenv_atoi(char *env) {
|
||||||
env_var_t p;
|
env_var_t p;
|
||||||
|
@ -669,7 +678,7 @@ static __inline int readenv_atoi(char *env) {
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !defined(XDOUBLE) || !defined(QUAD_PRECISION)
|
#if !defined(XDOUBLE) || !defined(QUAD_PRECISION)
|
||||||
|
|
||||||
|
|
|
@ -109,7 +109,7 @@ int CNAME(int mode, blas_arg_t *arg, BLASLONG *range_m, BLASLONG *range_n, int (
|
||||||
if (nthreads - num_cpu > 1) {
|
if (nthreads - num_cpu > 1) {
|
||||||
|
|
||||||
di = (double)i;
|
di = (double)i;
|
||||||
width = ((BLASLONG)( sqrt(di * di + dnum) - di) + mask) & ~mask;
|
width = (BLASLONG)(( sqrt(di * di + dnum) - di + mask)/(mask+1)) * (mask+1);
|
||||||
|
|
||||||
if ((width <= 0) || (width > n_to - i)) width = n_to - i;
|
if ((width <= 0) || (width > n_to - i)) width = n_to - i;
|
||||||
|
|
||||||
|
@ -149,7 +149,7 @@ int CNAME(int mode, blas_arg_t *arg, BLASLONG *range_m, BLASLONG *range_n, int (
|
||||||
if (nthreads - num_cpu > 1) {
|
if (nthreads - num_cpu > 1) {
|
||||||
|
|
||||||
di = (double)(arg -> n - i);
|
di = (double)(arg -> n - i);
|
||||||
width = ((BLASLONG)(-sqrt(di * di + dnum) + di) + mask) & ~mask;
|
width = ((BLASLONG)((-sqrt(di * di + dnum) + di) + mask)/(mask+1)) * (mask+1);
|
||||||
|
|
||||||
if ((width <= 0) || (width > n_to - i)) width = n_to - i;
|
if ((width <= 0) || (width > n_to - i)) width = n_to - i;
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,8 @@ if (SMP)
|
||||||
set(BLAS_SERVER blas_server_omp.c)
|
set(BLAS_SERVER blas_server_omp.c)
|
||||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||||
set(BLAS_SERVER blas_server_win32.c)
|
set(BLAS_SERVER blas_server_win32.c)
|
||||||
|
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "WindowsStore")
|
||||||
|
set(BLAS_SERVER blas_server_win32.c)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (NOT DEFINED BLAS_SERVER)
|
if (NOT DEFINED BLAS_SERVER)
|
||||||
|
|
|
@ -444,7 +444,10 @@ int BLASFUNC(blas_thread_shutdown)(void){
|
||||||
|
|
||||||
for(i = 0; i < blas_num_threads - 1; i++){
|
for(i = 0; i < blas_num_threads - 1; i++){
|
||||||
WaitForSingleObject(blas_threads[i], 5); //INFINITE);
|
WaitForSingleObject(blas_threads[i], 5); //INFINITE);
|
||||||
|
#ifndef OS_WINDOWSSTORE
|
||||||
|
// TerminateThread is only available with WINAPI_DESKTOP and WINAPI_SYSTEM not WINAPI_APP in UWP
|
||||||
TerminateThread(blas_threads[i],0);
|
TerminateThread(blas_threads[i],0);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
blas_server_avail = 0;
|
blas_server_avail = 0;
|
||||||
|
|
|
@ -354,6 +354,24 @@ static int numa_check(void) {
|
||||||
return common -> num_nodes;
|
return common -> num_nodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(__GLIBC_PREREQ)
|
||||||
|
#if !__GLIBC_PREREQ(2, 6)
|
||||||
|
int sched_getcpu(void)
|
||||||
|
{
|
||||||
|
int cpu;
|
||||||
|
FILE *fp = NULL;
|
||||||
|
if ( (fp = fopen("/proc/self/stat", "r")) == NULL)
|
||||||
|
return -1;
|
||||||
|
if ( fscanf( fp, "%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%d", &cpu) != 1) {
|
||||||
|
fclose (fp);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
fclose (fp);
|
||||||
|
return(cpu);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
static void numa_mapping(void) {
|
static void numa_mapping(void) {
|
||||||
|
|
||||||
int node, cpu, core;
|
int node, cpu, core;
|
||||||
|
@ -808,7 +826,6 @@ void gotoblas_affinity_init(void) {
|
||||||
common -> shmid = pshmid;
|
common -> shmid = pshmid;
|
||||||
|
|
||||||
if (common -> magic != SH_MAGIC) {
|
if (common -> magic != SH_MAGIC) {
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
fprintf(stderr, "Shared Memory Initialization.\n");
|
fprintf(stderr, "Shared Memory Initialization.\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -56,14 +56,14 @@ static float casum_kernel_16 (long n, float *x)
|
||||||
"xxlxor 38, 38, 38 \n\t"
|
"xxlxor 38, 38, 38 \n\t"
|
||||||
"xxlxor 39, 39, 39 \n\t"
|
"xxlxor 39, 39, 39 \n\t"
|
||||||
|
|
||||||
"lxvw4x 40, 0, %2 \n\t"
|
"lxvd2x 40, 0, %2 \n\t"
|
||||||
"lxvw4x 41, %8, %2 \n\t"
|
"lxvd2x 41, %8, %2 \n\t"
|
||||||
"lxvw4x 42, %9, %2 \n\t"
|
"lxvd2x 42, %9, %2 \n\t"
|
||||||
"lxvw4x 43, %10, %2 \n\t"
|
"lxvd2x 43, %10, %2 \n\t"
|
||||||
"lxvw4x 44, %11, %2 \n\t"
|
"lxvd2x 44, %11, %2 \n\t"
|
||||||
"lxvw4x 45, %12, %2 \n\t"
|
"lxvd2x 45, %12, %2 \n\t"
|
||||||
"lxvw4x 46, %13, %2 \n\t"
|
"lxvd2x 46, %13, %2 \n\t"
|
||||||
"lxvw4x 47, %14, %2 \n\t"
|
"lxvd2x 47, %14, %2 \n\t"
|
||||||
|
|
||||||
"addi %2, %2, 128 \n\t"
|
"addi %2, %2, 128 \n\t"
|
||||||
|
|
||||||
|
@ -78,26 +78,26 @@ static float casum_kernel_16 (long n, float *x)
|
||||||
"xvabssp 50, 42 \n\t"
|
"xvabssp 50, 42 \n\t"
|
||||||
"xvabssp 51, 43 \n\t"
|
"xvabssp 51, 43 \n\t"
|
||||||
|
|
||||||
"lxvw4x 40, 0, %2 \n\t"
|
"lxvd2x 40, 0, %2 \n\t"
|
||||||
"lxvw4x 41, %8, %2 \n\t"
|
"lxvd2x 41, %8, %2 \n\t"
|
||||||
|
|
||||||
"xvabssp %x3, 44 \n\t"
|
"xvabssp %x3, 44 \n\t"
|
||||||
"xvabssp %x4, 45 \n\t"
|
"xvabssp %x4, 45 \n\t"
|
||||||
|
|
||||||
"lxvw4x 42, %9, %2 \n\t"
|
"lxvd2x 42, %9, %2 \n\t"
|
||||||
"lxvw4x 43, %10, %2 \n\t"
|
"lxvd2x 43, %10, %2 \n\t"
|
||||||
|
|
||||||
"xvabssp %x5, 46 \n\t"
|
"xvabssp %x5, 46 \n\t"
|
||||||
"xvabssp %x6, 47 \n\t"
|
"xvabssp %x6, 47 \n\t"
|
||||||
|
|
||||||
"lxvw4x 44, %11, %2 \n\t"
|
"lxvd2x 44, %11, %2 \n\t"
|
||||||
"lxvw4x 45, %12, %2 \n\t"
|
"lxvd2x 45, %12, %2 \n\t"
|
||||||
|
|
||||||
"xvaddsp 32, 32, 48 \n\t"
|
"xvaddsp 32, 32, 48 \n\t"
|
||||||
"xvaddsp 33, 33, 49 \n\t"
|
"xvaddsp 33, 33, 49 \n\t"
|
||||||
|
|
||||||
"lxvw4x 46, %13, %2 \n\t"
|
"lxvd2x 46, %13, %2 \n\t"
|
||||||
"lxvw4x 47, %14, %2 \n\t"
|
"lxvd2x 47, %14, %2 \n\t"
|
||||||
|
|
||||||
"xvaddsp 34, 34, 50 \n\t"
|
"xvaddsp 34, 34, 50 \n\t"
|
||||||
"xvaddsp 35, 35, 51 \n\t"
|
"xvaddsp 35, 35, 51 \n\t"
|
||||||
|
|
|
@ -39,25 +39,25 @@ static void ccopy_kernel_32 (long n, float *x, float *y)
|
||||||
{
|
{
|
||||||
__asm__
|
__asm__
|
||||||
(
|
(
|
||||||
"lxvw4x 32, 0, %2 \n\t"
|
"lxvd2x 32, 0, %2 \n\t"
|
||||||
"lxvw4x 33, %5, %2 \n\t"
|
"lxvd2x 33, %5, %2 \n\t"
|
||||||
"lxvw4x 34, %6, %2 \n\t"
|
"lxvd2x 34, %6, %2 \n\t"
|
||||||
"lxvw4x 35, %7, %2 \n\t"
|
"lxvd2x 35, %7, %2 \n\t"
|
||||||
"lxvw4x 36, %8, %2 \n\t"
|
"lxvd2x 36, %8, %2 \n\t"
|
||||||
"lxvw4x 37, %9, %2 \n\t"
|
"lxvd2x 37, %9, %2 \n\t"
|
||||||
"lxvw4x 38, %10, %2 \n\t"
|
"lxvd2x 38, %10, %2 \n\t"
|
||||||
"lxvw4x 39, %11, %2 \n\t"
|
"lxvd2x 39, %11, %2 \n\t"
|
||||||
|
|
||||||
"addi %2, %2, 128 \n\t"
|
"addi %2, %2, 128 \n\t"
|
||||||
|
|
||||||
"lxvw4x 40, 0, %2 \n\t"
|
"lxvd2x 40, 0, %2 \n\t"
|
||||||
"lxvw4x 41, %5, %2 \n\t"
|
"lxvd2x 41, %5, %2 \n\t"
|
||||||
"lxvw4x 42, %6, %2 \n\t"
|
"lxvd2x 42, %6, %2 \n\t"
|
||||||
"lxvw4x 43, %7, %2 \n\t"
|
"lxvd2x 43, %7, %2 \n\t"
|
||||||
"lxvw4x 44, %8, %2 \n\t"
|
"lxvd2x 44, %8, %2 \n\t"
|
||||||
"lxvw4x 45, %9, %2 \n\t"
|
"lxvd2x 45, %9, %2 \n\t"
|
||||||
"lxvw4x 46, %10, %2 \n\t"
|
"lxvd2x 46, %10, %2 \n\t"
|
||||||
"lxvw4x 47, %11, %2 \n\t"
|
"lxvd2x 47, %11, %2 \n\t"
|
||||||
|
|
||||||
"addi %2, %2, 128 \n\t"
|
"addi %2, %2, 128 \n\t"
|
||||||
|
|
||||||
|
@ -67,42 +67,42 @@ static void ccopy_kernel_32 (long n, float *x, float *y)
|
||||||
".p2align 5 \n"
|
".p2align 5 \n"
|
||||||
"1: \n\t"
|
"1: \n\t"
|
||||||
|
|
||||||
"stxvw4x 32, 0, %3 \n\t"
|
"stxvd2x 32, 0, %3 \n\t"
|
||||||
"stxvw4x 33, %5, %3 \n\t"
|
"stxvd2x 33, %5, %3 \n\t"
|
||||||
"lxvw4x 32, 0, %2 \n\t"
|
"lxvd2x 32, 0, %2 \n\t"
|
||||||
"lxvw4x 33, %5, %2 \n\t"
|
"lxvd2x 33, %5, %2 \n\t"
|
||||||
"stxvw4x 34, %6, %3 \n\t"
|
"stxvd2x 34, %6, %3 \n\t"
|
||||||
"stxvw4x 35, %7, %3 \n\t"
|
"stxvd2x 35, %7, %3 \n\t"
|
||||||
"lxvw4x 34, %6, %2 \n\t"
|
"lxvd2x 34, %6, %2 \n\t"
|
||||||
"lxvw4x 35, %7, %2 \n\t"
|
"lxvd2x 35, %7, %2 \n\t"
|
||||||
"stxvw4x 36, %8, %3 \n\t"
|
"stxvd2x 36, %8, %3 \n\t"
|
||||||
"stxvw4x 37, %9, %3 \n\t"
|
"stxvd2x 37, %9, %3 \n\t"
|
||||||
"lxvw4x 36, %8, %2 \n\t"
|
"lxvd2x 36, %8, %2 \n\t"
|
||||||
"lxvw4x 37, %9, %2 \n\t"
|
"lxvd2x 37, %9, %2 \n\t"
|
||||||
"stxvw4x 38, %10, %3 \n\t"
|
"stxvd2x 38, %10, %3 \n\t"
|
||||||
"stxvw4x 39, %11, %3 \n\t"
|
"stxvd2x 39, %11, %3 \n\t"
|
||||||
"lxvw4x 38, %10, %2 \n\t"
|
"lxvd2x 38, %10, %2 \n\t"
|
||||||
"lxvw4x 39, %11, %2 \n\t"
|
"lxvd2x 39, %11, %2 \n\t"
|
||||||
|
|
||||||
"addi %3, %3, 128 \n\t"
|
"addi %3, %3, 128 \n\t"
|
||||||
"addi %2, %2, 128 \n\t"
|
"addi %2, %2, 128 \n\t"
|
||||||
|
|
||||||
"stxvw4x 40, 0, %3 \n\t"
|
"stxvd2x 40, 0, %3 \n\t"
|
||||||
"stxvw4x 41, %5, %3 \n\t"
|
"stxvd2x 41, %5, %3 \n\t"
|
||||||
"lxvw4x 40, 0, %2 \n\t"
|
"lxvd2x 40, 0, %2 \n\t"
|
||||||
"lxvw4x 41, %5, %2 \n\t"
|
"lxvd2x 41, %5, %2 \n\t"
|
||||||
"stxvw4x 42, %6, %3 \n\t"
|
"stxvd2x 42, %6, %3 \n\t"
|
||||||
"stxvw4x 43, %7, %3 \n\t"
|
"stxvd2x 43, %7, %3 \n\t"
|
||||||
"lxvw4x 42, %6, %2 \n\t"
|
"lxvd2x 42, %6, %2 \n\t"
|
||||||
"lxvw4x 43, %7, %2 \n\t"
|
"lxvd2x 43, %7, %2 \n\t"
|
||||||
"stxvw4x 44, %8, %3 \n\t"
|
"stxvd2x 44, %8, %3 \n\t"
|
||||||
"stxvw4x 45, %9, %3 \n\t"
|
"stxvd2x 45, %9, %3 \n\t"
|
||||||
"lxvw4x 44, %8, %2 \n\t"
|
"lxvd2x 44, %8, %2 \n\t"
|
||||||
"lxvw4x 45, %9, %2 \n\t"
|
"lxvd2x 45, %9, %2 \n\t"
|
||||||
"stxvw4x 46, %10, %3 \n\t"
|
"stxvd2x 46, %10, %3 \n\t"
|
||||||
"stxvw4x 47, %11, %3 \n\t"
|
"stxvd2x 47, %11, %3 \n\t"
|
||||||
"lxvw4x 46, %10, %2 \n\t"
|
"lxvd2x 46, %10, %2 \n\t"
|
||||||
"lxvw4x 47, %11, %2 \n\t"
|
"lxvd2x 47, %11, %2 \n\t"
|
||||||
|
|
||||||
"addi %3, %3, 128 \n\t"
|
"addi %3, %3, 128 \n\t"
|
||||||
"addi %2, %2, 128 \n\t"
|
"addi %2, %2, 128 \n\t"
|
||||||
|
@ -112,25 +112,25 @@ static void ccopy_kernel_32 (long n, float *x, float *y)
|
||||||
|
|
||||||
"2: \n\t"
|
"2: \n\t"
|
||||||
|
|
||||||
"stxvw4x 32, 0, %3 \n\t"
|
"stxvd2x 32, 0, %3 \n\t"
|
||||||
"stxvw4x 33, %5, %3 \n\t"
|
"stxvd2x 33, %5, %3 \n\t"
|
||||||
"stxvw4x 34, %6, %3 \n\t"
|
"stxvd2x 34, %6, %3 \n\t"
|
||||||
"stxvw4x 35, %7, %3 \n\t"
|
"stxvd2x 35, %7, %3 \n\t"
|
||||||
"stxvw4x 36, %8, %3 \n\t"
|
"stxvd2x 36, %8, %3 \n\t"
|
||||||
"stxvw4x 37, %9, %3 \n\t"
|
"stxvd2x 37, %9, %3 \n\t"
|
||||||
"stxvw4x 38, %10, %3 \n\t"
|
"stxvd2x 38, %10, %3 \n\t"
|
||||||
"stxvw4x 39, %11, %3 \n\t"
|
"stxvd2x 39, %11, %3 \n\t"
|
||||||
|
|
||||||
"addi %3, %3, 128 \n\t"
|
"addi %3, %3, 128 \n\t"
|
||||||
|
|
||||||
"stxvw4x 40, 0, %3 \n\t"
|
"stxvd2x 40, 0, %3 \n\t"
|
||||||
"stxvw4x 41, %5, %3 \n\t"
|
"stxvd2x 41, %5, %3 \n\t"
|
||||||
"stxvw4x 42, %6, %3 \n\t"
|
"stxvd2x 42, %6, %3 \n\t"
|
||||||
"stxvw4x 43, %7, %3 \n\t"
|
"stxvd2x 43, %7, %3 \n\t"
|
||||||
"stxvw4x 44, %8, %3 \n\t"
|
"stxvd2x 44, %8, %3 \n\t"
|
||||||
"stxvw4x 45, %9, %3 \n\t"
|
"stxvd2x 45, %9, %3 \n\t"
|
||||||
"stxvw4x 46, %10, %3 \n\t"
|
"stxvd2x 46, %10, %3 \n\t"
|
||||||
"stxvw4x 47, %11, %3 \n"
|
"stxvd2x 47, %11, %3 \n"
|
||||||
|
|
||||||
"#n=%1 x=%4=%2 y=%0=%3 o16=%5 o32=%6 o48=%7 o64=%8 o80=%9 o96=%10 o112=%11"
|
"#n=%1 x=%4=%2 y=%0=%3 o16=%5 o32=%6 o48=%7 o64=%8 o80=%9 o96=%10 o112=%11"
|
||||||
:
|
:
|
||||||
|
|
|
@ -42,91 +42,91 @@ static void cswap_kernel_32 (long n, float *x, float *y)
|
||||||
".p2align 5 \n"
|
".p2align 5 \n"
|
||||||
"1: \n\t"
|
"1: \n\t"
|
||||||
|
|
||||||
"lxvw4x 32, 0, %4 \n\t"
|
"lxvd2x 32, 0, %4 \n\t"
|
||||||
"lxvw4x 33, %5, %4 \n\t"
|
"lxvd2x 33, %5, %4 \n\t"
|
||||||
"lxvw4x 34, %6, %4 \n\t"
|
"lxvd2x 34, %6, %4 \n\t"
|
||||||
"lxvw4x 35, %7, %4 \n\t"
|
"lxvd2x 35, %7, %4 \n\t"
|
||||||
"lxvw4x 36, %8, %4 \n\t"
|
"lxvd2x 36, %8, %4 \n\t"
|
||||||
"lxvw4x 37, %9, %4 \n\t"
|
"lxvd2x 37, %9, %4 \n\t"
|
||||||
"lxvw4x 38, %10, %4 \n\t"
|
"lxvd2x 38, %10, %4 \n\t"
|
||||||
"lxvw4x 39, %11, %4 \n\t"
|
"lxvd2x 39, %11, %4 \n\t"
|
||||||
|
|
||||||
"addi %4, %4, 128 \n\t"
|
"addi %4, %4, 128 \n\t"
|
||||||
|
|
||||||
"lxvw4x 40, 0, %4 \n\t"
|
"lxvd2x 40, 0, %4 \n\t"
|
||||||
"lxvw4x 41, %5, %4 \n\t"
|
"lxvd2x 41, %5, %4 \n\t"
|
||||||
"lxvw4x 42, %6, %4 \n\t"
|
"lxvd2x 42, %6, %4 \n\t"
|
||||||
"lxvw4x 43, %7, %4 \n\t"
|
"lxvd2x 43, %7, %4 \n\t"
|
||||||
"lxvw4x 44, %8, %4 \n\t"
|
"lxvd2x 44, %8, %4 \n\t"
|
||||||
"lxvw4x 45, %9, %4 \n\t"
|
"lxvd2x 45, %9, %4 \n\t"
|
||||||
"lxvw4x 46, %10, %4 \n\t"
|
"lxvd2x 46, %10, %4 \n\t"
|
||||||
"lxvw4x 47, %11, %4 \n\t"
|
"lxvd2x 47, %11, %4 \n\t"
|
||||||
|
|
||||||
"addi %4, %4, -128 \n\t"
|
"addi %4, %4, -128 \n\t"
|
||||||
|
|
||||||
"lxvw4x 48, 0, %3 \n\t"
|
"lxvd2x 48, 0, %3 \n\t"
|
||||||
"lxvw4x 49, %5, %3 \n\t"
|
"lxvd2x 49, %5, %3 \n\t"
|
||||||
"lxvw4x 50, %6, %3 \n\t"
|
"lxvd2x 50, %6, %3 \n\t"
|
||||||
"lxvw4x 51, %7, %3 \n\t"
|
"lxvd2x 51, %7, %3 \n\t"
|
||||||
"lxvw4x 0, %8, %3 \n\t"
|
"lxvd2x 0, %8, %3 \n\t"
|
||||||
"lxvw4x 1, %9, %3 \n\t"
|
"lxvd2x 1, %9, %3 \n\t"
|
||||||
"lxvw4x 2, %10, %3 \n\t"
|
"lxvd2x 2, %10, %3 \n\t"
|
||||||
"lxvw4x 3, %11, %3 \n\t"
|
"lxvd2x 3, %11, %3 \n\t"
|
||||||
|
|
||||||
"addi %3, %3, 128 \n\t"
|
"addi %3, %3, 128 \n\t"
|
||||||
|
|
||||||
"lxvw4x 4, 0, %3 \n\t"
|
"lxvd2x 4, 0, %3 \n\t"
|
||||||
"lxvw4x 5, %5, %3 \n\t"
|
"lxvd2x 5, %5, %3 \n\t"
|
||||||
"lxvw4x 6, %6, %3 \n\t"
|
"lxvd2x 6, %6, %3 \n\t"
|
||||||
"lxvw4x 7, %7, %3 \n\t"
|
"lxvd2x 7, %7, %3 \n\t"
|
||||||
"lxvw4x 8, %8, %3 \n\t"
|
"lxvd2x 8, %8, %3 \n\t"
|
||||||
"lxvw4x 9, %9, %3 \n\t"
|
"lxvd2x 9, %9, %3 \n\t"
|
||||||
"lxvw4x 10, %10, %3 \n\t"
|
"lxvd2x 10, %10, %3 \n\t"
|
||||||
"lxvw4x 11, %11, %3 \n\t"
|
"lxvd2x 11, %11, %3 \n\t"
|
||||||
|
|
||||||
"addi %3, %3, -128 \n\t"
|
"addi %3, %3, -128 \n\t"
|
||||||
|
|
||||||
"stxvw4x 32, 0, %3 \n\t"
|
"stxvd2x 32, 0, %3 \n\t"
|
||||||
"stxvw4x 33, %5, %3 \n\t"
|
"stxvd2x 33, %5, %3 \n\t"
|
||||||
"stxvw4x 34, %6, %3 \n\t"
|
"stxvd2x 34, %6, %3 \n\t"
|
||||||
"stxvw4x 35, %7, %3 \n\t"
|
"stxvd2x 35, %7, %3 \n\t"
|
||||||
"stxvw4x 36, %8, %3 \n\t"
|
"stxvd2x 36, %8, %3 \n\t"
|
||||||
"stxvw4x 37, %9, %3 \n\t"
|
"stxvd2x 37, %9, %3 \n\t"
|
||||||
"stxvw4x 38, %10, %3 \n\t"
|
"stxvd2x 38, %10, %3 \n\t"
|
||||||
"stxvw4x 39, %11, %3 \n\t"
|
"stxvd2x 39, %11, %3 \n\t"
|
||||||
|
|
||||||
"addi %3, %3, 128 \n\t"
|
"addi %3, %3, 128 \n\t"
|
||||||
|
|
||||||
"stxvw4x 40, 0, %3 \n\t"
|
"stxvd2x 40, 0, %3 \n\t"
|
||||||
"stxvw4x 41, %5, %3 \n\t"
|
"stxvd2x 41, %5, %3 \n\t"
|
||||||
"stxvw4x 42, %6, %3 \n\t"
|
"stxvd2x 42, %6, %3 \n\t"
|
||||||
"stxvw4x 43, %7, %3 \n\t"
|
"stxvd2x 43, %7, %3 \n\t"
|
||||||
"stxvw4x 44, %8, %3 \n\t"
|
"stxvd2x 44, %8, %3 \n\t"
|
||||||
"stxvw4x 45, %9, %3 \n\t"
|
"stxvd2x 45, %9, %3 \n\t"
|
||||||
"stxvw4x 46, %10, %3 \n\t"
|
"stxvd2x 46, %10, %3 \n\t"
|
||||||
"stxvw4x 47, %11, %3 \n\t"
|
"stxvd2x 47, %11, %3 \n\t"
|
||||||
|
|
||||||
"addi %3, %3, 128 \n\t"
|
"addi %3, %3, 128 \n\t"
|
||||||
|
|
||||||
"stxvw4x 48, 0, %4 \n\t"
|
"stxvd2x 48, 0, %4 \n\t"
|
||||||
"stxvw4x 49, %5, %4 \n\t"
|
"stxvd2x 49, %5, %4 \n\t"
|
||||||
"stxvw4x 50, %6, %4 \n\t"
|
"stxvd2x 50, %6, %4 \n\t"
|
||||||
"stxvw4x 51, %7, %4 \n\t"
|
"stxvd2x 51, %7, %4 \n\t"
|
||||||
"stxvw4x 0, %8, %4 \n\t"
|
"stxvd2x 0, %8, %4 \n\t"
|
||||||
"stxvw4x 1, %9, %4 \n\t"
|
"stxvd2x 1, %9, %4 \n\t"
|
||||||
"stxvw4x 2, %10, %4 \n\t"
|
"stxvd2x 2, %10, %4 \n\t"
|
||||||
"stxvw4x 3, %11, %4 \n\t"
|
"stxvd2x 3, %11, %4 \n\t"
|
||||||
|
|
||||||
"addi %4, %4, 128 \n\t"
|
"addi %4, %4, 128 \n\t"
|
||||||
|
|
||||||
"stxvw4x 4, 0, %4 \n\t"
|
"stxvd2x 4, 0, %4 \n\t"
|
||||||
"stxvw4x 5, %5, %4 \n\t"
|
"stxvd2x 5, %5, %4 \n\t"
|
||||||
"stxvw4x 6, %6, %4 \n\t"
|
"stxvd2x 6, %6, %4 \n\t"
|
||||||
"stxvw4x 7, %7, %4 \n\t"
|
"stxvd2x 7, %7, %4 \n\t"
|
||||||
"stxvw4x 8, %8, %4 \n\t"
|
"stxvd2x 8, %8, %4 \n\t"
|
||||||
"stxvw4x 9, %9, %4 \n\t"
|
"stxvd2x 9, %9, %4 \n\t"
|
||||||
"stxvw4x 10, %10, %4 \n\t"
|
"stxvd2x 10, %10, %4 \n\t"
|
||||||
"stxvw4x 11, %11, %4 \n\t"
|
"stxvd2x 11, %11, %4 \n\t"
|
||||||
|
|
||||||
"addi %4, %4, 128 \n\t"
|
"addi %4, %4, 128 \n\t"
|
||||||
|
|
||||||
|
|
|
@ -56,14 +56,14 @@ static float sasum_kernel_32 (long n, float *x)
|
||||||
"xxlxor 38, 38, 38 \n\t"
|
"xxlxor 38, 38, 38 \n\t"
|
||||||
"xxlxor 39, 39, 39 \n\t"
|
"xxlxor 39, 39, 39 \n\t"
|
||||||
|
|
||||||
"lxvw4x 40, 0, %2 \n\t"
|
"lxvd2x 40, 0, %2 \n\t"
|
||||||
"lxvw4x 41, %8, %2 \n\t"
|
"lxvd2x 41, %8, %2 \n\t"
|
||||||
"lxvw4x 42, %9, %2 \n\t"
|
"lxvd2x 42, %9, %2 \n\t"
|
||||||
"lxvw4x 43, %10, %2 \n\t"
|
"lxvd2x 43, %10, %2 \n\t"
|
||||||
"lxvw4x 44, %11, %2 \n\t"
|
"lxvd2x 44, %11, %2 \n\t"
|
||||||
"lxvw4x 45, %12, %2 \n\t"
|
"lxvd2x 45, %12, %2 \n\t"
|
||||||
"lxvw4x 46, %13, %2 \n\t"
|
"lxvd2x 46, %13, %2 \n\t"
|
||||||
"lxvw4x 47, %14, %2 \n\t"
|
"lxvd2x 47, %14, %2 \n\t"
|
||||||
|
|
||||||
"addi %2, %2, 128 \n\t"
|
"addi %2, %2, 128 \n\t"
|
||||||
|
|
||||||
|
@ -78,26 +78,26 @@ static float sasum_kernel_32 (long n, float *x)
|
||||||
"xvabssp 50, 42 \n\t"
|
"xvabssp 50, 42 \n\t"
|
||||||
"xvabssp 51, 43 \n\t"
|
"xvabssp 51, 43 \n\t"
|
||||||
|
|
||||||
"lxvw4x 40, 0, %2 \n\t"
|
"lxvd2x 40, 0, %2 \n\t"
|
||||||
"lxvw4x 41, %8, %2 \n\t"
|
"lxvd2x 41, %8, %2 \n\t"
|
||||||
|
|
||||||
"xvabssp %x3, 44 \n\t"
|
"xvabssp %x3, 44 \n\t"
|
||||||
"xvabssp %x4, 45 \n\t"
|
"xvabssp %x4, 45 \n\t"
|
||||||
|
|
||||||
"lxvw4x 42, %9, %2 \n\t"
|
"lxvd2x 42, %9, %2 \n\t"
|
||||||
"lxvw4x 43, %10, %2 \n\t"
|
"lxvd2x 43, %10, %2 \n\t"
|
||||||
|
|
||||||
"xvabssp %x5, 46 \n\t"
|
"xvabssp %x5, 46 \n\t"
|
||||||
"xvabssp %x6, 47 \n\t"
|
"xvabssp %x6, 47 \n\t"
|
||||||
|
|
||||||
"lxvw4x 44, %11, %2 \n\t"
|
"lxvd2x 44, %11, %2 \n\t"
|
||||||
"lxvw4x 45, %12, %2 \n\t"
|
"lxvd2x 45, %12, %2 \n\t"
|
||||||
|
|
||||||
"xvaddsp 32, 32, 48 \n\t"
|
"xvaddsp 32, 32, 48 \n\t"
|
||||||
"xvaddsp 33, 33, 49 \n\t"
|
"xvaddsp 33, 33, 49 \n\t"
|
||||||
|
|
||||||
"lxvw4x 46, %13, %2 \n\t"
|
"lxvd2x 46, %13, %2 \n\t"
|
||||||
"lxvw4x 47, %14, %2 \n\t"
|
"lxvd2x 47, %14, %2 \n\t"
|
||||||
|
|
||||||
"xvaddsp 34, 34, 50 \n\t"
|
"xvaddsp 34, 34, 50 \n\t"
|
||||||
"xvaddsp 35, 35, 51 \n\t"
|
"xvaddsp 35, 35, 51 \n\t"
|
||||||
|
|
|
@ -39,14 +39,14 @@ static void scopy_kernel_32 (long n, float *x, float *y)
|
||||||
{
|
{
|
||||||
__asm__
|
__asm__
|
||||||
(
|
(
|
||||||
"lxvw4x 40, 0, %2 \n\t"
|
"lxvd2x 40, 0, %2 \n\t"
|
||||||
"lxvw4x 41, %5, %2 \n\t"
|
"lxvd2x 41, %5, %2 \n\t"
|
||||||
"lxvw4x 42, %6, %2 \n\t"
|
"lxvd2x 42, %6, %2 \n\t"
|
||||||
"lxvw4x 43, %7, %2 \n\t"
|
"lxvd2x 43, %7, %2 \n\t"
|
||||||
"lxvw4x 44, %8, %2 \n\t"
|
"lxvd2x 44, %8, %2 \n\t"
|
||||||
"lxvw4x 45, %9, %2 \n\t"
|
"lxvd2x 45, %9, %2 \n\t"
|
||||||
"lxvw4x 46, %10, %2 \n\t"
|
"lxvd2x 46, %10, %2 \n\t"
|
||||||
"lxvw4x 47, %11, %2 \n\t"
|
"lxvd2x 47, %11, %2 \n\t"
|
||||||
|
|
||||||
"addi %2, %2, 128 \n\t"
|
"addi %2, %2, 128 \n\t"
|
||||||
|
|
||||||
|
@ -56,22 +56,22 @@ static void scopy_kernel_32 (long n, float *x, float *y)
|
||||||
".p2align 5 \n"
|
".p2align 5 \n"
|
||||||
"1: \n\t"
|
"1: \n\t"
|
||||||
|
|
||||||
"stxvw4x 40, 0, %3 \n\t"
|
"stxvd2x 40, 0, %3 \n\t"
|
||||||
"stxvw4x 41, %5, %3 \n\t"
|
"stxvd2x 41, %5, %3 \n\t"
|
||||||
"lxvw4x 40, 0, %2 \n\t"
|
"lxvd2x 40, 0, %2 \n\t"
|
||||||
"lxvw4x 41, %5, %2 \n\t"
|
"lxvd2x 41, %5, %2 \n\t"
|
||||||
"stxvw4x 42, %6, %3 \n\t"
|
"stxvd2x 42, %6, %3 \n\t"
|
||||||
"stxvw4x 43, %7, %3 \n\t"
|
"stxvd2x 43, %7, %3 \n\t"
|
||||||
"lxvw4x 42, %6, %2 \n\t"
|
"lxvd2x 42, %6, %2 \n\t"
|
||||||
"lxvw4x 43, %7, %2 \n\t"
|
"lxvd2x 43, %7, %2 \n\t"
|
||||||
"stxvw4x 44, %8, %3 \n\t"
|
"stxvd2x 44, %8, %3 \n\t"
|
||||||
"stxvw4x 45, %9, %3 \n\t"
|
"stxvd2x 45, %9, %3 \n\t"
|
||||||
"lxvw4x 44, %8, %2 \n\t"
|
"lxvd2x 44, %8, %2 \n\t"
|
||||||
"lxvw4x 45, %9, %2 \n\t"
|
"lxvd2x 45, %9, %2 \n\t"
|
||||||
"stxvw4x 46, %10, %3 \n\t"
|
"stxvd2x 46, %10, %3 \n\t"
|
||||||
"stxvw4x 47, %11, %3 \n\t"
|
"stxvd2x 47, %11, %3 \n\t"
|
||||||
"lxvw4x 46, %10, %2 \n\t"
|
"lxvd2x 46, %10, %2 \n\t"
|
||||||
"lxvw4x 47, %11, %2 \n\t"
|
"lxvd2x 47, %11, %2 \n\t"
|
||||||
|
|
||||||
"addi %3, %3, 128 \n\t"
|
"addi %3, %3, 128 \n\t"
|
||||||
"addi %2, %2, 128 \n\t"
|
"addi %2, %2, 128 \n\t"
|
||||||
|
@ -81,14 +81,14 @@ static void scopy_kernel_32 (long n, float *x, float *y)
|
||||||
|
|
||||||
"2: \n\t"
|
"2: \n\t"
|
||||||
|
|
||||||
"stxvw4x 40, 0, %3 \n\t"
|
"stxvd2x 40, 0, %3 \n\t"
|
||||||
"stxvw4x 41, %5, %3 \n\t"
|
"stxvd2x 41, %5, %3 \n\t"
|
||||||
"stxvw4x 42, %6, %3 \n\t"
|
"stxvd2x 42, %6, %3 \n\t"
|
||||||
"stxvw4x 43, %7, %3 \n\t"
|
"stxvd2x 43, %7, %3 \n\t"
|
||||||
"stxvw4x 44, %8, %3 \n\t"
|
"stxvd2x 44, %8, %3 \n\t"
|
||||||
"stxvw4x 45, %9, %3 \n\t"
|
"stxvd2x 45, %9, %3 \n\t"
|
||||||
"stxvw4x 46, %10, %3 \n\t"
|
"stxvd2x 46, %10, %3 \n\t"
|
||||||
"stxvw4x 47, %11, %3 \n"
|
"stxvd2x 47, %11, %3 \n"
|
||||||
|
|
||||||
"#n=%1 x=%4=%2 y=%0=%3 o16=%5 o32=%6 o48=%7 o64=%8 o80=%9 o96=%10 o112=%11"
|
"#n=%1 x=%4=%2 y=%0=%3 o16=%5 o32=%6 o48=%7 o64=%8 o80=%9 o96=%10 o112=%11"
|
||||||
:
|
:
|
||||||
|
|
|
@ -57,22 +57,22 @@ static float sdot_kernel_16 (long n, float *x, float *y)
|
||||||
"xxlxor 38, 38, 38 \n\t"
|
"xxlxor 38, 38, 38 \n\t"
|
||||||
"xxlxor 39, 39, 39 \n\t"
|
"xxlxor 39, 39, 39 \n\t"
|
||||||
|
|
||||||
"lxvw4x 40, 0, %2 \n\t"
|
"lxvd2x 40, 0, %2 \n\t"
|
||||||
"lxvw4x 48, 0, %3 \n\t"
|
"lxvd2x 48, 0, %3 \n\t"
|
||||||
"lxvw4x 41, %10, %2 \n\t"
|
"lxvd2x 41, %10, %2 \n\t"
|
||||||
"lxvw4x 49, %10, %3 \n\t"
|
"lxvd2x 49, %10, %3 \n\t"
|
||||||
"lxvw4x 42, %11, %2 \n\t"
|
"lxvd2x 42, %11, %2 \n\t"
|
||||||
"lxvw4x 50, %11, %3 \n\t"
|
"lxvd2x 50, %11, %3 \n\t"
|
||||||
"lxvw4x 43, %12, %2 \n\t"
|
"lxvd2x 43, %12, %2 \n\t"
|
||||||
"lxvw4x 51, %12, %3 \n\t"
|
"lxvd2x 51, %12, %3 \n\t"
|
||||||
"lxvw4x 44, %13, %2 \n\t"
|
"lxvd2x 44, %13, %2 \n\t"
|
||||||
"lxvw4x %x4, %13, %3 \n\t"
|
"lxvd2x %x4, %13, %3 \n\t"
|
||||||
"lxvw4x 45, %14, %2 \n\t"
|
"lxvd2x 45, %14, %2 \n\t"
|
||||||
"lxvw4x %x5, %14, %3 \n\t"
|
"lxvd2x %x5, %14, %3 \n\t"
|
||||||
"lxvw4x 46, %15, %2 \n\t"
|
"lxvd2x 46, %15, %2 \n\t"
|
||||||
"lxvw4x %x6, %15, %3 \n\t"
|
"lxvd2x %x6, %15, %3 \n\t"
|
||||||
"lxvw4x 47, %16, %2 \n\t"
|
"lxvd2x 47, %16, %2 \n\t"
|
||||||
"lxvw4x %x7, %16, %3 \n\t"
|
"lxvd2x %x7, %16, %3 \n\t"
|
||||||
|
|
||||||
"addi %2, %2, 128 \n\t"
|
"addi %2, %2, 128 \n\t"
|
||||||
"addi %3, %3, 128 \n\t"
|
"addi %3, %3, 128 \n\t"
|
||||||
|
@ -84,29 +84,29 @@ static float sdot_kernel_16 (long n, float *x, float *y)
|
||||||
"1: \n\t"
|
"1: \n\t"
|
||||||
|
|
||||||
"xvmaddasp 32, 40, 48 \n\t"
|
"xvmaddasp 32, 40, 48 \n\t"
|
||||||
"lxvw4x 40, 0, %2 \n\t"
|
"lxvd2x 40, 0, %2 \n\t"
|
||||||
"lxvw4x 48, 0, %3 \n\t"
|
"lxvd2x 48, 0, %3 \n\t"
|
||||||
"xvmaddasp 33, 41, 49 \n\t"
|
"xvmaddasp 33, 41, 49 \n\t"
|
||||||
"lxvw4x 41, %10, %2 \n\t"
|
"lxvd2x 41, %10, %2 \n\t"
|
||||||
"lxvw4x 49, %10, %3 \n\t"
|
"lxvd2x 49, %10, %3 \n\t"
|
||||||
"xvmaddasp 34, 42, 50 \n\t"
|
"xvmaddasp 34, 42, 50 \n\t"
|
||||||
"lxvw4x 42, %11, %2 \n\t"
|
"lxvd2x 42, %11, %2 \n\t"
|
||||||
"lxvw4x 50, %11, %3 \n\t"
|
"lxvd2x 50, %11, %3 \n\t"
|
||||||
"xvmaddasp 35, 43, 51 \n\t"
|
"xvmaddasp 35, 43, 51 \n\t"
|
||||||
"lxvw4x 43, %12, %2 \n\t"
|
"lxvd2x 43, %12, %2 \n\t"
|
||||||
"lxvw4x 51, %12, %3 \n\t"
|
"lxvd2x 51, %12, %3 \n\t"
|
||||||
"xvmaddasp 36, 44, %x4 \n\t"
|
"xvmaddasp 36, 44, %x4 \n\t"
|
||||||
"lxvw4x 44, %13, %2 \n\t"
|
"lxvd2x 44, %13, %2 \n\t"
|
||||||
"lxvw4x %x4, %13, %3 \n\t"
|
"lxvd2x %x4, %13, %3 \n\t"
|
||||||
"xvmaddasp 37, 45, %x5 \n\t"
|
"xvmaddasp 37, 45, %x5 \n\t"
|
||||||
"lxvw4x 45, %14, %2 \n\t"
|
"lxvd2x 45, %14, %2 \n\t"
|
||||||
"lxvw4x %x5, %14, %3 \n\t"
|
"lxvd2x %x5, %14, %3 \n\t"
|
||||||
"xvmaddasp 38, 46, %x6 \n\t"
|
"xvmaddasp 38, 46, %x6 \n\t"
|
||||||
"lxvw4x 46, %15, %2 \n\t"
|
"lxvd2x 46, %15, %2 \n\t"
|
||||||
"lxvw4x %x6, %15, %3 \n\t"
|
"lxvd2x %x6, %15, %3 \n\t"
|
||||||
"xvmaddasp 39, 47, %x7 \n\t"
|
"xvmaddasp 39, 47, %x7 \n\t"
|
||||||
"lxvw4x 47, %16, %2 \n\t"
|
"lxvd2x 47, %16, %2 \n\t"
|
||||||
"lxvw4x %x7, %16, %3 \n\t"
|
"lxvd2x %x7, %16, %3 \n\t"
|
||||||
|
|
||||||
"addi %2, %2, 128 \n\t"
|
"addi %2, %2, 128 \n\t"
|
||||||
"addi %3, %3, 128 \n\t"
|
"addi %3, %3, 128 \n\t"
|
||||||
|
|
|
@ -57,15 +57,15 @@ static void srot_kernel_16 (long n, float *x, float *y, float c, float s)
|
||||||
"xscvdpspn 37, %x14 \n\t" // load s to all words
|
"xscvdpspn 37, %x14 \n\t" // load s to all words
|
||||||
"xxspltw 37, 37, 0 \n\t"
|
"xxspltw 37, 37, 0 \n\t"
|
||||||
|
|
||||||
"lxvw4x 32, 0, %3 \n\t" // load x
|
"lxvd2x 32, 0, %3 \n\t" // load x
|
||||||
"lxvw4x 33, %15, %3 \n\t"
|
"lxvd2x 33, %15, %3 \n\t"
|
||||||
"lxvw4x 34, %16, %3 \n\t"
|
"lxvd2x 34, %16, %3 \n\t"
|
||||||
"lxvw4x 35, %17, %3 \n\t"
|
"lxvd2x 35, %17, %3 \n\t"
|
||||||
|
|
||||||
"lxvw4x 48, 0, %4 \n\t" // load y
|
"lxvd2x 48, 0, %4 \n\t" // load y
|
||||||
"lxvw4x 49, %15, %4 \n\t"
|
"lxvd2x 49, %15, %4 \n\t"
|
||||||
"lxvw4x 50, %16, %4 \n\t"
|
"lxvd2x 50, %16, %4 \n\t"
|
||||||
"lxvw4x 51, %17, %4 \n\t"
|
"lxvd2x 51, %17, %4 \n\t"
|
||||||
|
|
||||||
"addi %3, %3, 64 \n\t"
|
"addi %3, %3, 64 \n\t"
|
||||||
"addi %4, %4, 64 \n\t"
|
"addi %4, %4, 64 \n\t"
|
||||||
|
@ -89,26 +89,26 @@ static void srot_kernel_16 (long n, float *x, float *y, float c, float s)
|
||||||
"xvmulsp 44, 32, 37 \n\t" // s * x
|
"xvmulsp 44, 32, 37 \n\t" // s * x
|
||||||
"xvmulsp 45, 33, 37 \n\t"
|
"xvmulsp 45, 33, 37 \n\t"
|
||||||
|
|
||||||
"lxvw4x 32, 0, %3 \n\t" // load x
|
"lxvd2x 32, 0, %3 \n\t" // load x
|
||||||
"lxvw4x 33, %15, %3 \n\t"
|
"lxvd2x 33, %15, %3 \n\t"
|
||||||
|
|
||||||
"xvmulsp 46, 34, 37 \n\t"
|
"xvmulsp 46, 34, 37 \n\t"
|
||||||
"xvmulsp 47, 35, 37 \n\t"
|
"xvmulsp 47, 35, 37 \n\t"
|
||||||
|
|
||||||
"lxvw4x 34, %16, %3 \n\t"
|
"lxvd2x 34, %16, %3 \n\t"
|
||||||
"lxvw4x 35, %17, %3 \n\t"
|
"lxvd2x 35, %17, %3 \n\t"
|
||||||
|
|
||||||
"xvmulsp %x9, 48, 37 \n\t" // s * y
|
"xvmulsp %x9, 48, 37 \n\t" // s * y
|
||||||
"xvmulsp %x10, 49, 37 \n\t"
|
"xvmulsp %x10, 49, 37 \n\t"
|
||||||
|
|
||||||
"lxvw4x 48, 0, %4 \n\t" // load y
|
"lxvd2x 48, 0, %4 \n\t" // load y
|
||||||
"lxvw4x 49, %15, %4 \n\t"
|
"lxvd2x 49, %15, %4 \n\t"
|
||||||
|
|
||||||
"xvmulsp %x11, 50, 37 \n\t"
|
"xvmulsp %x11, 50, 37 \n\t"
|
||||||
"xvmulsp %x12, 51, 37 \n\t"
|
"xvmulsp %x12, 51, 37 \n\t"
|
||||||
|
|
||||||
"lxvw4x 50, %16, %4 \n\t"
|
"lxvd2x 50, %16, %4 \n\t"
|
||||||
"lxvw4x 51, %17, %4 \n\t"
|
"lxvd2x 51, %17, %4 \n\t"
|
||||||
|
|
||||||
"xvaddsp 40, 40, %x9 \n\t" // c * x + s * y
|
"xvaddsp 40, 40, %x9 \n\t" // c * x + s * y
|
||||||
"xvaddsp 41, 41, %x10 \n\t" // c * x + s * y
|
"xvaddsp 41, 41, %x10 \n\t" // c * x + s * y
|
||||||
|
@ -124,15 +124,15 @@ static void srot_kernel_16 (long n, float *x, float *y, float c, float s)
|
||||||
"xvsubsp %x7, %x7, 46 \n\t" // c * y - s * x
|
"xvsubsp %x7, %x7, 46 \n\t" // c * y - s * x
|
||||||
"xvsubsp %x8, %x8, 47 \n\t" // c * y - s * x
|
"xvsubsp %x8, %x8, 47 \n\t" // c * y - s * x
|
||||||
|
|
||||||
"stxvw4x 40, 0, %3 \n\t" // store x
|
"stxvd2x 40, 0, %3 \n\t" // store x
|
||||||
"stxvw4x 41, %15, %3 \n\t"
|
"stxvd2x 41, %15, %3 \n\t"
|
||||||
"stxvw4x 42, %16, %3 \n\t"
|
"stxvd2x 42, %16, %3 \n\t"
|
||||||
"stxvw4x 43, %17, %3 \n\t"
|
"stxvd2x 43, %17, %3 \n\t"
|
||||||
|
|
||||||
"stxvw4x %x5, 0, %4 \n\t" // store y
|
"stxvd2x %x5, 0, %4 \n\t" // store y
|
||||||
"stxvw4x %x6, %15, %4 \n\t"
|
"stxvd2x %x6, %15, %4 \n\t"
|
||||||
"stxvw4x %x7, %16, %4 \n\t"
|
"stxvd2x %x7, %16, %4 \n\t"
|
||||||
"stxvw4x %x8, %17, %4 \n\t"
|
"stxvd2x %x8, %17, %4 \n\t"
|
||||||
|
|
||||||
"addi %3, %3, 128 \n\t"
|
"addi %3, %3, 128 \n\t"
|
||||||
"addi %4, %4, 128 \n\t"
|
"addi %4, %4, 128 \n\t"
|
||||||
|
@ -175,15 +175,15 @@ static void srot_kernel_16 (long n, float *x, float *y, float c, float s)
|
||||||
"xvsubsp %x7, %x7, 46 \n\t" // c * y - s * x
|
"xvsubsp %x7, %x7, 46 \n\t" // c * y - s * x
|
||||||
"xvsubsp %x8, %x8, 47 \n\t" // c * y - s * x
|
"xvsubsp %x8, %x8, 47 \n\t" // c * y - s * x
|
||||||
|
|
||||||
"stxvw4x 40, 0, %3 \n\t" // store x
|
"stxvd2x 40, 0, %3 \n\t" // store x
|
||||||
"stxvw4x 41, %15, %3 \n\t"
|
"stxvd2x 41, %15, %3 \n\t"
|
||||||
"stxvw4x 42, %16, %3 \n\t"
|
"stxvd2x 42, %16, %3 \n\t"
|
||||||
"stxvw4x 43, %17, %3 \n\t"
|
"stxvd2x 43, %17, %3 \n\t"
|
||||||
|
|
||||||
"stxvw4x %x5, 0, %4 \n\t" // store y
|
"stxvd2x %x5, 0, %4 \n\t" // store y
|
||||||
"stxvw4x %x6, %15, %4 \n\t"
|
"stxvd2x %x6, %15, %4 \n\t"
|
||||||
"stxvw4x %x7, %16, %4 \n\t"
|
"stxvd2x %x7, %16, %4 \n\t"
|
||||||
"stxvw4x %x8, %17, %4 \n"
|
"stxvd2x %x8, %17, %4 \n"
|
||||||
|
|
||||||
"#n=%2 x=%0=%3 y=%1=%4 c=%13 s=%14 o16=%15 o32=%16 o48=%17\n"
|
"#n=%2 x=%0=%3 y=%1=%4 c=%13 s=%14 o16=%15 o32=%16 o48=%17\n"
|
||||||
"#t0=%x5 t1=%x6 t2=%x7 t3=%x8 t4=%x9 t5=%x10 t6=%x11 t7=%x12"
|
"#t0=%x5 t1=%x6 t2=%x7 t3=%x8 t4=%x9 t5=%x10 t6=%x11 t7=%x12"
|
||||||
|
|
|
@ -44,14 +44,14 @@ static void sscal_kernel_16 (long n, float *x, float alpha)
|
||||||
"xscvdpspn %x3, %x3 \n\t"
|
"xscvdpspn %x3, %x3 \n\t"
|
||||||
"xxspltw %x3, %x3, 0 \n\t"
|
"xxspltw %x3, %x3, 0 \n\t"
|
||||||
|
|
||||||
"lxvw4x 32, 0, %2 \n\t"
|
"lxvd2x 32, 0, %2 \n\t"
|
||||||
"lxvw4x 33, %4, %2 \n\t"
|
"lxvd2x 33, %4, %2 \n\t"
|
||||||
"lxvw4x 34, %5, %2 \n\t"
|
"lxvd2x 34, %5, %2 \n\t"
|
||||||
"lxvw4x 35, %6, %2 \n\t"
|
"lxvd2x 35, %6, %2 \n\t"
|
||||||
"lxvw4x 36, %7, %2 \n\t"
|
"lxvd2x 36, %7, %2 \n\t"
|
||||||
"lxvw4x 37, %8, %2 \n\t"
|
"lxvd2x 37, %8, %2 \n\t"
|
||||||
"lxvw4x 38, %9, %2 \n\t"
|
"lxvd2x 38, %9, %2 \n\t"
|
||||||
"lxvw4x 39, %10, %2 \n\t"
|
"lxvd2x 39, %10, %2 \n\t"
|
||||||
|
|
||||||
"addi %2, %2, 128 \n\t"
|
"addi %2, %2, 128 \n\t"
|
||||||
|
|
||||||
|
@ -63,31 +63,31 @@ static void sscal_kernel_16 (long n, float *x, float alpha)
|
||||||
|
|
||||||
"xvmulsp 40, 32, %x3 \n\t"
|
"xvmulsp 40, 32, %x3 \n\t"
|
||||||
"xvmulsp 41, 33, %x3 \n\t"
|
"xvmulsp 41, 33, %x3 \n\t"
|
||||||
"lxvw4x 32, 0, %2 \n\t"
|
"lxvd2x 32, 0, %2 \n\t"
|
||||||
"lxvw4x 33, %4, %2 \n\t"
|
"lxvd2x 33, %4, %2 \n\t"
|
||||||
"xvmulsp 42, 34, %x3 \n\t"
|
"xvmulsp 42, 34, %x3 \n\t"
|
||||||
"xvmulsp 43, 35, %x3 \n\t"
|
"xvmulsp 43, 35, %x3 \n\t"
|
||||||
"lxvw4x 34, %5, %2 \n\t"
|
"lxvd2x 34, %5, %2 \n\t"
|
||||||
"lxvw4x 35, %6, %2 \n\t"
|
"lxvd2x 35, %6, %2 \n\t"
|
||||||
"xvmulsp 44, 36, %x3 \n\t"
|
"xvmulsp 44, 36, %x3 \n\t"
|
||||||
"xvmulsp 45, 37, %x3 \n\t"
|
"xvmulsp 45, 37, %x3 \n\t"
|
||||||
"lxvw4x 36, %7, %2 \n\t"
|
"lxvd2x 36, %7, %2 \n\t"
|
||||||
"lxvw4x 37, %8, %2 \n\t"
|
"lxvd2x 37, %8, %2 \n\t"
|
||||||
"xvmulsp 46, 38, %x3 \n\t"
|
"xvmulsp 46, 38, %x3 \n\t"
|
||||||
"xvmulsp 47, 39, %x3 \n\t"
|
"xvmulsp 47, 39, %x3 \n\t"
|
||||||
"lxvw4x 38, %9, %2 \n\t"
|
"lxvd2x 38, %9, %2 \n\t"
|
||||||
"lxvw4x 39, %10, %2 \n\t"
|
"lxvd2x 39, %10, %2 \n\t"
|
||||||
|
|
||||||
"addi %2, %2, -128 \n\t"
|
"addi %2, %2, -128 \n\t"
|
||||||
|
|
||||||
"stxvw4x 40, 0, %2 \n\t"
|
"stxvd2x 40, 0, %2 \n\t"
|
||||||
"stxvw4x 41, %4, %2 \n\t"
|
"stxvd2x 41, %4, %2 \n\t"
|
||||||
"stxvw4x 42, %5, %2 \n\t"
|
"stxvd2x 42, %5, %2 \n\t"
|
||||||
"stxvw4x 43, %6, %2 \n\t"
|
"stxvd2x 43, %6, %2 \n\t"
|
||||||
"stxvw4x 44, %7, %2 \n\t"
|
"stxvd2x 44, %7, %2 \n\t"
|
||||||
"stxvw4x 45, %8, %2 \n\t"
|
"stxvd2x 45, %8, %2 \n\t"
|
||||||
"stxvw4x 46, %9, %2 \n\t"
|
"stxvd2x 46, %9, %2 \n\t"
|
||||||
"stxvw4x 47, %10, %2 \n\t"
|
"stxvd2x 47, %10, %2 \n\t"
|
||||||
|
|
||||||
"addi %2, %2, 256 \n\t"
|
"addi %2, %2, 256 \n\t"
|
||||||
|
|
||||||
|
@ -108,14 +108,14 @@ static void sscal_kernel_16 (long n, float *x, float alpha)
|
||||||
"xvmulsp 46, 38, %x3 \n\t"
|
"xvmulsp 46, 38, %x3 \n\t"
|
||||||
"xvmulsp 47, 39, %x3 \n\t"
|
"xvmulsp 47, 39, %x3 \n\t"
|
||||||
|
|
||||||
"stxvw4x 40, 0, %2 \n\t"
|
"stxvd2x 40, 0, %2 \n\t"
|
||||||
"stxvw4x 41, %4, %2 \n\t"
|
"stxvd2x 41, %4, %2 \n\t"
|
||||||
"stxvw4x 42, %5, %2 \n\t"
|
"stxvd2x 42, %5, %2 \n\t"
|
||||||
"stxvw4x 43, %6, %2 \n\t"
|
"stxvd2x 43, %6, %2 \n\t"
|
||||||
"stxvw4x 44, %7, %2 \n\t"
|
"stxvd2x 44, %7, %2 \n\t"
|
||||||
"stxvw4x 45, %8, %2 \n\t"
|
"stxvd2x 45, %8, %2 \n\t"
|
||||||
"stxvw4x 46, %9, %2 \n\t"
|
"stxvd2x 46, %9, %2 \n\t"
|
||||||
"stxvw4x 47, %10, %2 \n"
|
"stxvd2x 47, %10, %2 \n"
|
||||||
|
|
||||||
"#n=%1 alpha=%3 x=%0=%2 o16=%4 o32=%5 o48=%6 o64=%7 o80=%8 o96=%9 o112=%10"
|
"#n=%1 alpha=%3 x=%0=%2 o16=%4 o32=%5 o48=%6 o64=%7 o80=%8 o96=%9 o112=%10"
|
||||||
:
|
:
|
||||||
|
@ -150,14 +150,14 @@ static void sscal_kernel_16_zero (long n, float *x)
|
||||||
".p2align 5 \n"
|
".p2align 5 \n"
|
||||||
"1: \n\t"
|
"1: \n\t"
|
||||||
|
|
||||||
"stxvw4x %x3, 0, %2 \n\t"
|
"stxvd2x %x3, 0, %2 \n\t"
|
||||||
"stxvw4x %x3, %4, %2 \n\t"
|
"stxvd2x %x3, %4, %2 \n\t"
|
||||||
"stxvw4x %x3, %5, %2 \n\t"
|
"stxvd2x %x3, %5, %2 \n\t"
|
||||||
"stxvw4x %x3, %6, %2 \n\t"
|
"stxvd2x %x3, %6, %2 \n\t"
|
||||||
"stxvw4x %x3, %7, %2 \n\t"
|
"stxvd2x %x3, %7, %2 \n\t"
|
||||||
"stxvw4x %x3, %8, %2 \n\t"
|
"stxvd2x %x3, %8, %2 \n\t"
|
||||||
"stxvw4x %x3, %9, %2 \n\t"
|
"stxvd2x %x3, %9, %2 \n\t"
|
||||||
"stxvw4x %x3, %10, %2 \n\t"
|
"stxvd2x %x3, %10, %2 \n\t"
|
||||||
|
|
||||||
"addi %2, %2, 128 \n\t"
|
"addi %2, %2, 128 \n\t"
|
||||||
|
|
||||||
|
|
|
@ -42,43 +42,43 @@ static void sswap_kernel_32 (long n, float *x, float *y)
|
||||||
".p2align 5 \n"
|
".p2align 5 \n"
|
||||||
"1: \n\t"
|
"1: \n\t"
|
||||||
|
|
||||||
"lxvw4x 32, 0, %4 \n\t"
|
"lxvd2x 32, 0, %4 \n\t"
|
||||||
"lxvw4x 33, %5, %4 \n\t"
|
"lxvd2x 33, %5, %4 \n\t"
|
||||||
"lxvw4x 34, %6, %4 \n\t"
|
"lxvd2x 34, %6, %4 \n\t"
|
||||||
"lxvw4x 35, %7, %4 \n\t"
|
"lxvd2x 35, %7, %4 \n\t"
|
||||||
"lxvw4x 36, %8, %4 \n\t"
|
"lxvd2x 36, %8, %4 \n\t"
|
||||||
"lxvw4x 37, %9, %4 \n\t"
|
"lxvd2x 37, %9, %4 \n\t"
|
||||||
"lxvw4x 38, %10, %4 \n\t"
|
"lxvd2x 38, %10, %4 \n\t"
|
||||||
"lxvw4x 39, %11, %4 \n\t"
|
"lxvd2x 39, %11, %4 \n\t"
|
||||||
|
|
||||||
"lxvw4x 40, 0, %3 \n\t"
|
"lxvd2x 40, 0, %3 \n\t"
|
||||||
"lxvw4x 41, %5, %3 \n\t"
|
"lxvd2x 41, %5, %3 \n\t"
|
||||||
"lxvw4x 42, %6, %3 \n\t"
|
"lxvd2x 42, %6, %3 \n\t"
|
||||||
"lxvw4x 43, %7, %3 \n\t"
|
"lxvd2x 43, %7, %3 \n\t"
|
||||||
"lxvw4x 44, %8, %3 \n\t"
|
"lxvd2x 44, %8, %3 \n\t"
|
||||||
"lxvw4x 45, %9, %3 \n\t"
|
"lxvd2x 45, %9, %3 \n\t"
|
||||||
"lxvw4x 46, %10, %3 \n\t"
|
"lxvd2x 46, %10, %3 \n\t"
|
||||||
"lxvw4x 47, %11, %3 \n\t"
|
"lxvd2x 47, %11, %3 \n\t"
|
||||||
|
|
||||||
"stxvw4x 32, 0, %3 \n\t"
|
"stxvd2x 32, 0, %3 \n\t"
|
||||||
"stxvw4x 33, %5, %3 \n\t"
|
"stxvd2x 33, %5, %3 \n\t"
|
||||||
"stxvw4x 34, %6, %3 \n\t"
|
"stxvd2x 34, %6, %3 \n\t"
|
||||||
"stxvw4x 35, %7, %3 \n\t"
|
"stxvd2x 35, %7, %3 \n\t"
|
||||||
"stxvw4x 36, %8, %3 \n\t"
|
"stxvd2x 36, %8, %3 \n\t"
|
||||||
"stxvw4x 37, %9, %3 \n\t"
|
"stxvd2x 37, %9, %3 \n\t"
|
||||||
"stxvw4x 38, %10, %3 \n\t"
|
"stxvd2x 38, %10, %3 \n\t"
|
||||||
"stxvw4x 39, %11, %3 \n\t"
|
"stxvd2x 39, %11, %3 \n\t"
|
||||||
|
|
||||||
"addi %3, %3, 128 \n\t"
|
"addi %3, %3, 128 \n\t"
|
||||||
|
|
||||||
"stxvw4x 40, 0, %4 \n\t"
|
"stxvd2x 40, 0, %4 \n\t"
|
||||||
"stxvw4x 41, %5, %4 \n\t"
|
"stxvd2x 41, %5, %4 \n\t"
|
||||||
"stxvw4x 42, %6, %4 \n\t"
|
"stxvd2x 42, %6, %4 \n\t"
|
||||||
"stxvw4x 43, %7, %4 \n\t"
|
"stxvd2x 43, %7, %4 \n\t"
|
||||||
"stxvw4x 44, %8, %4 \n\t"
|
"stxvd2x 44, %8, %4 \n\t"
|
||||||
"stxvw4x 45, %9, %4 \n\t"
|
"stxvd2x 45, %9, %4 \n\t"
|
||||||
"stxvw4x 46, %10, %4 \n\t"
|
"stxvd2x 46, %10, %4 \n\t"
|
||||||
"stxvw4x 47, %11, %4 \n\t"
|
"stxvd2x 47, %11, %4 \n\t"
|
||||||
|
|
||||||
"addi %4, %4, 128 \n\t"
|
"addi %4, %4, 128 \n\t"
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,10 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
target_link_libraries(${OpenBLAS_utest_bin} m)
|
target_link_libraries(${OpenBLAS_utest_bin} m)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (${CMAKE_SYSTEM_NAME} STREQUAL "WindowsStore")
|
||||||
|
set_target_properties( ${OpenBLAS_utest_bin} PROPERTIES COMPILE_DEFINITIONS "_CRT_SECURE_NO_WARNINGS")
|
||||||
|
endif()
|
||||||
|
|
||||||
#Set output for utest
|
#Set output for utest
|
||||||
set_target_properties( ${OpenBLAS_utest_bin} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
set_target_properties( ${OpenBLAS_utest_bin} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
foreach (OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
|
foreach (OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
|
||||||
|
|
Loading…
Reference in New Issue