Revert "finish new-style opts"
This reverts commit 4272d071d9a1aed5b76d7c05141a65a03d5cfb4e.
Reason for revert: Flutter roll?
Original change's description:
> finish new-style opts
>
> Nothing super interesting.
>
> SkOpts_crc32.cpp is worth looking at
> as the only non-x86 code.
>
> I marked a few places I think we can
> trim to save code size as follow ups.
>
> Change-Id: Ifdc8f4d1495ff56df5d2cdde39f7e9a6ac2b1277
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/294019
> Auto-Submit: Mike Klein <mtklein@google.com>
> Commit-Queue: Herb Derby <herb@google.com>
> Reviewed-by: Herb Derby <herb@google.com>
TBR=mtklein@google.com,herb@google.com
Change-Id: Idbb914788489bdc5941f7fed23bf26d35d90dca4
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/294280
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
diff --git a/gn/core.gni b/gn/core.gni
index cf65c77..e4d26bb 100644
--- a/gn/core.gni
+++ b/gn/core.gni
@@ -272,13 +272,15 @@
"$_src/core/SkOSFile.h",
"$_src/core/SkOpts.cpp",
"$_src/core/SkOpts.h",
- "$_src/core/SkOpts_avx.cpp",
- "$_src/core/SkOpts_crc32.cpp",
+
+ #"$_src/core/SkOpts_avx.cpp",
+ #"$_src/core/SkOpts_crc32.cpp",
"$_src/core/SkOpts_hsw.cpp",
"$_src/core/SkOpts_skx.cpp",
- "$_src/core/SkOpts_sse41.cpp",
- "$_src/core/SkOpts_sse42.cpp",
- "$_src/core/SkOpts_ssse3.cpp",
+
+ #"$_src/core/SkOpts_sse41.cpp",
+ #"$_src/core/SkOpts_sse42.cpp",
+ #"$_src/core/SkOpts_ssse3.cpp",
"$_src/core/SkOrderedReadBuffer.h",
"$_src/core/SkOverdrawCanvas.cpp",
"$_src/core/SkPaint.cpp",
diff --git a/src/core/SkOpts_avx.cpp b/src/core/SkOpts_avx.cpp
deleted file mode 100644
index 14283cb..0000000
--- a/src/core/SkOpts_avx.cpp
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2020 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "src/core/SkOpts.h"
-
-#if defined(SK_CPU_X86)
-
- // Turn on AVX feature set.
- #if defined(__clang__)
- #pragma clang attribute push(__attribute__((target("avx"))), apply_to=function)
- #elif defined(__GNUC__)
- #pragma GCC push_options
- #pragma GCC target("avx")
- #endif
-
- // Let our code in *_opts.h know we want AVX features.
- #undef SK_CPU_SSE_LEVEL
- #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_AVX
-
- #if defined(__clang__) && defined(_MSC_VER)
- // clang-cl's immintrin.h is bizarrely annoying, not including the
- // various foointrin.h unless the __FOO__ flag is also defined (i.e.
- // you used command-line flags to set the features instead of attributes).
- // MSVC itself doesn't work this way, nor does non-_MSC_VER clang. :/
- #define __SSE__ 1
- #define __SSE2__ 1
- #define __SSE3__ 1
- #define __SSSE3__ 1
- #define __SSE4_1__ 1
- #define __SSE4_2__ 1
- #define __AVX__ 1
- #endif
-
- #define SK_OPTS_NS avx
- #include "src/opts/SkRasterPipeline_opts.h"
- #include "src/opts/SkUtils_opts.h"
-
- namespace SkOpts {
- void Init_avx() {
- memset16 = SK_OPTS_NS::memset16;
- memset32 = SK_OPTS_NS::memset32;
- memset64 = SK_OPTS_NS::memset64;
-
- rect_memset16 = SK_OPTS_NS::rect_memset16;
- rect_memset32 = SK_OPTS_NS::rect_memset32;
- rect_memset64 = SK_OPTS_NS::rect_memset64;
-
- // TODO: maybe cut these stages to save code size? Almost everything is HSW these days.
- #define M(st) stages_highp[SkRasterPipeline::st] = (StageFn)SK_OPTS_NS::st;
- SK_RASTER_PIPELINE_STAGES(M)
- just_return_highp = (StageFn)SK_OPTS_NS::just_return;
- start_pipeline_highp = SK_OPTS_NS::start_pipeline;
- #undef M
-
- #define M(st) stages_lowp[SkRasterPipeline::st] = (StageFn)SK_OPTS_NS::lowp::st;
- SK_RASTER_PIPELINE_STAGES(M)
- just_return_lowp = (StageFn)SK_OPTS_NS::lowp::just_return;
- start_pipeline_lowp = SK_OPTS_NS::lowp::start_pipeline;
- #undef M
- }
- }
-
- #if defined(__clang__)
- #pragma clang attribute pop
- #elif defined(__GNUC__)
- #pragma GCC pop_options
- #endif
-
-#endif//defined(SK_CPU_X86)
diff --git a/src/core/SkOpts_crc32.cpp b/src/core/SkOpts_crc32.cpp
deleted file mode 100644
index e8b0d5a..0000000
--- a/src/core/SkOpts_crc32.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2020 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "src/core/SkOpts.h"
-
-#if defined(SK_CPU_ARM64)
-
- // Turn on CRC32 feature set.
- #if defined(__clang__)
- #pragma clang attribute push(__attribute__((target("crc"))), apply_to=function)
- #elif defined(__GNUC__)
- #pragma GCC push_options
- #pragma GCC target("crc")
- #endif
-
- // Let our code in *_opts.h know we want CRC32 features.
- #define SK_ARM_HAS_CRC32
-
- // Let the arm_acle.h headers know we will be using the CRC32 intrinsics.
- #define __ARM_FEATURE_CRC32 1
-
- #define SK_OPTS_NS crc32
- #include "src/opts/SkChecksum_opts.h"
-
- namespace SkOpts {
- void Init_crc32() {
- hash_fn = SK_OPTS_NS::hash_fn;
- }
- }
-
- #if defined(__clang__)
- #pragma clang attribute pop
- #elif defined(__GNUC__)
- #pragma GCC pop_options
- #endif
-
-#endif//defined(SK_CPU_ARM64)
diff --git a/src/core/SkOpts_sse41.cpp b/src/core/SkOpts_sse41.cpp
deleted file mode 100644
index a6ff3ae..0000000
--- a/src/core/SkOpts_sse41.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright 2020 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "src/core/SkOpts.h"
-
-#if defined(SK_CPU_X86)
-
- // Turn on SSE4.1 feature set.
- #if defined(__clang__)
- #pragma clang attribute push(__attribute__((target("sse4.1"))), apply_to=function)
- #elif defined(__GNUC__)
- #pragma GCC push_options
- #pragma GCC target("sse4.1")
- #endif
-
- // Let our code in *_opts.h know we want SSE 4.1 features.
- #undef SK_CPU_SSE_LEVEL
- #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE41
-
- #if defined(__clang__) && defined(_MSC_VER)
- // clang-cl's immintrin.h is bizarrely annoying, not including the
- // various foointrin.h unless the __FOO__ flag is also defined (i.e.
- // you used command-line flags to set the features instead of attributes).
- // MSVC itself doesn't work this way, nor does non-_MSC_VER clang. :/
- #define __SSE__ 1
- #define __SSE2__ 1
- #define __SSE3__ 1
- #define __SSSE3__ 1
- #define __SSE4_1__ 1
- #endif
-
- #define SK_OPTS_NS sse41
- #include "src/opts/SkBlitRow_opts.h"
- #include "src/opts/SkRasterPipeline_opts.h"
-
- // TODO: maybe cut this whole file to save code size? Almost everything is HSW these days.
- namespace SkOpts {
- void Init_sse41() {
- blit_row_color32 = SK_OPTS_NS::blit_row_color32;
- blit_row_s32a_opaque = SK_OPTS_NS::blit_row_s32a_opaque;
-
- #define M(st) stages_highp[SkRasterPipeline::st] = (StageFn)SK_OPTS_NS::st;
- SK_RASTER_PIPELINE_STAGES(M)
- just_return_highp = (StageFn)SK_OPTS_NS::just_return;
- start_pipeline_highp = SK_OPTS_NS::start_pipeline;
- #undef M
-
- #define M(st) stages_lowp[SkRasterPipeline::st] = (StageFn)SK_OPTS_NS::lowp::st;
- SK_RASTER_PIPELINE_STAGES(M)
- just_return_lowp = (StageFn)SK_OPTS_NS::lowp::just_return;
- start_pipeline_lowp = SK_OPTS_NS::lowp::start_pipeline;
- #undef M
- }
- }
-
- #if defined(__clang__)
- #pragma clang attribute pop
- #elif defined(__GNUC__)
- #pragma GCC pop_options
- #endif
-
-#endif//defined(SK_CPU_X86)
-
diff --git a/src/core/SkOpts_sse42.cpp b/src/core/SkOpts_sse42.cpp
deleted file mode 100644
index 46f0851..0000000
--- a/src/core/SkOpts_sse42.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2020 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "src/core/SkOpts.h"
-
-#if defined(SK_CPU_X86)
-
- // Turn on SSE4.2 feature set.
- #if defined(__clang__)
- #pragma clang attribute push(__attribute__((target("sse4.2"))), apply_to=function)
- #elif defined(__GNUC__)
- #pragma GCC push_options
- #pragma GCC target("sse4.2")
- #endif
-
- // Let our code in *_opts.h know we want SSE 4.2 features.
- #undef SK_CPU_SSE_LEVEL
- #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE42
-
- #if defined(__clang__) && defined(_MSC_VER)
- // clang-cl's immintrin.h is bizarrely annoying, not including the
- // various foointrin.h unless the __FOO__ flag is also defined (i.e.
- // you used command-line flags to set the features instead of attributes).
- // MSVC itself doesn't work this way, nor does non-_MSC_VER clang. :/
- #define __SSE__ 1
- #define __SSE2__ 1
- #define __SSE3__ 1
- #define __SSSE3__ 1
- #define __SSE4_1__ 1
- #define __SSE4_2__ 1
- #endif
-
- #define SK_OPTS_NS sse42
- #include "src/opts/SkChecksum_opts.h"
-
- namespace SkOpts {
- void Init_sse42() {
- hash_fn = SK_OPTS_NS::hash_fn;
- }
- }
-
- #if defined(__clang__)
- #pragma clang attribute pop
- #elif defined(__GNUC__)
- #pragma GCC pop_options
- #endif
-
-#endif//defined(SK_CPU_X86)
diff --git a/src/core/SkOpts_ssse3.cpp b/src/core/SkOpts_ssse3.cpp
deleted file mode 100644
index 7009546..0000000
--- a/src/core/SkOpts_ssse3.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright 2020 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "src/core/SkOpts.h"
-
-#if defined(SK_CPU_X86)
-
- // Turn on SSSE3 feature set.
- #if defined(__clang__)
- #pragma clang attribute push(__attribute__((target("ssse3"))), apply_to=function)
- #elif defined(__GNUC__)
- #pragma GCC push_options
- #pragma GCC target("ssse3")
- #endif
-
- // Let our code in *_opts.h know we want SSSE3 features.
- #undef SK_CPU_SSE_LEVEL
- #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSSE3
-
- #if defined(__clang__) && defined(_MSC_VER)
- // clang-cl's immintrin.h is bizarrely annoying, not including the
- // various foointrin.h unless the __FOO__ flag is also defined (i.e.
- // you used command-line flags to set the features instead of attributes).
- // MSVC itself doesn't work this way, nor does non-_MSC_VER clang. :/
- #define __SSE__ 1
- #define __SSE2__ 1
- #define __SSE3__ 1
- #define __SSSE3__ 1
- #endif
-
- #define SK_OPTS_NS ssse3
- #include "src/opts/SkBitmapProcState_opts.h"
- #include "src/opts/SkBlitMask_opts.h"
- #include "src/opts/SkSwizzler_opts.h"
- #include "src/opts/SkXfermode_opts.h"
-
- namespace SkOpts {
- void Init_ssse3() {
- RGBA_to_BGRA = SK_OPTS_NS::RGBA_to_BGRA;
- RGBA_to_rgbA = SK_OPTS_NS::RGBA_to_rgbA;
- RGBA_to_bgrA = SK_OPTS_NS::RGBA_to_bgrA;
- RGB_to_RGB1 = SK_OPTS_NS::RGB_to_RGB1;
- RGB_to_BGR1 = SK_OPTS_NS::RGB_to_BGR1;
- gray_to_RGB1 = SK_OPTS_NS::gray_to_RGB1;
- grayA_to_RGBA = SK_OPTS_NS::grayA_to_RGBA;
- grayA_to_rgbA = SK_OPTS_NS::grayA_to_rgbA;
- inverted_CMYK_to_RGB1 = SK_OPTS_NS::inverted_CMYK_to_RGB1;
- inverted_CMYK_to_BGR1 = SK_OPTS_NS::inverted_CMYK_to_BGR1;
-
- // TODO: maybe cut these three to save code size? Almost everything is HSW these days.
- create_xfermode = SK_OPTS_NS::create_xfermode;
- blit_mask_d32_a8 = SK_OPTS_NS::blit_mask_d32_a8;
- S32_alpha_D32_filter_DX = SK_OPTS_NS::S32_alpha_D32_filter_DX;
- }
- }
-
- #if defined(__clang__)
- #pragma clang attribute pop
- #elif defined(__GNUC__)
- #pragma GCC pop_options
- #endif
-
-#endif//defined(SK_CPU_X86)
diff --git a/src/opts/SkOpts_avx.cpp b/src/opts/SkOpts_avx.cpp
index 049c90e..80ccf54 100644
--- a/src/opts/SkOpts_avx.cpp
+++ b/src/opts/SkOpts_avx.cpp
@@ -5,4 +5,32 @@
* found in the LICENSE file.
*/
-// Intentionally empty, to be cleaned up.
+#include "src/core/SkOpts.h"
+
+#define SK_OPTS_NS avx
+#include "src/opts/SkRasterPipeline_opts.h"
+#include "src/opts/SkUtils_opts.h"
+
+namespace SkOpts {
+ void Init_avx() {
+ memset16 = SK_OPTS_NS::memset16;
+ memset32 = SK_OPTS_NS::memset32;
+ memset64 = SK_OPTS_NS::memset64;
+
+ rect_memset16 = SK_OPTS_NS::rect_memset16;
+ rect_memset32 = SK_OPTS_NS::rect_memset32;
+ rect_memset64 = SK_OPTS_NS::rect_memset64;
+
+ #define M(st) stages_highp[SkRasterPipeline::st] = (StageFn)SK_OPTS_NS::st;
+ SK_RASTER_PIPELINE_STAGES(M)
+ just_return_highp = (StageFn)SK_OPTS_NS::just_return;
+ start_pipeline_highp = SK_OPTS_NS::start_pipeline;
+ #undef M
+
+ #define M(st) stages_lowp[SkRasterPipeline::st] = (StageFn)SK_OPTS_NS::lowp::st;
+ SK_RASTER_PIPELINE_STAGES(M)
+ just_return_lowp = (StageFn)SK_OPTS_NS::lowp::just_return;
+ start_pipeline_lowp = SK_OPTS_NS::lowp::start_pipeline;
+ #undef M
+ }
+}
diff --git a/src/opts/SkOpts_crc32.cpp b/src/opts/SkOpts_crc32.cpp
index 049c90e..205f0eb 100644
--- a/src/opts/SkOpts_crc32.cpp
+++ b/src/opts/SkOpts_crc32.cpp
@@ -5,4 +5,13 @@
* found in the LICENSE file.
*/
-// Intentionally empty, to be cleaned up.
+#include "src/core/SkOpts.h"
+
+#define SK_OPTS_NS crc32
+#include "src/opts/SkChecksum_opts.h"
+
+namespace SkOpts {
+ void Init_crc32() {
+ hash_fn = crc32::hash_fn;
+ }
+}
diff --git a/src/opts/SkOpts_sse41.cpp b/src/opts/SkOpts_sse41.cpp
index abd4796..8e52596 100644
--- a/src/opts/SkOpts_sse41.cpp
+++ b/src/opts/SkOpts_sse41.cpp
@@ -5,4 +5,27 @@
* found in the LICENSE file.
*/
-// Intentionally empty, to be cleaned up.
+#include "src/core/SkOpts.h"
+
+#define SK_OPTS_NS sse41
+#include "src/opts/SkBlitRow_opts.h"
+#include "src/opts/SkRasterPipeline_opts.h"
+
+namespace SkOpts {
+ void Init_sse41() {
+ blit_row_color32 = sse41::blit_row_color32;
+ blit_row_s32a_opaque = sse41::blit_row_s32a_opaque;
+
+ #define M(st) stages_highp[SkRasterPipeline::st] = (StageFn)SK_OPTS_NS::st;
+ SK_RASTER_PIPELINE_STAGES(M)
+ just_return_highp = (StageFn)SK_OPTS_NS::just_return;
+ start_pipeline_highp = SK_OPTS_NS::start_pipeline;
+ #undef M
+
+ #define M(st) stages_lowp[SkRasterPipeline::st] = (StageFn)SK_OPTS_NS::lowp::st;
+ SK_RASTER_PIPELINE_STAGES(M)
+ just_return_lowp = (StageFn)SK_OPTS_NS::lowp::just_return;
+ start_pipeline_lowp = SK_OPTS_NS::lowp::start_pipeline;
+ #undef M
+ }
+}
diff --git a/src/opts/SkOpts_sse42.cpp b/src/opts/SkOpts_sse42.cpp
index 049c90e..8e80fff 100644
--- a/src/opts/SkOpts_sse42.cpp
+++ b/src/opts/SkOpts_sse42.cpp
@@ -5,4 +5,14 @@
* found in the LICENSE file.
*/
-// Intentionally empty, to be cleaned up.
+#include "src/core/SkOpts.h"
+
+#define SK_OPTS_NS sse42
+#include "src/opts/SkChecksum_opts.h"
+
+namespace SkOpts {
+ void Init_sse42() {
+ hash_fn = sse42::hash_fn;
+ }
+}
+
diff --git a/src/opts/SkOpts_ssse3.cpp b/src/opts/SkOpts_ssse3.cpp
index abd4796..daa6987 100644
--- a/src/opts/SkOpts_ssse3.cpp
+++ b/src/opts/SkOpts_ssse3.cpp
@@ -5,4 +5,29 @@
* found in the LICENSE file.
*/
-// Intentionally empty, to be cleaned up.
+#include "src/core/SkOpts.h"
+#define SK_OPTS_NS ssse3
+#include "src/opts/SkBitmapProcState_opts.h"
+#include "src/opts/SkBlitMask_opts.h"
+#include "src/opts/SkSwizzler_opts.h"
+#include "src/opts/SkXfermode_opts.h"
+
+namespace SkOpts {
+ void Init_ssse3() {
+ create_xfermode = ssse3::create_xfermode;
+ blit_mask_d32_a8 = ssse3::blit_mask_d32_a8;
+
+ RGBA_to_BGRA = ssse3::RGBA_to_BGRA;
+ RGBA_to_rgbA = ssse3::RGBA_to_rgbA;
+ RGBA_to_bgrA = ssse3::RGBA_to_bgrA;
+ RGB_to_RGB1 = ssse3::RGB_to_RGB1;
+ RGB_to_BGR1 = ssse3::RGB_to_BGR1;
+ gray_to_RGB1 = ssse3::gray_to_RGB1;
+ grayA_to_RGBA = ssse3::grayA_to_RGBA;
+ grayA_to_rgbA = ssse3::grayA_to_rgbA;
+ inverted_CMYK_to_RGB1 = ssse3::inverted_CMYK_to_RGB1;
+ inverted_CMYK_to_BGR1 = ssse3::inverted_CMYK_to_BGR1;
+
+ S32_alpha_D32_filter_DX = ssse3::S32_alpha_D32_filter_DX;
+ }
+}