Remove AVX+ special case for load<U8>().

We haven't really needed this since we got constants working.

Change-Id: Ie9de8df861959696ed44fc2a64e259cca786bfe5
Reviewed-on: https://skia-review.googlesource.com/19670
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
This commit is contained in:
Mike Klein 2017-06-13 13:56:09 -04:00 committed by Skia Commit-Bot
parent c0f8e426c5
commit f046594d82
3 changed files with 2823 additions and 2209 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -129,25 +129,6 @@ SI void store(T* dst, V v, size_t tail) {
unaligned_store(dst, v);
}
// This doesn't look strictly necessary, but without it Clang would generate load() using
// compiler-generated constants that we can't support. This version doesn't need constants.
#if defined(JUMPER) && defined(__AVX__)
template <>
inline U8 load(const uint8_t* src, size_t tail) {
if (__builtin_expect(tail, 0)) {
uint64_t v = 0;
size_t shift = 0;
#pragma nounroll
while (tail --> 0) {
v |= (uint64_t)*src++ << shift;
shift += 8;
}
return unaligned_load<U8>(&v);
}
return unaligned_load<U8>(src);
}
#endif
// AVX adds some mask loads and stores that make for shorter, faster code.
#if defined(JUMPER) && defined(__AVX__)
SI U32 mask(size_t tail) {