Merge pull request #4560 from martin-frbg/issue4551-3
Add support for negative increments to the ?NRM2 kernels for RISC-V RVV targets
This commit is contained in:
commit
dc0338af47
|
@ -101,7 +101,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
|
|||
{
|
||||
BLASLONG i=0;
|
||||
|
||||
if (n <= 0 || inc_x <= 0) return(0.0);
|
||||
if (n <= 0 || inc_x == 0) return(0.0);
|
||||
if(n == 1) return (ABS(x[0]));
|
||||
|
||||
unsigned int gvl = 0;
|
||||
|
@ -119,7 +119,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
|
|||
unsigned int stride_x = inc_x * sizeof(FLOAT);
|
||||
int idx = 0;
|
||||
|
||||
if( n >= gvl ) // don't pay overheads if we're not doing useful work
|
||||
if( n >= gvl && inc_x > 0 ) // don't pay overheads if we're not doing useful work
|
||||
{
|
||||
for(i=0; i<n/gvl; i++){
|
||||
v0 = VLSEV_FLOAT( &x[idx], stride_x, gvl );
|
||||
|
@ -190,7 +190,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
|
|||
//finish any tail using scalar ops
|
||||
i*=gvl*inc_x;
|
||||
n*=inc_x;
|
||||
while(i < n){
|
||||
while(abs(i) < abs(n)){
|
||||
if ( x[i] != 0.0 ){
|
||||
FLOAT absxi = ABS( x[i] );
|
||||
if ( scale < absxi ){
|
||||
|
|
|
@ -104,7 +104,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
|
|||
{
|
||||
BLASLONG i=0;
|
||||
|
||||
if (n <= 0 || inc_x <= 0) return(0.0);
|
||||
if (n <= 0 || inc_x == 0) return(0.0);
|
||||
if(n == 1) return (ABS(x[0]));
|
||||
|
||||
unsigned int gvl = 0;
|
||||
|
@ -122,7 +122,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
|
|||
unsigned int stride_x = inc_x * sizeof(FLOAT);
|
||||
int idx = 0;
|
||||
|
||||
if( n >= gvl ) // don't pay overheads if we're not doing useful work
|
||||
if( n >= gvl && inc_x > 0) // don't pay overheads if we're not doing useful work
|
||||
{
|
||||
for(i=0; i<n/gvl; i++){
|
||||
v0 = VLSEV_FLOAT( &x[idx], stride_x, gvl );
|
||||
|
@ -193,7 +193,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
|
|||
//finish any tail using scalar ops
|
||||
i*=gvl*inc_x;
|
||||
n*=inc_x;
|
||||
while(i < n){
|
||||
while(abs(i)< abs(n)){
|
||||
if ( x[i] != 0.0 ){
|
||||
FLOAT absxi = ABS( x[i] );
|
||||
if ( scale < absxi ){
|
||||
|
|
|
@ -69,7 +69,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
|
|||
{
|
||||
BLASLONG i=0, j=0;
|
||||
|
||||
if (n <= 0 || inc_x <= 0) return(0.0);
|
||||
if (n <= 0 || inc_x == 0) return(0.0);
|
||||
|
||||
FLOAT_V_T vr, v0, v_zero;
|
||||
unsigned int gvl = 0;
|
||||
|
|
|
@ -96,7 +96,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
|
|||
{
|
||||
BLASLONG i=0;
|
||||
|
||||
if (n <= 0 || inc_x <= 0) return(0.0);
|
||||
if (n <= 0 || inc_x == 0) return(0.0);
|
||||
|
||||
FLOAT_V_T v_ssq, v_scale, v0, v1, v_zero;
|
||||
unsigned int gvl = 0;
|
||||
|
@ -176,7 +176,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
|
|||
}
|
||||
|
||||
i += inc_x*2;
|
||||
}while(i<n);
|
||||
}while(abs(i)<abs(n));
|
||||
}
|
||||
|
||||
return(scale * sqrt(ssq));
|
||||
|
|
Loading…
Reference in New Issue