From d9dff17aec4fa1e4f9f0e1a32d099a493f299862 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Tue, 12 Mar 2024 20:38:23 +0100 Subject: [PATCH 1/7] handle incx < 0 --- kernel/riscv64/nrm2_vector.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/riscv64/nrm2_vector.c b/kernel/riscv64/nrm2_vector.c index 5c03fbec7..129dbba7a 100644 --- a/kernel/riscv64/nrm2_vector.c +++ b/kernel/riscv64/nrm2_vector.c @@ -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; @@ -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 ){ From dee8557d58fd34750514e5d68e20da0e977e48ce Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Tue, 12 Mar 2024 20:40:29 +0100 Subject: [PATCH 2/7] handle incx < 0 --- kernel/riscv64/znrm2_vector.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/riscv64/znrm2_vector.c b/kernel/riscv64/znrm2_vector.c index 6ee3be79e..cace38891 100644 --- a/kernel/riscv64/znrm2_vector.c +++ b/kernel/riscv64/znrm2_vector.c @@ -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 Date: Tue, 12 Mar 2024 20:42:11 +0100 Subject: [PATCH 3/7] handle incx < 0 --- kernel/riscv64/znrm2_rvv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/riscv64/znrm2_rvv.c b/kernel/riscv64/znrm2_rvv.c index 32f67758a..7b89befcc 100644 --- a/kernel/riscv64/znrm2_rvv.c +++ b/kernel/riscv64/znrm2_rvv.c @@ -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; From 3752e73919f8737f28f45e833fb569782d089c01 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Tue, 12 Mar 2024 20:44:01 +0100 Subject: [PATCH 4/7] handle incx < 0 --- kernel/riscv64/nrm2_rvv.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/riscv64/nrm2_rvv.c b/kernel/riscv64/nrm2_rvv.c index 3eb423849..a0b201ec2 100644 --- a/kernel/riscv64/nrm2_rvv.c +++ b/kernel/riscv64/nrm2_rvv.c @@ -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; @@ -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 ){ From 18a6db686224bdd506570f930f91fed526e02e13 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Wed, 13 Mar 2024 11:10:26 +0100 Subject: [PATCH 5/7] Update nrm2_vector.c --- kernel/riscv64/nrm2_vector.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/riscv64/nrm2_vector.c b/kernel/riscv64/nrm2_vector.c index 129dbba7a..2d07b3ee2 100644 --- a/kernel/riscv64/nrm2_vector.c +++ b/kernel/riscv64/nrm2_vector.c @@ -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(abs(i) < abs(n)){ + while(i< n){ if ( x[i] != 0.0 ){ FLOAT absxi = ABS( x[i] ); if ( scale < absxi ){ From 9baa7579056a156cdda55f5f1c957eee0b6da8eb Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Wed, 13 Mar 2024 11:40:14 +0100 Subject: [PATCH 6/7] Update nrm2_vector.c --- kernel/riscv64/nrm2_vector.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/riscv64/nrm2_vector.c b/kernel/riscv64/nrm2_vector.c index 2d07b3ee2..fc349a0b3 100644 --- a/kernel/riscv64/nrm2_vector.c +++ b/kernel/riscv64/nrm2_vector.c @@ -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 Date: Wed, 13 Mar 2024 13:07:26 +0100 Subject: [PATCH 7/7] Update nrm2_rvv.c --- kernel/riscv64/nrm2_rvv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/riscv64/nrm2_rvv.c b/kernel/riscv64/nrm2_rvv.c index a0b201ec2..14ed68b0a 100644 --- a/kernel/riscv64/nrm2_rvv.c +++ b/kernel/riscv64/nrm2_rvv.c @@ -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