diff options
-rw-r--r-- | gyp/opts.gypi | 1 | ||||
-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 |
5 files changed, 7 insertions, 42 deletions
diff --git a/gyp/opts.gypi b/gyp/opts.gypi index 5db9556f59..eec677f484 100644 --- a/gyp/opts.gypi +++ b/gyp/opts.gypi @@ -43,7 +43,6 @@ '<(skia_src_path)/opts/SkBitmapProcState_opts_SSE2.cpp', '<(skia_src_path)/opts/SkBlitRow_opts_SSE2.cpp', '<(skia_src_path)/opts/opts_check_x86.cpp', - '<(skia_src_path)/opts/SkOpts_sse2.cpp', ], 'ssse3_sources': [ '<(skia_src_path)/opts/SkBitmapProcState_opts_SSSE3.cpp', 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 |