diff --git a/interface/gemv.c b/interface/gemv.c index 12d27b13cf..405fad51f0 100644 --- a/interface/gemv.c +++ b/interface/gemv.c @@ -212,21 +212,17 @@ void CNAME(enum CBLAS_ORDER order, // make it volatile because some gemv implementation (ex: dgemv_n.S) // do not restore all register volatile int stack_alloc_size = 0; - if (trans == 0) { - //for gemv_n, try to allocate on stack - //for gemv_t, use malloc + //for gemv_n and gemv_t, try to allocate on stack + stack_alloc_size = m + n; + if(stack_alloc_size < 128) + //dgemv_n.S require a 128 bytes buffer + stack_alloc_size = 128; - stack_alloc_size = m + n; - if(stack_alloc_size < 128) - //dgemv_n.S require a 128 bytes buffer - stack_alloc_size = 128; - - if(stack_alloc_size > MAX_STACK_ALLOC / sizeof(FLOAT)) - stack_alloc_size = 0; - } + if(stack_alloc_size > MAX_STACK_ALLOC / sizeof(FLOAT)) + stack_alloc_size = 0; FLOAT stack_buffer[stack_alloc_size]; - buffer = stack_alloc_size ? stack_buffer : (FLOAT *)blas_memory_alloc_nolock(1); + buffer = stack_alloc_size ? stack_buffer : (FLOAT *)blas_memory_alloc(1); // printf("stack_alloc_size=%d\n", stack_alloc_size); #else //Original OpenBLAS/GotoBLAS codes. @@ -262,7 +258,7 @@ void CNAME(enum CBLAS_ORDER order, #ifdef MAX_STACK_ALLOC if(!stack_alloc_size){ - blas_memory_free_nolock(buffer); + blas_memory_free(buffer); } #else blas_memory_free(buffer);