gcc/libstdc++-v3/include/experimental
Matthias Kretz fbd088a069 libstdc++: Fix find_last_set(simd_mask) to ignore padding bits
With the change to the AVX512 find_last_set implementation, the change
to AVX512 operator!= is unnecessary. However, the latter was not
producing optimal code and unnecessarily set the padding bits. In
theory, the compiler could determine that with the new !=
implementation, the bit operation for clearing the padding bits is a
no-op and can be elided.

Signed-off-by: Matthias Kretz <m.kretz@gsi.de>

libstdc++-v3/ChangeLog:

	PR libstdc++/115454
	* include/experimental/bits/simd_x86.h (_S_not_equal_to): Use
	neq comparison instead of bitwise negation after eq.
	(_S_find_last_set): Clear unused high bits before computing
	bit_width.
	* testsuite/experimental/simd/pr115454_find_last_set.cc: New
	test.

(cherry picked from commit 1340ddea01)
2024-06-21 18:22:28 +02:00
..
bits libstdc++: Fix find_last_set(simd_mask) to ignore padding bits 2024-06-21 18:22:28 +02:00
algorithm Update copyright years. 2023-01-16 11:52:17 +01:00
any Update copyright years. 2023-01-16 11:52:17 +01:00
array Update copyright years. 2023-01-16 11:52:17 +01:00
buffer Update copyright years. 2023-01-16 11:52:17 +01:00
chrono Update copyright years. 2023-01-16 11:52:17 +01:00
contract Update copyright years. 2023-01-16 11:52:17 +01:00
deque Update copyright years. 2023-01-16 11:52:17 +01:00
executor libstdc++: Constrain net::executor constructors 2023-02-24 14:23:36 +00:00
filesystem Update copyright years. 2023-01-16 11:52:17 +01:00
forward_list Update copyright years. 2023-01-16 11:52:17 +01:00
functional Update copyright years. 2023-01-16 11:52:17 +01:00
internet libstdc++: Implement some missing functions for net::ip::network_v6 2024-02-08 12:17:44 +00:00
io_context Update copyright years. 2023-01-16 11:52:17 +01:00
iterator Update copyright years. 2023-01-16 11:52:17 +01:00
list Update copyright years. 2023-01-16 11:52:17 +01:00
map Update copyright years. 2023-01-16 11:52:17 +01:00
memory Update copyright years. 2023-01-16 11:52:17 +01:00
memory_resource libstdc++: Minor fixes to doxygen comments 2023-04-28 13:33:29 +01:00
net Update copyright years. 2023-01-16 11:52:17 +01:00
netfwd Update copyright years. 2023-01-16 11:52:17 +01:00
numeric Update copyright years. 2023-01-16 11:52:17 +01:00
optional libstdc++: Fix name of <experimental/optional> in comment 2023-02-16 14:38:38 +00:00
propagate_const Update copyright years. 2023-01-16 11:52:17 +01:00
random Update copyright years. 2023-01-16 11:52:17 +01:00
ratio Update copyright years. 2023-01-16 11:52:17 +01:00
regex Update copyright years. 2023-01-16 11:52:17 +01:00
scope libstdc++: Fix noexcept on dtors in <experimental/scope> [PR114152] 2024-03-01 09:24:59 +00:00
set Update copyright years. 2023-01-16 11:52:17 +01:00
simd Update copyright years. 2023-01-16 11:52:17 +01:00
socket Update copyright years. 2023-01-16 11:52:17 +01:00
source_location Update copyright years. 2023-01-16 11:52:17 +01:00
string Update copyright years. 2023-01-16 11:52:17 +01:00
string_view Update copyright years. 2023-01-16 11:52:17 +01:00
synchronized_value libstdc++: Implement <experimental/synchronized_value> (P0290) 2023-02-16 14:38:38 +00:00
system_error Update copyright years. 2023-01-16 11:52:17 +01:00
timer Update copyright years. 2023-01-16 11:52:17 +01:00
tuple Update copyright years. 2023-01-16 11:52:17 +01:00
type_traits Update copyright years. 2023-01-16 11:52:17 +01:00
unordered_map Update copyright years. 2023-01-16 11:52:17 +01:00
unordered_set Update copyright years. 2023-01-16 11:52:17 +01:00
utility Update copyright years. 2023-01-16 11:52:17 +01:00
vector Update copyright years. 2023-01-16 11:52:17 +01:00