summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/loongarch/slide_hash_lasx.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/arch/loongarch/slide_hash_lasx.c b/arch/loongarch/slide_hash_lasx.c
index 11c45d7058..f464779090 100644
--- a/arch/loongarch/slide_hash_lasx.c
+++ b/arch/loongarch/slide_hash_lasx.c
@@ -20,17 +20,20 @@
static inline void slide_hash_chain(Pos *table, uint32_t entries, const __m256i wsize) {
table += entries;
- table -= 16;
+ table -= 32;
do {
- __m256i value, result;
+ __m256i value1, value2, result1, result2;
- value = __lasx_xvld(table, 0);
- result = __lasx_xvssub_hu(value, wsize);
- __lasx_xvst(result, table, 0);
+ value1 = __lasx_xvld(table, 0);
+ value2 = __lasx_xvld(table, 32);
+ result1 = __lasx_xvssub_hu(value1, wsize);
+ result2 = __lasx_xvssub_hu(value2, wsize);
+ __lasx_xvst(result1, table, 0);
+ __lasx_xvst(result2, table, 32);
- table -= 16;
- entries -= 16;
+ table -= 32;
+ entries -= 32;
} while (entries > 0);
}