ypicchi-arm 9e9a10ad01
Fix double shufti's vector end false positive (#325)
* Add regression test for double shufti

It tests for false positive at vector edges.

Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>

* Fix double shufti reporting false positives

Double shufti used to offset one vector, resulting in losing one character
at the end of every vector. This was replaced by a magic value indicating a
match. This meant that if the first char of a pattern fell on the last char of
a vector, double shufti would assume the second character is present and
report a match.
This patch fixes it by keeping the previous vector and feeding its data to the
new one when we shift it, preventing any loss of data.

Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>

* vshl() will call the correct implementation

* implement missing vshr_512_imm(), simplifies caller x86 code

* Fix x86 case, use alignr instead

* it's the reverse, the avx512 alignr is incorrect, need to fix

* Make shufti's OR reduce size agnostic

Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>

* Fix test's array size

Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>

* Fix AVX2/AVX512 alignr implementations and unit tests

* Fix Power VSX alignr

---------

Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>
Co-authored-by: Konstantinos Margaritis <konstantinos@vectorcamp.gr>
2025-06-11 18:55:10 +03:00
..
2015-10-20 09:13:35 +11:00
2024-05-20 14:54:35 +03:00
2016-12-02 11:32:28 +11:00
2016-08-10 15:10:25 +10:00
2024-05-20 17:09:30 +03:00
2024-05-15 17:04:11 +03:00
2024-05-22 10:16:56 +03:00
2025-05-30 12:27:28 +03:00
2016-10-28 14:44:12 +11:00
2016-10-28 14:44:12 +11:00
2021-01-25 14:13:13 +02:00
2024-05-20 14:54:35 +03:00
2016-10-28 14:46:19 +11:00
2015-10-20 09:13:35 +11:00
2016-10-28 14:46:19 +11:00
2024-05-30 16:40:18 +03:00
2024-05-20 14:54:35 +03:00
2024-05-20 17:09:30 +03:00
2024-05-02 14:30:18 +03:00
2016-12-02 11:32:28 +11:00
2017-04-26 15:19:36 +10:00
2024-05-02 14:30:18 +03:00
2016-08-10 15:10:46 +10:00
2021-01-25 14:13:13 +02:00
2016-08-10 15:01:08 +10:00
2024-05-10 10:07:47 +03:00
2015-10-20 09:13:35 +11:00
2024-04-29 13:13:07 +03:00
2024-04-25 13:00:54 +00:00
2024-05-15 17:04:11 +03:00
2024-04-25 13:00:54 +00:00
2024-05-20 14:54:35 +03:00
2024-07-29 11:49:25 +03:00