4621ef2a8a
Removes specializations for all() on AVX2 and SSE 4.1, which give the wrong results if the ints didn't have all bits set (inconsistent with other platforms and non-SIMD). Added a unit test that checks this case. The mirror specializations for any() on AVX2 and SSE 4.1 are actually valid, so added those, and added a 2 instruction specialization for SSE for any() and all(). This is what clang-trunk produces on -O3, but ToT clang struggles to vectorize it. Also adds specializations for NEON for any() and all(), since even clang-trunk was struggling to vectorize it automatically. In particular, this will help skgpu::graphite::Rect's implementations of intersect and contains, which use any/all to get a final boolean value. In the Instruments app, I had see Rect's intersection as a hotspot on the Mac M1, and this vectorization helps a bit. Also takes the opportunity to remove fake C++14 constexpr for a real constexpr. Change-Id: Ib142e305ae5615056a777424e379b6da82d44f0c Reviewed-on: https://skia-review.googlesource.com/c/skia/+/542296 Commit-Queue: Michael Ludwig <michaelludwig@google.com> Reviewed-by: Herb Derby <herb@google.com> |
||
---|---|---|
.. | ||
android | ||
c | ||
codec | ||
config | ||
core | ||
docs | ||
effects | ||
encode | ||
gpu | ||
pathops | ||
ports | ||
private | ||
sksl | ||
svg | ||
third_party | ||
utils | ||
OWNERS |