summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladislav Shchapov <vladislav@shchapov.ru>2026-02-02 00:11:18 +0500
committerHans Kristian Rosbach <hk-github@circlestorm.org>2026-03-11 00:56:15 +0100
commitf9606139958fae7d5946fadc66bbbfdc21237c52 (patch)
tree66875e684f6f3696a45d03bf506664193ccb52be
parent39d2b25a18a7aea760d40d7eefa3f3aa28aa95ba (diff)
downloadProject-Tick-f9606139958fae7d5946fadc66bbbfdc21237c52.tar.gz
Project-Tick-f9606139958fae7d5946fadc66bbbfdc21237c52.zip
Slide 32 hash entries per loop iteration when using LASX
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
-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);
}