diff options
author | 2015-08-18 05:18:52 -0700 | |
---|---|---|
committer | 2015-08-18 05:18:53 -0700 | |
commit | 948376379362e54c5357005778ba5f53f3dc9d5e (patch) | |
tree | c26651fb47b53dcb70f25a12d7ab2ba0f70ee5fa /src | |
parent | 95dd17737d0fa0401782f7fa72e5d69bb5686f67 (diff) |
Remove SkOpts_sse2.cpp.
It's sort of pointless: all our clients that will have SSE2 at runtime have it
unconditionally at compile time, so the functions in namespace portable will
pick up the SSE2 code. The procs in SkOpts_sse2.o were just duplicate code.
A couple of the procs we had in _sse2.cpp can benefit slightly when compiled
with SSSE3. I've moved those to _ssse3.cpp. This should lead to small speedups
on platforms like Linux and Windows that have a baseline of SSE2.
Similarly, I've removed the call to Init_neon() when NEON is available globally... it's a no-op.
Renaming namespace portable to something clearer is TBD.
BUG=skia:4117
Review URL: https://codereview.chromium.org/1294213002
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkOpts.cpp | 6 | ||||
-rw-r--r-- | src/opts/SkOpts_sse2.cpp | 34 | ||||
-rw-r--r-- | src/opts/SkOpts_ssse3.cpp | 6 | ||||
-rw-r--r-- | src/opts/SkPMFloat_sse.h | 2 |
4 files changed, 7 insertions, 41 deletions
diff --git a/src/core/SkOpts.cpp b/src/core/SkOpts.cpp index 2bfc1af899..890d9c7532 100644 --- a/src/core/SkOpts.cpp +++ b/src/core/SkOpts.cpp @@ -54,7 +54,6 @@ namespace SkOpts { decltype(blit_mask_d32_a8) blit_mask_d32_a8 = portable::blit_mask_d32_a8; // Each Init_foo() is defined in src/opts/SkOpts_foo.cpp. - void Init_sse2(); void Init_ssse3(); void Init_sse41(); void Init_neon(); @@ -65,12 +64,9 @@ namespace SkOpts { #if defined(SK_CPU_X86) && !defined(SK_BUILD_FOR_IOS) uint32_t abcd[] = {0,0,0,0}; cpuid(abcd); - if (abcd[3] & (1<<26)) { Init_sse2(); } if (abcd[2] & (1<< 9)) { Init_ssse3(); } if (abcd[2] & (1<<19)) { Init_sse41(); } - #elif defined(SK_ARM_HAS_NEON) - Init_neon(); - #elif defined(SK_CPU_ARM32) && defined(SK_BUILD_FOR_ANDROID) + #elif !defined(SK_ARM_HAS_NEON) && defined(SK_CPU_ARM32) && defined(SK_BUILD_FOR_ANDROID) if (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) { Init_neon(); } #endif } diff --git a/src/opts/SkOpts_sse2.cpp b/src/opts/SkOpts_sse2.cpp deleted file mode 100644 index 3440676935..0000000000 --- a/src/opts/SkOpts_sse2.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2015 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "SkOpts.h" - -#define SK_OPTS_NS sse2 -#include "SkBlitMask_opts.h" -#include "SkBlurImageFilter_opts.h" -#include "SkMorphologyImageFilter_opts.h" -#include "SkUtils_opts.h" -#include "SkXfermode_opts.h" - -namespace SkOpts { - void Init_sse2() { - memset16 = sse2::memset16; - memset32 = sse2::memset32; - create_xfermode = SkCreate4pxXfermode; - - box_blur_xx = sse2::box_blur_xx; - box_blur_xy = sse2::box_blur_xy; - box_blur_yx = sse2::box_blur_yx; - - dilate_x = sse2::dilate_x; - dilate_y = sse2::dilate_y; - erode_x = sse2::erode_x; - erode_y = sse2::erode_y; - - blit_mask_d32_a8 = sse2::blit_mask_d32_a8; - } -} diff --git a/src/opts/SkOpts_ssse3.cpp b/src/opts/SkOpts_ssse3.cpp index de3296654f..7e056a0787 100644 --- a/src/opts/SkOpts_ssse3.cpp +++ b/src/opts/SkOpts_ssse3.cpp @@ -6,9 +6,13 @@ */ #include "SkOpts.h" +#define SK_OPTS_NS ssse3 +#include "SkBlitMask_opts.h" +#include "SkXfermode_opts.h" namespace SkOpts { void Init_ssse3() { - + create_xfermode = SkCreate4pxXfermode; + blit_mask_d32_a8 = ssse3::blit_mask_d32_a8; } } diff --git a/src/opts/SkPMFloat_sse.h b/src/opts/SkPMFloat_sse.h index 28aa90bf29..85503886a6 100644 --- a/src/opts/SkPMFloat_sse.h +++ b/src/opts/SkPMFloat_sse.h @@ -10,7 +10,7 @@ namespace { // See SkPMFloat.h inline SkPMFloat::SkPMFloat(SkPMColor c) { SkPMColorAssert(c); #if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSSE3 - const int _ = 255; // Zero these bytes. + const char _ = ~0; // Zero these bytes. __m128i fix8 = _mm_cvtsi32_si128((int)c), fix8_32 = _mm_shuffle_epi8(fix8, _mm_setr_epi8(0,_,_,_, 1,_,_,_, 2,_,_,_, 3,_,_,_)); #else |