diff options
| author | Vladislav Shchapov <vladislav@shchapov.ru> | 2026-02-02 00:11:18 +0500 |
|---|---|---|
| committer | Hans Kristian Rosbach <hk-github@circlestorm.org> | 2026-03-11 00:56:15 +0100 |
| commit | f9606139958fae7d5946fadc66bbbfdc21237c52 (patch) | |
| tree | 66875e684f6f3696a45d03bf506664193ccb52be | |
| parent | 39d2b25a18a7aea760d40d7eefa3f3aa28aa95ba (diff) | |
| download | Project-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.c | 17 |
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); } |
