commit
cccd1438da
|
@ -174,18 +174,18 @@ Please read `GotoBLAS_01Readme.txt` for older CPU models already supported by th
|
|||
|
||||
### Support for multiple targets in a single library
|
||||
|
||||
OpenBLAS can be built for multiple targets with runtime detection of the target cpu by specifiying DYNAMIC_ARCH=1 in Makefile.rule, on the gmake command line or as -DDYNAMIC_ARCH=TRUE in cmake.
|
||||
OpenBLAS can be built for multiple targets with runtime detection of the target cpu by specifiying `DYNAMIC_ARCH=1` in Makefile.rule, on the gmake command line or as `-DDYNAMIC_ARCH=TRUE` in cmake.
|
||||
|
||||
For **x86_64**, the list of targets this activates contains Prescott, Core2, Nehalem, Barcelona, Sandybridge, Bulldozer, Piledriver, Steamroller, Excavator, Haswell, Zen, SkylakeX. For cpu generations not included in this list, the corresponding older model is used. If you also specify DYNAMIC_OLDER=1, specific support for Penryn, Dunnington, Opteron, Opteron/SSE3, Bobcat, Atom and Nano is added. Finally there is an option DYNAMIC_LIST that allows to specify an individual list of targets to include instead of the default.
|
||||
For **x86_64**, the list of targets this activates contains Prescott, Core2, Nehalem, Barcelona, Sandybridge, Bulldozer, Piledriver, Steamroller, Excavator, Haswell, Zen, SkylakeX. For cpu generations not included in this list, the corresponding older model is used. If you also specify `DYNAMIC_OLDER=1`, specific support for Penryn, Dunnington, Opteron, Opteron/SSE3, Bobcat, Atom and Nano is added. Finally there is an option `DYNAMIC_LIST` that allows to specify an individual list of targets to include instead of the default.
|
||||
|
||||
DYNAMIC_ARCH is also supported on **x86**, where it translates to Katmai, Coppermine, Northwood, Prescott, Banias,
|
||||
`DYNAMIC_ARCH` is also supported on **x86**, where it translates to Katmai, Coppermine, Northwood, Prescott, Banias,
|
||||
Core2, Penryn, Dunnington, Nehalem, Athlon, Opteron, Opteron_SSE3, Barcelona, Bobcat, Atom and Nano.
|
||||
|
||||
On **ARMV8**, it enables support for CortexA53, CortexA57, CortexA72, CortexA73, Falkor, ThunderX, ThunderX2T99, TSV110 as well as generic ARMV8 cpus.
|
||||
|
||||
For **POWER**, the list encompasses POWER6, POWER8 and POWER9, on **ZARCH** it comprises Z13 and Z14.
|
||||
|
||||
The TARGET option can be used in conjunction with DYNAMIC_ARCH=1 to specify which cpu model should be assumed for all the
|
||||
The `TARGET` option can be used in conjunction with `DYNAMIC_ARCH=1` to specify which cpu model should be assumed for all the
|
||||
common code in the library, usually you will want to set this to the oldest model you expect to encounter.
|
||||
Please note that it is not possible to combine support for different architectures, so no combined 32 and 64 bit or x86_64 and arm64 in the same library.
|
||||
|
||||
|
|
|
@ -146,7 +146,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -145,7 +145,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -152,7 +152,7 @@ int main(int argc, char *argv[]){
|
|||
}
|
||||
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -152,7 +152,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -151,7 +151,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -154,7 +154,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -145,7 +145,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -214,7 +214,7 @@ int main(int argc, char *argv[]){
|
|||
}
|
||||
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -197,7 +197,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -163,7 +163,7 @@ int main(int argc, char *argv[]){
|
|||
loops = atoi(p);
|
||||
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -181,7 +181,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -165,7 +165,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -165,7 +165,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -188,7 +188,7 @@ int main(int argc, char *argv[]){
|
|||
}
|
||||
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -158,7 +158,7 @@ int main(int argc, char *argv[]){
|
|||
exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -151,7 +151,7 @@ int main(int argc, char *argv[]){
|
|||
|
||||
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -152,7 +152,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -149,7 +149,7 @@ int main(int argc, char *argv[]){
|
|||
|
||||
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -151,7 +151,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -150,7 +150,7 @@ int main(int argc, char *argv[]){
|
|||
|
||||
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -149,7 +149,7 @@ int main(int argc, char *argv[]){
|
|||
|
||||
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -155,7 +155,7 @@ int main(int argc, char *argv[]){
|
|||
exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -145,7 +145,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -145,7 +145,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -139,7 +139,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -139,7 +139,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -174,7 +174,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -139,7 +139,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -139,7 +139,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -145,7 +145,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -156,7 +156,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -168,7 +168,7 @@ int main(int argc, char *argv[])
|
|||
exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -150,7 +150,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -163,7 +163,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -149,7 +149,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -153,7 +153,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -151,7 +151,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -162,7 +162,7 @@ int main(int argc, char *argv[]){
|
|||
|
||||
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -162,7 +162,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -144,7 +144,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -150,7 +150,7 @@ int main(int argc, char *argv[]){
|
|||
|
||||
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -162,7 +162,7 @@ int main(int argc, char *argv[]){
|
|||
|
||||
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -159,7 +159,7 @@ int main(int argc, char *argv[]){
|
|||
|
||||
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -132,7 +132,7 @@ int main(int argc, char *argv[])
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -132,7 +132,7 @@ int main(int argc, char *argv[])
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -162,7 +162,7 @@ int main(int argc, char *argv[]){
|
|||
|
||||
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -132,7 +132,7 @@ int main(int argc, char *argv[])
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -172,7 +172,7 @@ int main(int argc, char *argv[]){
|
|||
|
||||
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -159,7 +159,7 @@ int main(int argc, char *argv[]){
|
|||
uplo,diag,loops);
|
||||
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -146,7 +146,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -145,7 +145,7 @@ int main(int argc, char *argv[]){
|
|||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||
}
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
srandom(getpid());
|
||||
#endif
|
||||
|
||||
|
|
2
common.h
2
common.h
|
@ -352,7 +352,7 @@ typedef int blasint;
|
|||
#endif
|
||||
|
||||
#if defined(ARMV7) || defined(ARMV6) || defined(ARMV8) || defined(ARMV5)
|
||||
#define YIELDING asm volatile ("nop;nop;nop;nop;nop;nop;nop;nop; \n");
|
||||
#define YIELDING __asm__ __volatile__ ("nop;nop;nop;nop;nop;nop;nop;nop; \n");
|
||||
#endif
|
||||
|
||||
#ifdef BULLDOZER
|
||||
|
|
|
@ -54,7 +54,7 @@ static char *cpuname_lower[] = {
|
|||
int get_feature(char *search)
|
||||
{
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
FILE *infile;
|
||||
char buffer[2048], *p,*t;
|
||||
p = (char *) NULL ;
|
||||
|
@ -90,7 +90,7 @@ int get_feature(char *search)
|
|||
int detect(void)
|
||||
{
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
|
||||
FILE *infile;
|
||||
char buffer[512], *p;
|
||||
|
@ -289,7 +289,7 @@ void get_libname(void)
|
|||
void get_features(void)
|
||||
{
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
FILE *infile;
|
||||
char buffer[2048], *p,*t;
|
||||
p = (char *) NULL ;
|
||||
|
|
|
@ -90,7 +90,7 @@ static char *cpuname_lower[] = {
|
|||
int get_feature(char *search)
|
||||
{
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
FILE *infile;
|
||||
char buffer[2048], *p,*t;
|
||||
p = (char *) NULL ;
|
||||
|
@ -126,7 +126,7 @@ int get_feature(char *search)
|
|||
int detect(void)
|
||||
{
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
|
||||
FILE *infile;
|
||||
char buffer[512], *p, *cpu_part = NULL, *cpu_implementer = NULL;
|
||||
|
@ -242,7 +242,7 @@ void get_cpucount(void)
|
|||
{
|
||||
int n=0;
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
FILE *infile;
|
||||
char buffer[2048], *p,*t;
|
||||
p = (char *) NULL ;
|
||||
|
@ -441,7 +441,7 @@ void get_libname(void)
|
|||
void get_features(void)
|
||||
{
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
FILE *infile;
|
||||
char buffer[2048], *p,*t;
|
||||
p = (char *) NULL ;
|
||||
|
|
|
@ -84,7 +84,7 @@ static char *cpuname[] = {
|
|||
|
||||
int detect(void){
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
FILE *infile;
|
||||
char buffer[512], *p;
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ static char *cpuname[] = {
|
|||
|
||||
int detect(void){
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
FILE *infile;
|
||||
char buffer[512], *p;
|
||||
|
||||
|
|
|
@ -104,7 +104,7 @@ char *corename[] = {
|
|||
|
||||
int detect(void){
|
||||
|
||||
#ifdef linux
|
||||
#ifdef __linux
|
||||
FILE *infile;
|
||||
char buffer[512], *p;
|
||||
|
||||
|
@ -214,6 +214,8 @@ switch ( id >> 16 ) {
|
|||
return CPUTYPE_UNKNOWN;
|
||||
}
|
||||
#endif
|
||||
|
||||
return CPUTYPE_UNKNOWN;
|
||||
}
|
||||
|
||||
void get_architecture(void){
|
||||
|
|
|
@ -48,6 +48,21 @@
|
|||
|
||||
#else
|
||||
|
||||
#ifndef likely
|
||||
#ifdef __GNUC__
|
||||
#define likely(x) __builtin_expect(!!(x), 1)
|
||||
#else
|
||||
#define likely(x) (x)
|
||||
#endif
|
||||
#endif
|
||||
#ifndef unlikely
|
||||
#ifdef __GNUC__
|
||||
#define unlikely(x) __builtin_expect(!!(x), 0)
|
||||
#else
|
||||
#define unlikely(x) (x)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef OMP_SCHED
|
||||
#define OMP_SCHED static
|
||||
#endif
|
||||
|
@ -350,6 +365,9 @@ static void exec_threads(blas_queue_t *queue, int buf_index){
|
|||
|
||||
int exec_blas(BLASLONG num, blas_queue_t *queue){
|
||||
|
||||
// Handle lazy re-init of the thread-pool after a POSIX fork
|
||||
if (unlikely(blas_server_avail == 0)) blas_thread_init();
|
||||
|
||||
BLASLONG i, buf_index;
|
||||
|
||||
if ((num <= 0) || (queue == NULL)) return 0;
|
||||
|
|
|
@ -68,7 +68,7 @@ extern void openblas_warning(int verbose, const char * msg);
|
|||
#endif
|
||||
|
||||
#define get_cpu_ftr(id, var) ({ \
|
||||
asm("mrs %0, "#id : "=r" (var)); \
|
||||
__asm__("mrs %0, "#id : "=r" (var)); \
|
||||
})
|
||||
|
||||
static char *corename[] = {
|
||||
|
|
|
@ -2882,9 +2882,10 @@ void blas_memory_free(void *free_area){
|
|||
while ((position < NUM_BUFFERS) && (memory[position].addr != free_area))
|
||||
position++;
|
||||
|
||||
if (memory[position].addr != free_area) goto error;
|
||||
if (position >= NUM_BUFFERS) goto error;
|
||||
|
||||
#ifdef DEBUG
|
||||
if (memory[position].addr != free_area) goto error;
|
||||
printf(" Position : %d\n", position);
|
||||
#endif
|
||||
|
||||
|
|
|
@ -62,7 +62,7 @@ static void daxpy_kernel_8(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha)
|
|||
y5 = a * x[5] + y[5];
|
||||
y6 = a * x[6] + y[6];
|
||||
y7 = a * x[7] + y[7];
|
||||
asm("":"+w"(y0),"+w"(y1),"+w"(y2),"+w"(y3),"+w"(y4),"+w"(y5),"+w"(y6),"+w"(y7));
|
||||
__asm__("":"+w"(y0),"+w"(y1),"+w"(y2),"+w"(y3),"+w"(y4),"+w"(y5),"+w"(y6),"+w"(y7));
|
||||
y[0] = y0;
|
||||
y[1] = y1;
|
||||
y[2] = y2;
|
||||
|
@ -74,7 +74,7 @@ static void daxpy_kernel_8(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha)
|
|||
|
||||
xx = (x + 4*128/sizeof(*x));
|
||||
yy = (y + 4*128/sizeof(*y));
|
||||
asm("":"+r"(yy)::"memory");
|
||||
__asm__("":"+r"(yy)::"memory");
|
||||
prefetch(xx);
|
||||
prefetch(yy);
|
||||
|
||||
|
|
Loading…
Reference in New Issue