From 1e0192a5ccac28fc0c749f49d36ec7eda9757428 Mon Sep 17 00:00:00 2001 From: Zhaofeng Li Date: Mon, 7 Jun 2021 22:49:39 +0000 Subject: [PATCH 1/3] riscv64/imin: Fix wrong comparison Same as #1990. --- kernel/riscv64/imin.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/riscv64/imin.c b/kernel/riscv64/imin.c index 598cba387..ffc65226e 100644 --- a/kernel/riscv64/imin.c +++ b/kernel/riscv64/imin.c @@ -53,7 +53,7 @@ BLASLONG CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) while(i < n) { - if( x[ix] > minf ) + if( x[ix] < minf ) { min = i; minf = x[ix]; From 3521cd48cbfb3d50f6ae9a10377382d37075c696 Mon Sep 17 00:00:00 2001 From: Zhaofeng Li Date: Mon, 7 Jun 2021 22:50:23 +0000 Subject: [PATCH 2/3] RISCV64_GENERIC: Use generic kernel for DSDOT for better precision The implementation in `riscv64/dot.c` fails the `test_dsdot` test, and the generic kernel seems to have better precision. Tested on SiFive FU740 (HiFive Unmatched) and QEMU. Also see #1469. --- kernel/riscv64/KERNEL.RISCV64_GENERIC | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/riscv64/KERNEL.RISCV64_GENERIC b/kernel/riscv64/KERNEL.RISCV64_GENERIC index ea6a8cf21..61a8a2b91 100644 --- a/kernel/riscv64/KERNEL.RISCV64_GENERIC +++ b/kernel/riscv64/KERNEL.RISCV64_GENERIC @@ -54,6 +54,7 @@ SDOTKERNEL = ../riscv64/dot.c DDOTKERNEL = ../riscv64/dot.c CDOTKERNEL = ../riscv64/zdot.c ZDOTKERNEL = ../riscv64/zdot.c +DSDOTKERNEL = ../generic/dot.c SNRM2KERNEL = ../riscv64/nrm2.c DNRM2KERNEL = ../riscv64/nrm2.c From 590be3fae35d134fae156c60dc3a21d7933f8914 Mon Sep 17 00:00:00 2001 From: Zhaofeng Li Date: Mon, 7 Jun 2021 22:55:56 +0000 Subject: [PATCH 3/3] riscv64: Add Makefile --- kernel/riscv64/Makefile | 1 + 1 file changed, 1 insertion(+) create mode 100644 kernel/riscv64/Makefile diff --git a/kernel/riscv64/Makefile b/kernel/riscv64/Makefile new file mode 100644 index 000000000..520349bd6 --- /dev/null +++ b/kernel/riscv64/Makefile @@ -0,0 +1 @@ +clean ::